math: Decompose math-use-builtins.h

Each symbol definitions are moved on a separated file and it
cover all symbol type definitions (float, double, long double,
and float128).

It allows to set support for architectures without the boiler
place of copying default values.

Checked with a build on the affected ABIs.
This commit is contained in:
Adhemerval Zanella 2020-06-04 14:32:17 +00:00
parent c013d5d3aa
commit e80501a5c9
28 changed files with 180 additions and 311 deletions

View File

@ -0,0 +1,4 @@
#define USE_CEIL_BUILTIN 1
#define USE_CEILF_BUILTIN 1
#define USE_CEILL_BUILTIN 0
#define USE_CEILF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_FLOOR_BUILTIN 1
#define USE_FLOORF_BUILTIN 1
#define USE_FLOORL_BUILTIN 0
#define USE_FLOORF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_FMA_BUILTIN 1
#define USE_FMAF_BUILTIN 1
#define USE_FMAL_BUILTIN 0
#define USE_FMAF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_NEARBYINT_BUILTIN 1
#define USE_NEARBYINTF_BUILTIN 1
#define USE_NEARBYINTL_BUILTIN 0
#define USE_NEARBYINTF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_RINT_BUILTIN 1
#define USE_RINTF_BUILTIN 1
#define USE_RINTL_BUILTIN 0
#define USE_RINTF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_ROUND_BUILTIN 1
#define USE_ROUNDF_BUILTIN 1
#define USE_ROUNDL_BUILTIN 0
#define USE_ROUNDF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_SQRT_BUILTIN 1
#define USE_SQRTF_BUILTIN 1
#define USE_SQRTL_BUILTIN 0
#define USE_SQRTF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_TRUNC_BUILTIN 1
#define USE_TRUNCF_BUILTIN 1
#define USE_TRUNCL_BUILTIN 0
#define USE_TRUNCF128_BUILTIN 0

View File

@ -1,71 +0,0 @@
/* Using math gcc builtins instead of generic implementation. aarch64 version.
Copyright (C) 2020 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
<https://www.gnu.org/licenses/>. */
#ifndef MATH_USE_BUILTINS_H
#define MATH_USE_BUILTINS_H 1
#include <features.h> /* For __GNUC_PREREQ. */
/* Define these macros to 1 to use __builtin_xyz instead of the
generic implementation. */
#define USE_NEARBYINT_BUILTIN 1
#define USE_NEARBYINTF_BUILTIN 1
#define USE_NEARBYINTL_BUILTIN 0
#define USE_NEARBYINTF128_BUILTIN 0
#define USE_RINT_BUILTIN 1
#define USE_RINTF_BUILTIN 1
#define USE_RINTL_BUILTIN 0
#define USE_RINTF128_BUILTIN 0
#define USE_FLOOR_BUILTIN 1
#define USE_FLOORF_BUILTIN 1
#define USE_FLOORL_BUILTIN 0
#define USE_FLOORF128_BUILTIN 0
#define USE_CEIL_BUILTIN 1
#define USE_CEILF_BUILTIN 1
#define USE_CEILL_BUILTIN 0
#define USE_CEILF128_BUILTIN 0
#define USE_TRUNC_BUILTIN 1
#define USE_TRUNCF_BUILTIN 1
#define USE_TRUNCL_BUILTIN 0
#define USE_TRUNCF128_BUILTIN 0
#define USE_ROUND_BUILTIN 1
#define USE_ROUNDF_BUILTIN 1
#define USE_ROUNDL_BUILTIN 0
#define USE_ROUNDF128_BUILTIN 0
#define USE_COPYSIGNL_BUILTIN 1
#if __GNUC_PREREQ (7, 0)
# define USE_COPYSIGNF128_BUILTIN 1
#else
# define USE_COPYSIGNF128_BUILTIN 0
#endif
#define USE_SQRT_BUILTIN 1
#define USE_SQRTF_BUILTIN 1
#define USE_FMA_BUILTIN 1
#define USE_FMAF_BUILTIN 1
#define USE_FMAL_BUILTIN 0
#define USE_FMAF128_BUILTIN 0
#endif

View File

@ -0,0 +1,4 @@
#define USE_CEIL_BUILTIN 0
#define USE_CEILF_BUILTIN 0
#define USE_CEILL_BUILTIN 0
#define USE_CEILF128_BUILTIN 0

View File

@ -0,0 +1,7 @@
/* Generic implementations for float and double always use the builtin. */
#define USE_COPYSIGNL_BUILTIN 1
#if __GNUC_PREREQ (7, 0)
# define USE_COPYSIGNF128_BUILTIN 1
#else
# define USE_COPYSIGNF128_BUILTIN 0
#endif

View File

