summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2017-01-05 00:40:52 +0000
committerSanjay Patel <spatel@rotateright.com>2017-01-05 00:40:52 +0000
commit95faecb76684ad97e2dffe080019573156334132 (patch)
treebd0e06f88906f1190f840a0f31dd2387808b7806
parent71a7323b5ade1ffe81dc18e4af614d2e0bd8c1c6 (diff)
downloadbcm5719-llvm-95faecb76684ad97e2dffe080019573156334132.tar.gz
bcm5719-llvm-95faecb76684ad97e2dffe080019573156334132.zip
[InstSimplify] add tests to show missing select simplifications; NFC
llvm-svn: 291043
-rw-r--r--llvm/test/Transforms/InstSimplify/select.ll28
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstSimplify/select.ll b/llvm/test/Transforms/InstSimplify/select.ll
index 6ddaaba2046..1acb5c469d3 100644
--- a/llvm/test/Transforms/InstSimplify/select.ll
+++ b/llvm/test/Transforms/InstSimplify/select.ll
@@ -402,3 +402,31 @@ define i32* @select_icmp_pointers(i32* %x, i32* %y) {
ret i32* %sel
}
+; FIXME: If the condition is known, we don't need to select.
+
+declare void @llvm.assume(i1)
+
+define i8 @assume_sel_cond(i1 %cond, i8 %x, i8 %y) {
+; CHECK-LABEL: @assume_sel_cond(
+; CHECK-NEXT: call void @llvm.assume(i1 %cond)
+; CHECK-NEXT: [[SEL:%.*]] = select i1 %cond, i8 %x, i8 %y
+; CHECK-NEXT: ret i8 [[SEL]]
+;
+ call void @llvm.assume(i1 %cond)
+ %sel = select i1 %cond, i8 %x, i8 %y
+ ret i8 %sel
+}
+
+define i8 @do_not_assume_sel_cond(i1 %cond, i8 %x, i8 %y) {
+; CHECK-LABEL: @do_not_assume_sel_cond(
+; CHECK-NEXT: [[NOTCOND:%.*]] = icmp eq i1 %cond, false
+; CHECK-NEXT: call void @llvm.assume(i1 [[NOTCOND]])
+; CHECK-NEXT: [[SEL:%.*]] = select i1 %cond, i8 %x, i8 %y
+; CHECK-NEXT: ret i8 [[SEL]]
+;
+ %notcond = icmp eq i1 %cond, false
+ call void @llvm.assume(i1 %notcond)
+ %sel = select i1 %cond, i8 %x, i8 %y
+ ret i8 %sel
+}
+
OpenPOWER on IntegriCloud