diff options
author | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2013-05-17 08:12:16 -0500 |
---|---|---|
committer | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2013-05-17 08:15:59 -0500 |
commit | 13d3b41a36c4f28d171a144f8a9baad3a8835981 (patch) | |
tree | 2e4498103760e4ac92de2c5e06e5b64c7ac29c7a | |
parent | 2848b105856e49d98f3c5026b6d8d790f9723c0c (diff) | |
download | glibc-13d3b41a36c4f28d171a144f8a9baad3a8835981.tar.gz glibc-13d3b41a36c4f28d171a144f8a9baad3a8835981.tar.xz glibc-13d3b41a36c4f28d171a144f8a9baad3a8835981.zip |
PowerPC: fix hypot/hypotf check for -INF
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sysdeps/powerpc/fpu/e_hypot.c | 6 | ||||
-rw-r--r-- | sysdeps/powerpc/fpu/e_hypotf.c | 6 |
3 files changed, 12 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index 0533218c3d..78d4804885 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-05-17 Adhemerval Zanella <azanella@linux.vnet.ibm.com> + + * 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-05-16 Maciej W. Rozycki <macro@codesourcery.com> [BZ #15442] diff --git a/sysdeps/powerpc/fpu/e_hypot.c b/sysdeps/powerpc/fpu/e_hypot.c index 53419337ff..8cf5b02d92 100644 --- a/sysdeps/powerpc/fpu/e_hypot.c +++ b/sysdeps/powerpc/fpu/e_hypot.c @@ -54,13 +54,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 3ccd385316..5fc91ee4c6 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; \ |