@@ -295,6 +295,10 @@ def FeatureDisableLatencySchedHeuristic : SubtargetFeature<
295
295
"disable-latency-sched-heuristic", "DisableLatencySchedHeuristic", "true",
296
296
"Disable latency scheduling heuristic">;
297
297
298
+ def FeatureStorePairSuppress : SubtargetFeature<
299
+ "store-pair-suppress", "EnableStorePairSuppress", "true",
300
+ "Enable Store Pair Suppression heuristics">;
301
+
298
302
def FeatureForce32BitJumpTables
299
303
: SubtargetFeature<"force-32bit-jump-tables", "Force32BitJumpTables", "true",
300
304
"Force jump table entries to be 32-bits wide except at MinSize">;
@@ -952,8 +956,8 @@ def TuneA64FX : SubtargetFeature<"a64fx", "ARMProcFamily", "A64FX",
952
956
FeaturePostRAScheduler,
953
957
FeatureAggressiveFMA,
954
958
FeatureArithmeticBccFusion,
955
- FeaturePredictableSelectIsExpensive
956
- ]>;
959
+ FeatureStorePairSuppress,
960
+ FeaturePredictableSelectIsExpensive ]>;
957
961
958
962
def TuneCarmel : SubtargetFeature<"carmel", "ARMProcFamily", "Carmel",
959
963
"Nvidia Carmel processors">;
@@ -967,10 +971,10 @@ def TuneAppleA7 : SubtargetFeature<"apple-a7", "ARMProcFamily", "AppleA7",
967
971
FeatureArithmeticCbzFusion,
968
972
FeatureDisableLatencySchedHeuristic,
969
973
FeatureFuseAES, FeatureFuseCryptoEOR,
974
+ FeatureStorePairSuppress,
970
975
FeatureZCRegMove,
971
976
FeatureZCZeroing,
972
- FeatureZCZeroingFPWorkaround]
973
- >;
977
+ FeatureZCZeroingFPWorkaround]>;
974
978
975
979
def TuneAppleA10 : SubtargetFeature<"apple-a10", "ARMProcFamily", "AppleA10",
976
980
"Apple A10", [
@@ -980,9 +984,9 @@ def TuneAppleA10 : SubtargetFeature<"apple-a10", "ARMProcFamily", "AppleA10",
980
984
FeatureDisableLatencySchedHeuristic,
981
985
FeatureFuseAES,
982
986
FeatureFuseCryptoEOR,
987
+ FeatureStorePairSuppress,
983
988
FeatureZCRegMove,
984
- FeatureZCZeroing]
985
- >;
989
+ FeatureZCZeroing]>;
986
990
987
991
def TuneAppleA11 : SubtargetFeature<"apple-a11", "ARMProcFamily", "AppleA11",
988
992
"Apple A11", [
@@ -992,9 +996,9 @@ def TuneAppleA11 : SubtargetFeature<"apple-a11", "ARMProcFamily", "AppleA11",
992
996
FeatureDisableLatencySchedHeuristic,
993
997
FeatureFuseAES,
994
998
FeatureFuseCryptoEOR,
999
+ FeatureStorePairSuppress,
995
1000
FeatureZCRegMove,
996
- FeatureZCZeroing]
997
- >;
1001
+ FeatureZCZeroing]>;
998
1002
999
1003
def TuneAppleA12 : SubtargetFeature<"apple-a12", "ARMProcFamily", "AppleA12",
1000
1004
"Apple A12", [
@@ -1004,9 +1008,9 @@ def TuneAppleA12 : SubtargetFeature<"apple-a12", "ARMProcFamily", "AppleA12",
1004
1008
FeatureDisableLatencySchedHeuristic,
1005
1009
FeatureFuseAES,
1006
1010
FeatureFuseCryptoEOR,
1011
+ FeatureStorePairSuppress,
1007
1012
FeatureZCRegMove,
1008
- FeatureZCZeroing]
1009
- >;
1013
+ FeatureZCZeroing]>;
1010
1014
1011
1015
def TuneAppleA13 : SubtargetFeature<"apple-a13", "ARMProcFamily", "AppleA13",
1012
1016
"Apple A13", [
@@ -1016,9 +1020,9 @@ def TuneAppleA13 : SubtargetFeature<"apple-a13", "ARMProcFamily", "AppleA13",
1016
1020
FeatureDisableLatencySchedHeuristic,
1017
1021
FeatureFuseAES,
1018
1022
FeatureFuseCryptoEOR,
1023
+ FeatureStorePairSuppress,
1019
1024
FeatureZCRegMove,
1020
- FeatureZCZeroing]
1021
- >;
1025
+ FeatureZCZeroing]>;
1022
1026
1023
1027
def TuneAppleA14 : SubtargetFeature<"apple-a14", "ARMProcFamily", "AppleA14",
1024
1028
"Apple A14", [
@@ -1034,6 +1038,7 @@ def TuneAppleA14 : SubtargetFeature<"apple-a14", "ARMProcFamily", "AppleA14",
1034
1038
FeatureFuseCryptoEOR,
1035
1039
FeatureFuseAdrpAdd,
1036
1040
FeatureFuseLiterals,
1041
+ FeatureStorePairSuppress,
1037
1042
FeatureZCRegMove,
1038
1043
FeatureZCZeroing]>;
1039
1044
@@ -1049,9 +1054,9 @@ def TuneAppleA15 : SubtargetFeature<"apple-a15", "ARMProcFamily", "AppleA15",
1049
1054
FeatureFuseCCSelect,
1050
1055
FeatureFuseCryptoEOR,
1051
1056
FeatureFuseLiterals,
1057
+ FeatureStorePairSuppress,
1052
1058
FeatureZCRegMove,
1053
- FeatureZCZeroing
1054
- ]>;
1059
+ FeatureZCZeroing]>;
1055
1060
1056
1061
def TuneAppleA16 : SubtargetFeature<"apple-a16", "ARMProcFamily", "AppleA16",
1057
1062
"Apple A16", [
@@ -1065,9 +1070,9 @@ def TuneAppleA16 : SubtargetFeature<"apple-a16", "ARMProcFamily", "AppleA16",
1065
1070
FeatureFuseCCSelect,
1066
1071
FeatureFuseCryptoEOR,
1067
1072
FeatureFuseLiterals,
1073
+ FeatureStorePairSuppress,
1068
1074
FeatureZCRegMove,
1069
- FeatureZCZeroing
1070
- ]>;
1075
+ FeatureZCZeroing]>;
1071
1076
1072
1077
def TuneExynosM3 : SubtargetFeature<"exynosm3", "ARMProcFamily", "ExynosM3",
1073
1078
"Samsung Exynos-M3 processors",
@@ -1078,6 +1083,7 @@ def TuneExynosM3 : SubtargetFeature<"exynosm3", "ARMProcFamily", "ExynosM3",
1078
1083
FeatureFuseCCSelect,
1079
1084
FeatureFuseAdrpAdd,
1080
1085
FeatureFuseLiterals,
1086
+ FeatureStorePairSuppress,
1081
1087
FeatureAddrLSLFast,
1082
1088
FeatureALULSLFast,
1083
1089
FeaturePostRAScheduler,
@@ -1096,6 +1102,7 @@ def TuneExynosM4 : SubtargetFeature<"exynosm4", "ARMProcFamily", "ExynosM3",
1096
1102
FeatureFuseCCSelect,
1097
1103
FeatureFuseAdrpAdd,
1098
1104
FeatureFuseLiterals,
1105
+ FeatureStorePairSuppress,
1099
1106
FeatureAddrLSLFast,
1100
1107
FeatureALULSLFast,
1101
1108
FeaturePostRAScheduler,
@@ -1107,18 +1114,18 @@ def TuneKryo : SubtargetFeature<"kryo", "ARMProcFamily", "Kryo",
1107
1114
FeaturePredictableSelectIsExpensive,
1108
1115
FeatureZCZeroing,
1109
1116
FeatureAddrLSLFast,
1110
- FeatureALULSLFast]
1111
- >;
1117
+ FeatureALULSLFast,
1118
+ FeatureStorePairSuppress] >;
1112
1119
1113
1120
def TuneFalkor : SubtargetFeature<"falkor", "ARMProcFamily", "Falkor",
1114
1121
"Qualcomm Falkor processors", [
1115
1122
FeaturePostRAScheduler,
1116
1123
FeaturePredictableSelectIsExpensive,
1117
1124
FeatureZCZeroing,
1125
+ FeatureStorePairSuppress,
1118
1126
FeatureAddrLSLFast,
1119
1127
FeatureALULSLFast,
1120
- FeatureSlowSTRQro
1121
- ]>;
1128
+ FeatureSlowSTRQro]>;
1122
1129
1123
1130
def TuneNeoverseE1 : SubtargetFeature<"neoversee1", "ARMProcFamily", "NeoverseE1",
1124
1131
"Neoverse E1 ARM processors", [
@@ -1182,6 +1189,7 @@ def TuneSaphira : SubtargetFeature<"saphira", "ARMProcFamily", "Saphira",
1182
1189
FeaturePostRAScheduler,
1183
1190
FeaturePredictableSelectIsExpensive,
1184
1191
FeatureZCZeroing,
1192
+ FeatureStorePairSuppress,
1185
1193
FeatureAddrLSLFast,
1186
1194
FeatureALULSLFast]>;
1187
1195
@@ -1190,6 +1198,7 @@ def TuneThunderX2T99 : SubtargetFeature<"thunderx2t99", "ARMProcFamily", "Thund
1190
1198
FeatureAggressiveFMA,
1191
1199
FeatureArithmeticBccFusion,
1192
1200
FeaturePostRAScheduler,
1201
+ FeatureStorePairSuppress,
1193
1202
FeaturePredictableSelectIsExpensive]>;
1194
1203
1195
1204
def TuneThunderX3T110 : SubtargetFeature<"thunderx3t110", "ARMProcFamily",
@@ -1200,34 +1209,40 @@ def TuneThunderX3T110 : SubtargetFeature<"thunderx3t110", "ARMProcFamily",
1200
1209
FeaturePostRAScheduler,
1201
1210
FeaturePredictableSelectIsExpensive,
1202
1211
FeatureBalanceFPOps,
1212
+ FeatureStorePairSuppress,
1203
1213
FeatureStrictAlign]>;
1204
1214
1205
1215
def TuneThunderX : SubtargetFeature<"thunderx", "ARMProcFamily", "ThunderX",
1206
1216
"Cavium ThunderX processors", [
1207
1217
FeaturePostRAScheduler,
1218
+ FeatureStorePairSuppress,
1208
1219
FeaturePredictableSelectIsExpensive]>;
1209
1220
1210
1221
def TuneThunderXT88 : SubtargetFeature<"thunderxt88", "ARMProcFamily",
1211
1222
"ThunderXT88",
1212
1223
"Cavium ThunderX processors", [
1213
1224
FeaturePostRAScheduler,
1225
+ FeatureStorePairSuppress,
1214
1226
FeaturePredictableSelectIsExpensive]>;
1215
1227
1216
1228
def TuneThunderXT81 : SubtargetFeature<"thunderxt81", "ARMProcFamily",
1217
1229
"ThunderXT81",
1218
1230
"Cavium ThunderX processors", [
1219
1231
FeaturePostRAScheduler,
1232
+ FeatureStorePairSuppress,
1220
1233
FeaturePredictableSelectIsExpensive]>;
1221
1234
1222
1235
def TuneThunderXT83 : SubtargetFeature<"thunderxt83", "ARMProcFamily",
1223
1236
"ThunderXT83",
1224
1237
"Cavium ThunderX processors", [
1225
1238
FeaturePostRAScheduler,
1239
+ FeatureStorePairSuppress,
1226
1240
FeaturePredictableSelectIsExpensive]>;
1227
1241
1228
1242
def TuneTSV110 : SubtargetFeature<"tsv110", "ARMProcFamily", "TSV110",
1229
1243
"HiSilicon TS-V110 processors", [
1230
1244
FeatureFuseAES,
1245
+ FeatureStorePairSuppress,
1231
1246
FeaturePostRAScheduler]>;
1232
1247
1233
1248
def TuneAmpere1 : SubtargetFeature<"ampere1", "ARMProcFamily", "Ampere1",
@@ -1241,7 +1256,8 @@ def TuneAmpere1 : SubtargetFeature<"ampere1", "ARMProcFamily", "Ampere1",
1241
1256
FeatureCmpBccFusion,
1242
1257
FeatureFuseAddress,
1243
1258
FeatureFuseLiterals,
1244
- FeatureLdpAlignedOnly,
1259
+ FeatureStorePairSuppress,
1260
+ FeatureLdpAlignedOnly,
1245
1261
FeatureStpAlignedOnly]>;
1246
1262
1247
1263
def TuneAmpere1A : SubtargetFeature<"ampere1a", "ARMProcFamily", "Ampere1A",
@@ -1256,6 +1272,7 @@ def TuneAmpere1A : SubtargetFeature<"ampere1a", "ARMProcFamily", "Ampere1A",
1256
1272
FeatureFuseAddress,
1257
1273
FeatureFuseLiterals,
1258
1274
FeatureFuseLiterals,
1275
+ FeatureStorePairSuppress,
1259
1276
FeatureLdpAlignedOnly,
1260
1277
FeatureStpAlignedOnly]>;
1261
1278
0 commit comments