[PATCH] x86: Add DMR model detection support

H.J. Lu hjl.tools@gmail.com
Thu Apr 10 21:59:16 GMT 2025


On Thu, Apr 10, 2025 at 2:31 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Thu, Apr 10, 2025 at 11:44 AM Sunil K Pandey
> <sunil.k.pandey@intel.com> wrote:
> >
> > - Add DIAMONDRAPIDS model detection.
> > - Enable Bigcore tuning to DMR.
> >
> > Intel® Architecture Instruction Set Extensions Programming Reference
> > https://cdrdv2.intel.com/v1/dl/getContent/671368 Section 1.2.
> > ---
> >  sysdeps/x86/cpu-features.c | 39 +++++++++++++++++++++++++++++++++++---
> >  1 file changed, 36 insertions(+), 3 deletions(-)
> >
> > diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
> > index f1d2a179e4..3f4699a9f7 100644
> > --- a/sysdeps/x86/cpu-features.c
> > +++ b/sysdeps/x86/cpu-features.c
> > @@ -502,7 +502,7 @@ _Static_assert (((index_arch_Fast_Unaligned_Load
> >                 "Incorrect index_arch_Fast_Unaligned_Load");
> >
> >
> > -/* Intel Family-6 microarch list.  */
> > +/* Intel Family microarch list.  */
> >  enum
> >  {
> >    /* Atom processors.  */
> > @@ -542,6 +542,7 @@ enum
> >    INTEL_BIGCORE_ARROWLAKE,
> >    INTEL_BIGCORE_PANTHERLAKE,
> >    INTEL_BIGCORE_GRANITERAPIDS,
> > +  INTEL_BIGCORE_DIAMONDRAPIDS,
> >
> >    /* Mixed (bigcore + atom SOC).  */
> >    INTEL_MIXED_LAKEFIELD,
> > @@ -749,6 +750,7 @@ init_cpu_features (struct cpu_features *cpu_features)
> >    if (ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69)
> >      {
> >        unsigned int extended_model;
> > +      unsigned int microarch;
> >
> >        kind = arch_kind_intel;
> >
> > @@ -767,8 +769,7 @@ init_cpu_features (struct cpu_features *cpu_features)
> >        if (family == 0x06)
> >         {
> >           model += extended_model;
> > -         unsigned int microarch
> > -             = intel_get_fam6_microarch (model, stepping);
> > +         microarch = intel_get_fam6_microarch (model, stepping);
> >
> >           switch (microarch)
> >             {
> > @@ -932,6 +933,38 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht
> >                 break;
> >             }
> >         }
> > +      else if (family == 0x13)
> > +       {

Linux kernel has

unsigned int x86_model(unsigned int sig)
{
        unsigned int fam, model;

        fam = x86_family(sig);

        model = (sig >> 4) & 0xf;

        if (fam >= 0x6)
       ^^^^^^^^^^^^^^^
                model += ((sig >> 16) & 0xf) << 4;

        return model;
}

Please check which one is correct, Linux kernel or SDM.

> > +         switch (model)
> > +           {
> > +           case 0x01:
> > +             microarch = INTEL_BIGCORE_DIAMONDRAPIDS;
> > +             break;
> > +
> > +           default:
> > +             microarch = INTEL_UNKNOWN;
> > +             break;
> > +           }
> > +
> > +         switch (microarch)
> > +           {
> > +             /* Intel Diamond Rapids tuning.  */
> > +           case INTEL_BIGCORE_DIAMONDRAPIDS:
> > +             /* Rep string instructions, unaligned load, unaligned copy,
> > +                and pminub are fast on Intel Core i3, i5 and i7.  */
> > +             cpu_features->preferred[index_arch_Fast_Rep_String]
> > +               |= (bit_arch_Fast_Rep_String
> > +                   | bit_arch_Fast_Unaligned_Load
> > +                   | bit_arch_Fast_Unaligned_Copy
> > +                   | bit_arch_Prefer_PMINUB_for_stringop);
> > +             cpu_features->cachesize_non_temporal_divisor = 2;
> > +             break;
> > +
> > +           default:
> > +             /* Unknown family 0x13 processors.  */
> > +             break;
> > +           }
> > +       }
>
> Please change how family 6 and 19 CPU models are handled in 2 patches:
>
> 1.  Handled unknown family CPUs with default_tuning.
> 2.  Add family 19 CPU support.
>
> >
> >        /* Since AVX512ER is unique to Xeon Phi, set Prefer_No_VZEROUPPER
> > --
> > 2.49.0
> >
>
>
> --
> H.J.



-- 
H.J.


More information about the Libc-alpha mailing list