@ -0,0 +1,4 @@
#define USE_FLOOR_BUILTIN 0
#define USE_FLOORF_BUILTIN 0
#define USE_FLOORL_BUILTIN 0
#define USE_FLOORF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_FMA_BUILTIN 0
#define USE_FMAF_BUILTIN 0
#define USE_FMAL_BUILTIN 0
#define USE_FMAF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_NEARBYINT_BUILTIN 0
#define USE_NEARBYINTF_BUILTIN 0
#define USE_NEARBYINTL_BUILTIN 0
#define USE_NEARBYINTF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_RINT_BUILTIN 0
#define USE_RINTF_BUILTIN 0
#define USE_RINTL_BUILTIN 0
#define USE_RINTF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_ROUND_BUILTIN 0
#define USE_ROUNDF_BUILTIN 0
#define USE_ROUNDL_BUILTIN 0
#define USE_ROUNDF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_SQRT_BUILTIN 0
#define USE_SQRTF_BUILTIN 0
#define USE_SQRTL_BUILTIN 0
#define USE_SQRTF128_BUILTIN 0

View File

@ -0,0 +1,4 @@
#define USE_TRUNC_BUILTIN 0
#define USE_TRUNCF_BUILTIN 0
#define USE_TRUNCL_BUILTIN 0
#define USE_TRUNCF128_BUILTIN 0

View File

@ -23,49 +23,15 @@
/* Define these macros to 1 to use __builtin_xyz instead of the
generic implementation. */
#define USE_NEARBYINT_BUILTIN 0
#define USE_NEARBYINTF_BUILTIN 0
#define USE_NEARBYINTL_BUILTIN 0
#define USE_NEARBYINTF128_BUILTIN 0
#define USE_RINT_BUILTIN 0
#define USE_RINTF_BUILTIN 0
#define USE_RINTL_BUILTIN 0
#define USE_RINTF128_BUILTIN 0
#include <math-use-builtins-nearbyint.h>
#include <math-use-builtins-rint.h>
#include <math-use-builtins-floor.h>
#include <math-use-builtins-ceil.h>
#include <math-use-builtins-trunc.h>
#include <math-use-builtins-round.h>
#include <math-use-builtins-copysign.h>
#include <math-use-builtins-sqrt.h>
#include <math-use-builtins-fma.h>
#define USE_FLOOR_BUILTIN 0
#define USE_FLOORF_BUILTIN 0
#define USE_FLOORL_BUILTIN 0
#define USE_FLOORF128_BUILTIN 0
#define USE_CEIL_BUILTIN 0
#define USE_CEILF_BUILTIN 0
#define USE_CEILL_BUILTIN 0
#define USE_CEILF128_BUILTIN 0
#define USE_TRUNC_BUILTIN 0
#define USE_TRUNCF_BUILTIN 0
#define USE_TRUNCL_BUILTIN 0
#define USE_TRUNCF128_BUILTIN 0
#define USE_ROUND_BUILTIN 0
#define USE_ROUNDF_BUILTIN 0
#define USE_ROUNDL_BUILTIN 0
#define USE_ROUNDF128_BUILTIN 0
#define USE_COPYSIGNL_BUILTIN 1
#if __GNUC_PREREQ (7, 0)
# define USE_COPYSIGNF128_BUILTIN 1
#else
# define USE_COPYSIGNF128_BUILTIN 0
#endif
#define USE_SQRT_BUILTIN 0
#define USE_SQRTF_BUILTIN 0
#define USE_FMA_BUILTIN 0
#define USE_FMAF_BUILTIN 0
#define USE_FMAL_BUILTIN 0
#define USE_FMAF128_BUILTIN 0
#endif /* math-use-builtins.h */
#endif /* MATH_USE_BUILTINS_H */

View File

@ -0,0 +1,9 @@
#define USE_FMA_BUILTIN 1
#define USE_FMAF_BUILTIN 1
#define USE_FMAL_BUILTIN 0
/* This is not available for P8 or BE targets. */
#ifdef __FP_FAST_FMAF128
# define USE_FMAF128_BUILTIN 1
#else
# define USE_FMAF128_BUILTIN 0
#endif

View File

