Remove old workaround in power7 logb functions, clang no longer crashes on the inline assembly

This commit is contained in:
Stan Shebs 2020-02-06 11:58:01 -08:00 committed by Fangrui Song
parent cb90884046
commit c3064d5f50
3 changed files with 0 additions and 24 deletions

View 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))

View 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))

View 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))