diff options
author | Paul E. Murphy <murphyp@linux.vnet.ibm.com> | 2020-06-03 13:57:20 -0500 |
---|---|---|
committer | Paul E. Murphy <murphyp@linux.vnet.ibm.com> | 2020-06-05 15:29:44 -0500 |
commit | 6ef422750985f7e60a8d480f07ecda59e0311fdf (patch) | |
tree | 92ba3cc4db0728914cb322df7520e43c20286637 | |
parent | e52434a2e4d1105272daaef87678da950fbec73f (diff) | |
download | glibc-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.h | 8 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc64/le/fpu/multiarch/s_fmaf128-power9.c | 4 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc64/le/power9/fpu/s_fmaf128.c | 36 |
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) |