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