1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -lowerswitch -S | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; We have switch on input. 4*9880d681SAndroid Build Coastguard Worker; On output we should got binary comparison tree. Check that all is fine. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker;CHECK: entry: 7*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br label %NodeBlock19 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock19: ; preds = %entry 10*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot20 = icmp slt i32 %tmp158, 10 11*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot20, label %NodeBlock5, label %NodeBlock17 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock17: ; preds = %NodeBlock19 14*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot18 = icmp slt i32 %tmp158, 13 15*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot18, label %NodeBlock9, label %NodeBlock15 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock15: ; preds = %NodeBlock17 18*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot16 = icmp slt i32 %tmp158, 14 19*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot16, label %bb330, label %NodeBlock13 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock13: ; preds = %NodeBlock15 22*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot14 = icmp slt i32 %tmp158, 15 23*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot14, label %bb332, label %LeafBlock11 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker;CHECK: LeafBlock11: ; preds = %NodeBlock13 26*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %SwitchLeaf12 = icmp eq i32 %tmp158, 15 27*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %SwitchLeaf12, label %bb334, label %NewDefault 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock9: ; preds = %NodeBlock17 30*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot10 = icmp slt i32 %tmp158, 11 31*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot10, label %bb324, label %NodeBlock7 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock7: ; preds = %NodeBlock9 34*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot8 = icmp slt i32 %tmp158, 12 35*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot8, label %bb326, label %bb328 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock5: ; preds = %NodeBlock19 38*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot6 = icmp slt i32 %tmp158, 7 39*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot6, label %NodeBlock, label %NodeBlock3 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock3: ; preds = %NodeBlock5 42*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot4 = icmp slt i32 %tmp158, 8 43*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot4, label %bb, label %NodeBlock1 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock1: ; preds = %NodeBlock3 46*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot2 = icmp slt i32 %tmp158, 9 47*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot2, label %bb338, label %bb322 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker;CHECK: NodeBlock: ; preds = %NodeBlock5 50*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %Pivot = icmp slt i32 %tmp158, 0 51*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %Pivot, label %LeafBlock, label %bb338 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker;CHECK: LeafBlock: ; preds = %NodeBlock 54*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %tmp158.off = add i32 %tmp158, 6 55*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: %SwitchLeaf = icmp ule i32 %tmp158.off, 4 56*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: br i1 %SwitchLeaf, label %bb338, label %NewDefault 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine i32 @main(i32 %tmp158) { 59*9880d681SAndroid Build Coastguard Workerentry: 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker switch i32 %tmp158, label %bb336 [ 62*9880d681SAndroid Build Coastguard Worker i32 -2, label %bb338 63*9880d681SAndroid Build Coastguard Worker i32 -3, label %bb338 64*9880d681SAndroid Build Coastguard Worker i32 -4, label %bb338 65*9880d681SAndroid Build Coastguard Worker i32 -5, label %bb338 66*9880d681SAndroid Build Coastguard Worker i32 -6, label %bb338 67*9880d681SAndroid Build Coastguard Worker i32 0, label %bb338 68*9880d681SAndroid Build Coastguard Worker i32 1, label %bb338 69*9880d681SAndroid Build Coastguard Worker i32 2, label %bb338 70*9880d681SAndroid Build Coastguard Worker i32 3, label %bb338 71*9880d681SAndroid Build Coastguard Worker i32 4, label %bb338 72*9880d681SAndroid Build Coastguard Worker i32 5, label %bb338 73*9880d681SAndroid Build Coastguard Worker i32 6, label %bb338 74*9880d681SAndroid Build Coastguard Worker i32 7, label %bb 75*9880d681SAndroid Build Coastguard Worker i32 8, label %bb338 76*9880d681SAndroid Build Coastguard Worker i32 9, label %bb322 77*9880d681SAndroid Build Coastguard Worker i32 10, label %bb324 78*9880d681SAndroid Build Coastguard Worker i32 11, label %bb326 79*9880d681SAndroid Build Coastguard Worker i32 12, label %bb328 80*9880d681SAndroid Build Coastguard Worker i32 13, label %bb330 81*9880d681SAndroid Build Coastguard Worker i32 14, label %bb332 82*9880d681SAndroid Build Coastguard Worker i32 15, label %bb334 83*9880d681SAndroid Build Coastguard Worker ] 84*9880d681SAndroid Build Coastguard Workerbb: 85*9880d681SAndroid Build Coastguard Worker ret i32 2 86*9880d681SAndroid Build Coastguard Workerbb322: 87*9880d681SAndroid Build Coastguard Worker ret i32 3 88*9880d681SAndroid Build Coastguard Workerbb324: 89*9880d681SAndroid Build Coastguard Worker ret i32 4 90*9880d681SAndroid Build Coastguard Workerbb326: 91*9880d681SAndroid Build Coastguard Worker ret i32 5 92*9880d681SAndroid Build Coastguard Workerbb328: 93*9880d681SAndroid Build Coastguard Worker ret i32 6 94*9880d681SAndroid Build Coastguard Workerbb330: 95*9880d681SAndroid Build Coastguard Worker ret i32 7 96*9880d681SAndroid Build Coastguard Workerbb332: 97*9880d681SAndroid Build Coastguard Worker ret i32 8 98*9880d681SAndroid Build Coastguard Workerbb334: 99*9880d681SAndroid Build Coastguard Worker ret i32 9 100*9880d681SAndroid Build Coastguard Workerbb336: 101*9880d681SAndroid Build Coastguard Worker ret i32 10 102*9880d681SAndroid Build Coastguard Workerbb338: 103*9880d681SAndroid Build Coastguard Worker ret i32 11 104*9880d681SAndroid Build Coastguard Worker} 105