xref: /aosp_15_r20/external/llvm/lib/Target/AVR/AVR.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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