mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[X86] Support -march=sapphirerapids
Support -march=sapphirerapids for x86. Compare with Icelake Server, it includes 14 more new features. They are amxtile, amxint8, amxbf16, avx512bf16, avx512vp2intersect, cldemote, enqcmd, movdir64b, movdiri, ptwrite, serialize, shstk, tsxldtrk, waitpkg. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D86503
This commit is contained in:
parent
2d6ef3a647
commit
3ad559cce3
@ -84,6 +84,7 @@ X86_CPU_SUBTYPE(AMDFAM17H_ZNVER2, "znver2")
|
||||
X86_CPU_SUBTYPE(INTEL_COREI7_CASCADELAKE, "cascadelake")
|
||||
X86_CPU_SUBTYPE(INTEL_COREI7_TIGERLAKE, "tigerlake")
|
||||
X86_CPU_SUBTYPE(INTEL_COREI7_COOPERLAKE, "cooperlake")
|
||||
X86_CPU_SUBTYPE(INTEL_COREI7_SAPPHIRERAPIDS, "sapphirerapids")
|
||||
#undef X86_CPU_SUBTYPE
|
||||
|
||||
|
||||
|
@ -100,6 +100,7 @@ enum CPUKind {
|
||||
CK_IcelakeClient,
|
||||
CK_IcelakeServer,
|
||||
CK_Tigerlake,
|
||||
CK_SapphireRapids,
|
||||
CK_KNL,
|
||||
CK_KNM,
|
||||
CK_Lakemont,
|
||||
|
@ -730,6 +730,13 @@ getIntelProcessorTypeAndSubtype(unsigned Family, unsigned Model,
|
||||
*Subtype = X86::INTEL_COREI7_ICELAKE_SERVER;
|
||||
break;
|
||||
|
||||
// Sapphire Rapids:
|
||||
case 0x8f:
|
||||
CPU = "sapphirerapids";
|
||||
*Type = X86::INTEL_COREI7;
|
||||
*Subtype = X86::INTEL_COREI7_SAPPHIRERAPIDS;
|
||||
break;
|
||||
|
||||
case 0x1c: // Most 45 nm Intel Atom processors
|
||||
case 0x26: // 45 nm Atom Lincroft
|
||||
case 0x27: // 32 nm Atom Medfield
|
||||
|
@ -195,6 +195,11 @@ static constexpr FeatureBitset FeaturesICLServer =
|
||||
static constexpr FeatureBitset FeaturesTigerlake =
|
||||
FeaturesICLClient | FeatureAVX512VP2INTERSECT | FeatureMOVDIR64B |
|
||||
FeatureMOVDIRI | FeatureSHSTK;
|
||||
static constexpr FeatureBitset FeaturesSapphireRapids =
|
||||
FeaturesICLServer | FeatureAMX_TILE | FeatureAMX_INT8 | FeatureAMX_BF16 |
|
||||
FeatureAVX512BF16 | FeatureAVX512VP2INTERSECT | FeatureCLDEMOTE | FeatureENQCMD |
|
||||
FeatureMOVDIR64B | FeatureMOVDIRI | FeaturePTWRITE | FeatureSERIALIZE |
|
||||
FeatureSHSTK | FeatureTSXLDTRK | FeatureWAITPKG;
|
||||
|
||||
// Intel Atom processors.
|
||||
// Bonnell has feature parity with Core2 and adds MOVBE.
|
||||
@ -342,6 +347,8 @@ static constexpr ProcInfo Processors[] = {
|
||||
{ {"icelake-server"}, CK_IcelakeServer, FEATURE_AVX512VBMI2, FeaturesICLServer },
|
||||
// Tigerlake microarchitecture based processors.
|
||||
{ {"tigerlake"}, CK_Tigerlake, FEATURE_AVX512VP2INTERSECT, FeaturesTigerlake },
|
||||
// Sapphire Rapids microarchitecture based processors.
|
||||
{ {"sapphirerapids"}, CK_SapphireRapids, FEATURE_AVX512VP2INTERSECT, FeaturesSapphireRapids },
|
||||
// Knights Landing processor.
|
||||
{ {"knl"}, CK_KNL, FEATURE_AVX512F, FeaturesKNL },
|
||||
// Knights Mill processor.
|
||||
|
@ -741,6 +741,25 @@ def ProcessorFeatures {
|
||||
list<SubtargetFeature> TGLFeatures =
|
||||
!listconcat(ICLFeatures, TGLAdditionalFeatures );
|
||||
|
||||
//Sapphirerapids
|
||||
list<SubtargetFeature> SPRAdditionalFeatures = [FeatureAMXTILE,
|
||||
FeatureAMXINT8,
|
||||
FeatureAMXBF16,
|
||||
FeatureBF16,
|
||||
FeatureSERIALIZE,
|
||||
FeatureCLDEMOTE,
|
||||
FeatureWAITPKG,
|
||||
FeaturePTWRITE,
|
||||
FeatureTSXLDTRK,
|
||||
FeatureENQCMD,
|
||||
FeatureSHSTK,
|
||||
FeatureVP2INTERSECT,
|
||||
FeatureMOVDIRI,
|
||||
FeatureMOVDIR64B];
|
||||
list<SubtargetFeature> SPRTuning = ICXTuning;
|
||||
list<SubtargetFeature> SPRFeatures =
|
||||
!listconcat(ICXFeatures, SPRAdditionalFeatures);
|
||||
|
||||
// Atom
|
||||
list<SubtargetFeature> AtomFeatures = [FeatureX87,
|
||||
FeatureCMPXCHG8B,
|
||||
@ -1243,6 +1262,8 @@ def : ProcModel<"icelake-server", SkylakeServerModel,
|
||||
ProcessorFeatures.ICXFeatures, ProcessorFeatures.ICXTuning>;
|
||||
def : ProcModel<"tigerlake", SkylakeServerModel,
|
||||
ProcessorFeatures.TGLFeatures, ProcessorFeatures.TGLTuning>;
|
||||
def : ProcModel<"sapphirerapids", SkylakeServerModel,
|
||||
ProcessorFeatures.SPRFeatures, ProcessorFeatures.SPRTuning>;
|
||||
|
||||
// AMD CPUs.
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=icelake-client 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=icelake-server 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=tigerlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=sapphirerapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=atom 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=bonnell 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=silvermont 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
|
Loading…
Reference in New Issue
Block a user