[clang] [llvm] [AVR] Add support for many new AVR mcus like AVR128DB28 (PR #143914)

2025-06-13 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor updated 
https://github.com/llvm/llvm-project/pull/143914

>From 3e070f4aa1e105a4f5b486b662e481195a0a4608 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH 1/3] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index f1529f857eef8..2ea80a039a7ff 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb32", "avrxmega3", "avrxm

[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor updated 
https://github.com/llvm/llvm-project/pull/143914

>From 3e070f4aa1e105a4f5b486b662e481195a0a4608 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH 1/5] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index f1529f857eef8..2ea80a039a7ff 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb32", "avrxmega3", "avrxm

[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

tomtor wrote:

Removed EIJMP for avr128 devices, see: 
https://onlinedocs.microchip.com/oxy/GUID-0B644D8F-67E7-49E6-82C9-1B2B9ABE6A0D-en-US-23/GUID-3F578DEB-6EE6-4081-AEF2-B505FF2AE8A5.html

https://github.com/llvm/llvm-project/pull/143914
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor edited 
https://github.com/llvm/llvm-project/pull/143914
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-15 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor updated 
https://github.com/llvm/llvm-project/pull/144229

>From 57a30b4bfd87a8389ab042b2c9184a59bf7f4519 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH 1/8] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index b0523a7f4e40e..f9242ec33cf5a 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb32", "avrxmega3", "avrxm

[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-15 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor updated 
https://github.com/llvm/llvm-project/pull/144229

>From 57a30b4bfd87a8389ab042b2c9184a59bf7f4519 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH 1/9] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index b0523a7f4e40e..f9242ec33cf5a 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb32", "avrxmega3", "avrxm

[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-15 Thread Tom Vijlbrief via cfe-commits

tomtor wrote:

Double checking 
https://onlinedocs.microchip.com/oxy/GUID-0B644D8F-67E7-49E6-82C9-1B2B9ABE6A0D-en-US-23/GUID-33953345-30E8-49BC-89A0-9734DC6EA5B9.html

https://github.com/llvm/llvm-project/pull/144229
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor updated 
https://github.com/llvm/llvm-project/pull/143914

>From 3e070f4aa1e105a4f5b486b662e481195a0a4608 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH 1/4] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index f1529f857eef8..2ea80a039a7ff 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb32", "avrxmega3", "avrxm

