[PATCH] Revert Thumb-2 conversion of ARM builtins.

Stephen Hines srhines at google.com
Thu Jul 17 00:54:15 PDT 2014


>From 39f1c593c389a4eda649df0bcb62fa17d86ef018 Mon Sep 17 00:00:00 2001
From: Stephen Hines <srhines at google.com>
Date: Thu, 17 Jul 2014 00:48:53 -0700
Subject: [PATCH] Revert Thumb-2 conversion of ARM builtins.

The umodsi3 code computes jump targets based on ARM encodings (if CLZ is
present and IDIV is not present).

Reverts r211032 and r211035.
---
 lib/builtins/arm/bswapdi2.S   |  3 ---
 lib/builtins/arm/bswapsi2.S   |  3 ---
 lib/builtins/arm/clzdi2.S     |  4 ----
 lib/builtins/arm/clzsi2.S     |  3 ---
 lib/builtins/arm/divmodsi4.S  |  3 ---
 lib/builtins/arm/divsi3.S     |  3 ---
 lib/builtins/arm/modsi3.S     |  3 ---
 lib/builtins/arm/udivmodsi4.S | 16 +++-------------
 lib/builtins/arm/udivsi3.S    | 21 +++------------------
 lib/builtins/arm/umodsi3.S    | 18 ++----------------
 10 files changed, 8 insertions(+), 69 deletions(-)

diff --git a/lib/builtins/arm/bswapdi2.S b/lib/builtins/arm/bswapdi2.S
index c2e2ce9..6f228c5 100644
--- a/lib/builtins/arm/bswapdi2.S
+++ b/lib/builtins/arm/bswapdi2.S
@@ -11,9 +11,6 @@

  .syntax unified
  .text
-#if __ARM_ARCH_ISA_THUMB == 2
- .thumb
-#endif

 //
 // extern uint64_t __bswapdi2(uint64_t);
diff --git a/lib/builtins/arm/bswapsi2.S b/lib/builtins/arm/bswapsi2.S
index ad09655..9671339 100644
--- a/lib/builtins/arm/bswapsi2.S
+++ b/lib/builtins/arm/bswapsi2.S
@@ -11,9 +11,6 @@

  .syntax unified
  .text
-#if __ARM_ARCH_ISA_THUMB == 2
- .thumb
-#endif

 //
 // extern uint32_t __bswapsi2(uint32_t);
diff --git a/lib/builtins/arm/clzdi2.S b/lib/builtins/arm/clzdi2.S
index bcea485..08a18f7 100644
--- a/lib/builtins/arm/clzdi2.S
+++ b/lib/builtins/arm/clzdi2.S
@@ -15,10 +15,6 @@

  .syntax unified
  .text
-#if __ARM_ARCH_ISA_THUMB == 2
- .thumb
-#endif
-

  .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__clzdi2)
diff --git a/lib/builtins/arm/clzsi2.S b/lib/builtins/arm/clzsi2.S
index f0240b0..d177b72 100644
--- a/lib/builtins/arm/clzsi2.S
+++ b/lib/builtins/arm/clzsi2.S
@@ -15,9 +15,6 @@

  .syntax unified
  .text
-#if __ARM_ARCH_ISA_THUMB == 2
- .thumb
-#endif

  .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__clzsi2)
diff --git a/lib/builtins/arm/divmodsi4.S b/lib/builtins/arm/divmodsi4.S
index 91bb2a5..fc017a1 100644
--- a/lib/builtins/arm/divmodsi4.S
+++ b/lib/builtins/arm/divmodsi4.S
@@ -23,9 +23,6 @@

  .syntax unified
  .text
-#if __ARM_ARCH_ISA_THUMB == 2
- .thumb
-#endif

  .p2align 3
 DEFINE_COMPILERRT_FUNCTION(__divmodsi4)
diff --git a/lib/builtins/arm/divsi3.S b/lib/builtins/arm/divsi3.S
index db47165..afb0acd 100644
--- a/lib/builtins/arm/divsi3.S
+++ b/lib/builtins/arm/divsi3.S
@@ -22,9 +22,6 @@

  .syntax unified
  .text
-#if __ARM_ARCH_ISA_THUMB == 2
- .thumb
-#endif

  .p2align 3
 // Ok, APCS and AAPCS agree on 32 bit args, so it's safe to use the same
routine.
diff --git a/lib/builtins/arm/modsi3.S b/lib/builtins/arm/modsi3.S
index 7ed305e..4be4a22 100644
--- a/lib/builtins/arm/modsi3.S
+++ b/lib/builtins/arm/modsi3.S
@@ -22,9 +22,6 @@

  .syntax unified
  .text
-#if __ARM_ARCH_ISA_THUMB == 2
- .thumb
-#endif

  .p2align 3
 DEFINE_COMPILERRT_FUNCTION(__modsi3)
diff --git a/lib/builtins/arm/udivmodsi4.S b/lib/builtins/arm/udivmodsi4.S
index 5b4e1bc..ddc8752 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 8695257..8fb1dca 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 c690df3..164646b 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)
-- 
2.0.0.526.g5318336
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140717/a4e7881d/attachment.html>


More information about the llvm-commits mailing list