summaryrefslogtreecommitdiff
path: root/0274-Initial-Granite-Rapids-Support.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2025-02-28 10:03:49 +0000
committerCoprDistGit <infra@openeuler.org>2025-02-28 10:03:49 +0000
commit73127104a245052cd5cf29cdaaca3e5c32c70348 (patch)
tree8e28b63e478c43c252f18b49836dff7313affe54 /0274-Initial-Granite-Rapids-Support.patch
parent49d3feaf4665cdb07576fc1a2382a4d82a612d35 (diff)
automatic import of gccopeneuler24.03_LTS_SP1
Diffstat (limited to '0274-Initial-Granite-Rapids-Support.patch')
-rw-r--r--0274-Initial-Granite-Rapids-Support.patch277
1 files changed, 277 insertions, 0 deletions
diff --git a/0274-Initial-Granite-Rapids-Support.patch b/0274-Initial-Granite-Rapids-Support.patch
new file mode 100644
index 0000000..db78329
--- /dev/null
+++ b/0274-Initial-Granite-Rapids-Support.patch
@@ -0,0 +1,277 @@
+From 7f0f8b585cf60b4c09bca42b5339995c2cc74633 Mon Sep 17 00:00:00 2001
+From: Haochen Jiang <haochen.jiang@intel.com>
+Date: Mon, 7 Nov 2022 11:04:57 +0800
+Subject: [PATCH 20/28] Initial Granite Rapids Support
+
+gcc/ChangeLog:
+
+ * common/config/i386/cpuinfo.h
+ (get_intel_cpu): Handle Granite Rapids.
+ * common/config/i386/i386-common.cc:
+ (processor_names): Add graniterapids.
+ (processor_alias_table): Ditto.
+ * common/config/i386/i386-cpuinfo.h
+ (enum processor_subtypes): Add INTEL_GRANTIERAPIDS.
+ * config.gcc: Add -march=graniterapids.
+ * config/i386/driver-i386.cc (host_detect_local_cpu):
+ Handle graniterapids.
+ * config/i386/i386-c.cc (ix86_target_macros_internal):
+ Ditto.
+ * config/i386/i386-options.cc (m_GRANITERAPIDS): New.
+ (processor_cost_table): Add graniterapids.
+ * config/i386/i386.h (enum processor_type):
+ Add PROCESSOR_GRANITERAPIDS.
+ (PTA_GRANITERAPIDS): Ditto.
+ * doc/extend.texi: Add graniterapids.
+ * doc/invoke.texi: Ditto.
+
+gcc/testsuite/ChangeLog:
+
+ * g++.target/i386/mv16.C: Add graniterapids.
+ * gcc.target/i386/funcspec-56.inc: Handle new march.
+
+(cherry picked from commit 339ffc5a792dd66647392a235f2f7f6344c5359e)
+---
+ gcc/common/config/i386/cpuinfo.h | 9 +++++++++
+ gcc/common/config/i386/i386-common.cc | 3 +++
+ gcc/common/config/i386/i386-cpuinfo.h | 1 +
+ gcc/config.gcc | 2 +-
+ gcc/config/i386/driver-i386.cc | 5 ++++-
+ gcc/config/i386/i386-c.cc | 7 +++++++
+ gcc/config/i386/i386-options.cc | 4 +++-
+ gcc/config/i386/i386.h | 3 +++
+ gcc/doc/extend.texi | 3 +++
+ gcc/doc/invoke.texi | 11 +++++++++++
+ gcc/testsuite/g++.target/i386/mv16.C | 6 ++++++
+ gcc/testsuite/gcc.target/i386/funcspec-56.inc | 1 +
+ 12 files changed, 52 insertions(+), 3 deletions(-)
+
+diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h
+index f17e88144..1f75ff1ca 100644
+--- a/gcc/common/config/i386/cpuinfo.h
++++ b/gcc/common/config/i386/cpuinfo.h
+@@ -528,6 +528,15 @@ get_intel_cpu (struct __processor_model *cpu_model,
+ cpu_model->__cpu_type = INTEL_COREI7;
+ cpu_model->__cpu_subtype = INTEL_COREI7_SAPPHIRERAPIDS;
+ break;
++ case 0xad:
++ case 0xae:
++ /* Granite Rapids. */
++ cpu = "graniterapids";
++ CHECK___builtin_cpu_is ("corei7");
++ CHECK___builtin_cpu_is ("graniterapids");
++ cpu_model->__cpu_type = INTEL_COREI7;
++ cpu_model->__cpu_subtype = INTEL_COREI7_GRANITERAPIDS;
++ break;
+ case 0x17:
+ case 0x1d:
+ /* Penryn. */
+diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386/i386-common.cc
+index c8cf532cf..1aa163463 100644
+--- a/gcc/common/config/i386/i386-common.cc
++++ b/gcc/common/config/i386/i386-common.cc
+@@ -1855,6 +1855,7 @@ const char *const processor_names[] =
+ "sapphirerapids",
+ "alderlake",
+ "rocketlake",
++ "graniterapids",
+ "intel",
+ "geode",
+ "k6",
+@@ -1973,6 +1974,8 @@ const pta processor_alias_table[] =
+ M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
+ {"meteorlake", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
+ M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
++ {"graniterapids", PROCESSOR_GRANITERAPIDS, CPU_HASWELL, PTA_GRANITERAPIDS,
++ M_CPU_SUBTYPE (INTEL_COREI7_GRANITERAPIDS), P_PROC_AVX512F},
+ {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
+ M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
+ {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
+diff --git a/gcc/common/config/i386/i386-cpuinfo.h b/gcc/common/config/i386/i386-cpuinfo.h
+index 95b078acf..7b2d4d242 100644
+--- a/gcc/common/config/i386/i386-cpuinfo.h
++++ b/gcc/common/config/i386/i386-cpuinfo.h
+@@ -92,6 +92,7 @@ enum processor_subtypes
+ AMDFAM19H_ZNVER3,
+ INTEL_COREI7_ROCKETLAKE,
+ AMDFAM19H_ZNVER4,
++ INTEL_COREI7_GRANITERAPIDS,
+ CPU_SUBTYPE_MAX
+ };
+
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index 81012c651..9bad238e3 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -670,7 +670,7 @@ slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
+ silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
+ skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \
+ sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \
+-nano-x2 eden-x4 nano-x4 x86-64 x86-64-v2 x86-64-v3 x86-64-v4 native"
++nano-x2 eden-x4 nano-x4 x86-64 x86-64-v2 x86-64-v3 x86-64-v4 graniterapids native"
+
+ # Additional x86 processors supported by --with-cpu=. Each processor
+ # MUST be separated by exactly one space.
+diff --git a/gcc/config/i386/driver-i386.cc b/gcc/config/i386/driver-i386.cc
+index 3b5161aed..ea8c3d8d1 100644
+--- a/gcc/config/i386/driver-i386.cc
++++ b/gcc/config/i386/driver-i386.cc
+@@ -576,8 +576,11 @@ const char *host_detect_local_cpu (int argc, const char **argv)
+ /* This is unknown family 0x6 CPU. */
+ if (has_feature (FEATURE_AVX))
+ {
++ /* Assume Granite Rapids. */
++ if (has_feature (FEATURE_AMX_FP16))
++ cpu = "graniterapids";
+ /* Assume Tiger Lake */
+- if (has_feature (FEATURE_AVX512VP2INTERSECT))
++ else if (has_feature (FEATURE_AVX512VP2INTERSECT))
+ cpu = "tigerlake";
+ /* Assume Sapphire Rapids. */
+ else if (has_feature (FEATURE_TSXLDTRK))
+diff --git a/gcc/config/i386/i386-c.cc b/gcc/config/i386/i386-c.cc
+index 00880bd17..04f1dd682 100644
+--- a/gcc/config/i386/i386-c.cc
++++ b/gcc/config/i386/i386-c.cc
+@@ -242,6 +242,10 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag,
+ def_or_undef (parse_in, "__sapphirerapids");
+ def_or_undef (parse_in, "__sapphirerapids__");
+ break;
++ case PROCESSOR_GRANITERAPIDS:
++ def_or_undef (parse_in, "__graniterapids");
++ def_or_undef (parse_in, "__graniterapids__");
++ break;
+ case PROCESSOR_ALDERLAKE:
+ def_or_undef (parse_in, "__alderlake");
+ def_or_undef (parse_in, "__alderlake__");
+@@ -419,6 +423,9 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag,
+ case PROCESSOR_ROCKETLAKE:
+ def_or_undef (parse_in, "__tune_rocketlake__");
+ break;
++ case PROCESSOR_GRANITERAPIDS:
++ def_or_undef (parse_in, "__tune_graniterapids__");
++ break;
+ case PROCESSOR_INTEL:
+ case PROCESSOR_GENERIC:
+ break;
+diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc
+index 724375f02..6645e3259 100644
+--- a/gcc/config/i386/i386-options.cc
++++ b/gcc/config/i386/i386-options.cc
+@@ -127,10 +127,11 @@ along with GCC; see the file COPYING3. If not see
+ #define m_SAPPHIRERAPIDS (HOST_WIDE_INT_1U<<PROCESSOR_SAPPHIRERAPIDS)
+ #define m_ALDERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_ALDERLAKE)
+ #define m_ROCKETLAKE (HOST_WIDE_INT_1U<<PROCESSOR_ROCKETLAKE)
++#define m_GRANITERAPIDS (HOST_WIDE_INT_1U<<PROCESSOR_GRANITERAPIDS)
+ #define m_CORE_AVX512 (m_SKYLAKE_AVX512 | m_CANNONLAKE \
+ | m_ICELAKE_CLIENT | m_ICELAKE_SERVER | m_CASCADELAKE \
+ | m_TIGERLAKE | m_COOPERLAKE | m_SAPPHIRERAPIDS \
+- | m_ROCKETLAKE)
++ | m_ROCKETLAKE | m_GRANITERAPIDS)
+ #define m_CORE_AVX2 (m_HASWELL | m_SKYLAKE | m_CORE_AVX512)
+ #define m_CORE_ALL (m_CORE2 | m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2)
+ #define m_GOLDMONT (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT)
+@@ -761,6 +762,7 @@ static const struct processor_costs *processor_cost_table[] =
+ &icelake_cost,
+ &alderlake_cost,
+ &icelake_cost,
++ &icelake_cost,
+ &intel_cost,
+ &geode_cost,
+ &k6_cost,
+diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
+index aaa136ba0..75953defc 100644
+--- a/gcc/config/i386/i386.h
++++ b/gcc/config/i386/i386.h
+@@ -2250,6 +2250,7 @@ enum processor_type
+ PROCESSOR_SAPPHIRERAPIDS,
+ PROCESSOR_ALDERLAKE,
+ PROCESSOR_ROCKETLAKE,
++ PROCESSOR_GRANITERAPIDS,
+ PROCESSOR_INTEL,
+ PROCESSOR_GEODE,
+ PROCESSOR_K6,
+@@ -2356,6 +2357,8 @@ constexpr wide_int_bitmask PTA_ALDERLAKE = PTA_TREMONT | PTA_ADX | PTA_AVX
+ | PTA_AVX2 | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_LZCNT
+ | PTA_PCONFIG | PTA_PKU | PTA_VAES | PTA_VPCLMULQDQ | PTA_SERIALIZE
+ | PTA_HRESET | PTA_KL | PTA_WIDEKL | PTA_AVXVNNI;
++constexpr wide_int_bitmask PTA_GRANITERAPIDS = PTA_SAPPHIRERAPIDS | PTA_AMX_FP16
++ | PTA_PREFETCHI;
+ constexpr wide_int_bitmask PTA_KNM = PTA_KNL | PTA_AVX5124VNNIW
+ | PTA_AVX5124FMAPS | PTA_AVX512VPOPCNTDQ;
+ constexpr wide_int_bitmask PTA_ZNVER1 = PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2
+diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
+index cb987f469..ba9faf4b2 100644
+--- a/gcc/doc/extend.texi
++++ b/gcc/doc/extend.texi
+@@ -21829,6 +21829,9 @@ Intel Core i7 Alderlake CPU.
+ @item rocketlake
+ Intel Core i7 Rocketlake CPU.
+
++@item graniterapids
++Intel Core i7 graniterapids CPU.
++
+ @item bonnell
+ Intel Atom Bonnell CPU.
+
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 211b970c0..8ca831dc1 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -31615,6 +31615,17 @@ CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD
+ PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
+ VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ instruction set support.
+
++@item graniterapids
++Intel graniterapids CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
++SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
++RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
++AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
++AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
++VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
++MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG,
++SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16,
++AVX512BF16, AMX-FP16 and PREFETCHI instruction set support.
++
+ @item k6
+ AMD K6 CPU with MMX instruction set support.
+
+diff --git a/gcc/testsuite/g++.target/i386/mv16.C b/gcc/testsuite/g++.target/i386/mv16.C
+index 683928729..65cc24f32 100644
+--- a/gcc/testsuite/g++.target/i386/mv16.C
++++ b/gcc/testsuite/g++.target/i386/mv16.C
+@@ -92,6 +92,10 @@ int __attribute__ ((target("arch=rocketlake"))) foo () {
+ return 24;
+ }
+
++int __attribute__ ((target("arch=graniterapids"))) foo () {
++ return 26;
++}
++
+ int main ()
+ {
+ int val = foo ();
+@@ -130,6 +134,8 @@ int main ()
+ assert (val == 23);
+ else if (__builtin_cpu_is ("rocketlake"))
+ assert (val == 24);
++ else if (__builtin_cpu_is ("graniterapids"))
++ assert (val == 25);
+ else
+ assert (val == 0);
+
+diff --git a/gcc/testsuite/gcc.target/i386/funcspec-56.inc b/gcc/testsuite/gcc.target/i386/funcspec-56.inc
+index 9f073f78c..bdcfdbc88 100644
+--- a/gcc/testsuite/gcc.target/i386/funcspec-56.inc
++++ b/gcc/testsuite/gcc.target/i386/funcspec-56.inc
+@@ -188,6 +188,7 @@ extern void test_arch_cooperlake (void) __attribute__((__target__("arch=
+ extern void test_arch_sapphirerapids (void) __attribute__((__target__("arch=sapphirerapids")));
+ extern void test_arch_alderlake (void) __attribute__((__target__("arch=alderlake")));
+ extern void test_arch_rocketlake (void) __attribute__((__target__("arch=rocketlake")));
++extern void test_arch_graniterapids (void) __attribute__((__target__("arch=graniterapids")));
+ extern void test_arch_k8 (void) __attribute__((__target__("arch=k8")));
+ extern void test_arch_k8_sse3 (void) __attribute__((__target__("arch=k8-sse3")));
+ extern void test_arch_opteron (void) __attribute__((__target__("arch=opteron")));
+--
+2.31.1
+