Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions clang/lib/Basic/Targets/AVR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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},
{"attiny3226", "__AVR_ATtiny1626__", "103", 1},
{"attiny3227", "__AVR_ATtiny1627__", "103", 1},
{"atmega808", "__AVR_ATmega808__", "103", 1},
{"atmega809", "__AVR_ATmega809__", "103", 1},
{"atmega1608", "__AVR_ATmega1608__", "103", 1},
Expand All @@ -344,6 +347,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
Expand Down
49 changes: 49 additions & 0 deletions clang/lib/Driver/ToolChains/AVR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,57 @@ 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:

{"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", "avrxmega3", 0x807800},
{"avr16ea28", "avrxmega3", "avrxmega3", 0x807800},
{"avr16ea32", "avrxmega3", "avrxmega3", 0x807800},
{"avr16ea48", "avrxmega3", "avrxmega3", 0x807800},
{"avr32ea28", "avrxmega3", "avrxmega3", 0x807000},
{"avr32ea32", "avrxmega3", "avrxmega3", 0x807000},
{"avr32ea48", "avrxmega3", "avrxmega3", 0x807000},
{"avr32sd20", "avrxmega3", "avrxmega3", 0x807000},
{"avr32sd28", "avrxmega3", "avrxmega3", 0x807000},
{"avr32sd32", "avrxmega3", "avrxmega3", 0x807000},
{"avr128da28", "avrxmega4", "avrxmega4", 0x804000},
{"avr128da32", "avrxmega4", "avrxmega4", 0x804000},
{"avr128da48", "avrxmega4", "avrxmega4", 0x804000},
{"avr128da64", "avrxmega4", "avrxmega4", 0x804000},
{"avr128db28", "avrxmega4", "avrxmega4", 0x804000},
{"avr128db32", "avrxmega4", "avrxmega4", 0x804000},
{"avr128db48", "avrxmega4", "avrxmega4", 0x804000},
{"avr128db64", "avrxmega4", "avrxmega4", 0x804000},

};

std::string GetMCUSubPath(StringRef MCUName) {
Expand Down
55 changes: 55 additions & 0 deletions llvm/lib/Target/AVR/AVRDevices.td
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,13 @@ def FamilyXMEGA3 : Family<"xmega3",
FeatureMultiplication, FeatureMOVW, FeatureLPMX,
FeatureBREAK, FeatureLowByteFirst]>;

def FamilyXMEGA4 : Family<"xmega4",
[FamilyAVR0, FeatureLPM, FeatureIJMPCALL,
FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL,
FeatureMultiplication, FeatureMOVW, FeatureLPMX,
FeatureEIJMPCALL, FeatureELPM,
FeatureBREAK, FeatureLowByteFirst]>;

def FamilyXMEGA : Family<"xmega",
[FamilyAVR0, FeatureLPM, FeatureIJMPCALL,
FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL,
Expand Down Expand Up @@ -567,6 +574,9 @@ def : Device<"attiny3217", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"attiny1624", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"attiny1626", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"attiny1627", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"attiny3224", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"attiny3226", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"attiny3227", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"atmega808", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"atmega809", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"atmega1608", FamilyXMEGA3, ELFArchXMEGA3>;
Expand All @@ -575,3 +585,48 @@ def : Device<"atmega3208", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"atmega3209", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"atmega4808", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"atmega4809", FamilyXMEGA3, ELFArchXMEGA3>;

// Additions from gcc 14:

def : Device<"avr16dd20", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16dd28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16dd32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16du14", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16du20", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16du28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16du32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32da28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32da32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32da48", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32db28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32db32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32db48", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32dd14", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32dd20", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32dd28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32dd32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32du14", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32du20", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32du28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32du32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16eb14", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16eb20", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16eb28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16eb32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16ea28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16ea32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr16ea48", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32ea28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32ea32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32ea48", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32sd20", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32sd28", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr32sd32", FamilyXMEGA3, ELFArchXMEGA3>;
def : Device<"avr128da28", FamilyXMEGA4, ELFArchXMEGA4>;
def : Device<"avr128da32", FamilyXMEGA4, ELFArchXMEGA4>;
def : Device<"avr128da48", FamilyXMEGA4, ELFArchXMEGA4>;
def : Device<"avr128da64", FamilyXMEGA4, ELFArchXMEGA4>;
def : Device<"avr128db28", FamilyXMEGA4, ELFArchXMEGA4>;
def : Device<"avr128db32", FamilyXMEGA4, ELFArchXMEGA4>;
def : Device<"avr128db48", FamilyXMEGA4, ELFArchXMEGA4>;
def : Device<"avr128db64", FamilyXMEGA4, ELFArchXMEGA4>;
Loading