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