| From ed81f668f7c9eff0692c3c81691a7380b55063ff Mon Sep 17 00:00:00 2001 |
| From: Adhemerval Zanella <azanella@linux.vnet.ibm.com> |
| Date: Fri, 17 May 2013 08:12:16 -0500 |
| Subject: [PATCH 28/42] PowerPC: fix hypot/hypotf check for -INF (cherry |
| picked from commit |
| 13d3b41a36c4f28d171a144f8a9baad3a8835981) (backported |
| missing CL/NEWS from commit |
| 68191c1d59d40b3d9f5babef4f37f265920ff565) |
| |
| |
| sysdeps/powerpc/fpu/e_hypot.c | 6 +++--- |
| sysdeps/powerpc/fpu/e_hypotf.c | 6 +++--- |
| 4 files changed, 14 insertions(+), 7 deletions(-) |
| |
| diff --git glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypot.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypot.c |
| index cfadd5c..fc17bea 100644 |
| |
| |
| @@ -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 glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c |
| index 92e824d..77c1b17 100644 |
| |
| |
| @@ -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; \ |
| -- |
| 1.7.11.7 |
| |