Re: [PATCH] Initial Lunar Lake, Arrow Lake and Arrow Lake S Support
On Fri, Jul 14, 2023 at 10:55 AM Mo, Zewei via Gcc-patches wrote: > > Hi all, > > This patch is to add initial support for Lunar Lake, Arrow Lake and Arrow Lake > S for GCC. > > This link of related information is listed below: > https://www.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html > > This has been tested on x86_64-pc-linux-gnu. Is this ok for trunk? Thank you. Ok. > > gcc/ChangeLog: > > * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake, > Arrow Lake and Arrow Lake S. > * common/config/i386/i386-common.cc: > (processor_name): Add arrowlake. > (processor_alias_table): Add arrow lake, arrow lake s and lunar > lake. > * common/config/i386/i386-cpuinfo.h (enum processor_subtypes): > Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S. > * config.gcc: Add -march=arrowlake and -march=arrowlake-s. > * config/i386/driver-i386.cc (host_detect_local_cpu): Handle > arrowlake-s. > * config/i386/i386-options.cc (m_ARROWLAKE): New. > (processor_cost_table): Add arrowlake. > * config/i386/i386.h (enum processor_type): > Add PROCESSOR_ARROWLAKE. > * doc/extend.texi: Add arrowlake and arrowlake-s. > * doc/invoke.texi: Ditto. > > gcc/testsuite/ChangeLog: > > * g++.target/i386/mv16.C: Add arrowlake and arrowlake-s. > * gcc.target/i386/funcspec-56.inc: Handle new march. > --- > gcc/common/config/i386/cpuinfo.h | 18 > gcc/common/config/i386/i386-common.cc | 7 ++ > gcc/common/config/i386/i386-cpuinfo.h | 2 + > gcc/config.gcc| 2 +- > gcc/config/i386/driver-i386.cc| 5 +- > gcc/config/i386/i386-c.cc | 7 ++ > gcc/config/i386/i386-options.cc | 2 + > gcc/config/i386/i386.h| 4 + > gcc/config/i386/x86-tune.def | 92 +++ > gcc/doc/extend.texi | 6 ++ > gcc/doc/invoke.texi | 17 > gcc/testsuite/g++.target/i386/mv16.C | 12 +++ > gcc/testsuite/gcc.target/i386/funcspec-56.inc | 2 + > 13 files changed, 135 insertions(+), 41 deletions(-) > > diff --git a/gcc/common/config/i386/cpuinfo.h > b/gcc/common/config/i386/cpuinfo.h > index 159e5f03f0b..e6f1a0ac0a1 100644 > --- a/gcc/common/config/i386/cpuinfo.h > +++ b/gcc/common/config/i386/cpuinfo.h > @@ -579,6 +579,24 @@ get_intel_cpu (struct __processor_model *cpu_model, >CHECK___builtin_cpu_is ("grandridge"); >cpu_model->__cpu_type = INTEL_GRANDRIDGE; >break; > +case 0xc5: > + /* Arrow Lake. */ > + cpu = "arrowlake"; > + CHECK___builtin_cpu_is ("corei7"); > + CHECK___builtin_cpu_is ("arrowlake"); > + cpu_model->__cpu_type = INTEL_COREI7; > + cpu_model->__cpu_subtype = INTEL_COREI7_ARROWLAKE; > + break; > +case 0xc6: > + /* Arrow Lake S. */ > +case 0xbd: > + /* Lunar Lake. */ > + cpu = "arrowlake-s"; > + CHECK___builtin_cpu_is ("corei7"); > + CHECK___builtin_cpu_is ("arrowlake-s"); > + cpu_model->__cpu_type = INTEL_COREI7; > + cpu_model->__cpu_subtype = INTEL_COREI7_ARROWLAKE_S; > + 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 9b45ad61239..541f1441db8 100644 > --- a/gcc/common/config/i386/i386-common.cc > +++ b/gcc/common/config/i386/i386-common.cc > @@ -2044,6 +2044,7 @@ const char *const processor_names[] = >"alderlake", >"rocketlake", >"graniterapids", > + "arrowlake", >"intel", >"lujiazui", >"geode", > @@ -2167,6 +2168,12 @@ const pta processor_alias_table[] = > 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}, > + {"arrowlake", PROCESSOR_ARROWLAKE, CPU_HASWELL, PTA_ARROWLAKE, > +M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE), P_PROC_AVX2}, > + {"arrowlake-s", PROCESSOR_ARROWLAKE, CPU_HASWELL, PTA_ARROWLAKE_S, > +M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE_S), P_PROC_AVX2}, > + {"lunarlake", PROCESSOR_ARROWLAKE, CPU_HASWELL, PTA_ARROWLAKE_S, > +M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE_S), P_PROC_AVX2}, >{"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 e6385dd56a3..b371fb792ec 100644 > --- a/gcc/common/config/i386/i386-cpuinfo.h > +++ b/gcc/common/config/i386/i386-cpuinfo.h > @@ -98,6 +98,8 @@ enum processor_subtypes >ZHAOXIN_FAM7H_LUJIAZUI, >
[PATCH] Initial Lunar Lake, Arrow Lake and Arrow Lake S Support
Hi all, This patch is to add initial support for Lunar Lake, Arrow Lake and Arrow Lake S for GCC. This link of related information is listed below: https://www.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html This has been tested on x86_64-pc-linux-gnu. Is this ok for trunk? Thank you. gcc/ChangeLog: * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake, Arrow Lake and Arrow Lake S. * common/config/i386/i386-common.cc: (processor_name): Add arrowlake. (processor_alias_table): Add arrow lake, arrow lake s and lunar lake. * common/config/i386/i386-cpuinfo.h (enum processor_subtypes): Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S. * config.gcc: Add -march=arrowlake and -march=arrowlake-s. * config/i386/driver-i386.cc (host_detect_local_cpu): Handle arrowlake-s. * config/i386/i386-options.cc (m_ARROWLAKE): New. (processor_cost_table): Add arrowlake. * config/i386/i386.h (enum processor_type): Add PROCESSOR_ARROWLAKE. * doc/extend.texi: Add arrowlake and arrowlake-s. * doc/invoke.texi: Ditto. gcc/testsuite/ChangeLog: * g++.target/i386/mv16.C: Add arrowlake and arrowlake-s. * gcc.target/i386/funcspec-56.inc: Handle new march. --- gcc/common/config/i386/cpuinfo.h | 18 gcc/common/config/i386/i386-common.cc | 7 ++ gcc/common/config/i386/i386-cpuinfo.h | 2 + gcc/config.gcc| 2 +- gcc/config/i386/driver-i386.cc| 5 +- gcc/config/i386/i386-c.cc | 7 ++ gcc/config/i386/i386-options.cc | 2 + gcc/config/i386/i386.h| 4 + gcc/config/i386/x86-tune.def | 92 +++ gcc/doc/extend.texi | 6 ++ gcc/doc/invoke.texi | 17 gcc/testsuite/g++.target/i386/mv16.C | 12 +++ gcc/testsuite/gcc.target/i386/funcspec-56.inc | 2 + 13 files changed, 135 insertions(+), 41 deletions(-) diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h index 159e5f03f0b..e6f1a0ac0a1 100644 --- a/gcc/common/config/i386/cpuinfo.h +++ b/gcc/common/config/i386/cpuinfo.h @@ -579,6 +579,24 @@ get_intel_cpu (struct __processor_model *cpu_model, CHECK___builtin_cpu_is ("grandridge"); cpu_model->__cpu_type = INTEL_GRANDRIDGE; break; +case 0xc5: + /* Arrow Lake. */ + cpu = "arrowlake"; + CHECK___builtin_cpu_is ("corei7"); + CHECK___builtin_cpu_is ("arrowlake"); + cpu_model->__cpu_type = INTEL_COREI7; + cpu_model->__cpu_subtype = INTEL_COREI7_ARROWLAKE; + break; +case 0xc6: + /* Arrow Lake S. */ +case 0xbd: + /* Lunar Lake. */ + cpu = "arrowlake-s"; + CHECK___builtin_cpu_is ("corei7"); + CHECK___builtin_cpu_is ("arrowlake-s"); + cpu_model->__cpu_type = INTEL_COREI7; + cpu_model->__cpu_subtype = INTEL_COREI7_ARROWLAKE_S; + 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 9b45ad61239..541f1441db8 100644 --- a/gcc/common/config/i386/i386-common.cc +++ b/gcc/common/config/i386/i386-common.cc @@ -2044,6 +2044,7 @@ const char *const processor_names[] = "alderlake", "rocketlake", "graniterapids", + "arrowlake", "intel", "lujiazui", "geode", @@ -2167,6 +2168,12 @@ const pta processor_alias_table[] = 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}, + {"arrowlake", PROCESSOR_ARROWLAKE, CPU_HASWELL, PTA_ARROWLAKE, +M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE), P_PROC_AVX2}, + {"arrowlake-s", PROCESSOR_ARROWLAKE, CPU_HASWELL, PTA_ARROWLAKE_S, +M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE_S), P_PROC_AVX2}, + {"lunarlake", PROCESSOR_ARROWLAKE, CPU_HASWELL, PTA_ARROWLAKE_S, +M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE_S), P_PROC_AVX2}, {"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 e6385dd56a3..b371fb792ec 100644 --- a/gcc/common/config/i386/i386-cpuinfo.h +++ b/gcc/common/config/i386/i386-cpuinfo.h @@ -98,6 +98,8 @@ enum processor_subtypes ZHAOXIN_FAM7H_LUJIAZUI, AMDFAM19H_ZNVER4, INTEL_COREI7_GRANITERAPIDS, + INTEL_COREI7_ARROWLAKE, + INTEL_COREI7_ARROWLAKE_S, CPU_SUBTYPE_MAX }; diff --git a/gcc/config.gcc b/gcc/config.gcc index 93b6e0709af..6c373a478e6 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -683,7 +683,7 @@ silvermont knl knm skylake-avx512