1e549d578SDhruv Chawla; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2 2e549d578SDhruv Chawla; RUN: opt < %s -passes=instcombine -S | FileCheck %s 3e549d578SDhruv Chawla 4e549d578SDhruv Chawladefine i1 @SwitchTest(i32 %x, i32 %y) { 5e549d578SDhruv Chawla; CHECK-LABEL: define i1 @SwitchTest 6e549d578SDhruv Chawla; CHECK-SAME: (i32 [[X:%.*]], i32 [[Y:%.*]]) { 7e549d578SDhruv Chawla; CHECK-NEXT: entry: 8e549d578SDhruv Chawla; CHECK-NEXT: switch i32 [[X]], label [[BB1:%.*]] [ 9e549d578SDhruv Chawla; CHECK-NEXT: i32 0, label [[BB2:%.*]] 10e549d578SDhruv Chawla; CHECK-NEXT: i32 1, label [[BB3:%.*]] 11e549d578SDhruv Chawla; CHECK-NEXT: ] 12e549d578SDhruv Chawla; CHECK: bb1: 13*d53b3df5SDhruv Chawla; CHECK-NEXT: [[TMP0:%.*]] = icmp ugt i32 [[Y]], 1 14e549d578SDhruv Chawla; CHECK-NEXT: br label [[BB2]] 15e549d578SDhruv Chawla; CHECK: bb2: 16*d53b3df5SDhruv Chawla; CHECK-NEXT: [[PHI1:%.*]] = phi i1 [ false, [[ENTRY:%.*]] ], [ [[TMP0]], [[BB1]] ] 17e549d578SDhruv Chawla; CHECK-NEXT: br label [[BB3]] 18e549d578SDhruv Chawla; CHECK: bb3: 19*d53b3df5SDhruv Chawla; CHECK-NEXT: [[PHI2:%.*]] = phi i1 [ [[PHI1]], [[BB2]] ], [ false, [[ENTRY]] ] 20*d53b3df5SDhruv Chawla; CHECK-NEXT: ret i1 [[PHI2]] 21e549d578SDhruv Chawla; 22e549d578SDhruv Chawlaentry: 23e549d578SDhruv Chawla switch i32 %x, label %bb1 [ 24e549d578SDhruv Chawla i32 0, label %bb2 25e549d578SDhruv Chawla i32 1, label %bb3 26e549d578SDhruv Chawla ] 27e549d578SDhruv Chawla 28e549d578SDhruv Chawlabb1: 29e549d578SDhruv Chawla br label %bb2 30e549d578SDhruv Chawla 31e549d578SDhruv Chawlabb2: 32e549d578SDhruv Chawla %phi1 = phi i32 [ 1, %entry ], [ %y, %bb1 ] 33e549d578SDhruv Chawla br label %bb3 34e549d578SDhruv Chawla 35e549d578SDhruv Chawlabb3: 36e549d578SDhruv Chawla %phi2 = phi i32 [ %phi1, %bb2 ], [ 0, %entry ] 37e549d578SDhruv Chawla %cmp = icmp ugt i32 %phi2, 1 38e549d578SDhruv Chawla ret i1 %cmp 39e549d578SDhruv Chawla} 40e549d578SDhruv Chawla 41e549d578SDhruv Chawla; Test case derived from: 42e549d578SDhruv Chawla; llvm-test-suite/MultiSource/Benchmarks/MiBench/consumer-typeset/z10.c 43e549d578SDhruv Chawladefine i1 @BranchTest(i1 %c, i1 %c1, i1 %c2, i1 %c3, i1 %c4) { 44e549d578SDhruv Chawla; CHECK-LABEL: define i1 @BranchTest 45e549d578SDhruv Chawla; CHECK-SAME: (i1 [[C:%.*]], i1 [[C1:%.*]], i1 [[C2:%.*]], i1 [[C3:%.*]], i1 [[C4:%.*]]) { 46e549d578SDhruv Chawla; CHECK-NEXT: entry: 47e549d578SDhruv Chawla; CHECK-NEXT: br i1 [[C]], label [[SW_EPILOG:%.*]], label [[COND_FALSE:%.*]] 48e549d578SDhruv Chawla; CHECK: cond.false: 49e549d578SDhruv Chawla; CHECK-NEXT: br i1 [[C1]], label [[SW_EPILOG]], label [[COND_FALSE2:%.*]] 50e549d578SDhruv Chawla; CHECK: cond.false2: 51e549d578SDhruv Chawla; CHECK-NEXT: br i1 [[C2]], label [[SW_EPILOG]], label [[COND_FALSE3:%.*]] 52e549d578SDhruv Chawla; CHECK: cond.false3: 53e549d578SDhruv Chawla; CHECK-NEXT: br i1 [[C3]], label [[SW_BB:%.*]], label [[COND_END:%.*]] 54e549d578SDhruv Chawla; CHECK: cond.end: 55e549d578SDhruv Chawla; CHECK-NEXT: br label [[SW_BB]] 56e549d578SDhruv Chawla; CHECK: sw.bb: 57e549d578SDhruv Chawla; CHECK-NEXT: br label [[SW_EPILOG]] 58e549d578SDhruv Chawla; CHECK: sw.epilog: 59e549d578SDhruv Chawla; CHECK-NEXT: ret i1 [[C]] 60e549d578SDhruv Chawla; 61e549d578SDhruv Chawlaentry: 62e549d578SDhruv Chawla br i1 %c, label %sw.epilog, label %cond.false 63e549d578SDhruv Chawla 64e549d578SDhruv Chawlacond.false: 65e549d578SDhruv Chawla br i1 %c1, label %sw.epilog, label %cond.false2 66e549d578SDhruv Chawla 67e549d578SDhruv Chawlacond.false2: 68e549d578SDhruv Chawla br i1 %c2, label %sw.epilog, label %cond.false3 69e549d578SDhruv Chawla 70e549d578SDhruv Chawlacond.false3: 71e549d578SDhruv Chawla br i1 %c3, label %sw.bb, label %cond.end 72e549d578SDhruv Chawla 73e549d578SDhruv Chawlacond.end: 74e549d578SDhruv Chawla %cond = select i1 %c4, i32 127, i32 126 75e549d578SDhruv Chawla br label %sw.bb 76e549d578SDhruv Chawla 77e549d578SDhruv Chawlasw.bb: 78e549d578SDhruv Chawla %cond2 = phi i32 [ %cond, %cond.end ], [ 128, %cond.false3 ] 79e549d578SDhruv Chawla br label %sw.epilog 80e549d578SDhruv Chawla 81e549d578SDhruv Chawlasw.epilog: 82e549d578SDhruv Chawla %cond3 = phi i32 [ %cond2, %sw.bb ], [ 134, %cond.false2 ], [ 2, %cond.false ], [ 1, %entry ] 83e549d578SDhruv Chawla %cmp = icmp ult i32 %cond3, 2 84e549d578SDhruv Chawla ret i1 %cmp 85e549d578SDhruv Chawla} 86