summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2013-05-17 08:12:16 -0500
committerRyan S. Arnold <rsa@linux.vnet.ibm.com>2013-07-26 08:25:20 -0500
commited81f668f7c9eff0692c3c81691a7380b55063ff (patch)
tree04e1789063a1bb9553138354f27fa4d88be8663a
parent01c3d9bb14a1e90159d6999cf3469e62c0c5d4b2 (diff)
downloadglibc-ed81f668f7c9eff0692c3c81691a7380b55063ff.tar.gz
PowerPC: fix hypot/hypotf check for -INF
(cherry picked from commit 13d3b41a36c4f28d171a144f8a9baad3a8835981) (backported missing CL/NEWS from commit 68191c1d59d40b3d9f5babef4f37f265920ff565)
-rw-r--r--ChangeLog7
-rw-r--r--NEWS2
-rw-r--r--sysdeps/powerpc/fpu/e_hypot.c6
-rw-r--r--sysdeps/powerpc/fpu/e_hypotf.c6
4 files changed, 14 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e721365c9..153515d96f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-05-17 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+
+ [BZ # 15497]
+ * sysdeps/powerpc/fpu/e_hypot.c (GET_TWO_FLOAT_WORD): Fix test for
+ negative infinity on POWER6 or lower.
+ * sysdeps/powerpc/fpu/e_hypotf.c (GET_TWO_FLOAT_WORD): Likewise.
+
2013-04-30 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/Versions: Add __vdso_time symbol.
diff --git a/NEWS b/NEWS
index c6380a77be..e418a46269 100644
--- a/NEWS
+++ b/NEWS
@@ -8,7 +8,7 @@ using `glibc' in the "product" field.
Version 2.17.1
* The following bugs are resolved with this release:
- 15003, 15006, 15055, 15122, 15759.
+ 15003, 15006, 15055, 15122, 15497, 15759.
Version 2.17
diff --git a/sysdeps/powerpc/fpu/e_hypot.c b/sysdeps/powerpc/fpu/e_hypot.c
index cfadd5c856..fc17bea536 100644
--- a/sysdeps/powerpc/fpu/e_hypot.c
+++ b/sysdeps/powerpc/fpu/e_hypot.c
@@ -52,13 +52,13 @@ static const double pdnum = 2.225073858507201e-308;
ieee_double_shape_type gh_u2; \
gh_u1.value = (d1); \
gh_u2.value = (d2); \
- (i1) = gh_u1.parts.msw; \
- (i2) = gh_u2.parts.msw; \
+ (i1) = gh_u1.parts.msw & 0x7fffffff; \
+ (i2) = gh_u2.parts.msw & 0x7fffffff; \
} while (0)
# define TEST_INF_NAN(x, y) \
do { \
- int32_t hx, hy; \
+ uint32_t hx, hy; \
GET_TW0_HIGH_WORD(x, y, hx, hy); \
if (hy > hx) { \
uint32_t ht = hx; hx = hy; hy = ht; \
diff --git a/sysdeps/powerpc/fpu/e_hypotf.c b/sysdeps/powerpc/fpu/e_hypotf.c
index 92e824dafc..77c1b17d8e 100644
--- a/sysdeps/powerpc/fpu/e_hypotf.c
+++ b/sysdeps/powerpc/fpu/e_hypotf.c
@@ -46,13 +46,13 @@ static const float two30 = 1.0737418e09;
ieee_float_shape_type gf_u2; \
gf_u1.value = (f1); \
gf_u2.value = (f2); \
- (i1) = gf_u1.word; \
- (i2) = gf_u2.word; \
+ (i1) = gf_u1.word & 0x7fffffff; \
+ (i2) = gf_u2.word & 0x7fffffff; \
} while (0)
# define TEST_INF_NAN(x, y) \
do { \
- int32_t hx, hy; \
+ uint32_t hx, hy; \
GET_TWO_FLOAT_WORD(x, y, hx, hy); \
if (hy > hx) { \
uint32_t ht = hx; hx = hy; hy = ht; \