diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp index bb215b4114ac25..664eea0de84163 100644 --- a/clang/lib/Basic/Targets/AVR.cpp +++ b/clang/lib/Basic/Targets/AVR.cpp @@ -63,8 +63,10 @@ static MCUInfo AVRMcus[] = { {"attiny85", "__AVR_ATtiny85__"}, {"attiny261", "__AVR_ATtiny261__"}, {"attiny261a", "__AVR_ATtiny261A__"}, + {"attiny441", "__AVR_ATtiny441__"}, {"attiny461", "__AVR_ATtiny461__"}, {"attiny461a", "__AVR_ATtiny461A__"}, + {"attiny841", "__AVR_ATtiny841__"}, {"attiny861", "__AVR_ATtiny861__"}, {"attiny861a", "__AVR_ATtiny861A__"}, {"attiny87", "__AVR_ATtiny87__"}, @@ -92,11 +94,13 @@ static MCUInfo AVRMcus[] = { {"atmega48", "__AVR_ATmega48__"}, {"atmega48a", "__AVR_ATmega48A__"}, {"atmega48pa", "__AVR_ATmega48PA__"}, + {"atmega48pb", "__AVR_ATmega48PB__"}, {"atmega48p", "__AVR_ATmega48P__"}, {"atmega88", "__AVR_ATmega88__"}, {"atmega88a", "__AVR_ATmega88A__"}, {"atmega88p", "__AVR_ATmega88P__"}, {"atmega88pa", "__AVR_ATmega88PA__"}, + {"atmega88pb", "__AVR_ATmega88PB__"}, {"atmega8515", "__AVR_ATmega8515__"}, {"atmega8535", "__AVR_ATmega8535__"}, {"atmega8hva", "__AVR_ATmega8HVA__"}, @@ -124,6 +128,7 @@ static MCUInfo AVRMcus[] = { {"atmega168a", "__AVR_ATmega168A__"}, {"atmega168p", "__AVR_ATmega168P__"}, {"atmega168pa", "__AVR_ATmega168PA__"}, + {"atmega168pb", "__AVR_ATmega168PB__"}, {"atmega169", "__AVR_ATmega169__"}, {"atmega169a", "__AVR_ATmega169A__"}, {"atmega169p", "__AVR_ATmega169P__"}, @@ -134,6 +139,7 @@ static MCUInfo AVRMcus[] = { {"atmega324a", "__AVR_ATmega324A__"}, {"atmega324p", "__AVR_ATmega324P__"}, {"atmega324pa", "__AVR_ATmega324PA__"}, + {"atmega324pb", "__AVR_ATmega324PB__"}, {"atmega325", "__AVR_ATmega325__"}, {"atmega325a", "__AVR_ATmega325A__"}, {"atmega325p", "__AVR_ATmega325P__"}, @@ -144,6 +150,7 @@ static MCUInfo AVRMcus[] = { {"atmega3250pa", "__AVR_ATmega3250PA__"}, {"atmega328", "__AVR_ATmega328__"}, {"atmega328p", "__AVR_ATmega328P__"}, + {"atmega328pb", "__AVR_ATmega328PB__"}, {"atmega329", "__AVR_ATmega329__"}, {"atmega329a", "__AVR_ATmega329A__"}, {"atmega329p", "__AVR_ATmega329P__"}, diff --git a/clang/test/Misc/target-invalid-cpu-note.c b/clang/test/Misc/target-invalid-cpu-note.c index d54403331f5792..3abf51b1c783c8 100644 --- a/clang/test/Misc/target-invalid-cpu-note.c +++ b/clang/test/Misc/target-invalid-cpu-note.c @@ -144,51 +144,49 @@ // AVR-SAME: avrxmega4, avrxmega5, avrxmega6, avrxmega7, avrtiny, at90s1200, // AVR-SAME: attiny11, attiny12, attiny15, attiny28, at90s2313, at90s2323, // AVR-SAME: at90s2333, at90s2343, attiny22, attiny26, at86rf401, at90s4414, -// AVR-SAME: t90s4433, at90s4434, at90s8515, at90c8534, at90s8535, ata5272, -// AVR-SAME: ttiny13, attiny13a, attiny2313, attiny2313a, attiny24, attiny24a, -// AVR-SAME: ttiny4313, attiny44, attiny44a, attiny84, attiny84a, attiny25, -// AVR-SAME: ttiny45, attiny85, attiny261, attiny261a, attiny461, attiny461a, -// AVR-SAME: ttiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88, -// AVR-SAME: ttiny828, at43usb355, at76c711, atmega103, at43usb320, attiny167, -// AVR-SAME: t90usb82, at90usb162, ata5505, atmega8u2, atmega16u2, -// AVR-SAME: atmega32u2, attiny1634, atmega8, ata6289, atmega8a, ata6285, -// AVR-SAME: ata6286, atmega48, atmega48a, atmega48pa, atmega48p, atmega88, -// AVR-SAME: atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535, -// AVR-SAME: atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, -// AVR-SAME: at90pwm81, ata5790, ata5795, atmega16, atmega16a, atmega161, -// AVR-SAME: atmega162, atmega163, atmega164a, atmega164p, atmega164pa, -// AVR-SAME: atmega165, atmega165a, atmega165p, atmega165pa, atmega168, -// AVR-SAME: atmega168a, atmega168p, atmega168pa, atmega169, atmega169a, -// AVR-SAME: atmega169p, atmega169pa, atmega32, atmega32a, atmega323, -// AVR-SAME: atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, -// AVR-SAME: atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, -// AVR-SAME: atmega3250pa, atmega328, atmega328p, atmega329, atmega329a, -// AVR-SAME: atmega329p, atmega329pa, atmega3290, atmega3290a, atmega3290p, -// AVR-SAME: atmega3290pa, atmega406, atmega64, atmega64a, atmega640, atmega644, -// AVR-SAME: atmega644a, atmega644p, atmega644pa, atmega645, atmega645a, -// AVR-SAME: tmega645p, atmega649, atmega649a, atmega649p, atmega6450, -// AVR-SAME: tmega6450a, atmega6450p, atmega6490, atmega6490a, atmega6490p, -// AVR-SAME: tmega64rfr2, atmega644rfr2, atmega16hva, atmega16hva2, -// AVR-SAME: tmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, -// AVR-SAME: tmega64hve, at90can32, at90can64, at90pwm161, at90pwm216, -// AVR-SAME: t90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1, -// AVR-SAME: tmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, -// AVR-SAME: t90usb647, at90scr100, at94k, m3000, atmega128, atmega128a, -// AVR-SAME: tmega1280, atmega1281, atmega1284, atmega1284p, atmega128rfa1, -// AVR-SAME: tmega128rfr2, atmega1284rfr2, at90can128, at90usb1286, -// AVR-SAME: t90usb1287, atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2, -// AVR-SAME: txmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega32a4, -// AVR-SAME: txmega32a4u, atxmega32c4, atxmega32d4, atxmega32e5, atxmega16e5, -// AVR-SAME: txmega8e5, atxmega32x1, atxmega64a3, atxmega64a3u, atxmega64a4u, -// AVR-SAME: txmega64b1, atxmega64b3, atxmega64c3, atxmega64d3, atxmega64d4, -// AVR-SAME: txmega64a1, atxmega64a1u, atxmega128a3, atxmega128a3u, -// AVR-SAME: txmega128b1, atxmega128b3, atxmega128c3, atxmega128d3, -// AVR-SAME: txmega128d4, atxmega192a3, atxmega192a3u, atxmega192c3, -// AVR-SAME: txmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b, -// AVR-SAME: txmega256a3bu, atxmega256c3, atxmega256d3, atxmega384c3, -// AVR-SAME: txmega384d3, atxmega128a1, atxmega128a1u, atxmega128a4u, -// AVR-SAME: ttiny4, attiny5, attiny9, attiny10, attiny20, attiny40, attiny102, -// AVR-SAME: attiny104 +// AVR-SAME: at90s4433, at90s4434, at90s8515, at90c8534, at90s8535, ata5272, +// AVR-SAME: attiny13, attiny13a, attiny2313, attiny2313a, attiny24, attiny24a, +// AVR-SAME: attiny4313, attiny44, attiny44a, attiny84, attiny84a, attiny25, +// AVR-SAME: attiny45, attiny85, attiny261, attiny261a, attiny441, attiny461, +// AVR-SAME: attiny461a, attiny841, attiny861, attiny861a, attiny87, attiny43u, +// AVR-SAME: attiny48, attiny88, attiny828, at43usb355, at76c711, atmega103, +// AVR-SAME: at43usb320, attiny167, at90usb82, at90usb162, ata5505, atmega8u2, +// AVR-SAME: atmega16u2, atmega32u2, attiny1634, atmega8, ata6289, atmega8a, +// AVR-SAME: ata6285, ata6286, atmega48, atmega48a, atmega48pa, atmega48pb, +// AVR-SAME: atmega48p, atmega88, atmega88a, atmega88p, atmega88pa, atmega88pb, +// AVR-SAME: atmega8515, atmega8535, atmega8hva, at90pwm1, at90pwm2, at90pwm2b, +// AVR-SAME: at90pwm3, at90pwm3b, at90pwm81, ata5790, ata5795, atmega16, +// AVR-SAME: atmega16a, atmega161, atmega162, atmega163, atmega164a, atmega164p, +// AVR-SAME: atmega164pa, atmega165, atmega165a, atmega165p, atmega165pa, +// AVR-SAME: atmega168, atmega168a, atmega168p, atmega168pa, atmega168pb, +// AVR-SAME: atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega32a, +// AVR-SAME: atmega323, atmega324a, atmega324p, atmega324pa, atmega324pb, +// AVR-SAME: atmega325, atmega325a, atmega325p, atmega325pa, atmega3250, +// AVR-SAME: atmega3250a, atmega3250p, atmega3250pa, atmega328, atmega328p, +// AVR-SAME: atmega328pb, atmega329, atmega329a, atmega329p, atmega329pa, +// AVR-SAME: atmega3290, atmega3290a, atmega3290p, atmega3290pa, atmega406, +// AVR-SAME: atmega64, atmega64a, atmega640, atmega644, atmega644a, atmega644p, +// AVR-SAME: atmega644pa, atmega645, atmega645a, atmega645p, atmega649, atmega649a, +// AVR-SAME: atmega649p, atmega6450, atmega6450a, atmega6450p, atmega6490, +// AVR-SAME: atmega6490a, atmega6490p, atmega64rfr2, atmega644rfr2, atmega16hva, +// AVR-SAME: atmega16hva2, atmega16hvb, atmega16hvbrevb, atmega32hvb, +// AVR-SAME: atmega32hvbrevb, atmega64hve, at90can32, at90can64, at90pwm161, +// AVR-SAME: at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1, +// AVR-SAME: atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, +// AVR-SAME: at90scr100, at94k, m3000, atmega128, atmega128a, atmega1280, atmega1281, +// AVR-SAME: atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2, atmega1284rfr2, +// AVR-SAME: at90can128, at90usb1286, at90usb1287, atmega2560, atmega2561, +// AVR-SAME: atmega256rfr2, atmega2564rfr2, atxmega16a4, atxmega16a4u, atxmega16c4, +// AVR-SAME: atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4, +// AVR-SAME: atxmega32e5, atxmega16e5, atxmega8e5, atxmega32x1, atxmega64a3, +// AVR-SAME: atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3, atxmega64c3, +// AVR-SAME: atxmega64d3, atxmega64d4, atxmega64a1, atxmega64a1u, atxmega128a3, +// AVR-SAME: atxmega128a3u, atxmega128b1, atxmega128b3, atxmega128c3, atxmega128d3, +// AVR-SAME: atxmega128d4, atxmega192a3, atxmega192a3u, atxmega192c3, atxmega192d3, +// AVR-SAME: atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3, +// AVR-SAME: atxmega256d3, atxmega384c3, atxmega384d3, atxmega128a1, atxmega128a1u, +// AVR-SAME: atxmega128a4u, attiny4, attiny5, attiny9, attiny10, attiny20, attiny40, +// AVR-SAME: attiny102, attiny104 // RUN: not %clang_cc1 -triple riscv32 -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix RISCV32 // RISCV32: error: unknown target CPU 'not-a-cpu' diff --git a/llvm/lib/Target/AVR/AVRDevices.td b/llvm/lib/Target/AVR/AVRDevices.td index cf5c5ad64f85c5..9507aa40c3d803 100644 --- a/llvm/lib/Target/AVR/AVRDevices.td +++ b/llvm/lib/Target/AVR/AVRDevices.td @@ -195,7 +195,7 @@ def FamilyAVR6 : Family<"avr6", def FamilyTiny : Family<"avrtiny", [FamilyAVR0, FeatureBREAK, FeatureSRAM, - FeatureTinyEncoding, FeatureMMR]>; + FeatureTinyEncoding]>; def FamilyXMEGA : Family<"xmega", [FamilyAVR0, FeatureLPM, FeatureIJMPCALL, FeatureADDSUBIW, @@ -309,19 +309,23 @@ def : Device<"atmega8u2", FamilyAVR35, ELFArchAVR35>; def : Device<"atmega16u2", FamilyAVR35, ELFArchAVR35>; def : Device<"atmega32u2", FamilyAVR35, ELFArchAVR35>; def : Device<"attiny1634", FamilyAVR35, ELFArchAVR35>; -def : Device<"atmega8", FamilyAVR4, ELFArchAVR4>; // FIXME: family may be wrong +def : Device<"atmega8", FamilyAVR2, ELFArchAVR4, + [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>; def : Device<"ata6289", FamilyAVR4, ELFArchAVR4>; -def : Device<"atmega8a", FamilyAVR4, ELFArchAVR4>; +def : Device<"atmega8a", FamilyAVR2, ELFArchAVR4, + [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>; def : Device<"ata6285", FamilyAVR4, ELFArchAVR4>; def : Device<"ata6286", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega48", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega48a", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega48pa", FamilyAVR4, ELFArchAVR4>; +def : Device<"atmega48pb", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega48p", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega88", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega88a", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega88p", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega88pa", FamilyAVR4, ELFArchAVR4>; +def : Device<"atmega88pb", FamilyAVR4, ELFArchAVR4>; def : Device<"atmega8515", FamilyAVR2, ELFArchAVR4, [FeatureMultiplication, FeatureMOVW, FeatureLPMX, FeatureSPM]>; def : Device<"atmega8535", FamilyAVR2, ELFArchAVR4, @@ -353,6 +357,7 @@ def : Device<"atmega168", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega168a", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega168p", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega168pa", FamilyAVR5, ELFArchAVR5>; +def : Device<"atmega168pb", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega169", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega169a", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega169p", FamilyAVR5, ELFArchAVR5>; @@ -363,6 +368,7 @@ def : Device<"atmega323", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega324a", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega324p", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega324pa", FamilyAVR5, ELFArchAVR5>; +def : Device<"atmega324pb", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega325", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega325a", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega325p", FamilyAVR5, ELFArchAVR5>; @@ -373,6 +379,7 @@ def : Device<"atmega3250p", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega3250pa", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega328", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega328p", FamilyAVR5, ELFArchAVR5>; +def : Device<"atmega328pb", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega329", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega329a", FamilyAVR5, ELFArchAVR5>; def : Device<"atmega329p", FamilyAVR5, ELFArchAVR5>; @@ -453,9 +460,9 @@ def : Device<"atxmega32a4", FamilyXMEGA, ELFArchXMEGA2>; def : Device<"atxmega32a4u", FamilyXMEGAU, ELFArchXMEGA2>; def : Device<"atxmega32c4", FamilyXMEGAU, ELFArchXMEGA2>; def : Device<"atxmega32d4", FamilyXMEGA, ELFArchXMEGA2>; -def : Device<"atxmega32e5", FamilyXMEGA, ELFArchXMEGA2>; -def : Device<"atxmega16e5", FamilyXMEGA, ELFArchXMEGA2>; -def : Device<"atxmega8e5", 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>;