@ -1,77 +0,0 @@
/* Using math gcc builtins instead of generic implementation. PowerPC version.
Copyright (C) 2019-2020 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
<https://www.gnu.org/licenses/>. */
#ifndef MATH_USE_BUILTINS_H
#define MATH_USE_BUILTINS_H 1
#include <features.h> /* For __GNUC_PREREQ. */
/* Define these macros to 1 to use __builtin_xyz instead of the
generic implementation. */
#define USE_NEARBYINT_BUILTIN 0
#define USE_NEARBYINTF_BUILTIN 0
#define USE_NEARBYINTL_BUILTIN 0
#define USE_NEARBYINTF128_BUILTIN 0
#define USE_RINT_BUILTIN 0
#define USE_RINTF_BUILTIN 0
#define USE_RINTL_BUILTIN 0
#define USE_RINTF128_BUILTIN 0
#define USE_FLOOR_BUILTIN 0
#define USE_FLOORF_BUILTIN 0
#define USE_FLOORL_BUILTIN 0
#define USE_FLOORF128_BUILTIN 0
#define USE_CEIL_BUILTIN 0
#define USE_CEILF_BUILTIN 0
#define USE_CEILL_BUILTIN 0
#define USE_CEILF128_BUILTIN 0
#define USE_TRUNC_BUILTIN 0
#define USE_TRUNCF_BUILTIN 0
#define USE_TRUNCL_BUILTIN 0
#define USE_TRUNCF128_BUILTIN 0
#define USE_ROUND_BUILTIN 0
#define USE_ROUNDF_BUILTIN 0
#define USE_ROUNDL_BUILTIN 0
#define USE_ROUNDF128_BUILTIN 0
#define USE_COPYSIGNL_BUILTIN 1
#if __GNUC_PREREQ (7, 0)
# define USE_COPYSIGNF128_BUILTIN 1
#else
# define USE_COPYSIGNF128_BUILTIN 0
#endif
#define USE_SQRT_BUILTIN 0
#define USE_SQRTF_BUILTIN 0
#define USE_FMA_BUILTIN 1
#define USE_FMAF_BUILTIN 1
#define USE_FMAL_BUILTIN 0
/* This is not available for P8 or BE targets. */
#ifdef __FP_FAST_FMAF128
# define USE_FMAF128_BUILTIN 1
#else
# define USE_FMAF128_BUILTIN 0
#endif
#endif

View File

@ -0,0 +1,15 @@
#ifdef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT
# define USE_CEIL_BUILTIN 1
# define USE_CEILF_BUILTIN 1
# define USE_CEILL_BUILTIN 1
# if __GNUC_PREREQ (8, 0)
# define USE_CEILF128_BUILTIN 1
# else
# define USE_CEILF128_BUILTIN 0
# endif
#else
# define USE_CEIL_BUILTIN 0
# define USE_CEILF_BUILTIN 0
# define USE_CEILL_BUILTIN 0
# define USE_CEILF128_BUILTIN 0
#endif

View File

@ -0,0 +1,15 @@
#ifdef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT
# define USE_FLOOR_BUILTIN 1
# define USE_FLOORF_BUILTIN 1
# define USE_FLOORL_BUILTIN 1
# if __GNUC_PREREQ (8, 0)
# define USE_FLOORF128_BUILTIN 1
# else
# define USE_FLOORF128_BUILTIN 0
# endif
#else
# define USE_FLOOR_BUILTIN 0
# define USE_FLOORF_BUILTIN 0
# define USE_FLOORL_BUILTIN 0
# define USE_FLOORF128_BUILTIN 0
#endif

View File

@ -0,0 +1,15 @@
#ifdef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT
# define USE_NEARBYINT_BUILTIN 1
# define USE_NEARBYINTF_BUILTIN 1
# define USE_NEARBYINTL_BUILTIN 1
# if __GNUC_PREREQ (8, 0)
# define USE_NEARBYINTF128_BUILTIN 1
# else
# define USE_NEARBYINTF128_BUILTIN 0
# endif
#else
# define USE_NEARBYINT_BUILTIN 0
# define USE_NEARBYINTF_BUILTIN 0
# define USE_NEARBYINTL_BUILTIN 0
# define USE_NEARBYINTF128_BUILTIN 0
#endif

View File

@ -0,0 +1,15 @@
#ifdef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT
# define USE_RINT_BUILTIN 1
# define USE_RINTF_BUILTIN 1
# define USE_RINTL_BUILTIN 1
# if __GNUC_PREREQ (8, 0)
# define USE_RINTF128_BUILTIN 1
# else
# define USE_RINTF128_BUILTIN 0
# endif
#else
# define USE_RINT_BUILTIN 0
# define USE_RINTF_BUILTIN 0
# define USE_RINTL_BUILTIN 0
# define USE_RINTF128_BUILTIN 0
#endif

View File

@ -0,0 +1,15 @@
#ifdef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT
# define USE_ROUND_BUILTIN 1
# define USE_ROUNDF_BUILTIN 1
# define USE_ROUNDL_BUILTIN 1
# if __GNUC_PREREQ (8, 0)
# define USE_ROUNDF128_BUILTIN 1
# else
# define USE_ROUNDF128_BUILTIN 0
# endif
#else
# define USE_ROUND_BUILTIN 0
# define USE_ROUNDF_BUILTIN 0
# define USE_ROUNDL_BUILTIN 0
# define USE_ROUNDF128_BUILTIN 0
#endif

