[clang] 5f9489b - [X86] Refine "Support -march=alderlake"

Freddy Ye via cfe-commits cfe-commits at lists.llvm.org
Sun Mar 7 21:28:16 PST 2021


Author: Freddy Ye
Date: 2021-03-08T13:17:18+08:00
New Revision: 5f9489b754055da979876bcb5a357310251c6b87

URL: https://github.com/llvm/llvm-project/commit/5f9489b754055da979876bcb5a357310251c6b87
DIFF: https://github.com/llvm/llvm-project/commit/5f9489b754055da979876bcb5a357310251c6b87.diff

LOG: [X86] Refine "Support -march=alderlake"

Refine "Support -march=alderlake"
Compare with tremont, it includes 25 more new features. They are
adx, aes, avx, avx2, avxvnni, bmi, bmi2, cldemote, f16c, fma, hreset, invpcid,
kl, lzcnt, movdir64b, movdiri, pclmulqdq, pconfig, pku, serialize, shstk, vaes,
vpclmulqdq, waitpkg, widekl.

Reviewed By: pengfei

Differential Revision: https://reviews.llvm.org/D97832

Added: 
    

Modified: 
    clang/test/Preprocessor/predefined-arch-macros.c
    llvm/lib/Support/X86TargetParser.cpp
    llvm/lib/Target/X86/X86.td

Removed: 
    


################################################################################
diff  --git a/clang/test/Preprocessor/predefined-arch-macros.c b/clang/test/Preprocessor/predefined-arch-macros.c
index 254ca60af846..48874fdc08f5 100644
--- a/clang/test/Preprocessor/predefined-arch-macros.c
+++ b/clang/test/Preprocessor/predefined-arch-macros.c
@@ -1791,32 +1791,53 @@
 // CHECK_ADL_M32: #define __BMI__ 1
 // CHECK_ADL_M32: #define __CLDEMOTE__ 1
 // CHECK_ADL_M32: #define __CLFLUSHOPT__ 1
+// CHECK_ADL_M32: #define __CLWB__ 1
 // CHECK_ADL_M32: #define __F16C__ 1
 // CHECK_ADL_M32: #define __FMA__ 1
+// CHECK_ADL_M32: #define __FSGSBASE__ 1
+// CHECK_ADL_M32: #define __FXSR__ 1
+// CHECK_ADL_M32: #define __GFNI__ 1
 // CHECK_ADL_M32: #define __HRESET__ 1
 // CHECK_ADL_M32: #define __INVPCID__ 1
+// CHECK_ADL_M32: #define __KL__ 1
 // CHECK_ADL_M32: #define __LZCNT__ 1
 // CHECK_ADL_M32: #define __MMX__ 1
 // CHECK_ADL_M32: #define __MOVBE__ 1
+// CHECK_ADL_M32: #define __MOVDIR64B__ 1
+// CHECK_ADL_M32: #define __MOVDIRI__ 1
 // CHECK_ADL_M32: #define __PCLMUL__ 1
+// CHECK_ADL_M32: #define __PCONFIG__ 1
+// CHECK_ADL_M32: #define __PKU__ 1
 // CHECK_ADL_M32: #define __POPCNT__ 1
 // CHECK_ADL_M32: #define __PRFCHW__ 1
 // CHECK_ADL_M32: #define __PTWRITE__ 1
+// CHECK_ADL_M32: #define __RDPID__ 1
 // CHECK_ADL_M32: #define __RDRND__ 1
 // CHECK_ADL_M32: #define __RDSEED__ 1
 // CHECK_ADL_M32: #define __SERIALIZE__ 1
 // CHECK_ADL_M32: #define __SGX__ 1
+// CHECK_ADL_M32: #define __SHA__ 1
+// CHECK_ADL_M32: #define __SHSTK__ 1
 // CHECK_ADL_M32: #define __SSE2__ 1
 // CHECK_ADL_M32: #define __SSE3__ 1
 // CHECK_ADL_M32: #define __SSE4_1__ 1
 // CHECK_ADL_M32: #define __SSE4_2__ 1
+// CHECK_ADL_M32: #define __SSE_MATH__ 1
 // CHECK_ADL_M32: #define __SSE__ 1
 // CHECK_ADL_M32: #define __SSSE3__ 1
+// CHECK_ADL_M32: #define __VAES__ 1
+// CHECK_ADL_M32: #define __VPCLMULQDQ__ 1
 // CHECK_ADL_M32: #define __WAITPKG__ 1
