summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-06-03 13:57:20 -0500
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-06-05 15:29:44 -0500
commit6ef422750985f7e60a8d480f07ecda59e0311fdf (patch)
tree92ba3cc4db0728914cb322df7520e43c20286637
parente52434a2e4d1105272daaef87678da950fbec73f (diff)
downloadglibc-6ef422750985f7e60a8d480f07ecda59e0311fdf.tar.gz
powerpc64le: use common fmaf128 implementation
This defines the macro such that it should behave best on all supported powerpc targets. Likewise, this allows us to remove the ppc64le specific s_fmaf128.c. I have verified powerpc64le multiarch and powerpc64le power9 no-multiarch builds continue to generate optimize fmaf128.
-rw-r--r--sysdeps/powerpc/fpu/math-use-builtins.h8
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/s_fmaf128-power9.c4
-rw-r--r--sysdeps/powerpc/powerpc64/le/power9/fpu/s_fmaf128.c36
3 files changed, 10 insertions, 38 deletions
diff --git a/sysdeps/powerpc/fpu/math-use-builtins.h b/sysdeps/powerpc/fpu/math-use-builtins.h
index 957216a191..72e28ec9cc 100644
--- a/sysdeps/powerpc/fpu/math-use-builtins.h
+++ b/sysdeps/powerpc/fpu/math-use-builtins.h
@@ -66,6 +66,12 @@
#define USE_FMA_BUILTIN 1
#define USE_FMAF_BUILTIN 1
#define USE_FMAL_BUILTIN 0
-#define USE_FMAF128_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/powerpc/powerpc64/le/fpu/multiarch/s_fmaf128-power9.c b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/s_fmaf128-power9.c
index 8df77ceade..49aeb3a8f4 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/s_fmaf128-power9.c
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/s_fmaf128-power9.c
@@ -20,7 +20,9 @@
#undef libm_alias_float128
#define libm_alias_float128(a, b)
+#undef strong_alias
+#define strong_alias(a, b)
#define __fmaf128 __fmaf128_power9
-#include <sysdeps/powerpc/powerpc64/le/power9/fpu/s_fmaf128.c>
+#include <sysdeps/ieee754/float128/s_fmaf128.c>
diff --git a/sysdeps/powerpc/powerpc64/le/power9/fpu/s_fmaf128.c b/sysdeps/powerpc/powerpc64/le/power9/fpu/s_fmaf128.c
deleted file mode 100644
index f02e810fb9..0000000000
--- a/sysdeps/powerpc/powerpc64/le/power9/fpu/s_fmaf128.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Compute x * y + z as a ternary operation for _Float128. POWER9 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- 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/>. */
-
-#include <libm-alias-float128.h>
-
-__float128
-__fmaf128 (__float128 x, __float128 y, __float128 z)
-{
- return x * y + z;
-}
-
-libm_alias_float128 (__fma, fma)