summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hines <srhines@google.com>2014-07-17 20:41:01 +0000
committerStephen Hines <srhines@google.com>2014-07-17 20:41:01 +0000
commit0ff2e21ab202d6de154ec28e21d30f370af5b0b8 (patch)
treefb77b4619c21f74cc477048003cd8b6b3f77a972
parent28059c32815768f0760431be95e9daa67b89aae0 (diff)
downloadcompiler-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.S16
-rw-r--r--lib/builtins/arm/udivsi3.S21
-rw-r--r--lib/builtins/arm/umodsi3.S18
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)