From d20501241ea423e477b357d93147530987e0d89e Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Tue, 19 Oct 2010 12:49:05 -0400 Subject: [PATCH] Add C99 FP_FAST_FMA{,F,L} macros to math.h --- ChangeLog | 10 ++++++++++ bits/mathdef.h | 14 ++++++++++++++ sysdeps/powerpc/bits/mathdef.h | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/ChangeLog b/ChangeLog index 613f8dfb3f..f90f303069 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2010-10-19 Michael Meissner + + * 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 [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 */