@@ -65,6 +65,18 @@ def FeatureLSE : SubtargetFeature<"lse", "HasLSE", "true",
65
65
def FeatureRDM : SubtargetFeature<"rdm", "HasRDM", "true",
66
66
"Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions">;
67
67
68
+ def FeaturePAN : SubtargetFeature<
69
+ "pan", "HasPAN", "true",
70
+ "Enables ARM v8.1 Privileged Access-Never extension">;
71
+
72
+ def FeatureLOR : SubtargetFeature<
73
+ "lor", "HasLOR", "true",
74
+ "Enables ARM v8.1 Limited Ordering Regions extension">;
75
+
76
+ def FeatureVH : SubtargetFeature<
77
+ "vh", "HasVH", "true",
78
+ "Enables ARM v8.1 Virtual Host extension">;
79
+
68
80
def FeaturePerfMon : SubtargetFeature<"perfmon", "HasPerfMon", "true",
69
81
"Enable ARMv8 PMUv3 Performance Monitors extension">;
70
82
@@ -77,6 +89,18 @@ def FeatureFP16FML : SubtargetFeature<"fp16fml", "HasFP16FML", "true",
77
89
def FeatureSPE : SubtargetFeature<"spe", "HasSPE", "true",
78
90
"Enable Statistical Profiling extension">;
79
91
92
+ def FeaturePAN_RWV : SubtargetFeature<
93
+ "pan-rwv", "HasPAN_RWV", "true",
94
+ "Enable v8.2 PAN s1e1R and s1e1W Variants",
95
+ [FeaturePAN]>;
96
+
97
+ // UAO PState
98
+ def FeaturePsUAO : SubtargetFeature< "uaops", "HasPsUAO", "true",
99
+ "Enable v8.2 UAO PState">;
100
+
101
+ def FeatureCCPP : SubtargetFeature<"ccpp", "HasCCPP",
102
+ "true", "Enable v8.2 data Cache Clean to Point of Persistence" >;
103
+
80
104
def FeatureSVE : SubtargetFeature<"sve", "HasSVE", "true",
81
105
"Enable Scalable Vector Extension (SVE) instructions">;
82
106
@@ -195,6 +219,66 @@ def FeatureDotProd : SubtargetFeature<
195
219
"dotprod", "HasDotProd", "true",
196
220
"Enable dot product support">;
197
221
222
+ def FeaturePA : SubtargetFeature<
223
+ "pa", "HasPA", "true",
224
+ "Enable v8.3-A Pointer Authentication enchancement">;
225
+
226
+ def FeatureJS : SubtargetFeature<
227
+ "jsconv", "HasJS", "true",
228
+ "Enable v8.3-A JavaScript FP conversion enchancement",
229
+ [FeatureFPARMv8]>;
230
+
231
+ def FeatureCCIDX : SubtargetFeature<
232
+ "ccidx", "HasCCIDX", "true",
233
+ "Enable v8.3-A Extend of the CCSIDR number of sets">;
234
+
235
+ def FeatureComplxNum : SubtargetFeature<
236
+ "complxnum", "HasComplxNum", "true",
237
+ "Enable v8.3-A Floating-point complex number support",
238
+ [FeatureNEON]>;
239
+
240
+ def FeatureNV : SubtargetFeature<
241
+ "nv", "HasNV", "true",
242
+ "Enable v8.4-A Nested Virtualization Enchancement">;
243
+
244
+ def FeatureRASv8_4 : SubtargetFeature<
245
+ "rasv8_4", "HasRASv8_4", "true",
246
+ "Enable v8.4-A Reliability, Availability and Serviceability extension",
247
+ [FeatureRAS]>;
248
+
249
+ def FeatureMPAM : SubtargetFeature<
250
+ "mpam", "HasMPAM", "true",
251
+ "Enable v8.4-A Memory system Partitioning and Monitoring extension">;
252
+
253
+ def FeatureDIT : SubtargetFeature<
254
+ "dit", "HasDIT", "true",
255
+ "Enable v8.4-A Data Independent Timing instructions">;
256
+
257
+ def FeatureTRACEV8_4 : SubtargetFeature<
258
+ "tracev8.4", "HasTRACEV8_4", "true",
259
+ "Enable v8.4-A Trace extension">;
260
+
261
+ def FeatureAM : SubtargetFeature<
262
+ "am", "HasAM", "true",
263
+ "Enable v8.4-A Activity Monitors extension">;
264
+
265
+ def FeatureSEL2 : SubtargetFeature<
266
+ "sel2", "HasSEL2", "true",
267
+ "Enable v8.4-A Secure Exception Level 2 extension">;
268
+
269
+ def FeatureTLB_RMI : SubtargetFeature<
270
+ "tlb-rmi", "HasTLB_RMI", "true",
271
+ "Enable v8.4-A TLB Range and Maintenance Instructions">;
272
+
273
+ def FeatureFMI : SubtargetFeature<
274
+ "fmi", "HasFMI", "true",
275
+ "Enable v8.4-A Flag Manipulation Instructions">;
276
+
277
+ // 8.4 RCPC enchancements: LDAPR & STLR instructions with Immediate Offset
278
+ def FeatureRCPC_IMMO : SubtargetFeature<"rcpc-immo", "HasRCPC_IMMO", "true",
279
+ "Enable v8.4-A RCPC instructions with Immediate Offsets",
280
+ [FeatureRCPC]>;
281
+
198
282
def FeatureNoNegativeImmediates : SubtargetFeature<"no-neg-immediates",
199
283
"NegativeImmediates", "false",
200
284
"Convert immediates and instructions "
@@ -229,7 +313,7 @@ def FeaturePredCtrl : SubtargetFeature<"predctrl", "HasPredCtrl", "true",
229
313
"Enable execution and data prediction invalidation instructions" >;
230
314
231
315
def FeatureCacheDeepPersist : SubtargetFeature<"ccdp", "HasCCDP",
232
- "true", "Enable Cache Clean to Point of Deep Persistence" >;
316
+ "true", "Enable v8.5 Cache Clean to Point of Deep Persistence" >;
233
317
234
318
def FeatureBranchTargetId : SubtargetFeature<"bti", "HasBTI",
235
319
"true", "Enable Branch Target Identification" >;
@@ -245,16 +329,22 @@ def FeatureMTE : SubtargetFeature<"mte", "HasMTE",
245
329
//
246
330
247
331
def HasV8_1aOps : SubtargetFeature<"v8.1a", "HasV8_1aOps", "true",
248
- "Support ARM v8.1a instructions", [FeatureCRC, FeatureLSE, FeatureRDM]>;
332
+ "Support ARM v8.1a instructions", [FeatureCRC, FeatureLSE, FeatureRDM,
333
+ FeaturePAN, FeatureLOR, FeatureVH]>;
249
334
250
335
def HasV8_2aOps : SubtargetFeature<"v8.2a", "HasV8_2aOps", "true",
251
- "Support ARM v8.2a instructions", [HasV8_1aOps, FeatureRAS]>;
336
+ "Support ARM v8.2a instructions", [HasV8_1aOps, FeaturePsUAO,
337
+ FeaturePAN_RWV, FeatureRAS, FeatureCCPP]>;
252
338
253
339
def HasV8_3aOps : SubtargetFeature<"v8.3a", "HasV8_3aOps", "true",
254
- "Support ARM v8.3a instructions", [HasV8_2aOps, FeatureRCPC]>;
340
+ "Support ARM v8.3a instructions", [HasV8_2aOps, FeatureRCPC, FeaturePA,
341
+ FeatureJS, FeatureCCIDX, FeatureComplxNum]>;
255
342
256
343
def HasV8_4aOps : SubtargetFeature<"v8.4a", "HasV8_4aOps", "true",
257
- "Support ARM v8.4a instructions", [HasV8_3aOps, FeatureDotProd]>;
344
+ "Support ARM v8.4a instructions", [HasV8_3aOps, FeatureDotProd,
345
+ FeatureNV, FeatureRASv8_4, FeatureMPAM, FeatureDIT,
346
+ FeatureTRACEV8_4, FeatureAM, FeatureSEL2, FeatureTLB_RMI,
347
+ FeatureFMI, FeatureRCPC_IMMO]>;
258
348
259
349
def HasV8_5aOps : SubtargetFeature<
260
350
"v8.5a", "HasV8_5aOps", "true", "Support ARM v8.5a instructions",
0 commit comments