• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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