x86: Remove brand ID check for Intel processors
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 12 Jun 2020 23:33:23 +0000 (16:33 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 24 Jun 2020 15:12:38 +0000 (08:12 -0700)
Brand ID was a feature that briefly existed in some Pentium III and
Pentium 4 CPUs.  The CPUs that had non-zero brand ID still have had
valid family/model.  Brand ID just gives a marketing name for the CPU.
Remove the extra code for brand ID check.

gcc/

PR target/95660
* common/config/i386/cpuinfo.h (get_intel_cpu): Remove brand_id.
(cpu_indicator_init): Likewise.
* config/i386/driver-i386.c (host_detect_local_cpu): Updated.

gcc/testsuite/

PR target/95660
* gcc.target/i386/builtin_target.c (check_detailed): Updated.

gcc/common/config/i386/cpuinfo.h
gcc/config/i386/driver-i386.c
gcc/testsuite/gcc.target/i386/builtin_target.c

index 27b7b4d8581f74c683c09ae50f576567d27625cf..3eda53240f67e45244f7de65f3dac50ec2305d95 100644 (file)
@@ -254,13 +254,12 @@ get_amd_cpu (struct __processor_model *cpu_model,
 static inline const char *
 get_intel_cpu (struct __processor_model *cpu_model,
               struct __processor_model2 *cpu_model2,
-              unsigned int *cpu_features2,
-              unsigned int brand_id)
+              unsigned int *cpu_features2)
 {
   const char *cpu = NULL;
 
-  /* Parse family and model only for brand ID 0 and model 6. */
-  if (brand_id != 0 || cpu_model2->__cpu_family != 0x6)
+  /* Parse family and model only for model 6. */
+  if (cpu_model2->__cpu_family != 0x6)
     return cpu;
 
   switch (cpu_model2->__cpu_model)
@@ -758,7 +757,7 @@ cpu_indicator_init (struct __processor_model *cpu_model,
 
   int max_level;
   unsigned int vendor;
-  unsigned int model, family, brand_id;
+  unsigned int model, family;
   unsigned int extended_model, extended_family;
 
   /* This function needs to run just once.  */
@@ -791,7 +790,6 @@ cpu_indicator_init (struct __processor_model *cpu_model,
 
   model = (eax >> 4) & 0x0f;
   family = (eax >> 8) & 0x0f;
-  brand_id = ebx & 0xff;
   extended_model = (eax >> 12) & 0xf0;
   extended_family = (eax >> 20) & 0xff;
 
@@ -813,7 +811,7 @@ cpu_indicator_init (struct __processor_model *cpu_model,
       get_available_features (cpu_model, cpu_model2, cpu_features2,
                              ecx, edx);
       /* Get CPU type.  */
-      get_intel_cpu (cpu_model, cpu_model2, cpu_features2, brand_id);
+      get_intel_cpu (cpu_model, cpu_model2, cpu_features2);
       cpu_model->__cpu_vendor = VENDOR_INTEL;
     }
   else if (vendor == signature_AMD_ebx)
index e9e4d6ed023766de6f5c3f0f5af8b0e9233ea2b3..6da2a15c1b04c3c9b9d959492ef242dd3b3ea14a 100644 (file)
@@ -555,7 +555,7 @@ const char *host_detect_local_cpu (int argc, const char **argv)
        cpu = "pentium";
       break;
     case PROCESSOR_PENTIUMPRO:
-      cpu = get_intel_cpu (&cpu_model, &cpu_model2, cpu_features2, 0);
+      cpu = get_intel_cpu (&cpu_model, &cpu_model2, cpu_features2);
       if (cpu == NULL)
        {
          if (arch)
index e87f262a775c42f2449cfca00b3795b03c8e158f..aa9680544d8f453b3aeed0e5adb3b9008ece9047 100644 (file)
@@ -46,7 +46,7 @@ check_detailed ()
     {
     case VENDOR_INTEL:
       assert (__builtin_cpu_is ("intel"));
-      get_intel_cpu (&cpu_model, &cpu_model2, cpu_features2, 0);
+      get_intel_cpu (&cpu_model, &cpu_model2, cpu_features2);
       break;
     case VENDOR_AMD:
       assert (__builtin_cpu_is ("amd"));