+// CHECK_ADL_M32: #define __WIDEKL__ 1
 // CHECK_ADL_M32: #define __XSAVEC__ 1
 // CHECK_ADL_M32: #define __XSAVEOPT__ 1
 // CHECK_ADL_M32: #define __XSAVES__ 1
 // CHECK_ADL_M32: #define __XSAVE__ 1
+// CHECK_ADL_M32: #define __corei7 1
+// CHECK_ADL_M32: #define __corei7__ 1
+// CHECK_ADL_M32: #define __i386 1
+// CHECK_ADL_M32: #define __i386__ 1
+// CHECK_ADL_M32: #define __tune_corei7__ 1
 // CHECK_ADL_M32: #define i386 1
 
 // RUN: %clang -march=alderlake -m64 -E -dM %s -o - 2>&1 \
@@ -1832,21 +1853,33 @@
 // CHECK_ADL_M64: #define __BMI__ 1
 // CHECK_ADL_M64: #define __CLDEMOTE__ 1
 // CHECK_ADL_M64: #define __CLFLUSHOPT__ 1
+// CHECK_ADL_M64: #define __CLWB__ 1
 // CHECK_ADL_M64: #define __F16C__ 1
 // CHECK_ADL_M64: #define __FMA__ 1
+// CHECK_ADL_M64: #define __FSGSBASE__ 1
+// CHECK_ADL_M64: #define __FXSR__ 1
+// CHECK_ADL_M64: #define __GFNI__ 1
 // CHECK_ADL_M64: #define __HRESET__ 1
 // CHECK_ADL_M64: #define __INVPCID__ 1
+// CHECK_ADL_M64: #define __KL__ 1
 // CHECK_ADL_M64: #define __LZCNT__ 1
 // CHECK_ADL_M64: #define __MMX__ 1
 // CHECK_ADL_M64: #define __MOVBE__ 1
+// CHECK_ADL_M64: #define __MOVDIR64B__ 1
+// CHECK_ADL_M64: #define __MOVDIRI__ 1
 // CHECK_ADL_M64: #define __PCLMUL__ 1
+// CHECK_ADL_M64: #define __PCONFIG__ 1
+// CHECK_ADL_M64: #define __PKU__ 1
 // CHECK_ADL_M64: #define __POPCNT__ 1
 // CHECK_ADL_M64: #define __PRFCHW__ 1
 // CHECK_ADL_M64: #define __PTWRITE__ 1
+// CHECK_ADL_M64: #define __RDPID__ 1
 // CHECK_ADL_M64: #define __RDRND__ 1
 // CHECK_ADL_M64: #define __RDSEED__ 1
 // CHECK_ADL_M64: #define __SERIALIZE__ 1
 // CHECK_ADL_M64: #define __SGX__ 1
+// CHECK_ADL_M64: #define __SHA__ 1
+// CHECK_ADL_M64: #define __SHSTK__ 1
 // CHECK_ADL_M64: #define __SSE2_MATH__ 1
 // CHECK_ADL_M64: #define __SSE2__ 1
 // CHECK_ADL_M64: #define __SSE3__ 1
@@ -1855,13 +1888,19 @@
 // CHECK_ADL_M64: #define __SSE_MATH__ 1
 // CHECK_ADL_M64: #define __SSE__ 1
 // CHECK_ADL_M64: #define __SSSE3__ 1
+// CHECK_ADL_M64: #define __VAES__ 1
+// CHECK_ADL_M64: #define __VPCLMULQDQ__ 1
 // CHECK_ADL_M64: #define __WAITPKG__ 1
+// CHECK_ADL_M64: #define __WIDEKL__ 1
 // CHECK_ADL_M64: #define __XSAVEC__ 1
 // CHECK_ADL_M64: #define __XSAVEOPT__ 1
 // CHECK_ADL_M64: #define __XSAVES__ 1
 // CHECK_ADL_M64: #define __XSAVE__ 1
 // CHECK_ADL_M64: #define __amd64 1
 // CHECK_ADL_M64: #define __amd64__ 1
+// CHECK_ADL_M64: #define __corei7 1
+// CHECK_ADL_M64: #define __corei7__ 1
+// CHECK_ADL_M64: #define __tune_corei7__ 1
 // CHECK_ADL_M64: #define __x86_64 1
 // CHECK_ADL_M64: #define __x86_64__ 1
 

