Author: Nikita Popov Date: 2021-01-11T22:33:34+01:00 New Revision: a808d89d355c98d7475795e13271beb90e9436cb
URL: https://github.com/llvm/llvm-project/commit/a808d89d355c98d7475795e13271beb90e9436cb DIFF: https://github.com/llvm/llvm-project/commit/a808d89d355c98d7475795e13271beb90e9436cb.diff LOG: [PredicateInfo] Add test for one unknown condition in and/or (NFC) Test the case where one part of and/or is an icmp, while the other one is an arbitrary value. Added: Modified: llvm/test/Transforms/Util/PredicateInfo/testandor.ll Removed: ################################################################################ diff --git a/llvm/test/Transforms/Util/PredicateInfo/testandor.ll b/llvm/test/Transforms/Util/PredicateInfo/testandor.ll index cd1491e31a8d..4697c9d3e059 100644 --- a/llvm/test/Transforms/Util/PredicateInfo/testandor.ll +++ b/llvm/test/Transforms/Util/PredicateInfo/testandor.ll @@ -209,3 +209,77 @@ nope: call void @foo(i1 %z) ret void } + +define void @test_and_one_unknown_cond(i32 %x, i1 %c1) { +; CHECK-LABEL: @test_and_one_unknown_cond( +; CHECK-NEXT: [[C2:%.*]] = icmp eq i32 [[X:%.*]], 0 +; CHECK-NEXT: [[A:%.*]] = and i1 [[C1:%.*]], [[C2]] +; CHECK-NEXT: br i1 [[A]], label [[BOTH:%.*]], label [[NOPE:%.*]] +; CHECK: both: +; CHECK-NEXT: call void @bar(i32 [[X]]) +; CHECK-NEXT: call void @foo(i1 [[C1]]) +; CHECK-NEXT: call void @foo(i1 [[C2]]) +; CHECK-NEXT: call void @foo(i1 [[A]]) +; CHECK-NEXT: ret void +; CHECK: nope: +; CHECK-NEXT: call void @bar(i32 [[X]]) +; CHECK-NEXT: call void @foo(i1 [[C1]]) +; CHECK-NEXT: call void @foo(i1 [[C2]]) +; CHECK-NEXT: call void @foo(i1 [[A]]) +; CHECK-NEXT: ret void +; + %c2 = icmp eq i32 %x, 0 + %a = and i1 %c1, %c2 + br i1 %a, label %both, label %nope + +both: + call void @bar(i32 %x) + call void @foo(i1 %c1) + call void @foo(i1 %c2) + call void @foo(i1 %a) + ret void + +nope: + call void @bar(i32 %x) + call void @foo(i1 %c1) + call void @foo(i1 %c2) + call void @foo(i1 %a) + ret void +} + +define void @test_or_one_unknown_cond(i32 %x, i1 %c1) { +; CHECK-LABEL: @test_or_one_unknown_cond( +; CHECK-NEXT: [[C2:%.*]] = icmp eq i32 [[X:%.*]], 0 +; CHECK-NEXT: [[A:%.*]] = or i1 [[C1:%.*]], [[C2]] +; CHECK-NEXT: br i1 [[A]], label [[NOPE:%.*]], label [[BOTH_INVERTED:%.*]] +; CHECK: both_inverted: +; CHECK-NEXT: call void @bar(i32 [[X]]) +; CHECK-NEXT: call void @foo(i1 [[C1]]) +; CHECK-NEXT: call void @foo(i1 [[C2]]) +; CHECK-NEXT: call void @foo(i1 [[A]]) +; CHECK-NEXT: ret void +; CHECK: nope: +; CHECK-NEXT: call void @bar(i32 [[X]]) +; CHECK-NEXT: call void @foo(i1 [[C1]]) +; CHECK-NEXT: call void @foo(i1 [[C2]]) +; CHECK-NEXT: call void @foo(i1 [[A]]) +; CHECK-NEXT: ret void +; + %c2 = icmp eq i32 %x, 0 + %a = or i1 %c1, %c2 + br i1 %a, label %nope, label %both_inverted + +both_inverted: + call void @bar(i32 %x) + call void @foo(i1 %c1) + call void @foo(i1 %c2) + call void @foo(i1 %a) + ret void + +nope: + call void @bar(i32 %x) + call void @foo(i1 %c1) + call void @foo(i1 %c2) + call void @foo(i1 %a) + ret void +} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits