diff options
Diffstat (limited to 'llvm/lib/Target/AVR/AVRDevices.td')
| -rw-r--r-- | llvm/lib/Target/AVR/AVRDevices.td | 163 |
1 files changed, 98 insertions, 65 deletions
diff --git a/llvm/lib/Target/AVR/AVRDevices.td b/llvm/lib/Target/AVR/AVRDevices.td index 7ad0fe904a81..3eb5a16204e7 100644 --- a/llvm/lib/Target/AVR/AVRDevices.td +++ b/llvm/lib/Target/AVR/AVRDevices.td @@ -174,15 +174,13 @@ def FamilyAVR35 : Family<"avr35", [FamilyAVR3, FeatureMOVW, FeatureLPMX, FeatureSPM, FeatureBREAK]>; -def FamilyAVR4 : Family<"avr4", [ - FamilyAVR2, FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM, - FeatureBREAK -]>; +def FamilyAVR4 : Family<"avr4", + [FamilyAVR2, FeatureMultiplication, FeatureMOVW, + FeatureLPMX, FeatureSPM, FeatureBREAK]>; -def FamilyAVR5 : Family<"avr5", [ - FamilyAVR3, FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM, - FeatureBREAK -]>; +def FamilyAVR5 : Family<"avr5", + [FamilyAVR3, FeatureMultiplication, FeatureMOVW, + FeatureLPMX, FeatureSPM, FeatureBREAK]>; def FamilyAVR51 : Family<"avr51", [FamilyAVR5, FeatureELPM, FeatureELPMX]>; @@ -190,14 +188,21 @@ def FamilyAVR6 : Family<"avr6", [FamilyAVR51]>; def FamilyTiny : Family<"avrtiny", - [FamilyAVR0, FeatureBREAK, FeatureSRAM, FeatureTinyEncoding]>; + [FamilyAVR0, FeatureBREAK, FeatureSRAM, FeatureTinyEncoding, + FeatureSmallStack]>; -def FamilyXMEGA : Family<"xmega", [ - FamilyAVR0, FeatureLPM, FeatureIJMPCALL, FeatureADDSUBIW, FeatureSRAM, - FeatureJMPCALL, FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM, - FeatureBREAK, FeatureEIJMPCALL, FeatureSPMX, FeatureDES, FeatureELPM, - FeatureELPMX -]>; +def FamilyXMEGA3 : Family<"xmega3", + [FamilyAVR0, FeatureLPM, FeatureIJMPCALL, + FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL, + FeatureMultiplication, FeatureMOVW, FeatureLPMX, + FeatureBREAK]>; + +def FamilyXMEGA : Family<"xmega", + [FamilyAVR0, FeatureLPM, FeatureIJMPCALL, + FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL, + FeatureMultiplication, FeatureMOVW, FeatureLPMX, + FeatureSPM, FeatureBREAK, FeatureEIJMPCALL, + FeatureSPMX, FeatureDES, FeatureELPM, FeatureELPMX]>; def FamilyXMEGAU : Family<"xmegau", [FamilyXMEGA, FeatureRMW]>; @@ -237,7 +242,7 @@ def : Device<"avr51", FamilyAVR51, ELFArchAVR51>; def : Device<"avr6", FamilyAVR6, ELFArchAVR6>; def : Device<"avrxmega1", FamilyXMEGA, ELFArchXMEGA1>; def : Device<"avrxmega2", FamilyXMEGA, ELFArchXMEGA2>; -def : Device<"avrxmega3", FamilyXMEGA, ELFArchXMEGA3>; +def : Device<"avrxmega3", FamilyXMEGA3, ELFArchXMEGA3>; def : Device<"avrxmega4", FamilyXMEGA, ELFArchXMEGA4>; def : Device<"avrxmega5", FamilyXMEGA, ELFArchXMEGA5>; def : Device<"avrxmega6", FamilyXMEGA, ELFArchXMEGA6>; @@ -245,41 +250,44 @@ def : Device<"avrxmega7", FamilyXMEGA, ELFArchXMEGA7>; def : Device<"avrtiny", FamilyTiny, ELFArchTiny>; // Specific MCUs -def : Device<"at90s1200", FamilyAVR0, ELFArchAVR1>; -def : Device<"attiny11", FamilyAVR1, ELFArchAVR1>; -def : Device<"attiny12", FamilyAVR1, ELFArchAVR1>; -def : Device<"attiny15", FamilyAVR1, ELFArchAVR1>; -def : Device<"attiny28", FamilyAVR1, ELFArchAVR1>; -def : Device<"at90s2313", FamilyAVR2, ELFArchAVR2>; -def : Device<"at90s2323", FamilyAVR2, ELFArchAVR2>; -def : Device<"at90s2333", FamilyAVR2, ELFArchAVR2>; -def : Device<"at90s2343", FamilyAVR2, ELFArchAVR2>; -def : Device<"attiny22", FamilyAVR2, ELFArchAVR2>; -def : Device<"attiny26", FamilyAVR2, ELFArchAVR2, [FeatureLPMX]>; +// NOTE: This list has been synchronized with gcc-avr 5.4.0 and avr-libc 2.0.0. +def : Device<"at90s1200", FamilyAVR0, ELFArchAVR1, [FeatureSmallStack]>; +def : Device<"attiny11", FamilyAVR1, ELFArchAVR1, [FeatureSmallStack]>; +def : Device<"attiny12", FamilyAVR1, ELFArchAVR1, [FeatureSmallStack]>; +def : Device<"attiny15", FamilyAVR1, ELFArchAVR1, [FeatureSmallStack]>; +def : Device<"attiny28", FamilyAVR1, ELFArchAVR1, [FeatureSmallStack]>; +def : Device<"at90s2313", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>; +def : Device<"at90s2323", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>; +def : Device<"at90s2333", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>; +def : Device<"at90s2343", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>; +def : Device<"attiny22", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>; +def : Device<"attiny26", FamilyAVR2, ELFArchAVR2, + [FeatureLPMX, FeatureSmallStack]>; def : Device<"at86rf401", FamilyAVR2, ELFArchAVR25, [FeatureMOVW, FeatureLPMX]>; -def : Device<"at90s4414", FamilyAVR2, ELFArchAVR2>; -def : Device<"at90s4433", FamilyAVR2, ELFArchAVR2>; -def : Device<"at90s4434", FamilyAVR2, ELFArchAVR2>; +def : Device<"at90s4414", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>; +def : Device<"at90s4433", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>; +def : Device<"at90s4434", FamilyAVR2, ELFArchAVR2, [FeatureSmallStack]>; def : Device<"at90s8515", FamilyAVR2, ELFArchAVR2>; def : Device<"at90c8534", FamilyAVR2, ELFArchAVR2>; def : Device<"at90s8535", FamilyAVR2, ELFArchAVR2>; def : Device<"ata5272", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny13", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny13a", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny2313", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny2313a", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny24", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny24a", FamilyAVR25, ELFArchAVR25>; +def : Device<"ata6616c", FamilyAVR25, ELFArchAVR25>; +def : Device<"attiny13", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; +def : Device<"attiny13a", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; +def : Device<"attiny2313", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; +def : Device<"attiny2313a", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; +def : Device<"attiny24", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; +def : Device<"attiny24a", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; def : Device<"attiny4313", FamilyAVR25, ELFArchAVR25>; def : Device<"attiny44", FamilyAVR25, ELFArchAVR25>; def : Device<"attiny44a", FamilyAVR25, ELFArchAVR25>; def : Device<"attiny84", FamilyAVR25, ELFArchAVR25>; def : Device<"attiny84a", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny25", FamilyAVR25, ELFArchAVR25>; +def : Device<"attiny25", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; def : Device<"attiny45", FamilyAVR25, ELFArchAVR25>; def : Device<"attiny85", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny261", FamilyAVR25, ELFArchAVR25>; -def : Device<"attiny261a", FamilyAVR25, ELFArchAVR25>; +def : Device<"attiny261", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; +def : Device<"attiny261a", FamilyAVR25, ELFArchAVR25, [FeatureSmallStack]>; def : Device<"attiny441", FamilyAVR25, ELFArchAVR25>; def : Device<"attiny461", FamilyAVR25, ELFArchAVR25>; def : Device<"attiny461a", FamilyAVR25, ELFArchAVR25>; @@ -299,6 +307,8 @@ def : Device<"attiny167", FamilyAVR35, ELFArchAVR35>; def : Device<"at90usb82", FamilyAVR35, ELFArchAVR35>; def : Device<"at90usb162", FamilyAVR35, ELFArchAVR35>; def : Device<"ata5505", FamilyAVR35, ELFArchAVR35>; +def : Device<"ata6617c", FamilyAVR35, ELFArchAVR35>; +def : Device<"ata664251", FamilyAVR35, ELFArchAVR35>; def : Device<"atmega8u2", FamilyAVR35, ELFArchAVR35>; def : Device<"atmega16u2", FamilyAVR35, ELFArchAVR35>; def : Device<"atmega32u2", FamilyAVR35, ELFArchAVR35>; @@ -310,6 +320,7 @@ def : Device<"atmega8a", FamilyAVR2, ELFArchAVR4, [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>; def : Device<"ata6285", FamilyAVR4, ELFArchAVR4>; def : Device<"ata6286", FamilyAVR4, ELFArchAVR4>; +def : Device<"ata6612c", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega48", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega48a", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega48pa", FamilyAVR4, ELFArchAVR4>; @@ -331,8 +342,17 @@ def : Device<"at90pwm2b", FamilyAVR4, ELFArchAVR4>; def : Device<"at90pwm3", FamilyAVR4, ELFArchAVR4>; def : Device<"at90pwm3b", FamilyAVR4, ELFArchAVR4>; def : Device<"at90pwm81", FamilyAVR4, ELFArchAVR4>; +def : Device<"ata5702m322", FamilyAVR5, ELFArchAVR5>; +def : Device<"ata5782", FamilyAVR5, ELFArchAVR5>; def : Device<"ata5790", FamilyAVR5, ELFArchAVR5>; +def : Device<"ata5790n", FamilyAVR5, ELFArchAVR5>; +def : Device<"ata5791", FamilyAVR5, ELFArchAVR5>; def : Device<"ata5795", FamilyAVR5, ELFArchAVR5>; +def : Device<"ata5831", FamilyAVR5, ELFArchAVR5>; +def : Device<"ata6613c", FamilyAVR5, ELFArchAVR5>; +def : Device<"ata6614q", FamilyAVR5, ELFArchAVR5>; +def : Device<"ata8210", FamilyAVR5, ELFArchAVR5>; +def : Device<"ata8510", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega16", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega16a", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega161", FamilyAVR3, ELFArchAVR5, @@ -411,6 +431,7 @@ def : Device<"atmega16hvbrevb", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega32hvb", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega32hvbrevb", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega64hve", FamilyAVR5, ELFArchAVR5>; +def : Device<"atmega64hve2", FamilyAVR5, ELFArchAVR5>; def : Device<"at90can32", FamilyAVR5, ELFArchAVR5>; def : Device<"at90can64", FamilyAVR5, ELFArchAVR5>; def : Device<"at90pwm161", FamilyAVR5, ELFArchAVR5>; @@ -452,12 +473,13 @@ def : Device<"atxmega16c4", FamilyXMEGAU, ELFArchXMEGA2>; def : Device<"atxmega16d4", FamilyXMEGA, ELFArchXMEGA2>; def : Device<"atxmega32a4", FamilyXMEGA, ELFArchXMEGA2>; def : Device<"atxmega32a4u", FamilyXMEGAU, ELFArchXMEGA2>; +def : Device<"atxmega32c3", FamilyXMEGAU, ELFArchXMEGA2>; def : Device<"atxmega32c4", FamilyXMEGAU, ELFArchXMEGA2>; +def : Device<"atxmega32d3", FamilyXMEGA, ELFArchXMEGA2>; def : Device<"atxmega32d4", FamilyXMEGA, ELFArchXMEGA2>; def : Device<"atxmega32e5", FamilyXMEGAU, ELFArchXMEGA2>; def : Device<"atxmega16e5", FamilyXMEGAU, ELFArchXMEGA2>; def : Device<"atxmega8e5", FamilyXMEGAU, ELFArchXMEGA2>; -def : Device<"atxmega32x1", FamilyXMEGA, ELFArchXMEGA2>; def : Device<"atxmega64a3", FamilyXMEGA, ELFArchXMEGA4>; def : Device<"atxmega64a3u", FamilyXMEGAU, ELFArchXMEGA4>; def : Device<"atxmega64a4u", FamilyXMEGAU, ELFArchXMEGA4>; @@ -498,28 +520,39 @@ def : Device<"attiny20", FamilyTiny, ELFArchTiny>; def : Device<"attiny40", FamilyTiny, ELFArchTiny>; def : Device<"attiny102", FamilyTiny, ELFArchTiny>; def : Device<"attiny104", FamilyTiny, ELFArchTiny>; -def : Device<"attiny202", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny402", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny204", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny404", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny804", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny1604", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny406", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny806", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny1606", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny807", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny1607", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny212", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny412", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny214", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny414", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny814", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny1614", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny416", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny816", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny1616", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny3216", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny417", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny817", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny1617", FamilyXMEGA, ELFArchXMEGA3>; -def : Device<"attiny3217", FamilyXMEGA, ELFArchXMEGA3>; +def : Device<"attiny202", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny402", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny204", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny404", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny804", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1604", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny406", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny806", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1606", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny807", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1607", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny212", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny412", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny214", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny414", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny814", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1614", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny416", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny816", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1616", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny3216", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny417", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny817", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1617", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny3217", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1624", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1626", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"attiny1627", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"atmega808", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"atmega809", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"atmega1608", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"atmega1609", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"atmega3208", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"atmega3209", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"atmega4808", FamilyXMEGA3, ELFArchXMEGA3>; +def : Device<"atmega4809", FamilyXMEGA3, ELFArchXMEGA3>; |
