int
avx512_runtime_support_p ()
{
- unsigned int eax, ebx, ecx, edx;
-
- if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
- return 0;
-
/* Run AVX512 test only if host has ISA support. */
- if (check_osxsave ()
- && (ebx & bit_AVX512F)
+ if (__builtin_cpu_supports ("avx512f")
#ifdef AVX512VL
- && (ebx & bit_AVX512VL)
+ && __builtin_cpu_supports ("avx512vl")
#endif
#ifdef AVX512ER
- && (ebx & bit_AVX512ER)
+ && __builtin_cpu_supports ("avx512er")
#endif
#ifdef AVX512CD
- && (ebx & bit_AVX512CD)
+ && __builtin_cpu_supports ("avx512cd")
#endif
#ifdef AVX512DQ
- && (ebx & bit_AVX512DQ)
+ && __builtin_cpu_supports ("avx512dq")
#endif
#ifdef AVX512BW
- && (ebx & bit_AVX512BW)
+ && __builtin_cpu_supports ("avx512bw")
#endif
#ifdef AVX512IFMA
- && (ebx & bit_AVX512IFMA)
+ && __builtin_cpu_supports ("avx512ifma")
#endif
#ifdef AVX512VBMI
- && (ecx & bit_AVX512VBMI)
+ && __builtin_cpu_supports ("avx512vbmi")
#endif
#ifdef AVX5124FMAPS
- && (edx & bit_AVX5124FMAPS)
+ && __builtin_cpu_supports ("avx5124fmaps")
#endif
#ifdef AVX5124VNNIW
- && (edx & bit_AVX5124VNNIW)
+ && __builtin_cpu_supports ("avx5124vnniw")
#endif
#ifdef AVX512VPOPCNTDQ
- && (ecx & bit_AVX512VPOPCNTDQ)
+ && __builtin_cpu_supports ("avx512vpopcntdq")
#endif
#ifdef AVX512BITALG
- && (ecx & bit_AVX512BITALG)
+ && __builtin_cpu_supports ("avx512bitalg")
#endif
#ifdef GFNI
- && (ecx & bit_GFNI)
+ && __builtin_cpu_supports ("gfni")
#endif
#ifdef AVX512VBMI2
- && (ecx & bit_AVX512VBMI2)
+ && __builtin_cpu_supports ("avx512vbmi2")
#endif
#ifdef AVX512VNNI
- && (ecx & bit_AVX512VNNI)
+ && __builtin_cpu_supports ("avx512vnni")
#endif
#ifdef AVX512FP16
- && (edx & bit_AVX512FP16)
+ && __builtin_cpu_supports ("avx512fp16")
#endif
#ifdef VAES
- && (ecx & bit_VAES)
+ && __builtin_cpu_supports ("vaes")
#endif
#ifdef VPCLMULQDQ
- && (ecx & bit_VPCLMULQDQ)
+ && __builtin_cpu_supports ("vpclmulqdq")
#endif
#ifdef AVX512VP2INTERSECT
- && (edx & bit_AVX512VP2INTERSECT)
+ && __builtin_cpu_supports ("avx512vp2intersect")
#endif
- && avx512f_os_support ())
+ )
{
return 1;
}