diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-06-07 08:00:21 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-06-07 08:00:40 -0700 |
commit | 91655fc307fec2d5a8d60446b4de11cc986b47fa (patch) | |
tree | 0c0cf306a4134b0414792b6e26f0c4e24cd76117 /sysdeps/x86/cpu-features.c | |
parent | c9bd40daaee18cf1d9824e4a7ebaebe321e0a5a8 (diff) | |
download | glibc-91655fc307fec2d5a8d60446b4de11cc986b47fa.tar.gz glibc-91655fc307fec2d5a8d60446b4de11cc986b47fa.tar.xz glibc-91655fc307fec2d5a8d60446b4de11cc986b47fa.zip |
Check FMA after COMMON_CPUID_INDEX_80000001
Since the FMA4 bit is in COMMON_CPUID_INDEX_80000001 and FMA4 requires AVX, determine if FMA4 is usable after COMMON_CPUID_INDEX_80000001 is available and if AVX is usable. [BZ #20195] * sysdeps/x86/cpu-features.c (get_common_indeces): Move FMA4 check to ... (init_cpu_features): Here.
Diffstat (limited to 'sysdeps/x86/cpu-features.c')
-rw-r--r-- | sysdeps/x86/cpu-features.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c index a5fa81f709..9ce4b495a5 100644 --- a/sysdeps/x86/cpu-features.c +++ b/sysdeps/x86/cpu-features.c @@ -87,10 +87,6 @@ get_common_indeces (struct cpu_features *cpu_features, if (CPU_FEATURES_CPU_P (cpu_features, FMA)) cpu_features->feature[index_arch_FMA_Usable] |= bit_arch_FMA_Usable; - /* Determine if FMA4 is usable. */ - if (CPU_FEATURES_CPU_P (cpu_features, FMA4)) - cpu_features->feature[index_arch_FMA4_Usable] - |= bit_arch_FMA4_Usable; } } } @@ -230,6 +226,15 @@ init_cpu_features (struct cpu_features *cpu_features) cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ecx, cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].edx); + if (HAS_ARCH_FEATURE (AVX_Usable)) + { + /* Since the FMA4 bit is in COMMON_CPUID_INDEX_80000001 and + FMA4 requires AVX, determine if FMA4 is usable here. */ + if (CPU_FEATURES_CPU_P (cpu_features, FMA4)) + cpu_features->feature[index_arch_FMA4_Usable] + |= bit_arch_FMA4_Usable; + } + if (family == 0x15) { #if index_arch_Fast_Unaligned_Load != index_arch_Fast_Copy_Backward |