From 2139c52d338003ec77afed7dec862e0ad4ceb443 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 16 Nov 2011 07:33:06 +0000 Subject: [PATCH] lib: Finish int_math.h definitions using compiler builtins and eliminate implementation use of . llvm-svn: 144786 --- compiler-rt/lib/divdc3.c | 27 +++++++------ compiler-rt/lib/divsc3.c | 27 +++++++------ compiler-rt/lib/divxc3.c | 27 +++++++------ compiler-rt/lib/int_lib.h | 4 -- compiler-rt/lib/int_math.h | 22 +++++++++++ compiler-rt/lib/muldc3.c | 29 +++++++------- compiler-rt/lib/mulsc3.c | 29 +++++++------- compiler-rt/lib/mulxc3.c | 29 +++++++------- compiler-rt/lib/ppc/divtc3.c | 39 +++++++++---------- compiler-rt/lib/ppc/fixtfdi.c | 3 +- compiler-rt/lib/ppc/multc3.c | 13 ++----- .../make/platform/clang_darwin_test_input.c | 3 +- 12 files changed, 130 insertions(+), 122 deletions(-) diff --git a/compiler-rt/lib/divdc3.c b/compiler-rt/lib/divdc3.c index 620b8cad1a9f..cfbc498e7b44 100644 --- a/compiler-rt/lib/divdc3.c +++ b/compiler-rt/lib/divdc3.c @@ -14,7 +14,6 @@ #include "int_lib.h" #include "int_math.h" -#include /* Returns: the quotient of (a + ib) / (c + id) */ @@ -22,37 +21,37 @@ double _Complex __divdc3(double __a, double __b, double __c, double __d) { int __ilogbw = 0; - double __logbw = logb(fmax(fabs(__c), fabs(__d))); + double __logbw = crt_logb(crt_fmax(crt_fabs(__c), crt_fabs(__d))); if (crt_isfinite(__logbw)) { __ilogbw = (int)__logbw; - __c = scalbn(__c, -__ilogbw); - __d = scalbn(__d, -__ilogbw); + __c = crt_scalbn(__c, -__ilogbw); + __d = crt_scalbn(__d, -__ilogbw); } double __denom = __c * __c + __d * __d; double _Complex z; - __real__ z = scalbn((__a * __c + __b * __d) / __denom, -__ilogbw); - __imag__ z = scalbn((__b * __c - __a * __d) / __denom, -__ilogbw); + __real__ z = crt_scalbn((__a * __c + __b * __d) / __denom, -__ilogbw); + __imag__ z = crt_scalbn((__b * __c - __a * __d) / __denom, -__ilogbw); if (crt_isnan(__real__ z) && crt_isnan(__imag__ z)) { if ((__denom == 0.0) && (!crt_isnan(__a) || !crt_isnan(__b))) { - __real__ z = copysign(INFINITY, __c) * __a; - __imag__ z = copysign(INFINITY, __c) * __b; + __real__ z = crt_copysign(CRT_INFINITY, __c) * __a; + __imag__ z = crt_copysign(CRT_INFINITY, __c) * __b; } else if ((crt_isinf(__a) || crt_isinf(__b)) && crt_isfinite(__c) && crt_isfinite(__d)) { - __a = copysign(crt_isinf(__a) ? 1.0 : 0.0, __a); - __b = copysign(crt_isinf(__b) ? 1.0 : 0.0, __b); - __real__ z = INFINITY * (__a * __c + __b * __d); - __imag__ z = INFINITY * (__b * __c - __a * __d); + __a = crt_copysign(crt_isinf(__a) ? 1.0 : 0.0, __a); + __b = crt_copysign(crt_isinf(__b) ? 1.0 : 0.0, __b); + __real__ z = CRT_INFINITY * (__a * __c + __b * __d); + __imag__ z = CRT_INFINITY * (__b * __c - __a * __d); } else if (crt_isinf(__logbw) && __logbw > 0.0 && crt_isfinite(__a) && crt_isfinite(__b)) { - __c = copysign(crt_isinf(__c) ? 1.0 : 0.0, __c); - __d = copysign(crt_isinf(__d) ? 1.0 : 0.0, __d); + __c = crt_copysign(crt_isinf(__c) ? 1.0 : 0.0, __c); + __d = crt_copysign(crt_isinf(__d) ? 1.0 : 0.0, __d); __real__ z = 0.0 * (__a * __c + __b * __d); __imag__ z = 0.0 * (__b * __c - __a * __d); } diff --git a/compiler-rt/lib/divsc3.c b/compiler-rt/lib/divsc3.c index 88e2e0943ba5..caa0c4075eb3 100644 --- a/compiler-rt/lib/divsc3.c +++ b/compiler-rt/lib/divsc3.c @@ -14,7 +14,6 @@ #include "int_lib.h" #include "int_math.h" -#include /* Returns: the quotient of (a + ib) / (c + id) */ @@ -22,37 +21,37 @@ float _Complex __divsc3(float __a, float __b, float __c, float __d) { int __ilogbw = 0; - float __logbw = logbf(fmaxf(fabsf(__c), fabsf(__d))); + float __logbw = crt_logbf(crt_fmaxf(crt_fabsf(__c), crt_fabsf(__d))); if (crt_isfinite(__logbw)) { __ilogbw = (int)__logbw; - __c = scalbnf(__c, -__ilogbw); - __d = scalbnf(__d, -__ilogbw); + __c = crt_scalbnf(__c, -__ilogbw); + __d = crt_scalbnf(__d, -__ilogbw); } float __denom = __c * __c + __d * __d; float _Complex z; - __real__ z = scalbnf((__a * __c + __b * __d) / __denom, -__ilogbw); - __imag__ z = scalbnf((__b * __c - __a * __d) / __denom, -__ilogbw); + __real__ z = crt_scalbnf((__a * __c + __b * __d) / __denom, -__ilogbw); + __imag__ z = crt_scalbnf((__b * __c - __a * __d) / __denom, -__ilogbw); if (crt_isnan(__real__ z) && crt_isnan(__imag__ z)) { if ((__denom == 0) && (!crt_isnan(__a) || !crt_isnan(__b))) { - __real__ z = copysignf(INFINITY, __c) * __a; - __imag__ z = copysignf(INFINITY, __c) * __b; + __real__ z = crt_copysignf(CRT_INFINITY, __c) * __a; + __imag__ z = crt_copysignf(CRT_INFINITY, __c) * __b; } else if ((crt_isinf(__a) || crt_isinf(__b)) && crt_isfinite(__c) && crt_isfinite(__d)) { - __a = copysignf(crt_isinf(__a) ? 1 : 0, __a); - __b = copysignf(crt_isinf(__b) ? 1 : 0, __b); - __real__ z = INFINITY * (__a * __c + __b * __d); - __imag__ z = INFINITY * (__b * __c - __a * __d); + __a = crt_copysignf(crt_isinf(__a) ? 1 : 0, __a); + __b = crt_copysignf(crt_isinf(__b) ? 1 : 0, __b); + __real__ z = CRT_INFINITY * (__a * __c + __b * __d); + __imag__ z = CRT_INFINITY * (__b * __c - __a * __d); } else if (crt_isinf(__logbw) && __logbw > 0 && crt_isfinite(__a) && crt_isfinite(__b)) { - __c = copysignf(crt_isinf(__c) ? 1 : 0, __c); - __d = copysignf(crt_isinf(__d) ? 1 : 0, __d); + __c = crt_copysignf(crt_isinf(__c) ? 1 : 0, __c); + __d = crt_copysignf(crt_isinf(__d) ? 1 : 0, __d); __real__ z = 0 * (__a * __c + __b * __d); __imag__ z = 0 * (__b * __c - __a * __d); } diff --git a/compiler-rt/lib/divxc3.c b/compiler-rt/lib/divxc3.c index 66111db5cce8..5f240e956d84 100644 --- a/compiler-rt/lib/divxc3.c +++ b/compiler-rt/lib/divxc3.c @@ -15,7 +15,6 @@ #include "int_lib.h" #include "int_math.h" -#include /* Returns: the quotient of (a + ib) / (c + id) */ @@ -23,37 +22,37 @@ long double _Complex __divxc3(long double __a, long double __b, long double __c, long double __d) { int __ilogbw = 0; - long double __logbw = logbl(fmaxl(fabsl(__c), fabsl(__d))); + long double __logbw = crt_logbl(crt_fmaxl(crt_fabsl(__c), crt_fabsl(__d))); if (crt_isfinite(__logbw)) { __ilogbw = (int)__logbw; - __c = scalbnl(__c, -__ilogbw); - __d = scalbnl(__d, -__ilogbw); + __c = crt_scalbnl(__c, -__ilogbw); + __d = crt_scalbnl(__d, -__ilogbw); } long double __denom = __c * __c + __d * __d; long double _Complex z; - __real__ z = scalbnl((__a * __c + __b * __d) / __denom, -__ilogbw); - __imag__ z = scalbnl((__b * __c - __a * __d) / __denom, -__ilogbw); + __real__ z = crt_scalbnl((__a * __c + __b * __d) / __denom, -__ilogbw); + __imag__ z = crt_scalbnl((__b * __c - __a * __d) / __denom, -__ilogbw); if (crt_isnan(__real__ z) && crt_isnan(__imag__ z)) { if ((__denom == 0) && (!crt_isnan(__a) || !crt_isnan(__b))) { - __real__ z = copysignl(INFINITY, __c) * __a; - __imag__ z = copysignl(INFINITY, __c) * __b; + __real__ z = crt_copysignl(CRT_INFINITY, __c) * __a; + __imag__ z = crt_copysignl(CRT_INFINITY, __c) * __b; } else if ((crt_isinf(__a) || crt_isinf(__b)) && crt_isfinite(__c) && crt_isfinite(__d)) { - __a = copysignl(crt_isinf(__a) ? 1 : 0, __a); - __b = copysignl(crt_isinf(__b) ? 1 : 0, __b); - __real__ z = INFINITY * (__a * __c + __b * __d); - __imag__ z = INFINITY * (__b * __c - __a * __d); + __a = crt_copysignl(crt_isinf(__a) ? 1 : 0, __a); + __b = crt_copysignl(crt_isinf(__b) ? 1 : 0, __b); + __real__ z = CRT_INFINITY * (__a * __c + __b * __d); + __imag__ z = CRT_INFINITY * (__b * __c - __a * __d); } else if (crt_isinf(__logbw) && __logbw > 0 && crt_isfinite(__a) && crt_isfinite(__b)) { - __c = copysignl(crt_isinf(__c) ? 1 : 0, __c); - __d = copysignl(crt_isinf(__d) ? 1 : 0, __d); + __c = crt_copysignl(crt_isinf(__c) ? 1 : 0, __c); + __d = crt_copysignl(crt_isinf(__d) ? 1 : 0, __d); __real__ z = 0 * (__a * __c + __b * __d); __imag__ z = 0 * (__b * __c - __a * __d); } diff --git a/compiler-rt/lib/int_lib.h b/compiler-rt/lib/int_lib.h index 5ce20238c449..a87426c513c6 100644 --- a/compiler-rt/lib/int_lib.h +++ b/compiler-rt/lib/int_lib.h @@ -37,10 +37,6 @@ #include #include -#if !defined(INFINITY) && defined(HUGE_VAL) -#define INFINITY HUGE_VAL -#endif /* INFINITY */ - /* Include the commonly used internal type definitions. */ #include "int_types.h" diff --git a/compiler-rt/lib/int_math.h b/compiler-rt/lib/int_math.h index 856889d86545..b472f1a962e9 100644 --- a/compiler-rt/lib/int_math.h +++ b/compiler-rt/lib/int_math.h @@ -21,8 +21,30 @@ #ifndef INT_MATH_H #define INT_MATH_H +#define CRT_INFINITY __builtin_huge_valf() + #define crt_isfinite(x) __builtin_isfinite((x)) #define crt_isinf(x) __builtin_isinf((x)) #define crt_isnan(x) __builtin_isnan((x)) +#define crt_copysign(x, y) __builtin_copysign((x), (y)) +#define crt_copysignf(x, y) __builtin_copysignf((x), (y)) +#define crt_copysignl(x, y) __builtin_copysignl((x), (y)) + +#define crt_fabs(x) __builtin_fabs((x)) +#define crt_fabsf(x) __builtin_fabsf((x)) +#define crt_fabsl(x) __builtin_fabsl((x)) + +#define crt_fmax(x, y) __builtin_fmax((x), (y)) +#define crt_fmaxf(x, y) __builtin_fmaxf((x), (y)) +#define crt_fmaxl(x, y) __builtin_fmaxl((x), (y)) + +#define crt_logb(x) __builtin_logb((x)) +#define crt_logbf(x) __builtin_logbf((x)) +#define crt_logbl(x) __builtin_logbl((x)) + +#define crt_scalbn(x, y) __builtin_scalbn((x), (y)) +#define crt_scalbnf(x, y) __builtin_scalbnf((x), (y)) +#define crt_scalbnl(x, y) __builtin_scalbnl((x), (y)) + #endif /* INT_MATH_H */ diff --git a/compiler-rt/lib/muldc3.c b/compiler-rt/lib/muldc3.c index 0f3be9eb6899..5f4a6d16ebf0 100644 --- a/compiler-rt/lib/muldc3.c +++ b/compiler-rt/lib/muldc3.c @@ -14,7 +14,6 @@ #include "int_lib.h" #include "int_math.h" -#include /* Returns: the product of a + ib and c + id */ @@ -33,41 +32,41 @@ __muldc3(double __a, double __b, double __c, double __d) int __recalc = 0; if (crt_isinf(__a) || crt_isinf(__b)) { - __a = copysign(crt_isinf(__a) ? 1 : 0, __a); - __b = copysign(crt_isinf(__b) ? 1 : 0, __b); + __a = crt_copysign(crt_isinf(__a) ? 1 : 0, __a); + __b = crt_copysign(crt_isinf(__b) ? 1 : 0, __b); if (crt_isnan(__c)) - __c = copysign(0, __c); + __c = crt_copysign(0, __c); if (crt_isnan(__d)) - __d = copysign(0, __d); + __d = crt_copysign(0, __d); __recalc = 1; } if (crt_isinf(__c) || crt_isinf(__d)) { - __c = copysign(crt_isinf(__c) ? 1 : 0, __c); - __d = copysign(crt_isinf(__d) ? 1 : 0, __d); + __c = crt_copysign(crt_isinf(__c) ? 1 : 0, __c); + __d = crt_copysign(crt_isinf(__d) ? 1 : 0, __d); if (crt_isnan(__a)) - __a = copysign(0, __a); + __a = crt_copysign(0, __a); if (crt_isnan(__b)) - __b = copysign(0, __b); + __b = crt_copysign(0, __b); __recalc = 1; } if (!__recalc && (crt_isinf(__ac) || crt_isinf(__bd) || crt_isinf(__ad) || crt_isinf(__bc))) { if (crt_isnan(__a)) - __a = copysign(0, __a); + __a = crt_copysign(0, __a); if (crt_isnan(__b)) - __b = copysign(0, __b); + __b = crt_copysign(0, __b); if (crt_isnan(__c)) - __c = copysign(0, __c); + __c = crt_copysign(0, __c); if (crt_isnan(__d)) - __d = copysign(0, __d); + __d = crt_copysign(0, __d); __recalc = 1; } if (__recalc) { - __real__ z = INFINITY * (__a * __c - __b * __d); - __imag__ z = INFINITY * (__a * __d + __b * __c); + __real__ z = CRT_INFINITY * (__a * __c - __b * __d); + __imag__ z = CRT_INFINITY * (__a * __d + __b * __c); } } return z; diff --git a/compiler-rt/lib/mulsc3.c b/compiler-rt/lib/mulsc3.c index ec0411a58b84..6d433fbc45f9 100644 --- a/compiler-rt/lib/mulsc3.c +++ b/compiler-rt/lib/mulsc3.c @@ -14,7 +14,6 @@ #include "int_lib.h" #include "int_math.h" -#include /* Returns: the product of a + ib and c + id */ @@ -33,41 +32,41 @@ __mulsc3(float __a, float __b, float __c, float __d) int __recalc = 0; if (crt_isinf(__a) || crt_isinf(__b)) { - __a = copysignf(crt_isinf(__a) ? 1 : 0, __a); - __b = copysignf(crt_isinf(__b) ? 1 : 0, __b); + __a = crt_copysignf(crt_isinf(__a) ? 1 : 0, __a); + __b = crt_copysignf(crt_isinf(__b) ? 1 : 0, __b); if (crt_isnan(__c)) - __c = copysignf(0, __c); + __c = crt_copysignf(0, __c); if (crt_isnan(__d)) - __d = copysignf(0, __d); + __d = crt_copysignf(0, __d); __recalc = 1; } if (crt_isinf(__c) || crt_isinf(__d)) { - __c = copysignf(crt_isinf(__c) ? 1 : 0, __c); - __d = copysignf(crt_isinf(__d) ? 1 : 0, __d); + __c = crt_copysignf(crt_isinf(__c) ? 1 : 0, __c); + __d = crt_copysignf(crt_isinf(__d) ? 1 : 0, __d); if (crt_isnan(__a)) - __a = copysignf(0, __a); + __a = crt_copysignf(0, __a); if (crt_isnan(__b)) - __b = copysignf(0, __b); + __b = crt_copysignf(0, __b); __recalc = 1; } if (!__recalc && (crt_isinf(__ac) || crt_isinf(__bd) || crt_isinf(__ad) || crt_isinf(__bc))) { if (crt_isnan(__a)) - __a = copysignf(0, __a); + __a = crt_copysignf(0, __a); if (crt_isnan(__b)) - __b = copysignf(0, __b); + __b = crt_copysignf(0, __b); if (crt_isnan(__c)) - __c = copysignf(0, __c); + __c = crt_copysignf(0, __c); if (crt_isnan(__d)) - __d = copysignf(0, __d); + __d = crt_copysignf(0, __d); __recalc = 1; } if (__recalc) { - __real__ z = INFINITY * (__a * __c - __b * __d); - __imag__ z = INFINITY * (__a * __d + __b * __c); + __real__ z = CRT_INFINITY * (__a * __c - __b * __d); + __imag__ z = CRT_INFINITY * (__a * __d + __b * __c); } } return z; diff --git a/compiler-rt/lib/mulxc3.c b/compiler-rt/lib/mulxc3.c index ae59d052834e..cec0573688ad 100644 --- a/compiler-rt/lib/mulxc3.c +++ b/compiler-rt/lib/mulxc3.c @@ -16,7 +16,6 @@ #include "int_lib.h" #include "int_math.h" -#include /* Returns: the product of a + ib and c + id */ @@ -35,41 +34,41 @@ __mulxc3(long double __a, long double __b, long double __c, long double __d) int __recalc = 0; if (crt_isinf(__a) || crt_isinf(__b)) { - __a = copysignl(crt_isinf(__a) ? 1 : 0, __a); - __b = copysignl(crt_isinf(__b) ? 1 : 0, __b); + __a = crt_copysignl(crt_isinf(__a) ? 1 : 0, __a); + __b = crt_copysignl(crt_isinf(__b) ? 1 : 0, __b); if (crt_isnan(__c)) - __c = copysignl(0, __c); + __c = crt_copysignl(0, __c); if (crt_isnan(__d)) - __d = copysignl(0, __d); + __d = crt_copysignl(0, __d); __recalc = 1; } if (crt_isinf(__c) || crt_isinf(__d)) { - __c = copysignl(crt_isinf(__c) ? 1 : 0, __c); - __d = copysignl(crt_isinf(__d) ? 1 : 0, __d); + __c = crt_copysignl(crt_isinf(__c) ? 1 : 0, __c); + __d = crt_copysignl(crt_isinf(__d) ? 1 : 0, __d); if (crt_isnan(__a)) - __a = copysignl(0, __a); + __a = crt_copysignl(0, __a); if (crt_isnan(__b)) - __b = copysignl(0, __b); + __b = crt_copysignl(0, __b); __recalc = 1; } if (!__recalc && (crt_isinf(__ac) || crt_isinf(__bd) || crt_isinf(__ad) || crt_isinf(__bc))) { if (crt_isnan(__a)) - __a = copysignl(0, __a); + __a = crt_copysignl(0, __a); if (crt_isnan(__b)) - __b = copysignl(0, __b); + __b = crt_copysignl(0, __b); if (crt_isnan(__c)) - __c = copysignl(0, __c); + __c = crt_copysignl(0, __c); if (crt_isnan(__d)) - __d = copysignl(0, __d); + __d = crt_copysignl(0, __d); __recalc = 1; } if (__recalc) { - __real__ z = INFINITY * (__a * __c - __b * __d); - __imag__ z = INFINITY * (__a * __d + __b * __c); + __real__ z = CRT_INFINITY * (__a * __c - __b * __d); + __imag__ z = CRT_INFINITY * (__a * __d + __b * __c); } } return z; diff --git a/compiler-rt/lib/ppc/divtc3.c b/compiler-rt/lib/ppc/divtc3.c index d718d5a231cd..299128186312 100644 --- a/compiler-rt/lib/ppc/divtc3.c +++ b/compiler-rt/lib/ppc/divtc3.c @@ -4,14 +4,13 @@ #include "DD.h" #include "../int_math.h" -#include -#if !defined(INFINITY) && defined(HUGE_VAL) -#define INFINITY HUGE_VAL -#endif /* INFINITY */ +#if !defined(CRT_INFINITY) && defined(HUGE_VAL) +#define CRT_INFINITY HUGE_VAL +#endif /* CRT_INFINITY */ #define makeFinite(x) { \ - (x).s.hi = __builtin_copysign(crt_isinf((x).s.hi) ? 1.0 : 0.0, (x).s.hi); \ + (x).s.hi = crt_copysign(crt_isinf((x).s.hi) ? 1.0 : 0.0, (x).s.hi); \ (x).s.lo = 0.0; \ } @@ -27,16 +26,16 @@ __divtc3(long double a, long double b, long double c, long double d) DD dDD = { .ld = d }; int ilogbw = 0; - const double logbw = logb(__builtin_fmax( __builtin_fabs(cDD.s.hi), __builtin_fabs(dDD.s.hi) )); + const double logbw = crt_logb(crt_fmax(crt_fabs(cDD.s.hi), crt_fabs(dDD.s.hi) )); if (crt_isfinite(logbw)) { ilogbw = (int)logbw; - cDD.s.hi = scalbn(cDD.s.hi, -ilogbw); - cDD.s.lo = scalbn(cDD.s.lo, -ilogbw); - dDD.s.hi = scalbn(dDD.s.hi, -ilogbw); - dDD.s.lo = scalbn(dDD.s.lo, -ilogbw); + cDD.s.hi = crt_scalbn(cDD.s.hi, -ilogbw); + cDD.s.lo = crt_scalbn(cDD.s.lo, -ilogbw); + dDD.s.hi = crt_scalbn(dDD.s.hi, -ilogbw); + dDD.s.lo = crt_scalbn(dDD.s.lo, -ilogbw); } const long double denom = __gcc_qadd(__gcc_qmul(cDD.ld, cDD.ld), __gcc_qmul(dDD.ld, dDD.ld)); @@ -46,10 +45,10 @@ __divtc3(long double a, long double b, long double c, long double d) DD real = { .ld = __gcc_qdiv(realNumerator, denom) }; DD imag = { .ld = __gcc_qdiv(imagNumerator, denom) }; - real.s.hi = scalbn(real.s.hi, -ilogbw); - real.s.lo = scalbn(real.s.lo, -ilogbw); - imag.s.hi = scalbn(imag.s.hi, -ilogbw); - imag.s.lo = scalbn(imag.s.lo, -ilogbw); + real.s.hi = crt_scalbn(real.s.hi, -ilogbw); + real.s.lo = crt_scalbn(real.s.lo, -ilogbw); + imag.s.hi = crt_scalbn(imag.s.hi, -ilogbw); + imag.s.lo = crt_scalbn(imag.s.lo, -ilogbw); if (crt_isnan(real.s.hi) && crt_isnan(imag.s.hi)) { @@ -60,9 +59,9 @@ __divtc3(long double a, long double b, long double c, long double d) if ((rDD.s.hi == 0.0) && (!crt_isnan(aDD.s.hi) || !crt_isnan(bDD.s.hi))) { - real.s.hi = __builtin_copysign(INFINITY,cDD.s.hi) * aDD.s.hi; + real.s.hi = crt_copysign(CRT_INFINITY,cDD.s.hi) * aDD.s.hi; real.s.lo = 0.0; - imag.s.hi = __builtin_copysign(INFINITY,cDD.s.hi) * bDD.s.hi; + imag.s.hi = crt_copysign(CRT_INFINITY,cDD.s.hi) * bDD.s.hi; imag.s.lo = 0.0; } @@ -71,9 +70,9 @@ __divtc3(long double a, long double b, long double c, long double d) { makeFinite(aDD); makeFinite(bDD); - real.s.hi = INFINITY * (aDD.s.hi*cDD.s.hi + bDD.s.hi*dDD.s.hi); + real.s.hi = CRT_INFINITY * (aDD.s.hi*cDD.s.hi + bDD.s.hi*dDD.s.hi); real.s.lo = 0.0; - imag.s.hi = INFINITY * (bDD.s.hi*cDD.s.hi - aDD.s.hi*dDD.s.hi); + imag.s.hi = CRT_INFINITY * (bDD.s.hi*cDD.s.hi - aDD.s.hi*dDD.s.hi); imag.s.lo = 0.0; } @@ -82,9 +81,9 @@ __divtc3(long double a, long double b, long double c, long double d) { makeFinite(cDD); makeFinite(dDD); - real.s.hi = __builtin_copysign(0.0,(aDD.s.hi*cDD.s.hi + bDD.s.hi*dDD.s.hi)); + real.s.hi = crt_copysign(0.0,(aDD.s.hi*cDD.s.hi + bDD.s.hi*dDD.s.hi)); real.s.lo = 0.0; - imag.s.hi = __builtin_copysign(0.0,(bDD.s.hi*cDD.s.hi - aDD.s.hi*dDD.s.hi)); + imag.s.hi = crt_copysign(0.0,(bDD.s.hi*cDD.s.hi - aDD.s.hi*dDD.s.hi)); imag.s.lo = 0.0; } } diff --git a/compiler-rt/lib/ppc/fixtfdi.c b/compiler-rt/lib/ppc/fixtfdi.c index 43bc15fb1c4e..56e7b3fbf3e5 100644 --- a/compiler-rt/lib/ppc/fixtfdi.c +++ b/compiler-rt/lib/ppc/fixtfdi.c @@ -7,6 +7,7 @@ */ #include "DD.h" +#include "../int_math.h" uint64_t __fixtfdi(long double input) { @@ -64,7 +65,7 @@ uint64_t __fixtfdi(long double input) /* Edge cases handled here: */ /* |x| < 1, result is zero. */ - if (1.0 > __builtin_fabs(x.s.hi)) + if (1.0 > crt_fabs(x.s.hi)) return INT64_C(0); /* x very close to INT64_MIN, care must be taken to see which side we are on. */ diff --git a/compiler-rt/lib/ppc/multc3.c b/compiler-rt/lib/ppc/multc3.c index d04a90174181..edb482b60626 100644 --- a/compiler-rt/lib/ppc/multc3.c +++ b/compiler-rt/lib/ppc/multc3.c @@ -4,20 +4,15 @@ #include "DD.h" #include "../int_math.h" -#include - -#if !defined(INFINITY) && defined(HUGE_VAL) -#define INFINITY HUGE_VAL -#endif /* INFINITY */ #define makeFinite(x) { \ - (x).s.hi = __builtin_copysign(crt_isinf((x).s.hi) ? 1.0 : 0.0, (x).s.hi); \ + (x).s.hi = crt_copysign(crt_isinf((x).s.hi) ? 1.0 : 0.0, (x).s.hi); \ (x).s.lo = 0.0; \ } #define zeroNaN() { \ if (crt_isnan((x).s.hi)) { \ - (x).s.hi = __builtin_copysign(0.0, (x).s.hi); \ + (x).s.hi = crt_copysign(0.0, (x).s.hi); \ (x).s.lo = 0.0; \ } \ } @@ -84,9 +79,9 @@ __multc3(long double a, long double b, long double c, long double d) if (recalc) { - real.s.hi = INFINITY * (aDD.s.hi*cDD.s.hi - bDD.s.hi*dDD.s.hi); + real.s.hi = CRT_INFINITY * (aDD.s.hi*cDD.s.hi - bDD.s.hi*dDD.s.hi); real.s.lo = 0.0; - imag.s.hi = INFINITY * (aDD.s.hi*dDD.s.hi + bDD.s.hi*cDD.s.hi); + imag.s.hi = CRT_INFINITY * (aDD.s.hi*dDD.s.hi + bDD.s.hi*cDD.s.hi); imag.s.lo = 0.0; } } diff --git a/compiler-rt/make/platform/clang_darwin_test_input.c b/compiler-rt/make/platform/clang_darwin_test_input.c index 5a8898b8b42a..b7074b852d88 100644 --- a/compiler-rt/make/platform/clang_darwin_test_input.c +++ b/compiler-rt/make/platform/clang_darwin_test_input.c @@ -2,4 +2,5 @@ #include #include -#include +#include +#include