summaryrefslogtreecommitdiff
path: root/test/CodeGen/Thumb
diff options
context:
space:
mode:
authorArtyom Skrobov <Artyom.Skrobov@arm.com>2017-03-13 22:36:14 +0000
committerArtyom Skrobov <Artyom.Skrobov@arm.com>2017-03-13 22:36:14 +0000
commit7a06df3cf902e79b1b80e3b4932927200fa6fd23 (patch)
tree830f3ddc6c14c1140ec7690e60fe638f8aee668f /test/CodeGen/Thumb
parentbb60730437f512d4465581b88ccda2375b3f4f3e (diff)
[Thumb1] combine ADDC/SUBC with a negative immediate
Summary: This simple optimization has been split out of https://reviews.llvm.org/D30400 Reviewers: efriedma, jmolloy Subscribers: llvm-commits, rengolin Differential Revision: https://reviews.llvm.org/D30829 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297682 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/Thumb')
-rw-r--r--test/CodeGen/Thumb/long.ll14
1 files changed, 6 insertions, 8 deletions
diff --git a/test/CodeGen/Thumb/long.ll b/test/CodeGen/Thumb/long.ll
index bf5efd4889d..e35f7cc82b1 100644
--- a/test/CodeGen/Thumb/long.ll
+++ b/test/CodeGen/Thumb/long.ll
@@ -132,8 +132,7 @@ entry:
; CHECK: sbcs r1, r2
}
-define i64 @f9d(i64 %x, i32 %y) { ; SUBS with small negative imm => SUBS reg
-; FIXME: this would be better lowered as an `ADDS imm`
+define i64 @f9d(i64 %x, i32 %y) { ; SUBS with small negative imm => ADDS imm
entry:
%conv = sext i32 %y to i64
%shl = shl i64 %conv, 32
@@ -141,9 +140,7 @@ entry:
%sub = sub nsw i64 %x, %or
ret i64 %sub
; CHECK-LABEL: f9d:
-; CHECK: movs r3, #0
-; CHECK: mvns r3, r3
-; CHECK: subs r0, r0, r3
+; CHECK: adds r0, r0, #1
; CHECK: sbcs r1, r2
}
@@ -187,11 +184,12 @@ entry:
%tmp2 = add i64 %tmp1, -1000
ret i64 %tmp2
; CHECK-LABEL: f11:
+; CHECK: movs r0, #125
+; CHECK: lsls r0, r0, #3
; CHECK: movs r1, #0
-; CHECK: ldr r0,
-; CHECK: adds r2, r2, r0
+; CHECK: subs r2, r2, r0
; CHECK: sbcs r3, r1
-; CHECK: adds r0, r2, r0
+; CHECK: subs r0, r2, r0
; CHECK: sbcs r3, r1
; CHECK: movs r1, r3
}