All Sky Lake family processors have the same CPUID model number, 0x55.
The differences are Cascade Lake has AVX512VNNI and Cooper Lake has
AVX512VNNI + AVX512BF16.  Check AVX512BF16 for Cooper Lake.

        PR target/95774
        * common/config/i386/cpuinfo.h (get_intel_cpu): Add Cooper Lake
        detection with AVX512BF16.
---
 gcc/common/config/i386/cpuinfo.h | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h
index 0a0e88011bc..3eda53240f6 100644
--- a/gcc/common/config/i386/cpuinfo.h
+++ b/gcc/common/config/i386/cpuinfo.h
@@ -397,7 +397,15 @@ get_intel_cpu (struct __processor_model *cpu_model,
       CHECK___builtin_cpu_is ("corei7");
       cpu_model->__cpu_type = INTEL_COREI7;
       if (has_cpu_feature (cpu_model, cpu_features2,
-                          FEATURE_AVX512VNNI))
+                          FEATURE_AVX512BF16))
+       {
+         /* Cooper Lake.  */
+         cpu = "cooperlake";
+         CHECK___builtin_cpu_is ("cooperlake");
+         cpu_model->__cpu_subtype = INTEL_COREI7_COOPERLAKE;
+       }
+      else if (has_cpu_feature (cpu_model, cpu_features2,
+                               FEATURE_AVX512VNNI))
        {
          /* Cascade Lake.  */
          cpu = "cascadelake";
-- 
2.26.2

Reply via email to