> -----Original Message----- > From: Uros Bizjak [mailto:ubiz...@gmail.com] > Sent: Friday, August 16, 2019 11:07 PM > To: H.J. Lu <hjl.to...@gmail.com> > Cc: Cui, Lili <lili....@intel.com>; Jeff Law <l...@redhat.com>; GCC Patches > <gcc-patches@gcc.gnu.org>; Zhang, Annita <annita.zh...@intel.com>; Xiao, > Wei3 <wei3.x...@intel.com>; Liu, Hongtao <hongtao....@intel.com>; Wang, > Hongyu <hongyu.w...@intel.com>; Castillo, Jason M > <jason.m.casti...@intel.com> > Subject: Re: Add TIGERLAKE and COOPERLAKE to GCC > > On Fri, Aug 16, 2019 at 5:01 PM H.J. Lu <hjl.to...@gmail.com> wrote: > > > > On Fri, Aug 16, 2019 at 5:53 AM Uros Bizjak <ubiz...@gmail.com> wrote: > > > > > > On Fri, Aug 16, 2019 at 6:10 AM Cui, Lili <lili....@intel.com> wrote: > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > From: H.J. Lu [mailto:hjl.to...@gmail.com] > > > > > Sent: Friday, August 16, 2019 6:02 AM > > > > > To: Jeff Law <l...@redhat.com> > > > > > Cc: Cui, Lili <lili....@intel.com>; Uros Bizjak > > > > > <ubiz...@gmail.com>; GCC Patches <gcc-patches@gcc.gnu.org>; > > > > > Zhang, Annita <annita.zh...@intel.com>; Xiao, Wei3 > > > > > <wei3.x...@intel.com>; Liu, Hongtao <hongtao....@intel.com>; > > > > > Wang, Hongyu <hongyu.w...@intel.com>; Castillo, Jason M > > > > > <jason.m.casti...@intel.com> > > > > > Subject: Re: Add TIGERLAKE and COOPERLAKE to GCC > > > > > > > > > > On Wed, Aug 14, 2019 at 11:04 AM Jeff Law <l...@redhat.com> wrote: > > > > > > > > > > > > On 8/14/19 1:38 AM, Cui, Lili wrote: > > > > > > > Resend this mail for GCC Patches rejected my message, thanks. > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > > > > > > > Hi Uros and all: > > > > > > > > > > > > > > This patch is about to add TIGERLAKE and COOPERLAKE to GCC. > > > > > > > TIGERLAKE is based on ICELAKE_CLIENT and plus new ISA > > > > > MOVEDIRI/MOVDIR64B/AVX512VP2INTERSECT. > > > > > > > COOPERLAKE is based on CASCADELAKE and plus new ISA > AVX512BF16. > > > > > > > > > > > > > > Bootstrap is ok, and no regressions for i386/x86-64 testsuite. > > > > > > > > > > > > > > Changelog: > > > > > > > gcc/ > > > > > > > * common/config/i386/i386-common.c > > > > > > > (processor_names): Add tigerlake and cooperlake. > > > > > > > (processor_alias_table): Add tigerlake and cooperlake. > > > > > > > * config.gcc: Add -march=tigerlake and cooperlake. > > > > > > > * config/i386/driver-i386.c > > > > > > > (host_detect_local_cpu): Detect tigerlake and cooperlake. > > > > > > > * config/i386/i386-builtins.c > > > > > > > (processor_model) : Add M_INTEL_COREI7_TIGERLAKE and > > > > > M_INTEL_COREI7_COOPERLAKE. > > > > > > > (arch_names_table): Add tigerlake and cooperlake. > > > > > > > (get_builtin_code_for_version) : Handle > > > > > > > PROCESSOR_TIGERLAKE and > > > > > PROCESSOR_COOPERLAKE. > > > > > > > * config/i386/i386-c.c > > > > > > > (ix86_target_macros_internal): Handle tigerlake and > cooperlake. > > > > > > > (ix86_target_macros_internal): Handle > > > > > OPTION_MASK_ISA_AVX512VP2INTERSECT. > > > > > > > * config/i386/i386-options.c > > > > > > > (m_TIGERLAKE) : Define. > > > > > > > (m_COOPERLAKE) : Ditto. > > > > > > > (m_CORE_AVX512): Ditto. > > > > > > > (processor_cost_table): Add cascadelake. > > > > > > > (ix86_target_string) : Handle -mavx512vp2intersect. > > > > > > > (ix86_valid_target_attribute_inner_p) : Handle > avx512vp2intersect. > > > > > > > (ix86_option_override_internal): Hadle PTA_SHSTK, > PTA_MOVDIRI, > > > > > > > PTA_MOVDIR64B, PTA_AVX512VP2INTERSECT. > > > > > > > * config/i386/i386.h > > > > > > > (ix86_size_cost) : Define TARGET_TIGERLAKE and > > > > > TARGET_COOPERLAKE. > > > > > > > (processor_type) : Add PROCESSOR_TIGERLAKE and > > > > > PROCESSOR_COOPERLAKE. > > > > > > > (PTA_SHSTK) : Define. > > > > > > > (PTA_MOVDIRI): Ditto. > > > > > > > (PTA_MOVDIR64B): Ditto. > > > > > > > (PTA_COOPERLAKE) : Ditto. > > > > > > > (PTA_TIGERLAKE) : Ditto. > > > > > > > (TARGET_AVX512VP2INTERSECT) : Ditto. > > > > > > > (TARGET_AVX512VP2INTERSECT_P(x)) : Ditto. > > > > > > > (processor_type) : Add PROCESSOR_TIGERLAKE and > > > > > PROCESSOR_COOPERLAKE. > > > > > > > * doc/extend.texi: Add tigerlake and cooperlake. > > > > > > > > > > > > > > gcc/testsuite/ > > > > > > > * gcc.target/i386/funcspec-56.inc: Handle new march. > > > > > > > * g++.target/i386/mv16.C: Handle new march > > > > > > > > > > > > > > libgcc/ > > > > > > > * config/i386/cpuinfo.h: Add INTEL_COREI7_TIGERLAKE > > > > > > > and > > > > > INTEL_COREI7_COOPERLAKE. > > > > > > > > > > > > > ENOPATCH > > > > > > > > > > > > Note that HJ's reworking of the cost tables may require this > > > > > > patch to change for the trunk. > > > > > > > > > > > > > > > > Yes, I have checked in my patch. Please rebase. > > > > > > > > Done, there is no conflict , thanks. > > > > > > @@ -863,36 +863,45 @@ const char *host_detect_local_cpu (int argc, > > > const char **argv) > > > if (arch) > > > { > > > /* This is unknown family 0x6 CPU. */ > > > - /* Assume Ice Lake Server. */ > > > - if (has_wbnoinvd) > > > - cpu = "icelake-server"; > > > - /* Assume Ice Lake. */ > > > - else if (has_gfni) > > > - cpu = "icelake-client"; > > > - /* Assume Cannon Lake. */ > > > - else if (has_avx512vbmi) > > > - cpu = "cannonlake"; > > > - /* Assume Knights Mill. */ > > > - else if (has_avx5124vnniw) > > > - cpu = "knm"; > > > - /* Assume Knights Landing. */ > > > - else if (has_avx512er) > > > - cpu = "knl"; > > > - /* Assume Skylake with AVX-512. */ > > > - else if (has_avx512f) > > > - cpu = "skylake-avx512"; > > > - /* Assume Skylake. */ > > > - else if (has_clflushopt) > > > - cpu = "skylake"; > > > - /* Assume Broadwell. */ > > > - else if (has_adx) > > > - cpu = "broadwell"; > > > - else if (has_avx2) > > > + if (has_avx) > > > + { > > > + /* Assume Tiger Lake */ > > > + if (has_avx512vp2intersect) > > > + cpu = "tigerlake"; > > > + /* Assume Cooper Lake */ > > > + else if (has_avx512bf16) > > > + cpu = "cooperlake"; > > > + /* Assume Ice Lake Server. */ > > > + else if (has_wbnoinvd) > > > + cpu = "icelake-server"; > > > + /* Assume Ice Lake. */ > > > + else if (has_avx512bitalg) > > > + cpu = "icelake-client"; > > > + /* Assume Cannon Lake. */ > > > + else if (has_avx512vbmi) > > > + cpu = "cannonlake"; > > > + /* Assume Knights Mill. */ > > > + else if (has_avx5124vnniw) > > > + cpu = "knm"; > > > + /* Assume Knights Landing. */ > > > + else if (has_avx512er) > > > + cpu = "knl"; > > > + /* Assume Skylake with AVX-512. */ else if (has_avx512f) cpu = > > > + "skylake-avx512"; > > > + /* Assume Skylake. */ > > > + else if (has_clflushopt) > > > + cpu = "skylake"; > > > + /* Assume Broadwell. */ > > > + else if (has_adx) > > > + cpu = "broadwell"; > > > + else if (has_avx2) > > > /* Assume Haswell. */ > > > - cpu = "haswell"; > > > - else if (has_avx) > > > + cpu = "haswell"; > > > + else > > > /* Assume Sandy Bridge. */ > > > - cpu = "sandybridge"; > > > + cpu = "sandybridge"; > > > + } > > > else if (has_sse4_2) > > > { > > > if (has_gfni) > > > > > > No need to nest these under AVX, just add two new entries. We assume > > > that these ABIs all imply AVX. > > > > We added AVX check due to > > > > /* Assume Ice Lake. */ > > else if (has_gfni) > > cpu = "icelake-client"; > > > > But Tremont also has gfni: > > > > else if (has_sse4_2) > > { > > if (has_gfni) > > /* Assume Tremont. */ > > cpu = "tremont"; > > > > On Tremont, -march=native will use icelake-client without AVX check. > > Hm, I see. > > OK then; this is driver code, and not performance critical.
This patch already upstream now, Revision 274693. Thanks, Lili.