about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog22
-rw-r--r--bits/fp-fast.h (renamed from sysdeps/arm/bits/mathdef.h)22
-rw-r--r--bits/mathdef.h14
-rw-r--r--math/Makefile2
-rw-r--r--math/math.h15
-rw-r--r--sysdeps/aarch64/bits/fp-fast.h34
-rw-r--r--sysdeps/aarch64/bits/mathdef.h3
-rw-r--r--sysdeps/hppa/fpu/bits/mathdef.h37
-rw-r--r--sysdeps/powerpc/bits/fp-fast.h (renamed from sysdeps/tile/bits/mathdef.h)27
-rw-r--r--sysdeps/powerpc/bits/mathdef.h6
-rw-r--r--sysdeps/sh/sh4/bits/mathdef.h42
-rw-r--r--sysdeps/x86/bits/mathdef.h14
12 files changed, 81 insertions, 157 deletions
diff --git a/ChangeLog b/ChangeLog
index 6b64145050..2d1964573f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2016-11-29  Joseph Myers  <joseph@codesourcery.com>
+
+	* bits/fp-fast.h: New file.
+	* sysdeps/aarch64/bits/fp-fast.h: Likewise.
+	* sysdeps/powerpc/bits/fp-fast.h: Likewise.
+	* math/Makefile (headers): Add bits/fp-fast.h.
+	* math/math.h: Include <bits/fp-fast.h>.
+	* bits/mathdef.h (FP_FAST_FMA): Remove.
+	(FP_FAST_FMAF): Likewise.
+	(FP_FAST_FMAL): Likewise.
+	* sysdeps/aarch64/bits/mathdef.h (FP_FAST_FMA): Likewise.
+	(FP_FAST_FMAF): Likewise.
+	* sysdeps/powerpc/bits/mathdef.h (FP_FAST_FMA): Likewise.
+	(FP_FAST_FMAF): Likewise.
+	* sysdeps/x86/bits/mathdef.h (FP_FAST_FMA): Likewise.
+	(FP_FAST_FMAF): Likewise.
+	(FP_FAST_FMAL): Likewise.
+	* sysdeps/arm/bits/mathdef.h: Remove file.
+	* sysdeps/hppa/fpu/bits/mathdef.h: Likewise.
+	* sysdeps/sh/sh4/bits/mathdef.h: Likewise.
+	* sysdeps/tile/bits/mathdef.h: Likewise.
+
 2016-11-28  Joseph Myers  <joseph@codesourcery.com>
 
 	* math/w_ilogb_template.c: New file.  Based on math/w_ilogb.c.
diff --git a/sysdeps/arm/bits/mathdef.h b/bits/fp-fast.h
index 68c96f0ce4..8598710c1a 100644
--- a/sysdeps/arm/bits/mathdef.h
+++ b/bits/fp-fast.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1999-2016 Free Software Foundation, Inc.
+/* Define FP_FAST_* macros.
+   Copyright (C) 2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -12,19 +13,14 @@
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
+   License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#if !defined _MATH_H && !defined _COMPLEX_H
-# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
+#ifndef _MATH_H
+# error "Never use <bits/fp-fast.h> directly; include <math.h> instead."
 #endif
 
-#if defined  __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF	1
-
-/* The values returned by `ilogb' for 0 and NaN respectively.  */
-# define FP_ILOGB0	(-2147483647)
-# define FP_ILOGBNAN	(2147483647)
+#ifdef __USE_ISOC99
 
 /* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
    builtins are supported.  */
@@ -40,10 +36,4 @@
 #  define FP_FAST_FMAL 1
 # endif
 
-#endif	/* ISO C99 */
-
-#ifndef __NO_LONG_DOUBLE_MATH
-/* Signal that we do not really have a `long double'.  This disables the
-   declaration of all the `long double' function variants.  */
-# define __NO_LONG_DOUBLE_MATH	1
 #endif
diff --git a/bits/mathdef.h b/bits/mathdef.h
index 6dedc51c83..050204ab66 100644
--- a/bits/mathdef.h
+++ b/bits/mathdef.h
@@ -26,20 +26,6 @@
 # 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.  */
-#ifdef __FP_FAST_FMA
-# define FP_FAST_FMA 1
-#endif
-
-#ifdef __FP_FAST_FMAF
-# define FP_FAST_FMAF 1
-#endif
-
-#ifdef __FP_FAST_FMAL
-# define FP_FAST_FMAL 1
-#endif
-
 #endif	/* ISO C99 */
 
 #ifndef __NO_LONG_DOUBLE_MATH
