builtins: add it blocks for Thumb-2
authorSaleem Abdulrasool <compnerd@compnerd.org>
Mon, 16 Jun 2014 16:36:25 +0000 (16:36 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Mon, 16 Jun 2014 16:36:25 +0000 (16:36 +0000)
Add the missing IT-blocks for Thumb-2 compilation for code paths exercised by
older ARM CPUs.  This should fix the buildbots.

llvm-svn: 211035

compiler-rt/lib/builtins/arm/udivmodsi4.S
compiler-rt/lib/builtins/arm/udivsi3.S
compiler-rt/lib/builtins/arm/umodsi3.S

index 8531c56e5c453f16982a62b67a2f58a0cc3341bc..5b4e1bc8fc4d5c94239b21175c9676f04e1bc43f 100644 (file)
@@ -99,9 +99,16 @@ DEFINE_COMPILERRT_FUNCTION(__udivmodsi4)
 
 #define        IMM     #
 
-#define block(shift) \
-       cmp     r0, r1, lsl IMM shift; \
-       addhs   r3, r3, IMM (1 << shift); \
+#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);                                      \
        subhs   r0, r0, r1, lsl IMM shift
 
        block(31)
index 17fb69cabeeb04c48afda8d51b6479748b94a399..8695257ecb7df6c6ceb2ef81ec324299f2d2e654 100644 (file)
        .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)
 DEFINE_COMPILERRT_FUNCTION(__udivsi3)
@@ -32,9 +40,12 @@ 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)
        /*
@@ -97,9 +108,10 @@ DEFINE_COMPILERRT_FUNCTION(__udivsi3)
 
 #define        IMM     #
 
-#define block(shift) \
-       cmp     r0, r1, lsl IMM shift; \
-       addhs   r3, r3, IMM (1 << shift); \
+#define block(shift)                                                           \
+       cmp     r0, r1, lsl IMM shift;                                         \
+       ITT hs;                                                                \
+       addhs   r3, r3, IMM (1 << shift);                                      \
        subhs   r0, r0, r1, lsl IMM shift
 
        block(31)
index e7fa000a7604c428dba13ddd1450c38eaffc12d0..c690df37b76ce627e0675a20454e19eec025c31d 100644 (file)
        .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)
 #if __ARM_ARCH_EXT_IDIV__
@@ -33,9 +41,11 @@ 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.
@@ -93,8 +103,9 @@ DEFINE_COMPILERRT_FUNCTION(__umodsi3)
 
 #define        IMM     #
 
-#define block(shift) \
-       cmp     r0, r1, lsl IMM shift; \
+#define block(shift)                                                           \
+       cmp     r0, r1, lsl IMM shift;                                         \
+       IT hs;                                                                 \
        subhs   r0, r0, r1, lsl IMM shift
 
        block(31)