[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits


@@ -336,6 +336,9 @@ static MCUInfo AVRMcus[] = {
 {"attiny1624", "__AVR_ATtiny1624__", "103", 1},
 {"attiny1626", "__AVR_ATtiny1626__", "103", 1},
 {"attiny1627", "__AVR_ATtiny1627__", "103", 1},
+{"attiny3224", "__AVR_ATtiny1624__", "103", 1},

tomtor wrote:

Oops, missed that, fixed...

https://github.com/llvm/llvm-project/pull/143914
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits


@@ -326,8 +326,78 @@ constexpr struct {
 {"attiny1624", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny1626", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
+{"attiny3224", "avrxmega3", "avrxmega3", 0x803400},
+{"attiny3226", "avrxmega3", "avrxmega3", 0x803400},
+{"attiny3227", "avrxmega3", "avrxmega3", 0x803400},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr64da28", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64da32", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64da48", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64da64", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64db28", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64db32", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64db48", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64db64", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64dd14", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64dd20", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64dd28", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64dd32", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64du28", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64du32", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64ea28", "avrxmega2", "avrxmega2", 0x806800},
+{"avr64ea32", "avrxmega2", "avrxmega2", 0x806800},
+{"avr64ea48", "avrxmega2", "avrxmega2", 0x806800},
+{"avr64sd28", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64sd32", "avrxmega2", "avrxmega2", 0x806000},
+{"avr64sd48", "avrxmega2", "avrxmega2", 0x806000},
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},

tomtor wrote:

Avr32dd20: 4096 bytes ram
avr16dd20: 2048 bytes ram, just checked on 
https://www.microchip.com/en-us/product/AVR16DD20

Yes, all avr16* and avr32* have these same sizes. The last digit specifes 
number of pins, higher is more pins, and more uarts, etc.

https://github.com/llvm/llvm-project/pull/143914
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor edited 
https://github.com/llvm/llvm-project/pull/143914
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor edited 
https://github.com/llvm/llvm-project/pull/143914
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor edited 
https://github.com/llvm/llvm-project/pull/143914
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add support for many new AVR MCUs (PR #143914)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor edited 
https://github.com/llvm/llvm-project/pull/143914
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-15 Thread Tom Vijlbrief via cfe-commits

tomtor wrote:

For future reference, the avr16/avr32 devices do have SPM and SPMX features, 
but the current xmega3 definition has not.

Xmega3 is also used for modern attiny series which do not have SPM(X), so that 
is correct.

The avr64 devices use xmega2 which has SPM(X) defined, so that is also ok.

I prefer to leave the avr16/avr32 devices unchanged (using xmega3 to be in sync 
with gcc definitions), because the SPM instructions write flash and users can 
use asm if they want that feature. 

For me this PR is complete now.

https://github.com/llvm/llvm-project/pull/144229
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

tomtor wrote:

> LGTM. Thank you for updating the patch!

Thanks! I am now rebuilding after:

`cmake -S llvm -B build -G Ninja`




https://github.com/llvm/llvm-project/pull/144229
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

tomtor wrote:

My local tree build OK...

https://github.com/llvm/llvm-project/pull/144229
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor edited 
https://github.com/llvm/llvm-project/pull/144229
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

tomtor wrote:

@Patryk27 @benshi001 @kazutakahirata 

Oops, as you noticed I did not recompile after adding the avr64* models.

Sorry for that, changes are almost never trivial
Hope all is ok now, my local compile did compile my files, but ended with:

cc1plus: fatal error: 
/home/tom/src/rust/llvm-project/llvm/lib/DebugInfo/LogicalView/Core/LVSourceLanguage.cpp:
 No such file or
directory
compilation terminated.
[1758/5167] Building CXX object 
lib/DebugInfo/LogicalView/CMakeFiles/LLVMDebugInfoLogicalView.dir/Core/LVScope.cpp.o
ninja: build stopped: subcommand failed.

https://github.com/llvm/llvm-project/pull/144229
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-14 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor created 
https://github.com/llvm/llvm-project/pull/144229

https://github.com/llvm/llvm-project/pull/143914 failed to compile due to an 
unchecked late change. Sorry for that.

Added the missing XMEGA2 definition.



>From 57a30b4bfd87a8389ab042b2c9184a59bf7f4519 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH 1/6] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index b0523a7f4e40e..f9242ec33cf5a 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x8

[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-15 Thread Tom Vijlbrief via cfe-commits

tomtor wrote:

In the CI check I find one ` FAIL:`

```
2025-06-15T07:21:48.1250696Z FAIL: Flang :: Semantics/modfile76.F90 (3383 of 
3529)
2025-06-15T07:21:48.1251772Z  TEST 'Flang :: 
Semantics/modfile76.F90' FAILED 
```

but this is unrelated? (Flang, fortran)

https://github.com/llvm/llvm-project/pull/144229
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-15 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor updated 
https://github.com/llvm/llvm-project/pull/144229

>From 57a30b4bfd87a8389ab042b2c9184a59bf7f4519 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH 1/7] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index b0523a7f4e40e..f9242ec33cf5a 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb32", "avrxmega3", "avrxm

[clang] [llvm] [AVR] Add many new AVR MCU model definitions (PR #144229)

2025-06-15 Thread Tom Vijlbrief via cfe-commits

tomtor wrote:

@kazutakahirata Thanks again!

I noticed the failling check but could not find the cause in the enormous log 
file. Wondered if it could be caused by a timeout on the build, but it was this 
failing check.

Added new test patterns for the new MCUs.

Did not manage to run these tests locally yet, but will figure that out.

https://github.com/llvm/llvm-project/pull/144229
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] Add support for many new AVR mcus like AVR128DB28 (PR #143914)

2025-06-12 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor created 
https://github.com/llvm/llvm-project/pull/143914

Should fix https://github.com/llvm/llvm-project/issues/116116

>From 3e070f4aa1e105a4f5b486b662e481195a0a4608 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index f1529f857eef8..2ea80a039a7ff 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb28", "avrxmega3", "av

[clang] [llvm] Add support for many new AVR mcus like AVR128DB28 (PR #143914)

2025-06-12 Thread Tom Vijlbrief via cfe-commits

https://github.com/tomtor updated 
https://github.com/llvm/llvm-project/pull/143914

>From 3e070f4aa1e105a4f5b486b662e481195a0a4608 Mon Sep 17 00:00:00 2001
From: Tom Vijlbrief 
Date: Thu, 12 Jun 2025 16:59:46 +0200
Subject: [PATCH 1/2] Add support for many new AVR mcus like AVR128DB28

---
 clang/lib/Basic/Targets/AVR.cpp | 45 +
 clang/lib/Driver/ToolChains/AVR.cpp | 46 +
 llvm/lib/Target/AVR/AVRDevices.td   | 52 +
 3 files changed, 143 insertions(+)

diff --git a/clang/lib/Basic/Targets/AVR.cpp b/clang/lib/Basic/Targets/AVR.cpp
index 85ca4bc30c461..72268a50a247a 100644
--- a/clang/lib/Basic/Targets/AVR.cpp
+++ b/clang/lib/Basic/Targets/AVR.cpp
@@ -344,6 +344,51 @@ static MCUInfo AVRMcus[] = {
 {"atmega3209", "__AVR_ATmega3209__", "103", 1},
 {"atmega4808", "__AVR_ATmega4808__", "103", 1},
 {"atmega4809", "__AVR_ATmega4809__", "103", 1},
+
+// gcc 14 additions:
+
+{"avr16dd20", "__AVR_AVR16DD20__", "103", 1},
+{"avr16dd28", "__AVR_AVR16DD28__", "103", 1},
+{"avr16dd32", "__AVR_AVR16DD32__", "103", 1},
+{"avr16du14", "__AVR_AVR16DU14__", "103", 1},
+{"avr16du20", "__AVR_AVR16DU20__", "103", 1},
+{"avr16du28", "__AVR_AVR16DU28__", "103", 1},
+{"avr16du32", "__AVR_AVR16DU32__", "103", 1},
+{"avr32da28", "__AVR_AVR32DA28__", "103", 1},
+{"avr32da32", "__AVR_AVR32DA32__", "103", 1},
+{"avr32da48", "__AVR_AVR32DA48__", "103", 1},
+{"avr32db28", "__AVR_AVR32DB28__", "103", 1},
+{"avr32db32", "__AVR_AVR32DB32__", "103", 1},
+{"avr32db48", "__AVR_AVR32DB48__", "103", 1},
+{"avr32dd14", "__AVR_AVR32DD14__", "103", 1},
+{"avr32dd20", "__AVR_AVR32DD20__", "103", 1},
+{"avr32dd28", "__AVR_AVR32DD28__", "103", 1},
+{"avr32dd32", "__AVR_AVR32DD32__", "103", 1},
+{"avr32du14", "__AVR_AVR32DU14__", "103", 1},
+{"avr32du20", "__AVR_AVR32DU20__", "103", 1},
+{"avr32du28", "__AVR_AVR32DU28__", "103", 1},
+{"avr32du32", "__AVR_AVR32DU32__", "103", 1},
+{"avr16eb14", "__AVR_AVR16EB14__", "103", 1},
+{"avr16eb20", "__AVR_AVR16EB20__", "103", 1},
+{"avr16eb28", "__AVR_AVR16EB28__", "103", 1},
+{"avr16eb32", "__AVR_AVR16EB32__", "103", 1},
+{"avr16ea28", "__AVR_AVR16EA28__", "103", 1},
+{"avr16ea32", "__AVR_AVR16EA32__", "103", 1},
+{"avr16ea48", "__AVR_AVR16EA48__", "103", 1},
+{"avr32ea28", "__AVR_AVR32EA28__", "103", 1},
+{"avr32ea32", "__AVR_AVR32EA32__", "103", 1},
+{"avr32ea48", "__AVR_AVR32EA48__", "103", 1},
+{"avr32sd20", "__AVR_AVR32SD20__", "103", 1},
+{"avr32sd28", "__AVR_AVR32SD28__", "103", 1},
+{"avr32sd32", "__AVR_AVR32SD32__", "103", 1},
+{"avr128da28", "__AVR_AVR128DA28__", "104", 2},
+{"avr128da32", "__AVR_AVR128DA32__", "104", 2},
+{"avr128da48", "__AVR_AVR128DA48__", "104", 2},
+{"avr128da64", "__AVR_AVR128DA64__", "104", 2},
+{"avr128db28", "__AVR_AVR128DB28__", "104", 2},
+{"avr128db32", "__AVR_AVR128DB32__", "104", 2},
+{"avr128db48", "__AVR_AVR128DB48__", "104", 2},
+{"avr128db64", "__AVR_AVR128DB64__", "104", 2},
 };
 
 } // namespace targets
diff --git a/clang/lib/Driver/ToolChains/AVR.cpp 
b/clang/lib/Driver/ToolChains/AVR.cpp
index f1529f857eef8..2ea80a039a7ff 100644
--- a/clang/lib/Driver/ToolChains/AVR.cpp
+++ b/clang/lib/Driver/ToolChains/AVR.cpp
@@ -328,6 +328,52 @@ constexpr struct {
 {"attiny1627", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3216", "avrxmega3", "avrxmega3", 0x803800},
 {"attiny3217", "avrxmega3", "avrxmega3", 0x803800},
+
+// gcc 14 additions:
+
+{"avr16dd20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16dd32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16du32", "avrxmega3", "avrxmega3", 0x807800},
+{"avr32da28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32da48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32db48", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32dd32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du14", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du20", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du28", "avrxmega3", "avrxmega3", 0x807000},
+{"avr32du32", "avrxmega3", "avrxmega3", 0x807000},
+{"avr16eb14", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb20", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb28", "avrxmega3", "avrxmega3", 0x807800},
+{"avr16eb32", "avrxmega3", "avrxm