diff options
author | Craig Topper <craig.topper@intel.com> | 2019-09-04 16:01:43 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-09-04 16:01:43 +0000 |
commit | 155ed45405e7ed61cd2e10fc114b31ca9525b8aa (patch) | |
tree | 6e08f3cb17f2e5cfc1f8772eda5d5bfc888b38f3 | |
parent | 03975865797bd3c2388ca5ee8068854a0146f2eb (diff) | |
download | compiler-rt-155ed45405e7ed61cd2e10fc114b31ca9525b8aa.tar.gz |
[X86] Add support for avx512bf16 for __builtin_cpu_supports and compiler-rt's cpu indicator.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@370915 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/builtins/cpu_model.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/builtins/cpu_model.c b/lib/builtins/cpu_model.c index b37fdbacb..cdeb03794 100644 --- a/lib/builtins/cpu_model.c +++ b/lib/builtins/cpu_model.c @@ -121,7 +121,8 @@ enum ProcessorFeatures { FEATURE_GFNI, FEATURE_VPCLMULQDQ, FEATURE_AVX512VNNI, - FEATURE_AVX512BITALG + FEATURE_AVX512BITALG, + FEATURE_AVX512BF16 }; // The check below for i386 was copied from clang's cpuid.h (__get_cpuid_max). @@ -582,6 +583,11 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf, if (HasLeaf7 && ((EDX >> 3) & 1) && HasAVX512Save) setFeature(FEATURE_AVX5124FMAPS); + bool HasLeaf7Subleaf1 = + MaxLeaf >= 0x7 && !getX86CpuIDAndInfoEx(0x7, 0x1, &EAX, &EBX, &ECX, &EDX); + if (HasLeaf7Subleaf1 && ((EAX >> 5) & 1) && HasAVX512Save) + setFeature(FEATURE_AVX512BF16); + unsigned MaxExtLevel; getX86CpuIDAndInfo(0x80000000, &MaxExtLevel, &EBX, &ECX, &EDX); |