Skip to content

Commit c3e9f7a

Browse files
committed
fixup! [AArch64] Add support for C1 CPUs
1 parent caec7fa commit c3e9f7a

File tree

2 files changed

+113
-109
lines changed

2 files changed

+113
-109
lines changed

llvm/lib/Target/AArch64/AArch64Processors.td

Lines changed: 111 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ def TuneA520AE : SubtargetFeature<"a520ae", "ARMProcFamily", "CortexA520",
6565
FeaturePostRAScheduler,
6666
FeatureUseWzrToVecMove]>;
6767

68+
def TuneC1Nano : SubtargetFeature<"c1-nano", "ARMProcFamily",
69+
"C1Nano", "C1-Nano ARM Processors",[
70+
FeatureFuseAES,
71+
FeatureFuseAdrpAdd,
72+
FeaturePostRAScheduler,
73+
FeatureUseWzrToVecMove,
74+
FeatureUseFixedOverScalableIfEqualCost]>;
75+
6876
def TuneA57 : SubtargetFeature<"a57", "ARMProcFamily", "CortexA57",
6977
"Cortex-A57 ARM processors", [
7078
FeatureFuseAES,
@@ -231,6 +239,18 @@ def TuneA725 : SubtargetFeature<"cortex-a725", "ARMProcFamily",
231239
FeatureEnableSelectOptimize,
232240
FeaturePredictableSelectIsExpensive]>;
233241

242+
def TuneC1Pro : SubtargetFeature<"c1-pro", "ARMProcFamily",
243+
"C1Pro", "C1-Pro ARM Processors",[
244+
FeatureFuseAES,
245+
FeaturePostRAScheduler,
246+
FeatureCmpBccFusion,
247+
FeatureALULSLFast,
248+
FeatureFuseAdrpAdd,
249+
FeatureFuseCmpCSel,
250+
FeatureFuseCmpCSet,
251+
FeatureEnableSelectOptimize,
252+
FeaturePredictableSelectIsExpensive]>;
253+
234254
def TuneR82 : SubtargetFeature<"cortex-r82", "ARMProcFamily",
235255
"CortexR82",
236256
"Cortex-R82 ARM processors", [
@@ -300,6 +320,32 @@ def TuneX925 : SubtargetFeature<"cortex-x925", "ARMProcFamily",
300320
FeatureAvoidLDAPUR,
301321
FeaturePredictableSelectIsExpensive]>;
302322

323+
def TuneC1Ultra : SubtargetFeature<"c1-ultra", "ARMProcFamily",
324+
"C1Ultra", "C1-Ultra ARM Processors",[
325+
FeatureALULSLFast,
326+
FeatureFuseAdrpAdd,
327+
FeatureFuseCmpCSel,
328+
FeatureFuseCmpCSet,
329+
FeatureFuseAES,
330+
FeaturePostRAScheduler,
331+
FeatureEnableSelectOptimize,
332+
FeatureUseFixedOverScalableIfEqualCost,
333+
FeatureAvoidLDAPUR,
334+
FeaturePredictableSelectIsExpensive]>;
335+
336+
def TuneC1Premium : SubtargetFeature<"c1-premium", "ARMProcFamily",
337+
"C1Premium", "C1-Premium ARM Processors",[
338+
FeatureALULSLFast,
339+
FeatureFuseAdrpAdd,
340+
FeatureFuseCmpCSel,
341+
FeatureFuseCmpCSet,
342+
FeatureFuseAES,
343+
FeaturePostRAScheduler,
344+
FeatureEnableSelectOptimize,
345+
FeatureUseFixedOverScalableIfEqualCost,
346+
FeatureAvoidLDAPUR,
347+
FeaturePredictableSelectIsExpensive]>;
348+
303349
def TuneA64FX : SubtargetFeature<"a64fx", "ARMProcFamily", "A64FX",
304350
"Fujitsu A64FX processors", [
305351
FeaturePostRAScheduler,
@@ -670,48 +716,6 @@ def TuneNeoverseV3AE : SubtargetFeature<"neoversev3AE", "ARMProcFamily", "Neover
670716
FeatureAvoidLDAPUR,
671717
FeaturePredictableSelectIsExpensive]>;
672718

