summary refs log tree commit diff
path: root/sysdeps/powerpc/power7
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2015-12-17 12:34:57 -0200
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2015-12-17 14:34:33 -0200
commit2094350c9c9c1b87cf34b193ad6541e4a29b62dc (patch)
treedd5053ee8aba5d47b33dff0e21bfcfd18436237b /sysdeps/powerpc/power7
parentd29d57eed9a6acb646663a02b7eb2bece2c433dc (diff)
downloadglibc-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/power7')
-rw-r--r--sysdeps/powerpc/power7/fpu/s_logb.c1
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