about summary refs log tree commit diff
diff options
context:
space:
mode:
-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 */