Author: Juneyoung Lee Date: 2021-01-01T05:59:52+09:00 New Revision: 3c60e9bac86804a32bf515b9381c91fb64d769f8
URL: https://github.com/llvm/llvm-project/commit/3c60e9bac86804a32bf515b9381c91fb64d769f8 DIFF: https://github.com/llvm/llvm-project/commit/3c60e9bac86804a32bf515b9381c91fb64d769f8.diff LOG: Add tests for D93943 (NFC) Added: Modified: llvm/test/Transforms/SimplifyCFG/switch_create.ll Removed: ################################################################################ diff --git a/llvm/test/Transforms/SimplifyCFG/switch_create.ll b/llvm/test/Transforms/SimplifyCFG/switch_create.ll index cc7a48904482..10689a03c398 100644 --- a/llvm/test/Transforms/SimplifyCFG/switch_create.ll +++ b/llvm/test/Transforms/SimplifyCFG/switch_create.ll @@ -469,6 +469,29 @@ define i32 @test10_select(i32 %mode, i1 %Cond) { ; CHECK-NEXT: [[A:%.*]] = icmp ne i32 [[MODE:%.*]], 0 ; CHECK-NEXT: [[B:%.*]] = icmp ne i32 [[MODE]], 51 ; CHECK-NEXT: [[C:%.*]] = select i1 [[A]], i1 [[B]], i1 false +; CHECK-NEXT: [[D:%.*]] = select i1 [[C]], i1 [[COND:%.*]], i1 false +; CHECK-NEXT: [[SPEC_SELECT:%.*]] = select i1 [[D]], i32 123, i32 324 +; CHECK-NEXT: ret i32 [[SPEC_SELECT]] +; + %A = icmp ne i32 %mode, 0 + %B = icmp ne i32 %mode, 51 + %C = select i1 %A, i1 %B, i1 false + %D = select i1 %C, i1 %Cond, i1 false + br i1 %D, label %T, label %F +T: + ret i32 123 +F: + ret i32 324 + +} + +; TODO: %Cond doesn't need freeze +define i32 @test10_select_and(i32 %mode, i1 %Cond) { +; CHECK-LABEL: @test10_select_and( +; CHECK-NEXT: T: +; CHECK-NEXT: [[A:%.*]] = icmp ne i32 [[MODE:%.*]], 0 +; CHECK-NEXT: [[B:%.*]] = icmp ne i32 [[MODE]], 51 +; CHECK-NEXT: [[C:%.*]] = select i1 [[A]], i1 [[B]], i1 false ; CHECK-NEXT: [[D:%.*]] = and i1 [[C]], [[COND:%.*]] ; CHECK-NEXT: [[SPEC_SELECT:%.*]] = select i1 [[D]], i32 123, i32 324 ; CHECK-NEXT: ret i32 [[SPEC_SELECT]] @@ -485,6 +508,28 @@ F: } +define i32 @test10_select_nofreeze(i32 %mode, i1 noundef %Cond) { +; CHECK-LABEL: @test10_select_nofreeze( +; CHECK-NEXT: T: +; CHECK-NEXT: [[A:%.*]] = icmp ne i32 [[MODE:%.*]], 0 +; CHECK-NEXT: [[B:%.*]] = icmp ne i32 [[MODE]], 51 +; CHECK-NEXT: [[C:%.*]] = select i1 [[A]], i1 [[B]], i1 false +; CHECK-NEXT: [[D:%.*]] = select i1 [[C]], i1 [[COND:%.*]], i1 false +; CHECK-NEXT: [[SPEC_SELECT:%.*]] = select i1 [[D]], i32 123, i32 324 +; CHECK-NEXT: ret i32 [[SPEC_SELECT]] +; + %A = icmp ne i32 %mode, 0 + %B = icmp ne i32 %mode, 51 + %C = select i1 %A, i1 %B, i1 false + %D = select i1 %C, i1 %Cond, i1 false + br i1 %D, label %T, label %F +T: + ret i32 123 +F: + ret i32 324 + +} + ; PR8780 define i32 @test11(i32 %bar) nounwind { ; CHECK-LABEL: @test11( _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits