diff options
author | Stephen Hines <srhines@google.com> | 2014-07-17 20:41:01 +0000 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-07-17 20:41:01 +0000 |
commit | 0ff2e21ab202d6de154ec28e21d30f370af5b0b8 (patch) | |
tree | fb77b4619c21f74cc477048003cd8b6b3f77a972 | |
parent | 28059c32815768f0760431be95e9daa67b89aae0 (diff) | |
download | compiler-rt-0ff2e21ab202d6de154ec28e21d30f370af5b0b8.tar.gz |
Revert Thumb-2 conversion of some ARM builtins.
The udivmodsi4/modsi3/umodsi3 code computes jump targets based on ARM encodings
(if CLZ is present and IDIV is not present).
Reverts parts of r211032 and r211035.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@213309 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/builtins/arm/udivmodsi4.S | 16 | ||||
-rw-r--r-- | lib/builtins/arm/udivsi3.S | 21 | ||||
-rw-r--r-- | lib/builtins/arm/umodsi3.S | 18 |
3 files changed, 8 insertions, 47 deletions
diff --git a/lib/builtins/arm/udivmodsi4.S b/lib/builtins/arm/udivmodsi4.S index 5b4e1bc8f..ddc875219 100644 --- a/lib/builtins/arm/udivmodsi4.S +++ b/lib/builtins/arm/udivmodsi4.S @@ -16,9 +16,6 @@ .syntax unified .text -#if __ARM_ARCH_ISA_THUMB == 2 - .thumb -#endif .p2align 2 DEFINE_COMPILERRT_FUNCTION(__udivmodsi4) @@ -99,16 +96,9 @@ DEFINE_COMPILERRT_FUNCTION(__udivmodsi4) #define IMM # -#if __ARM_ARCH_ISA_THUMB == 2 -#define ITT itt -#else -#define ITT @ -#endif - -#define block(shift) \ - cmp r0, r1, lsl IMM shift; \ - ITT hs; \ - addhs r3, r3, IMM (1 << shift); \ +#define block(shift) \ + cmp r0, r1, lsl IMM shift; \ + addhs r3, r3, IMM (1 << shift); \ subhs r0, r0, r1, lsl IMM shift block(31) diff --git a/lib/builtins/arm/udivsi3.S b/lib/builtins/arm/udivsi3.S index 8695257ec..8fb1dca0f 100644 --- a/lib/builtins/arm/udivsi3.S +++ b/lib/builtins/arm/udivsi3.S @@ -16,17 +16,6 @@ .syntax unified .text -#if __ARM_ARCH_ISA_THUMB == 2 - .thumb -#endif - -#if __ARM_ARCH_ISA_THUMB == 2 -#define IT it -#define ITT itt -#else -#define IT @ -#define ITT @ -#endif .p2align 2 DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_uidiv, __udivsi3) @@ -40,12 +29,9 @@ DEFINE_COMPILERRT_FUNCTION(__udivsi3) bx lr #else cmp r1, #1 - IT cc bcc LOCAL_LABEL(divby0) - IT eq JMPc(lr, eq) cmp r0, r1 - ITT cc movcc r0, #0 JMPc(lr, cc) /* @@ -108,10 +94,9 @@ DEFINE_COMPILERRT_FUNCTION(__udivsi3) #define IMM # -#define block(shift) \ - cmp r0, r1, lsl IMM shift; \ - ITT hs; \ - addhs r3, r3, IMM (1 << shift); \ +#define block(shift) \ + cmp r0, r1, lsl IMM shift; \ + addhs r3, r3, IMM (1 << shift); \ subhs r0, r0, r1, lsl IMM shift block(31) diff --git a/lib/builtins/arm/umodsi3.S b/lib/builtins/arm/umodsi3.S index c690df37b..164646b1f 100644 --- a/lib/builtins/arm/umodsi3.S +++ b/lib/builtins/arm/umodsi3.S @@ -16,17 +16,6 @@ .syntax unified .text -#if __ARM_ARCH_ISA_THUMB == 2 - .thumb -#endif - -#if __ARM_ARCH_ISA_THUMB == 2 -#define IT it -#define ITT itt -#else -#define IT @ -#define ITT @ -#endif .p2align 2 DEFINE_COMPILERRT_FUNCTION(__umodsi3) @@ -41,11 +30,9 @@ DEFINE_COMPILERRT_FUNCTION(__umodsi3) #else cmp r1, #1 bcc LOCAL_LABEL(divby0) - ITT eq moveq r0, #0 JMPc(lr, eq) cmp r0, r1 - IT cc JMPc(lr, cc) /* * Implement division using binary long division algorithm. @@ -103,9 +90,8 @@ DEFINE_COMPILERRT_FUNCTION(__umodsi3) #define IMM # -#define block(shift) \ - cmp r0, r1, lsl IMM shift; \ - IT hs; \ +#define block(shift) \ + cmp r0, r1, lsl IMM shift; \ subhs r0, r0, r1, lsl IMM shift block(31) |