[llvm] c08867e - [X86] Split off x86-64-v* tuning flags. NFC
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 27 13:49:37 PST 2023
Author: Simon Pilgrim
Date: 2023-02-27T21:49:25Z
New Revision: c08867e34aca4a900a84d9f32f4e0741a9e9589b
URL: https://github.com/llvm/llvm-project/commit/c08867e34aca4a900a84d9f32f4e0741a9e9589b
DIFF: https://github.com/llvm/llvm-project/commit/c08867e34aca4a900a84d9f32f4e0741a9e9589b.diff
LOG: [X86] Split off x86-64-v* tuning flags. NFC
Noticed when reviewing D143786, we are currently inheriting the x86-64-v* tuning flags from specific CPUs when really we need these to be a mixture of common traits and tuning to avoid specific severe regressions.
Differential Revision: https://reviews.llvm.org/D144832
Added:
Modified:
llvm/lib/Target/X86/X86.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86.td b/llvm/lib/Target/X86/X86.td
index 83bd2ff6acc39..5da38d8a5dcc0 100644
--- a/llvm/lib/Target/X86/X86.td
+++ b/llvm/lib/Target/X86/X86.td
@@ -707,25 +707,76 @@ include "X86SchedAlderlakeP.td"
//===----------------------------------------------------------------------===//
def ProcessorFeatures {
- // x86-64 and x86-64-v[234]
+ // x86-64 micro-architecture levels: x86-64 and x86-64-v[234]
list<SubtargetFeature> X86_64V1Features = [
FeatureX87, FeatureCX8, FeatureCMOV, FeatureMMX, FeatureSSE2,
FeatureFXSR, FeatureNOPL, FeatureX86_64,
];
+ list<SubtargetFeature> X86_64V1Tuning = [
+ TuningMacroFusion,
+ TuningSlow3OpsLEA,
+ TuningSlowDivide64,
+ TuningSlowIncDec,
+ TuningInsertVZEROUPPER
+ ];
+
list<SubtargetFeature> X86_64V2Features = !listconcat(X86_64V1Features, [
FeatureCX16, FeatureLAHFSAHF64, FeatureCRC32, FeaturePOPCNT,
FeatureSSE42
]);
+ list<SubtargetFeature> X86_64V2Tuning = [
+ TuningMacroFusion,
+ TuningSlow3OpsLEA,
+ TuningSlowDivide64,
+ TuningSlowUAMem32,
+ TuningFastScalarFSQRT,
+ TuningFastSHLDRotate,
+ TuningFast15ByteNOP,
+ TuningPOPCNTFalseDeps,
+ TuningInsertVZEROUPPER
+ ];
+
list<SubtargetFeature> X86_64V3Features = !listconcat(X86_64V2Features, [
FeatureAVX2, FeatureBMI, FeatureBMI2, FeatureF16C, FeatureFMA, FeatureLZCNT,
FeatureMOVBE, FeatureXSAVE
]);
+ list<SubtargetFeature> X86_64V3Tuning = [
+ TuningMacroFusion,
+ TuningSlow3OpsLEA,
+ TuningSlowDivide64,
+ TuningFastScalarFSQRT,
+ TuningFastSHLDRotate,
+ TuningFast15ByteNOP,
+ TuningFastVariableCrossLaneShuffle,
+ TuningFastVariablePerLaneShuffle,
+ TuningPOPCNTFalseDeps,
+ TuningLZCNTFalseDeps,
+ TuningInsertVZEROUPPER,
+ TuningAllowLight256Bit
+ ];
+
list<SubtargetFeature> X86_64V4Features = !listconcat(X86_64V3Features, [
FeatureBWI,
FeatureCDI,
FeatureDQI,
FeatureVLX,
]);
+ list<SubtargetFeature> X86_64V4Tuning = [
+ TuningMacroFusion,
+ TuningSlow3OpsLEA,
+ TuningSlowDivide64,
+ TuningFastScalarFSQRT,
+ TuningFastVectorFSQRT,
+ TuningFastSHLDRotate,
+ TuningFast15ByteNOP,
+ TuningFastVariableCrossLaneShuffle,
+ TuningFastVariablePerLaneShuffle,
+ TuningPrefer256Bit,
+ TuningFastGather,
+ TuningPOPCNTFalseDeps,
+ TuningInsertVZEROUPPER,
+ TuningAllowLight256Bit
+ ];
// Nehalem
list<SubtargetFeature> NHMFeatures = X86_64V2Features;
@@ -1654,23 +1705,16 @@ def : Proc<"c3-2", [FeatureX87, FeatureCX8, FeatureMMX,
// knobs which need to be tuned
diff erently for AMD chips, we might consider
// forming a common base for them.
def : ProcModel<"x86-64", SandyBridgeModel, ProcessorFeatures.X86_64V1Features,
-[
- TuningSlow3OpsLEA,
- TuningSlowDivide64,
- TuningSlowIncDec,
- TuningMacroFusion,
- TuningInsertVZEROUPPER
-]>;
-
-// x86-64 micro-architecture levels.
+ ProcessorFeatures.X86_64V1Tuning>;
+// Close to Sandybridge.
def : ProcModel<"x86-64-v2", SandyBridgeModel, ProcessorFeatures.X86_64V2Features,
- ProcessorFeatures.SNBTuning>;
+ ProcessorFeatures.X86_64V2Tuning>;
// Close to Haswell.
def : ProcModel<"x86-64-v3", HaswellModel, ProcessorFeatures.X86_64V3Features,
- ProcessorFeatures.HSWTuning>;
+ ProcessorFeatures.X86_64V3Tuning>;
// Close to the AVX-512 level implemented by Xeon Scalable Processors.
def : ProcModel<"x86-64-v4", SkylakeServerModel, ProcessorFeatures.X86_64V4Features,
- ProcessorFeatures.SKXTuning>;
+ ProcessorFeatures.X86_64V4Tuning>;
//===----------------------------------------------------------------------===//
// Calling Conventions
More information about the llvm-commits
mailing list