mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 02:29:18 +00:00
Some early revisions of the Cortex-A53 have an erratum (835769) whereby it is possible for a 64-bit multiply-accumulate instruction in AArch64 state to generate an incorrect result. The details are quite complex and hard to determine statically, since branches in the code may exist in some circumstances, but all cases end with a memory (load, store, or prefetch) instruction followed immediately by the multiply-accumulate operation. The safest work-around for this issue is to make the compiler avoid emitting multiply-accumulate instructions immediately after memory instructions and the simplest way to do this is to insert a NOP. This patch implements such work-around in the backend, enabled via the option -aarch64-fix-cortex-a53-835769. The work-around code generation is not enabled by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219603 91177308-0d34-0410-b5e6-96231b3b80d8
56 lines
1.8 KiB
CMake
56 lines
1.8 KiB
CMake
set(LLVM_TARGET_DEFINITIONS AArch64.td)
|
|
|
|
tablegen(LLVM AArch64GenRegisterInfo.inc -gen-register-info)
|
|
tablegen(LLVM AArch64GenInstrInfo.inc -gen-instr-info)
|
|
tablegen(LLVM AArch64GenMCCodeEmitter.inc -gen-emitter)
|
|
tablegen(LLVM AArch64GenMCPseudoLowering.inc -gen-pseudo-lowering)
|
|
tablegen(LLVM AArch64GenAsmWriter.inc -gen-asm-writer)
|
|
tablegen(LLVM AArch64GenAsmWriter1.inc -gen-asm-writer -asmwriternum=1)
|
|
tablegen(LLVM AArch64GenAsmMatcher.inc -gen-asm-matcher)
|
|
tablegen(LLVM AArch64GenDAGISel.inc -gen-dag-isel)
|
|
tablegen(LLVM AArch64GenFastISel.inc -gen-fast-isel)
|
|
tablegen(LLVM AArch64GenCallingConv.inc -gen-callingconv)
|
|
tablegen(LLVM AArch64GenSubtargetInfo.inc -gen-subtarget)
|
|
tablegen(LLVM AArch64GenDisassemblerTables.inc -gen-disassembler)
|
|
add_public_tablegen_target(AArch64CommonTableGen)
|
|
|
|
add_llvm_target(AArch64CodeGen
|
|
AArch64A57FPLoadBalancing.cpp
|
|
AArch64AddressTypePromotion.cpp
|
|
AArch64AdvSIMDScalarPass.cpp
|
|
AArch64AsmPrinter.cpp
|
|
AArch64BranchRelaxation.cpp
|
|
AArch64CleanupLocalDynamicTLSPass.cpp
|
|
AArch64CollectLOH.cpp
|
|
AArch64ConditionalCompares.cpp
|
|
AArch64DeadRegisterDefinitionsPass.cpp
|
|
AArch64ExpandPseudoInsts.cpp
|
|
AArch64FastISel.cpp
|
|
AArch64A53Fix835769.cpp
|
|
AArch64FrameLowering.cpp
|
|
AArch64ConditionOptimizer.cpp
|
|
AArch64ISelDAGToDAG.cpp
|
|
AArch64ISelLowering.cpp
|
|
AArch64InstrInfo.cpp
|
|
AArch64LoadStoreOptimizer.cpp
|
|
AArch64MCInstLower.cpp
|
|
AArch64PromoteConstant.cpp
|
|
AArch64PBQPRegAlloc.cpp
|
|
AArch64RegisterInfo.cpp
|
|
AArch64SelectionDAGInfo.cpp
|
|
AArch64StorePairSuppress.cpp
|
|
AArch64Subtarget.cpp
|
|
AArch64TargetMachine.cpp
|
|
AArch64TargetObjectFile.cpp
|
|
AArch64TargetTransformInfo.cpp
|
|
)
|
|
|
|
add_dependencies(LLVMAArch64CodeGen intrinsics_gen)
|
|
|
|
add_subdirectory(TargetInfo)
|
|
add_subdirectory(AsmParser)
|
|
add_subdirectory(Disassembler)
|
|
add_subdirectory(InstPrinter)
|
|
add_subdirectory(MCTargetDesc)
|
|
add_subdirectory(Utils)
|