From 155ed45405e7ed61cd2e10fc114b31ca9525b8aa Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Wed, 4 Sep 2019 16:01:43 +0000 Subject: [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 --- lib/builtins/cpu_model.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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); -- cgit v1.2.1