summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2016-10-06 11:24:29 +0000
committerDiana Picus <diana.picus@linaro.org>2016-10-06 11:24:29 +0000
commit6341e46cd1a0383a4511f541b2ae62949aaf5c31 (patch)
tree9f83aae99da9a9de0fb23f91d8c6ffedefb4de79 /llvm/test/CodeGen/ARM
parent08eb2148ffe8b627c83a3a14ac24d1dd4e418690 (diff)
downloadbcm5719-llvm-6341e46cd1a0383a4511f541b2ae62949aaf5c31.tar.gz
bcm5719-llvm-6341e46cd1a0383a4511f541b2ae62949aaf5c31.zip
Revert "[ARM] Use __rt_div functions for divrem on Windows"
This reverts commit r283383 because it broke some of the bots: undefined reference to ` __aeabi_uldivmod' It affected (at least) clang-cmake-armv7-a15-selfhost, clang-cmake-armv7-a15-selfhost and clang-native-arm-lnt. llvm-svn: 283442
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/Windows/dbzchk.ll2
-rw-r--r--llvm/test/CodeGen/ARM/divmod-eabi.ll56
2 files changed, 35 insertions, 23 deletions
diff --git a/llvm/test/CodeGen/ARM/Windows/dbzchk.ll b/llvm/test/CodeGen/ARM/Windows/dbzchk.ll
index c078e091f9a..599a7cf094c 100644
--- a/llvm/test/CodeGen/ARM/Windows/dbzchk.ll
+++ b/llvm/test/CodeGen/ARM/Windows/dbzchk.ll
@@ -141,7 +141,7 @@ attributes #0 = { optsize }
; CHECK-CFG-ASM-NEXT: udf.w #249
; CHECK-CFG-ASM-LABEL: .LBB2_4:
; CHECK-CFG-ASM: bl __rt_udiv
-; CHECK-CFG-ASM: pop.w {r11, pc}
+; CHECK-CFG-ASM: pop.w {{{.*}}, r11, pc}
; RUN: llc -O0 -mtriple thumbv7--windows-itanium -verify-machineinstrs -filetype asm -o - %s | FileCheck %s -check-prefix CHECK-WIN__DBZCHK
diff --git a/llvm/test/CodeGen/ARM/divmod-eabi.ll b/llvm/test/CodeGen/ARM/divmod-eabi.ll
index ce5a1df05e3..1e4c8fc336d 100644
--- a/llvm/test/CodeGen/ARM/divmod-eabi.ll
+++ b/llvm/test/CodeGen/ARM/divmod-eabi.ll
@@ -42,13 +42,15 @@ entry:
; DARWIN-DEFAULT: add [[sum:r[0-9]+]], r0, [[div]]
; DARWIN-O0: mov [[rem:r[0-9]+]], r0
; WINDOWS: __rt_sdiv
-; WINDOWS: __rt_sdiv
-; WINDOWS-DEFAULT: add [[sum:r[0-9]+]], r1
-; WINDOWS-O0: mov [[rem:r[0-9]+]], r1
+; WINDOWS-DEFAULT: mls [[rem:r[0-9]+]], r0,
+; WINDOWS-DEFAULT: adds [[sum:r[0-9]+]], [[rem]], r0
+; WINDOWS-O0: mov [[div:r[0-9]+]], r0
+; WINDOWS-O0: mls [[rem:r[0-9]+]], [[div]],
%rem8 = srem i32 %conv1, %conv
; EABI: __aeabi_idivmod
; DARWIN: __modsi3
; WINDOWS: __rt_sdiv
+; WINDOWS: mls [[rem1:r[0-9]+]], r0,
%add = add nsw i32 %rem, %div
%add13 = add nsw i32 %add, %rem8
%conv14 = trunc i32 %add13 to i16
@@ -58,10 +60,9 @@ entry:
; DARWIN-O0: add [[sum:r[0-9]+]], [[rem]], [[div]]
; DARWIN-O0: add [[res:r[0-9]+]], [[sum]], r0
; DARWIN: sxth r0, [[res]]
-; WINDOWS-DEFAULT: adds [[sum1:r[0-9]+]], [[sum]], r1
-; WINDOWS-O0: adds [[sum:r[0-9]+]], [[rem]],
-; WINDOWS-O0: add [[sum1:r[0-9]+]], r1
-; WINDOWS: sxth [[res:r[0-9]+]], [[sum1]]
+; WINDOWS-O0: adds [[sum:r[0-9]+]], [[rem]], [[div]]
+; WINDOWS: add [[rem1]], [[sum]]
+; WINDOWS: sxth [[res:r[0-9]+]], [[rem1]]
ret i16 %conv14
}
@@ -83,20 +84,22 @@ entry:
; WINDOWS: __rt_sdiv
; WINDOWS: mov [[div:r[0-9]+]], r0
; WINDOWS: __rt_sdiv
-; WINDOWS-DEFAULT: add [[div]], r1
+; WINDOWS: mls [[rem:r[0-9]+]], r0,
+; WINDOWS-DEFAULT: add [[div]], [[rem]]
%rem1 = srem i32 %b, %a
; EABI: __aeabi_idivmod
; DARWIN: __modsi3
; WINDOWS: __rt_sdiv
+; WINDOWS: mls [[rem1:r[0-9]+]], r0,
%add = add nsw i32 %rem, %div
%add2 = add nsw i32 %add, %rem1
; EABI: add r0{{.*}}r1
; DARWIN-DEFAULT: add r0, [[sum]], r0
; DARWIN-O0: add [[sum:r[0-9]+]], [[rem]], [[div]]
; DARWIN-O0: add [[res:r[0-9]+]], [[sum]], r0
-; WINDOWS-DEFAULT: adds r0, [[div]], r1
+; WINDOWS-DEFAULT: add [[rem1]], [[div]]
; WINDOWS-O0: adds [[sum:r[0-9]+]], [[rem]], [[div]]
-; WINDOWS-O0: add [[sum]], r1
+; WINDOWS-O0: add [[rem1]], [[sum]]
ret i32 %add2
}
@@ -116,20 +119,22 @@ entry:
; WINDOWS: __rt_udiv
; WINDOWS: mov [[div:r[0-9]+]], r0
; WINDOWS: __rt_udiv
-; WINDOWS-DEFAULT: add [[div]], r1
+; WINDOWS: mls [[rem:r[0-9]+]], r0,
+; WINDOWS-DEFAULT: add [[div]], [[rem]]
%rem1 = urem i32 %b, %a
; EABI: __aeabi_uidivmod
; DARWIN: __umodsi3
; WINDOWS: __rt_udiv
+; WINDOWS: mls [[rem1:r[0-9]+]], r0,
%add = add nuw i32 %rem, %div
%add2 = add nuw i32 %add, %rem1
; EABI: add r0{{.*}}r1
; DARWIN-DEFAULT: add r0, [[sum]], r0
; DARWIN-O0: add [[sum:r[0-9]+]], [[rem]], [[div]]
; DARWIN-O0: add [[res:r[0-9]+]], [[sum]], r0
-; WINDOWS-DEFAULT: adds [[sum:r[0-9]+]], [[div]], r1
-; WINDOWS-O0: adds [[sum:r[0-9]+]],
-; WINDOWS-O0: add [[sum]], r1
+; WINDOWS-DEFAULT: add [[rem1]], [[div]]
+; WINDOWS-O0: adds [[sum:r[0-9]+]], [[rem]], [[div]]
+; WINDOWS-O0: add [[rem1]], [[sum]]
ret i32 %add2
}
@@ -149,11 +154,14 @@ entry:
; DARWIN: mov [[div2:r[0-9]+]], r1
; DARWIN: __moddi3
; WINDOWS: __rt_sdiv64
+; WINDOWS: mov [[div1:r[0-9]+]], r0
+; WINDOWS: mov [[div2:r[0-9]+]], r1
+; WINDOWS: __moddi3
%add = add nsw i64 %rem, %div
; DARWIN: adds r0{{.*}}[[div1]]
; DARWIN: adc r1{{.*}}[[div2]]
-; WINDOWS: adds r0, r0, r2
-; WINDOWS: adcs r1, r3
+; WINDOWS: adds.w r0, r0, [[div1]]
+; WINDOWS: adc.w r1, r1, [[div2]]
ret i64 %add
}
@@ -171,10 +179,11 @@ entry:
; WINDOWS: __rt_sdiv
; WINDOWS: mov [[div:r[0-9]+]], r0
; WINDOWS: __rt_sdiv
+; WINDOWS: mls [[rem:r[0-9]+]], r0,
%add = add nsw i16 %rem, %div
; EABI: add r0, r1
; DARWIN: add r0{{.*}}[[div1]]
-; WINDOWS: adds r0, r1, [[div]]
+; WINDOWS: add [[rem]], [[div]]
ret i16 %add
}
@@ -192,10 +201,11 @@ entry:
; WINDOWS: __rt_sdiv
; WINDOWS: mov [[div:r[0-9]+]], r0
; WINDOWS: __rt_sdiv
+; WINDOWS: mls [[rem:r[0-9]+]], r0,
%add = add nsw i32 %rem, %div
; EABI: add r0{{.*}}r1
; DARWIN: add r0{{.*}}[[sum]]
-; WINDOWS: adds r0, r1, [[div]]
+; WINDOWS: add [[rem]], [[div]]
ret i32 %add
}
@@ -211,7 +221,7 @@ entry:
; WINDOWS: __rt_sdiv
ret i32 %rem
; EABI: mov r0, r1
-; WINDOWS: mov r0, r1
+; WINDOWS: mls r0, r0,
}
define i32 @g3(i32 %a, i32 %b) {
@@ -225,15 +235,16 @@ entry:
; DARWIN: __modsi3
; DARWIN: mov [[sum:r[0-9]+]], r0
; WINDOWS: __rt_sdiv
-; WINDOWS: mov [[rem:r[0-9]+]], r1
+; WINDOWS: mls [[rem:r[0-9]+]], r0,
%rem1 = srem i32 %b, %rem
; EABI: __aeabi_idivmod
; DARWIN: __modsi3
; WINDOWS: __rt_sdiv
+; WINDOWS: mls [[rem1:r[0-9]+]], r0,
%add = add nsw i32 %rem1, %rem
; EABI: add r0, r1, [[mod]]
; DARWIN: add r0{{.*}}[[sum]]
-; WINDOWS: adds r0, r1, [[rem]]
+; WINDOWS: add [[rem1]], [[rem]]
ret i32 %add
}
@@ -253,9 +264,10 @@ entry:
; EABI: __aeabi_idivmod
; DARWIN: __modsi3
; WINDOWS: __rt_sdiv
+; WINDOWS: mls [[rem:r[0-9]+]], r0,
%add = add nsw i32 %rem, %div
; EABI: add r0, r1, [[div]]
; DARWIN: add r0{{.*}}[[sum]]
-; WINDOWS: adds r0, r1, [[div]]
+; WINDOWS: add [[rem]], [[div]]
ret i32 %add
}
OpenPOWER on IntegriCloud