Hi,

This patch is a simple fix for HRESET/AVX_VNNI/UINTR feature detect is
put wrongly under avx_512usable.

Bootstrap and tested on x86-64-linux, OK for trunk?

gcc/ChangeLog:
    * common/config/i386/cpuinfo.h (get_available_features):
    Move check for HRESET/AVX_VNNI/UINTR out of avx512_usable.
---
 gcc/common/config/i386/cpuinfo.h | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h
index 4f1ab636807..19de63fe7ac 100644
--- a/gcc/common/config/i386/cpuinfo.h
+++ b/gcc/common/config/i386/cpuinfo.h
@@ -686,6 +686,8 @@ get_available_features (struct __processor_model *cpu_model,
       if (edx & bit_AMX_BF16)
         set_feature (FEATURE_AMX_BF16);
     }
+      if (edx & bit_UINTR)
+    set_feature (FEATURE_UINTR);
       if (ecx & bit_KL)
     has_kl = 1;
       if (avx512_usable)
@@ -722,17 +724,19 @@ get_available_features (struct __processor_model
*cpu_model,
         set_feature (FEATURE_AVX5124FMAPS);
       if (edx & bit_AVX512VP2INTERSECT)
         set_feature (FEATURE_AVX512VP2INTERSECT);
-      if (edx & bit_UINTR)
-        set_feature (FEATURE_UINTR);

       __cpuid_count (7, 1, eax, ebx, ecx, edx);
       if (eax & bit_AVX512BF16)
         set_feature (FEATURE_AVX512BF16);
-      if (eax & bit_HRESET)
-        set_feature (FEATURE_HRESET);
+    }
+
+      __cpuid_count (7, 1, eax, ebx, ecx, edx);
+      if (eax & bit_HRESET)
+    set_feature (FEATURE_HRESET);
+      if (avx_usable)
+    {
       if (eax & bit_AVXVNNI)
         set_feature (FEATURE_AVXVNNI);
-
     }
     }

-- 

-- 
Regards,

Hongyu, Wang

Reply via email to