diff options
author | Stefan Liebler <stli@linux.ibm.com> | 2019-12-11 15:09:24 +0100 |
---|---|---|
committer | Stefan Liebler <stli@linux.ibm.com> | 2019-12-11 15:12:19 +0100 |
commit | f818afdd3b29d7eef2010448457c9f5c16e684cd (patch) | |
tree | 642a01b96f19ec7f6668f867ff82eb045688c949 /sysdeps/ieee754/flt-32 | |
parent | f82996f8159981619ac7ed8a4c1838c2ad72ab61 (diff) | |
download | glibc-f818afdd3b29d7eef2010448457c9f5c16e684cd.tar.gz glibc-f818afdd3b29d7eef2010448457c9f5c16e684cd.tar.xz glibc-f818afdd3b29d7eef2010448457c9f5c16e684cd.zip |
Use GCC builtins for copysign functions if desired.
This patch is always using the corresponding GCC builtin for copysignf, copysign, and is using the builtin for copysignl, copysignf128 if the USE_FUNCTION_BUILTIN macros are defined to one in math-use-builtins.h. Altough the long double version is enabled by default we still need the macro and the alternative implementation as the _Float128 version of the builtin is not available with all supported GCC versions. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'sysdeps/ieee754/flt-32')
-rw-r--r-- | sysdeps/ieee754/flt-32/s_copysignf.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/sysdeps/ieee754/flt-32/s_copysignf.c b/sysdeps/ieee754/flt-32/s_copysignf.c index 77d1d90e92..1c097d313f 100644 --- a/sysdeps/ieee754/flt-32/s_copysignf.c +++ b/sysdeps/ieee754/flt-32/s_copysignf.c @@ -13,7 +13,7 @@ * ==================================================== */ -#if defined(LIBM_SCCS) && !defined(lint) +#if defined (LIBM_SCCS) && ! defined (lint) static char rcsid[] = "$NetBSD: s_copysignf.c,v 1.4 1995/05/10 20:46:59 jtc Exp $"; #endif @@ -25,15 +25,11 @@ static char rcsid[] = "$NetBSD: s_copysignf.c,v 1.4 1995/05/10 20:46:59 jtc Exp #define NO_MATH_REDIRECT #include <math.h> -#include <math_private.h> #include <libm-alias-float.h> -float __copysignf(float x, float y) +float +__copysignf (float x, float y) { - uint32_t ix,iy; - GET_FLOAT_WORD(ix,x); - GET_FLOAT_WORD(iy,y); - SET_FLOAT_WORD(x,(ix&0x7fffffff)|(iy&0x80000000)); - return x; + return __builtin_copysignf (x, y); } libm_alias_float (__copysign, copysign) |