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