diff  --git a/llvm/lib/Support/X86TargetParser.cpp b/llvm/lib/Support/X86TargetParser.cpp
index d738511465b4..6355fd12c067 100644
--- a/llvm/lib/Support/X86TargetParser.cpp
+++ b/llvm/lib/Support/X86TargetParser.cpp
@@ -205,9 +205,6 @@ constexpr FeatureBitset FeaturesSapphireRapids =
     FeatureENQCMD | FeatureMOVDIR64B | FeatureMOVDIRI | FeaturePTWRITE |
     FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR |
     FeatureWAITPKG | FeatureAVXVNNI;
-constexpr FeatureBitset FeaturesAlderlake =
-    FeaturesSkylakeClient | FeatureCLDEMOTE | FeatureHRESET | FeaturePTWRITE |
-    FeatureSERIALIZE | FeatureWAITPKG | FeatureAVXVNNI;
 
 // Intel Atom processors.
 // Bonnell has feature parity with Core2 and adds MOVBE.
@@ -223,6 +220,12 @@ constexpr FeatureBitset FeaturesGoldmontPlus =
     FeaturesGoldmont | FeaturePTWRITE | FeatureRDPID | FeatureSGX;
 constexpr FeatureBitset FeaturesTremont =
     FeaturesGoldmontPlus | FeatureCLWB | FeatureGFNI;
+constexpr FeatureBitset FeaturesAlderlake =
+    FeaturesTremont | FeatureADX | FeatureBMI | FeatureBMI2 | FeatureF16C |
+    FeatureFMA | FeatureINVPCID | FeatureLZCNT | FeaturePCONFIG | FeaturePKU |
+    FeatureSERIALIZE | FeatureSHSTK | FeatureVAES | FeatureVPCLMULQDQ |
+    FeatureCLDEMOTE | FeatureMOVDIR64B | FeatureMOVDIRI | FeatureWAITPKG |
+    FeatureAVXVNNI | FeatureHRESET | FeatureWIDEKL;
 
 // Geode Processor.
 constexpr FeatureBitset FeaturesGeode =

diff  --git a/llvm/lib/Target/X86/X86.td b/llvm/lib/Target/X86/X86.td
index c492d686c52e..60c89b173bd9 100644
--- a/llvm/lib/Target/X86/X86.td
+++ b/llvm/lib/Target/X86/X86.td
@@ -784,17 +784,6 @@ def ProcessorFeatures {
   list<SubtargetFeature> SPRFeatures =
     !listconcat(ICXFeatures, SPRAdditionalFeatures);
 
-  // Alderlake
-  list<SubtargetFeature> ADLAdditionalFeatures = [FeatureAVXVNNI,
-                                                  FeatureCLDEMOTE,
-                                                  FeatureHRESET,
-                                                  FeaturePTWRITE,
-                                                  FeatureSERIALIZE,
-                                                  FeatureWAITPKG];
-  list<SubtargetFeature> ADLTuning = SKLTuning;
-  list<SubtargetFeature> ADLFeatures =
-    !listconcat(SKLFeatures, ADLAdditionalFeatures);
-
   // Atom
   list<SubtargetFeature> AtomFeatures = [FeatureX87,
                                          FeatureCMPXCHG8B,
@@ -873,6 +862,31 @@ def ProcessorFeatures {
   list<SubtargetFeature> TRMFeatures =
     !listconcat(GLPFeatures, TRMAdditionalFeatures);
 
+  // Alderlake
+  list<SubtargetFeature> ADLAdditionalFeatures = [FeatureSERIALIZE,
+                                                  FeaturePCONFIG,
+                                                  FeatureSHSTK,
+                                                  FeatureWIDEKL,
+                                                  FeatureINVPCID,
+                                                  FeatureADX,
+                                                  FeatureFMA,
+                                                  FeatureVAES,
+                                                  FeatureVPCLMULQDQ,
+                                                  FeatureF16C,
+                                                  FeatureBMI,
+                                                  FeatureBMI2,
+                                                  FeatureLZCNT,
+                                                  FeatureAVXVNNI,
+                                                  FeaturePKU,
+                                                  FeatureHRESET,
+                                                  FeatureCLDEMOTE,
+                                                  FeatureMOVDIRI,
+                                                  FeatureMOVDIR64B,
+                                                  FeatureWAITPKG];
+  list<SubtargetFeature> ADLTuning = SKLTuning;
+  list<SubtargetFeature> ADLFeatures =
+    !listconcat(TRMFeatures, ADLAdditionalFeatures);
+
   // Knights Landing
   list<SubtargetFeature> KNLFeatures = [FeatureX87,
                                         FeatureCMPXCHG8B,


        


More information about the cfe-commits mailing list