mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
1540d39c62
This patch extends the pattern-matching capability of vector-splatted constants. When illegally-typed constants are legalized they are canonically sign-extended to XLenVT. This preserves the sign and allows us to match simm5. If they were zero-extended for whatever reason we'd lose that ability: e.g. `(i8 -1) -> (XLenVT 255)` would not be matched under the current logic. To address this we first manually sign-extend the splatted constant from the vector element type to int64_t. This preserves the semantics while removing any implicitly-truncated bits. The corresponding logic for uimm5 was not updated, the rationale being that neither sign- nor zero-extending a legal uimm5 immediate should change that (unless we expect actual "garbage" upper bits). Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D93837 |
||
---|---|---|
.. | ||
AsmParser | ||
Disassembler | ||
MCTargetDesc | ||
TargetInfo | ||
Utils | ||
CMakeLists.txt | ||
RISCV.h | ||
RISCV.td | ||
RISCVAsmPrinter.cpp | ||
RISCVCallingConv.td | ||
RISCVCallLowering.cpp | ||
RISCVCallLowering.h | ||
RISCVCleanupVSETVLI.cpp | ||
RISCVExpandAtomicPseudoInsts.cpp | ||
RISCVExpandPseudoInsts.cpp | ||
RISCVFrameLowering.cpp | ||
RISCVFrameLowering.h | ||
RISCVInstrFormats.td | ||
RISCVInstrFormatsC.td | ||
RISCVInstrFormatsV.td | ||
RISCVInstrInfo.cpp | ||
RISCVInstrInfo.h | ||
RISCVInstrInfo.td | ||
RISCVInstrInfoA.td | ||
RISCVInstrInfoB.td | ||
RISCVInstrInfoC.td | ||
RISCVInstrInfoD.td | ||
RISCVInstrInfoF.td | ||
RISCVInstrInfoM.td | ||
RISCVInstrInfoV.td | ||
RISCVInstrInfoVPseudos.td | ||
RISCVInstrInfoVSDPatterns.td | ||
RISCVInstrInfoZfh.td | ||
RISCVInstructionSelector.cpp | ||
RISCVISelDAGToDAG.cpp | ||
RISCVISelDAGToDAG.h | ||
RISCVISelLowering.cpp | ||
RISCVISelLowering.h | ||
RISCVLegalizerInfo.cpp | ||
RISCVLegalizerInfo.h | ||
RISCVMachineFunctionInfo.h | ||
RISCVMCInstLower.cpp | ||
RISCVMergeBaseOffset.cpp | ||
RISCVRegisterBankInfo.cpp | ||
RISCVRegisterBankInfo.h | ||
RISCVRegisterBanks.td | ||
RISCVRegisterInfo.cpp | ||
RISCVRegisterInfo.h | ||
RISCVRegisterInfo.td | ||
RISCVSchedRocket.td | ||
RISCVSchedSiFive7.td | ||
RISCVSchedule.td | ||
RISCVSubtarget.cpp | ||
RISCVSubtarget.h | ||
RISCVSystemOperands.td | ||
RISCVTargetMachine.cpp | ||
RISCVTargetMachine.h | ||
RISCVTargetObjectFile.cpp | ||
RISCVTargetObjectFile.h | ||
RISCVTargetTransformInfo.cpp | ||
RISCVTargetTransformInfo.h |