mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
b1a1176161
Introduce a new RISCVExpandPseudoInsts pass to expand atomic pseudo-instructions after register allocation. This is necessary in order to ensure that register spills aren't introduced between LL and SC, thus breaking the forward progress guarantee for the operation. AArch64 does something similar for CmpXchg (though only at O0), and Mips is moving towards this approach (see D31287). See also [this mailing list post](http://lists.llvm.org/pipermail/llvm-dev/2016-May/099490.html) from James Knight, which summarises the issues with lowering to ll/sc in IR or pre-RA. See the [accompanying RFC thread](http://lists.llvm.org/pipermail/llvm-dev/2018-June/123993.html) for an overview of the lowering strategy. Differential Revision: https://reviews.llvm.org/D47882 llvm-svn: 342534
36 lines
1.1 KiB
CMake
36 lines
1.1 KiB
CMake
set(LLVM_TARGET_DEFINITIONS RISCV.td)
|
|
|
|
tablegen(LLVM RISCVGenAsmMatcher.inc -gen-asm-matcher)
|
|
tablegen(LLVM RISCVGenAsmWriter.inc -gen-asm-writer)
|
|
tablegen(LLVM RISCVGenCompressInstEmitter.inc -gen-compress-inst-emitter)
|
|
tablegen(LLVM RISCVGenDAGISel.inc -gen-dag-isel)
|
|
tablegen(LLVM RISCVGenDisassemblerTables.inc -gen-disassembler)
|
|
tablegen(LLVM RISCVGenInstrInfo.inc -gen-instr-info)
|
|
tablegen(LLVM RISCVGenMCCodeEmitter.inc -gen-emitter)
|
|
tablegen(LLVM RISCVGenMCPseudoLowering.inc -gen-pseudo-lowering)
|
|
tablegen(LLVM RISCVGenRegisterInfo.inc -gen-register-info)
|
|
tablegen(LLVM RISCVGenSubtargetInfo.inc -gen-subtarget)
|
|
|
|
add_public_tablegen_target(RISCVCommonTableGen)
|
|
|
|
add_llvm_target(RISCVCodeGen
|
|
RISCVAsmPrinter.cpp
|
|
RISCVExpandPseudoInsts.cpp
|
|
RISCVFrameLowering.cpp
|
|
RISCVInstrInfo.cpp
|
|
RISCVISelDAGToDAG.cpp
|
|
RISCVISelLowering.cpp
|
|
RISCVMCInstLower.cpp
|
|
RISCVMergeBaseOffset.cpp
|
|
RISCVRegisterInfo.cpp
|
|
RISCVSubtarget.cpp
|
|
RISCVTargetMachine.cpp
|
|
RISCVTargetObjectFile.cpp
|
|
)
|
|
|
|
add_subdirectory(AsmParser)
|
|
add_subdirectory(Disassembler)
|
|
add_subdirectory(InstPrinter)
|
|
add_subdirectory(MCTargetDesc)
|
|
add_subdirectory(TargetInfo)
|