diff --git a/math/Makefile b/math/Makefile
index bcf627d173..a7c2b07fd8 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -28,7 +28,7 @@ headers		:= math.h bits/mathcalls.h bits/mathinline.h bits/huge_val.h \
 		   bits/fenv.h bits/fenvinline.h bits/mathdef.h tgmath.h \
 		   bits/math-finite.h bits/math-vector.h \
 		   bits/libm-simd-decl-stubs.h bits/iscanonical.h \
-		   bits/flt-eval-method.h
+		   bits/flt-eval-method.h bits/fp-fast.h
 
 # FPU support code.
 aux		:= setfpucw fpu_control
diff --git a/math/math.h b/math/math.h
index 70bf8e5ac0..95b39b3d92 100644
--- a/math/math.h
+++ b/math/math.h
@@ -97,6 +97,15 @@ typedef _Float128x double_t;
 # endif
 #endif
 
+/* Define macros for the return value of ilogb.
+
+    FP_ILOGB0	Expands to a value returned by `ilogb (0.0)'.
+    FP_ILOGBNAN	Expands to a value returned by `ilogb (NAN)'.
+
+*/
+
+#include <bits/mathdef.h>
+
 /* Get the architecture specific values describing the floating-point
    evaluation.  The following symbols will get defined:
 
@@ -107,13 +116,9 @@ typedef _Float128x double_t;
 		generally executes about as fast as a multiply and an add.
 		This macro is defined only iff the `fma' function is
 		implemented directly with a hardware multiply-add instructions.
-
-    FP_ILOGB0	Expands to a value returned by `ilogb (0.0)'.
-    FP_ILOGBNAN	Expands to a value returned by `ilogb (NAN)'.
-
 */
 
-#include <bits/mathdef.h>
+#include <bits/fp-fast.h>
 
 /* The file <bits/mathcalls.h> contains the prototypes for all the
    actual math functions.  These macros are used for those prototypes,
diff --git a/sysdeps/aarch64/bits/fp-fast.h b/sysdeps/aarch64/bits/fp-fast.h
new file mode 100644
index 0000000000..d84249d162
--- /dev/null
+++ b/sysdeps/aarch64/bits/fp-fast.h
@@ -0,0 +1,34 @@
+/* Define FP_FAST_* macros.  AArch64 version.
+   Copyright (C) 2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _MATH_H
+# error "Never use <bits/fp-fast.h> directly; include <math.h> instead."
+#endif
+
+#ifdef __USE_ISOC99
+
+/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
+   builtins are supported.  */
+# define FP_FAST_FMA 1
+# define FP_FAST_FMAF 1
+
+# ifdef __FP_FAST_FMAL
+#  define FP_FAST_FMAL 1
+# endif
+
+#endif
diff --git a/sysdeps/aarch64/bits/mathdef.h b/sysdeps/aarch64/bits/mathdef.h
index 2b55b59a5e..5418beacfb 100644
--- a/sysdeps/aarch64/bits/mathdef.h
+++ b/sysdeps/aarch64/bits/mathdef.h
@@ -27,7 +27,4 @@
 # define FP_ILOGB0	(-2147483647)
 # define FP_ILOGBNAN	(2147483647)
 
-# define FP_FAST_FMA 1
-# define FP_FAST_FMAF 1
-
 #endif	/* ISO C99 */
