x86: Add Cooper Lake detection with AVX512BF16
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 20 Jun 2020 04:17:26 +0000 (21:17 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 24 Jun 2020 14:59:17 +0000 (07:59 -0700)
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

index 2d72b3b..27b7b4d 100644 (file)
@@ -398,7 +398,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";