summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/GuardWidening/basic.ll
diff options
context:
space:
mode:
authorSanjoy Das <sanjoy@playingwithpointers.com>2016-05-19 03:53:17 +0000
committerSanjoy Das <sanjoy@playingwithpointers.com>2016-05-19 03:53:17 +0000
commitb784ed36c0cefd3d3289417143deecb6a7b81622 (patch)
tree8a96c7cb95f7103cf064233acbb19ddbbdab8986 /llvm/test/Transforms/GuardWidening/basic.ll
parent590614c1e19199a0e109dcef5a61128e5a62fede (diff)
downloadbcm5719-llvm-b784ed36c0cefd3d3289417143deecb6a7b81622.tar.gz
bcm5719-llvm-b784ed36c0cefd3d3289417143deecb6a7b81622.zip
[GuardWidening] Use getEquivalentICmp to fold constant compares
`ConstantRange::getEquivalentICmp` is more general, and better factored. llvm-svn: 270019
Diffstat (limited to 'llvm/test/Transforms/GuardWidening/basic.ll')
-rw-r--r--llvm/test/Transforms/GuardWidening/basic.ll46
1 files changed, 45 insertions, 1 deletions
diff --git a/llvm/test/Transforms/GuardWidening/basic.ll b/llvm/test/Transforms/GuardWidening/basic.ll
index cb49eebcbab..5b746a5d7dd 100644
--- a/llvm/test/Transforms/GuardWidening/basic.ll
+++ b/llvm/test/Transforms/GuardWidening/basic.ll
@@ -126,7 +126,7 @@ leave:
define void @f_5(i32 %a) {
; CHECK-LABEL: @f_5(
entry:
-; CHECK: %wide.chk = icmp ugt i32 %a, 10
+; CHECK: %wide.chk = icmp uge i32 %a, 11
; CHECK: call void (i1, ...) @llvm.experimental.guard(i1 %wide.chk) [ "deopt"() ]
; CHECK: br i1 undef, label %left, label %right
@@ -335,3 +335,47 @@ entry:
call void(i1, ...) @llvm.experimental.guard(i1 %cond) [ "deopt"() ]
ret void
}
+
+define void @f_13(i32 %a) {
+; CHECK-LABEL: @f_13(
+entry:
+; CHECK: %wide.chk = icmp ult i32 %a, 10
+; CHECK: call void (i1, ...) @llvm.experimental.guard(i1 %wide.chk) [ "deopt"() ]
+; CHECK: br i1 undef, label %left, label %right
+
+ %cond_0 = icmp ult i32 %a, 14
+ call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
+ br i1 undef, label %left, label %right
+
+left:
+ %cond_1 = icmp slt i32 %a, 10
+ call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
+ ret void
+
+right:
+ ret void
+}
+
+define void @f_14(i32 %a) {
+; CHECK-LABEL: @f_14(
+entry:
+; CHECK: %cond_0 = icmp ult i32 %a, 14
+; CHECK: call void (i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
+; CHECK: br i1 undef, label %left, label %right
+
+ %cond_0 = icmp ult i32 %a, 14
+ call void(i1, ...) @llvm.experimental.guard(i1 %cond_0) [ "deopt"() ]
+ br i1 undef, label %left, label %right
+
+left:
+; CHECK: left:
+; CHECK: %cond_1 = icmp sgt i32 %a, 10
+; CHECK: call void (i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
+
+ %cond_1 = icmp sgt i32 %a, 10
+ call void(i1, ...) @llvm.experimental.guard(i1 %cond_1) [ "deopt"() ]
+ ret void
+
+right:
+ ret void
+}
OpenPOWER on IntegriCloud