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