Message ID | BY5PR11MB40080CDDC10E23405FEB426F9E709@BY5PR11MB4008.namprd11.prod.outlook.com |
---|---|
State | New |
Headers | show |
Series | Add rocketlake to gcc. | expand |
On Mon, Apr 12, 2021 at 5:16 AM Cui, Lili <lili.cui@intel.com> wrote: > > Hi Uros, > > This patch is about to add Rocket Lake to GCC. > Rocket Lake is based on Ice Lake client and minus SGX. > > For detailed information, please refer to https://software.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html > > Bootstrap is ok, and no regressions for i386/x86-64 testsuite. > > OK for master? OK. The patch can be considered as a fix, although a borderline one. Thanks, Uros. > [PATCH] Add rocketlake to gcc. > > gcc/ > * common/config/i386/cpuinfo.h > (get_intel_cpu): Handle rocketlake. > * common/config/i386/i386-common.c > (processor_names): Add rocketlake. > (processor_alias_table): Add rocketlake. > * common/config/i386/i386-cpuinfo.h > (processor_subtypes): Add INTEL_COREI7_ROCKETLAKE. > * config.gcc: Add -march=rocketlake. > * config/i386/i386-c.c > (ix86_target_macros_internal): Handle rocketlake. > * config/i386/i386-options.c > (m_ROCKETLAKE) : Define. > (processor_cost_table): Add rocketlake cost. > * config/i386/i386.h > (ix86_size_cost) : Define TARGET_ROCKETLAKE. > (processor_type) : Add PROCESSOR_ROCKETLAKE. > (PTA_ROCKETLAKE): Ditto. > * doc/extend.texi: Add rocketlake. > * doc/invoke.texi: Add rocketlake. > > gcc/testsuite/ > * gcc.target/i386/funcspec-56.inc: Handle new march. > * g++.target/i386/mv16.C: Handle new march > --- > gcc/common/config/i386/cpuinfo.h | 10 ++++++++-- > gcc/common/config/i386/i386-common.c | 4 ++++ > gcc/common/config/i386/i386-cpuinfo.h | 1 + > gcc/config.gcc | 2 +- > gcc/config/i386/i386-c.c | 7 +++++++ > gcc/config/i386/i386-options.c | 5 ++++- > gcc/config/i386/i386.h | 3 +++ > gcc/doc/extend.texi | 3 +++ > gcc/doc/invoke.texi | 8 ++++++++ > gcc/testsuite/g++.target/i386/mv16.C | 6 ++++++ > gcc/testsuite/gcc.target/i386/funcspec-56.inc | 1 + > 11 files changed, 46 insertions(+), 4 deletions(-) > > diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h > index c1ee7a1f8b8..458f41de776 100644 > --- a/gcc/common/config/i386/cpuinfo.h > +++ b/gcc/common/config/i386/cpuinfo.h > @@ -404,14 +404,20 @@ get_intel_cpu (struct __processor_model *cpu_model, > case 0xa5: > case 0xa6: > /* Comet Lake. */ > - case 0xa7: > - /* Rocket Lake. */ > cpu = "skylake"; > CHECK___builtin_cpu_is ("corei7"); > CHECK___builtin_cpu_is ("skylake"); > cpu_model->__cpu_type = INTEL_COREI7; > cpu_model->__cpu_subtype = INTEL_COREI7_SKYLAKE; > break; > + case 0xa7: > + /* Rocket Lake. */ > + cpu = "rocketlake"; > + CHECK___builtin_cpu_is ("corei7"); > + CHECK___builtin_cpu_is ("rocketlake"); > + cpu_model->__cpu_type = INTEL_COREI7; > + cpu_model->__cpu_subtype = INTEL_COREI7_ROCKETLAKE; > + break; > case 0x55: > CHECK___builtin_cpu_is ("corei7"); > cpu_model->__cpu_type = INTEL_COREI7; > diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c > index b89183b830e..1e6c1590ac4 100644 > --- a/gcc/common/config/i386/i386-common.c > +++ b/gcc/common/config/i386/i386-common.c > @@ -1743,6 +1743,7 @@ const char *const processor_names[] = > "skylake-avx512", > "cannonlake", > "icelake-client", > + "rocketlake", > "icelake-server", > "cascadelake", > "tigerlake", > @@ -1845,6 +1846,9 @@ const pta processor_alias_table[] = > {"icelake-client", PROCESSOR_ICELAKE_CLIENT, CPU_HASWELL, > PTA_ICELAKE_CLIENT, > M_CPU_SUBTYPE (INTEL_COREI7_ICELAKE_CLIENT), P_PROC_AVX512F}, > + {"rocketlake", PROCESSOR_ROCKETLAKE, CPU_HASWELL, > + PTA_ROCKETLAKE, > + M_CPU_SUBTYPE (INTEL_COREI7_ROCKETLAKE), P_PROC_AVX512F}, > {"icelake-server", PROCESSOR_ICELAKE_SERVER, CPU_HASWELL, > PTA_ICELAKE_SERVER, > M_CPU_SUBTYPE (INTEL_COREI7_ICELAKE_SERVER), P_PROC_AVX512F}, > diff --git a/gcc/common/config/i386/i386-cpuinfo.h b/gcc/common/config/i386/i386-cpuinfo.h > index 869115c4b6a..e68dd656046 100644 > --- a/gcc/common/config/i386/i386-cpuinfo.h > +++ b/gcc/common/config/i386/i386-cpuinfo.h > @@ -88,6 +88,7 @@ enum processor_subtypes > INTEL_COREI7_SAPPHIRERAPIDS, > INTEL_COREI7_ALDERLAKE, > AMDFAM19H_ZNVER3, > + INTEL_COREI7_ROCKETLAKE, > CPU_SUBTYPE_MAX > }; > > diff --git a/gcc/config.gcc b/gcc/config.gcc > index 997a9f61a5c..357b0bed067 100644 > --- a/gcc/config.gcc > +++ b/gcc/config.gcc > @@ -677,7 +677,7 @@ opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \ > 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 eden-x2 nano nano-1000 nano-2000 nano-3000 \ > +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" > > # Additional x86 processors supported by --with-cpu=. Each processor > diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c > index ed4b098c810..be46d0506ad 100644 > --- a/gcc/config/i386/i386-c.c > +++ b/gcc/config/i386/i386-c.c > @@ -242,6 +242,10 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, > def_or_undef (parse_in, "__alderlake"); > def_or_undef (parse_in, "__alderlake__"); > break; > + case PROCESSOR_ROCKETLAKE: > + def_or_undef (parse_in, "__rocketlake"); > + def_or_undef (parse_in, "__rocketlake__"); > + break; > /* use PROCESSOR_max to not set/unset the arch macro. */ > case PROCESSOR_max: > break; > @@ -405,6 +409,9 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, > case PROCESSOR_ALDERLAKE: > def_or_undef (parse_in, "__tune_alderlake__"); > break; > + case PROCESSOR_ROCKETLAKE: > + def_or_undef (parse_in, "__tune_rocketlake__"); > + break; > case PROCESSOR_INTEL: > case PROCESSOR_GENERIC: > break; > diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c > index 02e9c97d174..91da2849c49 100644 > --- a/gcc/config/i386/i386-options.c > +++ b/gcc/config/i386/i386-options.c > @@ -126,9 +126,11 @@ along with GCC; see the file COPYING3. If not see > #define m_COOPERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_COOPERLAKE) > #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_CORE_AVX512 (m_SKYLAKE_AVX512 | m_CANNONLAKE \ > | m_ICELAKE_CLIENT | m_ICELAKE_SERVER | m_CASCADELAKE \ > - | m_TIGERLAKE | m_COOPERLAKE | m_SAPPHIRERAPIDS) > + | m_TIGERLAKE | m_COOPERLAKE | m_SAPPHIRERAPIDS \ > + | m_ROCKETLAKE) > #define m_CORE_AVX2 (m_HASWELL | m_SKYLAKE | m_ALDERLAKE | 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) > @@ -724,6 +726,7 @@ static const struct processor_costs *processor_cost_table[] = > &icelake_cost, > &icelake_cost, > &icelake_cost, > + &icelake_cost, > &skylake_cost, > &icelake_cost, > &skylake_cost, > diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h > index 24894b4422a..fab1b3c43d6 100644 > --- a/gcc/config/i386/i386.h > +++ b/gcc/config/i386/i386.h > @@ -473,6 +473,7 @@ extern const struct processor_costs ix86_size_cost; > #define TARGET_COOPERLAKE (ix86_tune == PROCESSOR_COOPERLAKE) > #define TARGET_SAPPHIRERAPIDS (ix86_tune == PROCESSOR_SAPPHIRERAPIDS) > #define TARGET_ALDERLAKE (ix86_tune == PROCESSOR_ALDERLAKE) > +#define TARGET_ROCKETLAKE (ix86_tune == PROCESSOR_ROCKETLAKE) > #define TARGET_INTEL (ix86_tune == PROCESSOR_INTEL) > #define TARGET_GENERIC (ix86_tune == PROCESSOR_GENERIC) > #define TARGET_AMDFAM10 (ix86_tune == PROCESSOR_AMDFAM10) > @@ -2386,6 +2387,7 @@ enum processor_type > PROCESSOR_COOPERLAKE, > PROCESSOR_SAPPHIRERAPIDS, > PROCESSOR_ALDERLAKE, > + PROCESSOR_ROCKETLAKE, > PROCESSOR_INTEL, > PROCESSOR_GEODE, > PROCESSOR_K6, > @@ -2539,6 +2541,7 @@ constexpr wide_int_bitmask PTA_CANNONLAKE = PTA_SKYLAKE | PTA_AVX512F > constexpr wide_int_bitmask PTA_ICELAKE_CLIENT = PTA_CANNONLAKE | PTA_AVX512VNNI > | PTA_GFNI | PTA_VAES | PTA_AVX512VBMI2 | PTA_VPCLMULQDQ | PTA_AVX512BITALG > | PTA_RDPID | PTA_AVX512VPOPCNTDQ; > +constexpr wide_int_bitmask PTA_ROCKETLAKE = PTA_ICELAKE_CLIENT & ~PTA_SGX; > constexpr wide_int_bitmask PTA_ICELAKE_SERVER = PTA_ICELAKE_CLIENT > | PTA_PCONFIG | PTA_WBNOINVD | PTA_CLWB; > constexpr wide_int_bitmask PTA_TIGERLAKE = PTA_ICELAKE_CLIENT | PTA_MOVDIRI > diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi > index 849c8802473..e28e1860990 100644 > --- a/gcc/doc/extend.texi > +++ b/gcc/doc/extend.texi > @@ -23046,6 +23046,9 @@ Intel Core i7 sapphirerapids CPU. > @item alderlake > Intel Core i7 Alderlake CPU. > > +@item rocketlake > +Intel Core i7 Rocketlake CPU. > + > @item bonnell > Intel Atom Bonnell CPU. > > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index 6b585cec740..17551246477 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -30194,6 +30194,14 @@ MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, > PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL and AVX-VNNI > instruction set support. > > +@item rocketlake > +Intel Rocketlake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, > +SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, > +RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, > +XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, > +AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, > +AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES 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 9b29a1a3e1a..68392872931 100644 > --- a/gcc/testsuite/g++.target/i386/mv16.C > +++ b/gcc/testsuite/g++.target/i386/mv16.C > @@ -88,6 +88,10 @@ int __attribute__ ((target("arch=alderlake"))) foo () { > return 23; > } > > +int __attribute__ ((target("arch=rocketlake"))) foo () { > + return 24; > +} > + > int main () > { > int val = foo (); > @@ -124,6 +128,8 @@ int main () > assert (val == 22); > else if (__builtin_cpu_is ("alderlake")) > assert (val == 23); > + else if (__builtin_cpu_is ("rocketlake")) > + assert (val == 24); > 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 5d4800f2802..79265c7c94f 100644 > --- a/gcc/testsuite/gcc.target/i386/funcspec-56.inc > +++ b/gcc/testsuite/gcc.target/i386/funcspec-56.inc > @@ -181,6 +181,7 @@ extern void test_arch_tigerlake (void) __attribute__((__target__("arch= > extern void test_arch_cooperlake (void) __attribute__((__target__("arch=cooperlake"))); > 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_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.17.1 > > Thanks, > Lili.
diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h index c1ee7a1f8b8..458f41de776 100644 --- a/gcc/common/config/i386/cpuinfo.h +++ b/gcc/common/config/i386/cpuinfo.h @@ -404,14 +404,20 @@ get_intel_cpu (struct __processor_model *cpu_model, case 0xa5: case 0xa6: /* Comet Lake. */ - case 0xa7: - /* Rocket Lake. */ cpu = "skylake"; CHECK___builtin_cpu_is ("corei7"); CHECK___builtin_cpu_is ("skylake"); cpu_model->__cpu_type = INTEL_COREI7; cpu_model->__cpu_subtype = INTEL_COREI7_SKYLAKE; break; + case 0xa7: + /* Rocket Lake. */ + cpu = "rocketlake"; + CHECK___builtin_cpu_is ("corei7"); + CHECK___builtin_cpu_is ("rocketlake"); + cpu_model->__cpu_type = INTEL_COREI7; + cpu_model->__cpu_subtype = INTEL_COREI7_ROCKETLAKE; + break; case 0x55: CHECK___builtin_cpu_is ("corei7"); cpu_model->__cpu_type = INTEL_COREI7; diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c index b89183b830e..1e6c1590ac4 100644 --- a/gcc/common/config/i386/i386-common.c +++ b/gcc/common/config/i386/i386-common.c @@ -1743,6 +1743,7 @@ const char *const processor_names[] = "skylake-avx512", "cannonlake", "icelake-client", + "rocketlake", "icelake-server", "cascadelake", "tigerlake", @@ -1845,6 +1846,9 @@ const pta processor_alias_table[] = {"icelake-client", PROCESSOR_ICELAKE_CLIENT, CPU_HASWELL, PTA_ICELAKE_CLIENT, M_CPU_SUBTYPE (INTEL_COREI7_ICELAKE_CLIENT), P_PROC_AVX512F}, + {"rocketlake", PROCESSOR_ROCKETLAKE, CPU_HASWELL, + PTA_ROCKETLAKE, + M_CPU_SUBTYPE (INTEL_COREI7_ROCKETLAKE), P_PROC_AVX512F}, {"icelake-server", PROCESSOR_ICELAKE_SERVER, CPU_HASWELL, PTA_ICELAKE_SERVER, M_CPU_SUBTYPE (INTEL_COREI7_ICELAKE_SERVER), P_PROC_AVX512F}, diff --git a/gcc/common/config/i386/i386-cpuinfo.h b/gcc/common/config/i386/i386-cpuinfo.h index 869115c4b6a..e68dd656046 100644 --- a/gcc/common/config/i386/i386-cpuinfo.h +++ b/gcc/common/config/i386/i386-cpuinfo.h @@ -88,6 +88,7 @@ enum processor_subtypes INTEL_COREI7_SAPPHIRERAPIDS, INTEL_COREI7_ALDERLAKE, AMDFAM19H_ZNVER3, + INTEL_COREI7_ROCKETLAKE, CPU_SUBTYPE_MAX }; diff --git a/gcc/config.gcc b/gcc/config.gcc index 997a9f61a5c..357b0bed067 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -677,7 +677,7 @@ opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \ 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 eden-x2 nano nano-1000 nano-2000 nano-3000 \ +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" # Additional x86 processors supported by --with-cpu=. Each processor diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c index ed4b098c810..be46d0506ad 100644 --- a/gcc/config/i386/i386-c.c +++ b/gcc/config/i386/i386-c.c @@ -242,6 +242,10 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__alderlake"); def_or_undef (parse_in, "__alderlake__"); break; + case PROCESSOR_ROCKETLAKE: + def_or_undef (parse_in, "__rocketlake"); + def_or_undef (parse_in, "__rocketlake__"); + break; /* use PROCESSOR_max to not set/unset the arch macro. */ case PROCESSOR_max: break; @@ -405,6 +409,9 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, case PROCESSOR_ALDERLAKE: def_or_undef (parse_in, "__tune_alderlake__"); break; + case PROCESSOR_ROCKETLAKE: + def_or_undef (parse_in, "__tune_rocketlake__"); + break; case PROCESSOR_INTEL: case PROCESSOR_GENERIC: break; diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c index 02e9c97d174..91da2849c49 100644 --- a/gcc/config/i386/i386-options.c +++ b/gcc/config/i386/i386-options.c @@ -126,9 +126,11 @@ along with GCC; see the file COPYING3. If not see #define m_COOPERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_COOPERLAKE) #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_CORE_AVX512 (m_SKYLAKE_AVX512 | m_CANNONLAKE \ | m_ICELAKE_CLIENT | m_ICELAKE_SERVER | m_CASCADELAKE \ - | m_TIGERLAKE | m_COOPERLAKE | m_SAPPHIRERAPIDS) + | m_TIGERLAKE | m_COOPERLAKE | m_SAPPHIRERAPIDS \ + | m_ROCKETLAKE) #define m_CORE_AVX2 (m_HASWELL | m_SKYLAKE | m_ALDERLAKE | 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) @@ -724,6 +726,7 @@ static const struct processor_costs *processor_cost_table[] = &icelake_cost, &icelake_cost, &icelake_cost, + &icelake_cost, &skylake_cost, &icelake_cost, &skylake_cost, diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 24894b4422a..fab1b3c43d6 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -473,6 +473,7 @@ extern const struct processor_costs ix86_size_cost; #define TARGET_COOPERLAKE (ix86_tune == PROCESSOR_COOPERLAKE) #define TARGET_SAPPHIRERAPIDS (ix86_tune == PROCESSOR_SAPPHIRERAPIDS) #define TARGET_ALDERLAKE (ix86_tune == PROCESSOR_ALDERLAKE) +#define TARGET_ROCKETLAKE (ix86_tune == PROCESSOR_ROCKETLAKE) #define TARGET_INTEL (ix86_tune == PROCESSOR_INTEL) #define TARGET_GENERIC (ix86_tune == PROCESSOR_GENERIC) #define TARGET_AMDFAM10 (ix86_tune == PROCESSOR_AMDFAM10) @@ -2386,6 +2387,7 @@ enum processor_type PROCESSOR_COOPERLAKE, PROCESSOR_SAPPHIRERAPIDS, PROCESSOR_ALDERLAKE, + PROCESSOR_ROCKETLAKE, PROCESSOR_INTEL, PROCESSOR_GEODE, PROCESSOR_K6, @@ -2539,6 +2541,7 @@ constexpr wide_int_bitmask PTA_CANNONLAKE = PTA_SKYLAKE | PTA_AVX512F constexpr wide_int_bitmask PTA_ICELAKE_CLIENT = PTA_CANNONLAKE | PTA_AVX512VNNI | PTA_GFNI | PTA_VAES | PTA_AVX512VBMI2 | PTA_VPCLMULQDQ | PTA_AVX512BITALG | PTA_RDPID | PTA_AVX512VPOPCNTDQ; +constexpr wide_int_bitmask PTA_ROCKETLAKE = PTA_ICELAKE_CLIENT & ~PTA_SGX; constexpr wide_int_bitmask PTA_ICELAKE_SERVER = PTA_ICELAKE_CLIENT | PTA_PCONFIG | PTA_WBNOINVD | PTA_CLWB; constexpr wide_int_bitmask PTA_TIGERLAKE = PTA_ICELAKE_CLIENT | PTA_MOVDIRI diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 849c8802473..e28e1860990 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -23046,6 +23046,9 @@ Intel Core i7 sapphirerapids CPU. @item alderlake Intel Core i7 Alderlake CPU. +@item rocketlake +Intel Core i7 Rocketlake CPU. + @item bonnell Intel Atom Bonnell CPU. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 6b585cec740..17551246477 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -30194,6 +30194,14 @@ MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL and AVX-VNNI instruction set support. +@item rocketlake +Intel Rocketlake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, +SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, +RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, +XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, +AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, +AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES 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 9b29a1a3e1a..68392872931 100644 --- a/gcc/testsuite/g++.target/i386/mv16.C +++ b/gcc/testsuite/g++.target/i386/mv16.C @@ -88,6 +88,10 @@ int __attribute__ ((target("arch=alderlake"))) foo () { return 23; } +int __attribute__ ((target("arch=rocketlake"))) foo () { + return 24; +} + int main () { int val = foo (); @@ -124,6 +128,8 @@ int main () assert (val == 22); else if (__builtin_cpu_is ("alderlake")) assert (val == 23); + else if (__builtin_cpu_is ("rocketlake")) + assert (val == 24); 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 5d4800f2802..79265c7c94f 100644 --- a/gcc/testsuite/gcc.target/i386/funcspec-56.inc +++ b/gcc/testsuite/gcc.target/i386/funcspec-56.inc @@ -181,6 +181,7 @@ extern void test_arch_tigerlake (void) __attribute__((__target__("arch= extern void test_arch_cooperlake (void) __attribute__((__target__("arch=cooperlake"))); 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_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")));