[01/13] math: Decompose math-use-builtins.h

Message ID 20200609213301.3591135-1-adhemerval.zanella@linaro.org
State New
Headers show
Series
  • [01/13] math: Decompose math-use-builtins.h
Related show

Commit Message

Adhemerval Zanella via Libc-alpha June 9, 2020, 9:32 p.m.
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.
---
 sysdeps/aarch64/fpu/math-use-builtins-ceil.h  |   4 +
 sysdeps/aarch64/fpu/math-use-builtins-floor.h |   4 +
 sysdeps/aarch64/fpu/math-use-builtins-fma.h   |   4 +
 .../aarch64/fpu/math-use-builtins-nearbyint.h |   4 +
 sysdeps/aarch64/fpu/math-use-builtins-rint.h  |   4 +
 sysdeps/aarch64/fpu/math-use-builtins-round.h |   4 +
 sysdeps/aarch64/fpu/math-use-builtins-sqrt.h  |   4 +
 sysdeps/aarch64/fpu/math-use-builtins-trunc.h |   4 +
 sysdeps/aarch64/fpu/math-use-builtins.h       |  71 -----------
 sysdeps/generic/math-use-builtins-ceil.h      |   4 +
 sysdeps/generic/math-use-builtins-copysign.h  |   7 ++
 sysdeps/generic/math-use-builtins-floor.h     |   4 +
 sysdeps/generic/math-use-builtins-fma.h       |   4 +
 sysdeps/generic/math-use-builtins-nearbyint.h |   4 +
 sysdeps/generic/math-use-builtins-rint.h      |   4 +
 sysdeps/generic/math-use-builtins-round.h     |   4 +
 sysdeps/generic/math-use-builtins-sqrt.h      |   4 +
 sysdeps/generic/math-use-builtins-trunc.h     |   4 +
 sysdeps/generic/math-use-builtins.h           |  56 ++-------
 sysdeps/powerpc/fpu/math-use-builtins-fma.h   |   9 ++
 sysdeps/powerpc/fpu/math-use-builtins.h       |  77 ------------
 sysdeps/s390/fpu/math-use-builtins-ceil.h     |  15 +++
 sysdeps/s390/fpu/math-use-builtins-floor.h    |  15 +++
 .../s390/fpu/math-use-builtins-nearbyint.h    |  15 +++
 sysdeps/s390/fpu/math-use-builtins-rint.h     |  15 +++
 sysdeps/s390/fpu/math-use-builtins-round.h    |  15 +++
 sysdeps/s390/fpu/math-use-builtins-trunc.h    |  15 +++
 sysdeps/s390/fpu/math-use-builtins.h          | 119 ------------------
 28 files changed, 181 insertions(+), 312 deletions(-)
 create mode 100644 sysdeps/aarch64/fpu/math-use-builtins-ceil.h
 create mode 100644 sysdeps/aarch64/fpu/math-use-builtins-floor.h
 create mode 100644 sysdeps/aarch64/fpu/math-use-builtins-fma.h
 create mode 100644 sysdeps/aarch64/fpu/math-use-builtins-nearbyint.h
 create mode 100644 sysdeps/aarch64/fpu/math-use-builtins-rint.h
 create mode 100644 sysdeps/aarch64/fpu/math-use-builtins-round.h
 create mode 100644 sysdeps/aarch64/fpu/math-use-builtins-sqrt.h
 create mode 100644 sysdeps/aarch64/fpu/math-use-builtins-trunc.h
 delete mode 100644 sysdeps/aarch64/fpu/math-use-builtins.h
 create mode 100644 sysdeps/generic/math-use-builtins-ceil.h
 create mode 100644 sysdeps/generic/math-use-builtins-copysign.h
 create mode 100644 sysdeps/generic/math-use-builtins-floor.h
 create mode 100644 sysdeps/generic/math-use-builtins-fma.h
 create mode 100644 sysdeps/generic/math-use-builtins-nearbyint.h
 create mode 100644 sysdeps/generic/math-use-builtins-rint.h
 create mode 100644 sysdeps/generic/math-use-builtins-round.h
 create mode 100644 sysdeps/generic/math-use-builtins-sqrt.h
 create mode 100644 sysdeps/generic/math-use-builtins-trunc.h
 create mode 100644 sysdeps/powerpc/fpu/math-use-builtins-fma.h
 delete mode 100644 sysdeps/powerpc/fpu/math-use-builtins.h
 create mode 100644 sysdeps/s390/fpu/math-use-builtins-ceil.h
 create mode 100644 sysdeps/s390/fpu/math-use-builtins-floor.h
 create mode 100644 sysdeps/s390/fpu/math-use-builtins-nearbyint.h
 create mode 100644 sysdeps/s390/fpu/math-use-builtins-rint.h
 create mode 100644 sysdeps/s390/fpu/math-use-builtins-round.h
 create mode 100644 sysdeps/s390/fpu/math-use-builtins-trunc.h
 delete mode 100644 sysdeps/s390/fpu/math-use-builtins.h

