This is an archive of the discontinued LLVM Phabricator instance.

[RISCV] Remove pseudos for whole register load, store, and move.
ClosedPublic

Authored by craig.topper on Dec 6 2022, 11:37 PM.

Details

Summary

The MC layer instructions have the correct register classes, and
the pseudos don't have any additional operands.

The pseudos we incorrectly going through code in RISCVMCInstLower
that converted LMUL>1 register classes to LMUL1 register class.
This makes the MCInst technically malformed, and prevented the
vl2r.v, vl4r.v, and vl8r.v InstAliases from matching. This accounts
for all of the .ll test diffs.

Diff Detail

Event Timeline

craig.topper created this revision.Dec 6 2022, 11:37 PM
craig.topper requested review of this revision.Dec 6 2022, 11:37 PM
Herald added a project: Restricted Project. · View Herald TranscriptDec 6 2022, 11:37 PM

LGTM, that's not only for fix a potential issue, but slightly simplify the code (remove few pseudos).

The pseudos we incorrectly going through code in RISCVMCInstLower
that converted LMUL>1 register classes to LMUL1 register class.

For other reviewer, here is the location we did this:

https://github.com/llvm/llvm-project/blob/main/llvm/lib/Target/RISCV/RISCVMCInstLower.cpp#L188

This revision was not accepted when it landed; it landed in state Needs Review.Dec 7 2022, 10:20 AM
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.