1*9880d681SAndroid Build Coastguard Worker//===-- ARM.td - Describe the ARM 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// ARM Helper classes. 21*9880d681SAndroid Build Coastguard Worker// 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerclass ProcNoItin<string Name, list<SubtargetFeature> Features> 24*9880d681SAndroid Build Coastguard Worker : Processor<Name, NoItineraries, Features>; 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerclass Architecture<string fname, string aname, list<SubtargetFeature> features > 27*9880d681SAndroid Build Coastguard Worker : SubtargetFeature<fname, "ARMArch", aname, 28*9880d681SAndroid Build Coastguard Worker !strconcat(aname, " architecture"), features>; 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 31*9880d681SAndroid Build Coastguard Worker// ARM Subtarget state. 32*9880d681SAndroid Build Coastguard Worker// 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdef ModeThumb : SubtargetFeature<"thumb-mode", "InThumbMode", "true", 35*9880d681SAndroid Build Coastguard Worker "Thumb mode">; 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdef ModeSoftFloat : SubtargetFeature<"soft-float", "UseSoftFloat", "true", 38*9880d681SAndroid Build Coastguard Worker "Use software floating point features.">; 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 41*9880d681SAndroid Build Coastguard Worker// ARM Subtarget features. 42*9880d681SAndroid Build Coastguard Worker// 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerdef FeatureVFP2 : SubtargetFeature<"vfp2", "HasVFPv2", "true", 45*9880d681SAndroid Build Coastguard Worker "Enable VFP2 instructions">; 46*9880d681SAndroid Build Coastguard Workerdef FeatureVFP3 : SubtargetFeature<"vfp3", "HasVFPv3", "true", 47*9880d681SAndroid Build Coastguard Worker "Enable VFP3 instructions", 48*9880d681SAndroid Build Coastguard Worker [FeatureVFP2]>; 49*9880d681SAndroid Build Coastguard Workerdef FeatureNEON : SubtargetFeature<"neon", "HasNEON", "true", 50*9880d681SAndroid Build Coastguard Worker "Enable NEON instructions", 51*9880d681SAndroid Build Coastguard Worker [FeatureVFP3]>; 52*9880d681SAndroid Build Coastguard Workerdef FeatureThumb2 : SubtargetFeature<"thumb2", "HasThumb2", "true", 53*9880d681SAndroid Build Coastguard Worker "Enable Thumb2 instructions">; 54*9880d681SAndroid Build Coastguard Workerdef FeatureNoARM : SubtargetFeature<"noarm", "NoARM", "true", 55*9880d681SAndroid Build Coastguard Worker "Does not support ARM mode execution", 56*9880d681SAndroid Build Coastguard Worker [ModeThumb]>; 57*9880d681SAndroid Build Coastguard Workerdef FeatureFP16 : SubtargetFeature<"fp16", "HasFP16", "true", 58*9880d681SAndroid Build Coastguard Worker "Enable half-precision floating point">; 59*9880d681SAndroid Build Coastguard Workerdef FeatureVFP4 : SubtargetFeature<"vfp4", "HasVFPv4", "true", 60*9880d681SAndroid Build Coastguard Worker "Enable VFP4 instructions", 61*9880d681SAndroid Build Coastguard Worker [FeatureVFP3, FeatureFP16]>; 62*9880d681SAndroid Build Coastguard Workerdef FeatureFPARMv8 : SubtargetFeature<"fp-armv8", "HasFPARMv8", 63*9880d681SAndroid Build Coastguard Worker "true", "Enable ARMv8 FP", 64*9880d681SAndroid Build Coastguard Worker [FeatureVFP4]>; 65*9880d681SAndroid Build Coastguard Workerdef FeatureFullFP16 : SubtargetFeature<"fullfp16", "HasFullFP16", "true", 66*9880d681SAndroid Build Coastguard Worker "Enable full half-precision floating point", 67*9880d681SAndroid Build Coastguard Worker [FeatureFPARMv8]>; 68*9880d681SAndroid Build Coastguard Workerdef FeatureD16 : SubtargetFeature<"d16", "HasD16", "true", 69*9880d681SAndroid Build Coastguard Worker "Restrict FP to 16 double registers">; 70*9880d681SAndroid Build Coastguard Workerdef FeatureHWDiv : SubtargetFeature<"hwdiv", "HasHardwareDivide", "true", 71*9880d681SAndroid Build Coastguard Worker "Enable divide instructions">; 72*9880d681SAndroid Build Coastguard Workerdef FeatureHWDivARM : SubtargetFeature<"hwdiv-arm", 73*9880d681SAndroid Build Coastguard Worker "HasHardwareDivideInARM", "true", 74*9880d681SAndroid Build Coastguard Worker "Enable divide instructions in ARM mode">; 75*9880d681SAndroid Build Coastguard Workerdef FeatureT2XtPk : SubtargetFeature<"t2xtpk", "HasT2ExtractPack", "true", 76*9880d681SAndroid Build Coastguard Worker "Enable Thumb2 extract and pack instructions">; 77*9880d681SAndroid Build Coastguard Workerdef FeatureDB : SubtargetFeature<"db", "HasDataBarrier", "true", 78*9880d681SAndroid Build Coastguard Worker "Has data barrier (dmb / dsb) instructions">; 79*9880d681SAndroid Build Coastguard Workerdef FeatureV7Clrex : SubtargetFeature<"v7clrex", "HasV7Clrex", "true", 80*9880d681SAndroid Build Coastguard Worker "Has v7 clrex instruction">; 81*9880d681SAndroid Build Coastguard Workerdef FeatureAcquireRelease : SubtargetFeature<"acquire-release", 82*9880d681SAndroid Build Coastguard Worker "HasAcquireRelease", "true", 83*9880d681SAndroid Build Coastguard Worker "Has v8 acquire/release (lda/ldaex etc) instructions">; 84*9880d681SAndroid Build Coastguard Workerdef FeatureSlowFPBrcc : SubtargetFeature<"slow-fp-brcc", "SlowFPBrcc", "true", 85*9880d681SAndroid Build Coastguard Worker "FP compare + branch is slow">; 86*9880d681SAndroid Build Coastguard Workerdef FeatureVFPOnlySP : SubtargetFeature<"fp-only-sp", "FPOnlySP", "true", 87*9880d681SAndroid Build Coastguard Worker "Floating point unit supports single precision only">; 88*9880d681SAndroid Build Coastguard Workerdef FeaturePerfMon : SubtargetFeature<"perfmon", "HasPerfMon", "true", 89*9880d681SAndroid Build Coastguard Worker "Enable support for Performance Monitor extensions">; 90*9880d681SAndroid Build Coastguard Workerdef FeatureTrustZone : SubtargetFeature<"trustzone", "HasTrustZone", "true", 91*9880d681SAndroid Build Coastguard Worker "Enable support for TrustZone security extensions">; 92*9880d681SAndroid Build Coastguard Workerdef Feature8MSecExt : SubtargetFeature<"8msecext", "Has8MSecExt", "true", 93*9880d681SAndroid Build Coastguard Worker "Enable support for ARMv8-M Security Extensions">; 94*9880d681SAndroid Build Coastguard Workerdef FeatureCrypto : SubtargetFeature<"crypto", "HasCrypto", "true", 95*9880d681SAndroid Build Coastguard Worker "Enable support for Cryptography extensions", 96*9880d681SAndroid Build Coastguard Worker [FeatureNEON]>; 97*9880d681SAndroid Build Coastguard Workerdef FeatureCRC : SubtargetFeature<"crc", "HasCRC", "true", 98*9880d681SAndroid Build Coastguard Worker "Enable support for CRC instructions">; 99*9880d681SAndroid Build Coastguard Worker// Not to be confused with FeatureHasRetAddrStack (return address stack) 100*9880d681SAndroid Build Coastguard Workerdef FeatureRAS : SubtargetFeature<"ras", "HasRAS", "true", 101*9880d681SAndroid Build Coastguard Worker "Enable Reliability, Availability and Serviceability extensions">; 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker// Cyclone has preferred instructions for zeroing VFP registers, which can 105*9880d681SAndroid Build Coastguard Worker// execute in 0 cycles. 106*9880d681SAndroid Build Coastguard Workerdef FeatureZCZeroing : SubtargetFeature<"zcz", "HasZeroCycleZeroing", "true", 107*9880d681SAndroid Build Coastguard Worker "Has zero-cycle zeroing instructions">; 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker// Whether or not it may be profitable to unpredicate certain instructions 110*9880d681SAndroid Build Coastguard Worker// during if conversion. 111*9880d681SAndroid Build Coastguard Workerdef FeatureProfUnpredicate : SubtargetFeature<"prof-unpr", 112*9880d681SAndroid Build Coastguard Worker "IsProfitableToUnpredicate", 113*9880d681SAndroid Build Coastguard Worker "true", 114*9880d681SAndroid Build Coastguard Worker "Is profitable to unpredicate">; 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker// Some targets (e.g. Swift) have microcoded VGETLNi32. 117*9880d681SAndroid Build Coastguard Workerdef FeatureSlowVGETLNi32 : SubtargetFeature<"slow-vgetlni32", 118*9880d681SAndroid Build Coastguard Worker "HasSlowVGETLNi32", "true", 119*9880d681SAndroid Build Coastguard Worker "Has slow VGETLNi32 - prefer VMOV">; 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker// Some targets (e.g. Swift) have microcoded VDUP32. 122*9880d681SAndroid Build Coastguard Workerdef FeatureSlowVDUP32 : SubtargetFeature<"slow-vdup32", "HasSlowVDUP32", "true", 123*9880d681SAndroid Build Coastguard Worker "Has slow VDUP32 - prefer VMOV">; 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Worker// Some targets (e.g. Cortex-A9) prefer VMOVSR to VMOVDRR even when using NEON 126*9880d681SAndroid Build Coastguard Worker// for scalar FP, as this allows more effective execution domain optimization. 127*9880d681SAndroid Build Coastguard Workerdef FeaturePreferVMOVSR : SubtargetFeature<"prefer-vmovsr", "PreferVMOVSR", 128*9880d681SAndroid Build Coastguard Worker "true", "Prefer VMOVSR">; 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Worker// Swift has ISHST barriers compatible with Atomic Release semantics but weaker 131*9880d681SAndroid Build Coastguard Worker// than ISH 132*9880d681SAndroid Build Coastguard Workerdef FeaturePrefISHSTBarrier : SubtargetFeature<"prefer-ishst", "PreferISHST", 133*9880d681SAndroid Build Coastguard Worker "true", "Prefer ISHST barriers">; 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker// Some targets (e.g. Cortex-A9) have muxed AGU and NEON/FPU. 136*9880d681SAndroid Build Coastguard Workerdef FeatureMuxedUnits : SubtargetFeature<"muxed-units", "HasMuxedUnits", "true", 137*9880d681SAndroid Build Coastguard Worker "Has muxed AGU and NEON/FPU">; 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker// On some targets, a VLDM/VSTM starting with an odd register number needs more 140*9880d681SAndroid Build Coastguard Worker// microops than single VLDRS. 141*9880d681SAndroid Build Coastguard Workerdef FeatureSlowOddRegister : SubtargetFeature<"slow-odd-reg", "SlowOddRegister", 142*9880d681SAndroid Build Coastguard Worker "true", "VLDM/VSTM starting with an odd register is slow">; 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Worker// Some targets have a renaming dependency when loading into D subregisters. 145*9880d681SAndroid Build Coastguard Workerdef FeatureSlowLoadDSubreg : SubtargetFeature<"slow-load-D-subreg", 146*9880d681SAndroid Build Coastguard Worker "SlowLoadDSubregister", "true", 147*9880d681SAndroid Build Coastguard Worker "Loading into D subregs is slow">; 148*9880d681SAndroid Build Coastguard Worker// Some targets (e.g. Cortex-A15) never want VMOVS to be widened to VMOVD. 149*9880d681SAndroid Build Coastguard Workerdef FeatureDontWidenVMOVS : SubtargetFeature<"dont-widen-vmovs", 150*9880d681SAndroid Build Coastguard Worker "DontWidenVMOVS", "true", 151*9880d681SAndroid Build Coastguard Worker "Don't widen VMOVS to VMOVD">; 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Worker// Whether or not it is profitable to expand VFP/NEON MLA/MLS instructions. 154*9880d681SAndroid Build Coastguard Workerdef FeatureExpandMLx : SubtargetFeature<"expand-fp-mlx", "ExpandMLx", "true", 155*9880d681SAndroid Build Coastguard Worker "Expand VFP/NEON MLA/MLS instructions">; 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Worker// Some targets have special RAW hazards for VFP/NEON VMLA/VMLS. 158*9880d681SAndroid Build Coastguard Workerdef FeatureHasVMLxHazards : SubtargetFeature<"vmlx-hazards", "HasVMLxHazards", 159*9880d681SAndroid Build Coastguard Worker "true", "Has VMLx hazards">; 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker// Some targets (e.g. Cortex-A9) want to convert VMOVRS, VMOVSR and VMOVS from 162*9880d681SAndroid Build Coastguard Worker// VFP to NEON, as an execution domain optimization. 163*9880d681SAndroid Build Coastguard Workerdef FeatureNEONForFPMovs : SubtargetFeature<"neon-fpmovs", "UseNEONForFPMovs", 164*9880d681SAndroid Build Coastguard Worker "true", "Convert VMOVSR, VMOVRS, VMOVS to NEON">; 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Worker// Some processors benefit from using NEON instructions for scalar 167*9880d681SAndroid Build Coastguard Worker// single-precision FP operations. This affects instruction selection and should 168*9880d681SAndroid Build Coastguard Worker// only be enabled if the handling of denormals is not important. 169*9880d681SAndroid Build Coastguard Workerdef FeatureNEONForFP : SubtargetFeature<"neonfp", "UseNEONForSinglePrecisionFP", 170*9880d681SAndroid Build Coastguard Worker "true", 171*9880d681SAndroid Build Coastguard Worker "Use NEON for single precision FP">; 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker// On some processors, VLDn instructions that access unaligned data take one 174*9880d681SAndroid Build Coastguard Worker// extra cycle. Take that into account when computing operand latencies. 175*9880d681SAndroid Build Coastguard Workerdef FeatureCheckVLDnAlign : SubtargetFeature<"vldn-align", "CheckVLDnAlign", 176*9880d681SAndroid Build Coastguard Worker "true", 177*9880d681SAndroid Build Coastguard Worker "Check for VLDn unaligned access">; 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Worker// Some processors have a nonpipelined VFP coprocessor. 180*9880d681SAndroid Build Coastguard Workerdef FeatureNonpipelinedVFP : SubtargetFeature<"nonpipelined-vfp", 181*9880d681SAndroid Build Coastguard Worker "NonpipelinedVFP", "true", 182*9880d681SAndroid Build Coastguard Worker "VFP instructions are not pipelined">; 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Worker// Some processors have FP multiply-accumulate instructions that don't 185*9880d681SAndroid Build Coastguard Worker// play nicely with other VFP / NEON instructions, and it's generally better 186*9880d681SAndroid Build Coastguard Worker// to just not use them. 187*9880d681SAndroid Build Coastguard Workerdef FeatureHasSlowFPVMLx : SubtargetFeature<"slowfpvmlx", "SlowFPVMLx", "true", 188*9880d681SAndroid Build Coastguard Worker "Disable VFP / NEON MAC instructions">; 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Worker// Cortex-A8 / A9 Advanced SIMD has multiplier accumulator forwarding. 191*9880d681SAndroid Build Coastguard Workerdef FeatureVMLxForwarding : SubtargetFeature<"vmlx-forwarding", 192*9880d681SAndroid Build Coastguard Worker "HasVMLxForwarding", "true", 193*9880d681SAndroid Build Coastguard Worker "Has multiplier accumulator forwarding">; 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker// Disable 32-bit to 16-bit narrowing for experimentation. 196*9880d681SAndroid Build Coastguard Workerdef FeaturePref32BitThumb : SubtargetFeature<"32bit", "Pref32BitThumb", "true", 197*9880d681SAndroid Build Coastguard Worker "Prefer 32-bit Thumb instrs">; 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Worker/// Some instructions update CPSR partially, which can add false dependency for 200*9880d681SAndroid Build Coastguard Worker/// out-of-order implementation, e.g. Cortex-A9, unless each individual bit is 201*9880d681SAndroid Build Coastguard Worker/// mapped to a separate physical register. Avoid partial CPSR update for these 202*9880d681SAndroid Build Coastguard Worker/// processors. 203*9880d681SAndroid Build Coastguard Workerdef FeatureAvoidPartialCPSR : SubtargetFeature<"avoid-partial-cpsr", 204*9880d681SAndroid Build Coastguard Worker "AvoidCPSRPartialUpdate", "true", 205*9880d681SAndroid Build Coastguard Worker "Avoid CPSR partial update for OOO execution">; 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Workerdef FeatureAvoidMOVsShOp : SubtargetFeature<"avoid-movs-shop", 208*9880d681SAndroid Build Coastguard Worker "AvoidMOVsShifterOperand", "true", 209*9880d681SAndroid Build Coastguard Worker "Avoid movs instructions with shifter operand">; 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Worker// Some processors perform return stack prediction. CodeGen should avoid issue 212*9880d681SAndroid Build Coastguard Worker// "normal" call instructions to callees which do not return. 213*9880d681SAndroid Build Coastguard Workerdef FeatureHasRetAddrStack : SubtargetFeature<"ret-addr-stack", "HasRetAddrStack", "true", 214*9880d681SAndroid Build Coastguard Worker "Has return address stack">; 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker/// DSP extension. 217*9880d681SAndroid Build Coastguard Workerdef FeatureDSP : SubtargetFeature<"dsp", "HasDSP", "true", 218*9880d681SAndroid Build Coastguard Worker "Supports DSP instructions in ARM and/or Thumb2">; 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Worker// Multiprocessing extension. 221*9880d681SAndroid Build Coastguard Workerdef FeatureMP : SubtargetFeature<"mp", "HasMPExtension", "true", 222*9880d681SAndroid Build Coastguard Worker "Supports Multiprocessing extension">; 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Worker// Virtualization extension - requires HW divide (ARMv7-AR ARMARM - 4.4.8). 225*9880d681SAndroid Build Coastguard Workerdef FeatureVirtualization : SubtargetFeature<"virtualization", 226*9880d681SAndroid Build Coastguard Worker "HasVirtualization", "true", 227*9880d681SAndroid Build Coastguard Worker "Supports Virtualization extension", 228*9880d681SAndroid Build Coastguard Worker [FeatureHWDiv, FeatureHWDivARM]>; 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Worker// M-series ISA 231*9880d681SAndroid Build Coastguard Workerdef FeatureMClass : SubtargetFeature<"mclass", "ARMProcClass", "MClass", 232*9880d681SAndroid Build Coastguard Worker "Is microcontroller profile ('M' series)">; 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Worker// R-series ISA 235*9880d681SAndroid Build Coastguard Workerdef FeatureRClass : SubtargetFeature<"rclass", "ARMProcClass", "RClass", 236*9880d681SAndroid Build Coastguard Worker "Is realtime profile ('R' series)">; 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Worker// A-series ISA 239*9880d681SAndroid Build Coastguard Workerdef FeatureAClass : SubtargetFeature<"aclass", "ARMProcClass", "AClass", 240*9880d681SAndroid Build Coastguard Worker "Is application profile ('A' series)">; 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Worker// Special TRAP encoding for NaCl, which looks like a TRAP in Thumb too. 243*9880d681SAndroid Build Coastguard Worker// See ARMInstrInfo.td for details. 244*9880d681SAndroid Build Coastguard Workerdef FeatureNaClTrap : SubtargetFeature<"nacl-trap", "UseNaClTrap", "true", 245*9880d681SAndroid Build Coastguard Worker "NaCl trap">; 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Workerdef FeatureStrictAlign : SubtargetFeature<"strict-align", 248*9880d681SAndroid Build Coastguard Worker "StrictAlign", "true", 249*9880d681SAndroid Build Coastguard Worker "Disallow all unaligned memory " 250*9880d681SAndroid Build Coastguard Worker "access">; 251*9880d681SAndroid Build Coastguard Worker 252*9880d681SAndroid Build Coastguard Workerdef FeatureLongCalls : SubtargetFeature<"long-calls", "GenLongCalls", "true", 253*9880d681SAndroid Build Coastguard Worker "Generate calls via indirect call " 254*9880d681SAndroid Build Coastguard Worker "instructions">; 255*9880d681SAndroid Build Coastguard Worker 256*9880d681SAndroid Build Coastguard Workerdef FeatureReserveR9 : SubtargetFeature<"reserve-r9", "ReserveR9", "true", 257*9880d681SAndroid Build Coastguard Worker "Reserve R9, making it unavailable as " 258*9880d681SAndroid Build Coastguard Worker "GPR">; 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Workerdef FeatureNoMovt : SubtargetFeature<"no-movt", "NoMovt", "true", 261*9880d681SAndroid Build Coastguard Worker "Don't use movt/movw pairs for 32-bit " 262*9880d681SAndroid Build Coastguard Worker "imms">; 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 266*9880d681SAndroid Build Coastguard Worker// ARM ISAa. 267*9880d681SAndroid Build Coastguard Worker// 268*9880d681SAndroid Build Coastguard Worker 269*9880d681SAndroid Build Coastguard Workerdef HasV4TOps : SubtargetFeature<"v4t", "HasV4TOps", "true", 270*9880d681SAndroid Build Coastguard Worker "Support ARM v4T instructions">; 271*9880d681SAndroid Build Coastguard Workerdef HasV5TOps : SubtargetFeature<"v5t", "HasV5TOps", "true", 272*9880d681SAndroid Build Coastguard Worker "Support ARM v5T instructions", 273*9880d681SAndroid Build Coastguard Worker [HasV4TOps]>; 274*9880d681SAndroid Build Coastguard Workerdef HasV5TEOps : SubtargetFeature<"v5te", "HasV5TEOps", "true", 275*9880d681SAndroid Build Coastguard Worker "Support ARM v5TE, v5TEj, and v5TExp instructions", 276*9880d681SAndroid Build Coastguard Worker [HasV5TOps]>; 277*9880d681SAndroid Build Coastguard Workerdef HasV6Ops : SubtargetFeature<"v6", "HasV6Ops", "true", 278*9880d681SAndroid Build Coastguard Worker "Support ARM v6 instructions", 279*9880d681SAndroid Build Coastguard Worker [HasV5TEOps]>; 280*9880d681SAndroid Build Coastguard Workerdef HasV6MOps : SubtargetFeature<"v6m", "HasV6MOps", "true", 281*9880d681SAndroid Build Coastguard Worker "Support ARM v6M instructions", 282*9880d681SAndroid Build Coastguard Worker [HasV6Ops]>; 283*9880d681SAndroid Build Coastguard Workerdef HasV8MBaselineOps : SubtargetFeature<"v8m", "HasV8MBaselineOps", "true", 284*9880d681SAndroid Build Coastguard Worker "Support ARM v8M Baseline instructions", 285*9880d681SAndroid Build Coastguard Worker [HasV6MOps]>; 286*9880d681SAndroid Build Coastguard Workerdef HasV6KOps : SubtargetFeature<"v6k", "HasV6KOps", "true", 287*9880d681SAndroid Build Coastguard Worker "Support ARM v6k instructions", 288*9880d681SAndroid Build Coastguard Worker [HasV6Ops]>; 289*9880d681SAndroid Build Coastguard Workerdef HasV6T2Ops : SubtargetFeature<"v6t2", "HasV6T2Ops", "true", 290*9880d681SAndroid Build Coastguard Worker "Support ARM v6t2 instructions", 291*9880d681SAndroid Build Coastguard Worker [HasV8MBaselineOps, HasV6KOps, FeatureThumb2]>; 292*9880d681SAndroid Build Coastguard Workerdef HasV7Ops : SubtargetFeature<"v7", "HasV7Ops", "true", 293*9880d681SAndroid Build Coastguard Worker "Support ARM v7 instructions", 294*9880d681SAndroid Build Coastguard Worker [HasV6T2Ops, FeaturePerfMon, 295*9880d681SAndroid Build Coastguard Worker FeatureV7Clrex]>; 296*9880d681SAndroid Build Coastguard Workerdef HasV8Ops : SubtargetFeature<"v8", "HasV8Ops", "true", 297*9880d681SAndroid Build Coastguard Worker "Support ARM v8 instructions", 298*9880d681SAndroid Build Coastguard Worker [HasV7Ops, FeatureAcquireRelease]>; 299*9880d681SAndroid Build Coastguard Workerdef HasV8_1aOps : SubtargetFeature<"v8.1a", "HasV8_1aOps", "true", 300*9880d681SAndroid Build Coastguard Worker "Support ARM v8.1a instructions", 301*9880d681SAndroid Build Coastguard Worker [HasV8Ops]>; 302*9880d681SAndroid Build Coastguard Workerdef HasV8_2aOps : SubtargetFeature<"v8.2a", "HasV8_2aOps", "true", 303*9880d681SAndroid Build Coastguard Worker "Support ARM v8.2a instructions", 304*9880d681SAndroid Build Coastguard Worker [HasV8_1aOps]>; 305*9880d681SAndroid Build Coastguard Workerdef HasV8MMainlineOps : SubtargetFeature<"v8m.main", "HasV8MMainlineOps", "true", 306*9880d681SAndroid Build Coastguard Worker "Support ARM v8M Mainline instructions", 307*9880d681SAndroid Build Coastguard Worker [HasV7Ops]>; 308*9880d681SAndroid Build Coastguard Worker 309*9880d681SAndroid Build Coastguard Worker 310*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 311*9880d681SAndroid Build Coastguard Worker// ARM Processor subtarget features. 312*9880d681SAndroid Build Coastguard Worker// 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Workerdef ProcA5 : SubtargetFeature<"a5", "ARMProcFamily", "CortexA5", 315*9880d681SAndroid Build Coastguard Worker "Cortex-A5 ARM processors", []>; 316*9880d681SAndroid Build Coastguard Workerdef ProcA7 : SubtargetFeature<"a7", "ARMProcFamily", "CortexA7", 317*9880d681SAndroid Build Coastguard Worker "Cortex-A7 ARM processors", []>; 318*9880d681SAndroid Build Coastguard Workerdef ProcA8 : SubtargetFeature<"a8", "ARMProcFamily", "CortexA8", 319*9880d681SAndroid Build Coastguard Worker "Cortex-A8 ARM processors", []>; 320*9880d681SAndroid Build Coastguard Workerdef ProcA9 : SubtargetFeature<"a9", "ARMProcFamily", "CortexA9", 321*9880d681SAndroid Build Coastguard Worker "Cortex-A9 ARM processors", []>; 322*9880d681SAndroid Build Coastguard Workerdef ProcA12 : SubtargetFeature<"a12", "ARMProcFamily", "CortexA12", 323*9880d681SAndroid Build Coastguard Worker "Cortex-A12 ARM processors", []>; 324*9880d681SAndroid Build Coastguard Workerdef ProcA15 : SubtargetFeature<"a15", "ARMProcFamily", "CortexA15", 325*9880d681SAndroid Build Coastguard Worker "Cortex-A15 ARM processors", []>; 326*9880d681SAndroid Build Coastguard Workerdef ProcA17 : SubtargetFeature<"a17", "ARMProcFamily", "CortexA17", 327*9880d681SAndroid Build Coastguard Worker "Cortex-A17 ARM processors", []>; 328*9880d681SAndroid Build Coastguard Workerdef ProcA32 : SubtargetFeature<"a32", "ARMProcFamily", "CortexA32", 329*9880d681SAndroid Build Coastguard Worker "Cortex-A32 ARM processors", []>; 330*9880d681SAndroid Build Coastguard Workerdef ProcA35 : SubtargetFeature<"a35", "ARMProcFamily", "CortexA35", 331*9880d681SAndroid Build Coastguard Worker "Cortex-A35 ARM processors", []>; 332*9880d681SAndroid Build Coastguard Workerdef ProcA53 : SubtargetFeature<"a53", "ARMProcFamily", "CortexA53", 333*9880d681SAndroid Build Coastguard Worker "Cortex-A53 ARM processors", []>; 334*9880d681SAndroid Build Coastguard Workerdef ProcA57 : SubtargetFeature<"a57", "ARMProcFamily", "CortexA57", 335*9880d681SAndroid Build Coastguard Worker "Cortex-A57 ARM processors", []>; 336*9880d681SAndroid Build Coastguard Workerdef ProcA72 : SubtargetFeature<"a72", "ARMProcFamily", "CortexA72", 337*9880d681SAndroid Build Coastguard Worker "Cortex-A72 ARM processors", []>; 338*9880d681SAndroid Build Coastguard Workerdef ProcA73 : SubtargetFeature<"a73", "ARMProcFamily", "CortexA73", 339*9880d681SAndroid Build Coastguard Worker "Cortex-A73 ARM processors", []>; 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Workerdef ProcKrait : SubtargetFeature<"krait", "ARMProcFamily", "Krait", 342*9880d681SAndroid Build Coastguard Worker "Qualcomm ARM processors", []>; 343*9880d681SAndroid Build Coastguard Workerdef ProcSwift : SubtargetFeature<"swift", "ARMProcFamily", "Swift", 344*9880d681SAndroid Build Coastguard Worker "Swift ARM processors", []>; 345*9880d681SAndroid Build Coastguard Worker 346*9880d681SAndroid Build Coastguard Workerdef ProcExynosM1 : SubtargetFeature<"exynosm1", "ARMProcFamily", "ExynosM1", 347*9880d681SAndroid Build Coastguard Worker "Samsung Exynos-M1 processors", []>; 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Workerdef ProcR4 : SubtargetFeature<"r4", "ARMProcFamily", "CortexR4", 350*9880d681SAndroid Build Coastguard Worker "Cortex-R4 ARM processors", []>; 351*9880d681SAndroid Build Coastguard Workerdef ProcR5 : SubtargetFeature<"r5", "ARMProcFamily", "CortexR5", 352*9880d681SAndroid Build Coastguard Worker "Cortex-R5 ARM processors", []>; 353*9880d681SAndroid Build Coastguard Workerdef ProcR7 : SubtargetFeature<"r7", "ARMProcFamily", "CortexR7", 354*9880d681SAndroid Build Coastguard Worker "Cortex-R7 ARM processors", []>; 355*9880d681SAndroid Build Coastguard Worker 356*9880d681SAndroid Build Coastguard Workerdef ProcM3 : SubtargetFeature<"m3", "ARMProcFamily", "CortexM3", 357*9880d681SAndroid Build Coastguard Worker "Cortex-M3 ARM processors", []>; 358*9880d681SAndroid Build Coastguard Worker 359*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 360*9880d681SAndroid Build Coastguard Worker// ARM schedules. 361*9880d681SAndroid Build Coastguard Worker// 362*9880d681SAndroid Build Coastguard Worker 363*9880d681SAndroid Build Coastguard Workerinclude "ARMSchedule.td" 364*9880d681SAndroid Build Coastguard Worker 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 367*9880d681SAndroid Build Coastguard Worker// ARM architectures 368*9880d681SAndroid Build Coastguard Worker// 369*9880d681SAndroid Build Coastguard Worker 370*9880d681SAndroid Build Coastguard Workerdef ARMv2 : Architecture<"armv2", "ARMv2", []>; 371*9880d681SAndroid Build Coastguard Worker 372*9880d681SAndroid Build Coastguard Workerdef ARMv2a : Architecture<"armv2a", "ARMv2a", []>; 373*9880d681SAndroid Build Coastguard Worker 374*9880d681SAndroid Build Coastguard Workerdef ARMv3 : Architecture<"armv3", "ARMv3", []>; 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Workerdef ARMv3m : Architecture<"armv3m", "ARMv3m", []>; 377*9880d681SAndroid Build Coastguard Worker 378*9880d681SAndroid Build Coastguard Workerdef ARMv4 : Architecture<"armv4", "ARMv4", []>; 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Workerdef ARMv4t : Architecture<"armv4t", "ARMv4t", [HasV4TOps]>; 381*9880d681SAndroid Build Coastguard Worker 382*9880d681SAndroid Build Coastguard Workerdef ARMv5t : Architecture<"armv5t", "ARMv5t", [HasV5TOps]>; 383*9880d681SAndroid Build Coastguard Worker 384*9880d681SAndroid Build Coastguard Workerdef ARMv5te : Architecture<"armv5te", "ARMv5te", [HasV5TEOps]>; 385*9880d681SAndroid Build Coastguard Worker 386*9880d681SAndroid Build Coastguard Workerdef ARMv5tej : Architecture<"armv5tej", "ARMv5tej", [HasV5TEOps]>; 387*9880d681SAndroid Build Coastguard Worker 388*9880d681SAndroid Build Coastguard Workerdef ARMv6 : Architecture<"armv6", "ARMv6", [HasV6Ops]>; 389*9880d681SAndroid Build Coastguard Worker 390*9880d681SAndroid Build Coastguard Workerdef ARMv6t2 : Architecture<"armv6t2", "ARMv6t2", [HasV6T2Ops, 391*9880d681SAndroid Build Coastguard Worker FeatureDSP]>; 392*9880d681SAndroid Build Coastguard Worker 393*9880d681SAndroid Build Coastguard Workerdef ARMv6k : Architecture<"armv6k", "ARMv6k", [HasV6KOps]>; 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Workerdef ARMv6kz : Architecture<"armv6kz", "ARMv6kz", [HasV6KOps, 396*9880d681SAndroid Build Coastguard Worker FeatureTrustZone]>; 397*9880d681SAndroid Build Coastguard Worker 398*9880d681SAndroid Build Coastguard Workerdef ARMv6m : Architecture<"armv6-m", "ARMv6m", [HasV6MOps, 399*9880d681SAndroid Build Coastguard Worker FeatureNoARM, 400*9880d681SAndroid Build Coastguard Worker FeatureDB, 401*9880d681SAndroid Build Coastguard Worker FeatureMClass]>; 402*9880d681SAndroid Build Coastguard Worker 403*9880d681SAndroid Build Coastguard Workerdef ARMv6sm : Architecture<"armv6s-m", "ARMv6sm", [HasV6MOps, 404*9880d681SAndroid Build Coastguard Worker FeatureNoARM, 405*9880d681SAndroid Build Coastguard Worker FeatureDB, 406*9880d681SAndroid Build Coastguard Worker FeatureMClass]>; 407*9880d681SAndroid Build Coastguard Worker 408*9880d681SAndroid Build Coastguard Workerdef ARMv7a : Architecture<"armv7-a", "ARMv7a", [HasV7Ops, 409*9880d681SAndroid Build Coastguard Worker FeatureNEON, 410*9880d681SAndroid Build Coastguard Worker FeatureDB, 411*9880d681SAndroid Build Coastguard Worker FeatureDSP, 412*9880d681SAndroid Build Coastguard Worker FeatureAClass]>; 413*9880d681SAndroid Build Coastguard Worker 414*9880d681SAndroid Build Coastguard Workerdef ARMv7r : Architecture<"armv7-r", "ARMv7r", [HasV7Ops, 415*9880d681SAndroid Build Coastguard Worker FeatureDB, 416*9880d681SAndroid Build Coastguard Worker FeatureDSP, 417*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 418*9880d681SAndroid Build Coastguard Worker FeatureRClass]>; 419*9880d681SAndroid Build Coastguard Worker 420*9880d681SAndroid Build Coastguard Workerdef ARMv7m : Architecture<"armv7-m", "ARMv7m", [HasV7Ops, 421*9880d681SAndroid Build Coastguard Worker FeatureThumb2, 422*9880d681SAndroid Build Coastguard Worker FeatureNoARM, 423*9880d681SAndroid Build Coastguard Worker FeatureDB, 424*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 425*9880d681SAndroid Build Coastguard Worker FeatureMClass]>; 426*9880d681SAndroid Build Coastguard Worker 427*9880d681SAndroid Build Coastguard Workerdef ARMv7em : Architecture<"armv7e-m", "ARMv7em", [HasV7Ops, 428*9880d681SAndroid Build Coastguard Worker FeatureThumb2, 429*9880d681SAndroid Build Coastguard Worker FeatureNoARM, 430*9880d681SAndroid Build Coastguard Worker FeatureDB, 431*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 432*9880d681SAndroid Build Coastguard Worker FeatureMClass, 433*9880d681SAndroid Build Coastguard Worker FeatureDSP, 434*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk]>; 435*9880d681SAndroid Build Coastguard Worker 436*9880d681SAndroid Build Coastguard Workerdef ARMv8a : Architecture<"armv8-a", "ARMv8a", [HasV8Ops, 437*9880d681SAndroid Build Coastguard Worker FeatureAClass, 438*9880d681SAndroid Build Coastguard Worker FeatureDB, 439*9880d681SAndroid Build Coastguard Worker FeatureFPARMv8, 440*9880d681SAndroid Build Coastguard Worker FeatureNEON, 441*9880d681SAndroid Build Coastguard Worker FeatureDSP, 442*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 443*9880d681SAndroid Build Coastguard Worker FeatureMP, 444*9880d681SAndroid Build Coastguard Worker FeatureVirtualization, 445*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 446*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 447*9880d681SAndroid Build Coastguard Worker 448*9880d681SAndroid Build Coastguard Workerdef ARMv81a : Architecture<"armv8.1-a", "ARMv81a", [HasV8_1aOps, 449*9880d681SAndroid Build Coastguard Worker FeatureAClass, 450*9880d681SAndroid Build Coastguard Worker FeatureDB, 451*9880d681SAndroid Build Coastguard Worker FeatureFPARMv8, 452*9880d681SAndroid Build Coastguard Worker FeatureNEON, 453*9880d681SAndroid Build Coastguard Worker FeatureDSP, 454*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 455*9880d681SAndroid Build Coastguard Worker FeatureMP, 456*9880d681SAndroid Build Coastguard Worker FeatureVirtualization, 457*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 458*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 459*9880d681SAndroid Build Coastguard Worker 460*9880d681SAndroid Build Coastguard Workerdef ARMv82a : Architecture<"armv8.2-a", "ARMv82a", [HasV8_2aOps, 461*9880d681SAndroid Build Coastguard Worker FeatureAClass, 462*9880d681SAndroid Build Coastguard Worker FeatureDB, 463*9880d681SAndroid Build Coastguard Worker FeatureFPARMv8, 464*9880d681SAndroid Build Coastguard Worker FeatureNEON, 465*9880d681SAndroid Build Coastguard Worker FeatureDSP, 466*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 467*9880d681SAndroid Build Coastguard Worker FeatureMP, 468*9880d681SAndroid Build Coastguard Worker FeatureVirtualization, 469*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 470*9880d681SAndroid Build Coastguard Worker FeatureCRC, 471*9880d681SAndroid Build Coastguard Worker FeatureRAS]>; 472*9880d681SAndroid Build Coastguard Worker 473*9880d681SAndroid Build Coastguard Workerdef ARMv8mBaseline : Architecture<"armv8-m.base", "ARMv8mBaseline", 474*9880d681SAndroid Build Coastguard Worker [HasV8MBaselineOps, 475*9880d681SAndroid Build Coastguard Worker FeatureNoARM, 476*9880d681SAndroid Build Coastguard Worker FeatureDB, 477*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 478*9880d681SAndroid Build Coastguard Worker FeatureV7Clrex, 479*9880d681SAndroid Build Coastguard Worker Feature8MSecExt, 480*9880d681SAndroid Build Coastguard Worker FeatureAcquireRelease, 481*9880d681SAndroid Build Coastguard Worker FeatureMClass]>; 482*9880d681SAndroid Build Coastguard Worker 483*9880d681SAndroid Build Coastguard Workerdef ARMv8mMainline : Architecture<"armv8-m.main", "ARMv8mMainline", 484*9880d681SAndroid Build Coastguard Worker [HasV8MMainlineOps, 485*9880d681SAndroid Build Coastguard Worker FeatureNoARM, 486*9880d681SAndroid Build Coastguard Worker FeatureDB, 487*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 488*9880d681SAndroid Build Coastguard Worker Feature8MSecExt, 489*9880d681SAndroid Build Coastguard Worker FeatureAcquireRelease, 490*9880d681SAndroid Build Coastguard Worker FeatureMClass]>; 491*9880d681SAndroid Build Coastguard Worker 492*9880d681SAndroid Build Coastguard Worker// Aliases 493*9880d681SAndroid Build Coastguard Workerdef IWMMXT : Architecture<"iwmmxt", "ARMv5te", [ARMv5te]>; 494*9880d681SAndroid Build Coastguard Workerdef IWMMXT2 : Architecture<"iwmmxt2", "ARMv5te", [ARMv5te]>; 495*9880d681SAndroid Build Coastguard Workerdef XScale : Architecture<"xscale", "ARMv5te", [ARMv5te]>; 496*9880d681SAndroid Build Coastguard Workerdef ARMv6j : Architecture<"armv6j", "ARMv7a", [ARMv6]>; 497*9880d681SAndroid Build Coastguard Workerdef ARMv7k : Architecture<"armv7k", "ARMv7a", [ARMv7a]>; 498*9880d681SAndroid Build Coastguard Workerdef ARMv7s : Architecture<"armv7s", "ARMv7a", [ARMv7a]>; 499*9880d681SAndroid Build Coastguard Worker 500*9880d681SAndroid Build Coastguard Worker 501*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 502*9880d681SAndroid Build Coastguard Worker// ARM processors 503*9880d681SAndroid Build Coastguard Worker// 504*9880d681SAndroid Build Coastguard Worker 505*9880d681SAndroid Build Coastguard Worker// Dummy CPU, used to target architectures 506*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"generic", []>; 507*9880d681SAndroid Build Coastguard Worker 508*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm8", [ARMv4]>; 509*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm810", [ARMv4]>; 510*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"strongarm", [ARMv4]>; 511*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"strongarm110", [ARMv4]>; 512*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"strongarm1100", [ARMv4]>; 513*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"strongarm1110", [ARMv4]>; 514*9880d681SAndroid Build Coastguard Worker 515*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm7tdmi", [ARMv4t]>; 516*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm7tdmi-s", [ARMv4t]>; 517*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm710t", [ARMv4t]>; 518*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm720t", [ARMv4t]>; 519*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm9", [ARMv4t]>; 520*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm9tdmi", [ARMv4t]>; 521*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm920", [ARMv4t]>; 522*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm920t", [ARMv4t]>; 523*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm922t", [ARMv4t]>; 524*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm940t", [ARMv4t]>; 525*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"ep9312", [ARMv4t]>; 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm10tdmi", [ARMv5t]>; 528*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm1020t", [ARMv5t]>; 529*9880d681SAndroid Build Coastguard Worker 530*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm9e", [ARMv5te]>; 531*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm926ej-s", [ARMv5te]>; 532*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm946e-s", [ARMv5te]>; 533*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm966e-s", [ARMv5te]>; 534*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm968e-s", [ARMv5te]>; 535*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm10e", [ARMv5te]>; 536*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm1020e", [ARMv5te]>; 537*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"arm1022e", [ARMv5te]>; 538*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"xscale", [ARMv5te]>; 539*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"iwmmxt", [ARMv5te]>; 540*9880d681SAndroid Build Coastguard Worker 541*9880d681SAndroid Build Coastguard Workerdef : Processor<"arm1136j-s", ARMV6Itineraries, [ARMv6]>; 542*9880d681SAndroid Build Coastguard Workerdef : Processor<"arm1136jf-s", ARMV6Itineraries, [ARMv6, 543*9880d681SAndroid Build Coastguard Worker FeatureVFP2, 544*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx]>; 545*9880d681SAndroid Build Coastguard Worker 546*9880d681SAndroid Build Coastguard Workerdef : Processor<"cortex-m0", ARMV6Itineraries, [ARMv6m]>; 547*9880d681SAndroid Build Coastguard Workerdef : Processor<"cortex-m0plus", ARMV6Itineraries, [ARMv6m]>; 548*9880d681SAndroid Build Coastguard Workerdef : Processor<"cortex-m1", ARMV6Itineraries, [ARMv6m]>; 549*9880d681SAndroid Build Coastguard Workerdef : Processor<"sc000", ARMV6Itineraries, [ARMv6m]>; 550*9880d681SAndroid Build Coastguard Worker 551*9880d681SAndroid Build Coastguard Workerdef : Processor<"arm1176jz-s", ARMV6Itineraries, [ARMv6kz]>; 552*9880d681SAndroid Build Coastguard Workerdef : Processor<"arm1176jzf-s", ARMV6Itineraries, [ARMv6kz, 553*9880d681SAndroid Build Coastguard Worker FeatureVFP2, 554*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx]>; 555*9880d681SAndroid Build Coastguard Worker 556*9880d681SAndroid Build Coastguard Workerdef : Processor<"mpcorenovfp", ARMV6Itineraries, [ARMv6k]>; 557*9880d681SAndroid Build Coastguard Workerdef : Processor<"mpcore", ARMV6Itineraries, [ARMv6k, 558*9880d681SAndroid Build Coastguard Worker FeatureVFP2, 559*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx]>; 560*9880d681SAndroid Build Coastguard Worker 561*9880d681SAndroid Build Coastguard Workerdef : Processor<"arm1156t2-s", ARMV6Itineraries, [ARMv6t2]>; 562*9880d681SAndroid Build Coastguard Workerdef : Processor<"arm1156t2f-s", ARMV6Itineraries, [ARMv6t2, 563*9880d681SAndroid Build Coastguard Worker FeatureVFP2, 564*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx]>; 565*9880d681SAndroid Build Coastguard Worker 566*9880d681SAndroid Build Coastguard Worker// FIXME: A5 has currently the same Schedule model as A8 567*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a5", CortexA8Model, [ARMv7a, ProcA5, 568*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 569*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 570*9880d681SAndroid Build Coastguard Worker FeatureSlowFPBrcc, 571*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 572*9880d681SAndroid Build Coastguard Worker FeatureVMLxForwarding, 573*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 574*9880d681SAndroid Build Coastguard Worker FeatureMP, 575*9880d681SAndroid Build Coastguard Worker FeatureVFP4]>; 576*9880d681SAndroid Build Coastguard Worker 577*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a7", CortexA8Model, [ARMv7a, ProcA7, 578*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 579*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 580*9880d681SAndroid Build Coastguard Worker FeatureSlowFPBrcc, 581*9880d681SAndroid Build Coastguard Worker FeatureHasVMLxHazards, 582*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 583*9880d681SAndroid Build Coastguard Worker FeatureVMLxForwarding, 584*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 585*9880d681SAndroid Build Coastguard Worker FeatureMP, 586*9880d681SAndroid Build Coastguard Worker FeatureVFP4, 587*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 588*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 589*9880d681SAndroid Build Coastguard Worker FeatureVirtualization]>; 590*9880d681SAndroid Build Coastguard Worker 591*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a8", CortexA8Model, [ARMv7a, ProcA8, 592*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 593*9880d681SAndroid Build Coastguard Worker FeatureNonpipelinedVFP, 594*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 595*9880d681SAndroid Build Coastguard Worker FeatureSlowFPBrcc, 596*9880d681SAndroid Build Coastguard Worker FeatureHasVMLxHazards, 597*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 598*9880d681SAndroid Build Coastguard Worker FeatureVMLxForwarding, 599*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk]>; 600*9880d681SAndroid Build Coastguard Worker 601*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a9", CortexA9Model, [ARMv7a, ProcA9, 602*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 603*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 604*9880d681SAndroid Build Coastguard Worker FeatureHasVMLxHazards, 605*9880d681SAndroid Build Coastguard Worker FeatureVMLxForwarding, 606*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 607*9880d681SAndroid Build Coastguard Worker FeatureFP16, 608*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 609*9880d681SAndroid Build Coastguard Worker FeatureExpandMLx, 610*9880d681SAndroid Build Coastguard Worker FeaturePreferVMOVSR, 611*9880d681SAndroid Build Coastguard Worker FeatureMuxedUnits, 612*9880d681SAndroid Build Coastguard Worker FeatureNEONForFPMovs, 613*9880d681SAndroid Build Coastguard Worker FeatureCheckVLDnAlign, 614*9880d681SAndroid Build Coastguard Worker FeatureMP]>; 615*9880d681SAndroid Build Coastguard Worker 616*9880d681SAndroid Build Coastguard Worker// FIXME: A12 has currently the same Schedule model as A9 617*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a12", CortexA9Model, [ARMv7a, ProcA12, 618*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 619*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 620*9880d681SAndroid Build Coastguard Worker FeatureVMLxForwarding, 621*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 622*9880d681SAndroid Build Coastguard Worker FeatureVFP4, 623*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 624*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 625*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 626*9880d681SAndroid Build Coastguard Worker FeatureVirtualization, 627*9880d681SAndroid Build Coastguard Worker FeatureMP]>; 628*9880d681SAndroid Build Coastguard Worker 629*9880d681SAndroid Build Coastguard Worker// FIXME: A15 has currently the same Schedule model as A9. 630*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a15", CortexA9Model, [ARMv7a, ProcA15, 631*9880d681SAndroid Build Coastguard Worker FeatureDontWidenVMOVS, 632*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 633*9880d681SAndroid Build Coastguard Worker FeatureMuxedUnits, 634*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 635*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 636*9880d681SAndroid Build Coastguard Worker FeatureVFP4, 637*9880d681SAndroid Build Coastguard Worker FeatureMP, 638*9880d681SAndroid Build Coastguard Worker FeatureCheckVLDnAlign, 639*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 640*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 641*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 642*9880d681SAndroid Build Coastguard Worker FeatureVirtualization]>; 643*9880d681SAndroid Build Coastguard Worker 644*9880d681SAndroid Build Coastguard Worker// FIXME: A17 has currently the same Schedule model as A9 645*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-a17", CortexA9Model, [ARMv7a, ProcA17, 646*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 647*9880d681SAndroid Build Coastguard Worker FeatureTrustZone, 648*9880d681SAndroid Build Coastguard Worker FeatureMP, 649*9880d681SAndroid Build Coastguard Worker FeatureVMLxForwarding, 650*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 651*9880d681SAndroid Build Coastguard Worker FeatureVFP4, 652*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 653*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 654*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 655*9880d681SAndroid Build Coastguard Worker FeatureVirtualization]>; 656*9880d681SAndroid Build Coastguard Worker 657*9880d681SAndroid Build Coastguard Worker// FIXME: krait has currently the same Schedule model as A9 658*9880d681SAndroid Build Coastguard Worker// FIXME: krait has currently the same features as A9 plus VFP4 and hardware 659*9880d681SAndroid Build Coastguard Worker// division features. 660*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"krait", CortexA9Model, [ARMv7a, ProcKrait, 661*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 662*9880d681SAndroid Build Coastguard Worker FeatureMuxedUnits, 663*9880d681SAndroid Build Coastguard Worker FeatureCheckVLDnAlign, 664*9880d681SAndroid Build Coastguard Worker FeatureVMLxForwarding, 665*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 666*9880d681SAndroid Build Coastguard Worker FeatureFP16, 667*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 668*9880d681SAndroid Build Coastguard Worker FeatureVFP4, 669*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 670*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM]>; 671*9880d681SAndroid Build Coastguard Worker 672*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"swift", SwiftModel, [ARMv7a, ProcSwift, 673*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 674*9880d681SAndroid Build Coastguard Worker FeatureNEONForFP, 675*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 676*9880d681SAndroid Build Coastguard Worker FeatureVFP4, 677*9880d681SAndroid Build Coastguard Worker FeatureMP, 678*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 679*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 680*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 681*9880d681SAndroid Build Coastguard Worker FeatureAvoidMOVsShOp, 682*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 683*9880d681SAndroid Build Coastguard Worker FeatureHasVMLxHazards, 684*9880d681SAndroid Build Coastguard Worker FeatureProfUnpredicate, 685*9880d681SAndroid Build Coastguard Worker FeaturePrefISHSTBarrier, 686*9880d681SAndroid Build Coastguard Worker FeatureSlowOddRegister, 687*9880d681SAndroid Build Coastguard Worker FeatureSlowLoadDSubreg, 688*9880d681SAndroid Build Coastguard Worker FeatureSlowVGETLNi32, 689*9880d681SAndroid Build Coastguard Worker FeatureSlowVDUP32]>; 690*9880d681SAndroid Build Coastguard Worker 691*9880d681SAndroid Build Coastguard Worker// FIXME: R4 has currently the same ProcessorModel as A8. 692*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-r4", CortexA8Model, [ARMv7r, ProcR4, 693*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 694*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 695*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk]>; 696*9880d681SAndroid Build Coastguard Worker 697*9880d681SAndroid Build Coastguard Worker// FIXME: R4F has currently the same ProcessorModel as A8. 698*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-r4f", CortexA8Model, [ARMv7r, ProcR4, 699*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 700*9880d681SAndroid Build Coastguard Worker FeatureSlowFPBrcc, 701*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 702*9880d681SAndroid Build Coastguard Worker FeatureVFP3, 703*9880d681SAndroid Build Coastguard Worker FeatureD16, 704*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 705*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk]>; 706*9880d681SAndroid Build Coastguard Worker 707*9880d681SAndroid Build Coastguard Worker// FIXME: R5 has currently the same ProcessorModel as A8. 708*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-r5", CortexA8Model, [ARMv7r, ProcR5, 709*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 710*9880d681SAndroid Build Coastguard Worker FeatureVFP3, 711*9880d681SAndroid Build Coastguard Worker FeatureD16, 712*9880d681SAndroid Build Coastguard Worker FeatureSlowFPBrcc, 713*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 714*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 715*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 716*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk]>; 717*9880d681SAndroid Build Coastguard Worker 718*9880d681SAndroid Build Coastguard Worker// FIXME: R7 has currently the same ProcessorModel as A8 and is modelled as R5. 719*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-r7", CortexA8Model, [ARMv7r, ProcR7, 720*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 721*9880d681SAndroid Build Coastguard Worker FeatureVFP3, 722*9880d681SAndroid Build Coastguard Worker FeatureD16, 723*9880d681SAndroid Build Coastguard Worker FeatureFP16, 724*9880d681SAndroid Build Coastguard Worker FeatureMP, 725*9880d681SAndroid Build Coastguard Worker FeatureSlowFPBrcc, 726*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 727*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 728*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 729*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk]>; 730*9880d681SAndroid Build Coastguard Worker 731*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cortex-r8", CortexA8Model, [ARMv7r, 732*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 733*9880d681SAndroid Build Coastguard Worker FeatureVFP3, 734*9880d681SAndroid Build Coastguard Worker FeatureD16, 735*9880d681SAndroid Build Coastguard Worker FeatureFP16, 736*9880d681SAndroid Build Coastguard Worker FeatureMP, 737*9880d681SAndroid Build Coastguard Worker FeatureSlowFPBrcc, 738*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 739*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 740*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 741*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk]>; 742*9880d681SAndroid Build Coastguard Worker 743*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-m3", [ARMv7m, ProcM3]>; 744*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"sc300", [ARMv7m, ProcM3]>; 745*9880d681SAndroid Build Coastguard Worker 746*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-m4", [ARMv7em, 747*9880d681SAndroid Build Coastguard Worker FeatureVFP4, 748*9880d681SAndroid Build Coastguard Worker FeatureVFPOnlySP, 749*9880d681SAndroid Build Coastguard Worker FeatureD16]>; 750*9880d681SAndroid Build Coastguard Worker 751*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-m7", [ARMv7em, 752*9880d681SAndroid Build Coastguard Worker FeatureFPARMv8, 753*9880d681SAndroid Build Coastguard Worker FeatureD16]>; 754*9880d681SAndroid Build Coastguard Worker 755*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-a32", [ARMv8a, 756*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 757*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 758*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 759*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 760*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 761*9880d681SAndroid Build Coastguard Worker 762*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-a35", [ARMv8a, ProcA35, 763*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 764*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 765*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 766*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 767*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 768*9880d681SAndroid Build Coastguard Worker 769*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-a53", [ARMv8a, ProcA53, 770*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 771*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 772*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 773*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 774*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 775*9880d681SAndroid Build Coastguard Worker 776*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-a57", [ARMv8a, ProcA57, 777*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 778*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 779*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 780*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 781*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 782*9880d681SAndroid Build Coastguard Worker 783*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-a72", [ARMv8a, ProcA72, 784*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 785*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 786*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 787*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 788*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 789*9880d681SAndroid Build Coastguard Worker 790*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"cortex-a73", [ARMv8a, ProcA73, 791*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 792*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 793*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 794*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 795*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 796*9880d681SAndroid Build Coastguard Worker 797*9880d681SAndroid Build Coastguard Worker// Cyclone is very similar to swift 798*9880d681SAndroid Build Coastguard Workerdef : ProcessorModel<"cyclone", SwiftModel, [ARMv8a, ProcSwift, 799*9880d681SAndroid Build Coastguard Worker FeatureHasRetAddrStack, 800*9880d681SAndroid Build Coastguard Worker FeatureNEONForFP, 801*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 802*9880d681SAndroid Build Coastguard Worker FeatureVFP4, 803*9880d681SAndroid Build Coastguard Worker FeatureMP, 804*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 805*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 806*9880d681SAndroid Build Coastguard Worker FeatureAvoidPartialCPSR, 807*9880d681SAndroid Build Coastguard Worker FeatureAvoidMOVsShOp, 808*9880d681SAndroid Build Coastguard Worker FeatureHasSlowFPVMLx, 809*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 810*9880d681SAndroid Build Coastguard Worker FeatureZCZeroing]>; 811*9880d681SAndroid Build Coastguard Worker 812*9880d681SAndroid Build Coastguard Workerdef : ProcNoItin<"exynos-m1", [ARMv8a, ProcExynosM1, 813*9880d681SAndroid Build Coastguard Worker FeatureHWDiv, 814*9880d681SAndroid Build Coastguard Worker FeatureHWDivARM, 815*9880d681SAndroid Build Coastguard Worker FeatureT2XtPk, 816*9880d681SAndroid Build Coastguard Worker FeatureCrypto, 817*9880d681SAndroid Build Coastguard Worker FeatureCRC]>; 818*9880d681SAndroid Build Coastguard Worker 819*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 820*9880d681SAndroid Build Coastguard Worker// Register File Description 821*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 822*9880d681SAndroid Build Coastguard Worker 823*9880d681SAndroid Build Coastguard Workerinclude "ARMRegisterInfo.td" 824*9880d681SAndroid Build Coastguard Worker 825*9880d681SAndroid Build Coastguard Workerinclude "ARMCallingConv.td" 826*9880d681SAndroid Build Coastguard Worker 827*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 828*9880d681SAndroid Build Coastguard Worker// Instruction Descriptions 829*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 830*9880d681SAndroid Build Coastguard Worker 831*9880d681SAndroid Build Coastguard Workerinclude "ARMInstrInfo.td" 832*9880d681SAndroid Build Coastguard Worker 833*9880d681SAndroid Build Coastguard Workerdef ARMInstrInfo : InstrInfo; 834*9880d681SAndroid Build Coastguard Worker 835*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 836*9880d681SAndroid Build Coastguard Worker// Declare the target which we are implementing 837*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 838*9880d681SAndroid Build Coastguard Worker 839*9880d681SAndroid Build Coastguard Workerdef ARMAsmWriter : AsmWriter { 840*9880d681SAndroid Build Coastguard Worker string AsmWriterClassName = "InstPrinter"; 841*9880d681SAndroid Build Coastguard Worker int PassSubtarget = 1; 842*9880d681SAndroid Build Coastguard Worker int Variant = 0; 843*9880d681SAndroid Build Coastguard Worker bit isMCAsmWriter = 1; 844*9880d681SAndroid Build Coastguard Worker} 845*9880d681SAndroid Build Coastguard Worker 846*9880d681SAndroid Build Coastguard Workerdef ARMAsmParserVariant : AsmParserVariant { 847*9880d681SAndroid Build Coastguard Worker int Variant = 0; 848*9880d681SAndroid Build Coastguard Worker string Name = "ARM"; 849*9880d681SAndroid Build Coastguard Worker string BreakCharacters = "."; 850*9880d681SAndroid Build Coastguard Worker} 851*9880d681SAndroid Build Coastguard Worker 852*9880d681SAndroid Build Coastguard Workerdef ARM : Target { 853*9880d681SAndroid Build Coastguard Worker // Pull in Instruction Info: 854*9880d681SAndroid Build Coastguard Worker let InstructionSet = ARMInstrInfo; 855*9880d681SAndroid Build Coastguard Worker let AssemblyWriters = [ARMAsmWriter]; 856*9880d681SAndroid Build Coastguard Worker let AssemblyParserVariants = [ARMAsmParserVariant]; 857*9880d681SAndroid Build Coastguard Worker} 858