diff options
| author | Diana Picus <diana.picus@linaro.org> | 2016-10-06 11:24:29 +0000 |
|---|---|---|
| committer | Diana Picus <diana.picus@linaro.org> | 2016-10-06 11:24:29 +0000 |
| commit | 6341e46cd1a0383a4511f541b2ae62949aaf5c31 (patch) | |
| tree | 9f83aae99da9a9de0fb23f91d8c6ffedefb4de79 /llvm/test/CodeGen/ARM | |
| parent | 08eb2148ffe8b627c83a3a14ac24d1dd4e418690 (diff) | |
| download | bcm5719-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.ll | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/ARM/divmod-eabi.ll | 56 |
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 } |

