diff mbox

Use builtins in fabs implementations

Message ID 000701d0947d$22cc6db0$68654910$@com
State New
Headers show

Commit Message

Wilco May 22, 2015, 10:50 a.m. UTC
Since GLIBC is built with a modern GCC which always inlines __builtin_fabs, it is safe to use the
builtin for the definitions of fabs and fabsf (fabsl is typically emulated and unsafe in some cases,
see https://sourceware.org/ml/libc-alpha/2015-05/msg00336.html). This means targets no longer need
to define their own implementations.

OK for commit?

ChangeLog: 
2015-05-22  Wilco Dijkstra  <wdijkstr@arm.com>

        * sysdeps/ieee754/dbl-64/s_fabs.c: (__fabs): Call __builtin_fabs.  
        * sysdeps/ieee754/flt-32/s_fabsf.c: (__fabsf): Likewise.

---
 sysdeps/ieee754/dbl-64/s_fabs.c  | 6 +-----
 sysdeps/ieee754/flt-32/s_fabsf.c | 6 +-----
 2 files changed, 2 insertions(+), 10 deletions(-)

Comments

Joseph Myers May 22, 2015, 2:22 p.m. UTC | #1
On Fri, 22 May 2015, Wilco Dijkstra wrote:

> Since GLIBC is built with a modern GCC which always inlines 
> __builtin_fabs, it is safe to use the builtin for the definitions of 
> fabs and fabsf (fabsl is typically emulated and unsafe in some cases, 
> see https://sourceware.org/ml/libc-alpha/2015-05/msg00336.html). This 
> means targets no longer need to define their own implementations.
> 
> OK for commit?

OK if you've at least run the math/ tests with clean results for at least 
one configuration.
diff mbox

Patch

diff --git a/sysdeps/ieee754/dbl-64/s_fabs.c b/sysdeps/ieee754/dbl-64/s_fabs.c
index c82c421..73c09a2 100644
--- a/sysdeps/ieee754/dbl-64/s_fabs.c
+++ b/sysdeps/ieee754/dbl-64/s_fabs.c
@@ -19,15 +19,11 @@  static char rcsid[] = "$NetBSD: s_fabs.c,v 1.7 1995/05/10 20:47:13 jtc Exp $";
  */
 
 #include <math.h>
-#include <math_private.h>
 
 double
 __fabs (double x)
 {
-  u_int32_t high;
-  GET_HIGH_WORD (high, x);
-  SET_HIGH_WORD (x, high & 0x7fffffff);
-  return x;
+  return __builtin_fabs (x);
 }
 weak_alias (__fabs, fabs)
 #ifdef NO_LONG_DOUBLE
diff --git a/sysdeps/ieee754/flt-32/s_fabsf.c b/sysdeps/ieee754/flt-32/s_fabsf.c
index c58aede..297abe6 100644
--- a/sysdeps/ieee754/flt-32/s_fabsf.c
+++ b/sysdeps/ieee754/flt-32/s_fabsf.c
@@ -22,13 +22,9 @@  static char rcsid[] = "$NetBSD: s_fabsf.c,v 1.4 1995/05/10 20:47:15 jtc Exp $";
  */
 
 #include <math.h>
-#include <math_private.h>
 
 float __fabsf(float x)
 {
-	u_int32_t ix;
-	GET_FLOAT_WORD(ix,x);
-	SET_FLOAT_WORD(x,ix&0x7fffffff);
-        return x;
+  return __builtin_fabsf (x);
 }
 weak_alias (__fabsf, fabsf)