diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-04-01 10:19:57 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-05-23 17:49:18 -0300 |
commit | efeb2bd1ab49215325040aa53396a2c19dfd1402 (patch) | |
tree | 0dda3bc772c3ac1c2e2b2a8a55a6f75c28e1efe8 /sysdeps/ieee754/ldbl-128/s_fabsl.c | |
parent | 04b30fe4f85d6e4c0390581a5e90db066a0b2f1f (diff) | |
download | glibc-efeb2bd1ab49215325040aa53396a2c19dfd1402.tar.gz glibc-efeb2bd1ab49215325040aa53396a2c19dfd1402.tar.xz glibc-efeb2bd1ab49215325040aa53396a2c19dfd1402.zip |
math: Add math-use-builtins-fabs (BZ#29027)
Both float, double, and _Float128 are assumed to be supported (float and double already only uses builtins). Only long double is parametrized due GCC bug 29253 which prevents its usage on powerpc. It allows to remove i686, ia64, x86_64, powerpc, and sparc arch specific implementation. On ia64 it also fixes the sNAN handling: math/test-float64x-fabs math/test-ldouble-fabs Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc-linux-gnu, powerpc64-linux-gnu, sparc64-linux-gnu, and ia64-linux-gnu.
Diffstat (limited to 'sysdeps/ieee754/ldbl-128/s_fabsl.c')
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_fabsl.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sysdeps/ieee754/ldbl-128/s_fabsl.c b/sysdeps/ieee754/ldbl-128/s_fabsl.c index 7e08980252..f22515fec6 100644 --- a/sysdeps/ieee754/ldbl-128/s_fabsl.c +++ b/sysdeps/ieee754/ldbl-128/s_fabsl.c @@ -24,11 +24,9 @@ static char rcsid[] = "$NetBSD: $"; #include <math_private.h> #include <libm-alias-ldouble.h> -_Float128 __fabsl(_Float128 x) +_Float128 +__fabsl (_Float128 x) { - uint64_t hx; - GET_LDOUBLE_MSW64(hx,x); - SET_LDOUBLE_MSW64(x,hx&0x7fffffffffffffffLL); - return x; + return __builtin_fabsf128 (x); } libm_alias_ldouble (__fabs, fabs) |