diff options
author | Hongyu <hongyu.wang@intel.com> | 2020-12-09 19:18:41 +0000 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2020-12-11 14:07:52 +0800 |
commit | 99d6ba6acb2e31fa4828a93f1561c02ee36ac89a (patch) | |
tree | dcd9016647f878f002606f4b4401712e44c94b3b /gcc | |
parent | a5c05005499dd323296008fda4f414d8647adf0c (diff) | |
download | gcc-99d6ba6acb2e31fa4828a93f1561c02ee36ac89a.zip gcc-99d6ba6acb2e31fa4828a93f1561c02ee36ac89a.tar.gz gcc-99d6ba6acb2e31fa4828a93f1561c02ee36ac89a.tar.bz2 |
Fix feature check for HRESET/AVX_VNNI/UINTR
gcc/ChangeLog:
* common/config/i386/cpuinfo.h (get_available_features):
Move check for HRESET/AVX_VNNI/UINTR out of avx512_usable.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/common/config/i386/cpuinfo.h | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h index 4f1ab63..a3372fc 100644 --- a/gcc/common/config/i386/cpuinfo.h +++ b/gcc/common/config/i386/cpuinfo.h @@ -669,6 +669,8 @@ get_available_features (struct __processor_model *cpu_model, set_feature (FEATURE_WAITPKG); if (ecx & bit_SHSTK) set_feature (FEATURE_SHSTK); + if (ecx & bit_KL) + has_kl = 1; if (edx & bit_SERIALIZE) set_feature (FEATURE_SERIALIZE); if (edx & bit_TSXLDTRK) @@ -677,6 +679,8 @@ get_available_features (struct __processor_model *cpu_model, set_feature (FEATURE_PCONFIG); if (edx & bit_IBT) set_feature (FEATURE_IBT); + if (edx & bit_UINTR) + set_feature (FEATURE_UINTR); if (amx_usable) { if (edx & bit_AMX_TILE) @@ -686,8 +690,6 @@ get_available_features (struct __processor_model *cpu_model, if (edx & bit_AMX_BF16) set_feature (FEATURE_AMX_BF16); } - if (ecx & bit_KL) - has_kl = 1; if (avx512_usable) { if (ebx & bit_AVX512F) @@ -722,17 +724,20 @@ 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); - + } + if (avx512_usable) + { + if (eax & bit_AVX512BF16) + set_feature (FEATURE_AVX512BF16); } } |