summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.vnet.ibm.com>2010-10-19 12:49:05 -0400
committerUlrich Drepper <drepper@gmail.com>2010-10-19 12:49:05 -0400
commitd20501241ea423e477b357d93147530987e0d89e (patch)
treed3f6778111be8ffde5964e2c2903a8b6fe697cdf
parent6ce0bb748d7de856cb2076b41625fe7cedac5e16 (diff)
downloadglibc-d20501241ea423e477b357d93147530987e0d89e.tar.gz
Add C99 FP_FAST_FMA{,F,L} macros to math.h
-rw-r--r--ChangeLog10
-rw-r--r--bits/mathdef.h14
-rw-r--r--sysdeps/powerpc/bits/mathdef.h4
3 files changed, 28 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 613f8dfb3f..f90f303069 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2010-10-19 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * bits/mathdef.h (FP_FAST_FMA): If the GCC 4.6 port has fast fma
+ builtins, define the macros in the C99 standard.
+ (FP_FAST_FMAF): Likewise.
+ (FP_FAST_FMAL): Likewise.
+ * sysdeps/powerpc/bits/mathdef.h (FP_FAST_FMA): Define, ppc as
+ multiply/add.
+ (FP_FAST_FMAF): Likewise.
+
2010-10-15 Jakub Jelinek <jakub@redhat.com>
[BZ #3268]
diff --git a/bits/mathdef.h b/bits/mathdef.h
index 00c67241a0..973438097e 100644
--- a/bits/mathdef.h
+++ b/bits/mathdef.h
@@ -34,6 +34,20 @@ typedef double double_t; /* `double' expressions are evaluated as
# define FP_ILOGB0 (-2147483647)
# define FP_ILOGBNAN 2147483647
+/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
+ builtins are supported. */
+#if __FP_FAST_FMA
+# define FP_FAST_FMA 1
+#endif
+
+#if __FP_FAST_FMAF
+# define FP_FAST_FMAF 1
+#endif
+
+#if __FP_FAST_FMAL
+# define FP_FAST_FMAL 1
+#endif
+
#endif /* ISO C99 */
#ifndef __NO_LONG_DOUBLE_MATH
diff --git a/sysdeps/powerpc/bits/mathdef.h b/sysdeps/powerpc/bits/mathdef.h
index b79cc6ff96..0c99248bed 100644
--- a/sysdeps/powerpc/bits/mathdef.h
+++ b/sysdeps/powerpc/bits/mathdef.h
@@ -61,4 +61,8 @@ typedef double double_t;
# define FP_ILOGB0 (-2147483647)
# define FP_ILOGBNAN (2147483647)
+/* The powerpc has a combined multiply/add instruction. */
+# define FP_FAST_FMA 1
+# define FP_FAST_FMAF 1
+
#endif /* ISO C99 */