On Tue, Nov 18, 2025 at 3:08 PM Haochen Jiang <[email protected]> wrote:
>
> Hi all,
>
> Nova Lake will enable AVX10.1, AVX10.2, APX_F and MOVRS according to the
> latest documentation.
>
> Due to PTA_XXX would not maintain imply relationships, we need to add
> all PTA_AVX512XXX which AVX10 enabled to enable AVX10.1 ISAs. It is not
> a redundant addition in i386.h.
>
> Ok for trunk?
Ok.
>
> Thx,
> Haochen
>
> gcc/ChangeLog:
>
>         * common/config/i386/i386-common.cc: Adjust to P_PROC_AVX10_1.
>         * config/i386/driver-i386.cc (host_detect_local_cpu):
>         Move Nova Lake to under AVX512 part.
>         * config/i386/i386.h (PTA_NOVALAKE): Add AVX10.1, AVX10.2,
>         APX_F and MOVRS.
>         * config/i386/x86-tune-sched.cc (ix86_issue_rate): Set to 8.
>         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add Nova
>         Lake.
>         * doc/invoke.texi: Adjust documentation.
> ---
>  gcc/common/config/i386/i386-common.cc | 2 +-
>  gcc/config/i386/driver-i386.cc        | 6 +++---
>  gcc/config/i386/i386.h                | 6 +++++-
>  gcc/config/i386/x86-tune-sched.cc     | 3 +++
>  gcc/config/i386/x86-tune.def          | 2 +-
>  gcc/doc/invoke.texi                   | 4 ++--
>  6 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/gcc/common/config/i386/i386-common.cc 
> b/gcc/common/config/i386/i386-common.cc
> index a447a8dd210..96136c5f41f 100644
> --- a/gcc/common/config/i386/i386-common.cc
> +++ b/gcc/common/config/i386/i386-common.cc
> @@ -2274,7 +2274,7 @@ const pta processor_alias_table[] =
>    {"wildcatlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
>      M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
>    {"novalake", PROCESSOR_NOVALAKE, CPU_HASWELL, PTA_NOVALAKE,
> -    M_CPU_SUBTYPE (INTEL_COREI7_NOVALAKE), P_PROC_AVX2},
> +    M_CPU_SUBTYPE (INTEL_COREI7_NOVALAKE), P_PROC_AVX10_1},
>    {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
>      M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
>    {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
> diff --git a/gcc/config/i386/driver-i386.cc b/gcc/config/i386/driver-i386.cc
> index 0557df9884f..b54f0af0a2a 100644
> --- a/gcc/config/i386/driver-i386.cc
> +++ b/gcc/config/i386/driver-i386.cc
> @@ -603,6 +603,9 @@ const char *host_detect_local_cpu (int argc, const char 
> **argv)
>                   /* Assume Diamond Rapids.  */
>                   if (has_feature (FEATURE_AMX_FP8))
>                     cpu = "diamondrapids";
> +                 /* Assume Nova Lake.  */
> +                 else if (has_feature (FEATURE_AVX10_2))
> +                   cpu = "novalake";
>                   /* Assume Granite Rapids D.  */
>                   else if (has_feature (FEATURE_AMX_COMPLEX))
>                     cpu = "graniterapids-d";
> @@ -643,9 +646,6 @@ const char *host_detect_local_cpu (int argc, const char 
> **argv)
>                   /* Assume Clearwater Forest.  */
>                   if (has_feature (FEATURE_USER_MSR))
>                     cpu = "clearwaterforest";
> -                 /* Assume Nova Lake.  */
> -                 else if (has_feature (FEATURE_PREFETCHI))
> -                   cpu = "novalake";
>                   else if (has_feature (FEATURE_SM3))
>                     {
>                         if (has_feature (FEATURE_KL))
> diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
> index 94f335f8a95..b93411796af 100644
> --- a/gcc/config/i386/i386.h
> +++ b/gcc/config/i386/i386.h
> @@ -2488,7 +2488,11 @@ constexpr wide_int_bitmask PTA_DIAMONDRAPIDS = 
> PTA_GRANITERAPIDS_D
>    | PTA_CMPCCXADD | PTA_SHA512 | PTA_SM3 | PTA_SM4 | PTA_AVX10_2
>    | PTA_APX_F | PTA_AMX_AVX512 | PTA_AMX_FP8 | PTA_AMX_TF32 | PTA_MOVRS
>    | PTA_AMX_MOVRS;
> -constexpr wide_int_bitmask PTA_NOVALAKE = PTA_PANTHERLAKE | PTA_PREFETCHI;
> +constexpr wide_int_bitmask PTA_NOVALAKE = PTA_PANTHERLAKE | PTA_PREFETCHI
> +  | PTA_AVX512F | PTA_AVX512CD | PTA_AVX512VL | PTA_AVX512BW | PTA_AVX512DQ
> +  | PTA_AVX512VBMI | PTA_AVX512IFMA | PTA_AVX512VNNI | PTA_AVX512VBMI2
> +  | PTA_AVX512BITALG | PTA_AVX512VPOPCNTDQ | PTA_AVX512FP16 | PTA_AVX512BF16
> +  | PTA_AVX10_1 | PTA_AVX10_2 | PTA_APX_F | PTA_MOVRS;
>
>  constexpr wide_int_bitmask PTA_BDVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
>    | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_POPCNT | PTA_LZCNT
> diff --git a/gcc/config/i386/x86-tune-sched.cc 
> b/gcc/config/i386/x86-tune-sched.cc
> index ff9c2683007..11b33382ecb 100644
> --- a/gcc/config/i386/x86-tune-sched.cc
> +++ b/gcc/config/i386/x86-tune-sched.cc
> @@ -110,6 +110,9 @@ ix86_issue_rate (void)
>      case PROCESSOR_PANTHERLAKE:
>        return 6;
>
> +    case PROCESSOR_NOVALAKE:
> +      return 8;
> +
>      default:
>        return 1;
>      }
> diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def
> index 3627312bf09..dcd26d59351 100644
> --- a/gcc/config/i386/x86-tune.def
> +++ b/gcc/config/i386/x86-tune.def
> @@ -602,7 +602,7 @@ DEF_TUNE (X86_TUNE_AVX128_OPTIMAL, "avx128_optimal", 
> m_BDVER | m_BTVER2
>
>  /* X86_TUNE_AVX256_OPTIMAL: Use 256-bit AVX instructions instead of 512-bit 
> AVX
>     instructions in the auto-vectorizer.  */
> -DEF_TUNE (X86_TUNE_AVX256_OPTIMAL, "avx256_optimal", m_CORE_AVX512)
> +DEF_TUNE (X86_TUNE_AVX256_OPTIMAL, "avx256_optimal", m_CORE_AVX512 | 
> m_NOVALAKE)
>
>  /* X86_TUNE_AVX256_AVOID_VEC_PERM: Avoid using 256-bit cross-lane
>     vector permutation instructions in the auto-vectorizer.  */
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 6b3ba12e7dd..63384cec6a0 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -35493,8 +35493,8 @@ SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, 
> PCLMUL, RDRND, XSAVE, XSAVEC,
>  XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
>  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, 
> PKU,
>  VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
> -AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 and PREFETCHI
> -instruction set support.
> +AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, PREFETCHI, APX_F,
> +AVX10.1, AVX10.2 and MOVRS instruction set support.
>
>  @item sapphirerapids
>  @itemx emeraldrapids
> --
> 2.31.1
>


-- 
BR,
Hongtao

Reply via email to