Skip to content

Commit 01856a4

Browse files
committed
fixup! [AArch64] Add support for C1 CPUs
1 parent 6558a3c commit 01856a4

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,
@@ -669,48 +715,6 @@ def TuneNeoverseV3AE : SubtargetFeature<"neoversev3AE", "ARMProcFamily", "Neover
669715
FeatureAvoidLDAPUR,
670716
FeaturePredictableSelectIsExpensive]>;
671717

672-
def TuneC1Nano : SubtargetFeature<"c1-nano", "ARMProcFamily",
673-
"C1Nano", "C1-Nano ARM Processors",[
674-
FeatureFuseAES,
675-
FeatureFuseAdrpAdd,
676-
FeaturePostRAScheduler,
677-
FeatureUseWzrToVecMove,
678-
FeatureUseFixedOverScalableIfEqualCost]>;
679-
680-
def TuneC1Pro : SubtargetFeature<"c1-pro", "ARMProcFamily",
681-
"C1Pro", "C1-Pro ARM Processors",[
682-
FeatureFuseAES,
683-
FeaturePostRAScheduler,
684-
FeatureCmpBccFusion,
685-
FeatureALULSLFast,
686-
FeatureFuseAdrpAdd,
687-
FeatureFuseCmpCSel,
688-
FeatureFuseCmpCSet,
689-
FeatureEnableSelectOptimize,
690-
FeaturePredictableSelectIsExpensive]>;
691-
692-
def TuneC1Premium : SubtargetFeature<"c1-premium", "ARMProcFamily",
693-
"C1Premium", "C1-Premium ARM Processors",[
694-
FeatureALULSLFast,
695-
FeatureFuseAdrpAdd,
696-
FeatureFuseAES,
697-
FeaturePostRAScheduler,
698-
FeatureEnableSelectOptimize,
699-
FeaturePredictableSelectIsExpensive]>;
700-
701-
def TuneC1Ultra : SubtargetFeature<"c1-ultra", "ARMProcFamily",
702-
"C1Ultra", "C1-Ultra ARM Processors",[
703-
FeatureALULSLFast,
704-
FeatureFuseAdrpAdd,
705-
FeatureFuseCmpCSel,
706-
FeatureFuseCmpCSet,
707-
FeatureFuseAES,
708-
FeaturePostRAScheduler,
709-
FeatureEnableSelectOptimize,
710-
FeatureUseFixedOverScalableIfEqualCost,
711-
FeatureAvoidLDAPUR,
712-
FeaturePredictableSelectIsExpensive]>;
713-
714718
def TuneSaphira : SubtargetFeature<"saphira", "ARMProcFamily", "Saphira",
715719
"Qualcomm Saphira processors", [
716720
FeaturePostRAScheduler,
@@ -887,6 +891,19 @@ def ProcessorFeatures {
887891
FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS,
888892
FeatureNEON, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM,
889893
FeatureDotProd, FeatureFPAC];
894+
list<SubtargetFeature> C1Nano = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
895+
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
896+
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
897+
FeatureVH, FeatureBF16, FeatureDotProd,
898+
FeatureFP16FML, FeatureFullFP16, FeatureMPAM,
899+
FeatureSVE, FeatureCCIDX, FeatureComplxNum,
900+
FeatureFPAC, FeatureJS, FeatureAM,
901+
FeatureRAS, FeatureSEL2, FeatureTRACEV8_4,
902+
FeatureAltFPCmp, FeatureFRInt3264,
903+
FeatureMTE, FeatureFineGrainedTraps,
904+
FeatureHCX, FeatureRCPC3, FeatureETE,
905+
FeatureSVEBitPerm, FeatureSVE2, FeatureTRBE,
906+
FeatureSME, FeatureSME2];
890907
list<SubtargetFeature> A65 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
891908
FeatureNEON, FeatureFullFP16, FeatureDotProd,
892909
FeatureRCPC, FeatureSSBS, FeatureRAS,
@@ -956,6 +973,20 @@ def ProcessorFeatures {
956973
FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,
957974
FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS,
958975
FeatureRCPC, FeatureRDM, FeatureFPAC];
976+
list<SubtargetFeature> C1Pro = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
977+
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
978+
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
979+
FeatureVH, FeatureBF16, FeatureDotProd,
980+
FeatureFP16FML, FeatureFullFP16, FeatureMPAM,
981+
FeatureSPE, FeatureSVE, FeatureCCIDX,
982+
FeatureComplxNum, FeatureFPAC, FeatureJS,
983+
FeatureAM, FeatureRAS, FeatureSEL2,
984+
FeatureTRACEV8_4, FeatureAltFPCmp,
985+
FeatureFRInt3264, FeatureMTE,
986+
FeatureFineGrainedTraps, FeatureHCX,
987+
FeatureSPE_EEF, FeatureRCPC3, FeatureETE,
988+
FeatureSVEBitPerm, FeatureSVE2, FeatureTRBE,
989+
FeatureSME, FeatureSME2];
959990
list<SubtargetFeature> R82 = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16,
960991
FeatureFP16FML, FeatureSSBS, FeaturePredRes,
961992
FeatureSB, FeatureRDM, FeatureDotProd,
@@ -1015,6 +1046,36 @@ def ProcessorFeatures {
10151046
FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,
10161047
FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS,
10171048
FeatureRCPC, FeatureRDM, FeatureFPAC];
1049+
list<SubtargetFeature> C1Ultra = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1050+
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
1051+
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
1052+
FeatureVH, FeatureBF16, FeatureDotProd,
1053+
FeatureFP16FML, FeatureFullFP16,
1054+
FeatureMPAM, FeatureSPE, FeatureSVE,
1055+
FeatureCCIDX, FeatureComplxNum, FeatureFPAC,
1056+
FeatureJS, FeatureAM, FeatureRAS,
1057+
FeatureSEL2, FeatureTRACEV8_4,
1058+
FeatureAltFPCmp, FeatureFRInt3264,
1059+
FeatureMTE, FeatureFineGrainedTraps,
1060+
FeatureHCX, FeatureSPE_EEF, FeatureRCPC3,
1061+
FeatureETE, FeatureSVEBitPerm, FeatureSVE2,
1062+
FeatureTRBE, FeatureSME, FeatureSME2];
1063+
list<SubtargetFeature> C1Premium = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1064+
FeatureCHK, FeatureFPARMv8,
1065+
FeaturePerfMon, FeatureSPECRES2,
1066+
FeatureSSBS, FeatureRDM, FeatureVH,
1067+
FeatureBF16, FeatureDotProd,
1068+
FeatureFP16FML, FeatureFullFP16,
1069+
FeatureMPAM, FeatureSPE, FeatureSVE,
1070+
FeatureCCIDX, FeatureComplxNum,
1071+
FeatureFPAC, FeatureJS, FeatureAM,
1072+
FeatureRAS, FeatureSEL2, FeatureTRACEV8_4,
1073+
FeatureAltFPCmp, FeatureFRInt3264,
1074+
FeatureMTE, FeatureFineGrainedTraps,
1075+
FeatureHCX, FeatureSPE_EEF, FeatureRCPC3,
1076+
FeatureETE, FeatureSVEBitPerm,
1077+
FeatureSVE2, FeatureTRBE, FeatureSME,
1078+
FeatureSME2];
10181079
list<SubtargetFeature> A64FX = [HasV8_2aOps, FeatureFPARMv8, FeatureNEON,
10191080
FeatureSHA2, FeaturePerfMon, FeatureFullFP16,
10201081
FeatureSVE, FeatureComplxNum,
@@ -1181,63 +1242,6 @@ def ProcessorFeatures {
11811242
FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS,
11821243
FeatureLSE, FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM,
11831244
FeatureRME, FeatureFPAC];
1184-
list<SubtargetFeature> C1Nano = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1185-
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
1186-
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
1187-
FeatureVH, FeatureBF16, FeatureDotProd,
1188-
FeatureFP16FML, FeatureFullFP16, FeatureMPAM,
1189-
FeatureSVE, FeatureCCIDX, FeatureComplxNum,
1190-
FeatureFPAC, FeatureJS, FeatureAM,
1191-
FeatureRAS, FeatureSEL2, FeatureTRACEV8_4,
1192-
FeatureAltFPCmp, FeatureFRInt3264,
1193-
FeatureMTE, FeatureFineGrainedTraps,
1194-
FeatureHCX, FeatureRCPC3, FeatureETE,
1195-
FeatureSVEBitPerm, FeatureSVE2, FeatureTRBE,
1196-
FeatureSME, FeatureSME2];
1197-
list<SubtargetFeature> C1Pro = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1198-
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
1199-
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
1200-
FeatureVH, FeatureBF16, FeatureDotProd,
1201-
FeatureFP16FML, FeatureFullFP16, FeatureMPAM,
1202-
FeatureSPE, FeatureSVE, FeatureCCIDX,
1203-
FeatureComplxNum, FeatureFPAC, FeatureJS,
1204-
FeatureAM, FeatureRAS, FeatureSEL2,
1205-
FeatureTRACEV8_4, FeatureAltFPCmp,
1206-
FeatureFRInt3264, FeatureMTE,
1207-
FeatureFineGrainedTraps, FeatureHCX,
1208-
FeatureSPE_EEF, FeatureRCPC3, FeatureETE,
1209-
FeatureSVEBitPerm, FeatureSVE2, FeatureTRBE,
1210-
FeatureSME, FeatureSME2];
1211-
list<SubtargetFeature> C1Premium = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1212-
FeatureCHK, FeatureFPARMv8,
1213-
FeaturePerfMon, FeatureSPECRES2,
1214-
FeatureSSBS, FeatureRDM, FeatureVH,
1215-
FeatureBF16, FeatureDotProd,
1216-
FeatureFP16FML, FeatureFullFP16,
1217-
FeatureMPAM, FeatureSPE, FeatureSVE,
1218-
FeatureCCIDX, FeatureComplxNum,
1219-
FeatureFPAC, FeatureJS, FeatureAM,
1220-
FeatureRAS, FeatureSEL2, FeatureTRACEV8_4,
1221-
FeatureAltFPCmp, FeatureFRInt3264,
1222-
FeatureMTE, FeatureFineGrainedTraps,
1223-
FeatureHCX, FeatureSPE_EEF, FeatureRCPC3,
1224-
FeatureETE, FeatureSVEBitPerm,
1225-
FeatureSVE2, FeatureTRBE, FeatureSME,
1226-
FeatureSME2];
1227-
list<SubtargetFeature> C1Ultra = [HasV9_3aOps, FeatureNEON, FeatureCLRBHB,
1228-
FeatureCHK, FeatureFPARMv8, FeaturePerfMon,
1229-
FeatureSPECRES2, FeatureSSBS, FeatureRDM,
1230-
FeatureVH, FeatureBF16, FeatureDotProd,
1231-
FeatureFP16FML, FeatureFullFP16,
1232-
FeatureMPAM, FeatureSPE, FeatureSVE,
1233-
FeatureCCIDX, FeatureComplxNum, FeatureFPAC,
1234-
FeatureJS, FeatureAM, FeatureRAS,
1235-
FeatureSEL2, FeatureTRACEV8_4,
1236-
FeatureAltFPCmp, FeatureFRInt3264,
1237-
FeatureMTE, FeatureFineGrainedTraps,
1238-
FeatureHCX, FeatureSPE_EEF, FeatureRCPC3,
1239-
FeatureETE, FeatureSVEBitPerm, FeatureSVE2,
1240-
FeatureTRBE, FeatureSME, FeatureSME2];
12411245
list<SubtargetFeature> Saphira = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
12421246
FeatureNEON, FeatureSPE, FeaturePerfMon, FeatureCRC,
12431247
FeatureCCIDX,
@@ -1327,6 +1331,8 @@ def : ProcessorModel<"cortex-a520", CortexA510Model, ProcessorFeatures.A520,
13271331
[TuneA520]>;
13281332
def : ProcessorModel<"cortex-a520ae", CortexA510Model, ProcessorFeatures.A520AE,
13291333
[TuneA520AE]>;
1334+
def : ProcessorModel<"c1-nano", NeoverseN2Model,
1335+
ProcessorFeatures.C1Nano, [TuneC1Nano]>;
13301336
def : ProcessorModel<"cortex-a57", CortexA57Model, ProcessorFeatures.A53,
13311337
[TuneA57]>;
13321338
def : ProcessorModel<"cortex-a65", CortexA53Model, ProcessorFeatures.A65,
@@ -1361,6 +1367,8 @@ def : ProcessorModel<"cortex-a720ae", NeoverseN2Model, ProcessorFeatures.A720AE,
13611367
[TuneA720AE]>;
13621368
def : ProcessorModel<"cortex-a725", NeoverseN3Model, ProcessorFeatures.A725,
13631369
[TuneA725]>;
1370+
def : ProcessorModel<"c1-pro", NeoverseN2Model,
1371+
ProcessorFeatures.C1Pro, [TuneC1Pro]>;
13641372
def : ProcessorModel<"cortex-r82", CortexA55Model, ProcessorFeatures.R82,
13651373
[TuneR82]>;
13661374
def : ProcessorModel<"cortex-r82ae", CortexA55Model, ProcessorFeatures.R82AE,
@@ -1377,6 +1385,10 @@ def : ProcessorModel<"cortex-x4", NeoverseV3Model, ProcessorFeatures.X4,
13771385
[TuneX4]>;
13781386
def : ProcessorModel<"cortex-x925", NeoverseV3Model, ProcessorFeatures.X925,
13791387
[TuneX925]>;
1388+
def : ProcessorModel<"c1-ultra", NeoverseV3Model,
1389+
ProcessorFeatures.C1Ultra, [TuneC1Ultra]>;
1390+
def : ProcessorModel<"c1-premium", NeoverseV3Model,
1391+
ProcessorFeatures.C1Premium, [TuneC1Premium]>;
13801392
def : ProcessorModel<"gb10", NeoverseV3Model, ProcessorFeatures.GB10,
13811393
[TuneX925]>;
13821394
def : ProcessorModel<"grace", NeoverseV2Model, ProcessorFeatures.Grace,
@@ -1400,14 +1412,6 @@ def : ProcessorModel<"neoverse-v3", NeoverseV3Model,
14001412
ProcessorFeatures.NeoverseV3, [TuneNeoverseV3]>;
14011413
def : ProcessorModel<"neoverse-v3ae", NeoverseV3AEModel,
14021414
ProcessorFeatures.NeoverseV3AE, [TuneNeoverseV3AE]>;
1403-
def : ProcessorModel<"c1-nano", CortexA510Model,
1404-
ProcessorFeatures.C1Nano, [TuneC1Nano]>;
1405-
def : ProcessorModel<"c1-pro", NeoverseN2Model,
1406-
ProcessorFeatures.C1Pro, [TuneC1Pro]>;
1407-
def : ProcessorModel<"c1-premium", NeoverseV3Model,
1408-
ProcessorFeatures.C1Premium, [TuneC1Premium]>;
1409-
def : ProcessorModel<"c1-ultra", NeoverseV3Model,
1410-
ProcessorFeatures.C1Ultra, [TuneC1Ultra]>;
14111415
def : ProcessorModel<"exynos-m3", ExynosM3Model, ProcessorFeatures.ExynosM3,
14121416
[TuneExynosM3]>;
14131417
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)