From: Stan Shebs Date: Thu, 6 Feb 2020 19:58:01 +0000 (-0800) Subject: Remove old workaround in power7 logb functions, clang no longer crashes on the inline... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c3064d5f506a3f9632d191287c38ec93e5b53e80;p=thirdparty%2Fglibc.git Remove old workaround in power7 logb functions, clang no longer crashes on the inline assembly --- diff --git a/sysdeps/powerpc/power7/fpu/s_logb.c b/sysdeps/powerpc/power7/fpu/s_logb.c index 40a689725db..160b9334de7 100644 --- a/sysdeps/powerpc/power7/fpu/s_logb.c +++ b/sysdeps/powerpc/power7/fpu/s_logb.c @@ -17,7 +17,6 @@ . */ #include -#include #include /* 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)) diff --git a/sysdeps/powerpc/power7/fpu/s_logbf.c b/sysdeps/powerpc/power7/fpu/s_logbf.c index 0da0f374906..0832ad70225 100644 --- a/sysdeps/powerpc/power7/fpu/s_logbf.c +++ b/sysdeps/powerpc/power7/fpu/s_logbf.c @@ -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)) diff --git a/sysdeps/powerpc/power7/fpu/s_logbl.c b/sysdeps/powerpc/power7/fpu/s_logbl.c index 997dfcf8fbc..192145a7a1b 100644 --- a/sysdeps/powerpc/power7/fpu/s_logbl.c +++ b/sysdeps/powerpc/power7/fpu/s_logbl.c @@ -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))