diff options
author | Artyom Skrobov <Artyom.Skrobov@arm.com> | 2017-03-13 22:36:14 +0000 |
---|---|---|
committer | Artyom Skrobov <Artyom.Skrobov@arm.com> | 2017-03-13 22:36:14 +0000 |
commit | 7a06df3cf902e79b1b80e3b4932927200fa6fd23 (patch) | |
tree | 830f3ddc6c14c1140ec7690e60fe638f8aee668f /test/CodeGen/Thumb | |
parent | bb60730437f512d4465581b88ccda2375b3f4f3e (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.ll | 14 |
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 } |