Mercurial > hg > CbC > CbC_gcc
diff gcc/config/pa/quadlib.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | a06113de4d67 |
children |
line wrap: on
line diff
--- a/gcc/config/pa/quadlib.c Tue May 25 18:58:51 2010 +0900 +++ b/gcc/config/pa/quadlib.c Tue Mar 22 17:18:12 2011 +0900 @@ -58,6 +58,7 @@ int _U_Qfcomp (long double, long double); long double _U_Qfneg (long double); +long double _U_Qfcopysign (long double, long double); #ifdef __LP64__ int __U_Qfcnvfxt_quad_to_sgl (long double); @@ -160,7 +161,6 @@ return (_U_Qfcmp (a, b, QCMP_UNORD | QCMP_EQ | QCMP_GT) != 0 ? 1 : -1); } - /* Negate long double A. */ long double _U_Qfneg (long double a) @@ -176,6 +176,23 @@ return u.ld; } +/* Return long double A with sign changed to sign of long double B. */ +long double +_U_Qfcopysign (long double a, long double b) +{ + union + { + long double ld; + int i[4]; + } ua, ub; + + ua.ld = a; + ub.ld = b; + ua.i[0] &= 0x7fffffff; + ua.i[0] |= (0x80000000 & ub.i[0]); + return ua.ld; +} + #ifdef __LP64__ /* This routine is only necessary for the PA64 port; for reasons unknown _U_Qfcnvfxt_quad_to_sgl returns the integer in the high 32bits of the