1import("//llvm/utils/TableGen/tablegen.gni") 2 3tablegen("AArch64GenCallingConv") { 4 visibility = [ ":LLVMAArch64CodeGen" ] 5 args = [ "-gen-callingconv" ] 6 td_file = "AArch64.td" 7} 8 9tablegen("AArch64GenDAGISel") { 10 visibility = [ ":LLVMAArch64CodeGen" ] 11 args = [ "-gen-dag-isel" ] 12 td_file = "AArch64.td" 13} 14 15tablegen("AArch64GenFastISel") { 16 visibility = [ ":LLVMAArch64CodeGen" ] 17 args = [ "-gen-fast-isel" ] 18 td_file = "AArch64.td" 19} 20 21tablegen("AArch64GenGlobalISel") { 22 visibility = [ ":LLVMAArch64CodeGen" ] 23 args = [ "-gen-global-isel" ] 24 td_file = "AArch64.td" 25} 26 27tablegen("AArch64GenMCPseudoLowering") { 28 visibility = [ ":LLVMAArch64CodeGen" ] 29 args = [ "-gen-pseudo-lowering" ] 30 td_file = "AArch64.td" 31} 32 33tablegen("AArch64GenPostLegalizeGICombiner") { 34 visibility = [ ":LLVMAArch64CodeGen" ] 35 args = [ 36 "-gen-global-isel-combiner", 37 "-combiners=AArch64PostLegalizerCombinerHelper", 38 ] 39 td_file = "AArch64.td" 40} 41 42tablegen("AArch64GenPreLegalizeGICombiner") { 43 visibility = [ ":LLVMAArch64CodeGen" ] 44 args = [ 45 "-gen-global-isel-combiner", 46 "-combiners=AArch64PreLegalizerCombinerHelper", 47 ] 48 td_file = "AArch64.td" 49} 50 51tablegen("AArch64GenPostLegalizeGILowering") { 52 visibility = [ ":LLVMAArch64CodeGen" ] 53 args = [ 54 "-gen-global-isel-combiner", 55 "-combiners=AArch64PostLegalizerLoweringHelper", 56 ] 57 td_file = "AArch64.td" 58} 59 60tablegen("AArch64GenRegisterBank") { 61 visibility = [ ":LLVMAArch64CodeGen" ] 62 args = [ "-gen-register-bank" ] 63 td_file = "AArch64.td" 64} 65 66static_library("LLVMAArch64CodeGen") { 67 deps = [ 68 ":AArch64GenCallingConv", 69 ":AArch64GenDAGISel", 70 ":AArch64GenFastISel", 71 ":AArch64GenGlobalISel", 72 ":AArch64GenMCPseudoLowering", 73 ":AArch64GenPostLegalizeGICombiner", 74 ":AArch64GenPostLegalizeGILowering", 75 ":AArch64GenPreLegalizeGICombiner", 76 ":AArch64GenRegisterBank", 77 78 # See https://reviews.llvm.org/D69130 79 "AsmParser:AArch64GenAsmMatcher", 80 "MCTargetDesc", 81 "TargetInfo", 82 "Utils", 83 "//llvm/lib/Analysis", 84 "//llvm/lib/CodeGen", 85 "//llvm/lib/CodeGen/AsmPrinter", 86 "//llvm/lib/CodeGen/GlobalISel", 87 "//llvm/lib/CodeGen/SelectionDAG", 88 "//llvm/lib/IR", 89 "//llvm/lib/MC", 90 "//llvm/lib/Support", 91 "//llvm/lib/Target", 92 "//llvm/lib/Transforms/CFGuard", 93 "//llvm/lib/Transforms/Scalar", 94 "//llvm/lib/Transforms/Utils", 95 ] 96 include_dirs = [ "." ] 97 sources = [ 98 "AArch64A53Fix835769.cpp", 99 "AArch64A57FPLoadBalancing.cpp", 100 "AArch64AdvSIMDScalarPass.cpp", 101 "AArch64AsmPrinter.cpp", 102 "AArch64BranchTargets.cpp", 103 "AArch64CallingConvention.cpp", 104 "AArch64CleanupLocalDynamicTLSPass.cpp", 105 "AArch64CollectLOH.cpp", 106 "AArch64CompressJumpTables.cpp", 107 "AArch64CondBrTuning.cpp", 108 "AArch64ConditionOptimizer.cpp", 109 "AArch64ConditionalCompares.cpp", 110 "AArch64DeadRegisterDefinitionsPass.cpp", 111 "AArch64ExpandImm.cpp", 112 "AArch64ExpandPseudoInsts.cpp", 113 "AArch64FalkorHWPFFix.cpp", 114 "AArch64FastISel.cpp", 115 "AArch64FrameLowering.cpp", 116 "AArch64ISelDAGToDAG.cpp", 117 "AArch64ISelLowering.cpp", 118 "AArch64InstrInfo.cpp", 119 "AArch64LoadStoreOptimizer.cpp", 120 "AArch64MCInstLower.cpp", 121 "AArch64MachineFunctionInfo.cpp", 122 "AArch64MacroFusion.cpp", 123 "AArch64PBQPRegAlloc.cpp", 124 "AArch64PromoteConstant.cpp", 125 "AArch64RedundantCopyElimination.cpp", 126 "AArch64RegisterInfo.cpp", 127 "AArch64SIMDInstrOpt.cpp", 128 "AArch64SLSHardening.cpp", 129 "AArch64SelectionDAGInfo.cpp", 130 "AArch64SpeculationHardening.cpp", 131 "AArch64StackTagging.cpp", 132 "AArch64StackTaggingPreRA.cpp", 133 "AArch64StorePairSuppress.cpp", 134 "AArch64Subtarget.cpp", 135 "AArch64TargetMachine.cpp", 136 "AArch64TargetObjectFile.cpp", 137 "AArch64TargetTransformInfo.cpp", 138 "GISel/AArch64CallLowering.cpp", 139 "GISel/AArch64InstructionSelector.cpp", 140 "GISel/AArch64LegalizerInfo.cpp", 141 "GISel/AArch64PostLegalizerCombiner.cpp", 142 "GISel/AArch64PostLegalizerLowering.cpp", 143 "GISel/AArch64PostSelectOptimize.cpp", 144 "GISel/AArch64PreLegalizerCombiner.cpp", 145 "GISel/AArch64RegisterBankInfo.cpp", 146 "SVEIntrinsicOpts.cpp", 147 ] 148} 149 150# This is a bit different from most build files: Due to this group 151# having the directory's name, "//llvm/lib/Target/AArch64" will refer to this 152# target, which pulls in the code in this directory *and all subdirectories*. 153# For most other directories, "//llvm/lib/Foo" only pulls in the code directly 154# in "llvm/lib/Foo". The forwarding targets in //llvm/lib/Target expect this 155# different behavior. 156group("AArch64") { 157 deps = [ 158 ":LLVMAArch64CodeGen", 159 "AsmParser", 160 "Disassembler", 161 "MCTargetDesc", 162 "TargetInfo", 163 "Utils", 164 ] 165} 166