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.
This commit is contained in:
H.J. Lu 2016-06-07 08:00:21 -07:00
parent c9bd40daae
commit 91655fc307
2 changed files with 16 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2016-06-07 H.J. Lu <hongjiu.lu@intel.com>
[BZ #20195]
* sysdeps/x86/cpu-features.c (get_common_indeces): Move FMA4
check to ...
(init_cpu_features): Here.
2016-06-07 Carlos O'Donell <carlos@redhat.com> 2016-06-07 Carlos O'Donell <carlos@redhat.com>
[BZ #20214] [BZ #20214]

View File

@ -87,10 +87,6 @@ get_common_indeces (struct cpu_features *cpu_features,
if (CPU_FEATURES_CPU_P (cpu_features, FMA)) if (CPU_FEATURES_CPU_P (cpu_features, FMA))
cpu_features->feature[index_arch_FMA_Usable] cpu_features->feature[index_arch_FMA_Usable]
|= bit_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].ecx,
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].edx); 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 (family == 0x15)
{ {
#if index_arch_Fast_Unaligned_Load != index_arch_Fast_Copy_Backward #if index_arch_Fast_Unaligned_Load != index_arch_Fast_Copy_Backward