@@ -449,14 +449,21 @@ def FeatureSMEI64 : SubtargetFeature<"sme-i64", "HasSMEI64", "true",
449449def FeatureAppleA7SysReg : SubtargetFeature<"apple-a7-sysreg", "HasAppleA7SysReg", "true",
450450 "Apple A7 (the CPU formerly known as Cyclone)">;
451451
452+ def FeatureEL2VMSA : SubtargetFeature<"el2vmsa", "HasEL2VMSA", "true",
453+ "Enable Exception Level 2 Virtual Memory System Architecture">;
454+
455+ def FeatureEL3 : SubtargetFeature<"el3", "HasEL3", "true",
456+ "Enable Exception Level 3">;
452457
453458//===----------------------------------------------------------------------===//
454459// Architectures.
455460//
461+ def HasV8_0aOps : SubtargetFeature<"v8a", "HasV8_0aOps", "true",
462+ "Support ARM v8.0a instructions", [FeatureEL2VMSA, FeatureEL3]>;
456463
457464def HasV8_1aOps : SubtargetFeature<"v8.1a", "HasV8_1aOps", "true",
458- "Support ARM v8.1a instructions", [FeatureCRC, FeatureLSE, FeatureRDM ,
459- FeaturePAN, FeatureLOR, FeatureVH]>;
465+ "Support ARM v8.1a instructions", [HasV8_0aOps, FeatureCRC, FeatureLSE ,
466+ FeatureRDM, FeaturePAN, FeatureLOR, FeatureVH]>;
460467
461468def HasV8_2aOps : SubtargetFeature<"v8.2a", "HasV8_2aOps", "true",
462469 "Support ARM v8.2a instructions", [HasV8_1aOps, FeaturePsUAO,
@@ -898,8 +905,8 @@ def TuneTSV110 : SubtargetFeature<"tsv110", "ARMProcFamily", "TSV110",
898905
899906
900907def ProcessorFeatures {
901- list<SubtargetFeature> A53 = [FeatureCRC, FeatureCrypto, FeatureFPARMv8 ,
902- FeatureNEON, FeaturePerfMon];
908+ list<SubtargetFeature> A53 = [HasV8_0aOps, FeatureCRC, FeatureCrypto ,
909+ FeatureFPARMv8, FeatureNEON, FeaturePerfMon];
903910 list<SubtargetFeature> A55 = [HasV8_2aOps, FeatureCrypto, FeatureFPARMv8,
904911 FeatureNEON, FeatureFullFP16, FeatureDotProd,
905912 FeatureRCPC, FeaturePerfMon];
@@ -934,11 +941,11 @@ def ProcessorFeatures {
934941 FeatureSVE, FeatureComplxNum];
935942 list<SubtargetFeature> Carmel = [HasV8_2aOps, FeatureNEON, FeatureCrypto,
936943 FeatureFullFP16];
937- list<SubtargetFeature> AppleA7 = [FeatureCrypto, FeatureFPARMv8, FeatureNEON ,
938- FeaturePerfMon, FeatureAppleA7SysReg];
939- list<SubtargetFeature> AppleA10 = [FeatureCrypto, FeatureFPARMv8, FeatureNEON ,
940- FeaturePerfMon, FeatureCRC, FeatureRDM ,
941- FeaturePAN, FeatureLOR, FeatureVH];
944+ list<SubtargetFeature> AppleA7 = [HasV8_0aOps, FeatureCrypto, FeatureFPARMv8 ,
945+ FeatureNEON, FeaturePerfMon, FeatureAppleA7SysReg];
946+ list<SubtargetFeature> AppleA10 = [HasV8_0aOps, FeatureCrypto, FeatureFPARMv8 ,
947+ FeatureNEON, FeaturePerfMon, FeatureCRC ,
948+ FeatureRDM, FeaturePAN, FeatureLOR, FeatureVH];
942949 list<SubtargetFeature> AppleA11 = [HasV8_2aOps, FeatureCrypto, FeatureFPARMv8,
943950 FeatureNEON, FeaturePerfMon, FeatureFullFP16];
944951 list<SubtargetFeature> AppleA12 = [HasV8_3aOps, FeatureCrypto, FeatureFPARMv8,
@@ -952,11 +959,13 @@ def ProcessorFeatures {
952959 FeaturePredRes, FeatureCacheDeepPersist,
953960 FeatureFullFP16, FeatureFP16FML, FeatureSHA3,
954961 FeatureAltFPCmp];
955- list<SubtargetFeature> ExynosM3 = [FeatureCRC, FeatureCrypto, FeaturePerfMon];
962+ list<SubtargetFeature> ExynosM3 = [HasV8_0aOps, FeatureCRC, FeatureCrypto,
963+ FeaturePerfMon];
956964 list<SubtargetFeature> ExynosM4 = [HasV8_2aOps, FeatureCrypto, FeatureDotProd,
957965 FeatureFullFP16, FeaturePerfMon];
958- list<SubtargetFeature> Falkor = [FeatureCRC, FeatureCrypto, FeatureFPARMv8,
959- FeatureNEON, FeaturePerfMon, FeatureRDM];
966+ list<SubtargetFeature> Falkor = [HasV8_0aOps, FeatureCRC, FeatureCrypto,
967+ FeatureFPARMv8, FeatureNEON, FeaturePerfMon,
968+ FeatureRDM];
960969 list<SubtargetFeature> NeoverseE1 = [HasV8_2aOps, FeatureCrypto, FeatureDotProd,
961970 FeatureFPARMv8, FeatureFullFP16, FeatureNEON,
962971 FeatureRCPC, FeatureSSBS];
@@ -973,8 +982,8 @@ def ProcessorFeatures {
973982 FeatureSSBS, FeatureSVE];
974983 list<SubtargetFeature> Saphira = [HasV8_4aOps, FeatureCrypto, FeatureFPARMv8,
975984 FeatureNEON, FeatureSPE, FeaturePerfMon];
976- list<SubtargetFeature> ThunderX = [FeatureCRC, FeatureCrypto, FeatureFPARMv8 ,
977- FeaturePerfMon, FeatureNEON];
985+ list<SubtargetFeature> ThunderX = [HasV8_0aOps, FeatureCRC, FeatureCrypto ,
986+ FeatureFPARMv8, FeaturePerfMon, FeatureNEON];
978987 list<SubtargetFeature> ThunderX2T99 = [HasV8_1aOps, FeatureCRC, FeatureCrypto,
979988 FeatureFPARMv8, FeatureNEON, FeatureLSE];
980989 list<SubtargetFeature> ThunderX3T110 = [HasV8_3aOps, FeatureCRC, FeatureCrypto,
0 commit comments