aboutsummaryrefslogtreecommitdiff
path: root/gcc/common
diff options
context:
space:
mode:
authorHongyu <hongyu.wang@intel.com>2020-12-09 19:18:41 +0000
committerliuhongt <hongtao.liu@intel.com>2020-12-11 14:07:52 +0800
commit99d6ba6acb2e31fa4828a93f1561c02ee36ac89a (patch)
treedcd9016647f878f002606f4b4401712e44c94b3b /gcc/common
parenta5c05005499dd323296008fda4f414d8647adf0c (diff)
downloadgcc-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/common')
-rw-r--r--gcc/common/config/i386/cpuinfo.h25
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);
}
}