]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Remove old workaround in power7 logb functions, clang no longer crashes on the inline...
authorStan Shebs <stanshebs@google.com>
Thu, 6 Feb 2020 19:58:01 +0000 (11:58 -0800)
committerFangrui Song <i@maskray.me>
Sat, 28 Aug 2021 00:26:04 +0000 (17:26 -0700)
sysdeps/powerpc/power7/fpu/s_logb.c
sysdeps/powerpc/power7/fpu/s_logbf.c
sysdeps/powerpc/power7/fpu/s_logbl.c

index 40a689725db36af8190759f1575bfa8b85641795..160b9334de76298129bf98bde7d01d570f2b929c 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <math_ldbl_opt.h>
-#include <math_private.h>
 #include <libm-alias-double.h>
 
 /* This implementation avoids FP to INT conversions by using VSX
@@ -42,19 +41,11 @@ __logb (double x)
     return -1.0 / __builtin_fabs (x);
 
   /* ret = x & 0x7ff0000000000000;  */
-#if !defined __clang__
   asm (
     "xxland %x0,%x1,%x2\n"
     "fcfid  %0,%0"
     : "=f" (ret)
     : "f" (x), "f" (mask.d));
-#else
-  /* TODO(rtenneti): This is wrong. Handle double */
-  int64_t inum;
-  GET_FLOAT_WORD(inum, x);
-  inum = (inum & 0x7ff0000000000000);
-  SET_FLOAT_WORD(ret, inum);
-#endif
   /* ret = (ret >> 52) - 1023.0;  */
   ret = (ret * two1div52) + two10m1;
   if (__builtin_expect (ret > -two10m1, 0))
index 0da0f374906017ff0d69e5774e012b165d84685f..0832ad70225e0b05500a70261346106abd229733 100644 (file)
@@ -43,18 +43,11 @@ __logbf (float x)
     return -1.0 / __builtin_fabsf (x);
 
   /* ret = x & 0x7f800000;  */
-#if !defined __clang__
   asm (
     "xxland %x0,%x1,%x2\n"
     "fcfid  %0,%0"
     : "=f"(ret)
     : "f" (x), "f" (mask.d));
-#else
-  int32_t inum;
-  GET_FLOAT_WORD(inum, x);
-  inum = (inum & 0x7ff0000000000000);
-  SET_FLOAT_WORD(ret, inum);
-#endif
   /* ret = (ret >> 52) - 1023.0, since ret is double.  */
   ret = (ret * two1div52) + two10m1;
   if (__builtin_expect (ret > -two7m1, 0))
index 997dfcf8fbc2d11068065ba04d88f7755ddb3a33..192145a7a1b904fc85833c56ccf300935ed9719c 100644 (file)
@@ -46,19 +46,11 @@ __logbl (long double x)
   ldbl_unpack (x, &xh, &xl);
   EXTRACT_WORDS64 (hx, xh);
   /* ret = x & 0x7ff0000000000000;  */
-#if !defined __clang__
   asm (
     "xxland %x0,%x1,%x2\n"
     "fcfid  %0,%0"
     : "=f" (ret)
     : "f" (xh), "f" (mask.d));
-#else
-  /* TODO(rtenneti): This is wrong. Handle double */
-  int64_t inum;
-  GET_FLOAT_WORD(inum, x);
-  inum = (inum & 0x7ff0000000000000);
-  SET_FLOAT_WORD(ret, inum);
-#endif
   /* ret = (ret >> 52) - 1023.0;  */
   ret = (ret * two1div52) + two10m1;
   if (__builtin_expect (ret > -two10m1, 0))