Hi all,

There are several changes for features enabled on cpus. r16-1666 disabled
CLDEMOTE on clients. r16-2224 removed Key locker since Panther Lake and
Clearwater forest. r16-4436 disabled PREFETCHI on Panther Lake.

The patches caused the current return guess value not aligned for
host_detect_local_cpu meeting the unknown model number. Correct the
logic according to the features enabled.

Ok for trunk and backport to GCC14/15?

Thx,
Haochen

gcc/ChangeLog:

        * config/i386/driver-i386.cc (host_detect_local_cpu): Correct
        the logic for unknown model number cpu guess value.
---
 gcc/config/i386/driver-i386.cc | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/gcc/config/i386/driver-i386.cc b/gcc/config/i386/driver-i386.cc
index fe71f550075..3eacc2cbc39 100644
--- a/gcc/config/i386/driver-i386.cc
+++ b/gcc/config/i386/driver-i386.cc
@@ -639,18 +639,24 @@ const char *host_detect_local_cpu (int argc, const char 
**argv)
                }
              else if (has_feature (FEATURE_AVX))
                {
-                 /* Assume Panther Lake.  */
-                 if (has_feature (FEATURE_PREFETCHI))
-                   cpu = "pantherlake";
                  /* Assume Clearwater Forest.  */
-                 else if (has_feature (FEATURE_USER_MSR))
+                 if (has_feature (FEATURE_USER_MSR))
                    cpu = "clearwaterforest";
-                 /* Assume Arrow Lake S.  */
                  else if (has_feature (FEATURE_SM3))
-                   cpu = "arrowlake-s";
+                   {
+                       if (has_feature (FEATURE_KL))
+                         /* Assume Arrow Lake S.  */
+                         cpu = "arrowlake-s";
+                       else
+                         /* Assume Panther Lake.  */
+                         cpu = "pantherlake";
+                   }
                  /* Assume Sierra Forest.  */
-                 else if (has_feature (FEATURE_AVXVNNIINT8))
+                 else if (has_feature (FEATURE_CLDEMOTE))
                    cpu = "sierraforest";
+                 /* Assume Arrow Lake.  */
+                 else if (has_feature (FEATURE_AVXVNNIINT8))
+                   cpu = "arrowlake";
                  /* Assume Alder Lake.  */
                  else if (has_feature (FEATURE_SERIALIZE))
                    cpu = "alderlake";
-- 
2.31.1

Reply via email to