diff --git a/sysdeps/hppa/fpu/bits/mathdef.h b/sysdeps/hppa/fpu/bits/mathdef.h
deleted file mode 100644
index 24b67b2f62..0000000000
--- a/sysdeps/hppa/fpu/bits/mathdef.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2006-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _MATH_H && !defined _COMPLEX_H
-# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
-#endif
-
-#if defined  __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF	1
-
-/* The values returned by `ilogb' for 0 and NaN respectively.  */
-# define FP_ILOGB0	(-2147483647)
-# define FP_ILOGBNAN	(2147483647)
-
-#endif	/* ISO C99 */
-
-#ifndef __NO_LONG_DOUBLE_MATH
-/* On hppa `long double' and `double' are 64-bits.  So, libm is built
-   with NO_LONG_DOUBLE defined.  The following define ensures the library
-   and headers are consistent.  This disables the declaration of all the
-   `long double' function variants.  */
-# define __NO_LONG_DOUBLE_MATH	1
-#endif
diff --git a/sysdeps/tile/bits/mathdef.h b/sysdeps/powerpc/bits/fp-fast.h
index 8ed7ac4341..1b6c32c16b 100644
--- a/sysdeps/tile/bits/mathdef.h
+++ b/sysdeps/powerpc/bits/fp-fast.h
@@ -1,6 +1,6 @@
-/* Copyright (C) 2011-2016 Free Software Foundation, Inc.
+/* Define FP_FAST_* macros.  PowerPC version.
+   Copyright (C) 2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -13,27 +13,22 @@
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
+   License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#if !defined _MATH_H && !defined _COMPLEX_H
-# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
+#ifndef _MATH_H
+# error "Never use <bits/fp-fast.h> directly; include <math.h> instead."
 #endif
 
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF	1
-
-/* The values returned by `ilogb' for 0 and NaN respectively.  */
-# define FP_ILOGB0	(-2147483647)
-# define FP_ILOGBNAN	(2147483647)
+#ifdef __USE_ISOC99
 
 /* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
    builtins are supported.  */
-# ifdef __FP_FAST_FMA
+# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMA
 #  define FP_FAST_FMA 1
 # endif
 
-# ifdef __FP_FAST_FMAF
+# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMAF
 #  define FP_FAST_FMAF 1
 # endif
 
@@ -41,10 +36,4 @@
 #  define FP_FAST_FMAL 1
 # endif
 
-#endif /* ISO C99 */
-
-#ifndef __NO_LONG_DOUBLE_MATH
-/* Signal that we do not really have a `long double'.  This disables the
-   declaration of all the `long double' function variants.  */
-# define __NO_LONG_DOUBLE_MATH	1
 #endif
diff --git a/sysdeps/powerpc/bits/mathdef.h b/sysdeps/powerpc/bits/mathdef.h
index debb5a5d26..392e4e5ac6 100644
--- a/sysdeps/powerpc/bits/mathdef.h
+++ b/sysdeps/powerpc/bits/mathdef.h
@@ -33,10 +33,4 @@
 # define FP_ILOGB0	(-2147483647)
 # define FP_ILOGBNAN	(2147483647)
 
-# if !defined _SOFT_FLOAT && !defined __NO_FPRS__
-/* The powerpc has a combined multiply/add instruction.  */
-#  define FP_FAST_FMA 1
-#  define FP_FAST_FMAF 1
-# endif
-
 #endif	/* ISO C99 */
diff --git a/sysdeps/sh/sh4/bits/mathdef.h b/sysdeps/sh/sh4/bits/mathdef.h
deleted file mode 100644
index f3ee2879a7..0000000000
--- a/sysdeps/sh/sh4/bits/mathdef.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined _MATH_H && !defined _COMPLEX_H
-# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
-#endif
-
-
-/* FIXME! This file describes properties of the compiler, not the machine;
-   it should not be part of libc!
-
-   FIXME! This file does not deal with the -fshort-double option of
-   gcc! */
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF	1
-
-/* The values returned by `ilogb' for 0 and NaN respectively.  */
-# define FP_ILOGB0	(-0x7fffffff)
-# define FP_ILOGBNAN	0x7fffffff
-
-#endif	/* ISO C99 */
-
-#ifndef __NO_LONG_DOUBLE_MATH
-/* Signal that we do not really have a `long double'.  The disables the
-   declaration of all the `long double' function variants.  */
-# define __NO_LONG_DOUBLE_MATH	1
-#endif
diff --git a/sysdeps/x86/bits/mathdef.h b/sysdeps/x86/bits/mathdef.h
index 2f0025c38d..17ad1efa89 100644
--- a/sysdeps/x86/bits/mathdef.h
+++ b/sysdeps/x86/bits/mathdef.h
@@ -26,18 +26,4 @@
 # define FP_ILOGB0	(-2147483647 - 1)
 # define FP_ILOGBNAN	(-2147483647 - 1)
 
-/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
-   builtins are supported.  */
-# ifdef __FP_FAST_FMA
-#  define FP_FAST_FMA 1
-# endif
-
-# ifdef __FP_FAST_FMAF
-#  define FP_FAST_FMAF 1
-# endif
-
-# ifdef __FP_FAST_FMAL
-#  define FP_FAST_FMAL 1
-# endif
-
 #endif	/* ISO C99 */