llvm-project/llvm/lib/Target/RISCV
Hsiangkai Wang 137d3474ca [RISCV] Reverse the order of loading/storing callee-saved registers.
Currently, we restore the return address register as the last restoring
instruction in the epilog. The next instruction is `ret` usually. It is
a use of return address register. In some microarchitectures, there is
load-to-use data hazard. To avoid the load-to-use data hazard, we could
separate the load instruction from its use as far as possible. In this
patch, we reverse the order of restoring callee-saved registers to
increase the distance of `load ra` and `ret` in the epilog.

Differential Revision: https://reviews.llvm.org/D113967
2021-11-22 23:02:11 +08:00
..
AsmParser [RISCV] Rename some assembler mnemonic and intrinsic functions for RVV 1.0. 2021-11-04 10:08:01 -07:00
Disassembler Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
MCTargetDesc [RISCV] Optimize immediate materialisation with SH*ADD 2021-11-15 23:34:28 +00:00
TargetInfo Fix shlib builds for all lib/Target/*/TargetInfo libs 2021-10-08 15:21:13 -07:00
CMakeLists.txt [RISCV] Add a pass to recognize VLS strided loads/store from gather/scatter. 2021-09-20 09:39:44 -07:00
RISCV.h [RISCV] Add a pass to recognize VLS strided loads/store from gather/scatter. 2021-09-20 09:39:44 -07:00
RISCV.td [RISCV] Support Zfhmin extension 2021-11-06 01:41:02 +08:00
RISCVAsmPrinter.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
RISCVCallLowering.cpp
RISCVCallLowering.h
RISCVCallingConv.td
RISCVExpandAtomicPseudoInsts.cpp
RISCVExpandPseudoInsts.cpp Revert "[RISCV] Add an GPR def to the Zvlseg SPILL/RELOAD pseudos" 2021-10-02 10:44:11 -07:00
RISCVFrameLowering.cpp [RISCV] Reverse the order of loading/storing callee-saved registers. 2021-11-22 23:02:11 +08:00
RISCVFrameLowering.h [RISCV] Enable shrink wrap by default 2021-09-02 09:47:58 -05:00
RISCVGatherScatterLowering.cpp [RISCV] Replace most uses of RISCVSubtarget::hasStdExtV. NFCI 2021-10-27 19:33:48 -07:00
RISCVISelDAGToDAG.cpp [RISCV] Rename some assembler mnemonic and intrinsic functions for RVV 1.0. 2021-11-04 10:08:01 -07:00
RISCVISelDAGToDAG.h [RISCV] (1/2) Add the tail policy argument to builtins/intrinsics. 2021-09-24 17:09:50 +08:00
RISCVISelLowering.cpp [RISCV] Don't call setHasMultipleConditionRegisters(), so icmp is sunk 2021-11-19 08:32:59 -08:00
RISCVISelLowering.h [RISCV] Don't call setHasMultipleConditionRegisters(), so icmp is sunk 2021-11-19 08:32:59 -08:00
RISCVInsertVSETVLI.cpp [RISCV] Teach needVSETVLIPHI to handle mask register instructions. 2021-11-15 09:57:28 -08:00
RISCVInstrFormats.td [RISCV] Use vmv.v.[v|i] if we know COPY is under the same vl and vtype. 2021-10-28 11:39:04 +08:00
RISCVInstrFormatsC.td
RISCVInstrFormatsV.td
RISCVInstrInfo.cpp [CodeGen] Update LiveIntervals in TargetInstrInfo::convertToThreeAddress 2021-11-17 10:16:47 +00:00
RISCVInstrInfo.h [CodeGen] Update LiveIntervals in TargetInstrInfo::convertToThreeAddress 2021-11-17 10:16:47 +00:00
RISCVInstrInfo.td [RISCV] Generate pseudo instruction li 2021-11-22 14:01:37 +08:00
RISCVInstrInfoA.td [RISCV][NFC] Add explicit type i64 to RV64 only patterns. 2021-04-09 09:37:04 +08:00
RISCVInstrInfoC.td [llvm-tblgen][RISCV] Make llvm-tblgen RISCVCompressInstEmitter to be common infra across different targets 2021-11-18 11:14:27 +08:00
RISCVInstrInfoD.td [RISCV] Support FP_TO_S/UINT_SAT for i32 and i64. 2021-08-07 16:06:00 -07:00
RISCVInstrInfoF.td [RISCV] Support FP_TO_S/UINT_SAT for i32 and i64. 2021-08-07 16:06:00 -07:00
RISCVInstrInfoM.td [RISCV] Improve codegen for i32 udiv/urem by constant on RV64. 2021-11-12 14:49:10 -08:00
RISCVInstrInfoV.td [RISCV] Refactor some rvv instructions' definition with foreach. 2021-11-16 15:20:45 +08:00
RISCVInstrInfoVPseudos.td [RISCV] Rename some assembler mnemonic and intrinsic functions for RVV 1.0. 2021-11-04 10:08:01 -07:00
RISCVInstrInfoVSDPatterns.td [RISCV] Rename some assembler mnemonic and intrinsic functions for RVV 1.0. 2021-11-04 10:08:01 -07:00
RISCVInstrInfoVVLPatterns.td [RISCV] Rename some assembler mnemonic and intrinsic functions for RVV 1.0. 2021-11-04 10:08:01 -07:00
RISCVInstrInfoZb.td [RISCV] Update Zba, Zbb, Zbc, and Zbs version from 0.93 to 1.0. 2021-10-14 09:25:03 -07:00
RISCVInstrInfoZfh.td [RISCV] Support Zfhmin extension 2021-11-06 01:41:02 +08:00
RISCVInstructionSelector.cpp
RISCVLegalizerInfo.cpp [globalisel][legalizer] Separate the deprecated LegalizerInfo from the current one 2021-06-01 13:23:48 -07:00
RISCVLegalizerInfo.h
RISCVMCInstLower.cpp [RISCV] Remove the _COMMUTABLE and _TA versions of FMA and wide FMA vector instructions. 2021-08-04 10:39:50 -07:00
RISCVMachineFunctionInfo.h [RISCV] Don't emit save-restore call if function is a interrupt handler 2021-04-16 12:54:47 +08:00
RISCVMergeBaseOffset.cpp [RISCV] Remove unused member variable. NFC 2021-10-14 12:56:47 -07:00
RISCVRegisterBankInfo.cpp
RISCVRegisterBankInfo.h
RISCVRegisterBanks.td
RISCVRegisterInfo.cpp [RISCV] Reserve an emergency spill slot for any RVV spills 2021-06-03 10:44:34 +01:00
RISCVRegisterInfo.h
RISCVRegisterInfo.td [RISCV] Sync Zvlsseg register order as the same as vector registers. 2021-10-28 13:34:53 +08:00
RISCVSchedRocket.td [RISCV] Add scheduling resources for V 2021-08-03 15:47:51 -05:00
RISCVSchedSiFive7.td [RISCV] Fix typo in RISCVSchedSiFive7.td 2021-09-01 16:39:48 -05:00
RISCVSchedule.td [RISCV] Add scheduling resources for V 2021-08-03 15:47:51 -05:00
RISCVScheduleB.td [RISCV] Move scheduling resources for B into a separate file (NFC) 2021-03-29 20:37:22 -05:00
RISCVScheduleV.td [RISCV] Add scheduling resources for V 2021-08-03 15:47:51 -05:00
RISCVSubtarget.cpp [RISCV] Replace most uses of RISCVSubtarget::hasStdExtV. NFCI 2021-10-27 19:33:48 -07:00
RISCVSubtarget.h [RISCV] Support Zfhmin extension 2021-11-06 01:41:02 +08:00
RISCVSystemOperands.td [RISCV] Add vcsr CSR name for V extension. 2021-10-25 08:56:25 -07:00
RISCVTargetMachine.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
RISCVTargetMachine.h
RISCVTargetObjectFile.cpp
RISCVTargetObjectFile.h
RISCVTargetTransformInfo.cpp [RISCV] Replace most uses of RISCVSubtarget::hasStdExtV. NFCI 2021-10-27 19:33:48 -07:00
RISCVTargetTransformInfo.h [RISCV] Replace most uses of RISCVSubtarget::hasStdExtV. NFCI 2021-10-27 19:33:48 -07:00