#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)
.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)
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)
/*
#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)
.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__
#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.
#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)