Re: [PATCH] Add rocketlake to gcc.

2021-04-12 Thread Uros Bizjak via Gcc-patches
On Mon, Apr 12, 2021 at 5:16 AM Cui, Lili  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/i

[PATCH] Add rocketlake to gcc.

2021-04-11 Thread Cui, Lili via Gcc-patches
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?

 [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