@@ -49,6 +49,16 @@ def FeatureEIJMPCALL : SubtargetFeature<"eijmpcall", "HasEIJMPCALL", "true",
49
49
"The device supports the "
50
50
"`EIJMP`/`EICALL` instructions">;
51
51
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
+
52
62
// The device supports `ADDI Rd, K`, `SUBI Rd, K`.
53
63
def FeatureADDSUBIW : SubtargetFeature<"addsubiw", "HasADDSUBIW", "true",
54
64
"Enable 16-bit register-immediate "
@@ -220,6 +230,7 @@ def FamilyXMEGA3 : Family<"xmega3",
220
230
[FamilyAVR0, FeatureLPM, FeatureIJMPCALL,
221
231
FeatureADDSUBIW, FeatureSRAM, FeatureJMPCALL,
222
232
FeatureMultiplication, FeatureMOVW, FeatureLPMX,
233
+ FeatureMAP,
223
234
FeatureBREAK, FeatureLowByteFirst]>;
224
235
225
236
def FamilyXMEGA4 : Family<"xmega4",
@@ -228,6 +239,7 @@ def FamilyXMEGA4 : Family<"xmega4",
228
239
FeatureMultiplication, FeatureMOVW, FeatureLPMX,
229
240
FeatureELPM, FeatureELPMX,
230
241
FeatureSPM, FeatureSPMX,
242
+ FeatureFLMAP,
231
243
FeatureBREAK, FeatureLowByteFirst]>;
232
244
233
245
def FamilyXMEGA : Family<"xmega",
@@ -275,9 +287,9 @@ def : Device<"avr5", FamilyAVR5, ELFArchAVR5>;
275
287
def : Device<"avr51", FamilyAVR51, ELFArchAVR51>;
276
288
def : Device<"avr6", FamilyAVR6, ELFArchAVR6>;
277
289
def : Device<"avrxmega1", FamilyXMEGA, ELFArchXMEGA1>;
278
- def : Device<"avrxmega2", FamilyXMEGA , ELFArchXMEGA2>;
290
+ def : Device<"avrxmega2", FamilyXMEGA2 , ELFArchXMEGA2>;
279
291
def : Device<"avrxmega3", FamilyXMEGA3, ELFArchXMEGA3>;
280
- def : Device<"avrxmega4", FamilyXMEGA , ELFArchXMEGA4>;
292
+ def : Device<"avrxmega4", FamilyXMEGA4 , ELFArchXMEGA4>;
281
293
def : Device<"avrxmega5", FamilyXMEGA, ELFArchXMEGA5>;
282
294
def : Device<"avrxmega6", FamilyXMEGA, ELFArchXMEGA6>;
283
295
def : Device<"avrxmega7", FamilyXMEGA, ELFArchXMEGA7>;
@@ -596,26 +608,26 @@ def : Device<"atmega4809", FamilyXMEGA3, ELFArchXMEGA3>;
596
608
597
609
// Additions from gcc 14:
598
610
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] >;
619
631
620
632
def : Device<"avr16dd20", FamilyXMEGA3, ELFArchXMEGA3>;
621
633
def : Device<"avr16dd28", FamilyXMEGA3, ELFArchXMEGA3>;
0 commit comments