diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-10-02 05:05:17 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-10-04 07:28:33 -0700 |
commit | 494251ab9fbd715731c444b7ad6b37c49653bc09 (patch) | |
tree | 153a2a342c29ab1cf8bcafc7c7134a4a1aecfae9 | |
parent | 6d3997c51bad9d5d64135a7b4a92201ea158cf60 (diff) | |
download | glibc-494251ab9fbd715731c444b7ad6b37c49653bc09.tar.gz glibc-494251ab9fbd715731c444b7ad6b37c49653bc09.tar.xz glibc-494251ab9fbd715731c444b7ad6b37c49653bc09.zip |
Define HAS_FMA with bit_FMA_Usable
cherry-pick 0569936773c861c791f10bba5e2f4cac5fbb4e78 Conflicts: ChangeLog NEWS
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sysdeps/x86_64/multiarch/init-arch.c | 3 | ||||
-rw-r--r-- | sysdeps/x86_64/multiarch/init-arch.h | 9 |
4 files changed, 23 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index a0b960ce40..c9eaa23430 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2012-10-04 H.J. Lu <hongjiu.lu@intel.com> + + [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 <joseph@codesourcery.com> [BZ #14621] diff --git a/NEWS b/NEWS index ad5006820e..f26e2f4bd6 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 df0fe55cad..4855924eba 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 37566c88df..9604884c2b 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__ */ |