about summary refs log tree commit diff
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
glibc-6ef422750985f7e60a8d480f07ecda59e0311fdf.tar.xz
glibc-6ef422750985f7e60a8d480f07ecda59e0311fdf.zip
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)