xref: /aosp_15_r20/external/llvm/lib/Target/AArch64/AArch64.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker//=- AArch64.td - Describe the AArch64 Target Machine --------*- tablegen -*-=//
2*9880d681SAndroid Build Coastguard Worker//
3*9880d681SAndroid Build Coastguard Worker//                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker//
5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker//
8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker//
10*9880d681SAndroid Build Coastguard Worker//
11*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
14*9880d681SAndroid Build Coastguard Worker// Target-independent interfaces which we are implementing.
15*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerinclude "llvm/Target/Target.td"
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
20*9880d681SAndroid Build Coastguard Worker// AArch64 Subtarget features.
21*9880d681SAndroid Build Coastguard Worker//
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerdef FeatureFPARMv8 : SubtargetFeature<"fp-armv8", "HasFPARMv8", "true",
24*9880d681SAndroid Build Coastguard Worker                                       "Enable ARMv8 FP">;
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerdef FeatureNEON : SubtargetFeature<"neon", "HasNEON", "true",
27*9880d681SAndroid Build Coastguard Worker  "Enable Advanced SIMD instructions", [FeatureFPARMv8]>;
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerdef FeatureCrypto : SubtargetFeature<"crypto", "HasCrypto", "true",
30*9880d681SAndroid Build Coastguard Worker  "Enable cryptographic instructions">;
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerdef FeatureCRC : SubtargetFeature<"crc", "HasCRC", "true",
33*9880d681SAndroid Build Coastguard Worker  "Enable ARMv8 CRC-32 checksum instructions">;
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdef FeatureRAS : SubtargetFeature<"ras", "HasRAS", "true",
36*9880d681SAndroid Build Coastguard Worker  "Enable ARMv8 Reliability, Availability and Serviceability Extensions">;
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdef FeaturePerfMon : SubtargetFeature<"perfmon", "HasPerfMon", "true",
39*9880d681SAndroid Build Coastguard Worker  "Enable ARMv8 PMUv3 Performance Monitors extension">;
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerdef FeatureFullFP16 : SubtargetFeature<"fullfp16", "HasFullFP16", "true",
42*9880d681SAndroid Build Coastguard Worker  "Full FP16", [FeatureFPARMv8]>;
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerdef FeatureSPE : SubtargetFeature<"spe", "HasSPE", "true",
45*9880d681SAndroid Build Coastguard Worker  "Enable Statistical Profiling extension">;
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker/// Cyclone has register move instructions which are "free".
48*9880d681SAndroid Build Coastguard Workerdef FeatureZCRegMove : SubtargetFeature<"zcm", "HasZeroCycleRegMove", "true",
49*9880d681SAndroid Build Coastguard Worker                                        "Has zero-cycle register moves">;
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker/// Cyclone has instructions which zero registers for "free".
52*9880d681SAndroid Build Coastguard Workerdef FeatureZCZeroing : SubtargetFeature<"zcz", "HasZeroCycleZeroing", "true",
53*9880d681SAndroid Build Coastguard Worker                                        "Has zero-cycle zeroing instructions">;
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdef FeatureStrictAlign : SubtargetFeature<"strict-align",
56*9880d681SAndroid Build Coastguard Worker                                          "StrictAlign", "true",
57*9880d681SAndroid Build Coastguard Worker                                          "Disallow all unaligned memory "
58*9880d681SAndroid Build Coastguard Worker                                          "access">;
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerdef FeatureReserveX18 : SubtargetFeature<"reserve-x18", "ReserveX18", "true",
61*9880d681SAndroid Build Coastguard Worker                                         "Reserve X18, making it unavailable "
62*9880d681SAndroid Build Coastguard Worker                                         "as a GPR">;
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerdef FeatureMergeNarrowLd : SubtargetFeature<"merge-narrow-ld",
65*9880d681SAndroid Build Coastguard Worker                                            "MergeNarrowLoads", "true",
66*9880d681SAndroid Build Coastguard Worker                                            "Merge narrow load instructions">;
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdef FeatureUseAA : SubtargetFeature<"use-aa", "UseAA", "true",
69*9880d681SAndroid Build Coastguard Worker                                    "Use alias analysis during codegen">;
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Workerdef FeatureBalanceFPOps : SubtargetFeature<"balance-fp-ops", "BalanceFPOps",
72*9880d681SAndroid Build Coastguard Worker    "true",
73*9880d681SAndroid Build Coastguard Worker    "balance mix of odd and even D-registers for fp multiply(-accumulate) ops">;
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Workerdef FeaturePredictableSelectIsExpensive : SubtargetFeature<
76*9880d681SAndroid Build Coastguard Worker    "predictable-select-expensive", "PredictableSelectIsExpensive", "true",
77*9880d681SAndroid Build Coastguard Worker    "Prefer likely predicted branches over selects">;
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerdef FeatureCustomCheapAsMoveHandling : SubtargetFeature<"custom-cheap-as-move",
80*9880d681SAndroid Build Coastguard Worker    "CustomAsCheapAsMove", "true",
81*9880d681SAndroid Build Coastguard Worker    "Use custom code for TargetInstrInfo::isAsCheapAsAMove()">;
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Workerdef FeaturePostRAScheduler : SubtargetFeature<"use-postra-scheduler",
84*9880d681SAndroid Build Coastguard Worker    "UsePostRAScheduler", "true", "Schedule again after register allocation">;
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerdef FeatureSlowMisaligned128Store : SubtargetFeature<"slow-misaligned-128store",
87*9880d681SAndroid Build Coastguard Worker    "Misaligned128StoreIsSlow", "true", "Misaligned 128 bit stores are slow">;
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Workerdef FeatureAvoidQuadLdStPairs : SubtargetFeature<"no-quad-ldst-pairs",
90*9880d681SAndroid Build Coastguard Worker    "AvoidQuadLdStPairs", "true",
91*9880d681SAndroid Build Coastguard Worker    "Do not form quad load/store pair operations">;
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerdef FeatureAlternateSExtLoadCVTF32Pattern : SubtargetFeature<
94*9880d681SAndroid Build Coastguard Worker    "alternate-sextload-cvt-f32-pattern", "UseAlternateSExtLoadCVTF32Pattern",
95*9880d681SAndroid Build Coastguard Worker    "true", "Use alternative pattern for sextload convert to f32">;
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdef FeatureMacroOpFusion : SubtargetFeature<
98*9880d681SAndroid Build Coastguard Worker    "macroop-fusion", "HasMacroOpFusion", "true",
99*9880d681SAndroid Build Coastguard Worker    "CPU supports macro op fusion">;
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Workerdef FeatureDisableLatencySchedHeuristic : SubtargetFeature<
102*9880d681SAndroid Build Coastguard Worker    "disable-latency-sched-heuristic", "DisableLatencySchedHeuristic", "true",
103*9880d681SAndroid Build Coastguard Worker    "Disable latency scheduling heuristic">;
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdef FeatureUseRSqrt : SubtargetFeature<
106*9880d681SAndroid Build Coastguard Worker    "use-reverse-square-root", "UseRSqrt", "true", "Use reverse square root">;
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
109*9880d681SAndroid Build Coastguard Worker// Architectures.
110*9880d681SAndroid Build Coastguard Worker//
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard Workerdef HasV8_1aOps : SubtargetFeature<"v8.1a", "HasV8_1aOps", "true",
113*9880d681SAndroid Build Coastguard Worker  "Support ARM v8.1a instructions", [FeatureCRC]>;
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Workerdef HasV8_2aOps : SubtargetFeature<"v8.2a", "HasV8_2aOps", "true",
116*9880d681SAndroid Build Coastguard Worker  "Support ARM v8.2a instructions", [HasV8_1aOps, FeatureRAS]>;
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
119*9880d681SAndroid Build Coastguard Worker// Register File Description
120*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerinclude "AArch64RegisterInfo.td"
123*9880d681SAndroid Build Coastguard Workerinclude "AArch64CallingConvention.td"
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
126*9880d681SAndroid Build Coastguard Worker// Instruction Descriptions
127*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Workerinclude "AArch64Schedule.td"
130*9880d681SAndroid Build Coastguard Workerinclude "AArch64InstrInfo.td"
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerdef AArch64InstrInfo : InstrInfo;
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
135*9880d681SAndroid Build Coastguard Worker// Named operands for MRS/MSR/TLBI/...
136*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Workerinclude "AArch64SystemOperands.td"
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
141*9880d681SAndroid Build Coastguard Worker// AArch64 Processors supported.
142*9880d681SAndroid Build Coastguard Worker//
143*9880d681SAndroid Build Coastguard Workerinclude "AArch64SchedA53.td"
144*9880d681SAndroid Build Coastguard Workerinclude "AArch64SchedA57.td"
145*9880d681SAndroid Build Coastguard Workerinclude "AArch64SchedCyclone.td"
146*9880d681SAndroid Build Coastguard Workerinclude "AArch64SchedM1.td"
147*9880d681SAndroid Build Coastguard Workerinclude "AArch64SchedKryo.td"
148*9880d681SAndroid Build Coastguard Workerinclude "AArch64SchedVulcan.td"
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerdef ProcA35     : SubtargetFeature<"a35", "ARMProcFamily", "CortexA35",
151*9880d681SAndroid Build Coastguard Worker                                   "Cortex-A35 ARM processors", [
152*9880d681SAndroid Build Coastguard Worker                                   FeatureCRC,
153*9880d681SAndroid Build Coastguard Worker                                   FeatureCrypto,
154*9880d681SAndroid Build Coastguard Worker                                   FeatureFPARMv8,
155*9880d681SAndroid Build Coastguard Worker                                   FeatureNEON,
156*9880d681SAndroid Build Coastguard Worker                                   FeaturePerfMon
157*9880d681SAndroid Build Coastguard Worker                                   ]>;
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Workerdef ProcA53     : SubtargetFeature<"a53", "ARMProcFamily", "CortexA53",
160*9880d681SAndroid Build Coastguard Worker                                   "Cortex-A53 ARM processors", [
161*9880d681SAndroid Build Coastguard Worker                                   FeatureBalanceFPOps,
162*9880d681SAndroid Build Coastguard Worker                                   FeatureCRC,
163*9880d681SAndroid Build Coastguard Worker                                   FeatureCrypto,
164*9880d681SAndroid Build Coastguard Worker                                   FeatureCustomCheapAsMoveHandling,
165*9880d681SAndroid Build Coastguard Worker                                   FeatureFPARMv8,
166*9880d681SAndroid Build Coastguard Worker                                   FeatureNEON,
167*9880d681SAndroid Build Coastguard Worker                                   FeaturePerfMon,
168*9880d681SAndroid Build Coastguard Worker                                   FeaturePostRAScheduler,
169*9880d681SAndroid Build Coastguard Worker                                   FeatureUseAA
170*9880d681SAndroid Build Coastguard Worker                                   ]>;
171*9880d681SAndroid Build Coastguard Worker
172*9880d681SAndroid Build Coastguard Workerdef ProcA57     : SubtargetFeature<"a57", "ARMProcFamily", "CortexA57",
173*9880d681SAndroid Build Coastguard Worker                                   "Cortex-A57 ARM processors", [
174*9880d681SAndroid Build Coastguard Worker                                   FeatureBalanceFPOps,
175*9880d681SAndroid Build Coastguard Worker                                   FeatureCRC,
176*9880d681SAndroid Build Coastguard Worker                                   FeatureCrypto,
177*9880d681SAndroid Build Coastguard Worker                                   FeatureCustomCheapAsMoveHandling,
178*9880d681SAndroid Build Coastguard Worker                                   FeatureFPARMv8,
179*9880d681SAndroid Build Coastguard Worker                                   FeatureMergeNarrowLd,
180*9880d681SAndroid Build Coastguard Worker                                   FeatureNEON,
181*9880d681SAndroid Build Coastguard Worker                                   FeaturePerfMon,
182*9880d681SAndroid Build Coastguard Worker                                   FeaturePostRAScheduler,
183*9880d681SAndroid Build Coastguard Worker                                   FeaturePredictableSelectIsExpensive
184*9880d681SAndroid Build Coastguard Worker                                   ]>;
185*9880d681SAndroid Build Coastguard Worker
186*9880d681SAndroid Build Coastguard Workerdef ProcA72     : SubtargetFeature<"a72", "ARMProcFamily", "CortexA72",
187*9880d681SAndroid Build Coastguard Worker                                   "Cortex-A72 ARM processors", [
188*9880d681SAndroid Build Coastguard Worker                                   FeatureCRC,
189*9880d681SAndroid Build Coastguard Worker                                   FeatureCrypto,
190*9880d681SAndroid Build Coastguard Worker                                   FeatureFPARMv8,
191*9880d681SAndroid Build Coastguard Worker                                   FeatureNEON,
192*9880d681SAndroid Build Coastguard Worker                                   FeaturePerfMon
193*9880d681SAndroid Build Coastguard Worker                                   ]>;
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Workerdef ProcA73     : SubtargetFeature<"a73", "ARMProcFamily", "CortexA73",
196*9880d681SAndroid Build Coastguard Worker                                   "Cortex-A73 ARM processors", [
197*9880d681SAndroid Build Coastguard Worker                                   FeatureCRC,
198*9880d681SAndroid Build Coastguard Worker                                   FeatureCrypto,
199*9880d681SAndroid Build Coastguard Worker                                   FeatureFPARMv8,
200*9880d681SAndroid Build Coastguard Worker                                   FeatureNEON,
201*9880d681SAndroid Build Coastguard Worker                                   FeaturePerfMon
202*9880d681SAndroid Build Coastguard Worker                                   ]>;
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Workerdef ProcCyclone : SubtargetFeature<"cyclone", "ARMProcFamily", "Cyclone",
205*9880d681SAndroid Build Coastguard Worker                                   "Cyclone", [
206*9880d681SAndroid Build Coastguard Worker                                   FeatureAlternateSExtLoadCVTF32Pattern,
207*9880d681SAndroid Build Coastguard Worker                                   FeatureCrypto,
208*9880d681SAndroid Build Coastguard Worker                                   FeatureDisableLatencySchedHeuristic,
209*9880d681SAndroid Build Coastguard Worker                                   FeatureFPARMv8,
210*9880d681SAndroid Build Coastguard Worker                                   FeatureMacroOpFusion,
211*9880d681SAndroid Build Coastguard Worker                                   FeatureNEON,
212*9880d681SAndroid Build Coastguard Worker                                   FeaturePerfMon,
213*9880d681SAndroid Build Coastguard Worker                                   FeatureSlowMisaligned128Store,
214*9880d681SAndroid Build Coastguard Worker                                   FeatureZCRegMove,
215*9880d681SAndroid Build Coastguard Worker                                   FeatureZCZeroing
216*9880d681SAndroid Build Coastguard Worker                                   ]>;
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Workerdef ProcExynosM1 : SubtargetFeature<"exynosm1", "ARMProcFamily", "ExynosM1",
219*9880d681SAndroid Build Coastguard Worker                                    "Samsung Exynos-M1 processors", [
220*9880d681SAndroid Build Coastguard Worker                                    FeatureAvoidQuadLdStPairs,
221*9880d681SAndroid Build Coastguard Worker                                    FeatureCRC,
222*9880d681SAndroid Build Coastguard Worker                                    FeatureCrypto,
223*9880d681SAndroid Build Coastguard Worker                                    FeatureCustomCheapAsMoveHandling,
224*9880d681SAndroid Build Coastguard Worker                                    FeatureFPARMv8,
225*9880d681SAndroid Build Coastguard Worker                                    FeatureNEON,
226*9880d681SAndroid Build Coastguard Worker                                    FeaturePerfMon,
227*9880d681SAndroid Build Coastguard Worker                                    FeaturePostRAScheduler,
228*9880d681SAndroid Build Coastguard Worker                                    FeatureUseRSqrt
229*9880d681SAndroid Build Coastguard Worker                                    ]>;
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Workerdef ProcKryo    : SubtargetFeature<"kryo", "ARMProcFamily", "Kryo",
232*9880d681SAndroid Build Coastguard Worker                                   "Qualcomm Kryo processors", [
233*9880d681SAndroid Build Coastguard Worker                                   FeatureCRC,
234*9880d681SAndroid Build Coastguard Worker                                   FeatureCrypto,
235*9880d681SAndroid Build Coastguard Worker                                   FeatureCustomCheapAsMoveHandling,
236*9880d681SAndroid Build Coastguard Worker                                   FeatureFPARMv8,
237*9880d681SAndroid Build Coastguard Worker                                   FeatureMergeNarrowLd,
238*9880d681SAndroid Build Coastguard Worker                                   FeatureNEON,
239*9880d681SAndroid Build Coastguard Worker                                   FeaturePerfMon,
240*9880d681SAndroid Build Coastguard Worker                                   FeaturePostRAScheduler,
241*9880d681SAndroid Build Coastguard Worker                                   FeaturePredictableSelectIsExpensive,
242*9880d681SAndroid Build Coastguard Worker                                   FeatureZCZeroing
243*9880d681SAndroid Build Coastguard Worker                                   ]>;
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdef ProcVulcan  : SubtargetFeature<"vulcan", "ARMProcFamily", "Vulcan",
246*9880d681SAndroid Build Coastguard Worker                                   "Broadcom Vulcan processors", [
247*9880d681SAndroid Build Coastguard Worker                                   FeatureCRC,
248*9880d681SAndroid Build Coastguard Worker                                   FeatureCrypto,
249*9880d681SAndroid Build Coastguard Worker                                   FeatureFPARMv8,
250*9880d681SAndroid Build Coastguard Worker                                   FeatureMacroOpFusion,
251*9880d681SAndroid Build Coastguard Worker                                   FeatureNEON,
252*9880d681SAndroid Build Coastguard Worker                                   FeaturePostRAScheduler,
253*9880d681SAndroid Build Coastguard Worker                                   HasV8_1aOps]>;
254*9880d681SAndroid Build Coastguard Worker
255*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"generic", NoSchedModel, [
256*9880d681SAndroid Build Coastguard Worker                     FeatureCRC,
257*9880d681SAndroid Build Coastguard Worker                     FeatureFPARMv8,
258*9880d681SAndroid Build Coastguard Worker                     FeatureNEON,
259*9880d681SAndroid Build Coastguard Worker                     FeaturePerfMon,
260*9880d681SAndroid Build Coastguard Worker                     FeaturePostRAScheduler
261*9880d681SAndroid Build Coastguard Worker                     ]>;
262*9880d681SAndroid Build Coastguard Worker
263*9880d681SAndroid Build Coastguard Worker// FIXME: Cortex-A35 is currently modelled as a Cortex-A53
264*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a35", CortexA53Model, [ProcA35]>;
265*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a53", CortexA53Model, [ProcA53]>;
266*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a57", CortexA57Model, [ProcA57]>;
267*9880d681SAndroid Build Coastguard Worker// FIXME: Cortex-A72 and Cortex-A73 are currently modelled as an Cortex-A57.
268*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a72", CortexA57Model, [ProcA72]>;
269*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a73", CortexA57Model, [ProcA73]>;
270*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cyclone", CycloneModel, [ProcCyclone]>;
271*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"exynos-m1", ExynosM1Model, [ProcExynosM1]>;
272*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"kryo", KryoModel, [ProcKryo]>;
273*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"vulcan", VulcanModel, [ProcVulcan]>;
274*9880d681SAndroid Build Coastguard Worker
275*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
276*9880d681SAndroid Build Coastguard Worker// Assembly parser
277*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Workerdef GenericAsmParserVariant : AsmParserVariant {
280*9880d681SAndroid Build Coastguard Worker  int Variant = 0;
281*9880d681SAndroid Build Coastguard Worker  string Name = "generic";
282*9880d681SAndroid Build Coastguard Worker  string BreakCharacters = ".";
283*9880d681SAndroid Build Coastguard Worker}
284*9880d681SAndroid Build Coastguard Worker
285*9880d681SAndroid Build Coastguard Workerdef AppleAsmParserVariant : AsmParserVariant {
286*9880d681SAndroid Build Coastguard Worker  int Variant = 1;
287*9880d681SAndroid Build Coastguard Worker  string Name = "apple-neon";
288*9880d681SAndroid Build Coastguard Worker  string BreakCharacters = ".";
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
292*9880d681SAndroid Build Coastguard Worker// Assembly printer
293*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
294*9880d681SAndroid Build Coastguard Worker// AArch64 Uses the MC printer for asm output, so make sure the TableGen
295*9880d681SAndroid Build Coastguard Worker// AsmWriter bits get associated with the correct class.
296*9880d681SAndroid Build Coastguard Workerdef GenericAsmWriter : AsmWriter {
297*9880d681SAndroid Build Coastguard Worker  string AsmWriterClassName  = "InstPrinter";
298*9880d681SAndroid Build Coastguard Worker  int PassSubtarget = 1;
299*9880d681SAndroid Build Coastguard Worker  int Variant = 0;
300*9880d681SAndroid Build Coastguard Worker  bit isMCAsmWriter = 1;
301*9880d681SAndroid Build Coastguard Worker}
302*9880d681SAndroid Build Coastguard Worker
303*9880d681SAndroid Build Coastguard Workerdef AppleAsmWriter : AsmWriter {
304*9880d681SAndroid Build Coastguard Worker  let AsmWriterClassName = "AppleInstPrinter";
305*9880d681SAndroid Build Coastguard Worker  int PassSubtarget = 1;
306*9880d681SAndroid Build Coastguard Worker  int Variant = 1;
307*9880d681SAndroid Build Coastguard Worker  int isMCAsmWriter = 1;
308*9880d681SAndroid Build Coastguard Worker}
309*9880d681SAndroid Build Coastguard Worker
310*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
311*9880d681SAndroid Build Coastguard Worker// Target Declaration
312*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Workerdef AArch64 : Target {
315*9880d681SAndroid Build Coastguard Worker  let InstructionSet = AArch64InstrInfo;
316*9880d681SAndroid Build Coastguard Worker  let AssemblyParserVariants = [GenericAsmParserVariant, AppleAsmParserVariant];
317*9880d681SAndroid Build Coastguard Worker  let AssemblyWriters = [GenericAsmWriter, AppleAsmWriter];
318*9880d681SAndroid Build Coastguard Worker}
319