summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorRoman Lebedev <lebedev.ri@gmail.com>2019-10-22 22:51:10 +0300
committerRoman Lebedev <lebedev.ri@gmail.com>2019-10-22 22:56:35 +0300
commit4334892e7b077feac3124b789733dbec3380db4c (patch)
treebd615069255aa6ad1827b71face46a68c4691e62 /llvm/test/CodeGen/ARM
parent9b1419a9e501389ec4b98553d9e00a8e327e43d0 (diff)
downloadbcm5719-llvm-4334892e7b077feac3124b789733dbec3380db4c.tar.gz
bcm5719-llvm-4334892e7b077feac3124b789733dbec3380db4c.zip
[DAGCombine][ARM] x ==/!= c -> (x - c) ==/!= 0 iff '-c' can be folded into the x node.
Summary: This fold, helps recover from the rest of the D62266 ARM regressions. https://rise4fun.com/Alive/TvpC Note that while the fold is quite flexible, i've restricted it to the single interesting pattern at the moment. Reviewers: efriedma, craig.topper, spatel, RKSimon, deadalnix Reviewed By: deadalnix Subscribers: javed.absar, kristof.beyls, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62450
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/addsubcarry-promotion.ll62
1 files changed, 18 insertions, 44 deletions
diff --git a/llvm/test/CodeGen/ARM/addsubcarry-promotion.ll b/llvm/test/CodeGen/ARM/addsubcarry-promotion.ll
index aaf7189a6bb..ea670e5584e 100644
--- a/llvm/test/CodeGen/ARM/addsubcarry-promotion.ll
+++ b/llvm/test/CodeGen/ARM/addsubcarry-promotion.ll
@@ -14,61 +14,35 @@ define void @fn1(i32 %a, i32 %b, i32 %c) local_unnamed_addr #0 {
; ARM-NEXT: adds r0, r1, r0
; ARM-NEXT: movw r1, #65535
; ARM-NEXT: sxth r2, r2
-; ARM-NEXT: adc r0, r2, #0
-; ARM-NEXT: uxth r0, r0
-; ARM-NEXT: cmp r0, r1
+; ARM-NEXT: adc r0, r2, #1
+; ARM-NEXT: tst r0, r1
; ARM-NEXT: bxeq lr
; ARM-NEXT: .LBB0_1: @ %for.cond
; ARM-NEXT: @ =>This Inner Loop Header: Depth=1
; ARM-NEXT: b .LBB0_1
;
-; THUMBV6M-LABEL: fn1:
-; THUMBV6M: @ %bb.0: @ %entry
-; THUMBV6M-NEXT: rsbs r2, r2, #0
-; THUMBV6M-NEXT: sxth r2, r2
-; THUMBV6M-NEXT: movs r3, #0
-; THUMBV6M-NEXT: adds r0, r1, r0
-; THUMBV6M-NEXT: adcs r3, r2
-; THUMBV6M-NEXT: uxth r0, r3
-; THUMBV6M-NEXT: ldr r1, .LCPI0_0
-; THUMBV6M-NEXT: cmp r0, r1
-; THUMBV6M-NEXT: beq .LBB0_2
-; THUMBV6M-NEXT: .LBB0_1: @ %for.cond
-; THUMBV6M-NEXT: @ =>This Inner Loop Header: Depth=1
-; THUMBV6M-NEXT: b .LBB0_1
-; THUMBV6M-NEXT: .LBB0_2: @ %if.end
-; THUMBV6M-NEXT: bx lr
-; THUMBV6M-NEXT: .p2align 2
-; THUMBV6M-NEXT: @ %bb.3:
-; THUMBV6M-NEXT: .LCPI0_0:
-; THUMBV6M-NEXT: .long 65535 @ 0xffff
-;
-; THUMBV8M-BASE-LABEL: fn1:
-; THUMBV8M-BASE: @ %bb.0: @ %entry
-; THUMBV8M-BASE-NEXT: rsbs r2, r2, #0
-; THUMBV8M-BASE-NEXT: sxth r2, r2
-; THUMBV8M-BASE-NEXT: movs r3, #0
-; THUMBV8M-BASE-NEXT: adds r0, r1, r0
-; THUMBV8M-BASE-NEXT: adcs r3, r2
-; THUMBV8M-BASE-NEXT: uxth r0, r3
-; THUMBV8M-BASE-NEXT: movw r1, #65535
-; THUMBV8M-BASE-NEXT: cmp r0, r1
-; THUMBV8M-BASE-NEXT: beq .LBB0_2
-; THUMBV8M-BASE-NEXT: .LBB0_1: @ %for.cond
-; THUMBV8M-BASE-NEXT: @ =>This Inner Loop Header: Depth=1
-; THUMBV8M-BASE-NEXT: b .LBB0_1
-; THUMBV8M-BASE-NEXT: .LBB0_2: @ %if.end
-; THUMBV8M-BASE-NEXT: bx lr
+; THUMB1-LABEL: fn1:
+; THUMB1: @ %bb.0: @ %entry
+; THUMB1-NEXT: rsbs r2, r2, #0
+; THUMB1-NEXT: sxth r2, r2
+; THUMB1-NEXT: movs r3, #1
+; THUMB1-NEXT: adds r0, r1, r0
+; THUMB1-NEXT: adcs r3, r2
+; THUMB1-NEXT: lsls r0, r3, #16
+; THUMB1-NEXT: beq .LBB0_2
+; THUMB1-NEXT: .LBB0_1: @ %for.cond
+; THUMB1-NEXT: @ =>This Inner Loop Header: Depth=1
+; THUMB1-NEXT: b .LBB0_1
+; THUMB1-NEXT: .LBB0_2: @ %if.end
+; THUMB1-NEXT: bx lr
;
; THUMB-LABEL: fn1:
; THUMB: @ %bb.0: @ %entry
; THUMB-NEXT: rsbs r2, r2, #0
; THUMB-NEXT: adds r0, r0, r1
-; THUMB-NEXT: movw r1, #65535
; THUMB-NEXT: sxth r2, r2
-; THUMB-NEXT: adc r0, r2, #0
-; THUMB-NEXT: uxth r0, r0
-; THUMB-NEXT: cmp r0, r1
+; THUMB-NEXT: adc r0, r2, #1
+; THUMB-NEXT: lsls r0, r0, #16
; THUMB-NEXT: it eq
; THUMB-NEXT: bxeq lr
; THUMB-NEXT: .LBB0_1: @ %for.cond
OpenPOWER on IntegriCloud