diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-01-05 00:40:52 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-01-05 00:40:52 +0000 |
commit | 95faecb76684ad97e2dffe080019573156334132 (patch) | |
tree | bd0e06f88906f1190f840a0f31dd2387808b7806 | |
parent | 71a7323b5ade1ffe81dc18e4af614d2e0bd8c1c6 (diff) | |
download | bcm5719-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.ll | 28 |
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 +} + |