diff options
-rw-r--r-- | ChangeLog | 22 | ||||
-rw-r--r-- | bits/fp-fast.h (renamed from sysdeps/arm/bits/mathdef.h) | 22 | ||||
-rw-r--r-- | bits/mathdef.h | 14 | ||||
-rw-r--r-- | math/Makefile | 2 | ||||
-rw-r--r-- | math/math.h | 15 | ||||
-rw-r--r-- | sysdeps/aarch64/bits/fp-fast.h | 34 | ||||
-rw-r--r-- | sysdeps/aarch64/bits/mathdef.h | 3 | ||||
-rw-r--r-- | sysdeps/hppa/fpu/bits/mathdef.h | 37 | ||||
-rw-r--r-- | sysdeps/powerpc/bits/fp-fast.h (renamed from sysdeps/tile/bits/mathdef.h) | 27 | ||||
-rw-r--r-- | sysdeps/powerpc/bits/mathdef.h | 6 | ||||
-rw-r--r-- | sysdeps/sh/sh4/bits/mathdef.h | 42 | ||||
-rw-r--r-- | sysdeps/x86/bits/mathdef.h | 14 |
12 files changed, 81 insertions, 157 deletions
@@ -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 */ |