Skip to content

Commit

Permalink
Fix PLT uses in libm on powerpc
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Schwab committed Sep 15, 2011
1 parent ee4d031 commit edc121b
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 16 deletions.
11 changes: 11 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
2011-09-15 Andreas Schwab <schwab@redhat.com>

* sysdeps/powerpc/fpu/e_hypot.c (__ieee754_hypot): Use
__ieee754_sqrt instead of sqrt.
* sysdeps/powerpc/fpu/e_hypotf.c (__ieee754_hypotf): Use
__ieee754_sqrtf instead of sqrtf.
* sysdeps/powerpc/fpu/e_rem_pio2f.c (__ieee754_rem_pio2f): Use
__floorf instead of floorf.
* sysdeps/powerpc/fpu/k_rem_pio2f.c (__fp_kernel_rem_pio2f): Use
__floorf, __truncf instead of floorf, truncf.

2011-09-14 Ulrich Drepper <drepper@gmail.com>

* sysdeps/x86_64/fpu/s_copysign.S [ELF]: Use correct section.
Expand Down
8 changes: 4 additions & 4 deletions sysdeps/powerpc/fpu/e_hypot.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,22 +96,22 @@ __ieee754_hypot (double x, double y)
{
x *= twoM600;
y *= twoM600;
return sqrt (x * x + y * y) / twoM600;
return __ieee754_sqrt (x * x + y * y) / twoM600;
}
if (y < twoM500)
{
if (y <= pdnum)
{
x *= two1022;
y *= two1022;
return sqrt (x * x + y * y) / two1022;
return __ieee754_sqrt (x * x + y * y) / two1022;
}
else
{
x *= two600;
y *= two600;
return sqrt (x * x + y * y) / two600;
return __ieee754_sqrt (x * x + y * y) / two600;
}
}
return sqrt (x * x + y * y);
return __ieee754_sqrt (x * x + y * y);
}
8 changes: 4 additions & 4 deletions sysdeps/powerpc/fpu/e_hypotf.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,22 +97,22 @@ __ieee754_hypotf (float x, float y)
{
x *= twoM60;
y *= twoM60;
return sqrtf (x * x + y * y) / twoM60;
return __ieee754_sqrtf (x * x + y * y) / twoM60;
}
if (y < twoM50)
{
if (y <= pdnum)
{
x *= two126;
y *= two126;
return sqrtf (x * x + y * y) / two126;
return __ieee754_sqrtf (x * x + y * y) / two126;
}
else
{
x *= two60;
y *= two60;
return sqrtf (x * x + y * y) / two60;
return __ieee754_sqrtf (x * x + y * y) / two60;
}
}
return sqrtf (x * x + y * y);
return __ieee754_sqrtf (x * x + y * y);
}
8 changes: 4 additions & 4 deletions sysdeps/powerpc/fpu/e_rem_pio2f.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ __ieee754_rem_pio2f (float x, float *y)
}
if (ax <= pio2_2e7)
{
n = floorf (ax * invpio2 + half);
n = __floorf (ax * invpio2 + half);
i = (int32_t) n;
r = ax - n * pio2_1;
w = n * pio2_1t; /* 1st round good to 40 bit */
Expand Down Expand Up @@ -168,11 +168,11 @@ __ieee754_rem_pio2f (float x, float *y)
e0 = __float_and8 (ax / 128.0);
z = ax / e0;

tx[0] = floorf (z);
tx[0] = __floorf (z);
z = (z - tx[0]) * two8;
tx[1] = floorf (z);
tx[1] = __floorf (z);
z = (z - tx[1]) * two8;
tx[2] = floorf (z);
tx[2] = __floorf (z);

nx = 3;
while (tx[nx - 1] == zero)
Expand Down
8 changes: 4 additions & 4 deletions sysdeps/powerpc/fpu/k_rem_pio2f.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,16 +135,16 @@ __fp_kernel_rem_pio2f (float *x, float *y, float e0, int32_t nx)
/* distill q[] into iq[] reversingly */
for (i = 0, j = jz, z = q[jz]; j > 0; i++, j--)
{
fw = truncf (twon8 * z);
fw = __truncf (twon8 * z);
iq[i] = (int32_t) (z - two8 * fw);
z = q[j - 1] + fw;
}

/* compute n */
z = __scalbnf (z, q0); /* actual value of z */
z -= 8.0 * floorf (z * 0.125); /* trim off integer >= 8 */
z -= 8.0 * __floorf (z * 0.125); /* trim off integer >= 8 */
n = (int32_t) z;
z -= truncf (z);
z -= __truncf (z);
ih = 0;
if (q0 > 0)
{ /* need iq[jz-1] to determine n */
Expand Down Expand Up @@ -234,7 +234,7 @@ __fp_kernel_rem_pio2f (float *x, float *y, float e0, int32_t nx)
z = __scalbnf (z, -q0);
if (z >= two8)
{
fw = truncf (twon8 * z);
fw = __truncf (twon8 * z);
iq[jz] = (int32_t) (z - two8 * fw);
jz += 1;
q0 += 8;
Expand Down

0 comments on commit edc121b

Please sign in to comment.