@@ -49,6 +49,16 @@ def FeatureEIJMPCALL : SubtargetFeature<"eijmpcall", "HasEIJMPCALL", "true",
4949 "The device supports the "
5050 "`EIJMP`/`EICALL` instructions">;
5151
52+ // The device supports `FLMAP` flash bank data mapping to the data space.
53+ def FeatureFLMAP : SubtargetFeature<"flmap", "HasFLMAP", "true",
54+ "The device supports the "
55+ "`FLMAP` mapping">;
56+
57+ // The device maps all flash (<= 32kB) to the data space.
58+ def FeatureMAP : SubtargetFeature<"map", "HasMAP", "true",
59+ "The device maps all flash (<= 32kB) "
60+ "to the data space">;
61+
5262// The device supports `ADDI Rd, K`, `SUBI Rd, K`.
5363def FeatureADDSUBIW : SubtargetFeature<"addsubiw", "HasADDSUBIW", "true",
5464 "Enable 16-bit register-immediate "
@@ -220,6 +230,7 @@ def FamilyXMEGA3 : Family<"xmega3",
220230 [FamilyAVR0, FeatureLPM, FeatureIJMPCALL,
221231 FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL,
222232 FeatureMultiplication, FeatureMOVW, FeatureLPMX,
233+ FeatureMAP,
223234 FeatureBREAK, FeatureLowByteFirst]>;
224235
225236def FamilyXMEGA4 : Family<"xmega4",
@@ -228,6 +239,7 @@ def FamilyXMEGA4 : Family<"xmega4",
228239 FeatureMultiplication, FeatureMOVW, FeatureLPMX,
229240 FeatureELPM, FeatureELPMX,
230241 FeatureSPM, FeatureSPMX,
242+ FeatureFLMAP,
231243 FeatureBREAK, FeatureLowByteFirst]>;
232244
233245def FamilyXMEGA : Family<"xmega",
@@ -275,9 +287,9 @@ def : Device<"avr5", FamilyAVR5, ELFArchAVR5>;
275287def : Device<"avr51", FamilyAVR51, ELFArchAVR51>;
276288def : Device<"avr6", FamilyAVR6, ELFArchAVR6>;
277289def : Device<"avrxmega1", FamilyXMEGA, ELFArchXMEGA1>;
278- def : Device<"avrxmega2", FamilyXMEGA , ELFArchXMEGA2>;
290+ def : Device<"avrxmega2", FamilyXMEGA2 , ELFArchXMEGA2>;
279291def : Device<"avrxmega3", FamilyXMEGA3, ELFArchXMEGA3>;
280- def : Device<"avrxmega4", FamilyXMEGA , ELFArchXMEGA4>;
292+ def : Device<"avrxmega4", FamilyXMEGA4 , ELFArchXMEGA4>;
281293def : Device<"avrxmega5", FamilyXMEGA, ELFArchXMEGA5>;
282294def : Device<"avrxmega6", FamilyXMEGA, ELFArchXMEGA6>;
283295def : Device<"avrxmega7", FamilyXMEGA, ELFArchXMEGA7>;
@@ -596,26 +608,26 @@ def : Device<"atmega4809", FamilyXMEGA3, ELFArchXMEGA3>;
596608
597609// Additions from gcc 14:
598610
599- def : Device<"avr64da28", FamilyXMEGA2, ELFArchXMEGA2>;
600- def : Device<"avr64da32", FamilyXMEGA2, ELFArchXMEGA2>;
601- def : Device<"avr64da48", FamilyXMEGA2, ELFArchXMEGA2>;
602- def : Device<"avr64da64", FamilyXMEGA2, ELFArchXMEGA2>;
603- def : Device<"avr64db28", FamilyXMEGA2, ELFArchXMEGA2>;
604- def : Device<"avr64db32", FamilyXMEGA2, ELFArchXMEGA2>;
605- def : Device<"avr64db48", FamilyXMEGA2, ELFArchXMEGA2>;
606- def : Device<"avr64db64", FamilyXMEGA2, ELFArchXMEGA2>;
607- def : Device<"avr64dd14", FamilyXMEGA2, ELFArchXMEGA2>;
608- def : Device<"avr64dd20", FamilyXMEGA2, ELFArchXMEGA2>;
609- def : Device<"avr64dd28", FamilyXMEGA2, ELFArchXMEGA2>;
610- def : Device<"avr64dd32", FamilyXMEGA2, ELFArchXMEGA2>;
611- def : Device<"avr64du28", FamilyXMEGA2, ELFArchXMEGA2>;
612- def : Device<"avr64du32", FamilyXMEGA2, ELFArchXMEGA2>;
613- def : Device<"avr64ea28", FamilyXMEGA2, ELFArchXMEGA2>;
614- def : Device<"avr64ea32", FamilyXMEGA2, ELFArchXMEGA2>;
615- def : Device<"avr64ea48", FamilyXMEGA2, ELFArchXMEGA2>;
616- def : Device<"avr64sd28", FamilyXMEGA2, ELFArchXMEGA2>;
617- def : Device<"avr64sd32", FamilyXMEGA2, ELFArchXMEGA2>;
618- def : Device<"avr64sd48", FamilyXMEGA2, ELFArchXMEGA2>;
611+ def : Device<"avr64da28", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
612+ def : Device<"avr64da32", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
613+ def : Device<"avr64da48", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
614+ def : Device<"avr64da64", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
615+ def : Device<"avr64db28", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
616+ def : Device<"avr64db32", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
617+ def : Device<"avr64db48", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
618+ def : Device<"avr64db64", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
619+ def : Device<"avr64dd14", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
620+ def : Device<"avr64dd20", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
621+ def : Device<"avr64dd28", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
622+ def : Device<"avr64dd32", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
623+ def : Device<"avr64du28", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
624+ def : Device<"avr64du32", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
625+ def : Device<"avr64ea28", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
626+ def : Device<"avr64ea32", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
627+ def : Device<"avr64ea48", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
628+ def : Device<"avr64sd28", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
629+ def : Device<"avr64sd32", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
630+ def : Device<"avr64sd48", FamilyXMEGA2, ELFArchXMEGA2, [FeatureFLMAP] >;
619631
620632def : Device<"avr16dd20", FamilyXMEGA3, ELFArchXMEGA3>;
621633def : Device<"avr16dd28", FamilyXMEGA3, ELFArchXMEGA3>;
0 commit comments