summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-09-04 16:01:43 +0000
committerCraig Topper <craig.topper@intel.com>2019-09-04 16:01:43 +0000
commit155ed45405e7ed61cd2e10fc114b31ca9525b8aa (patch)
tree6e08f3cb17f2e5cfc1f8772eda5d5bfc888b38f3
parent03975865797bd3c2388ca5ee8068854a0146f2eb (diff)
downloadcompiler-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.c8
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);