[AMD Public Use]

Hi Honza, 

> -----Original Message-----
> From: Jan Hubicka <hubi...@ucw.cz>
> Sent: Wednesday, March 31, 2021 1:27 PM
> To: Kumar, Venkataramanan <venkataramanan.ku...@amd.com>
> Cc: Uros Bizjak <ubiz...@gmail.com>; gcc-patches@gcc.gnu.org
> Subject: Re: [PATCH] [X86_64]: Enable support for next generation AMD Zen3
> CPU
> 
> [CAUTION: External Email]
> 
> > [AMD Public Use]
> >
> > Hi Honza,
> >
> > > -----Original Message-----
> > > From: Jan Hubicka <hubi...@ucw.cz>
> > > Sent: Wednesday, March 31, 2021 1:15 AM
> > > To: Kumar, Venkataramanan <venkataramanan.ku...@amd.com>
> > > Cc: Uros Bizjak <ubiz...@gmail.com>; gcc-patches@gcc.gnu.org
> > > Subject: Re: [PATCH] [X86_64]: Enable support for next generation
> > > AMD Zen3 CPU
> > >
> > > [CAUTION: External Email]
> > >
> > > Hi,
> > > this patch backports the initial support to gcc10 branch.  Since the
> > > trunk and branch diverged there is non-trivial change to cpuinfo
> > > discovery.  I do;
> > >
> > > --- a/libgcc/config/i386/cpuinfo.c
> > > +++ b/libgcc/config/i386/cpuinfo.c
> > > @@ -111,6 +111,12 @@ get_amd_cpu (unsigned int family, unsigned int
> model)
> > >        if (model >= 0x30)
> > >          __cpu_model.__cpu_subtype = AMDFAM17H_ZNVER2;
> > >        break;
> > > +    case 0x19:
> > > +      __cpu_model.__cpu_type = AMDFAM19H;
> > > +      /* AMD family 19h version 1.  */
> > > +      if (model <= 0x0f)
> > > +       __cpu_model.__cpu_subtype = AMDFAM19H_ZNVER3;
> > > +      break;
> > >      default:
> > >        break;
> > >      }
> > >
> > > While your patch also sets ZNVER3 for case where VAES is supporte
> > > that would require backporting more of logic detecting VAES.  Is
> > > that necessary?
> >
> > I think you are referring to the below change.
> >
> > diff --git a/gcc/config/i386/driver-i386.c
> > b/gcc/config/i386/driver-i386.c index ecdad5765d5..2bfa037dd8b 100644
> > --- a/gcc/config/i386/driver-i386.c
> > +++ b/gcc/config/i386/driver-i386.c
> > @@ -455,6 +455,8 @@ const char *host_detect_local_cpu (int argc, const
> char **argv)
> >         processor = PROCESSOR_GEODE;
> >        else if (has_feature (FEATURE_MOVBE) && family == 22)
> >         processor = PROCESSOR_BTVER2;
> > +      else if (has_feature (FEATURE_VAES))
> > +       processor = PROCESSOR_ZNVER3;
> >        else if (has_feature (FEATURE_CLWB))
> >         processor = PROCESSOR_ZNVER2;
> >
> > My understanding is that when we use -march=native on znver3 machine it
> would check for "vaes" to detect the machine.
> > Otherwise it would detect it as znver2 machine.  So we need that detection
> logic.
> 
> I was wondering about
> 
> +    case 0x19:
> +      cpu_model->__cpu_type = AMDFAM19H;
> +      /* AMD family 19h version 1.  */
> +      if (model <= 0x0f)
> +       {
> +         cpu = "znver3";
> +         CHECK___builtin_cpu_is ("znver3");
> +         cpu_model->__cpu_subtype = AMDFAM19H_ZNVER3;
> +       }
> +      else if (has_cpu_feature (cpu_model, cpu_features2,
> +                               FEATURE_VAES))
> +       {
> +         cpu = "znver3";
> +         CHECK___builtin_cpu_is ("znver3");
> +         cpu_model->__cpu_subtype = AMDFAM19H_ZNVER3;
> +       }
> +      break;
> 
> For znver3 we detect the model number and I wonder why we also test the VAES
> feature when we don't do that for other families.

Ah I see,  I will double check on the model numbers again.
Yes we can remove the code which checks for VAES here.


> 
> Honza

Regards,
Venkat.

Reply via email to