mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
d0b3f4c3ac
Some BPF JIT backends would want to optimize memcpy in their own architecture specific way. However, at the moment, there is no way for JIT backends to see memcpy semantics in a reliable way. This is due to LLVM BPF backend is expanding memcpy into load/store sequences and could possibly schedule them apart from each other further. So, BPF JIT backends inside kernel can't reliably recognize memcpy semantics by peephole BPF sequence. This patch introduce new intrinsic expand infrastructure to memcpy. To get stable in-order load/store sequence from memcpy, we first lower memcpy into BPF::MEMCPY node which then expanded into in-order load/store sequences in expandPostRAPseudo pass which will happen after instruction scheduling. By this way, kernel JIT backends could reliably recognize memcpy through scanning BPF sequence. This new memcpy expand infrastructure is gated by a new option: -bpf-expand-memcpy-in-order Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Yonghong Song <yhs@fb.com> llvm-svn: 337977
34 lines
984 B
CMake
34 lines
984 B
CMake
set(LLVM_TARGET_DEFINITIONS BPF.td)
|
|
|
|
tablegen(LLVM BPFGenAsmMatcher.inc -gen-asm-matcher)
|
|
tablegen(LLVM BPFGenAsmWriter.inc -gen-asm-writer)
|
|
tablegen(LLVM BPFGenCallingConv.inc -gen-callingconv)
|
|
tablegen(LLVM BPFGenDAGISel.inc -gen-dag-isel)
|
|
tablegen(LLVM BPFGenDisassemblerTables.inc -gen-disassembler)
|
|
tablegen(LLVM BPFGenInstrInfo.inc -gen-instr-info)
|
|
tablegen(LLVM BPFGenMCCodeEmitter.inc -gen-emitter)
|
|
tablegen(LLVM BPFGenRegisterInfo.inc -gen-register-info)
|
|
tablegen(LLVM BPFGenSubtargetInfo.inc -gen-subtarget)
|
|
|
|
add_public_tablegen_target(BPFCommonTableGen)
|
|
|
|
add_llvm_target(BPFCodeGen
|
|
BPFAsmPrinter.cpp
|
|
BPFFrameLowering.cpp
|
|
BPFInstrInfo.cpp
|
|
BPFISelDAGToDAG.cpp
|
|
BPFISelLowering.cpp
|
|
BPFMCInstLower.cpp
|
|
BPFRegisterInfo.cpp
|
|
BPFSelectionDAGInfo.cpp
|
|
BPFSubtarget.cpp
|
|
BPFTargetMachine.cpp
|
|
BPFMIPeephole.cpp
|
|
)
|
|
|
|
add_subdirectory(AsmParser)
|
|
add_subdirectory(Disassembler)
|
|
add_subdirectory(InstPrinter)
|
|
add_subdirectory(MCTargetDesc)
|
|
add_subdirectory(TargetInfo)
|