Fix build failure on power4 processors

The power4-specific mpa.c depended on some global variables that were
removed by earlier patches.  Also, it did not define mpone and mptwo.
This commit is contained in:
Siddhesh Poyarekar 2013-01-04 22:05:49 +05:30
parent 8729819ba4
commit b18decba11
3 changed files with 27 additions and 6 deletions

View File

@ -1,3 +1,16 @@
2013-01-04 Siddhesh Poyarekar <siddhesh@redhat.com>
* sysdeps/powerpc/powerpc32/power4/fpu/mpa.c (mpone): Define
mp_no value for 1.0 and 2.0.
(norm): Use RADIXI instead of radixi.d.
(denorm): Likewise.
(__mul): Use 0.0 instead of zero.d.
* sysdeps/powerpc/powerpc64/power4/fpu/mpa.c (mpone): Define
mp_no value for 1.0 and 2.0.
(norm): Use RADIXI instead of radixi.d.
(denorm): Likewise.
(__mul): Use 0.0 instead of zero.d.
2013-01-04 Joseph Myers <joseph@codesourcery.com>
[BZ #14994]

View File

@ -47,6 +47,10 @@
#include "mpa.h"
#include "mpa2.h"
#include <sys/param.h> /* For MIN() */
const mp_no mpone = {1, {1.0, 1.0}};
const mp_no mptwo = {1, {1.0, 2.0}};
/* mcr() compares the sizes of the mantissas of two multiple precision */
/* numbers. Mantissas are compared regardless of the signs of the */
/* numbers, even if x->d[0] or y->d[0] are zero. Exponents are also */
@ -129,7 +133,7 @@ void __cpymn(const mp_no *x, int m, mp_no *y, int n) {
/* number *y, normalized case (|x| >= 2**(-1022))) */
static void norm(const mp_no *x, double *y, int p)
{
#define R radixi.d
#define R RADIXI
long i;
#if 0
int k;
@ -191,7 +195,7 @@ static void denorm(const mp_no *x, double *y, int p)
double a,v;
#endif
#define R radixi.d
#define R RADIXI
if (EX<-44 || (EX==-44 && X[1]<TWO5))
{ *y=ZERO; return; }
@ -461,7 +465,7 @@ void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
zk2 = x->d[i2-1]*y->d[i1];
}
else
zk2 = zero.d;
zk2 = 0.0;
/* Do two multiply/adds per loop iteration, using independent
accumulators; zk and zk2. */
for (i=i1,j=i2-1; i<i2-1; i+=2,j-=2)

View File

@ -47,6 +47,10 @@
#include "mpa.h"
#include "mpa2.h"
#include <sys/param.h> /* For MIN() */
const mp_no mpone = {1, {1.0, 1.0}};
const mp_no mptwo = {1, {1.0, 2.0}};
/* mcr() compares the sizes of the mantissas of two multiple precision */
/* numbers. Mantissas are compared regardless of the signs of the */
/* numbers, even if x->d[0] or y->d[0] are zero. Exponents are also */
@ -129,7 +133,7 @@ void __cpymn(const mp_no *x, int m, mp_no *y, int n) {
/* number *y, normalized case (|x| >= 2**(-1022))) */
static void norm(const mp_no *x, double *y, int p)
{
#define R radixi.d
#define R RADIXI
long i;
#if 0
int k;
@ -191,7 +195,7 @@ static void denorm(const mp_no *x, double *y, int p)
double a,v;
#endif
#define R radixi.d
#define R RADIXI
if (EX<-44 || (EX==-44 && X[1]<TWO5))
{ *y=ZERO; return; }
@ -461,7 +465,7 @@ void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
zk2 = x->d[i2-1]*y->d[i1];
}
else
zk2 = zero.d;
zk2 = 0.0;
/* Do two multiply/adds per loop iteration, using independent
accumulators; zk and zk2. */
for (i=i1,j=i2-1; i<i2-1; i+=2,j-=2)