]> sourceware.org Git - glibc.git/commitdiff
Define HAS_FMA with bit_FMA_Usable
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 2 Oct 2012 12:05:17 +0000 (05:05 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 2 Oct 2012 12:05:17 +0000 (05:05 -0700)
ChangeLog
NEWS
sysdeps/x86_64/multiarch/init-arch.c
sysdeps/x86_64/multiarch/init-arch.h

index f5183fac7a4834d69f0b4df02894852cbe1b021e..d121446ac17ed0d2479690c2888d4a07bb526a2d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2012-10-02  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-10-01  Roland McGrath  <roland@hack.frob.com>
 
        * bits/types.h (__swblk_t): Type removed.
diff --git a/NEWS b/NEWS
index fe7c78d4f6a825d61b00de3a20aa7aa304c9f29f..3d627256669854586fed531617194dcc2574cc71 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -15,7 +15,7 @@ Version 2.17
   14195, 14237, 14252, 14283, 14298, 14303, 14307, 14328, 14331, 14336,
   14337, 14347, 14349, 14376, 14459, 14476, 14477, 14505, 14510, 14516,
   14518, 14519, 14530, 14532, 14538, 14543, 14544, 14545, 14562, 14576,
-  14579, 14583, 14587, 14621, 14638, 14645.
+  14579, 14583, 14587, 14621, 14638, 14645, 14648.
 
 * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
   Optimized versions of memcpy, memset, and memcmp added for System z10 and
index fb44dcfcf68c299c1e8a2049606a9deb80f8e70b..fed5ab8982126d89a869f91d733b5b65cf40a003 100644 (file)
@@ -156,6 +156,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;
index 45e2651678dd2c417e76548d98d31cd9a1ac47c0..f33f1c81e5cf059ea5f9eb588e9cd1db0599c913 100644 (file)
@@ -22,7 +22,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)
@@ -56,6 +57,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__ */
@@ -131,6 +133,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)
 
@@ -140,7 +144,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
@@ -148,6 +151,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) \
@@ -159,6 +163,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__ */
This page took 0.11759 seconds and 5 git commands to generate.