xref: /freebsd/contrib/llvm-project/llvm/lib/Target/AVR/AVRDevices.td (revision e8d8bef961a50d4dc22501cde4fb9fb0be1b2532)
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
110b57cec5SDimitry Andric// A feature set aggregates features, grouping them. We don't want to create a
120b57cec5SDimitry Andric// new member in AVRSubtarget (to store a value) for each set because we do not
130b57cec5SDimitry Andric// care if the set is supported, only the subfeatures inside the set. We fix
140b57cec5SDimitry Andric// this by simply setting the same dummy member for all feature sets, which is
150b57cec5SDimitry Andric// then ignored.
160b57cec5SDimitry Andricclass FeatureSet<string name, string desc, list<SubtargetFeature> i>
170b57cec5SDimitry Andric  : SubtargetFeature<name, "m_FeatureSetDummy", "true", desc, i>;
180b57cec5SDimitry Andric
190b57cec5SDimitry Andric// A family of microcontrollers, defining a set of supported features.
200b57cec5SDimitry Andricclass Family<string name, list<SubtargetFeature> i>
210b57cec5SDimitry Andric  : FeatureSet<name, !strconcat("The device is a part of the ",
220b57cec5SDimitry Andric               name, " family"), i>;
230b57cec5SDimitry Andric
240b57cec5SDimitry Andric// The device has SRAM, and supports the bare minimum of
250b57cec5SDimitry Andric// SRAM-relevant instructions.
260b57cec5SDimitry Andric//
270b57cec5SDimitry Andric// These are:
280b57cec5SDimitry Andric// LD - all 9 variants
290b57cec5SDimitry Andric// ST - all 9 variants
300b57cec5SDimitry Andric// LDD - two variants for Y and Z
310b57cec5SDimitry Andric// STD - two variants for Y and Z
320b57cec5SDimitry Andric// `LDS Rd, K`
330b57cec5SDimitry Andric// `STS k, Rr`
340b57cec5SDimitry Andric// `PUSH`/`POP`
350b57cec5SDimitry Andricdef FeatureSRAM           : SubtargetFeature<"sram", "m_hasSRAM", "true",
360b57cec5SDimitry Andric                                  "The device has random access memory">;
370b57cec5SDimitry Andric
380b57cec5SDimitry Andric// The device supports the `JMP k` and `CALL k` instructions.
390b57cec5SDimitry Andricdef FeatureJMPCALL        : SubtargetFeature<"jmpcall", "m_hasJMPCALL", "true",
400b57cec5SDimitry Andric                                  "The device supports the `JMP` and "
410b57cec5SDimitry Andric                                  "`CALL` instructions">;
420b57cec5SDimitry Andric
430b57cec5SDimitry Andric
440b57cec5SDimitry Andric// The device supports the indirect branches `IJMP` and `ICALL`.
450b57cec5SDimitry Andricdef FeatureIJMPCALL       : SubtargetFeature<"ijmpcall", "m_hasIJMPCALL",
460b57cec5SDimitry Andric                                  "true",
470b57cec5SDimitry Andric                                  "The device supports `IJMP`/`ICALL`"
480b57cec5SDimitry Andric                                  "instructions">;
490b57cec5SDimitry Andric
500b57cec5SDimitry Andric// The device supports the extended indirect branches `EIJMP` and `EICALL`.
510b57cec5SDimitry Andricdef FeatureEIJMPCALL      : SubtargetFeature<"eijmpcall", "m_hasEIJMPCALL",
520b57cec5SDimitry Andric                                  "true", "The device supports the "
530b57cec5SDimitry Andric                                  "`EIJMP`/`EICALL` instructions">;
540b57cec5SDimitry Andric
550b57cec5SDimitry Andric// The device supports `ADDI Rd, K`, `SUBI Rd, K`.
560b57cec5SDimitry Andricdef FeatureADDSUBIW       : SubtargetFeature<"addsubiw", "m_hasADDSUBIW",
570b57cec5SDimitry Andric                                  "true", "Enable 16-bit register-immediate "
580b57cec5SDimitry Andric                                  "addition and subtraction instructions">;
590b57cec5SDimitry Andric
600b57cec5SDimitry Andric// The device has an 8-bit stack pointer (SP) register.
610b57cec5SDimitry Andricdef FeatureSmallStack     : SubtargetFeature<"smallstack", "m_hasSmallStack",
620b57cec5SDimitry Andric                                  "true", "The device has an 8-bit "
630b57cec5SDimitry Andric                                  "stack pointer">;
640b57cec5SDimitry Andric
650b57cec5SDimitry Andric// The device supports the 16-bit GPR pair MOVW instruction.
660b57cec5SDimitry Andricdef FeatureMOVW           : SubtargetFeature<"movw", "m_hasMOVW", "true",
670b57cec5SDimitry Andric                                  "The device supports the 16-bit MOVW "
680b57cec5SDimitry Andric                                  "instruction">;
690b57cec5SDimitry Andric
700b57cec5SDimitry Andric// The device supports the `LPM` instruction, with implied destination being r0.
710b57cec5SDimitry Andricdef FeatureLPM            : SubtargetFeature<"lpm", "m_hasLPM", "true",
720b57cec5SDimitry Andric                                  "The device supports the `LPM` instruction">;
730b57cec5SDimitry Andric
740b57cec5SDimitry Andric// The device supports the `LPM Rd, Z[+] instruction.
750b57cec5SDimitry Andricdef FeatureLPMX           : SubtargetFeature<"lpmx", "m_hasLPMX", "true",
760b57cec5SDimitry Andric                                  "The device supports the `LPM Rd, Z[+]` "
770b57cec5SDimitry Andric                                  "instruction">;
780b57cec5SDimitry Andric
790b57cec5SDimitry Andric// The device supports the `ELPM` instruction.
800b57cec5SDimitry Andricdef FeatureELPM           : SubtargetFeature<"elpm", "m_hasELPM", "true",
810b57cec5SDimitry Andric                                  "The device supports the ELPM instruction">;
820b57cec5SDimitry Andric
830b57cec5SDimitry Andric// The device supports the `ELPM Rd, Z[+]` instructions.
840b57cec5SDimitry Andricdef FeatureELPMX          : SubtargetFeature<"elpmx", "m_hasELPMX", "true",
850b57cec5SDimitry Andric                                  "The device supports the `ELPM Rd, Z[+]` "
860b57cec5SDimitry Andric                                  "instructions">;
870b57cec5SDimitry Andric
880b57cec5SDimitry Andric// The device supports the `SPM` instruction.
890b57cec5SDimitry Andricdef FeatureSPM            : SubtargetFeature<"spm", "m_hasSPM", "true",
900b57cec5SDimitry Andric                                  "The device supports the `SPM` instruction">;
910b57cec5SDimitry Andric
920b57cec5SDimitry Andric// The device supports the `SPM Z+` instruction.
930b57cec5SDimitry Andricdef FeatureSPMX           : SubtargetFeature<"spmx", "m_hasSPMX", "true",
940b57cec5SDimitry Andric                                  "The device supports the `SPM Z+` "
950b57cec5SDimitry Andric                                  "instruction">;
960b57cec5SDimitry Andric
970b57cec5SDimitry Andric// The device supports the `DES k` instruction.
980b57cec5SDimitry Andricdef FeatureDES            : SubtargetFeature<"des", "m_hasDES", "true",
990b57cec5SDimitry Andric                                  "The device supports the `DES k` encryption "
1000b57cec5SDimitry Andric                                  "instruction">;
1010b57cec5SDimitry Andric
1020b57cec5SDimitry Andric// The device supports the Read-Write-Modify instructions
1030b57cec5SDimitry Andric// XCH, LAS, LAC, and LAT.
1040b57cec5SDimitry Andricdef FeatureRMW            : SubtargetFeature<"rmw", "m_supportsRMW", "true",
1050b57cec5SDimitry Andric                                  "The device supports the read-write-modify "
1060b57cec5SDimitry Andric                                  "instructions: XCH, LAS, LAC, LAT">;
1070b57cec5SDimitry Andric
1080b57cec5SDimitry Andric// The device supports the `[F]MUL[S][U]` family of instructions.
1090b57cec5SDimitry Andricdef FeatureMultiplication : SubtargetFeature<"mul", "m_supportsMultiplication",
1100b57cec5SDimitry Andric                                  "true", "The device supports the "
1110b57cec5SDimitry Andric                                  "multiplication instructions">;
1120b57cec5SDimitry Andric
1130b57cec5SDimitry Andric// The device supports the `BREAK` instruction.
1140b57cec5SDimitry Andricdef FeatureBREAK          : SubtargetFeature<"break", "m_hasBREAK", "true",
1150b57cec5SDimitry Andric                                  "The device supports the `BREAK` debugging "
1160b57cec5SDimitry Andric                                  "instruction">;
1170b57cec5SDimitry Andric
1180b57cec5SDimitry Andric// The device has instruction encodings specific to the Tiny core.
1190b57cec5SDimitry Andricdef FeatureTinyEncoding   : SubtargetFeature<"tinyencoding",
1200b57cec5SDimitry Andric                                  "m_hasTinyEncoding", "true",
1210b57cec5SDimitry Andric                                  "The device has Tiny core specific "
1220b57cec5SDimitry Andric                                  "instruction encodings">;
1230b57cec5SDimitry Andric
1245ffd83dbSDimitry Andric// The device has CPU registers mapped in data address space
1255ffd83dbSDimitry Andricdef FeatureMMR : SubtargetFeature<"memmappedregs", "m_hasMemMappedGPR",
1265ffd83dbSDimitry Andric                                  "true", "The device has CPU registers "
1275ffd83dbSDimitry Andric                                  "mapped in data address space">;
1285ffd83dbSDimitry Andric
1290b57cec5SDimitry Andricclass ELFArch<string name>  : SubtargetFeature<"", "ELFArch",
1300b57cec5SDimitry Andric                                    !strconcat("ELF::",name), "">;
1310b57cec5SDimitry Andric
1320b57cec5SDimitry Andric// ELF e_flags architecture values
1330b57cec5SDimitry Andricdef ELFArchAVR1    : ELFArch<"EF_AVR_ARCH_AVR1">;
1340b57cec5SDimitry Andricdef ELFArchAVR2    : ELFArch<"EF_AVR_ARCH_AVR2">;
1350b57cec5SDimitry Andricdef ELFArchAVR25   : ELFArch<"EF_AVR_ARCH_AVR25">;
1360b57cec5SDimitry Andricdef ELFArchAVR3    : ELFArch<"EF_AVR_ARCH_AVR3">;
1370b57cec5SDimitry Andricdef ELFArchAVR31   : ELFArch<"EF_AVR_ARCH_AVR31">;
1380b57cec5SDimitry Andricdef ELFArchAVR35   : ELFArch<"EF_AVR_ARCH_AVR35">;
1390b57cec5SDimitry Andricdef ELFArchAVR4    : ELFArch<"EF_AVR_ARCH_AVR4">;
1400b57cec5SDimitry Andricdef ELFArchAVR5    : ELFArch<"EF_AVR_ARCH_AVR5">;
1410b57cec5SDimitry Andricdef ELFArchAVR51   : ELFArch<"EF_AVR_ARCH_AVR51">;
1420b57cec5SDimitry Andricdef ELFArchAVR6    : ELFArch<"EF_AVR_ARCH_AVR6">;
1430b57cec5SDimitry Andricdef ELFArchTiny    : ELFArch<"EF_AVR_ARCH_AVRTINY">;
1440b57cec5SDimitry Andricdef ELFArchXMEGA1  : ELFArch<"EF_AVR_ARCH_XMEGA1">;
1450b57cec5SDimitry Andricdef ELFArchXMEGA2  : ELFArch<"EF_AVR_ARCH_XMEGA2">;
1460b57cec5SDimitry Andricdef ELFArchXMEGA3  : ELFArch<"EF_AVR_ARCH_XMEGA3">;
1470b57cec5SDimitry Andricdef ELFArchXMEGA4  : ELFArch<"EF_AVR_ARCH_XMEGA4">;
1480b57cec5SDimitry Andricdef ELFArchXMEGA5  : ELFArch<"EF_AVR_ARCH_XMEGA5">;
1490b57cec5SDimitry Andricdef ELFArchXMEGA6  : ELFArch<"EF_AVR_ARCH_XMEGA6">;
1500b57cec5SDimitry Andricdef ELFArchXMEGA7  : ELFArch<"EF_AVR_ARCH_XMEGA7">;
1510b57cec5SDimitry Andric
1520b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
1530b57cec5SDimitry Andric// AVR Families
1540b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
1550b57cec5SDimitry Andric
1560b57cec5SDimitry Andric// The device has at least the bare minimum that **every** single AVR
1570b57cec5SDimitry Andric// device should have.
1580b57cec5SDimitry Andricdef FamilyAVR0           : Family<"avr0", []>;
1590b57cec5SDimitry Andric
1605ffd83dbSDimitry Andricdef FamilyAVR1           : Family<"avr1", [FamilyAVR0, FeatureLPM, FeatureMMR]>;
1610b57cec5SDimitry Andric
1620b57cec5SDimitry Andricdef FamilyAVR2           : Family<"avr2",
1630b57cec5SDimitry Andric                                 [FamilyAVR1, FeatureIJMPCALL, FeatureADDSUBIW,
1640b57cec5SDimitry Andric                                  FeatureSRAM]>;
1650b57cec5SDimitry Andric
1660b57cec5SDimitry Andricdef FamilyAVR25          : Family<"avr25",
1670b57cec5SDimitry Andric                                 [FamilyAVR2, FeatureMOVW, FeatureLPMX,
1680b57cec5SDimitry Andric                                  FeatureSPM, FeatureBREAK]>;
1690b57cec5SDimitry Andric
1700b57cec5SDimitry Andricdef FamilyAVR3           : Family<"avr3",
1710b57cec5SDimitry Andric                                 [FamilyAVR2, FeatureJMPCALL]>;
1720b57cec5SDimitry Andric
1730b57cec5SDimitry Andricdef FamilyAVR31          : Family<"avr31",
1740b57cec5SDimitry Andric                                 [FamilyAVR3, FeatureELPM]>;
1750b57cec5SDimitry Andric
1760b57cec5SDimitry Andricdef FamilyAVR35          : Family<"avr35",
1770b57cec5SDimitry Andric                                 [FamilyAVR3, FeatureMOVW, FeatureLPMX,
1780b57cec5SDimitry Andric                                  FeatureSPM, FeatureBREAK]>;
1790b57cec5SDimitry Andric
1800b57cec5SDimitry Andricdef FamilyAVR4           : Family<"avr4",
1810b57cec5SDimitry Andric                                 [FamilyAVR2, FeatureMultiplication,
1820b57cec5SDimitry Andric                                  FeatureMOVW, FeatureLPMX, FeatureSPM,
1830b57cec5SDimitry Andric                                  FeatureBREAK]>;
1840b57cec5SDimitry Andric
1850b57cec5SDimitry Andricdef FamilyAVR5           : Family<"avr5",
1860b57cec5SDimitry Andric                                 [FamilyAVR3, FeatureMultiplication,
1870b57cec5SDimitry Andric                                  FeatureMOVW, FeatureLPMX, FeatureSPM,
1880b57cec5SDimitry Andric                                  FeatureBREAK]>;
1890b57cec5SDimitry Andric
1900b57cec5SDimitry Andricdef FamilyAVR51          : Family<"avr51",
1910b57cec5SDimitry Andric                                 [FamilyAVR5, FeatureELPM, FeatureELPMX]>;
1920b57cec5SDimitry Andric
1930b57cec5SDimitry Andricdef FamilyAVR6           : Family<"avr6",
1940b57cec5SDimitry Andric                                 [FamilyAVR51]>;
1950b57cec5SDimitry Andric
1960b57cec5SDimitry Andricdef FamilyTiny           : Family<"avrtiny",
1970b57cec5SDimitry Andric                                 [FamilyAVR0, FeatureBREAK, FeatureSRAM,
198*e8d8bef9SDimitry Andric                                  FeatureTinyEncoding]>;
1990b57cec5SDimitry Andric
2000b57cec5SDimitry Andricdef FamilyXMEGA          : Family<"xmega",
2015ffd83dbSDimitry Andric                                 [FamilyAVR0, FeatureLPM, FeatureIJMPCALL, FeatureADDSUBIW,
2025ffd83dbSDimitry Andric                                  FeatureSRAM, FeatureJMPCALL, FeatureMultiplication,
2035ffd83dbSDimitry Andric                                  FeatureMOVW, FeatureLPMX, FeatureSPM,
2045ffd83dbSDimitry Andric                                  FeatureBREAK, FeatureEIJMPCALL, FeatureSPMX,
2055ffd83dbSDimitry Andric                                  FeatureDES, FeatureELPM, FeatureELPMX]>;
2060b57cec5SDimitry Andric
2070b57cec5SDimitry Andricdef FamilyXMEGAU         : Family<"xmegau",
2080b57cec5SDimitry Andric                                  [FamilyXMEGA, FeatureRMW]>;
2090b57cec5SDimitry Andric
2100b57cec5SDimitry Andricdef FeatureSetSpecial    : FeatureSet<"special",
2110b57cec5SDimitry Andric                                      "Enable use of the entire instruction "
2120b57cec5SDimitry Andric                                      "set - used for debugging",
2130b57cec5SDimitry Andric                                      [FeatureSRAM, FeatureJMPCALL,
2140b57cec5SDimitry Andric                                       FeatureIJMPCALL, FeatureEIJMPCALL,
2150b57cec5SDimitry Andric                                       FeatureADDSUBIW, FeatureMOVW,
2160b57cec5SDimitry Andric                                       FeatureLPM, FeatureLPMX, FeatureELPM,
2170b57cec5SDimitry Andric                                       FeatureELPMX, FeatureSPM, FeatureSPMX,
2180b57cec5SDimitry Andric                                       FeatureDES, FeatureRMW,
2195ffd83dbSDimitry Andric                                       FeatureMultiplication, FeatureBREAK, FeatureMMR]>;
2200b57cec5SDimitry Andric
2210b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
2220b57cec5SDimitry Andric// AVR microcontrollers supported.
2230b57cec5SDimitry Andric//===---------------------------------------------------------------------===//
2240b57cec5SDimitry Andric
2250b57cec5SDimitry Andricclass Device<string Name, Family Fam, ELFArch Arch,
2260b57cec5SDimitry Andric             list<SubtargetFeature> ExtraFeatures = []>
2270b57cec5SDimitry Andric  : Processor<Name, NoItineraries, !listconcat([Fam,Arch],ExtraFeatures)>;
2280b57cec5SDimitry Andric
2290b57cec5SDimitry Andric// Generic MCUs
2300b57cec5SDimitry Andric// Note that several versions of GCC has strange ELF architecture
2310b57cec5SDimitry Andric// settings for backwards compatibility - see `gas/config/tc-avr.c`
2320b57cec5SDimitry Andric// in AVR binutils. We do not replicate this.
2330b57cec5SDimitry Andricdef : Device<"avr1",      FamilyAVR1,    ELFArchAVR1>;
2340b57cec5SDimitry Andricdef : Device<"avr2",      FamilyAVR2,    ELFArchAVR2>;
2350b57cec5SDimitry Andricdef : Device<"avr25",     FamilyAVR25,   ELFArchAVR25>;
2360b57cec5SDimitry Andricdef : Device<"avr3",      FamilyAVR3,    ELFArchAVR3>;
2370b57cec5SDimitry Andricdef : Device<"avr31",     FamilyAVR31,   ELFArchAVR31>;
2380b57cec5SDimitry Andricdef : Device<"avr35",     FamilyAVR35,   ELFArchAVR35>;
2390b57cec5SDimitry Andricdef : Device<"avr4",      FamilyAVR4,    ELFArchAVR4>;
2400b57cec5SDimitry Andricdef : Device<"avr5",      FamilyAVR5,    ELFArchAVR5>;
2410b57cec5SDimitry Andricdef : Device<"avr51",     FamilyAVR51,   ELFArchAVR51>;
2420b57cec5SDimitry Andricdef : Device<"avr6",      FamilyAVR6,    ELFArchAVR6>;
2430b57cec5SDimitry Andricdef : Device<"avrxmega1", FamilyXMEGA,   ELFArchXMEGA1>;
2440b57cec5SDimitry Andricdef : Device<"avrxmega2", FamilyXMEGA,   ELFArchXMEGA2>;
2450b57cec5SDimitry Andricdef : Device<"avrxmega3", FamilyXMEGA,   ELFArchXMEGA3>;
2460b57cec5SDimitry Andricdef : Device<"avrxmega4", FamilyXMEGA,   ELFArchXMEGA4>;
2470b57cec5SDimitry Andricdef : Device<"avrxmega5", FamilyXMEGA,   ELFArchXMEGA5>;
2480b57cec5SDimitry Andricdef : Device<"avrxmega6", FamilyXMEGA,   ELFArchXMEGA6>;
2490b57cec5SDimitry Andricdef : Device<"avrxmega7", FamilyXMEGA,   ELFArchXMEGA7>;
2500b57cec5SDimitry Andricdef : Device<"avrtiny",   FamilyTiny,    ELFArchTiny>;
2510b57cec5SDimitry Andric
2520b57cec5SDimitry Andric// Specific MCUs
2530b57cec5SDimitry Andricdef : Device<"at90s1200",          FamilyAVR0, ELFArchAVR1>;
2540b57cec5SDimitry Andricdef : Device<"attiny11",           FamilyAVR1, ELFArchAVR1>;
2550b57cec5SDimitry Andricdef : Device<"attiny12",           FamilyAVR1, ELFArchAVR1>;
2560b57cec5SDimitry Andricdef : Device<"attiny15",           FamilyAVR1, ELFArchAVR1>;
2570b57cec5SDimitry Andricdef : Device<"attiny28",           FamilyAVR1, ELFArchAVR1>;
2580b57cec5SDimitry Andricdef : Device<"at90s2313",          FamilyAVR2, ELFArchAVR2>;
2590b57cec5SDimitry Andricdef : Device<"at90s2323",          FamilyAVR2, ELFArchAVR2>;
2600b57cec5SDimitry Andricdef : Device<"at90s2333",          FamilyAVR2, ELFArchAVR2>;
2610b57cec5SDimitry Andricdef : Device<"at90s2343",          FamilyAVR2, ELFArchAVR2>;
2620b57cec5SDimitry Andricdef : Device<"attiny22",           FamilyAVR2, ELFArchAVR2>;
2630b57cec5SDimitry Andricdef : Device<"attiny26",           FamilyAVR2, ELFArchAVR2, [FeatureLPMX]>;
2640b57cec5SDimitry Andricdef : Device<"at86rf401",          FamilyAVR2, ELFArchAVR25,
2650b57cec5SDimitry Andric             [FeatureMOVW, FeatureLPMX]>;
2660b57cec5SDimitry Andricdef : Device<"at90s4414",          FamilyAVR2, ELFArchAVR2>;
2670b57cec5SDimitry Andricdef : Device<"at90s4433",          FamilyAVR2, ELFArchAVR2>;
2680b57cec5SDimitry Andricdef : Device<"at90s4434",          FamilyAVR2, ELFArchAVR2>;
2690b57cec5SDimitry Andricdef : Device<"at90s8515",          FamilyAVR2, ELFArchAVR2>;
2700b57cec5SDimitry Andricdef : Device<"at90c8534",          FamilyAVR2, ELFArchAVR2>;
2710b57cec5SDimitry Andricdef : Device<"at90s8535",          FamilyAVR2, ELFArchAVR2>;
2720b57cec5SDimitry Andricdef : Device<"ata5272",            FamilyAVR25, ELFArchAVR25>;
2730b57cec5SDimitry Andricdef : Device<"attiny13",           FamilyAVR25, ELFArchAVR25>;
2740b57cec5SDimitry Andricdef : Device<"attiny13a",          FamilyAVR25, ELFArchAVR25>;
2750b57cec5SDimitry Andricdef : Device<"attiny2313",         FamilyAVR25, ELFArchAVR25>;
2760b57cec5SDimitry Andricdef : Device<"attiny2313a",        FamilyAVR25, ELFArchAVR25>;
2770b57cec5SDimitry Andricdef : Device<"attiny24",           FamilyAVR25, ELFArchAVR25>;
2780b57cec5SDimitry Andricdef : Device<"attiny24a",          FamilyAVR25, ELFArchAVR25>;
2790b57cec5SDimitry Andricdef : Device<"attiny4313",         FamilyAVR25, ELFArchAVR25>;
2800b57cec5SDimitry Andricdef : Device<"attiny44",           FamilyAVR25, ELFArchAVR25>;
2810b57cec5SDimitry Andricdef : Device<"attiny44a",          FamilyAVR25, ELFArchAVR25>;
2820b57cec5SDimitry Andricdef : Device<"attiny84",           FamilyAVR25, ELFArchAVR25>;
2830b57cec5SDimitry Andricdef : Device<"attiny84a",          FamilyAVR25, ELFArchAVR25>;
2840b57cec5SDimitry Andricdef : Device<"attiny25",           FamilyAVR25, ELFArchAVR25>;
2850b57cec5SDimitry Andricdef : Device<"attiny45",           FamilyAVR25, ELFArchAVR25>;
2860b57cec5SDimitry Andricdef : Device<"attiny85",           FamilyAVR25, ELFArchAVR25>;
2870b57cec5SDimitry Andricdef : Device<"attiny261",          FamilyAVR25, ELFArchAVR25>;
2880b57cec5SDimitry Andricdef : Device<"attiny261a",         FamilyAVR25, ELFArchAVR25>;
289*e8d8bef9SDimitry Andricdef : Device<"attiny441",          FamilyAVR25, ELFArchAVR25>;
2900b57cec5SDimitry Andricdef : Device<"attiny461",          FamilyAVR25, ELFArchAVR25>;
2910b57cec5SDimitry Andricdef : Device<"attiny461a",         FamilyAVR25, ELFArchAVR25>;
292*e8d8bef9SDimitry Andricdef : Device<"attiny841",          FamilyAVR25, ELFArchAVR25>;
2930b57cec5SDimitry Andricdef : Device<"attiny861",          FamilyAVR25, ELFArchAVR25>;
2940b57cec5SDimitry Andricdef : Device<"attiny861a",         FamilyAVR25, ELFArchAVR25>;
2950b57cec5SDimitry Andricdef : Device<"attiny87",           FamilyAVR25, ELFArchAVR25>;
2960b57cec5SDimitry Andricdef : Device<"attiny43u",          FamilyAVR25, ELFArchAVR25>;
2970b57cec5SDimitry Andricdef : Device<"attiny48",           FamilyAVR25, ELFArchAVR25>;
2980b57cec5SDimitry Andricdef : Device<"attiny88",           FamilyAVR25, ELFArchAVR25>;
2990b57cec5SDimitry Andricdef : Device<"attiny828",          FamilyAVR25, ELFArchAVR25>;
3000b57cec5SDimitry Andricdef : Device<"at43usb355",         FamilyAVR3,  ELFArchAVR3>;
3010b57cec5SDimitry Andricdef : Device<"at76c711",           FamilyAVR3,  ELFArchAVR3>;
3020b57cec5SDimitry Andricdef : Device<"atmega103",          FamilyAVR31, ELFArchAVR31>;
3030b57cec5SDimitry Andricdef : Device<"at43usb320",         FamilyAVR31, ELFArchAVR31>;
3040b57cec5SDimitry Andricdef : Device<"attiny167",          FamilyAVR35, ELFArchAVR35>;
3050b57cec5SDimitry Andricdef : Device<"at90usb82",          FamilyAVR35, ELFArchAVR35>;
3060b57cec5SDimitry Andricdef : Device<"at90usb162",         FamilyAVR35, ELFArchAVR35>;
3070b57cec5SDimitry Andricdef : Device<"ata5505",            FamilyAVR35, ELFArchAVR35>;
3080b57cec5SDimitry Andricdef : Device<"atmega8u2",          FamilyAVR35, ELFArchAVR35>;
3090b57cec5SDimitry Andricdef : Device<"atmega16u2",         FamilyAVR35, ELFArchAVR35>;
3100b57cec5SDimitry Andricdef : Device<"atmega32u2",         FamilyAVR35, ELFArchAVR35>;
3110b57cec5SDimitry Andricdef : Device<"attiny1634",         FamilyAVR35, ELFArchAVR35>;
312*e8d8bef9SDimitry Andricdef : Device<"atmega8",            FamilyAVR2,  ELFArchAVR4,
313*e8d8bef9SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3140b57cec5SDimitry Andricdef : Device<"ata6289",            FamilyAVR4,  ELFArchAVR4>;
315*e8d8bef9SDimitry Andricdef : Device<"atmega8a",           FamilyAVR2,  ELFArchAVR4,
316*e8d8bef9SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3170b57cec5SDimitry Andricdef : Device<"ata6285",            FamilyAVR4,  ELFArchAVR4>;
3180b57cec5SDimitry Andricdef : Device<"ata6286",            FamilyAVR4,  ELFArchAVR4>;
3190b57cec5SDimitry Andricdef : Device<"atmega48",           FamilyAVR4,  ELFArchAVR4>;
3200b57cec5SDimitry Andricdef : Device<"atmega48a",          FamilyAVR4,  ELFArchAVR4>;
3210b57cec5SDimitry Andricdef : Device<"atmega48pa",         FamilyAVR4,  ELFArchAVR4>;
322*e8d8bef9SDimitry Andricdef : Device<"atmega48pb",         FamilyAVR4,  ELFArchAVR4>;
3230b57cec5SDimitry Andricdef : Device<"atmega48p",          FamilyAVR4,  ELFArchAVR4>;
3240b57cec5SDimitry Andricdef : Device<"atmega88",           FamilyAVR4,  ELFArchAVR4>;
3250b57cec5SDimitry Andricdef : Device<"atmega88a",          FamilyAVR4,  ELFArchAVR4>;
3260b57cec5SDimitry Andricdef : Device<"atmega88p",          FamilyAVR4,  ELFArchAVR4>;
3270b57cec5SDimitry Andricdef : Device<"atmega88pa",         FamilyAVR4,  ELFArchAVR4>;
328*e8d8bef9SDimitry Andricdef : Device<"atmega88pb",         FamilyAVR4,  ELFArchAVR4>;
3290b57cec5SDimitry Andricdef : Device<"atmega8515",         FamilyAVR2,  ELFArchAVR4,
3300b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3310b57cec5SDimitry Andricdef : Device<"atmega8535",         FamilyAVR2,  ELFArchAVR4,
3320b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3330b57cec5SDimitry Andricdef : Device<"atmega8hva",         FamilyAVR4,  ELFArchAVR4>;
3340b57cec5SDimitry Andricdef : Device<"at90pwm1",           FamilyAVR4,  ELFArchAVR4>;
3350b57cec5SDimitry Andricdef : Device<"at90pwm2",           FamilyAVR4,  ELFArchAVR4>;
3360b57cec5SDimitry Andricdef : Device<"at90pwm2b",          FamilyAVR4,  ELFArchAVR4>;
3370b57cec5SDimitry Andricdef : Device<"at90pwm3",           FamilyAVR4,  ELFArchAVR4>;
3380b57cec5SDimitry Andricdef : Device<"at90pwm3b",          FamilyAVR4,  ELFArchAVR4>;
3390b57cec5SDimitry Andricdef : Device<"at90pwm81",          FamilyAVR4,  ELFArchAVR4>;
3400b57cec5SDimitry Andricdef : Device<"ata5790",            FamilyAVR5,  ELFArchAVR5>;
3410b57cec5SDimitry Andricdef : Device<"ata5795",            FamilyAVR5,  ELFArchAVR5>;
3420b57cec5SDimitry Andricdef : Device<"atmega16",           FamilyAVR5,  ELFArchAVR5>;
3430b57cec5SDimitry Andricdef : Device<"atmega16a",          FamilyAVR5,  ELFArchAVR5>;
3440b57cec5SDimitry Andricdef : Device<"atmega161",          FamilyAVR3,  ELFArchAVR5,
3450b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3460b57cec5SDimitry Andricdef : Device<"atmega162",          FamilyAVR5,  ELFArchAVR5>;
3470b57cec5SDimitry Andricdef : Device<"atmega163",          FamilyAVR3,  ELFArchAVR5,
3480b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>;
3490b57cec5SDimitry Andricdef : Device<"atmega164a",         FamilyAVR5,  ELFArchAVR5>;
3500b57cec5SDimitry Andricdef : Device<"atmega164p",         FamilyAVR5,  ELFArchAVR5>;
3510b57cec5SDimitry Andricdef : Device<"atmega164pa",        FamilyAVR5,  ELFArchAVR5>;
3520b57cec5SDimitry Andricdef : Device<"atmega165",          FamilyAVR5,  ELFArchAVR5>;
3530b57cec5SDimitry Andricdef : Device<"atmega165a",         FamilyAVR5,  ELFArchAVR5>;
3540b57cec5SDimitry Andricdef : Device<"atmega165p",         FamilyAVR5,  ELFArchAVR5>;
3550b57cec5SDimitry Andricdef : Device<"atmega165pa",        FamilyAVR5,  ELFArchAVR5>;
3560b57cec5SDimitry Andricdef : Device<"atmega168",          FamilyAVR5,  ELFArchAVR5>;
3570b57cec5SDimitry Andricdef : Device<"atmega168a",         FamilyAVR5,  ELFArchAVR5>;
3580b57cec5SDimitry Andricdef : Device<"atmega168p",         FamilyAVR5,  ELFArchAVR5>;
3590b57cec5SDimitry Andricdef : Device<"atmega168pa",        FamilyAVR5,  ELFArchAVR5>;
360*e8d8bef9SDimitry Andricdef : Device<"atmega168pb",        FamilyAVR5,  ELFArchAVR5>;
3610b57cec5SDimitry Andricdef : Device<"atmega169",          FamilyAVR5,  ELFArchAVR5>;
3620b57cec5SDimitry Andricdef : Device<"atmega169a",         FamilyAVR5,  ELFArchAVR5>;
3630b57cec5SDimitry Andricdef : Device<"atmega169p",         FamilyAVR5,  ELFArchAVR5>;
3640b57cec5SDimitry Andricdef : Device<"atmega169pa",        FamilyAVR5,  ELFArchAVR5>;
3650b57cec5SDimitry Andricdef : Device<"atmega32",           FamilyAVR5,  ELFArchAVR5>;
3660b57cec5SDimitry Andricdef : Device<"atmega32a",          FamilyAVR5,  ELFArchAVR5>;
3670b57cec5SDimitry Andricdef : Device<"atmega323",          FamilyAVR5,  ELFArchAVR5>;
3680b57cec5SDimitry Andricdef : Device<"atmega324a",         FamilyAVR5,  ELFArchAVR5>;
3690b57cec5SDimitry Andricdef : Device<"atmega324p",         FamilyAVR5,  ELFArchAVR5>;
3700b57cec5SDimitry Andricdef : Device<"atmega324pa",        FamilyAVR5,  ELFArchAVR5>;
371*e8d8bef9SDimitry Andricdef : Device<"atmega324pb",        FamilyAVR5,  ELFArchAVR5>;
3720b57cec5SDimitry Andricdef : Device<"atmega325",          FamilyAVR5,  ELFArchAVR5>;
3730b57cec5SDimitry Andricdef : Device<"atmega325a",         FamilyAVR5,  ELFArchAVR5>;
3740b57cec5SDimitry Andricdef : Device<"atmega325p",         FamilyAVR5,  ELFArchAVR5>;
3750b57cec5SDimitry Andricdef : Device<"atmega325pa",        FamilyAVR5,  ELFArchAVR5>;
3760b57cec5SDimitry Andricdef : Device<"atmega3250",         FamilyAVR5,  ELFArchAVR5>;
3770b57cec5SDimitry Andricdef : Device<"atmega3250a",        FamilyAVR5,  ELFArchAVR5>;
3780b57cec5SDimitry Andricdef : Device<"atmega3250p",        FamilyAVR5,  ELFArchAVR5>;
3790b57cec5SDimitry Andricdef : Device<"atmega3250pa",       FamilyAVR5,  ELFArchAVR5>;
3800b57cec5SDimitry Andricdef : Device<"atmega328",          FamilyAVR5,  ELFArchAVR5>;
3810b57cec5SDimitry Andricdef : Device<"atmega328p",         FamilyAVR5,  ELFArchAVR5>;
382*e8d8bef9SDimitry Andricdef : Device<"atmega328pb",        FamilyAVR5,  ELFArchAVR5>;
3830b57cec5SDimitry Andricdef : Device<"atmega329",          FamilyAVR5,  ELFArchAVR5>;
3840b57cec5SDimitry Andricdef : Device<"atmega329a",         FamilyAVR5,  ELFArchAVR5>;
3850b57cec5SDimitry Andricdef : Device<"atmega329p",         FamilyAVR5,  ELFArchAVR5>;
3860b57cec5SDimitry Andricdef : Device<"atmega329pa",        FamilyAVR5,  ELFArchAVR5>;
3870b57cec5SDimitry Andricdef : Device<"atmega3290",         FamilyAVR5,  ELFArchAVR5>;
3880b57cec5SDimitry Andricdef : Device<"atmega3290a",        FamilyAVR5,  ELFArchAVR5>;
3890b57cec5SDimitry Andricdef : Device<"atmega3290p",        FamilyAVR5,  ELFArchAVR5>;
3900b57cec5SDimitry Andricdef : Device<"atmega3290pa",       FamilyAVR5,  ELFArchAVR5>;
3910b57cec5SDimitry Andricdef : Device<"atmega406",          FamilyAVR5,  ELFArchAVR5>;
3920b57cec5SDimitry Andricdef : Device<"atmega64",           FamilyAVR5,  ELFArchAVR5>;
3930b57cec5SDimitry Andricdef : Device<"atmega64a",          FamilyAVR5,  ELFArchAVR5>;
3940b57cec5SDimitry Andricdef : Device<"atmega640",          FamilyAVR5,  ELFArchAVR5>;
3950b57cec5SDimitry Andricdef : Device<"atmega644",          FamilyAVR5,  ELFArchAVR5>;
3960b57cec5SDimitry Andricdef : Device<"atmega644a",         FamilyAVR5,  ELFArchAVR5>;
3970b57cec5SDimitry Andricdef : Device<"atmega644p",         FamilyAVR5,  ELFArchAVR5>;
3980b57cec5SDimitry Andricdef : Device<"atmega644pa",        FamilyAVR5,  ELFArchAVR5>;
3990b57cec5SDimitry Andricdef : Device<"atmega645",          FamilyAVR5,  ELFArchAVR5>;
4000b57cec5SDimitry Andricdef : Device<"atmega645a",         FamilyAVR5,  ELFArchAVR5>;
4010b57cec5SDimitry Andricdef : Device<"atmega645p",         FamilyAVR5,  ELFArchAVR5>;
4020b57cec5SDimitry Andricdef : Device<"atmega649",          FamilyAVR5,  ELFArchAVR5>;
4030b57cec5SDimitry Andricdef : Device<"atmega649a",         FamilyAVR5,  ELFArchAVR5>;
4040b57cec5SDimitry Andricdef : Device<"atmega649p",         FamilyAVR5,  ELFArchAVR5>;
4050b57cec5SDimitry Andricdef : Device<"atmega6450",         FamilyAVR5,  ELFArchAVR5>;
4060b57cec5SDimitry Andricdef : Device<"atmega6450a",        FamilyAVR5,  ELFArchAVR5>;
4070b57cec5SDimitry Andricdef : Device<"atmega6450p",        FamilyAVR5,  ELFArchAVR5>;
4080b57cec5SDimitry Andricdef : Device<"atmega6490",         FamilyAVR5,  ELFArchAVR5>;
4090b57cec5SDimitry Andricdef : Device<"atmega6490a",        FamilyAVR5,  ELFArchAVR5>;
4100b57cec5SDimitry Andricdef : Device<"atmega6490p",        FamilyAVR5,  ELFArchAVR5>;
4110b57cec5SDimitry Andricdef : Device<"atmega64rfr2",       FamilyAVR5,  ELFArchAVR5>;
4120b57cec5SDimitry Andricdef : Device<"atmega644rfr2",      FamilyAVR5,  ELFArchAVR5>;
4130b57cec5SDimitry Andricdef : Device<"atmega16hva",        FamilyAVR5,  ELFArchAVR5>;
4140b57cec5SDimitry Andricdef : Device<"atmega16hva2",       FamilyAVR5,  ELFArchAVR5>;
4150b57cec5SDimitry Andricdef : Device<"atmega16hvb",        FamilyAVR5,  ELFArchAVR5>;
4160b57cec5SDimitry Andricdef : Device<"atmega16hvbrevb",    FamilyAVR5,  ELFArchAVR5>;
4170b57cec5SDimitry Andricdef : Device<"atmega32hvb",        FamilyAVR5,  ELFArchAVR5>;
4180b57cec5SDimitry Andricdef : Device<"atmega32hvbrevb",    FamilyAVR5,  ELFArchAVR5>;
4190b57cec5SDimitry Andricdef : Device<"atmega64hve",        FamilyAVR5,  ELFArchAVR5>;
4200b57cec5SDimitry Andricdef : Device<"at90can32",          FamilyAVR5,  ELFArchAVR5>;
4210b57cec5SDimitry Andricdef : Device<"at90can64",          FamilyAVR5,  ELFArchAVR5>;
4220b57cec5SDimitry Andricdef : Device<"at90pwm161",         FamilyAVR5,  ELFArchAVR5>;
4230b57cec5SDimitry Andricdef : Device<"at90pwm216",         FamilyAVR5,  ELFArchAVR5>;
4240b57cec5SDimitry Andricdef : Device<"at90pwm316",         FamilyAVR5,  ELFArchAVR5>;
4250b57cec5SDimitry Andricdef : Device<"atmega32c1",         FamilyAVR5,  ELFArchAVR5>;
4260b57cec5SDimitry Andricdef : Device<"atmega64c1",         FamilyAVR5,  ELFArchAVR5>;
4270b57cec5SDimitry Andricdef : Device<"atmega16m1",         FamilyAVR5,  ELFArchAVR5>;
4280b57cec5SDimitry Andricdef : Device<"atmega32m1",         FamilyAVR5,  ELFArchAVR5>;
4290b57cec5SDimitry Andricdef : Device<"atmega64m1",         FamilyAVR5,  ELFArchAVR5>;
4300b57cec5SDimitry Andricdef : Device<"atmega16u4",         FamilyAVR5,  ELFArchAVR5>;
4310b57cec5SDimitry Andricdef : Device<"atmega32u4",         FamilyAVR5,  ELFArchAVR5>;
4320b57cec5SDimitry Andricdef : Device<"atmega32u6",         FamilyAVR5,  ELFArchAVR5>;
4330b57cec5SDimitry Andricdef : Device<"at90usb646",         FamilyAVR5,  ELFArchAVR5>;
4340b57cec5SDimitry Andricdef : Device<"at90usb647",         FamilyAVR5,  ELFArchAVR5>;
4350b57cec5SDimitry Andricdef : Device<"at90scr100",         FamilyAVR5,  ELFArchAVR5>;
4360b57cec5SDimitry Andricdef : Device<"at94k",              FamilyAVR3,  ELFArchAVR5,
4370b57cec5SDimitry Andric             [FeatureMultiplication, FeatureMOVW, FeatureLPMX]>;
4380b57cec5SDimitry Andricdef : Device<"m3000",              FamilyAVR5,  ELFArchAVR5>;
4390b57cec5SDimitry Andricdef : Device<"atmega128",          FamilyAVR51, ELFArchAVR51>;
4400b57cec5SDimitry Andricdef : Device<"atmega128a",         FamilyAVR51, ELFArchAVR51>;
4410b57cec5SDimitry Andricdef : Device<"atmega1280",         FamilyAVR51, ELFArchAVR51>;
4420b57cec5SDimitry Andricdef : Device<"atmega1281",         FamilyAVR51, ELFArchAVR51>;
4430b57cec5SDimitry Andricdef : Device<"atmega1284",         FamilyAVR51, ELFArchAVR51>;
4440b57cec5SDimitry Andricdef : Device<"atmega1284p",        FamilyAVR51, ELFArchAVR51>;
4450b57cec5SDimitry Andricdef : Device<"atmega128rfa1",      FamilyAVR51, ELFArchAVR51>;
4460b57cec5SDimitry Andricdef : Device<"atmega128rfr2",      FamilyAVR51, ELFArchAVR51>;
4470b57cec5SDimitry Andricdef : Device<"atmega1284rfr2",     FamilyAVR51, ELFArchAVR51>;
4480b57cec5SDimitry Andricdef : Device<"at90can128",         FamilyAVR51, ELFArchAVR51>;
4490b57cec5SDimitry Andricdef : Device<"at90usb1286",        FamilyAVR51, ELFArchAVR51>;
4500b57cec5SDimitry Andricdef : Device<"at90usb1287",        FamilyAVR51, ELFArchAVR51>;
4510b57cec5SDimitry Andricdef : Device<"atmega2560",         FamilyAVR6,  ELFArchAVR6>;
4520b57cec5SDimitry Andricdef : Device<"atmega2561",         FamilyAVR6,  ELFArchAVR6>;
4530b57cec5SDimitry Andricdef : Device<"atmega256rfr2",      FamilyAVR6,  ELFArchAVR6>;
4540b57cec5SDimitry Andricdef : Device<"atmega2564rfr2",     FamilyAVR6,  ELFArchAVR6>;
4550b57cec5SDimitry Andricdef : Device<"atxmega16a4",        FamilyXMEGA, ELFArchXMEGA2>;
4560b57cec5SDimitry Andricdef : Device<"atxmega16a4u",       FamilyXMEGAU, ELFArchXMEGA2>;
4570b57cec5SDimitry Andricdef : Device<"atxmega16c4",        FamilyXMEGAU, ELFArchXMEGA2>;
4580b57cec5SDimitry Andricdef : Device<"atxmega16d4",        FamilyXMEGA, ELFArchXMEGA2>;
4590b57cec5SDimitry Andricdef : Device<"atxmega32a4",        FamilyXMEGA, ELFArchXMEGA2>;
4600b57cec5SDimitry Andricdef : Device<"atxmega32a4u",       FamilyXMEGAU, ELFArchXMEGA2>;
4610b57cec5SDimitry Andricdef : Device<"atxmega32c4",        FamilyXMEGAU, ELFArchXMEGA2>;
4620b57cec5SDimitry Andricdef : Device<"atxmega32d4",        FamilyXMEGA, ELFArchXMEGA2>;
463*e8d8bef9SDimitry Andricdef : Device<"atxmega32e5",        FamilyXMEGAU, ELFArchXMEGA2>;
464*e8d8bef9SDimitry Andricdef : Device<"atxmega16e5",        FamilyXMEGAU, ELFArchXMEGA2>;
465*e8d8bef9SDimitry Andricdef : Device<"atxmega8e5",         FamilyXMEGAU, ELFArchXMEGA2>;
4660b57cec5SDimitry Andricdef : Device<"atxmega32x1",        FamilyXMEGA, ELFArchXMEGA2>;
4670b57cec5SDimitry Andricdef : Device<"atxmega64a3",        FamilyXMEGA, ELFArchXMEGA4>;
4680b57cec5SDimitry Andricdef : Device<"atxmega64a3u",       FamilyXMEGAU, ELFArchXMEGA4>;
4690b57cec5SDimitry Andricdef : Device<"atxmega64a4u",       FamilyXMEGAU, ELFArchXMEGA4>;
4700b57cec5SDimitry Andricdef : Device<"atxmega64b1",        FamilyXMEGAU, ELFArchXMEGA4>;
4710b57cec5SDimitry Andricdef : Device<"atxmega64b3",        FamilyXMEGAU, ELFArchXMEGA4>;
4720b57cec5SDimitry Andricdef : Device<"atxmega64c3",        FamilyXMEGAU, ELFArchXMEGA4>;
4730b57cec5SDimitry Andricdef : Device<"atxmega64d3",        FamilyXMEGA, ELFArchXMEGA4>;
4740b57cec5SDimitry Andricdef : Device<"atxmega64d4",        FamilyXMEGA, ELFArchXMEGA4>;
4750b57cec5SDimitry Andricdef : Device<"atxmega64a1",        FamilyXMEGA, ELFArchXMEGA5>;
4760b57cec5SDimitry Andricdef : Device<"atxmega64a1u",       FamilyXMEGAU, ELFArchXMEGA5>;
4770b57cec5SDimitry Andricdef : Device<"atxmega128a3",       FamilyXMEGA, ELFArchXMEGA6>;
4780b57cec5SDimitry Andricdef : Device<"atxmega128a3u",      FamilyXMEGAU, ELFArchXMEGA6>;
4790b57cec5SDimitry Andricdef : Device<"atxmega128b1",       FamilyXMEGAU, ELFArchXMEGA6>;
4800b57cec5SDimitry Andricdef : Device<"atxmega128b3",       FamilyXMEGAU, ELFArchXMEGA6>;
4810b57cec5SDimitry Andricdef : Device<"atxmega128c3",       FamilyXMEGAU, ELFArchXMEGA6>;
4820b57cec5SDimitry Andricdef : Device<"atxmega128d3",       FamilyXMEGA, ELFArchXMEGA6>;
4830b57cec5SDimitry Andricdef : Device<"atxmega128d4",       FamilyXMEGA, ELFArchXMEGA6>;
4840b57cec5SDimitry Andricdef : Device<"atxmega192a3",       FamilyXMEGA, ELFArchXMEGA6>;
4850b57cec5SDimitry Andricdef : Device<"atxmega192a3u",      FamilyXMEGAU, ELFArchXMEGA6>;
4860b57cec5SDimitry Andricdef : Device<"atxmega192c3",       FamilyXMEGAU, ELFArchXMEGA6>;
4870b57cec5SDimitry Andricdef : Device<"atxmega192d3",       FamilyXMEGA, ELFArchXMEGA6>;
4880b57cec5SDimitry Andricdef : Device<"atxmega256a3",       FamilyXMEGA, ELFArchXMEGA6>;
4890b57cec5SDimitry Andricdef : Device<"atxmega256a3u",      FamilyXMEGAU, ELFArchXMEGA6>;
4900b57cec5SDimitry Andricdef : Device<"atxmega256a3b",      FamilyXMEGA, ELFArchXMEGA6>;
4910b57cec5SDimitry Andricdef : Device<"atxmega256a3bu",     FamilyXMEGAU, ELFArchXMEGA6>;
4920b57cec5SDimitry Andricdef : Device<"atxmega256c3",       FamilyXMEGAU, ELFArchXMEGA6>;
4930b57cec5SDimitry Andricdef : Device<"atxmega256d3",       FamilyXMEGA, ELFArchXMEGA6>;
4940b57cec5SDimitry Andricdef : Device<"atxmega384c3",       FamilyXMEGAU, ELFArchXMEGA6>;
4950b57cec5SDimitry Andricdef : Device<"atxmega384d3",       FamilyXMEGA, ELFArchXMEGA6>;
4960b57cec5SDimitry Andricdef : Device<"atxmega128a1",       FamilyXMEGA, ELFArchXMEGA7>;
4970b57cec5SDimitry Andricdef : Device<"atxmega128a1u",      FamilyXMEGAU, ELFArchXMEGA7>;
4980b57cec5SDimitry Andricdef : Device<"atxmega128a4u",      FamilyXMEGAU, ELFArchXMEGA7>;
4990b57cec5SDimitry Andricdef : Device<"attiny4",            FamilyTiny, ELFArchTiny>;
5000b57cec5SDimitry Andricdef : Device<"attiny5",            FamilyTiny, ELFArchTiny>;
5010b57cec5SDimitry Andricdef : Device<"attiny9",            FamilyTiny, ELFArchTiny>;
5020b57cec5SDimitry Andricdef : Device<"attiny10",           FamilyTiny, ELFArchTiny>;
5030b57cec5SDimitry Andricdef : Device<"attiny20",           FamilyTiny, ELFArchTiny>;
5040b57cec5SDimitry Andricdef : Device<"attiny40",           FamilyTiny, ELFArchTiny>;
5050b57cec5SDimitry Andricdef : Device<"attiny102",          FamilyTiny, ELFArchTiny>;
5060b57cec5SDimitry Andricdef : Device<"attiny104",          FamilyTiny, ELFArchTiny>;
5070b57cec5SDimitry Andric
508