View File

@ -0,0 +1,15 @@
#ifdef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT
# define USE_TRUNC_BUILTIN 1
# define USE_TRUNCF_BUILTIN 1
# define USE_TRUNCL_BUILTIN 1
# if __GNUC_PREREQ (8, 0)
# define USE_TRUNCF128_BUILTIN 1
# else
# define USE_TRUNCF128_BUILTIN 0
# endif
#else
# define USE_TRUNC_BUILTIN 0
# define USE_TRUNCF_BUILTIN 0
# define USE_TRUNCL_BUILTIN 0
# define USE_TRUNCF128_BUILTIN 0
#endif

View File

@ -1,119 +0,0 @@
/* Using math gcc builtins instead of generic implementation. s390/s390x version.
Copyright (C) 2019-2020 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
<https://www.gnu.org/licenses/>. */
#ifndef MATH_USE_BUILTINS_S390_H
#define MATH_USE_BUILTINS_S390_H 1
#ifdef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT
# include <features.h> /* For __GNUC_PREREQ. */
/* GCC emits the z196 zarch "load fp integer" instructions for these
builtins if build with at least --march=z196 -mzarch. Otherwise a
function call to libc is emitted. */
# define USE_NEARBYINT_BUILTIN 1
# define USE_NEARBYINTF_BUILTIN 1
# define USE_NEARBYINTL_BUILTIN 1
# define USE_RINT_BUILTIN 1
# define USE_RINTF_BUILTIN 1
# define USE_RINTL_BUILTIN 1
# define USE_FLOOR_BUILTIN 1
# define USE_FLOORF_BUILTIN 1
# define USE_FLOORL_BUILTIN 1
# define USE_CEIL_BUILTIN 1
# define USE_CEILF_BUILTIN 1
# define USE_CEILL_BUILTIN 1
# define USE_TRUNC_BUILTIN 1
# define USE_TRUNCF_BUILTIN 1
# define USE_TRUNCL_BUILTIN 1
# define USE_ROUND_BUILTIN 1
# define USE_ROUNDF_BUILTIN 1
# define USE_ROUNDL_BUILTIN 1
# if __GNUC_PREREQ (8, 0)
# define USE_NEARBYINTF128_BUILTIN 1
# define USE_RINTF128_BUILTIN 1
# define USE_FLOORF128_BUILTIN 1
# define USE_CEILF128_BUILTIN 1
# define USE_TRUNCF128_BUILTIN 1
# define USE_ROUNDF128_BUILTIN 1
# else
# define USE_NEARBYINTF128_BUILTIN 0
# define USE_RINTF128_BUILTIN 0
# define USE_FLOORF128_BUILTIN 0
# define USE_CEILF128_BUILTIN 0
# define USE_TRUNCF128_BUILTIN 0
# define USE_ROUNDF128_BUILTIN 0
# endif
#else
/* Disable the builtins if we do not have the z196 zarch instructions. */
# define USE_NEARBYINT_BUILTIN 0
# define USE_NEARBYINTF_BUILTIN 0
# define USE_NEARBYINTL_BUILTIN 0
# define USE_NEARBYINTF128_BUILTIN 0
# define USE_RINT_BUILTIN 0
# define USE_RINTF_BUILTIN 0
# define USE_RINTL_BUILTIN 0
# define USE_RINTF128_BUILTIN 0
# define USE_FLOOR_BUILTIN 0
# define USE_FLOORF_BUILTIN 0
# define USE_FLOORL_BUILTIN 0
# define USE_FLOORF128_BUILTIN 0
# define USE_CEIL_BUILTIN 0
# define USE_CEILF_BUILTIN 0
# define USE_CEILL_BUILTIN 0
# define USE_CEILF128_BUILTIN 0
# define USE_TRUNC_BUILTIN 0
# define USE_TRUNCF_BUILTIN 0
# define USE_TRUNCL_BUILTIN 0
# define USE_TRUNCF128_BUILTIN 0
# define USE_ROUND_BUILTIN 0
# define USE_ROUNDF_BUILTIN 0
# define USE_ROUNDL_BUILTIN 0
# define USE_ROUNDF128_BUILTIN 0
#endif /* ! HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT */
#define USE_COPYSIGNL_BUILTIN 1
#if __GNUC_PREREQ (7, 0)
# define USE_COPYSIGNF128_BUILTIN 1
#else
# define USE_COPYSIGNF128_BUILTIN 0
#endif
#define USE_SQRT_BUILTIN 0
#define USE_SQRTF_BUILTIN 0
#define USE_FMA_BUILTIN 0
#define USE_FMAF_BUILTIN 0
#define USE_FMAL_BUILTIN 0
#define USE_FMAF128_BUILTIN 0
#endif /* math-use-builtins.h */