From ed81f668f7c9eff0692c3c81691a7380b55063ff Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 17 May 2013 08:12:16 -0500 Subject: PowerPC: fix hypot/hypotf check for -INF (cherry picked from commit 13d3b41a36c4f28d171a144f8a9baad3a8835981) (backported missing CL/NEWS from commit 68191c1d59d40b3d9f5babef4f37f265920ff565) --- ChangeLog | 7 +++++++ NEWS | 2 +- sysdeps/powerpc/fpu/e_hypot.c | 6 +++--- sysdeps/powerpc/fpu/e_hypotf.c | 6 +++--- 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 + + [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 * 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; \ -- cgit 1.4.1