Author: Ben Shi
Date: 2022-03-25T01:43:41Z
New Revision: b62ea9b38b627ce2a96f66242c15250d59a9b134

URL: 
https://github.com/llvm/llvm-project/commit/b62ea9b38b627ce2a96f66242c15250d59a9b134
DIFF: 
https://github.com/llvm/llvm-project/commit/b62ea9b38b627ce2a96f66242c15250d59a9b134.diff

LOG: [AVR] Add more devices

Synchronize device list with avr-gcc 7.3.0 and avrlibc 2.0.0.

Reviewed By: aykevl

Differential Revision: https://reviews.llvm.org/D122401

Added: 
    

Modified: 
    clang/lib/Basic/Targets/AVR.cpp
    clang/lib/Driver/ToolChains/AVR.cpp
    clang/test/Misc/target-invalid-cpu-note.c
    llvm/lib/Target/AVR/AVRDevices.td

Removed: 
    clang/test/Driver/avr-link-mcu-family-unimplemented.c


################################################################################
diff  --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index ec021ad29fdf8..14b3d0497c62c 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -49,6 +49,7 @@ static MCUInfo AVRMcus[] = {
     {"at90c8534", "__AVR_AT90c8534__", 1, false},
     {"at90s8535", "__AVR_AT90S8535__", 1, false},
     {"ata5272", "__AVR_ATA5272__", 1, false},
+    {"ata6616c", "__AVR_ATA6616c__", 1, false},
     {"attiny13", "__AVR_ATtiny13__", 1, false},
     {"attiny13a", "__AVR_ATtiny13A__", 1, false},
     {"attiny2313", "__AVR_ATtiny2313__", 1, false},
@@ -250,7 +251,6 @@ static MCUInfo AVRMcus[] = {
     {"atxmega32e5", "__AVR_ATxmega32E5__", 1, false},
     {"atxmega16e5", "__AVR_ATxmega16E5__", 1, false},
     {"atxmega8e5", "__AVR_ATxmega8E5__", 1, false},
-    {"atxmega32x1", "__AVR_ATxmega32X1__", 1, false},
     {"atxmega64a3", "__AVR_ATxmega64A3__", 1, false},
     {"atxmega64a3u", "__AVR_ATxmega64A3U__", 1, false},
     {"atxmega64a4u", "__AVR_ATxmega64A4U__", 1, false},
@@ -291,31 +291,42 @@ static MCUInfo AVRMcus[] = {
     {"attiny40", "__AVR_ATtiny40__", 0, true},
     {"attiny102", "__AVR_ATtiny102__", 0, true},
     {"attiny104", "__AVR_ATtiny104__", 0, true},
-    {"attiny202", "__AVR_ATtiny202__", 1, true},
-    {"attiny402", "__AVR_ATtiny402__", 1, true},
-    {"attiny204", "__AVR_ATtiny204__", 1, true},
-    {"attiny404", "__AVR_ATtiny404__", 1, true},
-    {"attiny804", "__AVR_ATtiny804__", 1, true},
-    {"attiny1604", "__AVR_ATtiny1604__", 1, true},
-    {"attiny406", "__AVR_ATtiny406__", 1, true},
-    {"attiny806", "__AVR_ATtiny806__", 1, true},
-    {"attiny1606", "__AVR_ATtiny1606__", 1, true},
-    {"attiny807", "__AVR_ATtiny807__", 1, true},
-    {"attiny1607", "__AVR_ATtiny1607__", 1, true},
-    {"attiny212", "__AVR_ATtiny212__", 1, true},
-    {"attiny412", "__AVR_ATtiny412__", 1, true},
-    {"attiny214", "__AVR_ATtiny214__", 1, true},
-    {"attiny414", "__AVR_ATtiny414__", 1, true},
-    {"attiny814", "__AVR_ATtiny814__", 1, true},
-    {"attiny1614", "__AVR_ATtiny1614__", 1, true},
-    {"attiny416", "__AVR_ATtiny416__", 1, true},
-    {"attiny816", "__AVR_ATtiny816__", 1, true},
-    {"attiny1616", "__AVR_ATtiny1616__", 1, true},
-    {"attiny3216", "__AVR_ATtiny3216__", 1, true},
-    {"attiny417", "__AVR_ATtiny417__", 1, true},
-    {"attiny817", "__AVR_ATtiny817__", 1, true},
-    {"attiny1617", "__AVR_ATtiny1617__", 1, true},
-    {"attiny3217", "__AVR_ATtiny3217__", 1, true},
+    {"attiny202", "__AVR_ATtiny202__", 1, false},
+    {"attiny402", "__AVR_ATtiny402__", 1, false},
+    {"attiny204", "__AVR_ATtiny204__", 1, false},
+    {"attiny404", "__AVR_ATtiny404__", 1, false},
+    {"attiny804", "__AVR_ATtiny804__", 1, false},
+    {"attiny1604", "__AVR_ATtiny1604__", 1, false},
+    {"attiny406", "__AVR_ATtiny406__", 1, false},
+    {"attiny806", "__AVR_ATtiny806__", 1, false},
+    {"attiny1606", "__AVR_ATtiny1606__", 1, false},
+    {"attiny807", "__AVR_ATtiny807__", 1, false},
+    {"attiny1607", "__AVR_ATtiny1607__", 1, false},
+    {"attiny212", "__AVR_ATtiny212__", 1, false},
+    {"attiny412", "__AVR_ATtiny412__", 1, false},
+    {"attiny214", "__AVR_ATtiny214__", 1, false},
+    {"attiny414", "__AVR_ATtiny414__", 1, false},
+    {"attiny814", "__AVR_ATtiny814__", 1, false},
+    {"attiny1614", "__AVR_ATtiny1614__", 1, false},
+    {"attiny416", "__AVR_ATtiny416__", 1, false},
+    {"attiny816", "__AVR_ATtiny816__", 1, false},
+    {"attiny1616", "__AVR_ATtiny1616__", 1, false},
+    {"attiny3216", "__AVR_ATtiny3216__", 1, false},
+    {"attiny417", "__AVR_ATtiny417__", 1, false},
+    {"attiny817", "__AVR_ATtiny817__", 1, false},
+    {"attiny1617", "__AVR_ATtiny1617__", 1, false},
+    {"attiny3217", "__AVR_ATtiny3217__", 1, false},
+    {"attiny1624", "__AVR_ATtiny1624__", 1, false},
+    {"attiny1626", "__AVR_ATtiny1626__", 1, false},
+    {"attiny1627", "__AVR_ATtiny1627__", 1, false},
+    {"atmega808", "__AVR_ATmega808__", 1, false},
+    {"atmega809", "__AVR_ATmega809__", 1, false},
+    {"atmega1608", "__AVR_ATmega1608__", 1, false},
+    {"atmega1609", "__AVR_ATmega1609__", 1, false},
+    {"atmega3208", "__AVR_ATmega3208__", 1, false},
+    {"atmega3209", "__AVR_ATmega3209__", 1, false},
+    {"atmega4808", "__AVR_ATmega4808__", 1, false},
+    {"atmega4809", "__AVR_ATmega4809__", 1, false},
 };
 
 } // namespace targets

diff  --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index 5577c709a09fc..8688e06e78cc3 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -28,7 +28,7 @@ using namespace llvm::opt;
 
 namespace {
 
-// NOTE: This list has been synchronized with gcc-avr 5.4.0 and avr-libc 2.0.0.
+// NOTE: This list has been synchronized with gcc-avr 7.3.0 and avr-libc 2.0.0.
 constexpr struct {
   StringRef Name;
   StringRef SubPath;
@@ -63,6 +63,7 @@ constexpr struct {
     {"attiny261a", "avr25/tiny-stack", "avr25", 0x800060},
     {"at86rf401", "avr25", "avr25", 0x800060},
     {"ata5272", "avr25", "avr25", 0x800100},
+    {"ata6616c", "avr25", "avr25", 0x800100},
     {"attiny4313", "avr25", "avr25", 0x800060},
     {"attiny44", "avr25", "avr25", 0x800060},
     {"attiny44a", "avr25", "avr25", 0x800060},
@@ -158,6 +159,7 @@ constexpr struct {
     {"atmega324a", "avr5", "avr5", 0x800100},
     {"atmega324p", "avr5", "avr5", 0x800100},
     {"atmega324pa", "avr5", "avr5", 0x800100},
+    {"atmega324pb", "avr5", "avr5", 0x800100},
     {"atmega325", "avr5", "avr5", 0x800100},
     {"atmega325a", "avr5", "avr5", 0x800100},
     {"atmega325p", "avr5", "avr5", 0x800100},
@@ -168,6 +170,7 @@ constexpr struct {
     {"atmega3250pa", "avr5", "avr5", 0x800100},
     {"atmega328", "avr5", "avr5", 0x800100},
     {"atmega328p", "avr5", "avr5", 0x800100},
+    {"atmega328pb", "avr5", "avr5", 0x800100},
     {"atmega329", "avr5", "avr5", 0x800100},
     {"atmega329a", "avr5", "avr5", 0x800100},
     {"atmega329p", "avr5", "avr5", 0x800100},
@@ -246,6 +249,8 @@ constexpr struct {
     {"attiny10", "avrtiny", "avrtiny", 0x800040},
     {"attiny20", "avrtiny", "avrtiny", 0x800040},
     {"attiny40", "avrtiny", "avrtiny", 0x800040},
+    {"attiny102", "avrtiny", "avrtiny", 0x800040},
+    {"attiny104", "avrtiny", "avrtiny", 0x800040},
     {"atxmega16a4", "avrxmega2", "avrxmega2", 0x802000},
     {"atxmega16a4u", "avrxmega2", "avrxmega2", 0x802000},
     {"atxmega16c4", "avrxmega2", "avrxmega2", 0x802000},
@@ -291,6 +296,42 @@ constexpr struct {
     {"atxmega128a1", "avrxmega7", "avrxmega7", 0x802000},
     {"atxmega128a1u", "avrxmega7", "avrxmega7", 0x802000},
     {"atxmega128a4u", "avrxmega7", "avrxmega7", 0x802000},
+    {"attiny202", "avrxmega3/short-calls", "avrxmega3", 0x803F80},
+    {"attiny204", "avrxmega3/short-calls", "avrxmega3", 0x803F80},
+    {"attiny212", "avrxmega3/short-calls", "avrxmega3", 0x803F80},
+    {"attiny214", "avrxmega3/short-calls", "avrxmega3", 0x803F80},
+    {"attiny402", "avrxmega3/short-calls", "avrxmega3", 0x803F00},
+    {"attiny404", "avrxmega3/short-calls", "avrxmega3", 0x803F00},
+    {"attiny406", "avrxmega3/short-calls", "avrxmega3", 0x803F00},
+    {"attiny412", "avrxmega3/short-calls", "avrxmega3", 0x803F00},
+    {"attiny414", "avrxmega3/short-calls", "avrxmega3", 0x803F00},
+    {"attiny416", "avrxmega3/short-calls", "avrxmega3", 0x803F00},
+    {"attiny417", "avrxmega3/short-calls", "avrxmega3", 0x803F00},
+    {"attiny804", "avrxmega3/short-calls", "avrxmega3", 0x803E00},
+    {"attiny806", "avrxmega3/short-calls", "avrxmega3", 0x803E00},
+    {"attiny807", "avrxmega3/short-calls", "avrxmega3", 0x803E00},
+    {"attiny814", "avrxmega3/short-calls", "avrxmega3", 0x803E00},
+    {"attiny816", "avrxmega3/short-calls", "avrxmega3", 0x803E00},
+    {"attiny817", "avrxmega3/short-calls", "avrxmega3", 0x803E00},
+    {"atmega808", "avrxmega3/short-calls", "avrxmega3", 0x803C00},
+    {"atmega809", "avrxmega3/short-calls", "avrxmega3", 0x803C00},
+    {"atmega1608", "avrxmega3", "avrxmega3", 0x803800},
+    {"atmega1609", "avrxmega3", "avrxmega3", 0x803800},
+    {"atmega3208", "avrxmega3", "avrxmega3", 0x803000},
+    {"atmega3209", "avrxmega3", "avrxmega3", 0x803000},
+    {"atmega4808", "avrxmega3", "avrxmega3", 0x802800},
+    {"atmega4809", "avrxmega3", "avrxmega3", 0x802800},
+    {"attiny1604", "avrxmega3", "avrxmega3", 0x803C00},
+    {"attiny1606", "avrxmega3", "avrxmega3", 0x803C00},
+    {"attiny1607", "avrxmega3", "avrxmega3", 0x803C00},
+    {"attiny1614", "avrxmega3", "avrxmega3", 0x803800},
+    {"attiny1616", "avrxmega3", "avrxmega3", 0x803800},
+    {"attiny1617", "avrxmega3", "avrxmega3", 0x803800},
+    {"attiny1624", "avrxmega3", "avrxmega3", 0x803800},
+    {"attiny1626", "avrxmega3", "avrxmega3", 0x803800},
+    {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
+    {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
+    {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
 };
 
 std::string GetMCUSubPath(StringRef MCUName) {

diff  --git a/clang/test/Driver/avr-link-mcu-family-unimplemented.c 
b/clang/test/Driver/avr-link-mcu-family-unimplemented.c
deleted file mode 100644
index 59087b0cb9d93..0000000000000
--- a/clang/test/Driver/avr-link-mcu-family-unimplemented.c
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: %clang -### -target avr -no-canonical-prefixes -save-temps 
-mmcu=attiny102 %s 2>&1 | FileCheck --check-prefix=WARN0 %s
-// WARN0: warning: support for linking stdlibs for microcontroller 'attiny102' 
is not implemented
-// WARN0: warning: standard library not linked and so no interrupt vector 
table or compiler runtime routines will be linked
-
-// RUN: %clang -### -target avr -no-canonical-prefixes -save-temps 
-mmcu=atxmega32x1 %s 2>&1 | FileCheck --check-prefix=WARN1 %s
-// WARN1: warning: support for linking stdlibs for microcontroller 
'atxmega32x1' is not implemented
-// WARN1: warning: standard library not linked and so no interrupt vector 
table or compiler runtime routines will be linked
-
-int main() { return 0; }
-

diff  --git a/clang/test/Misc/target-invalid-cpu-note.c 
b/clang/test/Misc/target-invalid-cpu-note.c
index 935f7ad6b83c1..84bdb68b741c2 100644
--- a/clang/test/Misc/target-invalid-cpu-note.c
+++ b/clang/test/Misc/target-invalid-cpu-note.c
@@ -77,7 +77,7 @@
 
 // RUN: not %clang_cc1 -triple avr--- -target-cpu not-a-cpu -fsyntax-only %s 
2>&1 | FileCheck %s --check-prefix AVR
 // AVR: error: unknown target CPU 'not-a-cpu'
-// AVR-NEXT: note: valid target CPU values are: avr1, avr2, avr25, avr3, 
avr31, avr35, avr4, avr5, avr51, avr6, avrxmega1, avrxmega2, avrxmega3, 
avrxmega4, avrxmega5, avrxmega6, avrxmega7, avrtiny, at90s1200, attiny11, 
attiny12, attiny15, attiny28, at90s2313, at90s2323, at90s2333, at90s2343, 
attiny22, attiny26, at86rf401, at90s4414, at90s4433, at90s4434, at90s8515, 
at90c8534, at90s8535, ata5272, attiny13, attiny13a, attiny2313, attiny2313a, 
attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84, attiny84a, 
attiny25, attiny45, attiny85, attiny261, attiny261a, attiny441, attiny461, 
attiny461a, attiny841, attiny861, attiny861a, attiny87, attiny43u, attiny48, 
attiny88, attiny828, at43usb355, at76c711, atmega103, at43usb320, attiny167, 
at90usb82, at90usb162, ata5505, ata6617c, ata664251, atmega8u2, atmega16u2, 
atmega32u2, attiny1634, atmega8, ata6289, atmega8a, ata6285, ata6286, ata6612c, 
atmega48, atmega48a, atmega48pa, atmega48pb, atmega48p, atmega88, atmega88a, 
atmega88p, atmega88pa, atmega88pb, atmega8515, atmega8535, atmega8hva, 
at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, ata5702m322, 
ata5782, ata5790, ata5790n, ata5791, ata5795, ata5831, ata6613c, ata6614q, 
ata8210, ata8510, atmega16, atmega16a, atmega161, atmega162, atmega163, 
atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, atmega165p, 
atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa, atmega168pb, 
atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega32a, atmega323, 
atmega324a, atmega324p, atmega324pa, atmega324pb, atmega325, atmega325a, 
atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa, 
atmega328, atmega328p, atmega328pb, atmega329, atmega329a, atmega329p, 
atmega329pa, atmega3290, atmega3290a, atmega3290p, atmega3290pa, atmega406, 
atmega64, atmega64a, atmega640, atmega644, atmega644a, atmega644p, atmega644pa, 
atmega645, atmega645a, atmega645p, atmega649, atmega649a, atmega649p, 
atmega6450, atmega6450a, atmega6450p, atmega6490, atmega6490a, atmega6490p, 
atmega64rfr2, atmega644rfr2, atmega16hva, atmega16hva2, atmega16hvb, 
atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, atmega64hve, atmega64hve2, 
at90can32, at90can64, at90pwm161, at90pwm216, at90pwm316, atmega32c1, 
atmega64c1, atmega16m1, atmega32m1, atmega64m1, atmega16u4, atmega32u4, 
atmega32u6, at90usb646, at90usb647, at90scr100, at94k, m3000, atmega128, 
atmega128a, atmega1280, atmega1281, atmega1284, atmega1284p, atmega128rfa1, 
atmega128rfr2, atmega1284rfr2, at90can128, at90usb1286, at90usb1287, 
atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2, atxmega16a4, 
atxmega16a4u, atxmega16c4, atxmega16d4, atxmega32a4, atxmega32a4u, atxmega32c3, 
atxmega32c4, atxmega32d3, atxmega32d4, atxmega32e5, atxmega16e5, atxmega8e5, 
atxmega32x1, atxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3, 
atxmega64c3, atxmega64d3, atxmega64d4, atxmega64a1, atxmega64a1u, atxmega128a3, 
atxmega128a3u, atxmega128b1, atxmega128b3, atxmega128c3, atxmega128d3, 
atxmega128d4, atxmega192a3, atxmega192a3u, atxmega192c3, atxmega192d3, 
atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3, 
atxmega256d3, atxmega384c3, atxmega384d3, atxmega128a1, atxmega128a1u, 
atxmega128a4u, attiny4, attiny5, attiny9, attiny10, attiny20, attiny40, 
attiny102, attiny104, attiny202, attiny402, attiny204, attiny404, attiny804, 
attiny1604, attiny406, attiny806, attiny1606, attiny807, attiny1607, attiny212, 
attiny412, attiny214, attiny414, attiny814, attiny1614, attiny416, attiny816, 
attiny1616, attiny3216, attiny417, attiny817, attiny1617, attiny3217
+// AVR-NEXT: note: valid target CPU values are: avr1, avr2, avr25, avr3, 
avr31, avr35, avr4, avr5, avr51, avr6, avrxmega1, avrxmega2, avrxmega3, 
avrxmega4, avrxmega5, avrxmega6, avrxmega7, avrtiny, at90s1200, attiny11, 
attiny12, attiny15, attiny28, at90s2313, at90s2323, at90s2333, at90s2343, 
attiny22, attiny26, at86rf401, at90s4414, at90s4433, at90s4434, at90s8515, 
at90c8534, at90s8535, ata5272, ata6616c, attiny13, attiny13a, attiny2313, 
attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84, 
attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny441, 
attiny461, attiny461a, attiny841, attiny861, attiny861a, attiny87, attiny43u, 
attiny48, attiny88, attiny828, at43usb355, at76c711, atmega103, at43usb320, 
attiny167, at90usb82, at90usb162, ata5505, ata6617c, ata664251, atmega8u2, 
atmega16u2, atmega32u2, attiny1634, atmega8, ata6289, atmega8a, ata6285, 
ata6286, ata6612c, atmega48, atmega48a, atmega48pa, atmega48pb, atmega48p, 
atmega88, atmega88a, atmega88p, atmega88pa, atmega88pb, atmega8515, atmega8535, 
atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81, 
ata5702m322, ata5782, ata5790, ata5790n, ata5791, ata5795, ata5831, ata6613c, 
ata6614q, ata8210, ata8510, atmega16, atmega16a, atmega161, atmega162, 
atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a, 
atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa, 
atmega168pb, atmega169, atmega169a, atmega169p, atmega169pa, atmega32, 
atmega32a, atmega323, atmega324a, atmega324p, atmega324pa, atmega324pb, 
atmega325, atmega325a, atmega325p, atmega325pa, atmega3250, atmega3250a, 
atmega3250p, atmega3250pa, atmega328, atmega328p, atmega328pb, atmega329, 
atmega329a, atmega329p, atmega329pa, atmega3290, atmega3290a, atmega3290p, 
atmega3290pa, atmega406, atmega64, atmega64a, atmega640, atmega644, atmega644a, 
atmega644p, atmega644pa, atmega645, atmega645a, atmega645p, atmega649, 
atmega649a, atmega649p, atmega6450, atmega6450a, atmega6450p, atmega6490, 
atmega6490a, atmega6490p, atmega64rfr2, atmega644rfr2, atmega16hva, 
atmega16hva2, atmega16hvb, atmega16hvbrevb, atmega32hvb, atmega32hvbrevb, 
atmega64hve, atmega64hve2, at90can32, at90can64, at90pwm161, at90pwm216, 
at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1, atmega64m1, 
atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at90scr100, at94k, 
m3000, atmega128, atmega128a, atmega1280, atmega1281, atmega1284, atmega1284p, 
atmega128rfa1, atmega128rfr2, atmega1284rfr2, at90can128, at90usb1286, 
at90usb1287, atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2, 
atxmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega32a4, atxmega32a4u, 
atxmega32c3, atxmega32c4, atxmega32d3, atxmega32d4, atxmega32e5, atxmega16e5, 
atxmega8e5, atxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3, 
atxmega64c3, atxmega64d3, atxmega64d4, atxmega64a1, atxmega64a1u, atxmega128a3, 
atxmega128a3u, atxmega128b1, atxmega128b3, atxmega128c3, atxmega128d3, 
atxmega128d4, atxmega192a3, atxmega192a3u, atxmega192c3, atxmega192d3, 
atxmega256a3, atxmega256a3u, atxmega256a3b, atxmega256a3bu, atxmega256c3, 
atxmega256d3, atxmega384c3, atxmega384d3, atxmega128a1, atxmega128a1u, 
atxmega128a4u, attiny4, attiny5, attiny9, attiny10, attiny20, attiny40, 
attiny102, attiny104, attiny202, attiny402, attiny204, attiny404, attiny804, 
attiny1604, attiny406, attiny806, attiny1606, attiny807, attiny1607, attiny212, 
attiny412, attiny214, attiny414, attiny814, attiny1614, attiny416, attiny816, 
attiny1616, attiny3216, attiny417, attiny817, attiny1617, attiny3217, 
attiny1624, attiny1626, attiny1627, atmega808, atmega809, atmega1608, 
atmega1609, atmega3208, atmega3209, atmega4808, atmega4809
 
 // 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 97a6e3af2fc5c..3eb5a16204e7a 100644
--- a/llvm/lib/Target/AVR/AVRDevices.td
+++ b/llvm/lib/Target/AVR/AVRDevices.td
@@ -191,6 +191,12 @@ def FamilyTiny
              [FamilyAVR0, FeatureBREAK, FeatureSRAM, FeatureTinyEncoding,
               FeatureSmallStack]>;
 
+def FamilyXMEGA3 : Family<"xmega3",
+                          [FamilyAVR0, FeatureLPM, FeatureIJMPCALL,
+                           FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL,
+                           FeatureMultiplication, FeatureMOVW, FeatureLPMX,
+                           FeatureBREAK]>;
+
 def FamilyXMEGA : Family<"xmega",
                          [FamilyAVR0, FeatureLPM, FeatureIJMPCALL,
                           FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL,
@@ -236,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>;
@@ -265,6 +271,7 @@ def : Device<"at90s8515", FamilyAVR2, ELFArchAVR2>;
 def : Device<"at90c8534", FamilyAVR2, ELFArchAVR2>;
 def : Device<"at90s8535", FamilyAVR2, ELFArchAVR2>;
 def : Device<"ata5272", 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]>;
@@ -473,7 +480,6 @@ 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>;
@@ -514,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>;


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to