On Fri, Aug 21, 2026 at 5:05 AM Kumar, Venkataramanan
<[email protected]> wrote:
>
> AMD General
>
> Hi HJ,
>
> > -----Original Message-----
> > From: H.J. Lu <[email protected]>
> > Sent: Friday, August 21, 2026 1:47 AM
> > To: Sharma, Dipesh <[email protected]>
> > Cc: [email protected]; [email protected]; [email protected];
> > [email protected]; [email protected]; Kumar, Venkataramanan
> > <[email protected]>
> > Subject: Re: [PATCH] [X86]: Fix zen6 AVX512BMM cpuid check.
> >
> > Caution: This message originated from an External Source. Use proper
> > caution when opening attachments, clicking links, or responding.
> >
> >
> > On Fri, Aug 21, 2026 at 2:34 AM Dipesh Sharma <[email protected]>
> > wrote:
> > >
> > > Hi,
> > >
> > > This patch fixes the AVX512BMM cpuid check for zen6. The AVX512BMM is
> > > present in the extended features instead of the standard leaf.
> >
> > Where is AVX512BMM spec?  It should also be supported by glibc.
>
> AMD64 Bit Matrix Multiply and Bit Reversal Instructions (PUB) (69192)
> --snip--
> CPUID Function 80000021_EAX[AVX512_BMM] (bit 23) = 1 indicates support for 
> AMD Bit Matrix
> Multiply and Bit Reversal instructions.
> --snip--
>
> You can find it here.
> https://docs.amd.com/v/u/en-US/69192-PUB
>
> regards,
> Venkat.
>
> >
> > > bootstraped and regtested on x86_64-linux-gnu. Ok for trunk ?
> > >
> > > gcc/ChangeLog:
> > >
> > >         * common/config/i386/cpuinfo.h (get_available_features): Detect
> > AVXBMM from extended features instead of standard leaf.
> > > ---
> > >  gcc/common/config/i386/cpuinfo.h | 12 ++----------
> > >  1 file changed, 2 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/gcc/common/config/i386/cpuinfo.h
> > > b/gcc/common/config/i386/cpuinfo.h
> > > index fef8f90f94c..153ab194864 100644
> > > --- a/gcc/common/config/i386/cpuinfo.h
> > > +++ b/gcc/common/config/i386/cpuinfo.h
> > > @@ -1110,16 +1110,6 @@ get_available_features (struct
> > __processor_model *cpu_model,
> > >         }
> > >      }
> > >
> > > -  /* Get Advanced Features at level 0x21 (eax = 0x21).  */
> > > -  if (max_cpuid_level >= 0x21)
> > > -    {
> > > -      __cpuid (0x21, eax, ebx, ecx, edx);
> > > -      if (eax & bit_AVX512BMM)
> > > -       {
> > > -         set_feature (FEATURE_AVX512BMM);
> > > -       }
> > > -    }
> > > -
> > >    /* Get Advanced Features at level 0x24 (eax = 0x24, ecx = 0).  */
> > >    if (avx10_set && max_cpuid_level >= 0x24)
> > >      {
> > > @@ -1205,6 +1195,8 @@ get_available_features (struct
> > __processor_model *cpu_model,
> > >         {
> > >           set_feature (FEATURE_PREFETCHI);
> > >         }
> > > +      if (eax & bit_AVX512BMM)
> > > +       set_feature (FEATURE_AVX512BMM);
> > >      }
> > >
> > >  #undef set_feature

Please fix

/* Sub leaf (%eax == 0x21) */
#define bit_AVX512BMM   ( 1<<23 )

in cpuid.h.

-- 
H.J.

Reply via email to