+2017-09-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ [BZ #21967]
+ * sysdeps/x86/cpu-features.h (bit_arch_MathVec_Prefer_No_AVX512):
+ New.
+ (index_arch_MathVec_Prefer_No_AVX512): Likewise.
+ * sysdeps/x86/cpu-tunables.c (TUNABLE_CALLBACK (set_hwcaps)):
+ Handle MathVec_Prefer_No_AVX512.
+ * sysdeps/x86_64/fpu/multiarch/ifunc-mathvec-avx512.h
+ (IFUNC_SELECTOR): Return AVX2 version if MathVec_Prefer_No_AVX512
+ is set.
+
2017-09-12 Samuel Thibault <samuel.thibault@ens-lyon.org>
* posix/sched_primax.c (__sched_get_priority_max): Add
#define bit_arch_Use_dl_runtime_resolve_opt (1 << 20)
#define bit_arch_Use_dl_runtime_resolve_slow (1 << 21)
#define bit_arch_Prefer_No_AVX512 (1 << 22)
+#define bit_arch_MathVec_Prefer_No_AVX512 (1 << 23)
/* CPUID Feature flags. */
# define index_arch_Use_dl_runtime_resolve_opt FEATURE_INDEX_1
# define index_arch_Use_dl_runtime_resolve_slow FEATURE_INDEX_1
# define index_arch_Prefer_No_AVX512 FEATURE_INDEX_1
+# define index_arch_MathVec_Prefer_No_AVX512 FEATURE_INDEX_1
#endif /* !__ASSEMBLER__ */
disable, 23);
}
break;
+ case 24:
+ {
+ CHECK_GLIBC_IFUNC_ARCH_NEED_ARCH_BOTH
+ (n, cpu_features, MathVec_Prefer_No_AVX512,
+ AVX512F_Usable, disable, 24);
+ }
+ break;
case 26:
{
CHECK_GLIBC_IFUNC_ARCH_NEED_CPU_BOTH
{
const struct cpu_features* cpu_features = __get_cpu_features ();
- if (CPU_FEATURES_ARCH_P (cpu_features, AVX512DQ_Usable))
- return OPTIMIZE (skx);
-
- if (CPU_FEATURES_ARCH_P (cpu_features, AVX512F_Usable))
- return OPTIMIZE (knl);
+ if (!CPU_FEATURES_ARCH_P (cpu_features, MathVec_Prefer_No_AVX512))
+ {
+ if (CPU_FEATURES_ARCH_P (cpu_features, AVX512DQ_Usable))
+ return OPTIMIZE (skx);
+
+ if (CPU_FEATURES_ARCH_P (cpu_features, AVX512F_Usable))
+ return OPTIMIZE (knl);
+ }
return OPTIMIZE (avx2_wrapper);
}