xref: /freebsd/contrib/llvm-project/llvm/lib/Target/AVR/AVRDevices.td (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
10b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
20b57cec5SDimitry Andric// AVR Device Definitions
30b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
40b57cec5SDimitry Andric
50b57cec5SDimitry Andric// :TODO: Implement the skip errata, see `gcc/config/avr/avr-arch.h` for details
60b57cec5SDimitry Andric// :TODO: We define all devices with SRAM to have all variants of LD/ST/LDD/STD.
70b57cec5SDimitry Andric//        In reality, avr1 (no SRAM) has one variant each of `LD` and `ST`.
80b57cec5SDimitry Andric//        avr2 (with SRAM) adds the rest of the variants.
90b57cec5SDimitry Andric
100b57cec5SDimitry Andric// A feature set aggregates features, grouping them. We don't want to create a
110b57cec5SDimitry Andric// new member in AVRSubtarget (to store a value) for each set because we do not
120b57cec5SDimitry Andric// care if the set is supported, only the subfeatures inside the set. We fix
130b57cec5SDimitry Andric// this by simply setting the same dummy member for all feature sets, which is
140b57cec5SDimitry Andric// then ignored.
150b57cec5SDimitry Andricclass FeatureSet<string name, string desc, list<SubtargetFeature> i>
16*5f757f3fSDimitry Andric    : SubtargetFeature<name, "HasFeatureSet"#NAME, "true", desc, i>;
170b57cec5SDimitry Andric
180b57cec5SDimitry Andric// A family of microcontrollers, defining a set of supported features.
190b57cec5SDimitry Andricclass Family<string name, list<SubtargetFeature> i>
20349cc55cSDimitry Andric    : FeatureSet<
21349cc55cSDimitry Andric          name, !strconcat("The device is a part of the ", name, " family"), i>;
220b57cec5SDimitry Andric
230b57cec5SDimitry Andric// The device has SRAM, and supports the bare minimum of
240b57cec5SDimitry Andric// SRAM-relevant instructions.
250b57cec5SDimitry Andric//
260b57cec5SDimitry Andric// These are:
270b57cec5SDimitry Andric// LD - all 9 variants
280b57cec5SDimitry Andric// ST - all 9 variants
290b57cec5SDimitry Andric// LDD - two variants for Y and Z
300b57cec5SDimitry Andric// STD - two variants for Y and Z
310b57cec5SDimitry Andric// `LDS Rd, K`
320b57cec5SDimitry Andric// `STS k, Rr`
330b57cec5SDimitry Andric// `PUSH`/`POP`
34*5f757f3fSDimitry Andricdef FeatureSRAM : SubtargetFeature<"sram", "HasSRAM", "true",
350b57cec5SDimitry Andric                                   "The device has random access memory">;
360b57cec5SDimitry Andric
370b57cec5SDimitry Andric// The device supports the `JMP k` and `CALL k` instructions.
38*5f757f3fSDimitry Andricdef FeatureJMPCALL : SubtargetFeature<"jmpcall", "HasJMPCALL", "true",
390b57cec5SDimitry Andric                                      "The device supports the `JMP` and "
400b57cec5SDimitry Andric                                      "`CALL` instructions">;
410b57cec5SDimitry Andric
420b57cec5SDimitry Andric// The device supports the indirect branches `IJMP` and `ICALL`.
43*5f757f3fSDimitry Andricdef FeatureIJMPCALL : SubtargetFeature<"ijmpcall", "HasSRAMIJMPCALL", "true",
440b57cec5SDimitry Andric                                       "The device supports `IJMP`/`ICALL`"
450b57cec5SDimitry Andric                                       "instructions">;
460b57cec5SDimitry Andric
470b57cec5SDimitry Andric// The device supports the extended indirect branches `EIJMP` and `EICALL`.
48*5f757f3fSDimitry Andricdef FeatureEIJMPCALL : SubtargetFeature<"eijmpcall", "HasEIJMPCALL", "true",
49349cc55cSDimitry Andric                                        "The device supports the "
500b57cec5SDimitry Andric                                        "`EIJMP`/`EICALL` instructions">;
510b57cec5SDimitry Andric
520b57cec5SDimitry Andric// The device supports `ADDI Rd, K`, `SUBI Rd, K`.
53*5f757f3fSDimitry Andricdef FeatureADDSUBIW : SubtargetFeature<"addsubiw", "HasADDSUBIW", "true",
54349cc55cSDimitry Andric                                       "Enable 16-bit register-immediate "
550b57cec5SDimitry Andric                                       "addition and subtraction instructions">;
560b57cec5SDimitry Andric
570b57cec5SDimitry Andric// The device has an 8-bit stack pointer (SP) register.
58349cc55cSDimitry Andricdef FeatureSmallStack
59*5f757f3fSDimitry Andric    : SubtargetFeature<"smallstack", "HasSmallStack", "true",
60349cc55cSDimitry Andric                       "The device has an 8-bit "
610b57cec5SDimitry Andric                       "stack pointer">;
620b57cec5SDimitry Andric
630b57cec5SDimitry Andric// The device supports the 16-bit GPR pair MOVW instruction.
64*5f757f3fSDimitry Andricdef FeatureMOVW : SubtargetFeature<"movw", "HasMOVW", "true",
650b57cec5SDimitry Andric                                   "The device supports the 16-bit MOVW "
660b57cec5SDimitry Andric                                   "instruction">;
670b57cec5SDimitry Andric
680b57cec5SDimitry Andric// The device supports the `LPM` instruction, with implied destination being r0.
69*5f757f3fSDimitry Andricdef FeatureLPM : SubtargetFeature<"lpm", "HasLPM", "true",
700b57cec5SDimitry Andric                                  "The device supports the `LPM` instruction">;
710b57cec5SDimitry Andric
720b57cec5SDimitry Andric// The device supports the `LPM Rd, Z[+] instruction.
73*5f757f3fSDimitry Andricdef FeatureLPMX : SubtargetFeature<"lpmx", "HasLPMX", "true",
740b57cec5SDimitry Andric                                   "The device supports the `LPM Rd, Z[+]` "
750b57cec5SDimitry Andric                                   "instruction">;
760b57cec5SDimitry Andric
770b57cec5SDimitry Andric// The device supports the `ELPM` instruction.
78*5f757f3fSDimitry Andricdef FeatureELPM : SubtargetFeature<"elpm", "HasELPM", "true",
790b57cec5SDimitry Andric                                   "The device supports the ELPM instruction">;
800b57cec5SDimitry Andric
810b57cec5SDimitry Andric// The device supports the `ELPM Rd, Z[+]` instructions.
82*5f757f3fSDimitry Andricdef FeatureELPMX : SubtargetFeature<"elpmx", "HasELPMX", "true",
830b57cec5SDimitry Andric                                    "The device supports the `ELPM Rd, Z[+]` "
840b57cec5SDimitry Andric                                    "instructions">;
850b57cec5SDimitry Andric
860b57cec5SDimitry Andric// The device supports the `SPM` instruction.
87*5f757f3fSDimitry Andricdef FeatureSPM : SubtargetFeature<"spm", "HasSPM", "true",
880b57cec5SDimitry Andric                                  "The device supports the `SPM` instruction">;
890b57cec5SDimitry Andric
900b57cec5SDimitry Andric// The device supports the `SPM Z+` instruction.
91*5f757f3fSDimitry Andricdef FeatureSPMX : SubtargetFeature<"spmx", "HasSPMX", "true",
920b57cec5SDimitry Andric                                   "The device supports the `SPM Z+` "
930b57cec5SDimitry Andric                                   "instruction">;
940b57cec5SDimitry Andric
950b57cec5SDimitry Andric// The device supports the `DES k` instruction.
96*5f757f3fSDimitry Andricdef FeatureDES : SubtargetFeature<"des", "HasDES", "true",
970b57cec5SDimitry Andric                                  "The device supports the `DES k` encryption "
980b57cec5SDimitry Andric                                  "instruction">;
990b57cec5SDimitry Andric
1000b57cec5SDimitry Andric// The device supports the Read-Write-Modify instructions
1010b57cec5SDimitry Andric// XCH, LAS, LAC, and LAT.
102*5f757f3fSDimitry Andricdef FeatureRMW : SubtargetFeature<"rmw", "SupportsRMW", "true",
1030b57cec5SDimitry Andric                                  "The device supports the read-write-modify "
1040b57cec5SDimitry Andric                                  "instructions: XCH, LAS, LAC, LAT">;
1050b57cec5SDimitry Andric
1060b57cec5SDimitry Andric// The device supports the `[F]MUL[S][U]` family of instructions.
107349cc55cSDimitry Andricdef FeatureMultiplication
108*5f757f3fSDimitry Andric    : SubtargetFeature<"mul", "SupportsMultiplication", "true",
109349cc55cSDimitry Andric                       "The device supports the "
1100b57cec5SDimitry Andric                       "multiplication instructions">;
1110b57cec5SDimitry Andric
1120b57cec5SDimitry Andric// The device supports the `BREAK` instruction.
113*5f757f3fSDimitry Andricdef FeatureBREAK : SubtargetFeature<"break", "HasBREAK", "true",
1140b57cec5SDimitry Andric                                    "The device supports the `BREAK` debugging "
1150b57cec5SDimitry Andric                                    "instruction">;
1160b57cec5SDimitry Andric
1170b57cec5SDimitry Andric// The device has instruction encodings specific to the Tiny core.
118349cc55cSDimitry Andricdef FeatureTinyEncoding
119*5f757f3fSDimitry Andric    : SubtargetFeature<"tinyencoding", "HasTinyEncoding", "true",
1200b57cec5SDimitry Andric                       "The device has Tiny core specific "
1210b57cec5SDimitry Andric                       "instruction encodings">;
1220b57cec5SDimitry Andric
12306c3fb27SDimitry Andric// When writing a 16-bit port or storing a 16-bit word, do the low byte first.
12406c3fb27SDimitry Andricdef FeatureLowByteFirst
125*5f757f3fSDimitry Andric    : SubtargetFeature<"lowbytefirst", "HasLowByteFirst", "true",
12606c3fb27SDimitry Andric                       "Do the low byte first when writing a 16-bit port or "
12706c3fb27SDimitry Andric                       "storing a 16-bit word">;
12806c3fb27SDimitry Andric
1295ffd83dbSDimitry Andric// The device has CPU registers mapped in data address space
130*5f757f3fSDimitry Andricdef FeatureMMR : SubtargetFeature<"memmappedregs", "HasMemMappedGPR", "true",
131349cc55cSDimitry Andric                                  "The device has CPU registers "
1325ffd83dbSDimitry Andric                                  "mapped in data address space">;
1335ffd83dbSDimitry Andric
134349cc55cSDimitry Andricclass ELFArch<string name>
135349cc55cSDimitry Andric    : SubtargetFeature<"", "ELFArch", !strconcat("ELF::", name), "">;
1360b57cec5SDimitry Andric
1370b57cec5SDimitry Andric// ELF e_flags architecture values
1380b57cec5SDimitry Andricdef ELFArchAVR1 : ELFArch<"EF_AVR_ARCH_AVR1">;
1390b57cec5SDimitry Andricdef ELFArchAVR2 : ELFArch<"EF_AVR_ARCH_AVR2">;
1400b57cec5SDimitry Andricdef ELFArchAVR25 : ELFArch<"EF_AVR_ARCH_AVR25">;
1410b57cec5SDimitry Andricdef ELFArchAVR3 : ELFArch<"EF_AVR_ARCH_AVR3">;
1420b57cec5SDimitry Andricdef ELFArchAVR31 : ELFArch<"EF_AVR_ARCH_AVR31">;
1430b57cec5SDimitry Andricdef ELFArchAVR35 : ELFArch<"EF_AVR_ARCH_AVR35">;
1440b57cec5SDimitry Andricdef ELFArchAVR4 : ELFArch<"EF_AVR_ARCH_AVR4">;
1450b57cec5SDimitry Andricdef ELFArchAVR5 : ELFArch<"EF_AVR_ARCH_AVR5">;
1460b57cec5SDimitry Andricdef ELFArchAVR51 : ELFArch<"EF_AVR_ARCH_AVR51">;
1470b57cec5SDimitry Andricdef ELFArchAVR6 : ELFArch<"EF_AVR_ARCH_AVR6">;
1480b57cec5SDimitry Andricdef ELFArchTiny : ELFArch<"EF_AVR_ARCH_AVRTINY">;
1490b57cec5SDimitry Andricdef ELFArchXMEGA1 : ELFArch<"EF_AVR_ARCH_XMEGA1">;
1500b57cec5SDimitry Andricdef ELFArchXMEGA2 : ELFArch<"EF_AVR_ARCH_XMEGA2">;
1510b57cec5SDimitry Andricdef ELFArchXMEGA3 : ELFArch<"EF_AVR_ARCH_XMEGA3">;
1520b57cec5SDimitry Andricdef ELFArchXMEGA4 : ELFArch<"EF_AVR_ARCH_XMEGA4">;
1530b57cec5SDimitry Andricdef ELFArchXMEGA5 : ELFArch<"EF_AVR_ARCH_XMEGA5">;
1540b57cec5SDimitry Andricdef ELFArchXMEGA6 : ELFArch<"EF_AVR_ARCH_XMEGA6">;
1550b57cec5SDimitry Andricdef ELFArchXMEGA7 : ELFArch<"EF_AVR_ARCH_XMEGA7">;
1560b57cec5SDimitry Andric
1570b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
1580b57cec5SDimitry Andric// AVR Families
1590b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
1600b57cec5SDimitry Andric
1610b57cec5SDimitry Andric// The device has at least the bare minimum that **every** single AVR
1620b57cec5SDimitry Andric// device should have.
1630b57cec5SDimitry Andricdef FamilyAVR0 : Family<"avr0", []>;
1640b57cec5SDimitry Andric
16506c3fb27SDimitry Andricdef FamilyAVR1 : Family<"avr1", [FamilyAVR0, FeatureLPM, FeatureMMR]>;
1660b57cec5SDimitry Andric
167349cc55cSDimitry Andricdef FamilyAVR2
168349cc55cSDimitry Andric    : Family<"avr2",
169349cc55cSDimitry Andric             [FamilyAVR1, FeatureIJMPCALL, FeatureADDSUBIW, FeatureSRAM]>;
1700b57cec5SDimitry Andric
171349cc55cSDimitry Andricdef FamilyAVR25
172349cc55cSDimitry Andric    : Family<"avr25",
173349cc55cSDimitry Andric             [FamilyAVR2, FeatureMOVW, FeatureLPMX, FeatureSPM, FeatureBREAK]>;
1740b57cec5SDimitry Andric
175349cc55cSDimitry Andricdef FamilyAVR3 : Family<"avr3", [FamilyAVR2, FeatureJMPCALL]>;
1760b57cec5SDimitry Andric
177349cc55cSDimitry Andricdef FamilyAVR31 : Family<"avr31", [FamilyAVR3, FeatureELPM]>;
1780b57cec5SDimitry Andric
179349cc55cSDimitry Andricdef FamilyAVR35
180349cc55cSDimitry Andric    : Family<"avr35",
181349cc55cSDimitry Andric             [FamilyAVR3, FeatureMOVW, FeatureLPMX, FeatureSPM, FeatureBREAK]>;
1820b57cec5SDimitry Andric
18381ad6265SDimitry Andricdef FamilyAVR4 : Family<"avr4",
18481ad6265SDimitry Andric                        [FamilyAVR2, FeatureMultiplication, FeatureMOVW,
18581ad6265SDimitry Andric                         FeatureLPMX, FeatureSPM, FeatureBREAK]>;
1860b57cec5SDimitry Andric
18781ad6265SDimitry Andricdef FamilyAVR5 : Family<"avr5",
18881ad6265SDimitry Andric                        [FamilyAVR3, FeatureMultiplication, FeatureMOVW,
18981ad6265SDimitry Andric                         FeatureLPMX, FeatureSPM, FeatureBREAK]>;
1900b57cec5SDimitry Andric
191349cc55cSDimitry Andricdef FamilyAVR51 : Family<"avr51", [FamilyAVR5, FeatureELPM, FeatureELPMX]>;
1920b57cec5SDimitry Andric
193bdd1243dSDimitry Andricdef FamilyAVR6 : Family<"avr6", [FamilyAVR51, FeatureEIJMPCALL]>;
1940b57cec5SDimitry Andric
195349cc55cSDimitry Andricdef FamilyTiny
196349cc55cSDimitry Andric    : Family<"avrtiny",
19781ad6265SDimitry Andric             [FamilyAVR0, FeatureBREAK, FeatureSRAM, FeatureTinyEncoding,
19881ad6265SDimitry Andric              FeatureSmallStack]>;
1990b57cec5SDimitry Andric
20081ad6265SDimitry Andricdef FamilyXMEGA3 : Family<"xmega3",
20106c3fb27SDimitry Andric                          [FamilyAVR0, FeatureLPM, FeatureIJMPCALL,
20281ad6265SDimitry Andric                           FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL,
20381ad6265SDimitry Andric                           FeatureMultiplication, FeatureMOVW, FeatureLPMX,
20406c3fb27SDimitry Andric                           FeatureBREAK, FeatureLowByteFirst]>;
20581ad6265SDimitry Andric
20681ad6265SDimitry Andricdef FamilyXMEGA : Family<"xmega",
20706c3fb27SDimitry Andric                         [FamilyAVR0, FeatureLPM, FeatureIJMPCALL,
20881ad6265SDimitry Andric                          FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL,
20981ad6265SDimitry Andric                          FeatureMultiplication, FeatureMOVW, FeatureLPMX,
21081ad6265SDimitry Andric                          FeatureSPM, FeatureBREAK, FeatureEIJMPCALL,
21106c3fb27SDimitry Andric                          FeatureSPMX, FeatureDES, FeatureELPM, FeatureELPMX,
21206c3fb27SDimitry Andric                          FeatureLowByteFirst]>;
2130b57cec5SDimitry Andric
214349cc55cSDimitry Andricdef FamilyXMEGAU : Family<"xmegau", [FamilyXMEGA, FeatureRMW]>;
2150b57cec5SDimitry Andric
216349cc55cSDimitry Andricdef FeatureSetSpecial
217349cc55cSDimitry Andric    : FeatureSet<"special",
2180b57cec5SDimitry Andric                 "Enable use of the entire instruction "
2190b57cec5SDimitry Andric                 "set - used for debugging",
220349cc55cSDimitry Andric                 [
221349cc55cSDimitry Andric                   FeatureSRAM, FeatureJMPCALL, FeatureIJMPCALL,
222349cc55cSDimitry Andric                   FeatureEIJMPCALL, FeatureADDSUBIW, FeatureMOVW, FeatureLPM,
223349cc55cSDimitry Andric                   FeatureLPMX, FeatureELPM, FeatureELPMX, FeatureSPM,
224349cc55cSDimitry Andric                   FeatureSPMX, FeatureDES, FeatureRMW, FeatureMultiplication,
225349cc55cSDimitry Andric                   FeatureBREAK, FeatureMMR
226349cc55cSDimitry Andric                 ]>;
2270b57cec5SDimitry Andric
2280b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
2290b57cec5SDimitry Andric// AVR microcontrollers supported.
2300b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
2310b57cec5SDimitry Andric
2320b57cec5SDimitry Andricclass Device<string Name, Family Fam, ELFArch Arch,
2330b57cec5SDimitry Andric             list<SubtargetFeature> ExtraFeatures = []>
2340b57cec5SDimitry Andric    : Processor<Name, NoItineraries, !listconcat([Fam, Arch], ExtraFeatures)>;
2350b57cec5SDimitry Andric
2360b57cec5SDimitry Andric// Generic MCUs
2370b57cec5SDimitry Andric// Note that several versions of GCC has strange ELF architecture
2380b57cec5SDimitry Andric// settings for backwards compatibility - see `gas/config/tc-avr.c`
2390b57cec5SDimitry Andric// in AVR binutils. We do not replicate this.
2400b57cec5SDimitry Andricdef : Device<"avr1", FamilyAVR1, ELFArchAVR1>;
2410b57cec5SDimitry Andricdef : Device<"avr2", FamilyAVR2, ELFArchAVR2>;
2420b57cec5SDimitry Andricdef : Device<"avr25", FamilyAVR25, ELFArchAVR25>;
2430b57cec5SDimitry Andricdef : Device<"avr3", FamilyAVR3, ELFArchAVR3>;
2440b57cec5SDimitry Andricdef : Device<"avr31", FamilyAVR31, ELFArchAVR31>;
2450b57cec5SDimitry Andricdef : Device<"avr35", FamilyAVR35, ELFArchAVR35>;
2460b57cec5SDimitry Andricdef : Device<"avr4", FamilyAVR4, ELFArchAVR4>;
2470b57cec5SDimitry Andricdef : Device<"avr5", FamilyAVR5, ELFArchAVR5>;
2480b57cec5SDimitry Andricdef : Device<"avr51", FamilyAVR51, ELFArchAVR51>;
2490b57cec5SDimitry Andricdef : Device<"avr6", FamilyAVR6, ELFArchAVR6>;
2500b57cec5SDimitry Andricdef : Device<"avrxmega1", FamilyXMEGA, ELFArchXMEGA1>;
2510b57cec5SDimitry Andricdef : Device<"avrxmega2", FamilyXMEGA, ELFArchXMEGA2>;
25281ad6265SDimitry Andricdef : Device<"avrxmega3", FamilyXMEGA3, ELFArchXMEGA3>;
2530b57cec5SDimitry Andricdef : Device<"avrxmega4", FamilyXMEGA, ELFArchXMEGA4>;
2540b57cec5SDimitry Andricdef : Device<"avrxmega5", FamilyXMEGA, ELFArchXMEGA5>;
2550b57cec5SDimitry Andricdef : Device<"avrxmega6", FamilyXMEGA, ELFArchXMEGA6>;
2560b57cec5SDimitry Andricdef : Device<"avrxmega7", FamilyXMEGA, ELFArchXMEGA7>;
2570b57cec5SDimitry Andricdef : Device<"avrtiny", FamilyTiny, ELFArchTiny>;
2580b57cec5SDimitry Andric
2590b57cec5SDimitry Andric// Specific MCUs
26081ad6265SDimitry Andric// NOTE: This list has been synchronized with gcc-avr 5.4.0 and avr-libc 2.0.0.
26181ad6265SDimitry Andricdef : Device<"at90s1200", FamilyAVR0, ELFArchAVR1, [FeatureSmallStack]>;
26281ad6265SDimitry Andricdef : Device<"attiny11", FamilyAVR1, ELFArchAVR1, [FeatureSmallStack]>;
26381ad6265SDimitry Andricdef : Device<"attiny12", FamilyAVR1, ELFArchAVR1, [FeatureSmallStack]>;
26481ad6265SDimitry Andricdef : Device<"attiny15", FamilyAVR1, ELFArchAVR1, [FeatureSmallStack]>;
26581ad6265SDimitry Andricdef : Device<"attiny28", FamilyAVR1, ELFArchAVR1, [FeatureSmallStack]>;
26681ad6265SDimitry Andricdef : Device<"at90s2313", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>;
26781ad6265SDimitry Andricdef : Device<"at90s2323", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>;
26881ad6265SDimitry Andricdef : Device<"at90s2333", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>;
26981ad6265SDimitry Andricdef : Device<"at90s2343", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>;
27081ad6265SDimitry Andricdef : Device<"attiny22", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>;
27181ad6265SDimitry Andricdef : Device<"attiny26", FamilyAVR2, ELFArchAVR2,
27281ad6265SDimitry Andric             [FeatureLPMX, FeatureSmallStack]>;
273349cc55cSDimitry Andricdef : Device<"at86rf401", FamilyAVR2, ELFArchAVR25, [FeatureMOVW, FeatureLPMX]>;
27481ad6265SDimitry Andricdef : Device<"at90s4414", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>;
27581ad6265SDimitry Andricdef : Device<"at90s4433", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>;
27681ad6265SDimitry Andricdef : Device<"at90s4434", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>;
2770b57cec5SDimitry Andricdef : Device<"at90s8515", FamilyAVR2, ELFArchAVR2>;
2780b57cec5SDimitry Andricdef : Device<"at90c8534", FamilyAVR2, ELFArchAVR2>;
2790b57cec5SDimitry Andricdef : Device<"at90s8535", FamilyAVR2, ELFArchAVR2>;
2800b57cec5SDimitry Andricdef : Device<"ata5272", FamilyAVR25, ELFArchAVR25>;
28181ad6265SDimitry Andricdef : Device<"ata6616c", FamilyAVR25, ELFArchAVR25>;
28281ad6265SDimitry Andricdef : Device<"attiny13", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
28381ad6265SDimitry Andricdef : Device<"attiny13a", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
28481ad6265SDimitry Andricdef : Device<"attiny2313", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
28581ad6265SDimitry Andricdef : Device<"attiny2313a", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
28681ad6265SDimitry Andricdef : Device<"attiny24", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
28781ad6265SDimitry Andricdef : Device<"attiny24a", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
2880b57cec5SDimitry Andricdef : Device<"attiny4313", FamilyAVR25, ELFArchAVR25>;
2890b57cec5SDimitry Andricdef : Device<"attiny44", FamilyAVR25, ELFArchAVR25>;
2900b57cec5SDimitry Andricdef : Device<"attiny44a", FamilyAVR25, ELFArchAVR25>;
2910b57cec5SDimitry Andricdef : Device<"attiny84", FamilyAVR25, ELFArchAVR25>;
2920b57cec5SDimitry Andricdef : Device<"attiny84a", FamilyAVR25, ELFArchAVR25>;
29381ad6265SDimitry Andricdef : Device<"attiny25", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
2940b57cec5SDimitry Andricdef : Device<"attiny45", FamilyAVR25, ELFArchAVR25>;
2950b57cec5SDimitry Andricdef : Device<"attiny85", FamilyAVR25, ELFArchAVR25>;
29681ad6265SDimitry Andricdef : Device<"attiny261", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
29781ad6265SDimitry Andricdef : Device<"attiny261a", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>;
298e8d8bef9SDimitry Andricdef : Device<"attiny441", FamilyAVR25, ELFArchAVR25>;
2990b57cec5SDimitry Andricdef : Device<"attiny461", FamilyAVR25, ELFArchAVR25>;
3000b57cec5SDimitry Andricdef : Device<"attiny461a", FamilyAVR25, ELFArchAVR25>;
301e8d8bef9SDimitry Andricdef : Device<"attiny841", FamilyAVR25, ELFArchAVR25>;
3020b57cec5SDimitry Andricdef : Device<"attiny861", FamilyAVR25, ELFArchAVR25>;
3030b57cec5SDimitry Andricdef : Device<"attiny861a", FamilyAVR25, ELFArchAVR25>;
3040b57cec5SDimitry Andricdef : Device<"attiny87", FamilyAVR25, ELFArchAVR25>;
3050b57cec5SDimitry Andricdef : Device<"attiny43u", FamilyAVR25, ELFArchAVR25>;
3060b57cec5SDimitry Andricdef : Device<"attiny48", FamilyAVR25, ELFArchAVR25>;
3070b57cec5SDimitry Andricdef : Device<"attiny88", FamilyAVR25, ELFArchAVR25>;
3080b57cec5SDimitry Andricdef : Device<"attiny828", FamilyAVR25, ELFArchAVR25>;
3090b57cec5SDimitry Andricdef : Device<"at43usb355", FamilyAVR3, ELFArchAVR3>;
3100b57cec5SDimitry Andricdef : Device<"at76c711", FamilyAVR3, ELFArchAVR3>;
3110b57cec5SDimitry Andricdef : Device<"atmega103", FamilyAVR31, ELFArchAVR31>;
3120b57cec5SDimitry Andricdef : Device<"at43usb320", FamilyAVR31, ELFArchAVR31>;
3130b57cec5SDimitry Andricdef : Device<"attiny167", FamilyAVR35, ELFArchAVR35>;
3140b57cec5SDimitry Andricdef : Device<"at90usb82", FamilyAVR35, ELFArchAVR35>;
3150b57cec5SDimitry Andricdef : Device<"at90usb162", FamilyAVR35, ELFArchAVR35>;
3160b57cec5SDimitry Andricdef : Device<"ata5505", FamilyAVR35, ELFArchAVR35>;
31781ad6265SDimitry Andricdef : Device<"ata6617c", FamilyAVR35, ELFArchAVR35>;
31881ad6265SDimitry Andricdef : Device<"ata664251", FamilyAVR35, ELFArchAVR35>;
3190b57cec5SDimitry Andricdef : Device<"atmega8u2", FamilyAVR35, ELFArchAVR35>;
3200b57cec5SDimitry Andricdef : Device<"atmega16u2", FamilyAVR35, ELFArchAVR35>;
3210b57cec5SDimitry Andricdef : Device<"atmega32u2", FamilyAVR35, ELFArchAVR35>;
3220b57cec5SDimitry Andricdef : Device<"attiny1634", FamilyAVR35, ELFArchAVR35>;
323e8d8bef9SDimitry Andricdef : Device<"atmega8", FamilyAVR2, ELFArchAVR4,
324e8d8bef9SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3250b57cec5SDimitry Andricdef : Device<"ata6289", FamilyAVR4, ELFArchAVR4>;
326e8d8bef9SDimitry Andricdef : Device<"atmega8a", FamilyAVR2, ELFArchAVR4,
327e8d8bef9SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3280b57cec5SDimitry Andricdef : Device<"ata6285", FamilyAVR4, ELFArchAVR4>;
3290b57cec5SDimitry Andricdef : Device<"ata6286", FamilyAVR4, ELFArchAVR4>;
33081ad6265SDimitry Andricdef : Device<"ata6612c", FamilyAVR4, ELFArchAVR4>;
3310b57cec5SDimitry Andricdef : Device<"atmega48", FamilyAVR4, ELFArchAVR4>;
3320b57cec5SDimitry Andricdef : Device<"atmega48a", FamilyAVR4, ELFArchAVR4>;
3330b57cec5SDimitry Andricdef : Device<"atmega48pa", FamilyAVR4, ELFArchAVR4>;
334e8d8bef9SDimitry Andricdef : Device<"atmega48pb", FamilyAVR4, ELFArchAVR4>;
3350b57cec5SDimitry Andricdef : Device<"atmega48p", FamilyAVR4, ELFArchAVR4>;
3360b57cec5SDimitry Andricdef : Device<"atmega88", FamilyAVR4, ELFArchAVR4>;
3370b57cec5SDimitry Andricdef : Device<"atmega88a", FamilyAVR4, ELFArchAVR4>;
3380b57cec5SDimitry Andricdef : Device<"atmega88p", FamilyAVR4, ELFArchAVR4>;
3390b57cec5SDimitry Andricdef : Device<"atmega88pa", FamilyAVR4, ELFArchAVR4>;
340e8d8bef9SDimitry Andricdef : Device<"atmega88pb", FamilyAVR4, ELFArchAVR4>;
3410b57cec5SDimitry Andricdef : Device<"atmega8515", FamilyAVR2, ELFArchAVR4,
3420b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3430b57cec5SDimitry Andricdef : Device<"atmega8535", FamilyAVR2, ELFArchAVR4,
3440b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3450b57cec5SDimitry Andricdef : Device<"atmega8hva", FamilyAVR4, ELFArchAVR4>;
3460b57cec5SDimitry Andricdef : Device<"at90pwm1", FamilyAVR4, ELFArchAVR4>;
3470b57cec5SDimitry Andricdef : Device<"at90pwm2", FamilyAVR4, ELFArchAVR4>;
3480b57cec5SDimitry Andricdef : Device<"at90pwm2b", FamilyAVR4, ELFArchAVR4>;
3490b57cec5SDimitry Andricdef : Device<"at90pwm3", FamilyAVR4, ELFArchAVR4>;
3500b57cec5SDimitry Andricdef : Device<"at90pwm3b", FamilyAVR4, ELFArchAVR4>;
3510b57cec5SDimitry Andricdef : Device<"at90pwm81", FamilyAVR4, ELFArchAVR4>;
35281ad6265SDimitry Andricdef : Device<"ata5702m322", FamilyAVR5, ELFArchAVR5>;
35381ad6265SDimitry Andricdef : Device<"ata5782", FamilyAVR5, ELFArchAVR5>;
3540b57cec5SDimitry Andricdef : Device<"ata5790", FamilyAVR5, ELFArchAVR5>;
35581ad6265SDimitry Andricdef : Device<"ata5790n", FamilyAVR5, ELFArchAVR5>;
35681ad6265SDimitry Andricdef : Device<"ata5791", FamilyAVR5, ELFArchAVR5>;
3570b57cec5SDimitry Andricdef : Device<"ata5795", FamilyAVR5, ELFArchAVR5>;
35881ad6265SDimitry Andricdef : Device<"ata5831", FamilyAVR5, ELFArchAVR5>;
35981ad6265SDimitry Andricdef : Device<"ata6613c", FamilyAVR5, ELFArchAVR5>;
36081ad6265SDimitry Andricdef : Device<"ata6614q", FamilyAVR5, ELFArchAVR5>;
36181ad6265SDimitry Andricdef : Device<"ata8210", FamilyAVR5, ELFArchAVR5>;
36281ad6265SDimitry Andricdef : Device<"ata8510", FamilyAVR5, ELFArchAVR5>;
3630b57cec5SDimitry Andricdef : Device<"atmega16", FamilyAVR5, ELFArchAVR5>;
3640b57cec5SDimitry Andricdef : Device<"atmega16a", FamilyAVR5, ELFArchAVR5>;
3650b57cec5SDimitry Andricdef : Device<"atmega161", FamilyAVR3, ELFArchAVR5,
3660b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3670b57cec5SDimitry Andricdef : Device<"atmega162", FamilyAVR5, ELFArchAVR5>;
3680b57cec5SDimitry Andricdef : Device<"atmega163", FamilyAVR3, ELFArchAVR5,
3690b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3700b57cec5SDimitry Andricdef : Device<"atmega164a", FamilyAVR5, ELFArchAVR5>;
3710b57cec5SDimitry Andricdef : Device<"atmega164p", FamilyAVR5, ELFArchAVR5>;
3720b57cec5SDimitry Andricdef : Device<"atmega164pa", FamilyAVR5, ELFArchAVR5>;
3730b57cec5SDimitry Andricdef : Device<"atmega165", FamilyAVR5, ELFArchAVR5>;
3740b57cec5SDimitry Andricdef : Device<"atmega165a", FamilyAVR5, ELFArchAVR5>;
3750b57cec5SDimitry Andricdef : Device<"atmega165p", FamilyAVR5, ELFArchAVR5>;
3760b57cec5SDimitry Andricdef : Device<"atmega165pa", FamilyAVR5, ELFArchAVR5>;
3770b57cec5SDimitry Andricdef : Device<"atmega168", FamilyAVR5, ELFArchAVR5>;
3780b57cec5SDimitry Andricdef : Device<"atmega168a", FamilyAVR5, ELFArchAVR5>;
3790b57cec5SDimitry Andricdef : Device<"atmega168p", FamilyAVR5, ELFArchAVR5>;
3800b57cec5SDimitry Andricdef : Device<"atmega168pa", FamilyAVR5, ELFArchAVR5>;
381e8d8bef9SDimitry Andricdef : Device<"atmega168pb", FamilyAVR5, ELFArchAVR5>;
3820b57cec5SDimitry Andricdef : Device<"atmega169", FamilyAVR5, ELFArchAVR5>;
3830b57cec5SDimitry Andricdef : Device<"atmega169a", FamilyAVR5, ELFArchAVR5>;
3840b57cec5SDimitry Andricdef : Device<"atmega169p", FamilyAVR5, ELFArchAVR5>;
3850b57cec5SDimitry Andricdef : Device<"atmega169pa", FamilyAVR5, ELFArchAVR5>;
3860b57cec5SDimitry Andricdef : Device<"atmega32", FamilyAVR5, ELFArchAVR5>;
3870b57cec5SDimitry Andricdef : Device<"atmega32a", FamilyAVR5, ELFArchAVR5>;
3880b57cec5SDimitry Andricdef : Device<"atmega323", FamilyAVR5, ELFArchAVR5>;
3890b57cec5SDimitry Andricdef : Device<"atmega324a", FamilyAVR5, ELFArchAVR5>;
3900b57cec5SDimitry Andricdef : Device<"atmega324p", FamilyAVR5, ELFArchAVR5>;
3910b57cec5SDimitry Andricdef : Device<"atmega324pa", FamilyAVR5, ELFArchAVR5>;
392e8d8bef9SDimitry Andricdef : Device<"atmega324pb", FamilyAVR5, ELFArchAVR5>;
3930b57cec5SDimitry Andricdef : Device<"atmega325", FamilyAVR5, ELFArchAVR5>;
3940b57cec5SDimitry Andricdef : Device<"atmega325a", FamilyAVR5, ELFArchAVR5>;
3950b57cec5SDimitry Andricdef : Device<"atmega325p", FamilyAVR5, ELFArchAVR5>;
3960b57cec5SDimitry Andricdef : Device<"atmega325pa", FamilyAVR5, ELFArchAVR5>;
3970b57cec5SDimitry Andricdef : Device<"atmega3250", FamilyAVR5, ELFArchAVR5>;
3980b57cec5SDimitry Andricdef : Device<"atmega3250a", FamilyAVR5, ELFArchAVR5>;
3990b57cec5SDimitry Andricdef : Device<"atmega3250p", FamilyAVR5, ELFArchAVR5>;
4000b57cec5SDimitry Andricdef : Device<"atmega3250pa", FamilyAVR5, ELFArchAVR5>;
4010b57cec5SDimitry Andricdef : Device<"atmega328", FamilyAVR5, ELFArchAVR5>;
4020b57cec5SDimitry Andricdef : Device<"atmega328p", FamilyAVR5, ELFArchAVR5>;
403e8d8bef9SDimitry Andricdef : Device<"atmega328pb", FamilyAVR5, ELFArchAVR5>;
4040b57cec5SDimitry Andricdef : Device<"atmega329", FamilyAVR5, ELFArchAVR5>;
4050b57cec5SDimitry Andricdef : Device<"atmega329a", FamilyAVR5, ELFArchAVR5>;
4060b57cec5SDimitry Andricdef : Device<"atmega329p", FamilyAVR5, ELFArchAVR5>;
4070b57cec5SDimitry Andricdef : Device<"atmega329pa", FamilyAVR5, ELFArchAVR5>;
4080b57cec5SDimitry Andricdef : Device<"atmega3290", FamilyAVR5, ELFArchAVR5>;
4090b57cec5SDimitry Andricdef : Device<"atmega3290a", FamilyAVR5, ELFArchAVR5>;
4100b57cec5SDimitry Andricdef : Device<"atmega3290p", FamilyAVR5, ELFArchAVR5>;
4110b57cec5SDimitry Andricdef : Device<"atmega3290pa", FamilyAVR5, ELFArchAVR5>;
4120b57cec5SDimitry Andricdef : Device<"atmega406", FamilyAVR5, ELFArchAVR5>;
4130b57cec5SDimitry Andricdef : Device<"atmega64", FamilyAVR5, ELFArchAVR5>;
4140b57cec5SDimitry Andricdef : Device<"atmega64a", FamilyAVR5, ELFArchAVR5>;
4150b57cec5SDimitry Andricdef : Device<"atmega640", FamilyAVR5, ELFArchAVR5>;
4160b57cec5SDimitry Andricdef : Device<"atmega644", FamilyAVR5, ELFArchAVR5>;
4170b57cec5SDimitry Andricdef : Device<"atmega644a", FamilyAVR5, ELFArchAVR5>;
4180b57cec5SDimitry Andricdef : Device<"atmega644p", FamilyAVR5, ELFArchAVR5>;
4190b57cec5SDimitry Andricdef : Device<"atmega644pa", FamilyAVR5, ELFArchAVR5>;
4200b57cec5SDimitry Andricdef : Device<"atmega645", FamilyAVR5, ELFArchAVR5>;
4210b57cec5SDimitry Andricdef : Device<"atmega645a", FamilyAVR5, ELFArchAVR5>;
4220b57cec5SDimitry Andricdef : Device<"atmega645p", FamilyAVR5, ELFArchAVR5>;
4230b57cec5SDimitry Andricdef : Device<"atmega649", FamilyAVR5, ELFArchAVR5>;
4240b57cec5SDimitry Andricdef : Device<"atmega649a", FamilyAVR5, ELFArchAVR5>;
4250b57cec5SDimitry Andricdef : Device<"atmega649p", FamilyAVR5, ELFArchAVR5>;
4260b57cec5SDimitry Andricdef : Device<"atmega6450", FamilyAVR5, ELFArchAVR5>;
4270b57cec5SDimitry Andricdef : Device<"atmega6450a", FamilyAVR5, ELFArchAVR5>;
4280b57cec5SDimitry Andricdef : Device<"atmega6450p", FamilyAVR5, ELFArchAVR5>;
4290b57cec5SDimitry Andricdef : Device<"atmega6490", FamilyAVR5, ELFArchAVR5>;
4300b57cec5SDimitry Andricdef : Device<"atmega6490a", FamilyAVR5, ELFArchAVR5>;
4310b57cec5SDimitry Andricdef : Device<"atmega6490p", FamilyAVR5, ELFArchAVR5>;
4320b57cec5SDimitry Andricdef : Device<"atmega64rfr2", FamilyAVR5, ELFArchAVR5>;
4330b57cec5SDimitry Andricdef : Device<"atmega644rfr2", FamilyAVR5, ELFArchAVR5>;
4340b57cec5SDimitry Andricdef : Device<"atmega16hva", FamilyAVR5, ELFArchAVR5>;
4350b57cec5SDimitry Andricdef : Device<"atmega16hva2", FamilyAVR5, ELFArchAVR5>;
4360b57cec5SDimitry Andricdef : Device<"atmega16hvb", FamilyAVR5, ELFArchAVR5>;
4370b57cec5SDimitry Andricdef : Device<"atmega16hvbrevb", FamilyAVR5, ELFArchAVR5>;
4380b57cec5SDimitry Andricdef : Device<"atmega32hvb", FamilyAVR5, ELFArchAVR5>;
4390b57cec5SDimitry Andricdef : Device<"atmega32hvbrevb", FamilyAVR5, ELFArchAVR5>;
4400b57cec5SDimitry Andricdef : Device<"atmega64hve", FamilyAVR5, ELFArchAVR5>;
44181ad6265SDimitry Andricdef : Device<"atmega64hve2", FamilyAVR5, ELFArchAVR5>;
4420b57cec5SDimitry Andricdef : Device<"at90can32", FamilyAVR5, ELFArchAVR5>;
4430b57cec5SDimitry Andricdef : Device<"at90can64", FamilyAVR5, ELFArchAVR5>;
4440b57cec5SDimitry Andricdef : Device<"at90pwm161", FamilyAVR5, ELFArchAVR5>;
4450b57cec5SDimitry Andricdef : Device<"at90pwm216", FamilyAVR5, ELFArchAVR5>;
4460b57cec5SDimitry Andricdef : Device<"at90pwm316", FamilyAVR5, ELFArchAVR5>;
4470b57cec5SDimitry Andricdef : Device<"atmega32c1", FamilyAVR5, ELFArchAVR5>;
4480b57cec5SDimitry Andricdef : Device<"atmega64c1", FamilyAVR5, ELFArchAVR5>;
4490b57cec5SDimitry Andricdef : Device<"atmega16m1", FamilyAVR5, ELFArchAVR5>;
4500b57cec5SDimitry Andricdef : Device<"atmega32m1", FamilyAVR5, ELFArchAVR5>;
4510b57cec5SDimitry Andricdef : Device<"atmega64m1", FamilyAVR5, ELFArchAVR5>;
4520b57cec5SDimitry Andricdef : Device<"atmega16u4", FamilyAVR5, ELFArchAVR5>;
4530b57cec5SDimitry Andricdef : Device<"atmega32u4", FamilyAVR5, ELFArchAVR5>;
4540b57cec5SDimitry Andricdef : Device<"atmega32u6", FamilyAVR5, ELFArchAVR5>;
4550b57cec5SDimitry Andricdef : Device<"at90usb646", FamilyAVR5, ELFArchAVR5>;
4560b57cec5SDimitry Andricdef : Device<"at90usb647", FamilyAVR5, ELFArchAVR5>;
4570b57cec5SDimitry Andricdef : Device<"at90scr100", FamilyAVR5, ELFArchAVR5>;
4580b57cec5SDimitry Andricdef : Device<"at94k", FamilyAVR3, ELFArchAVR5,
4590b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX]>;
4600b57cec5SDimitry Andricdef : Device<"m3000", FamilyAVR5, ELFArchAVR5>;
4610b57cec5SDimitry Andricdef : Device<"atmega128", FamilyAVR51, ELFArchAVR51>;
4620b57cec5SDimitry Andricdef : Device<"atmega128a", FamilyAVR51, ELFArchAVR51>;
4630b57cec5SDimitry Andricdef : Device<"atmega1280", FamilyAVR51, ELFArchAVR51>;
4640b57cec5SDimitry Andricdef : Device<"atmega1281", FamilyAVR51, ELFArchAVR51>;
4650b57cec5SDimitry Andricdef : Device<"atmega1284", FamilyAVR51, ELFArchAVR51>;
4660b57cec5SDimitry Andricdef : Device<"atmega1284p", FamilyAVR51, ELFArchAVR51>;
4670b57cec5SDimitry Andricdef : Device<"atmega128rfa1", FamilyAVR51, ELFArchAVR51>;
4680b57cec5SDimitry Andricdef : Device<"atmega128rfr2", FamilyAVR51, ELFArchAVR51>;
4690b57cec5SDimitry Andricdef : Device<"atmega1284rfr2", FamilyAVR51, ELFArchAVR51>;
4700b57cec5SDimitry Andricdef : Device<"at90can128", FamilyAVR51, ELFArchAVR51>;
4710b57cec5SDimitry Andricdef : Device<"at90usb1286", FamilyAVR51, ELFArchAVR51>;
4720b57cec5SDimitry Andricdef : Device<"at90usb1287", FamilyAVR51, ELFArchAVR51>;
4730b57cec5SDimitry Andricdef : Device<"atmega2560", FamilyAVR6, ELFArchAVR6>;
4740b57cec5SDimitry Andricdef : Device<"atmega2561", FamilyAVR6, ELFArchAVR6>;
4750b57cec5SDimitry Andricdef : Device<"atmega256rfr2", FamilyAVR6, ELFArchAVR6>;
4760b57cec5SDimitry Andricdef : Device<"atmega2564rfr2", FamilyAVR6, ELFArchAVR6>;
4770b57cec5SDimitry Andricdef : Device<"atxmega16a4", FamilyXMEGA, ELFArchXMEGA2>;
4780b57cec5SDimitry Andricdef : Device<"atxmega16a4u", FamilyXMEGAU, ELFArchXMEGA2>;
4790b57cec5SDimitry Andricdef : Device<"atxmega16c4", FamilyXMEGAU, ELFArchXMEGA2>;
4800b57cec5SDimitry Andricdef : Device<"atxmega16d4", FamilyXMEGA, ELFArchXMEGA2>;
4810b57cec5SDimitry Andricdef : Device<"atxmega32a4", FamilyXMEGA, ELFArchXMEGA2>;
4820b57cec5SDimitry Andricdef : Device<"atxmega32a4u", FamilyXMEGAU, ELFArchXMEGA2>;
48381ad6265SDimitry Andricdef : Device<"atxmega32c3", FamilyXMEGAU, ELFArchXMEGA2>;
4840b57cec5SDimitry Andricdef : Device<"atxmega32c4", FamilyXMEGAU, ELFArchXMEGA2>;
48581ad6265SDimitry Andricdef : Device<"atxmega32d3", FamilyXMEGA, ELFArchXMEGA2>;
4860b57cec5SDimitry Andricdef : Device<"atxmega32d4", FamilyXMEGA, ELFArchXMEGA2>;
487e8d8bef9SDimitry Andricdef : Device<"atxmega32e5", FamilyXMEGAU, ELFArchXMEGA2>;
488e8d8bef9SDimitry Andricdef : Device<"atxmega16e5", FamilyXMEGAU, ELFArchXMEGA2>;
489e8d8bef9SDimitry Andricdef : Device<"atxmega8e5", FamilyXMEGAU, ELFArchXMEGA2>;
4900b57cec5SDimitry Andricdef : Device<"atxmega64a3", FamilyXMEGA, ELFArchXMEGA4>;
4910b57cec5SDimitry Andricdef : Device<"atxmega64a3u", FamilyXMEGAU, ELFArchXMEGA4>;
4920b57cec5SDimitry Andricdef : Device<"atxmega64a4u", FamilyXMEGAU, ELFArchXMEGA4>;
4930b57cec5SDimitry Andricdef : Device<"atxmega64b1", FamilyXMEGAU, ELFArchXMEGA4>;
4940b57cec5SDimitry Andricdef : Device<"atxmega64b3", FamilyXMEGAU, ELFArchXMEGA4>;
4950b57cec5SDimitry Andricdef : Device<"atxmega64c3", FamilyXMEGAU, ELFArchXMEGA4>;
4960b57cec5SDimitry Andricdef : Device<"atxmega64d3", FamilyXMEGA, ELFArchXMEGA4>;
4970b57cec5SDimitry Andricdef : Device<"atxmega64d4", FamilyXMEGA, ELFArchXMEGA4>;
4980b57cec5SDimitry Andricdef : Device<"atxmega64a1", FamilyXMEGA, ELFArchXMEGA5>;
4990b57cec5SDimitry Andricdef : Device<"atxmega64a1u", FamilyXMEGAU, ELFArchXMEGA5>;
5000b57cec5SDimitry Andricdef : Device<"atxmega128a3", FamilyXMEGA, ELFArchXMEGA6>;
5010b57cec5SDimitry Andricdef : Device<"atxmega128a3u", FamilyXMEGAU, ELFArchXMEGA6>;
5020b57cec5SDimitry Andricdef : Device<"atxmega128b1", FamilyXMEGAU, ELFArchXMEGA6>;
5030b57cec5SDimitry Andricdef : Device<"atxmega128b3", FamilyXMEGAU, ELFArchXMEGA6>;
5040b57cec5SDimitry Andricdef : Device<"atxmega128c3", FamilyXMEGAU, ELFArchXMEGA6>;
5050b57cec5SDimitry Andricdef : Device<"atxmega128d3", FamilyXMEGA, ELFArchXMEGA6>;
5060b57cec5SDimitry Andricdef : Device<"atxmega128d4", FamilyXMEGA, ELFArchXMEGA6>;
5070b57cec5SDimitry Andricdef : Device<"atxmega192a3", FamilyXMEGA, ELFArchXMEGA6>;
5080b57cec5SDimitry Andricdef : Device<"atxmega192a3u", FamilyXMEGAU, ELFArchXMEGA6>;
5090b57cec5SDimitry Andricdef : Device<"atxmega192c3", FamilyXMEGAU, ELFArchXMEGA6>;
5100b57cec5SDimitry Andricdef : Device<"atxmega192d3", FamilyXMEGA, ELFArchXMEGA6>;
5110b57cec5SDimitry Andricdef : Device<"atxmega256a3", FamilyXMEGA, ELFArchXMEGA6>;
5120b57cec5SDimitry Andricdef : Device<"atxmega256a3u", FamilyXMEGAU, ELFArchXMEGA6>;
5130b57cec5SDimitry Andricdef : Device<"atxmega256a3b", FamilyXMEGA, ELFArchXMEGA6>;
5140b57cec5SDimitry Andricdef : Device<"atxmega256a3bu", FamilyXMEGAU, ELFArchXMEGA6>;
5150b57cec5SDimitry Andricdef : Device<"atxmega256c3", FamilyXMEGAU, ELFArchXMEGA6>;
5160b57cec5SDimitry Andricdef : Device<"atxmega256d3", FamilyXMEGA, ELFArchXMEGA6>;
5170b57cec5SDimitry Andricdef : Device<"atxmega384c3", FamilyXMEGAU, ELFArchXMEGA6>;
5180b57cec5SDimitry Andricdef : Device<"atxmega384d3", FamilyXMEGA, ELFArchXMEGA6>;
5190b57cec5SDimitry Andricdef : Device<"atxmega128a1", FamilyXMEGA, ELFArchXMEGA7>;
5200b57cec5SDimitry Andricdef : Device<"atxmega128a1u", FamilyXMEGAU, ELFArchXMEGA7>;
5210b57cec5SDimitry Andricdef : Device<"atxmega128a4u", FamilyXMEGAU, ELFArchXMEGA7>;
5220b57cec5SDimitry Andricdef : Device<"attiny4", FamilyTiny, ELFArchTiny>;
5230b57cec5SDimitry Andricdef : Device<"attiny5", FamilyTiny, ELFArchTiny>;
5240b57cec5SDimitry Andricdef : Device<"attiny9", FamilyTiny, ELFArchTiny>;
5250b57cec5SDimitry Andricdef : Device<"attiny10", FamilyTiny, ELFArchTiny>;
5260b57cec5SDimitry Andricdef : Device<"attiny20", FamilyTiny, ELFArchTiny>;
5270b57cec5SDimitry Andricdef : Device<"attiny40", FamilyTiny, ELFArchTiny>;
5280b57cec5SDimitry Andricdef : Device<"attiny102", FamilyTiny, ELFArchTiny>;
5290b57cec5SDimitry Andricdef : Device<"attiny104", FamilyTiny, ELFArchTiny>;
53081ad6265SDimitry Andricdef : Device<"attiny202", FamilyXMEGA3, ELFArchXMEGA3>;
53181ad6265SDimitry Andricdef : Device<"attiny402", FamilyXMEGA3, ELFArchXMEGA3>;
53281ad6265SDimitry Andricdef : Device<"attiny204", FamilyXMEGA3, ELFArchXMEGA3>;
53381ad6265SDimitry Andricdef : Device<"attiny404", FamilyXMEGA3, ELFArchXMEGA3>;
53481ad6265SDimitry Andricdef : Device<"attiny804", FamilyXMEGA3, ELFArchXMEGA3>;
53581ad6265SDimitry Andricdef : Device<"attiny1604", FamilyXMEGA3, ELFArchXMEGA3>;
53681ad6265SDimitry Andricdef : Device<"attiny406", FamilyXMEGA3, ELFArchXMEGA3>;
53781ad6265SDimitry Andricdef : Device<"attiny806", FamilyXMEGA3, ELFArchXMEGA3>;
53881ad6265SDimitry Andricdef : Device<"attiny1606", FamilyXMEGA3, ELFArchXMEGA3>;
53981ad6265SDimitry Andricdef : Device<"attiny807", FamilyXMEGA3, ELFArchXMEGA3>;
54081ad6265SDimitry Andricdef : Device<"attiny1607", FamilyXMEGA3, ELFArchXMEGA3>;
54181ad6265SDimitry Andricdef : Device<"attiny212", FamilyXMEGA3, ELFArchXMEGA3>;
54281ad6265SDimitry Andricdef : Device<"attiny412", FamilyXMEGA3, ELFArchXMEGA3>;
54381ad6265SDimitry Andricdef : Device<"attiny214", FamilyXMEGA3, ELFArchXMEGA3>;
54481ad6265SDimitry Andricdef : Device<"attiny414", FamilyXMEGA3, ELFArchXMEGA3>;
54581ad6265SDimitry Andricdef : Device<"attiny814", FamilyXMEGA3, ELFArchXMEGA3>;
54681ad6265SDimitry Andricdef : Device<"attiny1614", FamilyXMEGA3, ELFArchXMEGA3>;
54781ad6265SDimitry Andricdef : Device<"attiny416", FamilyXMEGA3, ELFArchXMEGA3>;
54881ad6265SDimitry Andricdef : Device<"attiny816", FamilyXMEGA3, ELFArchXMEGA3>;
54981ad6265SDimitry Andricdef : Device<"attiny1616", FamilyXMEGA3, ELFArchXMEGA3>;
55081ad6265SDimitry Andricdef : Device<"attiny3216", FamilyXMEGA3, ELFArchXMEGA3>;
55181ad6265SDimitry Andricdef : Device<"attiny417", FamilyXMEGA3, ELFArchXMEGA3>;
55281ad6265SDimitry Andricdef : Device<"attiny817", FamilyXMEGA3, ELFArchXMEGA3>;
55381ad6265SDimitry Andricdef : Device<"attiny1617", FamilyXMEGA3, ELFArchXMEGA3>;
55481ad6265SDimitry Andricdef : Device<"attiny3217", FamilyXMEGA3, ELFArchXMEGA3>;
55581ad6265SDimitry Andricdef : Device<"attiny1624", FamilyXMEGA3, ELFArchXMEGA3>;
55681ad6265SDimitry Andricdef : Device<"attiny1626", FamilyXMEGA3, ELFArchXMEGA3>;
55781ad6265SDimitry Andricdef : Device<"attiny1627", FamilyXMEGA3, ELFArchXMEGA3>;
55881ad6265SDimitry Andricdef : Device<"atmega808", FamilyXMEGA3, ELFArchXMEGA3>;
55981ad6265SDimitry Andricdef : Device<"atmega809", FamilyXMEGA3, ELFArchXMEGA3>;
56081ad6265SDimitry Andricdef : Device<"atmega1608", FamilyXMEGA3, ELFArchXMEGA3>;
56181ad6265SDimitry Andricdef : Device<"atmega1609", FamilyXMEGA3, ELFArchXMEGA3>;
56281ad6265SDimitry Andricdef : Device<"atmega3208", FamilyXMEGA3, ELFArchXMEGA3>;
56381ad6265SDimitry Andricdef : Device<"atmega3209", FamilyXMEGA3, ELFArchXMEGA3>;
56481ad6265SDimitry Andricdef : Device<"atmega4808", FamilyXMEGA3, ELFArchXMEGA3>;
56581ad6265SDimitry Andricdef : Device<"atmega4809", FamilyXMEGA3, ELFArchXMEGA3>;
566