673-
def TuneC1Nano : SubtargetFeature<"c1-nano", "ARMProcFamily",
674-
"C1Nano", "C1-Nano ARM Processors",[
675-
FeatureFuseAES,
676-
FeatureFuseAdrpAdd,
677-
FeaturePostRAScheduler,
678-
FeatureUseWzrToVecMove,
679-
FeatureUseFixedOverScalableIfEqualCost]>;
680-
681-
def TuneC1Pro : SubtargetFeature<"c1-pro", "ARMProcFamily",
682-
"C1Pro", "C1-Pro ARM Processors",[
683-
FeatureFuseAES,
684-
FeaturePostRAScheduler,
685-
FeatureCmpBccFusion,
686-
FeatureALULSLFast,
687-
FeatureFuseAdrpAdd,
688-
FeatureFuseCmpCSel,
689-
FeatureFuseCmpCSet,
690-
FeatureEnableSelectOptimize,
691-
FeaturePredictableSelectIsExpensive]>;
692-
693-
def TuneC1Premium : SubtargetFeature<"c1-premium", "ARMProcFamily",
694-
"C1Premium", "C1-Premium ARM Processors",[
695-
FeatureALULSLFast,
696-
FeatureFuseAdrpAdd,
697-
FeatureFuseAES,
698-
FeaturePostRAScheduler,
699-
FeatureEnableSelectOptimize,
700-
FeaturePredictableSelectIsExpensive]>;
701-
702-
def TuneC1Ultra : SubtargetFeature<"c1-ultra", "ARMProcFamily",
703-
"C1Ultra", "C1-Ultra ARM Processors",[
704-
FeatureALULSLFast,
705-
FeatureFuseAdrpAdd,
706-
FeatureFuseCmpCSel,
707-
FeatureFuseCmpCSet,
708-
FeatureFuseAES,
709-
FeaturePostRAScheduler,
710-
FeatureEnableSelectOptimize,
711-
FeatureUseFixedOverScalableIfEqualCost,
712-
FeatureAvoidLDAPUR,
713-
FeaturePredictableSelectIsExpensive]>;
714-
715719
def TuneSaphira : SubtargetFeature<"saphira", "ARMProcFamily", "Saphira",
716720
"Qualcomm Saphira processors", [
717721
FeaturePostRAScheduler,
@@ -888,6 +892,19 @@ def ProcessorFeatures {
888892
FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS,
889893
FeatureNEON, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM,
890894
FeatureDotProd, FeatureFPAC];
895+
list<SubtargetFeature> C1Nano = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
896+
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
897+
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
898+
FeatureVH, FeatureBF16, FeatureDotProd,
899+
FeatureFP16FML, FeatureFullFP16, FeatureMPAM,
900+
FeatureSVE, FeatureCCIDX, FeatureComplxNum,
901+
FeatureFPAC, FeatureJS, FeatureAM,
902+
FeatureRAS, FeatureSEL2, FeatureTRACEV8_4,
903+
FeatureAltFPCmp, FeatureFRInt3264,
904+
FeatureMTE, FeatureFineGrainedTraps,
905+
FeatureHCX, FeatureRCPC3, FeatureETE,
906+
FeatureSVEBitPerm, FeatureSVE2, FeatureTRBE,
907+
FeatureSME, FeatureSME2];
891908
list<SubtargetFeature> A65 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
892909
FeatureNEON, FeatureFullFP16, FeatureDotProd,
893910
FeatureRCPC, FeatureSSBS, FeatureRAS,
@@ -957,6 +974,20 @@ def ProcessorFeatures {
957974
FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,
958975
FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS,
959976
FeatureRCPC, FeatureRDM, FeatureFPAC];
977+
list<SubtargetFeature> C1Pro = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
978+
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
979+
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
980+
FeatureVH, FeatureBF16, FeatureDotProd,
981+
FeatureFP16FML, FeatureFullFP16, FeatureMPAM,
982+
FeatureSPE, FeatureSVE, FeatureCCIDX,
983+
FeatureComplxNum, FeatureFPAC, FeatureJS,
984+
FeatureAM, FeatureRAS, FeatureSEL2,
985+
FeatureTRACEV8_4, FeatureAltFPCmp,
986+
FeatureFRInt3264, FeatureMTE,
987+
FeatureFineGrainedTraps, FeatureHCX,
988+
FeatureSPE_EEF, FeatureRCPC3, FeatureETE,
989+
FeatureSVEBitPerm, FeatureSVE2, FeatureTRBE,
990+
FeatureSME, FeatureSME2];
960991
list<SubtargetFeature> R82 = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16,
961992
FeatureFP16FML, FeatureSSBS, FeaturePredRes,
962993
FeatureSB, FeatureRDM, FeatureDotProd,
@@ -1016,6 +1047,36 @@ def ProcessorFeatures {
10161047
FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,
10171048
FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS,
10181049
FeatureRCPC, FeatureRDM, FeatureFPAC];
1050+
list<SubtargetFeature> C1Ultra = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1051+
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
1052+
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
1053+
FeatureVH, FeatureBF16, FeatureDotProd,
1054+
FeatureFP16FML, FeatureFullFP16,
1055+
FeatureMPAM, FeatureSPE, FeatureSVE,
1056+
FeatureCCIDX, FeatureComplxNum, FeatureFPAC,
1057+
FeatureJS, FeatureAM, FeatureRAS,
1058+
FeatureSEL2, FeatureTRACEV8_4,
1059+
FeatureAltFPCmp, FeatureFRInt3264,
1060+
FeatureMTE, FeatureFineGrainedTraps,
1061+
FeatureHCX, FeatureSPE_EEF, FeatureRCPC3,
1062+
FeatureETE, FeatureSVEBitPerm, FeatureSVE2,
1063+
FeatureTRBE, FeatureSME, FeatureSME2];
1064+
list<SubtargetFeature> C1Premium = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1065+
FeatureCHK, FeatureFPARMv8,
1066+
FeaturePerfMon, FeatureSPECRES2,
1067+
FeatureSSBS, FeatureRDM, FeatureVH,
1068+
FeatureBF16, FeatureDotProd,
1069+
FeatureFP16FML, FeatureFullFP16,
1070+
FeatureMPAM, FeatureSPE, FeatureSVE,
1071+
FeatureCCIDX, FeatureComplxNum,
1072+
FeatureFPAC, FeatureJS, FeatureAM,
1073+
FeatureRAS, FeatureSEL2, FeatureTRACEV8_4,
1074+
FeatureAltFPCmp, FeatureFRInt3264,
1075+
FeatureMTE, FeatureFineGrainedTraps,
1076+
FeatureHCX, FeatureSPE_EEF, FeatureRCPC3,
1077+
FeatureETE, FeatureSVEBitPerm,
1078+
FeatureSVE2, FeatureTRBE, FeatureSME,
1079+
FeatureSME2];
10191080
list<SubtargetFeature> A64FX = [HasV8_2aOps, FeatureFPARMv8, FeatureNEON,
10201081
FeatureSHA2, FeaturePerfMon, FeatureFullFP16,
10211082
FeatureSVE, FeatureComplxNum,
@@ -1182,63 +1243,6 @@ def ProcessorFeatures {
11821243
FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS,
11831244
FeatureLSE, FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM,
11841245
FeatureRME, FeatureFPAC];
1185-
list<SubtargetFeature> C1Nano = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1186-
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
1187-
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
1188-
FeatureVH, FeatureBF16, FeatureDotProd,
1189-
FeatureFP16FML, FeatureFullFP16, FeatureMPAM,
1190-
FeatureSVE, FeatureCCIDX, FeatureComplxNum,
1191-
FeatureFPAC, FeatureJS, FeatureAM,
1192-
FeatureRAS, FeatureSEL2, FeatureTRACEV8_4,
1193-
FeatureAltFPCmp, FeatureFRInt3264,
1194-
FeatureMTE, FeatureFineGrainedTraps,
1195-
FeatureHCX, FeatureRCPC3, FeatureETE,
1196-
FeatureSVEBitPerm, FeatureSVE2, FeatureTRBE,
1197-
FeatureSME, FeatureSME2];
1198-
list<SubtargetFeature> C1Pro = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1199-
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
1200-
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
1201-
FeatureVH, FeatureBF16, FeatureDotProd,
1202-
FeatureFP16FML, FeatureFullFP16, FeatureMPAM,
1203-
FeatureSPE, FeatureSVE, FeatureCCIDX,
1204-
FeatureComplxNum, FeatureFPAC, FeatureJS,
1205-
FeatureAM, FeatureRAS, FeatureSEL2,
1206-
FeatureTRACEV8_4, FeatureAltFPCmp,
1207-
FeatureFRInt3264, FeatureMTE,
1208-
FeatureFineGrainedTraps, FeatureHCX,
1209-
FeatureSPE_EEF, FeatureRCPC3, FeatureETE,
1210-
FeatureSVEBitPerm, FeatureSVE2, FeatureTRBE,
1211-
FeatureSME, FeatureSME2];
1212-
list<SubtargetFeature> C1Premium = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1213-
FeatureCHK, FeatureFPARMv8,
1214-
FeaturePerfMon, FeatureSPECRES2,
1215-
FeatureSSBS, FeatureRDM, FeatureVH,
1216-
FeatureBF16, FeatureDotProd,
1217-
FeatureFP16FML, FeatureFullFP16,
1218-
FeatureMPAM, FeatureSPE, FeatureSVE,
1219-
FeatureCCIDX, FeatureComplxNum,
1220-
FeatureFPAC, FeatureJS, FeatureAM,
1221-
FeatureRAS, FeatureSEL2, FeatureTRACEV8_4,
1222-
FeatureAltFPCmp, FeatureFRInt3264,
1223-
FeatureMTE, FeatureFineGrainedTraps,
1224-
FeatureHCX, FeatureSPE_EEF, FeatureRCPC3,
1225-
FeatureETE, FeatureSVEBitPerm,
1226-
FeatureSVE2, FeatureTRBE, FeatureSME,
1227-
FeatureSME2];
1228-
list<SubtargetFeature> C1Ultra = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1229-
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
1230-
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
1231-
FeatureVH, FeatureBF16, FeatureDotProd,
1232-
FeatureFP16FML, FeatureFullFP16,
1233-
FeatureMPAM, FeatureSPE, FeatureSVE,
1234-
FeatureCCIDX, FeatureComplxNum, FeatureFPAC,
1235-
FeatureJS, FeatureAM, FeatureRAS,
1236-
FeatureSEL2, FeatureTRACEV8_4,
1237-
FeatureAltFPCmp, FeatureFRInt3264,
1238-
FeatureMTE, FeatureFineGrainedTraps,
1239-
FeatureHCX, FeatureSPE_EEF, FeatureRCPC3,
1240-
FeatureETE, FeatureSVEBitPerm, FeatureSVE2,
1241-
FeatureTRBE, FeatureSME, FeatureSME2];
12421246
list<SubtargetFeature> Saphira = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
12431247
FeatureNEON, FeatureSPE, FeaturePerfMon, FeatureCRC,
12441248
FeatureCCIDX,
@@ -1328,6 +1332,8 @@ def : ProcessorModel<"cortex-a520", CortexA510Model, ProcessorFeatures.A520,
13281332
[TuneA520]>;
13291333
def : ProcessorModel<"cortex-a520ae", CortexA510Model, ProcessorFeatures.A520AE,
13301334
[TuneA520AE]>;
1335+
def : ProcessorModel<"c1-nano", NeoverseN2Model,
1336+
ProcessorFeatures.C1Nano, [TuneC1Nano]>;
13311337
def : ProcessorModel<"cortex-a57", CortexA57Model, ProcessorFeatures.A53,
13321338
[TuneA57]>;
13331339
def : ProcessorModel<"cortex-a65", CortexA53Model, ProcessorFeatures.A65,
@@ -1362,6 +1368,8 @@ def : ProcessorModel<"cortex-a720ae", NeoverseN2Model, ProcessorFeatures.A720AE,
13621368
[TuneA720AE]>;
13631369
def : ProcessorModel<"cortex-a725", NeoverseN3Model, ProcessorFeatures.A725,
13641370
[TuneA725]>;
1371+
def : ProcessorModel<"c1-pro", NeoverseN2Model,
1372+
ProcessorFeatures.C1Pro, [TuneC1Pro]>;
13651373
def : ProcessorModel<"cortex-r82", CortexA55Model, ProcessorFeatures.R82,
13661374
[TuneR82]>;
13671375
def : ProcessorModel<"cortex-r82ae", CortexA55Model, ProcessorFeatures.R82AE,
@@ -1378,6 +1386,10 @@ def : ProcessorModel<"cortex-x4", NeoverseV3Model, ProcessorFeatures.X4,
13781386
[TuneX4]>;
13791387
def : ProcessorModel<"cortex-x925", NeoverseV3Model, ProcessorFeatures.X925,
13801388
[TuneX925]>;
1389+
def : ProcessorModel<"c1-ultra", NeoverseV3Model,
1390+
ProcessorFeatures.C1Ultra, [TuneC1Ultra]>;
1391+
def : ProcessorModel<"c1-premium", NeoverseV3Model,
1392+
ProcessorFeatures.C1Premium, [TuneC1Premium]>;
13811393
def : ProcessorModel<"gb10", NeoverseV3Model, ProcessorFeatures.GB10,
13821394
[TuneX925]>;
13831395
def : ProcessorModel<"grace", NeoverseV2Model, ProcessorFeatures.Grace,
@@ -1401,14 +1413,6 @@ def : ProcessorModel<"neoverse-v3", NeoverseV3Model,
14011413
ProcessorFeatures.NeoverseV3, [TuneNeoverseV3]>;
14021414
def : ProcessorModel<"neoverse-v3ae", NeoverseV3AEModel,
14031415
ProcessorFeatures.NeoverseV3AE, [TuneNeoverseV3AE]>;
1404-
def : ProcessorModel<"c1-nano", CortexA510Model,
1405-
ProcessorFeatures.C1Nano, [TuneC1Nano]>;
1406-
def : ProcessorModel<"c1-pro", NeoverseN2Model,
1407-
ProcessorFeatures.C1Pro, [TuneC1Pro]>;
1408-
def : ProcessorModel<"c1-premium", NeoverseV3Model,
1409-
ProcessorFeatures.C1Premium, [TuneC1Premium]>;
1410-
def : ProcessorModel<"c1-ultra", NeoverseV3Model,
1411-
ProcessorFeatures.C1Ultra, [TuneC1Ultra]>;
14121416
def : ProcessorModel<"exynos-m3", ExynosM3Model, ProcessorFeatures.ExynosM3,
14131417
[TuneExynosM3]>;
14141418
def : ProcessorModel<"exynos-m4", ExynosM4Model, ProcessorFeatures.ExynosM4,

llvm/lib/Target/AArch64/AArch64Subtarget.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,13 +187,13 @@ void AArch64Subtarget::initializeProperties(bool HasMinSize) {
187187
case CortexA715:
188188
case CortexA720:
189189
case CortexA725:
190+
case C1Pro:
190191
case CortexX2:
191192
case CortexX3:
192193
case CortexX4:
193194
case CortexX925:
194-
case C1Premium:
195-
case C1Pro:
196195
case C1Ultra:
196+
case C1Premium:
197197
PrefFunctionAlignment = Align(16);
198198
VScaleForTuning = 1;
199199
PrefLoopAlignment = Align(32);

0 commit comments

Comments
 (0)