diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2015-12-17 12:34:57 -0200 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2015-12-17 14:34:33 -0200 |
commit | 2094350c9c9c1b87cf34b193ad6541e4a29b62dc (patch) | |
tree | dd5053ee8aba5d47b33dff0e21bfcfd18436237b /sysdeps/powerpc | |
parent | d29d57eed9a6acb646663a02b7eb2bece2c433dc (diff) | |
download | glibc-2094350c9c9c1b87cf34b193ad6541e4a29b62dc.tar.gz glibc-2094350c9c9c1b87cf34b193ad6541e4a29b62dc.tar.xz glibc-2094350c9c9c1b87cf34b193ad6541e4a29b62dc.zip |
Fix POWER7 logb results for negative subnormals (bug 19375)
The optimized POWER7 logb implementation does not use the absolute value of the word extracted from the input to apply the leading 0-bits builtin (to ignore the float sign). This patch fixes it by clearing the signal bit in the resulting word. It fixes the subnormal tests failures when running on POWER7 ou newer chip. Tested on powerpc64le (POWER8). [BZ# 19375] * sysdeps/powerpc/power7/fpu/s_logb.c (__logb): Fix return for negative subnormals.
Diffstat (limited to 'sysdeps/powerpc')
-rw-r--r-- | sysdeps/powerpc/power7/fpu/s_logb.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sysdeps/powerpc/power7/fpu/s_logb.c b/sysdeps/powerpc/power7/fpu/s_logb.c index c5feb67960..abd1c2ae3c 100644 --- a/sysdeps/powerpc/power7/fpu/s_logb.c +++ b/sysdeps/powerpc/power7/fpu/s_logb.c @@ -58,6 +58,7 @@ __logb (double x) int ma; EXTRACT_WORDS (ix, lx, x); + ix &= 0x7fffffff; if (ix == 0) ma = __builtin_clz (lx) + 32; else |