Skip to content

Commit 5f9489b

Browse files
committed
[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
1 parent e94e557 commit 5f9489b

File tree

3 files changed

+70
-14
lines changed

3 files changed

+70
-14
lines changed

clang/test/Preprocessor/predefined-arch-macros.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,32 +1791,53 @@
17911791
// CHECK_ADL_M32: #define __BMI__ 1
17921792
// CHECK_ADL_M32: #define __CLDEMOTE__ 1
17931793
// CHECK_ADL_M32: #define __CLFLUSHOPT__ 1
1794+
// CHECK_ADL_M32: #define __CLWB__ 1
17941795
// CHECK_ADL_M32: #define __F16C__ 1
17951796
// CHECK_ADL_M32: #define __FMA__ 1
1797+
// CHECK_ADL_M32: #define __FSGSBASE__ 1
1798+
// CHECK_ADL_M32: #define __FXSR__ 1
1799+
// CHECK_ADL_M32: #define __GFNI__ 1
17961800
// CHECK_ADL_M32: #define __HRESET__ 1
17971801
// CHECK_ADL_M32: #define __INVPCID__ 1
1802+
// CHECK_ADL_M32: #define __KL__ 1
17981803
// CHECK_ADL_M32: #define __LZCNT__ 1
17991804
// CHECK_ADL_M32: #define __MMX__ 1
18001805
// CHECK_ADL_M32: #define __MOVBE__ 1
1806+
// CHECK_ADL_M32: #define __MOVDIR64B__ 1
1807+
// CHECK_ADL_M32: #define __MOVDIRI__ 1
18011808
// CHECK_ADL_M32: #define __PCLMUL__ 1
1809+
// CHECK_ADL_M32: #define __PCONFIG__ 1
1810+
// CHECK_ADL_M32: #define __PKU__ 1
18021811
// CHECK_ADL_M32: #define __POPCNT__ 1
18031812
// CHECK_ADL_M32: #define __PRFCHW__ 1
18041813
// CHECK_ADL_M32: #define __PTWRITE__ 1
1814+
// CHECK_ADL_M32: #define __RDPID__ 1
18051815
// CHECK_ADL_M32: #define __RDRND__ 1
18061816
// CHECK_ADL_M32: #define __RDSEED__ 1
18071817
// CHECK_ADL_M32: #define __SERIALIZE__ 1
18081818
// CHECK_ADL_M32: #define __SGX__ 1
1819+
// CHECK_ADL_M32: #define __SHA__ 1
1820+
// CHECK_ADL_M32: #define __SHSTK__ 1
18091821
// CHECK_ADL_M32: #define __SSE2__ 1
18101822
// CHECK_ADL_M32: #define __SSE3__ 1
18111823
// CHECK_ADL_M32: #define __SSE4_1__ 1
18121824
// CHECK_ADL_M32: #define __SSE4_2__ 1
1825+
// CHECK_ADL_M32: #define __SSE_MATH__ 1
18131826
// CHECK_ADL_M32: #define __SSE__ 1
18141827
// CHECK_ADL_M32: #define __SSSE3__ 1
1828+
// CHECK_ADL_M32: #define __VAES__ 1
1829+
// CHECK_ADL_M32: #define __VPCLMULQDQ__ 1
18151830
// CHECK_ADL_M32: #define __WAITPKG__ 1
1831+
// CHECK_ADL_M32: #define __WIDEKL__ 1
18161832
// CHECK_ADL_M32: #define __XSAVEC__ 1
18171833
// CHECK_ADL_M32: #define __XSAVEOPT__ 1
18181834
// CHECK_ADL_M32: #define __XSAVES__ 1
18191835
// CHECK_ADL_M32: #define __XSAVE__ 1
1836+
// CHECK_ADL_M32: #define __corei7 1
1837+
// CHECK_ADL_M32: #define __corei7__ 1
1838+
// CHECK_ADL_M32: #define __i386 1
1839+
// CHECK_ADL_M32: #define __i386__ 1
1840+
// CHECK_ADL_M32: #define __tune_corei7__ 1
18201841
// CHECK_ADL_M32: #define i386 1
18211842

18221843
// RUN: %clang -march=alderlake -m64 -E -dM %s -o - 2>&1 \
@@ -1832,21 +1853,33 @@
18321853
// CHECK_ADL_M64: #define __BMI__ 1
18331854
// CHECK_ADL_M64: #define __CLDEMOTE__ 1
18341855
// CHECK_ADL_M64: #define __CLFLUSHOPT__ 1
1856+
// CHECK_ADL_M64: #define __CLWB__ 1
18351857
// CHECK_ADL_M64: #define __F16C__ 1
18361858
// CHECK_ADL_M64: #define __FMA__ 1
1859+
// CHECK_ADL_M64: #define __FSGSBASE__ 1
1860+
// CHECK_ADL_M64: #define __FXSR__ 1
1861+
// CHECK_ADL_M64: #define __GFNI__ 1
18371862
// CHECK_ADL_M64: #define __HRESET__ 1
18381863
// CHECK_ADL_M64: #define __INVPCID__ 1
1864+
// CHECK_ADL_M64: #define __KL__ 1
18391865
// CHECK_ADL_M64: #define __LZCNT__ 1
18401866
// CHECK_ADL_M64: #define __MMX__ 1
18411867
// CHECK_ADL_M64: #define __MOVBE__ 1
1868+
// CHECK_ADL_M64: #define __MOVDIR64B__ 1
1869+
// CHECK_ADL_M64: #define __MOVDIRI__ 1
18421870
// CHECK_ADL_M64: #define __PCLMUL__ 1
1871+
// CHECK_ADL_M64: #define __PCONFIG__ 1
1872+
// CHECK_ADL_M64: #define __PKU__ 1
18431873
// CHECK_ADL_M64: #define __POPCNT__ 1
18441874
// CHECK_ADL_M64: #define __PRFCHW__ 1
18451875
// CHECK_ADL_M64: #define __PTWRITE__ 1
1876+
// CHECK_ADL_M64: #define __RDPID__ 1
18461877
// CHECK_ADL_M64: #define __RDRND__ 1
18471878
// CHECK_ADL_M64: #define __RDSEED__ 1
18481879
// CHECK_ADL_M64: #define __SERIALIZE__ 1
18491880
// CHECK_ADL_M64: #define __SGX__ 1
1881+
// CHECK_ADL_M64: #define __SHA__ 1
1882+
// CHECK_ADL_M64: #define __SHSTK__ 1
18501883
// CHECK_ADL_M64: #define __SSE2_MATH__ 1
18511884
// CHECK_ADL_M64: #define __SSE2__ 1
18521885
// CHECK_ADL_M64: #define __SSE3__ 1
@@ -1855,13 +1888,19 @@
18551888
// CHECK_ADL_M64: #define __SSE_MATH__ 1
18561889
// CHECK_ADL_M64: #define __SSE__ 1
18571890
// CHECK_ADL_M64: #define __SSSE3__ 1
1891+
// CHECK_ADL_M64: #define __VAES__ 1
1892+
// CHECK_ADL_M64: #define __VPCLMULQDQ__ 1
18581893
// CHECK_ADL_M64: #define __WAITPKG__ 1
1894+
// CHECK_ADL_M64: #define __WIDEKL__ 1
18591895
// CHECK_ADL_M64: #define __XSAVEC__ 1
18601896
// CHECK_ADL_M64: #define __XSAVEOPT__ 1
18611897
// CHECK_ADL_M64: #define __XSAVES__ 1
18621898
// CHECK_ADL_M64: #define __XSAVE__ 1
18631899
// CHECK_ADL_M64: #define __amd64 1
18641900
// CHECK_ADL_M64: #define __amd64__ 1
1901+
// CHECK_ADL_M64: #define __corei7 1
1902+
// CHECK_ADL_M64: #define __corei7__ 1
1903+
// CHECK_ADL_M64: #define __tune_corei7__ 1
18651904
// CHECK_ADL_M64: #define __x86_64 1
18661905
// CHECK_ADL_M64: #define __x86_64__ 1
18671906

llvm/lib/Support/X86TargetParser.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,6 @@ constexpr FeatureBitset FeaturesSapphireRapids =
205205
FeatureENQCMD | FeatureMOVDIR64B | FeatureMOVDIRI | FeaturePTWRITE |
206206
FeatureSERIALIZE | FeatureSHSTK | FeatureTSXLDTRK | FeatureUINTR |
207207
FeatureWAITPKG | FeatureAVXVNNI;
208-
constexpr FeatureBitset FeaturesAlderlake =
209-
FeaturesSkylakeClient | FeatureCLDEMOTE | FeatureHRESET | FeaturePTWRITE |
210-
FeatureSERIALIZE | FeatureWAITPKG | FeatureAVXVNNI;
211208

212209
// Intel Atom processors.
213210
// Bonnell has feature parity with Core2 and adds MOVBE.
@@ -223,6 +220,12 @@ constexpr FeatureBitset FeaturesGoldmontPlus =
223220
FeaturesGoldmont | FeaturePTWRITE | FeatureRDPID | FeatureSGX;
224221
constexpr FeatureBitset FeaturesTremont =
225222
FeaturesGoldmontPlus | FeatureCLWB | FeatureGFNI;
223+
constexpr FeatureBitset FeaturesAlderlake =
224+
FeaturesTremont | FeatureADX | FeatureBMI | FeatureBMI2 | FeatureF16C |
225+
FeatureFMA | FeatureINVPCID | FeatureLZCNT | FeaturePCONFIG | FeaturePKU |
226+
FeatureSERIALIZE | FeatureSHSTK | FeatureVAES | FeatureVPCLMULQDQ |
227+
FeatureCLDEMOTE | FeatureMOVDIR64B | FeatureMOVDIRI | FeatureWAITPKG |
228+
FeatureAVXVNNI | FeatureHRESET | FeatureWIDEKL;
226229

227230
// Geode Processor.
228231
constexpr FeatureBitset FeaturesGeode =

llvm/lib/Target/X86/X86.td

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -784,17 +784,6 @@ def ProcessorFeatures {
784784
list<SubtargetFeature> SPRFeatures =
785785
!listconcat(ICXFeatures, SPRAdditionalFeatures);
786786

787-
// Alderlake
788-
list<SubtargetFeature> ADLAdditionalFeatures = [FeatureAVXVNNI,
789-
FeatureCLDEMOTE,
790-
FeatureHRESET,
791-
FeaturePTWRITE,
792-
FeatureSERIALIZE,
793-
FeatureWAITPKG];
794-
list<SubtargetFeature> ADLTuning = SKLTuning;
795-
list<SubtargetFeature> ADLFeatures =
796-
!listconcat(SKLFeatures, ADLAdditionalFeatures);
797-
798787
// Atom
799788
list<SubtargetFeature> AtomFeatures = [FeatureX87,
800789
FeatureCMPXCHG8B,
@@ -873,6 +862,31 @@ def ProcessorFeatures {
873862
list<SubtargetFeature> TRMFeatures =
874863
!listconcat(GLPFeatures, TRMAdditionalFeatures);
875864

865+
// Alderlake
866+
list<SubtargetFeature> ADLAdditionalFeatures = [FeatureSERIALIZE,
867+
FeaturePCONFIG,
868+
FeatureSHSTK,
869+
FeatureWIDEKL,
870+
FeatureINVPCID,
871+
FeatureADX,
872+
FeatureFMA,
873+
FeatureVAES,
874+
FeatureVPCLMULQDQ,
875+
FeatureF16C,
876+
FeatureBMI,
877+
FeatureBMI2,
878+
FeatureLZCNT,
879+
FeatureAVXVNNI,
880+
FeaturePKU,
881+
FeatureHRESET,
882+
FeatureCLDEMOTE,
883+
FeatureMOVDIRI,
884+
FeatureMOVDIR64B,
885+
FeatureWAITPKG];
886+
list<SubtargetFeature> ADLTuning = SKLTuning;
887+
list<SubtargetFeature> ADLFeatures =
888+
!listconcat(TRMFeatures, ADLAdditionalFeatures);
889+
876890
// Knights Landing
877891
list<SubtargetFeature> KNLFeatures = [FeatureX87,
878892
FeatureCMPXCHG8B,

0 commit comments

Comments
 (0)