-- 
2.25.1

Comments

Adhemerval Zanella via Libc-alpha June 16, 2020, 10:13 a.m. | #1
On 6/9/20 11:32 PM, Adhemerval Zanella via Libc-alpha wrote:
> 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.

> ---

>  sysdeps/aarch64/fpu/math-use-builtins-ceil.h  |   4 +

>  sysdeps/aarch64/fpu/math-use-builtins-floor.h |   4 +

>  sysdeps/aarch64/fpu/math-use-builtins-fma.h   |   4 +

>  .../aarch64/fpu/math-use-builtins-nearbyint.h |   4 +

>  sysdeps/aarch64/fpu/math-use-builtins-rint.h  |   4 +

>  sysdeps/aarch64/fpu/math-use-builtins-round.h |   4 +

>  sysdeps/aarch64/fpu/math-use-builtins-sqrt.h  |   4 +

>  sysdeps/aarch64/fpu/math-use-builtins-trunc.h |   4 +

>  sysdeps/aarch64/fpu/math-use-builtins.h       |  71 -----------

>  sysdeps/generic/math-use-builtins-ceil.h      |   4 +

>  sysdeps/generic/math-use-builtins-copysign.h  |   7 ++

>  sysdeps/generic/math-use-builtins-floor.h     |   4 +

>  sysdeps/generic/math-use-builtins-fma.h       |   4 +

>  sysdeps/generic/math-use-builtins-nearbyint.h |   4 +

>  sysdeps/generic/math-use-builtins-rint.h      |   4 +

>  sysdeps/generic/math-use-builtins-round.h     |   4 +

>  sysdeps/generic/math-use-builtins-sqrt.h      |   4 +

>  sysdeps/generic/math-use-builtins-trunc.h     |   4 +

>  sysdeps/generic/math-use-builtins.h           |  56 ++-------

>  sysdeps/powerpc/fpu/math-use-builtins-fma.h   |   9 ++

>  sysdeps/powerpc/fpu/math-use-builtins.h       |  77 ------------

>  sysdeps/s390/fpu/math-use-builtins-ceil.h     |  15 +++

>  sysdeps/s390/fpu/math-use-builtins-floor.h    |  15 +++

>  .../s390/fpu/math-use-builtins-nearbyint.h    |  15 +++

>  sysdeps/s390/fpu/math-use-builtins-rint.h     |  15 +++

>  sysdeps/s390/fpu/math-use-builtins-round.h    |  15 +++

>  sysdeps/s390/fpu/math-use-builtins-trunc.h    |  15 +++

>  sysdeps/s390/fpu/math-use-builtins.h          | 119 ------------------


Hi Adhemerval,

I've applied your patches and successfully run some test builds on
s390x/s390. This patch is okay on s390-perspective.

I assume that it is intended, that there are the defines for
USE_SQRTL_BUILTIN and USE_SQRTF128_BUILTIN although those are currently
not used.

Thanks,
Stefan

Patch

