[AMD Official Use Only - AMD Internal Distribution Only]

Hello Martin,

Can you please commit this? I don't have the required rights.

Thanks,
Umesh

> -----Original Message-----
> From: Kalvakuntla, Umesh
> Sent: Tuesday, September 23, 2025 10:40 AM
> To: 'Martin Jambor' <[email protected]>; [email protected]
> Cc: Gopalasubramanian, Ganesh <[email protected]>; Jan
> Hubicka <[email protected]>
> Subject: RE: [PATCH] [X86] Fixes for AMD znver5 enablement
>
>
>
> > -----Original Message-----
> > From: Martin Jambor <[email protected]>
> > Sent: Monday, September 22, 2025 6:14 PM
> > To: Kalvakuntla, Umesh <[email protected]>; gcc-
> > [email protected]
> > Cc: Gopalasubramanian, Ganesh <[email protected]>;
> Jan
> > Hubicka <[email protected]>
> > Subject: Re: [PATCH] [X86] Fixes for AMD znver5 enablement
> >
> > Caution: This message originated from an External Source. Use proper
> > caution when opening attachments, clicking links, or responding.
> >
> >
> > Hello,
> >
> > On Wed, Sep 17 2025, Umesh Kalvakuntla wrote:
> > > From: Umesh Kalvakuntla <[email protected]>
> > >
> > > - cpuid bit for prefetchi is different from Intel
> > > (https://docs.amd.com/v/u/en-US/24594_3.37)
> > > - Fix cpu family model numbers
> > > ---
> > >  gcc/common/config/i386/cpuinfo.h | 11 +++++++++++
> > >  gcc/config/i386/cpuid.h          |  4 ++++
> > >  2 files changed, 15 insertions(+)
> > >
> > > diff --git a/gcc/common/config/i386/cpuinfo.h
> > > b/gcc/common/config/i386/cpuinfo.h
> > > index c93ea07239a..6b45e1b0531 100644
> > > --- a/gcc/common/config/i386/cpuinfo.h
> > > +++ b/gcc/common/config/i386/cpuinfo.h
> > > @@ -313,6 +313,8 @@ get_amd_cpu (struct __processor_model *cpu_model,
> > >      case 0x1a:
> > >        cpu_model->__cpu_type = AMDFAM1AH;
> > >        if (model <= 0x77)
> > > +      if (model <= 0x4f || (model >= 0x60 && model <= 0x77) ||
> > > +       (model >= 0xd0 && model <= 0xd7))
> >
> > I assume you did not want to leave the "if (model <= 0x77)" there but
> > wanted to remove it?
>
> Hello Martin,
>
> Yes, my bad. Please find the updated patch.
>
> Thanks,
> Umesh
>
> ---
>  gcc/common/config/i386/cpuinfo.h | 12 +++++++++++-
>  gcc/config/i386/cpuid.h          |  4 ++++
>  2 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/common/config/i386/cpuinfo.h 
> b/gcc/common/config/i386/cpuinfo.h
> index c93ea07239a..3f29f17e2a5 100644
> --- a/gcc/common/config/i386/cpuinfo.h
> +++ b/gcc/common/config/i386/cpuinfo.h
> @@ -312,7 +312,8 @@ get_amd_cpu (struct __processor_model *cpu_model,
>        break;
>      case 0x1a:
>        cpu_model->__cpu_type = AMDFAM1AH;
> -      if (model <= 0x77)
> +      if (model <= 0x4f || (model >= 0x60 && model <= 0x77) ||
> +       (model >= 0xd0 && model <= 0xd7))
>       {
>         cpu = "znver5";
>         CHECK___builtin_cpu_is ("znver5");
> @@ -1102,6 +1103,15 @@ get_available_features (struct __processor_model
> *cpu_model,
>       set_feature (FEATURE_WBNOINVD);
>      }
>
> +  if (ext_level >= 0x80000021)
> +    {
> +      __cpuid (0x80000021, eax, ebx, ecx, edx);
> +      if (eax & bit_AMD_PREFETCHI)
> +     {
> +       set_feature (FEATURE_PREFETCHI);
> +     }
> +    }
> +
>  #undef set_feature
>  }
>
> diff --git a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h index
> afd4ef06e9f..dac01d887f1 100644
> --- a/gcc/config/i386/cpuid.h
> +++ b/gcc/config/i386/cpuid.h
> @@ -72,6 +72,10 @@
>  #define bit_CLZERO   (1 << 0)
>  #define bit_WBNOINVD (1 << 9)
>
> +/* Extended Features (%eax == 0x80000021) */
> +/* %eax */
> +#define bit_AMD_PREFETCHI (1 << 20)
> +
>  /* Extended Features Leaf (%eax == 7, %ecx == 0) */
>  /* %ebx */
>  #define bit_FSGSBASE (1 << 0)
> --
> 2.43.0
>
>
> >
> > Thanks,
> >
> > Martin
> >
> > >       {
> > >         cpu = "znver5";
> > >         CHECK___builtin_cpu_is ("znver5"); @@ -1102,6 +1104,15 @@
> > > get_available_features (struct __processor_model *cpu_model,
> > >       set_feature (FEATURE_WBNOINVD);
> > >      }
> > >
> > > +  if (ext_level >= 0x80000021)
> > > +    {
> > > +      __cpuid (0x80000021, eax, ebx, ecx, edx);
> > > +      if (eax & bit_AMD_PREFETCHI)
> > > +     {
> > > +       set_feature (FEATURE_PREFETCHI);
> > > +     }
> > > +    }
> > > +
> > >  #undef set_feature
> > >  }
> > >
> > > diff --git a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h index
> > > afd4ef06e9f..dac01d887f1 100644
> > > --- a/gcc/config/i386/cpuid.h
> > > +++ b/gcc/config/i386/cpuid.h
> > > @@ -72,6 +72,10 @@
> > >  #define bit_CLZERO   (1 << 0)
> > >  #define bit_WBNOINVD (1 << 9)
> > >
> > > +/* Extended Features (%eax == 0x80000021) */
> > > +/* %eax */
> > > +#define bit_AMD_PREFETCHI (1 << 20)
> > > +
> > >  /* Extended Features Leaf (%eax == 7, %ecx == 0) */
> > >  /* %ebx */
> > >  #define bit_FSGSBASE (1 << 0)
> > > --
> > > 2.43.0

Reply via email to