1*9880d681SAndroid Build Coastguard Worker//===-- AVR.td - Describe the AVR 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// This is the top level entry point for the AVR target. 10*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 13*9880d681SAndroid Build Coastguard Worker// Target-independent interfaces which we are implementing 14*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerinclude "llvm/Target/Target.td" 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 19*9880d681SAndroid Build Coastguard Worker// AVR Subtarget Features. 20*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker// :TODO: Implement the skip errata, see `gcc/config/avr/avr-arch.h` for details 23*9880d681SAndroid Build Coastguard Worker// :TODO: We define all devices with SRAM to have all variants of LD/ST/LDD/STD. 24*9880d681SAndroid Build Coastguard Worker// In reality, avr1 (no SRAM) has one variant each of `LD` and `ST`. 25*9880d681SAndroid Build Coastguard Worker// avr2 (with SRAM) adds the rest of the variants. 26*9880d681SAndroid Build Coastguard Worker// :TODO: s/AVRTiny/Tiny 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker// A feature set aggregates features, grouping them. We don't want to create a 30*9880d681SAndroid Build Coastguard Worker// new member in AVRSubtarget (to store a value) for each set because we do not 31*9880d681SAndroid Build Coastguard Worker// care if the set is supported, only the subfeatures inside the set. We fix 32*9880d681SAndroid Build Coastguard Worker// this by simply setting the same dummy member for all feature sets, which is 33*9880d681SAndroid Build Coastguard Worker// then ignored. 34*9880d681SAndroid Build Coastguard Workerclass FeatureSet<string name, string desc, list<SubtargetFeature> i> 35*9880d681SAndroid Build Coastguard Worker : SubtargetFeature<name, "m_FeatureSetDummy", "true", desc, i>; 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker// A family of microcontrollers, defining a set of supported features. 38*9880d681SAndroid Build Coastguard Workerclass Family<string name, list<SubtargetFeature> i> 39*9880d681SAndroid Build Coastguard Worker : FeatureSet<name, !strconcat("The device is a part of the ", 40*9880d681SAndroid Build Coastguard Worker name, " family"), i>; 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker// The device has SRAM, and supports the bare minimum of 43*9880d681SAndroid Build Coastguard Worker// SRAM-relevant instructions. 44*9880d681SAndroid Build Coastguard Worker// 45*9880d681SAndroid Build Coastguard Worker// These are: 46*9880d681SAndroid Build Coastguard Worker// LD - all 9 variants 47*9880d681SAndroid Build Coastguard Worker// ST - all 9 variants 48*9880d681SAndroid Build Coastguard Worker// LDD - two variants for Y and Z 49*9880d681SAndroid Build Coastguard Worker// STD - two variants for Y and Z 50*9880d681SAndroid Build Coastguard Worker// `LDS Rd, K` 51*9880d681SAndroid Build Coastguard Worker// `STS k, Rr` 52*9880d681SAndroid Build Coastguard Worker// `PUSH`/`POP` 53*9880d681SAndroid Build Coastguard Workerdef FeatureSRAM : SubtargetFeature<"sram", "m_hasSRAM", "true", 54*9880d681SAndroid Build Coastguard Worker "The device has random access memory">; 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker// The device supports the `JMP k` and `CALL k` instructions. 57*9880d681SAndroid Build Coastguard Workerdef FeatureJMPCALL : SubtargetFeature<"jmpcall", "m_hasJMPCALL", "true", 58*9880d681SAndroid Build Coastguard Worker "The device supports the `JMP` and " 59*9880d681SAndroid Build Coastguard Worker "`CALL` instructions">; 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker// The device supports the indirect branches `IJMP` and `ICALL`. 63*9880d681SAndroid Build Coastguard Workerdef FeatureIJMPCALL : SubtargetFeature<"ijmpcall", "m_hasIJMPCALL", 64*9880d681SAndroid Build Coastguard Worker "true", 65*9880d681SAndroid Build Coastguard Worker "The device supports `IJMP`/`ICALL`" 66*9880d681SAndroid Build Coastguard Worker "instructions">; 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker// The device supports the extended indirect branches `EIJMP` and `EICALL`. 69*9880d681SAndroid Build Coastguard Workerdef FeatureEIJMPCALL : SubtargetFeature<"eijmpcall", "m_hasEIJMPCALL", 70*9880d681SAndroid Build Coastguard Worker "true", "The device supports the " 71*9880d681SAndroid Build Coastguard Worker "`EIJMP`/`EICALL` instructions">; 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker// The device supports `ADDI Rd, K`, `SUBI Rd, K`. 74*9880d681SAndroid Build Coastguard Workerdef FeatureADDSUBIW : SubtargetFeature<"addsubiw", "m_hasADDSUBIW", 75*9880d681SAndroid Build Coastguard Worker "true", "Enable 16-bit register-immediate " 76*9880d681SAndroid Build Coastguard Worker "addition and subtraction instructions">; 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker// The device has an 8-bit stack pointer (SP) register. 79*9880d681SAndroid Build Coastguard Workerdef FeatureSmallStack : SubtargetFeature<"smallstack", "m_hasSmallStack", 80*9880d681SAndroid Build Coastguard Worker "true", "The device has an 8-bit " 81*9880d681SAndroid Build Coastguard Worker "stack pointer">; 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker// The device supports the 16-bit GPR pair MOVW instruction. 84*9880d681SAndroid Build Coastguard Workerdef FeatureMOVW : SubtargetFeature<"movw", "m_hasMOVW", "true", 85*9880d681SAndroid Build Coastguard Worker "The device supports the 16-bit MOVW " 86*9880d681SAndroid Build Coastguard Worker "instruction">; 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Worker// The device supports the `LPM` instruction, with implied destination being r0. 89*9880d681SAndroid Build Coastguard Workerdef FeatureLPM : SubtargetFeature<"lpm", "m_hasLPM", "true", 90*9880d681SAndroid Build Coastguard Worker "The device supports the `LPM` instruction">; 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker// The device supports the `LPM Rd, Z[+] instruction. 93*9880d681SAndroid Build Coastguard Workerdef FeatureLPMX : SubtargetFeature<"lpmx", "m_hasLPMX", "true", 94*9880d681SAndroid Build Coastguard Worker "The device supports the `LPM Rd, Z[+]` " 95*9880d681SAndroid Build Coastguard Worker "instruction">; 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Worker// The device supports the `ELPM` instruction. 98*9880d681SAndroid Build Coastguard Workerdef FeatureELPM : SubtargetFeature<"elpm", "m_hasELPM", "true", 99*9880d681SAndroid Build Coastguard Worker "The device supports the ELPM instruction">; 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker// The device supports the `ELPM Rd, Z[+]` instructions. 102*9880d681SAndroid Build Coastguard Workerdef FeatureELPMX : SubtargetFeature<"elpmx", "m_hasELPMX", "true", 103*9880d681SAndroid Build Coastguard Worker "The device supports the `ELPM Rd, Z[+]` " 104*9880d681SAndroid Build Coastguard Worker "instructions">; 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Worker// The device supports the `SPM` instruction. 107*9880d681SAndroid Build Coastguard Workerdef FeatureSPM : SubtargetFeature<"spm", "m_hasSPM", "true", 108*9880d681SAndroid Build Coastguard Worker "The device supports the `SPM` instruction">; 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Worker// The device supports the `SPM Z+` instruction. 111*9880d681SAndroid Build Coastguard Workerdef FeatureSPMX : SubtargetFeature<"spmx", "m_hasSPMX", "true", 112*9880d681SAndroid Build Coastguard Worker "The device supports the `SPM Z+` " 113*9880d681SAndroid Build Coastguard Worker "instruction">; 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker// The device supports the `DES k` instruction. 116*9880d681SAndroid Build Coastguard Workerdef FeatureDES : SubtargetFeature<"des", "m_hasDES", "true", 117*9880d681SAndroid Build Coastguard Worker "The device supports the `DES k` encryption " 118*9880d681SAndroid Build Coastguard Worker "instruction">; 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Worker// The device supports the Read-Write-Modify instructions 121*9880d681SAndroid Build Coastguard Worker// XCH, LAS, LAC, and LAT. 122*9880d681SAndroid Build Coastguard Workerdef FeatureRMW : SubtargetFeature<"rmw", "m_supportsRMW", "true", 123*9880d681SAndroid Build Coastguard Worker "The device supports the read-write-modify " 124*9880d681SAndroid Build Coastguard Worker "instructions: XCH, LAS, LAC, LAT">; 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker// The device supports the `[F]MUL[S][U]` family of instructions. 127*9880d681SAndroid Build Coastguard Workerdef FeatureMultiplication : SubtargetFeature<"mul", "m_supportsMultiplication", 128*9880d681SAndroid Build Coastguard Worker "true", "The device supports the " 129*9880d681SAndroid Build Coastguard Worker "multiplication instructions">; 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker// The device supports the `BREAK` instruction. 132*9880d681SAndroid Build Coastguard Workerdef FeatureBREAK : SubtargetFeature<"break", "m_hasBREAK", "true", 133*9880d681SAndroid Build Coastguard Worker "The device supports the `BREAK` debugging " 134*9880d681SAndroid Build Coastguard Worker "instruction">; 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Worker// The device has instruction encodings specific to the Tiny core. 137*9880d681SAndroid Build Coastguard Workerdef FeatureTinyEncoding : SubtargetFeature<"tinyencoding", 138*9880d681SAndroid Build Coastguard Worker "m_hasTinyEncoding", "true", 139*9880d681SAndroid Build Coastguard Worker "The device has Tiny core specific " 140*9880d681SAndroid Build Coastguard Worker "instruction encodings">; 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Workerclass ELFArch<string name> : SubtargetFeature<"", "ELFArch", 143*9880d681SAndroid Build Coastguard Worker !strconcat("ELF::",name), "">; 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Worker// ELF e_flags architecture values 146*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR1 : ELFArch<"EF_AVR_ARCH_AVR1">; 147*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR2 : ELFArch<"EF_AVR_ARCH_AVR2">; 148*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR25 : ELFArch<"EF_AVR_ARCH_AVR25">; 149*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR3 : ELFArch<"EF_AVR_ARCH_AVR3">; 150*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR31 : ELFArch<"EF_AVR_ARCH_AVR31">; 151*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR35 : ELFArch<"EF_AVR_ARCH_AVR35">; 152*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR4 : ELFArch<"EF_AVR_ARCH_AVR4">; 153*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR5 : ELFArch<"EF_AVR_ARCH_AVR5">; 154*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR51 : ELFArch<"EF_AVR_ARCH_AVR51">; 155*9880d681SAndroid Build Coastguard Workerdef ELFArchAVR6 : ELFArch<"EF_AVR_ARCH_AVR6">; 156*9880d681SAndroid Build Coastguard Workerdef ELFArchAVRTiny : ELFArch<"EF_AVR_ARCH_AVRTINY">; 157*9880d681SAndroid Build Coastguard Workerdef ELFArchXMEGA1 : ELFArch<"EF_AVR_ARCH_XMEGA1">; 158*9880d681SAndroid Build Coastguard Workerdef ELFArchXMEGA2 : ELFArch<"EF_AVR_ARCH_XMEGA2">; 159*9880d681SAndroid Build Coastguard Workerdef ELFArchXMEGA3 : ELFArch<"EF_AVR_ARCH_XMEGA3">; 160*9880d681SAndroid Build Coastguard Workerdef ELFArchXMEGA4 : ELFArch<"EF_AVR_ARCH_XMEGA4">; 161*9880d681SAndroid Build Coastguard Workerdef ELFArchXMEGA5 : ELFArch<"EF_AVR_ARCH_XMEGA5">; 162*9880d681SAndroid Build Coastguard Workerdef ELFArchXMEGA6 : ELFArch<"EF_AVR_ARCH_XMEGA6">; 163*9880d681SAndroid Build Coastguard Workerdef ELFArchXMEGA7 : ELFArch<"EF_AVR_ARCH_XMEGA7">; 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 166*9880d681SAndroid Build Coastguard Worker// AVR Families 167*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Worker// The device has at least the bare minimum that **every** single AVR 170*9880d681SAndroid Build Coastguard Worker// device should have. 171*9880d681SAndroid Build Coastguard Workerdef FamilyAVR0 : Family<"avr0", []>; 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Workerdef FamilyAVR1 : Family<"avr1", [FamilyAVR0, FeatureLPM]>; 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Workerdef FamilyAVR2 : Family<"avr2", 176*9880d681SAndroid Build Coastguard Worker [FamilyAVR1, FeatureIJMPCALL, FeatureADDSUBIW, 177*9880d681SAndroid Build Coastguard Worker FeatureSRAM]>; 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Workerdef FamilyAVR25 : Family<"avr25", 180*9880d681SAndroid Build Coastguard Worker [FamilyAVR2, FeatureMOVW, FeatureLPMX, 181*9880d681SAndroid Build Coastguard Worker FeatureSPM, FeatureBREAK]>; 182*9880d681SAndroid Build Coastguard Worker 183*9880d681SAndroid Build Coastguard Workerdef FamilyAVR3 : Family<"avr3", 184*9880d681SAndroid Build Coastguard Worker [FamilyAVR2, FeatureJMPCALL]>; 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Workerdef FamilyAVR31 : Family<"avr31", 187*9880d681SAndroid Build Coastguard Worker [FamilyAVR3, FeatureELPM]>; 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Workerdef FamilyAVR35 : Family<"avr35", 190*9880d681SAndroid Build Coastguard Worker [FamilyAVR3, FeatureMOVW, FeatureLPMX, 191*9880d681SAndroid Build Coastguard Worker FeatureSPM, FeatureBREAK]>; 192*9880d681SAndroid Build Coastguard Worker 193*9880d681SAndroid Build Coastguard Workerdef FamilyAVR4 : Family<"avr4", 194*9880d681SAndroid Build Coastguard Worker [FamilyAVR2, FeatureMultiplication, 195*9880d681SAndroid Build Coastguard Worker FeatureMOVW, FeatureLPMX, FeatureSPM, 196*9880d681SAndroid Build Coastguard Worker FeatureBREAK]>; 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Workerdef FamilyAVR5 : Family<"avr5", 199*9880d681SAndroid Build Coastguard Worker [FamilyAVR3, FeatureMultiplication, 200*9880d681SAndroid Build Coastguard Worker FeatureMOVW, FeatureLPMX, FeatureSPM, 201*9880d681SAndroid Build Coastguard Worker FeatureBREAK]>; 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workerdef FamilyAVR51 : Family<"avr51", 204*9880d681SAndroid Build Coastguard Worker [FamilyAVR5, FeatureELPM, FeatureELPMX]>; 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Workerdef FamilyAVR6 : Family<"avr6", 207*9880d681SAndroid Build Coastguard Worker [FamilyAVR51]>; 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Workerdef FamilyAVRTiny : Family<"avrtiny", 210*9880d681SAndroid Build Coastguard Worker [FamilyAVR0, FeatureBREAK, FeatureSRAM, 211*9880d681SAndroid Build Coastguard Worker FeatureTinyEncoding]>; 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Workerdef FamilyXMEGA : Family<"xmega", 214*9880d681SAndroid Build Coastguard Worker [FamilyAVR51, FeatureEIJMPCALL, FeatureSPMX, 215*9880d681SAndroid Build Coastguard Worker FeatureDES]>; 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Workerdef FamilyXMEGAU : Family<"xmegau", 218*9880d681SAndroid Build Coastguard Worker [FamilyXMEGA, FeatureRMW]>; 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerdef FeatureSetSpecial : FeatureSet<"special", 221*9880d681SAndroid Build Coastguard Worker "Enable use of the entire instruction " 222*9880d681SAndroid Build Coastguard Worker "set - used for debugging", 223*9880d681SAndroid Build Coastguard Worker [FeatureSRAM, FeatureJMPCALL, 224*9880d681SAndroid Build Coastguard Worker FeatureIJMPCALL, FeatureEIJMPCALL, 225*9880d681SAndroid Build Coastguard Worker FeatureADDSUBIW, FeatureMOVW, 226*9880d681SAndroid Build Coastguard Worker FeatureLPM, FeatureLPMX, FeatureELPM, 227*9880d681SAndroid Build Coastguard Worker FeatureELPMX, FeatureSPM, FeatureSPMX, 228*9880d681SAndroid Build Coastguard Worker FeatureDES, FeatureRMW, 229*9880d681SAndroid Build Coastguard Worker FeatureMultiplication, FeatureBREAK]>; 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 232*9880d681SAndroid Build Coastguard Worker// AVR microcontrollers supported. 233*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Workerclass Device<string Name, Family Fam, ELFArch Arch, 236*9880d681SAndroid Build Coastguard Worker list<SubtargetFeature> ExtraFeatures = []> 237*9880d681SAndroid Build Coastguard Worker : Processor<Name, NoItineraries, !listconcat([Fam,Arch],ExtraFeatures)>; 238*9880d681SAndroid Build Coastguard Worker 239*9880d681SAndroid Build Coastguard Worker// Generic MCUs 240*9880d681SAndroid Build Coastguard Worker// Note that several versions of GCC has strange ELF architecture 241*9880d681SAndroid Build Coastguard Worker// settings for backwards compatibility - see `gas/config/tc-avr.c` 242*9880d681SAndroid Build Coastguard Worker// in AVR binutils. We do not replicate this. 243*9880d681SAndroid Build Coastguard Workerdef : Device<"avr1", FamilyAVR1, ELFArchAVR1>; 244*9880d681SAndroid Build Coastguard Workerdef : Device<"avr2", FamilyAVR2, ELFArchAVR2>; 245*9880d681SAndroid Build Coastguard Workerdef : Device<"avr25", FamilyAVR25, ELFArchAVR25>; 246*9880d681SAndroid Build Coastguard Workerdef : Device<"avr3", FamilyAVR3, ELFArchAVR3>; 247*9880d681SAndroid Build Coastguard Workerdef : Device<"avr31", FamilyAVR31, ELFArchAVR31>; 248*9880d681SAndroid Build Coastguard Workerdef : Device<"avr35", FamilyAVR35, ELFArchAVR35>; 249*9880d681SAndroid Build Coastguard Workerdef : Device<"avr4", FamilyAVR4, ELFArchAVR4>; 250*9880d681SAndroid Build Coastguard Workerdef : Device<"avr5", FamilyAVR5, ELFArchAVR5>; 251*9880d681SAndroid Build Coastguard Workerdef : Device<"avr51", FamilyAVR51, ELFArchAVR51>; 252*9880d681SAndroid Build Coastguard Workerdef : Device<"avr6", FamilyAVR6, ELFArchAVR6>; 253*9880d681SAndroid Build Coastguard Workerdef : Device<"avrxmega1", FamilyXMEGA, ELFArchXMEGA1>; 254*9880d681SAndroid Build Coastguard Workerdef : Device<"avrxmega2", FamilyXMEGA, ELFArchXMEGA2>; 255*9880d681SAndroid Build Coastguard Workerdef : Device<"avrxmega3", FamilyXMEGA, ELFArchXMEGA3>; 256*9880d681SAndroid Build Coastguard Workerdef : Device<"avrxmega4", FamilyXMEGA, ELFArchXMEGA4>; 257*9880d681SAndroid Build Coastguard Workerdef : Device<"avrxmega5", FamilyXMEGA, ELFArchXMEGA5>; 258*9880d681SAndroid Build Coastguard Workerdef : Device<"avrxmega6", FamilyXMEGA, ELFArchXMEGA6>; 259*9880d681SAndroid Build Coastguard Workerdef : Device<"avrxmega7", FamilyXMEGA, ELFArchXMEGA7>; 260*9880d681SAndroid Build Coastguard Workerdef : Device<"avrtiny", FamilyAVRTiny, ELFArchAVRTiny>; 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Worker// Specific MCUs 263*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s1200", FamilyAVR0, ELFArchAVR1>; 264*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny11", FamilyAVR1, ELFArchAVR1>; 265*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny12", FamilyAVR1, ELFArchAVR1>; 266*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny15", FamilyAVR1, ELFArchAVR1>; 267*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny28", FamilyAVR1, ELFArchAVR1>; 268*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s2313", FamilyAVR2, ELFArchAVR2>; 269*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s2323", FamilyAVR2, ELFArchAVR2>; 270*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s2333", FamilyAVR2, ELFArchAVR2>; 271*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s2343", FamilyAVR2, ELFArchAVR2>; 272*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny22", FamilyAVR2, ELFArchAVR2>; 273*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny26", FamilyAVR2, ELFArchAVR2, [FeatureLPMX]>; 274*9880d681SAndroid Build Coastguard Workerdef : Device<"at86rf401", FamilyAVR2, ELFArchAVR25, 275*9880d681SAndroid Build Coastguard Worker [FeatureMOVW, FeatureLPMX]>; 276*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s4414", FamilyAVR2, ELFArchAVR2>; 277*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s4433", FamilyAVR2, ELFArchAVR2>; 278*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s4434", FamilyAVR2, ELFArchAVR2>; 279*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s8515", FamilyAVR2, ELFArchAVR2>; 280*9880d681SAndroid Build Coastguard Workerdef : Device<"at90c8534", FamilyAVR2, ELFArchAVR2>; 281*9880d681SAndroid Build Coastguard Workerdef : Device<"at90s8535", FamilyAVR2, ELFArchAVR2>; 282*9880d681SAndroid Build Coastguard Workerdef : Device<"ata5272", FamilyAVR25, ELFArchAVR25>; 283*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny13", FamilyAVR25, ELFArchAVR25>; 284*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny13a", FamilyAVR25, ELFArchAVR25>; 285*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny2313", FamilyAVR25, ELFArchAVR25>; 286*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny2313a", FamilyAVR25, ELFArchAVR25>; 287*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny24", FamilyAVR25, ELFArchAVR25>; 288*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny24a", FamilyAVR25, ELFArchAVR25>; 289*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny4313", FamilyAVR25, ELFArchAVR25>; 290*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny44", FamilyAVR25, ELFArchAVR25>; 291*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny44a", FamilyAVR25, ELFArchAVR25>; 292*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny84", FamilyAVR25, ELFArchAVR25>; 293*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny84a", FamilyAVR25, ELFArchAVR25>; 294*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny25", FamilyAVR25, ELFArchAVR25>; 295*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny45", FamilyAVR25, ELFArchAVR25>; 296*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny85", FamilyAVR25, ELFArchAVR25>; 297*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny261", FamilyAVR25, ELFArchAVR25>; 298*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny261a", FamilyAVR25, ELFArchAVR25>; 299*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny461", FamilyAVR25, ELFArchAVR25>; 300*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny461a", FamilyAVR25, ELFArchAVR25>; 301*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny861", FamilyAVR25, ELFArchAVR25>; 302*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny861a", FamilyAVR25, ELFArchAVR25>; 303*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny87", FamilyAVR25, ELFArchAVR25>; 304*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny43u", FamilyAVR25, ELFArchAVR25>; 305*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny48", FamilyAVR25, ELFArchAVR25>; 306*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny88", FamilyAVR25, ELFArchAVR25>; 307*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny828", FamilyAVR25, ELFArchAVR25>; 308*9880d681SAndroid Build Coastguard Workerdef : Device<"at43usb355", FamilyAVR3, ELFArchAVR3>; 309*9880d681SAndroid Build Coastguard Workerdef : Device<"at76c711", FamilyAVR3, ELFArchAVR3>; 310*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega103", FamilyAVR31, ELFArchAVR31>; 311*9880d681SAndroid Build Coastguard Workerdef : Device<"at43usb320", FamilyAVR31, ELFArchAVR31>; 312*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny167", FamilyAVR35, ELFArchAVR35>; 313*9880d681SAndroid Build Coastguard Workerdef : Device<"at90usb82", FamilyAVR35, ELFArchAVR35>; 314*9880d681SAndroid Build Coastguard Workerdef : Device<"at90usb162", FamilyAVR35, ELFArchAVR35>; 315*9880d681SAndroid Build Coastguard Workerdef : Device<"ata5505", FamilyAVR35, ELFArchAVR35>; 316*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega8u2", FamilyAVR35, ELFArchAVR35>; 317*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16u2", FamilyAVR35, ELFArchAVR35>; 318*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32u2", FamilyAVR35, ELFArchAVR35>; 319*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny1634", FamilyAVR35, ELFArchAVR35>; 320*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega8", FamilyAVR4, ELFArchAVR4>; // FIXME: family may be wrong 321*9880d681SAndroid Build Coastguard Workerdef : Device<"ata6289", FamilyAVR4, ELFArchAVR4>; 322*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega8a", FamilyAVR4, ELFArchAVR4>; 323*9880d681SAndroid Build Coastguard Workerdef : Device<"ata6285", FamilyAVR4, ELFArchAVR4>; 324*9880d681SAndroid Build Coastguard Workerdef : Device<"ata6286", FamilyAVR4, ELFArchAVR4>; 325*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega48", FamilyAVR4, ELFArchAVR4>; 326*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega48a", FamilyAVR4, ELFArchAVR4>; 327*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega48pa", FamilyAVR4, ELFArchAVR4>; 328*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega48p", FamilyAVR4, ELFArchAVR4>; 329*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega88", FamilyAVR4, ELFArchAVR4>; 330*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega88a", FamilyAVR4, ELFArchAVR4>; 331*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega88p", FamilyAVR4, ELFArchAVR4>; 332*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega88pa", FamilyAVR4, ELFArchAVR4>; 333*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega8515", FamilyAVR2, ELFArchAVR4, 334*9880d681SAndroid Build Coastguard Worker [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>; 335*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega8535", FamilyAVR2, ELFArchAVR4, 336*9880d681SAndroid Build Coastguard Worker [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>; 337*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega8hva", FamilyAVR4, ELFArchAVR4>; 338*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm1", FamilyAVR4, ELFArchAVR4>; 339*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm2", FamilyAVR4, ELFArchAVR4>; 340*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm2b", FamilyAVR4, ELFArchAVR4>; 341*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm3", FamilyAVR4, ELFArchAVR4>; 342*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm3b", FamilyAVR4, ELFArchAVR4>; 343*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm81", FamilyAVR4, ELFArchAVR4>; 344*9880d681SAndroid Build Coastguard Workerdef : Device<"ata5790", FamilyAVR5, ELFArchAVR5>; 345*9880d681SAndroid Build Coastguard Workerdef : Device<"ata5795", FamilyAVR5, ELFArchAVR5>; 346*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16", FamilyAVR5, ELFArchAVR5>; 347*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16a", FamilyAVR5, ELFArchAVR5>; 348*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega161", FamilyAVR3, ELFArchAVR5, 349*9880d681SAndroid Build Coastguard Worker [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>; 350*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega162", FamilyAVR5, ELFArchAVR5>; 351*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega163", FamilyAVR3, ELFArchAVR5, 352*9880d681SAndroid Build Coastguard Worker [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>; 353*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega164a", FamilyAVR5, ELFArchAVR5>; 354*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega164p", FamilyAVR5, ELFArchAVR5>; 355*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega164pa", FamilyAVR5, ELFArchAVR5>; 356*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega165", FamilyAVR5, ELFArchAVR5>; 357*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega165a", FamilyAVR5, ELFArchAVR5>; 358*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega165p", FamilyAVR5, ELFArchAVR5>; 359*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega165pa", FamilyAVR5, ELFArchAVR5>; 360*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega168", FamilyAVR5, ELFArchAVR5>; 361*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega168a", FamilyAVR5, ELFArchAVR5>; 362*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega168p", FamilyAVR5, ELFArchAVR5>; 363*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega168pa", FamilyAVR5, ELFArchAVR5>; 364*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega169", FamilyAVR5, ELFArchAVR5>; 365*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega169a", FamilyAVR5, ELFArchAVR5>; 366*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega169p", FamilyAVR5, ELFArchAVR5>; 367*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega169pa", FamilyAVR5, ELFArchAVR5>; 368*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32", FamilyAVR5, ELFArchAVR5>; 369*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32a", FamilyAVR5, ELFArchAVR5>; 370*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega323", FamilyAVR5, ELFArchAVR5>; 371*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega324a", FamilyAVR5, ELFArchAVR5>; 372*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega324p", FamilyAVR5, ELFArchAVR5>; 373*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega324pa", FamilyAVR5, ELFArchAVR5>; 374*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega325", FamilyAVR5, ELFArchAVR5>; 375*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega325a", FamilyAVR5, ELFArchAVR5>; 376*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega325p", FamilyAVR5, ELFArchAVR5>; 377*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega325pa", FamilyAVR5, ELFArchAVR5>; 378*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega3250", FamilyAVR5, ELFArchAVR5>; 379*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega3250a", FamilyAVR5, ELFArchAVR5>; 380*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega3250p", FamilyAVR5, ELFArchAVR5>; 381*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega3250pa", FamilyAVR5, ELFArchAVR5>; 382*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega328", FamilyAVR5, ELFArchAVR5>; 383*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega328p", FamilyAVR5, ELFArchAVR5>; 384*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega329", FamilyAVR5, ELFArchAVR5>; 385*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega329a", FamilyAVR5, ELFArchAVR5>; 386*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega329p", FamilyAVR5, ELFArchAVR5>; 387*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega329pa", FamilyAVR5, ELFArchAVR5>; 388*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega3290", FamilyAVR5, ELFArchAVR5>; 389*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega3290a", FamilyAVR5, ELFArchAVR5>; 390*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega3290p", FamilyAVR5, ELFArchAVR5>; 391*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega3290pa", FamilyAVR5, ELFArchAVR5>; 392*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega406", FamilyAVR5, ELFArchAVR5>; 393*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega64", FamilyAVR5, ELFArchAVR5>; 394*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega64a", FamilyAVR5, ELFArchAVR5>; 395*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega640", FamilyAVR5, ELFArchAVR5>; 396*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega644", FamilyAVR5, ELFArchAVR5>; 397*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega644a", FamilyAVR5, ELFArchAVR5>; 398*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega644p", FamilyAVR5, ELFArchAVR5>; 399*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega644pa", FamilyAVR5, ELFArchAVR5>; 400*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega645", FamilyAVR5, ELFArchAVR5>; 401*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega645a", FamilyAVR5, ELFArchAVR5>; 402*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega645p", FamilyAVR5, ELFArchAVR5>; 403*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega649", FamilyAVR5, ELFArchAVR5>; 404*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega649a", FamilyAVR5, ELFArchAVR5>; 405*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega649p", FamilyAVR5, ELFArchAVR5>; 406*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega6450", FamilyAVR5, ELFArchAVR5>; 407*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega6450a", FamilyAVR5, ELFArchAVR5>; 408*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega6450p", FamilyAVR5, ELFArchAVR5>; 409*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega6490", FamilyAVR5, ELFArchAVR5>; 410*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega6490a", FamilyAVR5, ELFArchAVR5>; 411*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega6490p", FamilyAVR5, ELFArchAVR5>; 412*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega64rfr2", FamilyAVR5, ELFArchAVR5>; 413*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega644rfr2", FamilyAVR5, ELFArchAVR5>; 414*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16hva", FamilyAVR5, ELFArchAVR5>; 415*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16hva2", FamilyAVR5, ELFArchAVR5>; 416*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16hvb", FamilyAVR5, ELFArchAVR5>; 417*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16hvbrevb", FamilyAVR5, ELFArchAVR5>; 418*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32hvb", FamilyAVR5, ELFArchAVR5>; 419*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32hvbrevb", FamilyAVR5, ELFArchAVR5>; 420*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega64hve", FamilyAVR5, ELFArchAVR5>; 421*9880d681SAndroid Build Coastguard Workerdef : Device<"at90can32", FamilyAVR5, ELFArchAVR5>; 422*9880d681SAndroid Build Coastguard Workerdef : Device<"at90can64", FamilyAVR5, ELFArchAVR5>; 423*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm161", FamilyAVR5, ELFArchAVR5>; 424*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm216", FamilyAVR5, ELFArchAVR5>; 425*9880d681SAndroid Build Coastguard Workerdef : Device<"at90pwm316", FamilyAVR5, ELFArchAVR5>; 426*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32c1", FamilyAVR5, ELFArchAVR5>; 427*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega64c1", FamilyAVR5, ELFArchAVR5>; 428*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16m1", FamilyAVR5, ELFArchAVR5>; 429*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32m1", FamilyAVR5, ELFArchAVR5>; 430*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega64m1", FamilyAVR5, ELFArchAVR5>; 431*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega16u4", FamilyAVR5, ELFArchAVR5>; 432*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32u4", FamilyAVR5, ELFArchAVR5>; 433*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega32u6", FamilyAVR5, ELFArchAVR5>; 434*9880d681SAndroid Build Coastguard Workerdef : Device<"at90usb646", FamilyAVR5, ELFArchAVR5>; 435*9880d681SAndroid Build Coastguard Workerdef : Device<"at90usb647", FamilyAVR5, ELFArchAVR5>; 436*9880d681SAndroid Build Coastguard Workerdef : Device<"at90scr100", FamilyAVR5, ELFArchAVR5>; 437*9880d681SAndroid Build Coastguard Workerdef : Device<"at94k", FamilyAVR3, ELFArchAVR5, 438*9880d681SAndroid Build Coastguard Worker [FeatureMultiplication, FeatureMOVW, FeatureLPMX]>; 439*9880d681SAndroid Build Coastguard Workerdef : Device<"m3000", FamilyAVR5, ELFArchAVR5>; 440*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega128", FamilyAVR51, ELFArchAVR51>; 441*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega128a", FamilyAVR51, ELFArchAVR51>; 442*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega1280", FamilyAVR51, ELFArchAVR51>; 443*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega1281", FamilyAVR51, ELFArchAVR51>; 444*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega1284", FamilyAVR51, ELFArchAVR51>; 445*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega1284p", FamilyAVR51, ELFArchAVR51>; 446*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega128rfa1", FamilyAVR51, ELFArchAVR51>; 447*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega128rfr2", FamilyAVR51, ELFArchAVR51>; 448*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega1284rfr2", FamilyAVR51, ELFArchAVR51>; 449*9880d681SAndroid Build Coastguard Workerdef : Device<"at90can128", FamilyAVR51, ELFArchAVR51>; 450*9880d681SAndroid Build Coastguard Workerdef : Device<"at90usb1286", FamilyAVR51, ELFArchAVR51>; 451*9880d681SAndroid Build Coastguard Workerdef : Device<"at90usb1287", FamilyAVR51, ELFArchAVR51>; 452*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega2560", FamilyAVR6, ELFArchAVR6>; 453*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega2561", FamilyAVR6, ELFArchAVR6>; 454*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega256rfr2", FamilyAVR6, ELFArchAVR6>; 455*9880d681SAndroid Build Coastguard Workerdef : Device<"atmega2564rfr2", FamilyAVR6, ELFArchAVR6>; 456*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega16a4", FamilyXMEGA, ELFArchXMEGA2>; 457*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega16a4u", FamilyXMEGAU, ELFArchXMEGA2>; 458*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega16c4", FamilyXMEGAU, ELFArchXMEGA2>; 459*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega16d4", FamilyXMEGA, ELFArchXMEGA2>; 460*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega32a4", FamilyXMEGA, ELFArchXMEGA2>; 461*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega32a4u", FamilyXMEGAU, ELFArchXMEGA2>; 462*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega32c4", FamilyXMEGAU, ELFArchXMEGA2>; 463*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega32d4", FamilyXMEGA, ELFArchXMEGA2>; 464*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega32e5", FamilyXMEGA, ELFArchXMEGA2>; 465*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega16e5", FamilyXMEGA, ELFArchXMEGA2>; 466*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega8e5", FamilyXMEGA, ELFArchXMEGA2>; 467*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega32x1", FamilyXMEGA, ELFArchXMEGA2>; 468*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64a3", FamilyXMEGA, ELFArchXMEGA4>; 469*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64a3u", FamilyXMEGAU, ELFArchXMEGA4>; 470*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64a4u", FamilyXMEGAU, ELFArchXMEGA4>; 471*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64b1", FamilyXMEGAU, ELFArchXMEGA4>; 472*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64b3", FamilyXMEGAU, ELFArchXMEGA4>; 473*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64c3", FamilyXMEGAU, ELFArchXMEGA4>; 474*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64d3", FamilyXMEGA, ELFArchXMEGA4>; 475*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64d4", FamilyXMEGA, ELFArchXMEGA4>; 476*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64a1", FamilyXMEGA, ELFArchXMEGA5>; 477*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega64a1u", FamilyXMEGAU, ELFArchXMEGA5>; 478*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128a3", FamilyXMEGA, ELFArchXMEGA6>; 479*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128a3u", FamilyXMEGAU, ELFArchXMEGA6>; 480*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128b1", FamilyXMEGAU, ELFArchXMEGA6>; 481*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128b3", FamilyXMEGAU, ELFArchXMEGA6>; 482*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128c3", FamilyXMEGAU, ELFArchXMEGA6>; 483*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128d3", FamilyXMEGA, ELFArchXMEGA6>; 484*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128d4", FamilyXMEGA, ELFArchXMEGA6>; 485*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega192a3", FamilyXMEGA, ELFArchXMEGA6>; 486*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega192a3u", FamilyXMEGAU, ELFArchXMEGA6>; 487*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega192c3", FamilyXMEGAU, ELFArchXMEGA6>; 488*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega192d3", FamilyXMEGA, ELFArchXMEGA6>; 489*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega256a3", FamilyXMEGA, ELFArchXMEGA6>; 490*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega256a3u", FamilyXMEGAU, ELFArchXMEGA6>; 491*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega256a3b", FamilyXMEGA, ELFArchXMEGA6>; 492*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega256a3bu", FamilyXMEGAU, ELFArchXMEGA6>; 493*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega256c3", FamilyXMEGAU, ELFArchXMEGA6>; 494*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega256d3", FamilyXMEGA, ELFArchXMEGA6>; 495*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega384c3", FamilyXMEGAU, ELFArchXMEGA6>; 496*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega384d3", FamilyXMEGA, ELFArchXMEGA6>; 497*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128a1", FamilyXMEGA, ELFArchXMEGA7>; 498*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128a1u", FamilyXMEGAU, ELFArchXMEGA7>; 499*9880d681SAndroid Build Coastguard Workerdef : Device<"atxmega128a4u", FamilyXMEGAU, ELFArchXMEGA7>; 500*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny4", FamilyAVRTiny, ELFArchAVRTiny>; 501*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny5", FamilyAVRTiny, ELFArchAVRTiny>; 502*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny9", FamilyAVRTiny, ELFArchAVRTiny>; 503*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny10", FamilyAVRTiny, ELFArchAVRTiny>; 504*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny20", FamilyAVRTiny, ELFArchAVRTiny>; 505*9880d681SAndroid Build Coastguard Workerdef : Device<"attiny40", FamilyAVRTiny, ELFArchAVRTiny>; 506*9880d681SAndroid Build Coastguard Worker 507*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 508*9880d681SAndroid Build Coastguard Worker// Register File Description 509*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 510*9880d681SAndroid Build Coastguard Worker 511*9880d681SAndroid Build Coastguard Workerinclude "AVRRegisterInfo.td" 512*9880d681SAndroid Build Coastguard Worker 513*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 514*9880d681SAndroid Build Coastguard Worker// Instruction Descriptions 515*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 516*9880d681SAndroid Build Coastguard Worker 517*9880d681SAndroid Build Coastguard Workerinclude "AVRInstrInfo.td" 518*9880d681SAndroid Build Coastguard Worker 519*9880d681SAndroid Build Coastguard Workerdef AVRInstrInfo : InstrInfo; 520*9880d681SAndroid Build Coastguard Worker 521*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 522*9880d681SAndroid Build Coastguard Worker// Calling Conventions 523*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 524*9880d681SAndroid Build Coastguard Worker 525*9880d681SAndroid Build Coastguard Workerinclude "AVRCallingConv.td" 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 528*9880d681SAndroid Build Coastguard Worker// Assembly Printers 529*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 530*9880d681SAndroid Build Coastguard Worker 531*9880d681SAndroid Build Coastguard Worker// def AVRAsmWriter : AsmWriter { 532*9880d681SAndroid Build Coastguard Worker// string AsmWriterClassName = "InstPrinter"; 533*9880d681SAndroid Build Coastguard Worker// bit isMCAsmWriter = 1; 534*9880d681SAndroid Build Coastguard Worker// } 535*9880d681SAndroid Build Coastguard Worker 536*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 537*9880d681SAndroid Build Coastguard Worker// Assembly Parsers 538*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 539*9880d681SAndroid Build Coastguard Worker 540*9880d681SAndroid Build Coastguard Worker// def AVRAsmParser : AsmParser { 541*9880d681SAndroid Build Coastguard Worker// let ShouldEmitMatchRegisterName = 1; 542*9880d681SAndroid Build Coastguard Worker// let ShouldEmitMatchRegisterAltName = 1; 543*9880d681SAndroid Build Coastguard Worker// } 544*9880d681SAndroid Build Coastguard Worker 545*9880d681SAndroid Build Coastguard Worker// def AVRAsmParserVariant : AsmParserVariant { 546*9880d681SAndroid Build Coastguard Worker// int Variant = 0; 547*9880d681SAndroid Build Coastguard Worker// 548*9880d681SAndroid Build Coastguard Worker// // Recognize hard coded registers. 549*9880d681SAndroid Build Coastguard Worker// string RegisterPrefix = "$"; 550*9880d681SAndroid Build Coastguard Worker// } 551*9880d681SAndroid Build Coastguard Worker 552*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 553*9880d681SAndroid Build Coastguard Worker// Target Declaration 554*9880d681SAndroid Build Coastguard Worker//===---------------------------------------------------------------------===// 555*9880d681SAndroid Build Coastguard Worker 556*9880d681SAndroid Build Coastguard Workerdef AVR : Target { 557*9880d681SAndroid Build Coastguard Worker let InstructionSet = AVRInstrInfo; 558*9880d681SAndroid Build Coastguard Worker// let AssemblyWriters = [AVRAsmWriter]; 559*9880d681SAndroid Build Coastguard Worker// 560*9880d681SAndroid Build Coastguard Worker// let AssemblyParsers = [AVRAsmParser]; 561*9880d681SAndroid Build Coastguard Worker// let AssemblyParserVariants = [AVRAsmParserVariant]; 562*9880d681SAndroid Build Coastguard Worker} 563*9880d681SAndroid Build Coastguard Worker 564