diff --git a/sysdeps/aarch64/fpu/math-use-builtins-ceil.h b/sysdeps/aarch64/fpu/math-use-builtins-ceil.h
new file mode 100644
index 0000000000..17d6452e51
--- /dev/null
+++ b/sysdeps/aarch64/fpu/math-use-builtins-ceil.h
@@ -0,0 +1,4 @@ 
+#define USE_CEIL_BUILTIN 1
+#define USE_CEILF_BUILTIN 1
+#define USE_CEILL_BUILTIN 0
+#define USE_CEILF128_BUILTIN 0
diff --git a/sysdeps/aarch64/fpu/math-use-builtins-floor.h b/sysdeps/aarch64/fpu/math-use-builtins-floor.h
new file mode 100644
index 0000000000..553c0674af
--- /dev/null
+++ b/sysdeps/aarch64/fpu/math-use-builtins-floor.h
@@ -0,0 +1,4 @@ 
+#define USE_FLOOR_BUILTIN 1
+#define USE_FLOORF_BUILTIN 1
+#define USE_FLOORL_BUILTIN 0
+#define USE_FLOORF128_BUILTIN 0
diff --git a/sysdeps/aarch64/fpu/math-use-builtins-fma.h b/sysdeps/aarch64/fpu/math-use-builtins-fma.h
new file mode 100644
index 0000000000..eede75aa41
--- /dev/null
+++ b/sysdeps/aarch64/fpu/math-use-builtins-fma.h
@@ -0,0 +1,4 @@ 
+#define USE_FMA_BUILTIN 1
+#define USE_FMAF_BUILTIN 1
+#define USE_FMAL_BUILTIN 0
+#define USE_FMAF128_BUILTIN 0
diff --git a/sysdeps/aarch64/fpu/math-use-builtins-nearbyint.h b/sysdeps/aarch64/fpu/math-use-builtins-nearbyint.h
new file mode 100644
index 0000000000..a2590c920f
--- /dev/null
+++ b/sysdeps/aarch64/fpu/math-use-builtins-nearbyint.h
@@ -0,0 +1,4 @@ 
+#define USE_NEARBYINT_BUILTIN 1
+#define USE_NEARBYINTF_BUILTIN 1
+#define USE_NEARBYINTL_BUILTIN 0
+#define USE_NEARBYINTF128_BUILTIN 0
diff --git a/sysdeps/aarch64/fpu/math-use-builtins-rint.h b/sysdeps/aarch64/fpu/math-use-builtins-rint.h
new file mode 100644
index 0000000000..45c3307692
--- /dev/null
+++ b/sysdeps/aarch64/fpu/math-use-builtins-rint.h
@@ -0,0 +1,4 @@ 
+#define USE_RINT_BUILTIN 1
+#define USE_RINTF_BUILTIN 1
+#define USE_RINTL_BUILTIN 0
+#define USE_RINTF128_BUILTIN 0
diff --git a/sysdeps/aarch64/fpu/math-use-builtins-round.h b/sysdeps/aarch64/fpu/math-use-builtins-round.h
new file mode 100644
index 0000000000..f6083d7d0a
--- /dev/null
+++ b/sysdeps/aarch64/fpu/math-use-builtins-round.h
@@ -0,0 +1,4 @@ 
+#define USE_ROUND_BUILTIN 1
+#define USE_ROUNDF_BUILTIN 1
+#define USE_ROUNDL_BUILTIN 0
+#define USE_ROUNDF128_BUILTIN 0
diff --git a/sysdeps/aarch64/fpu/math-use-builtins-sqrt.h b/sysdeps/aarch64/fpu/math-use-builtins-sqrt.h
new file mode 100644
index 0000000000..e94c915ba6
--- /dev/null
+++ b/sysdeps/aarch64/fpu/math-use-builtins-sqrt.h
@@ -0,0 +1,4 @@ 
+#define USE_SQRT_BUILTIN 1
+#define USE_SQRTF_BUILTIN 1
+#define USE_SQRTL_BUILTIN 0
+#define USE_SQRTF128_BUILTIN 0
diff --git a/sysdeps/aarch64/fpu/math-use-builtins-trunc.h b/sysdeps/aarch64/fpu/math-use-builtins-trunc.h
new file mode 100644
index 0000000000..4fc6da42b6
--- /dev/null
+++ b/sysdeps/aarch64/fpu/math-use-builtins-trunc.h
@@ -0,0 +1,4 @@ 
+#define USE_TRUNC_BUILTIN 1
+#define USE_TRUNCF_BUILTIN 1
+#define USE_TRUNCL_BUILTIN 0
+#define USE_TRUNCF128_BUILTIN 0
diff --git a/sysdeps/aarch64/fpu/math-use-builtins.h b/sysdeps/aarch64/fpu/math-use-builtins.h
deleted file mode 100644
index 50a1ba0db5..0000000000
--- a/sysdeps/aarch64/fpu/math-use-builtins.h
+++ /dev/null
@@ -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
diff --git a/sysdeps/generic/math-use-builtins-ceil.h b/sysdeps/generic/math-use-builtins-ceil.h
new file mode 100644
index 0000000000..0698033493
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-ceil.h
@@ -0,0 +1,4 @@ 
+#define USE_CEIL_BUILTIN 0
+#define USE_CEILF_BUILTIN 0
+#define USE_CEILL_BUILTIN 0
+#define USE_CEILF128_BUILTIN 0
diff --git a/sysdeps/generic/math-use-builtins-copysign.h b/sysdeps/generic/math-use-builtins-copysign.h
new file mode 100644
index 0000000000..3cf9bbe1fd
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-copysign.h
@@ -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
diff --git a/sysdeps/generic/math-use-builtins-floor.h b/sysdeps/generic/math-use-builtins-floor.h
new file mode 100644
index 0000000000..b0858d9eda
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-floor.h
@@ -0,0 +1,4 @@ 
+#define USE_FLOOR_BUILTIN 0
+#define USE_FLOORF_BUILTIN 0
+#define USE_FLOORL_BUILTIN 0
+#define USE_FLOORF128_BUILTIN 0
diff --git a/sysdeps/generic/math-use-builtins-fma.h b/sysdeps/generic/math-use-builtins-fma.h
new file mode 100644
index 0000000000..51dcb6a240
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-fma.h
@@ -0,0 +1,4 @@ 
+#define USE_FMA_BUILTIN 0
+#define USE_FMAF_BUILTIN 0
+#define USE_FMAL_BUILTIN 0
+#define USE_FMAF128_BUILTIN 0
diff --git a/sysdeps/generic/math-use-builtins-nearbyint.h b/sysdeps/generic/math-use-builtins-nearbyint.h
new file mode 100644
index 0000000000..ab453532b0
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-nearbyint.h
@@ -0,0 +1,4 @@ 
+#define USE_NEARBYINT_BUILTIN 0
+#define USE_NEARBYINTF_BUILTIN 0
+#define USE_NEARBYINTL_BUILTIN 0
+#define USE_NEARBYINTF128_BUILTIN 0
diff --git a/sysdeps/generic/math-use-builtins-rint.h b/sysdeps/generic/math-use-builtins-rint.h
new file mode 100644
index 0000000000..24793757f6
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-rint.h
@@ -0,0 +1,4 @@ 
+#define USE_RINT_BUILTIN 0
+#define USE_RINTF_BUILTIN 0
+#define USE_RINTL_BUILTIN 0
+#define USE_RINTF128_BUILTIN 0
diff --git a/sysdeps/generic/math-use-builtins-round.h b/sysdeps/generic/math-use-builtins-round.h
new file mode 100644
index 0000000000..de2dce1f5b
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-round.h
@@ -0,0 +1,4 @@ 
+#define USE_ROUND_BUILTIN 0
+#define USE_ROUNDF_BUILTIN 0
+#define USE_ROUNDL_BUILTIN 0
+#define USE_ROUNDF128_BUILTIN 0
diff --git a/sysdeps/generic/math-use-builtins-sqrt.h b/sysdeps/generic/math-use-builtins-sqrt.h
new file mode 100644
index 0000000000..7b4fed380f
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-sqrt.h
@@ -0,0 +1,4 @@ 
+#define USE_SQRT_BUILTIN 0
+#define USE_SQRTF_BUILTIN 0
+#define USE_SQRTL_BUILTIN 0
+#define USE_SQRTF128_BUILTIN 0
diff --git a/sysdeps/generic/math-use-builtins-trunc.h b/sysdeps/generic/math-use-builtins-trunc.h
new file mode 100644
index 0000000000..59e6d97d13
--- /dev/null
+++ b/sysdeps/generic/math-use-builtins-trunc.h
@@ -0,0 +1,4 @@ 
+#define USE_TRUNC_BUILTIN 0
+#define USE_TRUNCF_BUILTIN 0
+#define USE_TRUNCL_BUILTIN 0
+#define USE_TRUNCF128_BUILTIN 0
diff --git a/sysdeps/generic/math-use-builtins.h b/sysdeps/generic/math-use-builtins.h
index cf25ed8a21..78d6146762 100644
--- a/sysdeps/generic/math-use-builtins.h
+++ b/sysdeps/generic/math-use-builtins.h
@@ -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
-
-#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 */
+#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>
+
+#endif /* MATH_USE_BUILTINS_H  */
diff --git a/sysdeps/powerpc/fpu/math-use-builtins-fma.h b/sysdeps/powerpc/fpu/math-use-builtins-fma.h
new file mode 100644
index 0000000000..5652e55185
--- /dev/null
+++ b/sysdeps/powerpc/fpu/math-use-builtins-fma.h
@@ -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
diff --git a/sysdeps/powerpc/fpu/math-use-builtins.h b/sysdeps/powerpc/fpu/math-use-builtins.h
deleted file mode 100644
index 72e28ec9cc..0000000000
--- a/sysdeps/powerpc/fpu/math-use-builtins.h
+++ /dev/null
@@ -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
diff --git a/sysdeps/s390/fpu/math-use-builtins-ceil.h b/sysdeps/s390/fpu/math-use-builtins-ceil.h
new file mode 100644
index 0000000000..bec147a17f
--- /dev/null
+++ b/sysdeps/s390/fpu/math-use-builtins-ceil.h
@@ -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
diff --git a/sysdeps/s390/fpu/math-use-builtins-floor.h b/sysdeps/s390/fpu/math-use-builtins-floor.h
new file mode 100644
index 0000000000..6c034e03bb
--- /dev/null
+++ b/sysdeps/s390/fpu/math-use-builtins-floor.h
@@ -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
diff --git a/sysdeps/s390/fpu/math-use-builtins-nearbyint.h b/sysdeps/s390/fpu/math-use-builtins-nearbyint.h
new file mode 100644
index 0000000000..2f3936e362
--- /dev/null
+++ b/sysdeps/s390/fpu/math-use-builtins-nearbyint.h
@@ -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
diff --git a/sysdeps/s390/fpu/math-use-builtins-rint.h b/sysdeps/s390/fpu/math-use-builtins-rint.h
new file mode 100644
index 0000000000..2ba16eeaec
--- /dev/null
+++ b/sysdeps/s390/fpu/math-use-builtins-rint.h
@@ -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
diff --git a/sysdeps/s390/fpu/math-use-builtins-round.h b/sysdeps/s390/fpu/math-use-builtins-round.h
new file mode 100644
index 0000000000..d92daa9654
--- /dev/null
+++ b/sysdeps/s390/fpu/math-use-builtins-round.h
@@ -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
diff --git a/sysdeps/s390/fpu/math-use-builtins-trunc.h b/sysdeps/s390/fpu/math-use-builtins-trunc.h
new file mode 100644
index 0000000000..9b5b02de41
--- /dev/null
+++ b/sysdeps/s390/fpu/math-use-builtins-trunc.h
@@ -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
diff --git a/sysdeps/s390/fpu/math-use-builtins.h b/sysdeps/s390/fpu/math-use-builtins.h
deleted file mode 100644
index 3a80f86b2e..0000000000
--- a/sysdeps/s390/fpu/math-use-builtins.h
+++ /dev/null
@@ -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 */