From: H.J. Lu Date: Tue, 2 Oct 2012 12:05:17 +0000 (-0700) Subject: Define HAS_FMA with bit_FMA_Usable X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=494251ab9fbd715731c444b7ad6b37c49653bc09;p=thirdparty%2Fglibc.git Define HAS_FMA with bit_FMA_Usable cherry-pick 0569936773c861c791f10bba5e2f4cac5fbb4e78 Conflicts: ChangeLog NEWS --- diff --git a/ChangeLog b/ChangeLog index a0b960ce402..c9eaa234300 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2012-10-04 H.J. Lu + + [BZ #14648] + * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): + Set bit_FMA_Usable if FMA is supported. + * sysdeps/x86_64/multiarch/init-arch.h (bit_FMA_Usable): New + macro. + (bit_FMA4_Usable): Updated. + (index_FMA_Usable): New macro. + (CPUID_FMA): Likewise + (HAS_FMA): Defined with bit_FMA_Usable. + 2012-09-25 Joseph Myers [BZ #14621] diff --git a/NEWS b/NEWS index ad5006820e5..f26e2f4bd6c 100644 --- a/NEWS +++ b/NEWS @@ -11,7 +11,7 @@ Version 2.15.1 411, 2547, 2548, 11365, 11494, 13583, 13731, 13732, 13733, 13747, 13748, 13749, 13753, 13771, 13774, 13786, 14048, 14059, 14167, 14273, 14459, - 14621 + 14621, 14648 Version 2.15 diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c index df0fe55cad1..4855924ebad 100644 --- a/sysdeps/x86_64/multiarch/init-arch.c +++ b/sysdeps/x86_64/multiarch/init-arch.c @@ -157,6 +157,9 @@ __init_cpu_features (void) /* Determine if AVX is usable. */ if (CPUID_AVX) __cpu_features.feature[index_AVX_Usable] |= bit_AVX_Usable; + /* Determine if FMA is usable. */ + if (CPUID_FMA) + __cpu_features.feature[index_FMA_Usable] |= bit_FMA_Usable; /* Determine if FMA4 is usable. */ if (CPUID_FMA4) __cpu_features.feature[index_FMA4_Usable] |= bit_FMA4_Usable; diff --git a/sysdeps/x86_64/multiarch/init-arch.h b/sysdeps/x86_64/multiarch/init-arch.h index 37566c88df7..9604884c2ba 100644 --- a/sysdeps/x86_64/multiarch/init-arch.h +++ b/sysdeps/x86_64/multiarch/init-arch.h @@ -23,7 +23,8 @@ #define bit_Fast_Unaligned_Load (1 << 4) #define bit_Prefer_PMINUB_for_stringop (1 << 5) #define bit_AVX_Usable (1 << 6) -#define bit_FMA4_Usable (1 << 7) +#define bit_FMA_Usable (1 << 7) +#define bit_FMA4_Usable (1 << 8) /* CPUID Feature flags. */ #define bit_SSE2 (1 << 26) @@ -57,6 +58,7 @@ # define index_Fast_Unaligned_Load FEATURE_INDEX_1*FEATURE_SIZE # define index_Prefer_PMINUB_for_stringop FEATURE_INDEX_1*FEATURE_SIZE # define index_AVX_Usable FEATURE_INDEX_1*FEATURE_SIZE +# define index_FMA_Usable FEATURE_INDEX_1*FEATURE_SIZE # define index_FMA4_Usable FEATURE_INDEX_1*FEATURE_SIZE #else /* __ASSEMBLER__ */ @@ -132,6 +134,8 @@ extern const struct cpu_features *__get_cpu_features (void) HAS_CPUID_FLAG (COMMON_CPUID_INDEX_1, ecx, bit_OSXSAVE) # define CPUID_AVX \ HAS_CPUID_FLAG (COMMON_CPUID_INDEX_1, ecx, bit_AVX) +# define CPUID_FMA \ + HAS_CPUID_FLAG (COMMON_CPUID_INDEX_1, ecx, bit_FMA) # define CPUID_FMA4 \ HAS_CPUID_FLAG (COMMON_CPUID_INDEX_80000001, ecx, bit_FMA4) @@ -141,7 +145,6 @@ extern const struct cpu_features *__get_cpu_features (void) # define HAS_SSSE3 HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_SSSE3) # define HAS_SSE4_1 HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_SSE4_1) # define HAS_SSE4_2 HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_SSE4_2) -# define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_FMA) # define index_Fast_Rep_String FEATURE_INDEX_1 # define index_Fast_Copy_Backward FEATURE_INDEX_1 @@ -149,6 +152,7 @@ extern const struct cpu_features *__get_cpu_features (void) # define index_Prefer_SSE_for_memop FEATURE_INDEX_1 # define index_Fast_Unaligned_Load FEATURE_INDEX_1 # define index_AVX_Usable FEATURE_INDEX_1 +# define index_FMA_Usable FEATURE_INDEX_1 # define index_FMA4_Usable FEATURE_INDEX_1 # define HAS_ARCH_FEATURE(name) \ @@ -160,6 +164,7 @@ extern const struct cpu_features *__get_cpu_features (void) # define HAS_PREFER_SSE_FOR_MEMOP HAS_ARCH_FEATURE (Prefer_SSE_for_memop) # define HAS_FAST_UNALIGNED_LOAD HAS_ARCH_FEATURE (Fast_Unaligned_Load) # define HAS_AVX HAS_ARCH_FEATURE (AVX_Usable) +# define HAS_FMA HAS_ARCH_FEATURE (FMA_Usable) # define HAS_FMA4 HAS_ARCH_FEATURE (FMA4_Usable) #endif /* __ASSEMBLER__ */