diff options
| author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-10-07 02:39:13 +0000 |
|---|---|---|
| committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-10-07 02:39:13 +0000 |
| commit | 48d4e4dd3582e9b480a1969cb554437f071b57bc (patch) | |
| tree | 18617f04bae1630f3af5946c4d1c99969c8618ca | |
| parent | 59cca5dc2976cb16693fb3b7dfa7aee576837501 (diff) | |
| download | bcm5719-llvm-48d4e4dd3582e9b480a1969cb554437f071b57bc.tar.gz bcm5719-llvm-48d4e4dd3582e9b480a1969cb554437f071b57bc.zip | |
builtins: rework use of DEFINE_COMPILERRT_THUMB_FUNCTION
This is simply to help clarity of the code. The functions are built as thumb
only if Thumb2 is available (__ARM_ARCH_ISA_THUMB == 2). Sink the selection
into the location of the definition and make DEFINE_COMPILERRT_THUMB_FUNCTION
always define a thumb function while DEFINE_COMPILERRT_FUNCTION always selects
the default.
Since the .thumb_func directive is always available (at least on Linux, Windows,
and BSD), sinking the macro right into the macro works just as well.
No functional change intended.
llvm-svn: 219182
| -rw-r--r-- | compiler-rt/lib/builtins/arm/bswapdi2.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/bswapsi2.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/clzdi2.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/clzsi2.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/divmodsi4.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/divsi3.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/modsi3.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/udivmodsi4.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/udivsi3.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/arm/umodsi3.S | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/builtins/assembly.h | 12 |
11 files changed, 44 insertions, 8 deletions
diff --git a/compiler-rt/lib/builtins/arm/bswapdi2.S b/compiler-rt/lib/builtins/arm/bswapdi2.S index 33797ec64df..86f3bba8c29 100644 --- a/compiler-rt/lib/builtins/arm/bswapdi2.S +++ b/compiler-rt/lib/builtins/arm/bswapdi2.S @@ -21,7 +21,11 @@ // Reverse all the bytes in a 64-bit integer. // .p2align 2 +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__bswapdi2) +#else +DEFINE_COMPILERRT_FUNCTION(__bswapdi2) +#endif #if __ARM_ARCH < 6 // before armv6 does not have "rev" instruction // r2 = rev(r0) diff --git a/compiler-rt/lib/builtins/arm/bswapsi2.S b/compiler-rt/lib/builtins/arm/bswapsi2.S index cafb8b1bfa3..59ba8158fd5 100644 --- a/compiler-rt/lib/builtins/arm/bswapsi2.S +++ b/compiler-rt/lib/builtins/arm/bswapsi2.S @@ -21,7 +21,11 @@ // Reverse all the bytes in a 32-bit integer. // .p2align 2 +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__bswapsi2) +#else +DEFINE_COMPILERRT_FUNCTION(__bswapsi2) +#endif #if __ARM_ARCH < 6 // before armv6 does not have "rev" instruction eor r1, r0, r0, ror #16 diff --git a/compiler-rt/lib/builtins/arm/clzdi2.S b/compiler-rt/lib/builtins/arm/clzdi2.S index e52848bd8e2..a55abac0469 100644 --- a/compiler-rt/lib/builtins/arm/clzdi2.S +++ b/compiler-rt/lib/builtins/arm/clzdi2.S @@ -21,7 +21,11 @@ .p2align 2 +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__clzdi2) +#else +DEFINE_COMPILERRT_FUNCTION(__clzdi2) +#endif #ifdef __ARM_FEATURE_CLZ #ifdef __ARMEB__ cmp r0, 0 diff --git a/compiler-rt/lib/builtins/arm/clzsi2.S b/compiler-rt/lib/builtins/arm/clzsi2.S index da8b2f949a0..1cd379bfb0a 100644 --- a/compiler-rt/lib/builtins/arm/clzsi2.S +++ b/compiler-rt/lib/builtins/arm/clzsi2.S @@ -20,7 +20,11 @@ #endif .p2align 2 +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__clzsi2) +#else +DEFINE_COMPILERRT_FUNCTION(__clzsi2) +#endif #ifdef __ARM_FEATURE_CLZ clz r0, r0 JMP(lr) diff --git a/compiler-rt/lib/builtins/arm/divmodsi4.S b/compiler-rt/lib/builtins/arm/divmodsi4.S index 0477c0a36e8..646b9ab78fb 100644 --- a/compiler-rt/lib/builtins/arm/divmodsi4.S +++ b/compiler-rt/lib/builtins/arm/divmodsi4.S @@ -32,7 +32,11 @@ @ value is the quotient, the remainder is placed in the variable. .p2align 3 +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__divmodsi4) +#else +DEFINE_COMPILERRT_FUNCTION(__divmodsi4) +#endif #if __ARM_ARCH_EXT_IDIV__ tst r1, r1 beq LOCAL_LABEL(divzero) diff --git a/compiler-rt/lib/builtins/arm/divsi3.S b/compiler-rt/lib/builtins/arm/divsi3.S index b4337134580..adf8f94fc7b 100644 --- a/compiler-rt/lib/builtins/arm/divsi3.S +++ b/compiler-rt/lib/builtins/arm/divsi3.S @@ -33,7 +33,11 @@ DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_idiv, __divsi3) @ int __divsi3(int divident, int divisor) @ Calculate and return the quotient of the (signed) division. +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__divsi3) +#else +DEFINE_COMPILERRT_FUNCTION(__divsi3) +#endif #if __ARM_ARCH_EXT_IDIV__ tst r1,r1 beq LOCAL_LABEL(divzero) diff --git a/compiler-rt/lib/builtins/arm/modsi3.S b/compiler-rt/lib/builtins/arm/modsi3.S index beff9f1ff06..295a227d862 100644 --- a/compiler-rt/lib/builtins/arm/modsi3.S +++ b/compiler-rt/lib/builtins/arm/modsi3.S @@ -30,7 +30,11 @@ @ Calculate and return the remainder of the (signed) division. .p2align 3 +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__modsi3) +#else +DEFINE_COMPILERRT_FUNCTION(__modsi3) +#endif #if __ARM_ARCH_EXT_IDIV__ tst r1, r1 beq LOCAL_LABEL(divzero) diff --git a/compiler-rt/lib/builtins/arm/udivmodsi4.S b/compiler-rt/lib/builtins/arm/udivmodsi4.S index b40db6859fd..85b84936c4b 100644 --- a/compiler-rt/lib/builtins/arm/udivmodsi4.S +++ b/compiler-rt/lib/builtins/arm/udivmodsi4.S @@ -27,7 +27,11 @@ @ value is the quotient, the remainder is placed in the variable. .p2align 2 +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__udivmodsi4) +#else +DEFINE_COMPILERRT_FUNCTION(__udivmodsi4) +#endif #if __ARM_ARCH_EXT_IDIV__ tst r1, r1 beq LOCAL_LABEL(divby0) diff --git a/compiler-rt/lib/builtins/arm/udivsi3.S b/compiler-rt/lib/builtins/arm/udivsi3.S index 93279b66419..165b2b58acb 100644 --- a/compiler-rt/lib/builtins/arm/udivsi3.S +++ b/compiler-rt/lib/builtins/arm/udivsi3.S @@ -27,7 +27,11 @@ DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_uidiv, __udivsi3) @ unsigned int __udivsi3(unsigned int divident, unsigned int divisor) @ Calculate and return the quotient of the (unsigned) division. +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__udivsi3) +#else +DEFINE_COMPILERRT_FUNCTION(__udivsi3) +#endif #if __ARM_ARCH_EXT_IDIV__ tst r1, r1 beq LOCAL_LABEL(divby0) diff --git a/compiler-rt/lib/builtins/arm/umodsi3.S b/compiler-rt/lib/builtins/arm/umodsi3.S index 898e28a8c01..9e7a148ce46 100644 --- a/compiler-rt/lib/builtins/arm/umodsi3.S +++ b/compiler-rt/lib/builtins/arm/umodsi3.S @@ -24,7 +24,11 @@ @ Calculate and return the remainder of the (unsigned) division. .p2align 2 +#if __ARM_ARCH_ISA_THUMB == 2 DEFINE_COMPILERRT_THUMB_FUNCTION(__umodsi3) +#else +DEFINE_COMPILERRT_FUNCTION(__umodsi3) +#endif #if __ARM_ARCH_EXT_IDIV__ tst r1, r1 beq LOCAL_LABEL(divby0) diff --git a/compiler-rt/lib/builtins/assembly.h b/compiler-rt/lib/builtins/assembly.h index 2828b156a55..3b0da228d81 100644 --- a/compiler-rt/lib/builtins/assembly.h +++ b/compiler-rt/lib/builtins/assembly.h @@ -28,15 +28,11 @@ // tell linker it can break up file at label boundaries #define FILE_LEVEL_DIRECTIVE .subsections_via_symbols #define SYMBOL_IS_FUNC(name) -#if __ARM_ARCH_ISA_THUMB == 2 -#define THUMB_FUNC .thumb_func -#endif #elif defined(__ELF__) #define HIDDEN(name) .hidden name #define LOCAL_LABEL(name) .L_##name -#define THUMB_FUNC #define FILE_LEVEL_DIRECTIVE #if defined(__arm__) #define SYMBOL_IS_FUNC(name) .type name,%function @@ -48,13 +44,13 @@ #define HIDDEN_DIRECTIVE(name) #define LOCAL_LABEL(name) .L ## name +#define FILE_LEVEL_DIRECTIVE #define SYMBOL_IS_FUNC(name) \ .def name SEPARATOR \ .scl 2 SEPARATOR \ .type 32 SEPARATOR \ .endef -#define THUMB_FUNC -#define FILE_LEVEL_DIRECTIVE + #endif #if defined(__arm__) @@ -110,9 +106,9 @@ #define DEFINE_COMPILERRT_THUMB_FUNCTION(name) \ FILE_LEVEL_DIRECTIVE SEPARATOR \ .globl SYMBOL_NAME(name) SEPARATOR \ - THUMB_FUNC \ SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ - DECLARE_SYMBOL_VISIBILITY(name) \ + DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR \ + .thumb_func \ SYMBOL_NAME(name): #define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name) \ |

