diff options
Diffstat (limited to 'compiler-rt/lib')
60 files changed, 144 insertions, 115 deletions
diff --git a/compiler-rt/lib/absvdi2.c b/compiler-rt/lib/absvdi2.c index 2ba6687daa8..9c5d4a299ba 100644 --- a/compiler-rt/lib/absvdi2.c +++ b/compiler-rt/lib/absvdi2.c @@ -11,6 +11,7 @@ * *===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if abs(x) < 0 */ -di_int +COMPILER_RT_ABI di_int __absvdi2(di_int a) { const int N = (int)(sizeof(di_int) * CHAR_BIT); diff --git a/compiler-rt/lib/absvsi2.c b/compiler-rt/lib/absvsi2.c index ec5cf69e878..80a1a78984a 100644 --- a/compiler-rt/lib/absvsi2.c +++ b/compiler-rt/lib/absvsi2.c @@ -10,7 +10,8 @@ * This file implements __absvsi2 for the compiler_rt library. * * ===----------------------------------------------------------------------=== - */ + */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if abs(x) < 0 */ -si_int +COMPILER_RT_ABI si_int __absvsi2(si_int a) { const int N = (int)(sizeof(si_int) * CHAR_BIT); diff --git a/compiler-rt/lib/adddf3.c b/compiler-rt/lib/adddf3.c index 16b394c2b0b..3cc997b71a3 100644 --- a/compiler-rt/lib/adddf3.c +++ b/compiler-rt/lib/adddf3.c @@ -12,14 +12,15 @@ // //===----------------------------------------------------------------------===// -#include "int_lib.h" +#include "abi.h" #define DOUBLE_PRECISION #include "fp_lib.h" ARM_EABI_FNALIAS(dadd, adddf3); -fp_t __adddf3(fp_t a, fp_t b) { +COMPILER_RT_ABI fp_t +__adddf3(fp_t a, fp_t b) { rep_t aRep = toRep(a); rep_t bRep = toRep(b); diff --git a/compiler-rt/lib/addsf3.c b/compiler-rt/lib/addsf3.c index d4ee2c4c445..20610ef31fa 100644 --- a/compiler-rt/lib/addsf3.c +++ b/compiler-rt/lib/addsf3.c @@ -12,11 +12,11 @@ // //===----------------------------------------------------------------------===// +#include "abi.h" + #define SINGLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - ARM_EABI_FNALIAS(fadd, addsf3); fp_t __addsf3(fp_t a, fp_t b) { diff --git a/compiler-rt/lib/addvdi3.c b/compiler-rt/lib/addvdi3.c index ded023e0729..51ad397f571 100644 --- a/compiler-rt/lib/addvdi3.c +++ b/compiler-rt/lib/addvdi3.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if a + b overflows */ -di_int +COMPILER_RT_ABI di_int __addvdi3(di_int a, di_int b) { di_int s = a + b; diff --git a/compiler-rt/lib/addvsi3.c b/compiler-rt/lib/addvsi3.c index 7bdb39b97fe..c18f7bd4598 100644 --- a/compiler-rt/lib/addvsi3.c +++ b/compiler-rt/lib/addvsi3.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if a + b overflows */ -si_int +COMPILER_RT_ABI si_int __addvsi3(si_int a, si_int b) { si_int s = a + b; diff --git a/compiler-rt/lib/ashldi3.c b/compiler-rt/lib/ashldi3.c index 65bd7b2027b..adce4e2cb75 100644 --- a/compiler-rt/lib/ashldi3.c +++ b/compiler-rt/lib/ashldi3.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -20,7 +21,7 @@ ARM_EABI_FNALIAS(llsl, ashldi3); -di_int +COMPILER_RT_ABI di_int __ashldi3(di_int a, si_int b) { const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT); diff --git a/compiler-rt/lib/ashrdi3.c b/compiler-rt/lib/ashrdi3.c index cd0855dd7eb..03692a31d82 100644 --- a/compiler-rt/lib/ashrdi3.c +++ b/compiler-rt/lib/ashrdi3.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -20,7 +21,7 @@ ARM_EABI_FNALIAS(lasr, ashrdi3); -di_int +COMPILER_RT_ABI di_int __ashrdi3(di_int a, si_int b) { const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT); diff --git a/compiler-rt/lib/clzdi2.c b/compiler-rt/lib/clzdi2.c index 213277712ac..c281945ffdf 100644 --- a/compiler-rt/lib/clzdi2.c +++ b/compiler-rt/lib/clzdi2.c @@ -1,6 +1,6 @@ /* ===-- clzdi2.c - Implement __clzdi2 -------------------------------------=== * - * The LLVM Compiler Infrastructure + * The LLVM Compiler Infrastructure * * This file is dual licensed under the MIT and the University of Illinois Open * Source Licenses. See LICENSE.TXT for details. @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ /* Precondition: a != 0 */ -si_int +COMPILER_RT_ABI si_int __clzdi2(di_int a) { dwords x; diff --git a/compiler-rt/lib/clzsi2.c b/compiler-rt/lib/clzsi2.c index d99047dec48..d0a6aeabcb3 100644 --- a/compiler-rt/lib/clzsi2.c +++ b/compiler-rt/lib/clzsi2.c @@ -1,6 +1,6 @@ /* ===-- clzsi2.c - Implement __clzsi2 -------------------------------------=== * - * The LLVM Compiler Infrastructure + * The LLVM Compiler Infrastructure * * This file is dual licensed under the MIT and the University of Illinois Open * Source Licenses. See LICENSE.TXT for details. @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ /* Precondition: a != 0 */ -si_int +COMPILER_RT_ABI si_int __clzsi2(si_int a) { su_int x = (su_int)a; diff --git a/compiler-rt/lib/cmpdi2.c b/compiler-rt/lib/cmpdi2.c index 04bd7cf6246..999c3d2a662 100644 --- a/compiler-rt/lib/cmpdi2.c +++ b/compiler-rt/lib/cmpdi2.c @@ -6,20 +6,21 @@ * Source Licenses. See LICENSE.TXT for details. * * ===----------------------------------------------------------------------=== - * + * * This file implements __cmpdi2 for the compiler_rt library. * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -/* Returns: if (a < b) returns 0 +/* Returns: if (a < b) returns 0 * if (a == b) returns 1 * if (a > b) returns 2 */ -si_int +COMPILER_RT_ABI si_int __cmpdi2(di_int a, di_int b) { dwords x; diff --git a/compiler-rt/lib/ctzdi2.c b/compiler-rt/lib/ctzdi2.c index f7ae50fdf09..b3d37d01b0c 100644 --- a/compiler-rt/lib/ctzdi2.c +++ b/compiler-rt/lib/ctzdi2.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ /* Precondition: a != 0 */ -si_int +COMPILER_RT_ABI si_int __ctzdi2(di_int a) { dwords x; diff --git a/compiler-rt/lib/ctzsi2.c b/compiler-rt/lib/ctzsi2.c index 0c738fa591c..2ff0e5d7655 100644 --- a/compiler-rt/lib/ctzsi2.c +++ b/compiler-rt/lib/ctzsi2.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ /* Precondition: a != 0 */ -si_int +COMPILER_RT_ABI si_int __ctzsi2(si_int a) { su_int x = (su_int)a; diff --git a/compiler-rt/lib/divdf3.c b/compiler-rt/lib/divdf3.c index 820b4c85174..925abd509e1 100644 --- a/compiler-rt/lib/divdf3.c +++ b/compiler-rt/lib/divdf3.c @@ -15,12 +15,11 @@ // underflow with correct rounding. // //===----------------------------------------------------------------------===// +#include "abi.h" #define DOUBLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - ARM_EABI_FNALIAS(ddiv, divdf3); fp_t __divdf3(fp_t a, fp_t b) { diff --git a/compiler-rt/lib/divdi3.c b/compiler-rt/lib/divdi3.c index a1b83ea3ece..d62df56f678 100644 --- a/compiler-rt/lib/divdi3.c +++ b/compiler-rt/lib/divdi3.c @@ -11,14 +11,15 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -du_int __udivmoddi4(du_int a, du_int b, du_int* rem); +du_int COMPILER_RT_ABI __udivmoddi4(du_int a, du_int b, du_int* rem); /* Returns: a / b */ -di_int +COMPILER_RT_ABI di_int __divdi3(di_int a, di_int b) { const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1; diff --git a/compiler-rt/lib/divmodsi4.c b/compiler-rt/lib/divmodsi4.c index 2ec3dd4a7e5..4dc1978282a 100644 --- a/compiler-rt/lib/divmodsi4.c +++ b/compiler-rt/lib/divmodsi4.c @@ -11,15 +11,16 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -extern si_int __divsi3(si_int a, si_int b); +extern COMPILER_RT_ABI si_int __divsi3(si_int a, si_int b); /* Returns: a / b, *rem = a % b */ -si_int +COMPILER_RT_ABI si_int __divmodsi4(si_int a, si_int b, si_int* rem) { si_int d = __divsi3(a,b); diff --git a/compiler-rt/lib/divsf3.c b/compiler-rt/lib/divsf3.c index 84e9a37a007..b73330793a0 100644 --- a/compiler-rt/lib/divsf3.c +++ b/compiler-rt/lib/divsf3.c @@ -15,12 +15,11 @@ // underflow with correct rounding. // //===----------------------------------------------------------------------===// +#include "abi.h" #define SINGLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - ARM_EABI_FNALIAS(fdiv, divsf3); fp_t __divsf3(fp_t a, fp_t b) { diff --git a/compiler-rt/lib/divsi3.c b/compiler-rt/lib/divsi3.c index db2b6e80fd6..01ef2747300 100644 --- a/compiler-rt/lib/divsi3.c +++ b/compiler-rt/lib/divsi3.c @@ -11,16 +11,17 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -su_int __udivsi3(su_int n, su_int d); +su_int COMPILER_RT_ABI __udivsi3(su_int n, su_int d); /* Returns: a / b */ ARM_EABI_FNALIAS(idiv, divsi3); -si_int +COMPILER_RT_ABI si_int __divsi3(si_int a, si_int b) { const int bits_in_word_m1 = (int)(sizeof(si_int) * CHAR_BIT) - 1; diff --git a/compiler-rt/lib/extendsfdf2.c b/compiler-rt/lib/extendsfdf2.c index a63015430b1..c0b628dffcd 100644 --- a/compiler-rt/lib/extendsfdf2.c +++ b/compiler-rt/lib/extendsfdf2.c @@ -41,7 +41,7 @@ #include <stdint.h> #include <limits.h> -#include "int_lib.h" +#include "abi.h" typedef float src_t; typedef uint32_t src_rep_t; diff --git a/compiler-rt/lib/ffsdi2.c b/compiler-rt/lib/ffsdi2.c index 8a1c68cb323..89f1b7bf478 100644 --- a/compiler-rt/lib/ffsdi2.c +++ b/compiler-rt/lib/ffsdi2.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -18,7 +19,7 @@ * the value zero if a is zero. The least significant bit is index one. */ -si_int +COMPILER_RT_ABI si_int __ffsdi2(di_int a) { dwords x; diff --git a/compiler-rt/lib/fixdfdi.c b/compiler-rt/lib/fixdfdi.c index c6732dbbb72..85a456d1122 100644 --- a/compiler-rt/lib/fixdfdi.c +++ b/compiler-rt/lib/fixdfdi.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" diff --git a/compiler-rt/lib/fixsfdi.c b/compiler-rt/lib/fixsfdi.c index e32b85fd6f6..d80e33eb74c 100644 --- a/compiler-rt/lib/fixsfdi.c +++ b/compiler-rt/lib/fixsfdi.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -25,7 +26,7 @@ ARM_EABI_FNALIAS(d2lz, fixsfdi); -di_int +COMPILER_RT_ABI di_int __fixsfdi(float a) { float_bits fb; diff --git a/compiler-rt/lib/fixsfsi.c b/compiler-rt/lib/fixsfsi.c index 4cdc47f7b4f..67749a56778 100644 --- a/compiler-rt/lib/fixsfsi.c +++ b/compiler-rt/lib/fixsfsi.c @@ -12,16 +12,15 @@ // conversion is undefined for out of range values in the C standard. // //===----------------------------------------------------------------------===// +#include "abi.h" #define SINGLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - ARM_EABI_FNALIAS(f2iz, fixsfsi); -int __fixsfsi(fp_t a) { - +COMPILER_RT_ABI int +__fixsfsi(fp_t a) { // Break a into sign, exponent, significand const rep_t aRep = toRep(a); const rep_t aAbs = aRep & absMask; diff --git a/compiler-rt/lib/fixunsdfdi.c b/compiler-rt/lib/fixunsdfdi.c index 1721d333912..d80b84a8d66 100644 --- a/compiler-rt/lib/fixunsdfdi.c +++ b/compiler-rt/lib/fixunsdfdi.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -28,7 +29,7 @@ ARM_EABI_FNALIAS(d2ulz, fixunsdfdi); -du_int +COMPILER_RT_ABI du_int __fixunsdfdi(double a) { double_bits fb; diff --git a/compiler-rt/lib/fixunsdfsi.c b/compiler-rt/lib/fixunsdfsi.c index 7a803f2d39d..ecdfb5d622e 100644 --- a/compiler-rt/lib/fixunsdfsi.c +++ b/compiler-rt/lib/fixunsdfsi.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -28,7 +29,7 @@ ARM_EABI_FNALIAS(d2uiz, fixunsdfsi); -su_int +COMPILER_RT_ABI su_int __fixunsdfsi(double a) { double_bits fb; diff --git a/compiler-rt/lib/fixunssfdi.c b/compiler-rt/lib/fixunssfdi.c index 3d7d95c8642..150642045bd 100644 --- a/compiler-rt/lib/fixunssfdi.c +++ b/compiler-rt/lib/fixunssfdi.c @@ -11,9 +11,9 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" - /* Returns: convert a to a unsigned long long, rounding toward zero. * Negative values all become zero. */ @@ -26,11 +26,9 @@ /* seee eeee emmm mmmm mmmm mmmm mmmm mmmm */ -#include "int_lib.h" - ARM_EABI_FNALIAS(f2ulz, fixunssfdi); -du_int +COMPILER_RT_ABI du_int __fixunssfdi(float a) { float_bits fb; diff --git a/compiler-rt/lib/fixunssfsi.c b/compiler-rt/lib/fixunssfsi.c index b822ffe730a..dbaa5115b2b 100644 --- a/compiler-rt/lib/fixunssfsi.c +++ b/compiler-rt/lib/fixunssfsi.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -28,7 +29,7 @@ ARM_EABI_FNALIAS(f2uiz, fixunssfsi); -su_int +COMPILER_RT_ABI su_int __fixunssfsi(float a) { float_bits fb; diff --git a/compiler-rt/lib/floatdidf.c b/compiler-rt/lib/floatdidf.c index 1633f738408..5ba95263503 100644 --- a/compiler-rt/lib/floatdidf.c +++ b/compiler-rt/lib/floatdidf.c @@ -11,6 +11,7 @@ * *===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <float.h> @@ -23,8 +24,6 @@ /* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */ -#include "int_lib.h" - ARM_EABI_FNALIAS(l2d, floatdidf); #ifndef __SOFT_FP__ @@ -33,7 +32,7 @@ ARM_EABI_FNALIAS(l2d, floatdidf); */ #include <stdint.h> -double +COMPILER_RT_ABI double __floatdidf(di_int a) { static const double twop52 = 0x1.0p52; @@ -53,7 +52,7 @@ __floatdidf(di_int a) * set, and we don't want to code-gen to an unknown soft-float implementation. */ -double +COMPILER_RT_ABI double __floatdidf(di_int a) { if (a == 0) diff --git a/compiler-rt/lib/floatdisf.c b/compiler-rt/lib/floatdisf.c index cdede6c75d1..4dc13cab477 100644 --- a/compiler-rt/lib/floatdisf.c +++ b/compiler-rt/lib/floatdisf.c @@ -12,7 +12,7 @@ *===----------------------------------------------------------------------=== */ -#include "int_lib.h" +#include "abi.h" #include <float.h> /* Returns: convert a to a float, rounding toward even.*/ @@ -27,7 +27,7 @@ ARM_EABI_FNALIAS(l2f, floatdisf); -float +COMPILER_RT_ABI float __floatdisf(di_int a) { if (a == 0) diff --git a/compiler-rt/lib/floatundidf.c b/compiler-rt/lib/floatundidf.c index 64bec04e5b0..e74e9d8d2fd 100644 --- a/compiler-rt/lib/floatundidf.c +++ b/compiler-rt/lib/floatundidf.c @@ -12,7 +12,7 @@ * ===----------------------------------------------------------------------=== */ -#include "int_lib.h" +#include "abi.h" #include <float.h> /* Returns: convert a to a double, rounding toward even. */ @@ -34,7 +34,7 @@ ARM_EABI_FNALIAS(ul2d, floatundidf); #include <stdint.h> -double +COMPILER_RT_ABI double __floatundidf(du_int a) { static const double twop52 = 0x1.0p52; @@ -56,7 +56,7 @@ __floatundidf(du_int a) * set, and we don't want to code-gen to an unknown soft-float implementation. */ -double +COMPILER_RT_ABI double __floatundidf(du_int a) { if (a == 0) diff --git a/compiler-rt/lib/floatundisf.c b/compiler-rt/lib/floatundisf.c index 2d2a51458ac..eea45a74594 100644 --- a/compiler-rt/lib/floatundisf.c +++ b/compiler-rt/lib/floatundisf.c @@ -12,7 +12,7 @@ *===----------------------------------------------------------------------=== */ -#include "int_lib.h" +#include "abi.h" #include <float.h> /* Returns: convert a to a float, rounding toward even. */ @@ -27,7 +27,7 @@ ARM_EABI_FNALIAS(ul2f, floatundisf); -float +COMPILER_RT_ABI float __floatundisf(du_int a) { if (a == 0) diff --git a/compiler-rt/lib/int_lib.h b/compiler-rt/lib/int_lib.h index c0224ce7498..e1fd6b73dc7 100644 --- a/compiler-rt/lib/int_lib.h +++ b/compiler-rt/lib/int_lib.h @@ -37,13 +37,6 @@ extern void panic (const char *, ...); #define INFINITY HUGE_VAL #endif /* INFINITY */ -#if __ARM_EABI__ -# define ARM_EABI_FNALIAS(aeabi_name, name) \ - void __aeabi_##aeabi_name() __attribute__((alias("__" #name))); -#else -# define ARM_EABI_FNALIAS(aeabi_name, name) -#endif - typedef int si_int; typedef unsigned su_int; diff --git a/compiler-rt/lib/lshrdi3.c b/compiler-rt/lib/lshrdi3.c index 7468cb739e3..911edb19142 100644 --- a/compiler-rt/lib/lshrdi3.c +++ b/compiler-rt/lib/lshrdi3.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -20,7 +21,7 @@ ARM_EABI_FNALIAS(llsr, lshrdi3); -di_int +COMPILER_RT_ABI di_int __lshrdi3(di_int a, si_int b) { const int bits_in_word = (int)(sizeof(si_int) * CHAR_BIT); diff --git a/compiler-rt/lib/moddi3.c b/compiler-rt/lib/moddi3.c index 3b350ddc3fb..af0a80832ae 100644 --- a/compiler-rt/lib/moddi3.c +++ b/compiler-rt/lib/moddi3.c @@ -11,14 +11,15 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -du_int __udivmoddi4(du_int a, du_int b, du_int* rem); +COMPILER_RT_ABI du_int __udivmoddi4(du_int a, du_int b, du_int* rem); /* Returns: a % b */ -di_int +COMPILER_RT_ABI di_int __moddi3(di_int a, di_int b) { const int bits_in_dword_m1 = (int)(sizeof(di_int) * CHAR_BIT) - 1; diff --git a/compiler-rt/lib/modsi3.c b/compiler-rt/lib/modsi3.c index 70d38a6b5d5..05ce806f710 100644 --- a/compiler-rt/lib/modsi3.c +++ b/compiler-rt/lib/modsi3.c @@ -11,14 +11,15 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -su_int __divsi3(si_int a, si_int b); +su_int COMPILER_RT_ABI __divsi3(si_int a, si_int b); /* Returns: a % b */ -si_int +COMPILER_RT_ABI si_int __modsi3(si_int a, si_int b) { return a - __divsi3(a, b) * b; diff --git a/compiler-rt/lib/muldf3.c b/compiler-rt/lib/muldf3.c index 5cfe62bca0c..f402cfb39d3 100644 --- a/compiler-rt/lib/muldf3.c +++ b/compiler-rt/lib/muldf3.c @@ -11,15 +11,15 @@ // with the IEEE-754 default rounding (to nearest, ties to even). // //===----------------------------------------------------------------------===// +#include "abi.h" #define DOUBLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - ARM_EABI_FNALIAS(dmul, muldf3); -fp_t __muldf3(fp_t a, fp_t b) { +COMPILER_RT_ABI fp_t +__muldf3(fp_t a, fp_t b) { const unsigned int aExponent = toRep(a) >> significandBits & maxExponent; const unsigned int bExponent = toRep(b) >> significandBits & maxExponent; diff --git a/compiler-rt/lib/muldi3.c b/compiler-rt/lib/muldi3.c index 537b7357fbe..e6322bf5df8 100644 --- a/compiler-rt/lib/muldi3.c +++ b/compiler-rt/lib/muldi3.c @@ -10,7 +10,8 @@ * This file implements __muldi3 for the compiler_rt library. * * ===----------------------------------------------------------------------=== - */ + */ +#include "abi.h" #include "int_lib.h" @@ -42,7 +43,7 @@ __muldsi3(su_int a, su_int b) ARM_EABI_FNALIAS(lmul, muldi3); -di_int +COMPILER_RT_ABI di_int __muldi3(di_int a, di_int b) { dwords x; diff --git a/compiler-rt/lib/mulsf3.c b/compiler-rt/lib/mulsf3.c index 96dcfd9e454..bf46e148167 100644 --- a/compiler-rt/lib/mulsf3.c +++ b/compiler-rt/lib/mulsf3.c @@ -11,15 +11,15 @@ // with the IEEE-754 default rounding (to nearest, ties to even). // //===----------------------------------------------------------------------===// +#include "abi.h" #define SINGLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - ARM_EABI_FNALIAS(fmul, mulsf3); -fp_t __mulsf3(fp_t a, fp_t b) { +COMPILER_RT_ABI fp_t +__mulsf3(fp_t a, fp_t b) { const unsigned int aExponent = toRep(a) >> significandBits & maxExponent; const unsigned int bExponent = toRep(b) >> significandBits & maxExponent; diff --git a/compiler-rt/lib/negdf2.c b/compiler-rt/lib/negdf2.c index 9344ae105e0..b47f3978b41 100644 --- a/compiler-rt/lib/negdf2.c +++ b/compiler-rt/lib/negdf2.c @@ -10,12 +10,11 @@ // This file implements double-precision soft-float negation. // //===----------------------------------------------------------------------===// +#include "abi.h" #define DOUBLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - ARM_EABI_FNALIAS(dneg, negdf2); fp_t __negdf2(fp_t a) { diff --git a/compiler-rt/lib/negsf2.c b/compiler-rt/lib/negsf2.c index 6b0e62c5bb3..98f9fc0c0a3 100644 --- a/compiler-rt/lib/negsf2.c +++ b/compiler-rt/lib/negsf2.c @@ -10,14 +10,14 @@ // This file implements single-precision soft-float negation. // //===----------------------------------------------------------------------===// +#include "abi.h" #define SINGLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - ARM_EABI_FNALIAS(fneg, negsf2); -fp_t __negsf2(fp_t a) { +COMPILER_RT_ABI fp_t +__negsf2(fp_t a) { return fromRep(toRep(a) ^ signBit); } diff --git a/compiler-rt/lib/negvdi2.c b/compiler-rt/lib/negvdi2.c index 2851d26f479..aafaa9dc5ea 100644 --- a/compiler-rt/lib/negvdi2.c +++ b/compiler-rt/lib/negvdi2.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if -a overflows */ -di_int +COMPILER_RT_ABI di_int __negvdi2(di_int a) { const di_int MIN = (di_int)1 << ((int)(sizeof(di_int) * CHAR_BIT)-1); diff --git a/compiler-rt/lib/negvsi2.c b/compiler-rt/lib/negvsi2.c index 1a833476059..559ea18e48b 100644 --- a/compiler-rt/lib/negvsi2.c +++ b/compiler-rt/lib/negvsi2.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if -a overflows */ -si_int +COMPILER_RT_ABI si_int __negvsi2(si_int a) { const si_int MIN = (si_int)1 << ((int)(sizeof(si_int) * CHAR_BIT)-1); diff --git a/compiler-rt/lib/paritydi2.c b/compiler-rt/lib/paritydi2.c index 9d349b8c241..e7bebf68524 100644 --- a/compiler-rt/lib/paritydi2.c +++ b/compiler-rt/lib/paritydi2.c @@ -11,14 +11,15 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" /* Returns: 1 if number of bits is odd else returns 0 */ -si_int __paritysi2(si_int a); +si_int COMPILER_RT_ABI __paritysi2(si_int a); -si_int +COMPILER_RT_ABI si_int __paritydi2(di_int a) { dwords x; diff --git a/compiler-rt/lib/paritysi2.c b/compiler-rt/lib/paritysi2.c index 76de328e1ea..64d509fa795 100644 --- a/compiler-rt/lib/paritysi2.c +++ b/compiler-rt/lib/paritysi2.c @@ -11,12 +11,13 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" /* Returns: 1 if number of bits is odd else returns 0 */ -si_int +COMPILER_RT_ABI si_int __paritysi2(si_int a) { su_int x = (su_int)a; diff --git a/compiler-rt/lib/popcountdi2.c b/compiler-rt/lib/popcountdi2.c index 0778a66c81d..136fc0486fd 100644 --- a/compiler-rt/lib/popcountdi2.c +++ b/compiler-rt/lib/popcountdi2.c @@ -11,12 +11,13 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" /* Returns: count of 1 bits */ -si_int +COMPILER_RT_ABI si_int __popcountdi2(di_int a) { du_int x2 = (du_int)a; diff --git a/compiler-rt/lib/popcountsi2.c b/compiler-rt/lib/popcountsi2.c index e425b0b8638..bfaa3fff2ee 100644 --- a/compiler-rt/lib/popcountsi2.c +++ b/compiler-rt/lib/popcountsi2.c @@ -11,12 +11,13 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" /* Returns: count of 1 bits */ -si_int +COMPILER_RT_ABI si_int __popcountsi2(si_int a) { su_int x = (su_int)a; diff --git a/compiler-rt/lib/powidf2.c b/compiler-rt/lib/powidf2.c index 0200e1eab0b..2e211eb3dcb 100644 --- a/compiler-rt/lib/powidf2.c +++ b/compiler-rt/lib/powidf2.c @@ -11,12 +11,13 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" /* Returns: a ^ b */ -double +COMPILER_RT_ABI double __powidf2(double a, si_int b) { const int recip = b < 0; diff --git a/compiler-rt/lib/powisf2.c b/compiler-rt/lib/powisf2.c index c834b969695..e6b43b3a3cc 100644 --- a/compiler-rt/lib/powisf2.c +++ b/compiler-rt/lib/powisf2.c @@ -11,12 +11,13 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" /* Returns: a ^ b */ -float +COMPILER_RT_ABI float __powisf2(float a, si_int b) { const int recip = b < 0; diff --git a/compiler-rt/lib/subdf3.c b/compiler-rt/lib/subdf3.c index d9ed494f4d1..825e3c66297 100644 --- a/compiler-rt/lib/subdf3.c +++ b/compiler-rt/lib/subdf3.c @@ -11,19 +11,19 @@ // IEEE-754 default rounding (to nearest, ties to even). // //===----------------------------------------------------------------------===// +#include "abi.h" #define DOUBLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - -fp_t __adddf3(fp_t a, fp_t b); +fp_t COMPILER_RT_ABI __adddf3(fp_t a, fp_t b); ARM_EABI_FNALIAS(dsub, subdf3); // Subtraction; flip the sign bit of b and add. -fp_t __subdf3(fp_t a, fp_t b) { +COMPILER_RT_ABI fp_t +__subdf3(fp_t a, fp_t b) { return __adddf3(a, fromRep(toRep(b) ^ signBit)); } diff --git a/compiler-rt/lib/subsf3.c b/compiler-rt/lib/subsf3.c index 5345eb23a95..625376acc37 100644 --- a/compiler-rt/lib/subsf3.c +++ b/compiler-rt/lib/subsf3.c @@ -11,18 +11,18 @@ // IEEE-754 default rounding (to nearest, ties to even). // //===----------------------------------------------------------------------===// +#include "abi.h" #define SINGLE_PRECISION #include "fp_lib.h" -#include "int_lib.h" - -fp_t __addsf3(fp_t a, fp_t b); +fp_t COMPILER_RT_ABI __addsf3(fp_t a, fp_t b); ARM_EABI_FNALIAS(fsub, subsf3); // Subtraction; flip the sign bit of b and add. -fp_t __subsf3(fp_t a, fp_t b) { +COMPILER_RT_ABI fp_t +__subsf3(fp_t a, fp_t b) { return __addsf3(a, fromRep(toRep(b) ^ signBit)); } diff --git a/compiler-rt/lib/subvdi3.c b/compiler-rt/lib/subvdi3.c index 17f55d00059..36b51ad979a 100644 --- a/compiler-rt/lib/subvdi3.c +++ b/compiler-rt/lib/subvdi3.c @@ -1,6 +1,6 @@ /* ===-- subvdi3.c - Implement __subvdi3 -----------------------------------=== * - * The LLVM Compiler Infrastructure + * The LLVM Compiler Infrastructure * * This file is dual licensed under the MIT and the University of Illinois Open * Source Licenses. See LICENSE.TXT for details. @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if a - b overflows */ -di_int +COMPILER_RT_ABI di_int __subvdi3(di_int a, di_int b) { di_int s = a - b; diff --git a/compiler-rt/lib/subvsi3.c b/compiler-rt/lib/subvsi3.c index 51bb454475a..03983f747e4 100644 --- a/compiler-rt/lib/subvsi3.c +++ b/compiler-rt/lib/subvsi3.c @@ -1,6 +1,6 @@ /* ===-- subvsi3.c - Implement __subvsi3 -----------------------------------=== * - * The LLVM Compiler Infrastructure + * The LLVM Compiler Infrastructure * * This file is dual licensed under the MIT and the University of Illinois Open * Source Licenses. See LICENSE.TXT for details. @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" #include <stdlib.h> @@ -19,7 +20,7 @@ /* Effects: aborts if a - b overflows */ -si_int +COMPILER_RT_ABI si_int __subvsi3(si_int a, si_int b) { si_int s = a - b; diff --git a/compiler-rt/lib/truncdfsf2.c b/compiler-rt/lib/truncdfsf2.c index f3de21959c0..1dbf02f5ef6 100644 --- a/compiler-rt/lib/truncdfsf2.c +++ b/compiler-rt/lib/truncdfsf2.c @@ -41,7 +41,7 @@ #include <limits.h> #include <stdbool.h> -#include "int_lib.h" +#include "abi.h" typedef double src_t; typedef uint64_t src_rep_t; @@ -70,7 +70,8 @@ static inline dst_t dstFromRep(dst_rep_t x) { ARM_EABI_FNALIAS(d2f, truncdfsf2); -dst_t __truncdfsf2(src_t a) { +COMPILER_RT_ABI dst_t +__truncdfsf2(src_t a) { // Various constants whose values follow from the type parameters. // Any reasonable optimizer will fold and propagate all of these. diff --git a/compiler-rt/lib/ucmpdi2.c b/compiler-rt/lib/ucmpdi2.c index ead726723aa..f2d3f99f880 100644 --- a/compiler-rt/lib/ucmpdi2.c +++ b/compiler-rt/lib/ucmpdi2.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -19,7 +20,7 @@ * if (a > b) returns 2 */ -si_int +COMPILER_RT_ABI si_int __ucmpdi2(du_int a, du_int b) { udwords x; diff --git a/compiler-rt/lib/udivdi3.c b/compiler-rt/lib/udivdi3.c index 642f2fb9c25..bbd551ac711 100644 --- a/compiler-rt/lib/udivdi3.c +++ b/compiler-rt/lib/udivdi3.c @@ -11,14 +11,15 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -du_int __udivmoddi4(du_int a, du_int b, du_int* rem); +du_int COMPILER_RT_ABI __udivmoddi4(du_int a, du_int b, du_int* rem); /* Returns: a / b */ -du_int +COMPILER_RT_ABI du_int __udivdi3(du_int a, du_int b) { return __udivmoddi4(a, b, 0); diff --git a/compiler-rt/lib/udivmoddi4.c b/compiler-rt/lib/udivmoddi4.c index 6b8c4e8196e..c5db21cf0c8 100644 --- a/compiler-rt/lib/udivmoddi4.c +++ b/compiler-rt/lib/udivmoddi4.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -22,7 +23,7 @@ ARM_EABI_FNALIAS(uldivmod, udivmoddi4); -du_int +COMPILER_RT_ABI du_int __udivmoddi4(du_int a, du_int b, du_int* rem) { const unsigned n_uword_bits = sizeof(su_int) * CHAR_BIT; diff --git a/compiler-rt/lib/udivmodsi4.c b/compiler-rt/lib/udivmodsi4.c index 38b5bd43de6..2a3ee27f8dc 100644 --- a/compiler-rt/lib/udivmodsi4.c +++ b/compiler-rt/lib/udivmodsi4.c @@ -11,20 +11,21 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -extern su_int __udivsi3(su_int n, su_int d); +extern su_int COMPILER_RT_ABI __udivsi3(su_int n, su_int d); /* Returns: a / b, *rem = a % b */ -su_int +COMPILER_RT_ABI su_int __udivmodsi4(su_int a, su_int b, su_int* rem) { si_int d = __udivsi3(a,b); *rem = a - (d*b); - return d; + return d; } diff --git a/compiler-rt/lib/udivsi3.c b/compiler-rt/lib/udivsi3.c index 8a5695d2024..721ae89e4bf 100644 --- a/compiler-rt/lib/udivsi3.c +++ b/compiler-rt/lib/udivsi3.c @@ -11,6 +11,7 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" @@ -20,7 +21,7 @@ ARM_EABI_FNALIAS(uidiv, udivsi3); -su_int +COMPILER_RT_ABI su_int __udivsi3(su_int n, su_int d) { const unsigned n_uword_bits = sizeof(su_int) * CHAR_BIT; diff --git a/compiler-rt/lib/umoddi3.c b/compiler-rt/lib/umoddi3.c index adb4b0e75df..9de1a64fdad 100644 --- a/compiler-rt/lib/umoddi3.c +++ b/compiler-rt/lib/umoddi3.c @@ -11,14 +11,15 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" -du_int __udivmoddi4(du_int a, du_int b, du_int* rem); +du_int COMPILER_RT_ABI __udivmoddi4(du_int a, du_int b, du_int* rem); /* Returns: a % b */ -du_int +COMPILER_RT_ABI du_int __umoddi3(du_int a, du_int b) { du_int r; diff --git a/compiler-rt/lib/umodsi3.c b/compiler-rt/lib/umodsi3.c index d3aaaeae000..569b7fcb168 100644 --- a/compiler-rt/lib/umodsi3.c +++ b/compiler-rt/lib/umodsi3.c @@ -11,14 +11,15 @@ * * ===----------------------------------------------------------------------=== */ +#include "abi.h" #include "int_lib.h" /* Returns: a % b */ -su_int __udivsi3(su_int a, su_int b); +su_int COMPILER_RT_ABI __udivsi3(su_int a, su_int b); -su_int +COMPILER_RT_ABI su_int __umodsi3(su_int a, su_int b) { return a - __udivsi3(a, b) * b; |