You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
3.0 KiB
59 lines
3.0 KiB
7 years ago
|
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
|
||
|
--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypot.c
|
||
|
+++ glibc-2.17-c758a686/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 glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c
|
||
|
index 92e824d..77c1b17 100644
|
||
|
--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c
|
||
|
+++ glibc-2.17-c758a686/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; \
|
||
|
--
|
||
|
1.7.11.7
|