mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 19:08:21 +08:00
[X86] Add support for Wildcat Lake (#163214)
Add support for Wildcat Lake, per Intel Architecture Instruction Set Extensions Programming Reference rev. 59 (https://cdrdv2.intel.com/v1/dl/getContent/671368)
This commit is contained in:
@@ -515,6 +515,7 @@ X86 Support
|
||||
driver.
|
||||
- Remove `[no-]evex512` feature request from intrinsics and builtins.
|
||||
- Change features `avx10.x-[256,512]` to `avx10.x`.
|
||||
- `-march=wildcatlake` is now supported.
|
||||
|
||||
Arm and AArch64 Support
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -625,6 +625,7 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
|
||||
case CK_ArrowlakeS:
|
||||
case CK_Lunarlake:
|
||||
case CK_Pantherlake:
|
||||
case CK_Wildcatlake:
|
||||
case CK_Sierraforest:
|
||||
case CK_Grandridge:
|
||||
case CK_Graniterapids:
|
||||
@@ -1613,6 +1614,7 @@ std::optional<unsigned> X86TargetInfo::getCPUCacheLineSize() const {
|
||||
case CK_ArrowlakeS:
|
||||
case CK_Lunarlake:
|
||||
case CK_Pantherlake:
|
||||
case CK_Wildcatlake:
|
||||
case CK_Sierraforest:
|
||||
case CK_Grandridge:
|
||||
case CK_Graniterapids:
|
||||
|
||||
@@ -30,6 +30,7 @@ int __attribute__((target("arch=gracemont"))) foo(void) {return 24;}
|
||||
int __attribute__((target("arch=pantherlake"))) foo(void) {return 25;}
|
||||
int __attribute__((target("arch=clearwaterforest"))) foo(void) {return 26;}
|
||||
int __attribute__((target("arch=diamondrapids"))) foo(void) {return 27;}
|
||||
int __attribute__((target("arch=wildcatlake"))) foo(void) {return 28;}
|
||||
int __attribute__((target("default"))) foo(void) { return 2; }
|
||||
|
||||
int bar(void) {
|
||||
@@ -203,6 +204,8 @@ void calls_pr50025c(void) { pr50025c(); }
|
||||
// ITANIUM: ret i32 26
|
||||
// ITANIUM: define{{.*}} i32 @foo.arch_diamondrapids()
|
||||
// ITANIUM: ret i32 27
|
||||
// ITANIUM: define{{.*}} i32 @foo.arch_wildcatlake()
|
||||
// ITANIUM: ret i32 28
|
||||
// ITANIUM: define{{.*}} i32 @foo()
|
||||
// ITANIUM: ret i32 2
|
||||
// ITANIUM: define{{.*}} i32 @bar()
|
||||
@@ -262,6 +265,8 @@ void calls_pr50025c(void) { pr50025c(); }
|
||||
// WINDOWS: ret i32 26
|
||||
// WINDOWS: define dso_local i32 @foo.arch_diamondrapids()
|
||||
// WINDOWS: ret i32 27
|
||||
// WINDOWS: define dso_local i32 @foo.arch_wildcatlake()
|
||||
// WINDOWS: ret i32 28
|
||||
// WINDOWS: define dso_local i32 @foo()
|
||||
// WINDOWS: ret i32 2
|
||||
// WINDOWS: define dso_local i32 @bar()
|
||||
|
||||
@@ -178,6 +178,7 @@ void verifycpustrings(void) {
|
||||
(void)__builtin_cpu_is("lunarlake");
|
||||
(void)__builtin_cpu_is("clearwaterforest");
|
||||
(void)__builtin_cpu_is("pantherlake");
|
||||
(void)__builtin_cpu_is("wildcatlake");
|
||||
(void)__builtin_cpu_is("haswell");
|
||||
(void)__builtin_cpu_is("icelake-client");
|
||||
(void)__builtin_cpu_is("icelake-server");
|
||||
|
||||
@@ -116,6 +116,10 @@
|
||||
// RUN: | FileCheck %s -check-prefix=pantherlake
|
||||
// pantherlake: "-target-cpu" "pantherlake"
|
||||
//
|
||||
// RUN: %clang --target=x86_64 -c -### %s -march=wildcatlake 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix=wildcatlake
|
||||
// wildcatlake: "-target-cpu" "wildcatlake"
|
||||
//
|
||||
// RUN: %clang --target=x86_64 -c -### %s -march=clearwaterforest 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix=clearwaterforest
|
||||
// clearwaterforest: "-target-cpu" "clearwaterforest"
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
// X86-SAME: {{^}}, lunarlake
|
||||
// X86-SAME: {{^}}, gracemont
|
||||
// X86-SAME: {{^}}, pantherlake
|
||||
// X86-SAME: {{^}}, wildcatlake
|
||||
// X86-SAME: {{^}}, sierraforest
|
||||
// X86-SAME: {{^}}, grandridge
|
||||
// X86-SAME: {{^}}, graniterapids
|
||||
@@ -150,6 +151,7 @@
|
||||
// X86_64-SAME: {{^}}, lunarlake
|
||||
// X86_64-SAME: {{^}}, gracemont
|
||||
// X86_64-SAME: {{^}}, pantherlake
|
||||
// X86_64-SAME: {{^}}, wildcatlake
|
||||
// X86_64-SAME: {{^}}, sierraforest
|
||||
// X86_64-SAME: {{^}}, grandridge
|
||||
// X86_64-SAME: {{^}}, graniterapids
|
||||
@@ -246,6 +248,7 @@
|
||||
// TUNE_X86-SAME: {{^}}, lunarlake
|
||||
// TUNE_X86-SAME: {{^}}, gracemont
|
||||
// TUNE_X86-SAME: {{^}}, pantherlake
|
||||
// TUNE_X86-SAME: {{^}}, wildcatlake
|
||||
// TUNE_X86-SAME: {{^}}, sierraforest
|
||||
// TUNE_X86-SAME: {{^}}, grandridge
|
||||
// TUNE_X86-SAME: {{^}}, graniterapids
|
||||
@@ -349,6 +352,7 @@
|
||||
// TUNE_X86_64-SAME: {{^}}, lunarlake
|
||||
// TUNE_X86_64-SAME: {{^}}, gracemont
|
||||
// TUNE_X86_64-SAME: {{^}}, pantherlake
|
||||
// TUNE_X86_64-SAME: {{^}}, wildcatlake
|
||||
// TUNE_X86_64-SAME: {{^}}, sierraforest
|
||||
// TUNE_X86_64-SAME: {{^}}, grandridge
|
||||
// TUNE_X86_64-SAME: {{^}}, graniterapids
|
||||
|
||||
@@ -2526,6 +2526,9 @@
|
||||
// RUN: %clang -march=pantherlake -m32 -E -dM %s -o - 2>&1 \
|
||||
// RUN: -target i386-unknown-linux \
|
||||
// RUN: | FileCheck -match-full-lines %s -check-prefixes=CHECK_ARL_M32,CHECK_ARLS_M32,CHECK_NKL_M32
|
||||
// RUN: %clang -march=wildcatlake -m32 -E -dM %s -o - 2>&1 \
|
||||
// RUN: -target i386-unknown-linux \
|
||||
// RUN: | FileCheck -match-full-lines %s -check-prefixes=CHECK_ARL_M32,CHECK_ARLS_M32,CHECK_NKL_M32
|
||||
// RUN: %clang -march=clearwaterforest -m32 -E -dM %s -o - 2>&1 \
|
||||
// RUN: -target i386-unknown-linux \
|
||||
// RUN: | FileCheck -match-full-lines %s -check-prefixes=CHECK_SRF_M32,CHECK_ARLS_M32,CHECK_CWF_M32,CHECK_NKL_M32
|
||||
@@ -2630,6 +2633,9 @@
|
||||
// RUN: %clang -march=pantherlake -m64 -E -dM %s -o - 2>&1 \
|
||||
// RUN: -target i386-unknown-linux \
|
||||
// RUN: | FileCheck -match-full-lines %s -check-prefixes=CHECK_ARL_M64,CHECK_ARLS_M64,CHECK_NKL_M64
|
||||
// RUN: %clang -march=wildcatlake -m64 -E -dM %s -o - 2>&1 \
|
||||
// RUN: -target i386-unknown-linux \
|
||||
// RUN: | FileCheck -match-full-lines %s -check-prefixes=CHECK_ARL_M64,CHECK_ARLS_M64,CHECK_NKL_M64
|
||||
// RUN: %clang -march=clearwaterforest -m64 -E -dM %s -o - 2>&1 \
|
||||
// RUN: -target i386-unknown-linux \
|
||||
// RUN: | FileCheck -match-full-lines %s -check-prefixes=CHECK_ARL_M64,CHECK_SRF_M64,CHECK_ARLS_M64,CHECK_CWF_M64,CHECK_NKL_M64
|
||||
|
||||
@@ -87,3 +87,4 @@ ATTR(cpu_specific(lunarlake)) void CPU37(void){}
|
||||
ATTR(cpu_specific(gracemont)) void CPU38(void){}
|
||||
ATTR(cpu_specific(pantherlake)) void CPU39(void){}
|
||||
ATTR(cpu_specific(clearwaterforest)) void CPU40(void){}
|
||||
ATTR(cpu_specific(wildcatlake)) void CPU41(void){}
|
||||
|
||||
@@ -520,6 +520,13 @@ static const char *getIntelProcessorTypeAndSubtype(unsigned Family,
|
||||
*Subtype = INTEL_COREI7_PANTHERLAKE;
|
||||
break;
|
||||
|
||||
// Wildcatlake:
|
||||
case 0xd5:
|
||||
CPU = "wildcatlake";
|
||||
*Type = INTEL_COREI7;
|
||||
*Subtype = INTEL_COREI7_PANTHERLAKE;
|
||||
break;
|
||||
|
||||
// Icelake Xeon:
|
||||
case 0x6a:
|
||||
case 0x6c:
|
||||
|
||||
@@ -139,6 +139,8 @@ Changes to the Windows Target
|
||||
Changes to the X86 Backend
|
||||
--------------------------
|
||||
|
||||
* `-mcpu=wildcatlake` is now supported.
|
||||
|
||||
Changes to the OCaml bindings
|
||||
-----------------------------
|
||||
|
||||
|
||||
@@ -115,6 +115,7 @@ X86_CPU_SUBTYPE_ALIAS(INTEL_COREI7_ALDERLAKE, "meteorlake")
|
||||
X86_CPU_SUBTYPE_ALIAS(INTEL_COREI7_SAPPHIRERAPIDS, "emeraldrapids")
|
||||
X86_CPU_SUBTYPE_ALIAS(INTEL_COREI7_ARROWLAKE_S,"lunarlake")
|
||||
X86_CPU_SUBTYPE_ALIAS(INTEL_COREI7_ALDERLAKE, "gracemont")
|
||||
X86_CPU_SUBTYPE_ALIAS(INTEL_COREI7_PANTHERLAKE, "wildcatlake")
|
||||
|
||||
#undef X86_CPU_SUBTYPE_ALIAS
|
||||
#undef X86_CPU_SUBTYPE
|
||||
|
||||
@@ -116,6 +116,7 @@ enum CPUKind {
|
||||
CK_ArrowlakeS,
|
||||
CK_Lunarlake,
|
||||
CK_Pantherlake,
|
||||
CK_Wildcatlake,
|
||||
CK_Sierraforest,
|
||||
CK_Grandridge,
|
||||
CK_Graniterapids,
|
||||
|
||||
@@ -1338,7 +1338,6 @@ def ProcessorFeatures {
|
||||
list<SubtargetFeature> PTLFeatures =
|
||||
!listremove(ARLSFeatures, [FeatureWIDEKL]);
|
||||
|
||||
|
||||
// Clearwaterforest
|
||||
list<SubtargetFeature> CWFAdditionalFeatures = [FeaturePREFETCHI,
|
||||
FeatureAVXVNNIINT16,
|
||||
@@ -1880,8 +1879,10 @@ def : ProcModel<P, AlderlakePModel,
|
||||
}
|
||||
def : ProcModel<"lunarlake", LunarlakePModel, ProcessorFeatures.ARLSFeatures,
|
||||
ProcessorFeatures.ADLTuning>;
|
||||
def : ProcModel<"pantherlake", AlderlakePModel,
|
||||
foreach P = ["pantherlake", "wildcatlake"] in {
|
||||
def : ProcModel<P, AlderlakePModel,
|
||||
ProcessorFeatures.PTLFeatures, ProcessorFeatures.ADLTuning>;
|
||||
}
|
||||
def : ProcModel<"clearwaterforest", AlderlakePModel,
|
||||
ProcessorFeatures.CWFFeatures, ProcessorFeatures.ADLTuning>;
|
||||
def : ProcModel<"emeraldrapids", SapphireRapidsModel,
|
||||
|
||||
@@ -964,6 +964,13 @@ static StringRef getIntelProcessorTypeAndSubtype(unsigned Family,
|
||||
*Subtype = X86::INTEL_COREI7_PANTHERLAKE;
|
||||
break;
|
||||
|
||||
// Wildcatlake:
|
||||
case 0xd5:
|
||||
CPU = "wildcatlake";
|
||||
*Type = X86::INTEL_COREI7;
|
||||
*Subtype = X86::INTEL_COREI7_PANTHERLAKE;
|
||||
break;
|
||||
|
||||
// Graniterapids:
|
||||
case 0xad:
|
||||
CPU = "graniterapids";
|
||||
|
||||
@@ -378,6 +378,7 @@ constexpr ProcInfo Processors[] = {
|
||||
{ {"gracemont"}, CK_Gracemont, FEATURE_AVX2, FeaturesAlderlake, 'p', false },
|
||||
// Pantherlake microarchitecture based processors.
|
||||
{ {"pantherlake"}, CK_Lunarlake, FEATURE_AVX2, FeaturesPantherlake, 'p', false },
|
||||
{ {"wildcatlake"}, CK_Lunarlake, FEATURE_AVX2, FeaturesPantherlake, 'p', false },
|
||||
// Sierraforest microarchitecture based processors.
|
||||
{ {"sierraforest"}, CK_Sierraforest, FEATURE_AVX2, FeaturesSierraforest, 'p', false },
|
||||
// Grandridge microarchitecture based processors.
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=lunarlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=gracemont 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=pantherlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=wildcatlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=clearwaterforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=i686-unknown-unknown -mcpu=diamondrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
|
||||
@@ -104,6 +105,7 @@
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=lunarlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=gracemont 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=pantherlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=wildcatlake 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=clearwaterforest 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=diamondrapids 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty
|
||||
|
||||
|
||||
Reference in New Issue
Block a user