summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorPablo Barrio <pablo.barrio@arm.com>2016-09-08 10:05:57 +0000
committerPablo Barrio <pablo.barrio@arm.com>2016-09-08 10:05:57 +0000
commit2b7ed1339cea63180bc3203ac57b4c5b12219589 (patch)
treeb30d5efa16363bf036ba8f2906e249b64ace5d16 /llvm/test/CodeGen/ARM
parent48c32b150424bab1f4d74a000572445f2e5305eb (diff)
downloadbcm5719-llvm-2b7ed1339cea63180bc3203ac57b4c5b12219589.tar.gz
bcm5719-llvm-2b7ed1339cea63180bc3203ac57b4c5b12219589.zip
Revert "[ARM] Lower UDIV+UREM to UDIV+MLS (and the same for SREM)"
This reverts commit r280808. It is possible that this change results in an infinite loop. This is causing timeouts in some tests on ARM, and a Chromebook bot is failing. llvm-svn: 280918
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/urem-opt-size.ll43
1 files changed, 0 insertions, 43 deletions
diff --git a/llvm/test/CodeGen/ARM/urem-opt-size.ll b/llvm/test/CodeGen/ARM/urem-opt-size.ll
index b9c2188accd..7f1cd43bc4e 100644
--- a/llvm/test/CodeGen/ARM/urem-opt-size.ll
+++ b/llvm/test/CodeGen/ARM/urem-opt-size.ll
@@ -3,12 +3,7 @@
; expanded to a sequence of umull, lsrs, muls and sub instructions, but
; just a call to __aeabi_uidivmod.
;
-; When the processor features hardware division, UDIV + UREM can be turned
-; into UDIV + MLS. This prevents the library function __aeabi_uidivmod to be
-; pulled into the binary. The test uses ARMv7-M.
-;
; RUN: llc -mtriple=armv7a-eabi -mattr=-neon -verify-machineinstrs %s -o - | FileCheck %s
-; RUN: llc -mtriple=thumbv7m-eabi -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=V7M
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv7m-arm-none-eabi"
@@ -33,16 +28,11 @@ entry:
ret i32 %div
}
-; Test for unsigned remainder
define i32 @foo3() local_unnamed_addr #0 {
entry:
; CHECK-LABEL: foo3:
; CHECK: __aeabi_uidivmod
; CHECK-NOT: umull
-; V7M-LABEL: foo3:
-; V7M: udiv [[R2:r[0-9]+]], [[R0:r[0-9]+]], [[R1:r[0-9]+]]
-; V7M: mls {{r[0-9]+}}, [[R2]], [[R1]], [[R0]]
-; V7M-NOT: __aeabi_uidivmod
%call = tail call i32 bitcast (i32 (...)* @GetValue to i32 ()*)()
%rem = urem i32 %call, 1000000
%cmp = icmp eq i32 %rem, 0
@@ -50,39 +40,6 @@ entry:
ret i32 %conv
}
-; Test for signed remainder
-define i32 @foo4() local_unnamed_addr #0 {
-entry:
-; CHECK-LABEL: foo4:
-; CHECK:__aeabi_idivmod
-; V7M-LABEL: foo4:
-; V7M: sdiv [[R2:r[0-9]+]], [[R0:r[0-9]+]], [[R1:r[0-9]+]]
-; V7M: mls {{r[0-9]+}}, [[R2]], [[R1]], [[R0]]
-; V7M-NOT: __aeabi_idivmod
- %call = tail call i32 bitcast (i32 (...)* @GetValue to i32 ()*)()
- %rem = srem i32 %call, 1000000
- ret i32 %rem
-}
-
-; Check that doing a sdiv+srem has the same effect as only the srem,
-; as the division needs to be computed anyway in order to calculate
-; the remainder (i.e. make sure we don't end up with two divisions).
-define i32 @foo5() local_unnamed_addr #0 {
-entry:
-; CHECK-LABEL: foo5:
-; CHECK:__aeabi_idivmod
-; V7M-LABEL: foo5:
-; V7M: sdiv [[R2:r[0-9]+]], [[R0:r[0-9]+]], [[R1:r[0-9]+]]
-; V7M-NOT: sdiv
-; V7M: mls {{r[0-9]+}}, [[R2]], [[R1]], [[R0]]
-; V7M-NOT: __aeabi_idivmod
- %call = tail call i32 bitcast (i32 (...)* @GetValue to i32 ()*)()
- %div = sdiv i32 %call, 1000000
- %rem = srem i32 %call, 1000000
- %add = add i32 %div, %rem
- ret i32 %add
-}
-
declare i32 @GetValue(...) local_unnamed_addr
attributes #0 = { minsize nounwind optsize }
OpenPOWER on IntegriCloud