[PATCH] x86: Add DMR model detection support

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


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)
> +       {
> +         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.


More information about the Libc-alpha mailing list