1950a13cfSDan Gohman; RUN: llc < %s -asm-verbose=false | FileCheck %s 2950a13cfSDan Gohman 3950a13cfSDan Gohman; Test switch instructions. 4950a13cfSDan Gohman 5950a13cfSDan Gohmantarget datalayout = "e-p:32:32-i64:64-n32:64-S128" 6950a13cfSDan Gohmantarget triple = "wasm32-unknown-unknown" 7950a13cfSDan Gohman 8950a13cfSDan Gohmandeclare void @foo0() 9950a13cfSDan Gohmandeclare void @foo1() 10950a13cfSDan Gohmandeclare void @foo2() 11950a13cfSDan Gohmandeclare void @foo3() 12950a13cfSDan Gohmandeclare void @foo4() 13950a13cfSDan Gohmandeclare void @foo5() 14950a13cfSDan Gohman 15*e51c058eSDan Gohman; CHECK-LABEL: bar32: 16*e51c058eSDan Gohman; CHECK: block $BB0_8{{$}} 17*e51c058eSDan Gohman; CHECK: block $BB0_7{{$}} 18*e51c058eSDan Gohman; CHECK: block $BB0_6{{$}} 19*e51c058eSDan Gohman; CHECK: block $BB0_5{{$}} 20*e51c058eSDan Gohman; CHECK: block $BB0_4{{$}} 21*e51c058eSDan Gohman; CHECK: block $BB0_3{{$}} 22*e51c058eSDan Gohman; CHECK: block $BB0_2{{$}} 23*e51c058eSDan Gohman; CHECK: switch {{.*}}, $BB0_2, $BB0_2, $BB0_2, $BB0_2, $BB0_2, $BB0_2, $BB0_2, $BB0_2, $BB0_3, $BB0_3, $BB0_3, $BB0_3, $BB0_3, $BB0_3, $BB0_3, $BB0_3, $BB0_4, $BB0_4, $BB0_4, $BB0_4, $BB0_4, $BB0_4, $BB0_5, $BB0_6, $BB0_7{{$}} 24*e51c058eSDan Gohman; CHECK: BB0_2: 25*e51c058eSDan Gohman; CHECK: call $foo0 26950a13cfSDan Gohman; CHECK: BB0_3: 27*e51c058eSDan Gohman; CHECK: call $foo1 28950a13cfSDan Gohman; CHECK: BB0_4: 29*e51c058eSDan Gohman; CHECK: call $foo2 30950a13cfSDan Gohman; CHECK: BB0_5: 31*e51c058eSDan Gohman; CHECK: call $foo3 32950a13cfSDan Gohman; CHECK: BB0_6: 33*e51c058eSDan Gohman; CHECK: call $foo4 34950a13cfSDan Gohman; CHECK: BB0_7: 35*e51c058eSDan Gohman; CHECK: call $foo5 36950a13cfSDan Gohman; CHECK: BB0_8: 37*e51c058eSDan Gohman; CHECK: return{{$}} 38950a13cfSDan Gohmandefine void @bar32(i32 %n) { 39950a13cfSDan Gohmanentry: 40950a13cfSDan Gohman switch i32 %n, label %sw.epilog [ 41950a13cfSDan Gohman i32 0, label %sw.bb 42950a13cfSDan Gohman i32 1, label %sw.bb 43950a13cfSDan Gohman i32 2, label %sw.bb 44950a13cfSDan Gohman i32 3, label %sw.bb 45950a13cfSDan Gohman i32 4, label %sw.bb 46950a13cfSDan Gohman i32 5, label %sw.bb 47950a13cfSDan Gohman i32 6, label %sw.bb 48950a13cfSDan Gohman i32 7, label %sw.bb.1 49950a13cfSDan Gohman i32 8, label %sw.bb.1 50950a13cfSDan Gohman i32 9, label %sw.bb.1 51950a13cfSDan Gohman i32 10, label %sw.bb.1 52950a13cfSDan Gohman i32 11, label %sw.bb.1 53950a13cfSDan Gohman i32 12, label %sw.bb.1 54950a13cfSDan Gohman i32 13, label %sw.bb.1 55950a13cfSDan Gohman i32 14, label %sw.bb.1 56950a13cfSDan Gohman i32 15, label %sw.bb.2 57950a13cfSDan Gohman i32 16, label %sw.bb.2 58950a13cfSDan Gohman i32 17, label %sw.bb.2 59950a13cfSDan Gohman i32 18, label %sw.bb.2 60950a13cfSDan Gohman i32 19, label %sw.bb.2 61950a13cfSDan Gohman i32 20, label %sw.bb.2 62950a13cfSDan Gohman i32 21, label %sw.bb.3 63950a13cfSDan Gohman i32 22, label %sw.bb.4 64950a13cfSDan Gohman i32 23, label %sw.bb.5 65950a13cfSDan Gohman ] 66950a13cfSDan Gohman 67950a13cfSDan Gohmansw.bb: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry 68950a13cfSDan Gohman tail call void @foo0() 69950a13cfSDan Gohman br label %sw.epilog 70950a13cfSDan Gohman 71950a13cfSDan Gohmansw.bb.1: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry 72950a13cfSDan Gohman tail call void @foo1() 73950a13cfSDan Gohman br label %sw.epilog 74950a13cfSDan Gohman 75950a13cfSDan Gohmansw.bb.2: ; preds = %entry, %entry, %entry, %entry, %entry, %entry 76950a13cfSDan Gohman tail call void @foo2() 77950a13cfSDan Gohman br label %sw.epilog 78950a13cfSDan Gohman 79950a13cfSDan Gohmansw.bb.3: ; preds = %entry 80950a13cfSDan Gohman tail call void @foo3() 81950a13cfSDan Gohman br label %sw.epilog 82950a13cfSDan Gohman 83950a13cfSDan Gohmansw.bb.4: ; preds = %entry 84950a13cfSDan Gohman tail call void @foo4() 85950a13cfSDan Gohman br label %sw.epilog 86950a13cfSDan Gohman 87950a13cfSDan Gohmansw.bb.5: ; preds = %entry 88950a13cfSDan Gohman tail call void @foo5() 89950a13cfSDan Gohman br label %sw.epilog 90950a13cfSDan Gohman 91950a13cfSDan Gohmansw.epilog: ; preds = %entry, %sw.bb.5, %sw.bb.4, %sw.bb.3, %sw.bb.2, %sw.bb.1, %sw.bb 92950a13cfSDan Gohman ret void 93950a13cfSDan Gohman} 94950a13cfSDan Gohman 95*e51c058eSDan Gohman; CHECK-LABEL: bar64: 96*e51c058eSDan Gohman; CHECK: block $BB1_8{{$}} 97*e51c058eSDan Gohman; CHECK: block $BB1_7{{$}} 98*e51c058eSDan Gohman; CHECK: block $BB1_6{{$}} 99*e51c058eSDan Gohman; CHECK: block $BB1_5{{$}} 100*e51c058eSDan Gohman; CHECK: block $BB1_4{{$}} 101*e51c058eSDan Gohman; CHECK: block $BB1_3{{$}} 102*e51c058eSDan Gohman; CHECK: block $BB1_2{{$}} 103*e51c058eSDan Gohman; CHECK: switch {{.*}}, $BB1_2, $BB1_2, $BB1_2, $BB1_2, $BB1_2, $BB1_2, $BB1_2, $BB1_2, $BB1_3, $BB1_3, $BB1_3, $BB1_3, $BB1_3, $BB1_3, $BB1_3, $BB1_3, $BB1_4, $BB1_4, $BB1_4, $BB1_4, $BB1_4, $BB1_4, $BB1_5, $BB1_6, $BB1_7{{$}} 104*e51c058eSDan Gohman; CHECK: BB1_2: 105*e51c058eSDan Gohman; CHECK: call $foo0 106950a13cfSDan Gohman; CHECK: BB1_3: 107*e51c058eSDan Gohman; CHECK: call $foo1 108950a13cfSDan Gohman; CHECK: BB1_4: 109*e51c058eSDan Gohman; CHECK: call $foo2 110950a13cfSDan Gohman; CHECK: BB1_5: 111*e51c058eSDan Gohman; CHECK: call $foo3 112950a13cfSDan Gohman; CHECK: BB1_6: 113*e51c058eSDan Gohman; CHECK: call $foo4 114950a13cfSDan Gohman; CHECK: BB1_7: 115*e51c058eSDan Gohman; CHECK: call $foo5 116950a13cfSDan Gohman; CHECK: BB1_8: 117*e51c058eSDan Gohman; CHECK: return{{$}} 118950a13cfSDan Gohmandefine void @bar64(i64 %n) { 119950a13cfSDan Gohmanentry: 120950a13cfSDan Gohman switch i64 %n, label %sw.epilog [ 121950a13cfSDan Gohman i64 0, label %sw.bb 122950a13cfSDan Gohman i64 1, label %sw.bb 123950a13cfSDan Gohman i64 2, label %sw.bb 124950a13cfSDan Gohman i64 3, label %sw.bb 125950a13cfSDan Gohman i64 4, label %sw.bb 126950a13cfSDan Gohman i64 5, label %sw.bb 127950a13cfSDan Gohman i64 6, label %sw.bb 128950a13cfSDan Gohman i64 7, label %sw.bb.1 129950a13cfSDan Gohman i64 8, label %sw.bb.1 130950a13cfSDan Gohman i64 9, label %sw.bb.1 131950a13cfSDan Gohman i64 10, label %sw.bb.1 132950a13cfSDan Gohman i64 11, label %sw.bb.1 133950a13cfSDan Gohman i64 12, label %sw.bb.1 134950a13cfSDan Gohman i64 13, label %sw.bb.1 135950a13cfSDan Gohman i64 14, label %sw.bb.1 136950a13cfSDan Gohman i64 15, label %sw.bb.2 137950a13cfSDan Gohman i64 16, label %sw.bb.2 138950a13cfSDan Gohman i64 17, label %sw.bb.2 139950a13cfSDan Gohman i64 18, label %sw.bb.2 140950a13cfSDan Gohman i64 19, label %sw.bb.2 141950a13cfSDan Gohman i64 20, label %sw.bb.2 142950a13cfSDan Gohman i64 21, label %sw.bb.3 143950a13cfSDan Gohman i64 22, label %sw.bb.4 144950a13cfSDan Gohman i64 23, label %sw.bb.5 145950a13cfSDan Gohman ] 146950a13cfSDan Gohman 147950a13cfSDan Gohmansw.bb: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry 148950a13cfSDan Gohman tail call void @foo0() 149950a13cfSDan Gohman br label %sw.epilog 150950a13cfSDan Gohman 151950a13cfSDan Gohmansw.bb.1: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry 152950a13cfSDan Gohman tail call void @foo1() 153950a13cfSDan Gohman br label %sw.epilog 154950a13cfSDan Gohman 155950a13cfSDan Gohmansw.bb.2: ; preds = %entry, %entry, %entry, %entry, %entry, %entry 156950a13cfSDan Gohman tail call void @foo2() 157950a13cfSDan Gohman br label %sw.epilog 158950a13cfSDan Gohman 159950a13cfSDan Gohmansw.bb.3: ; preds = %entry 160950a13cfSDan Gohman tail call void @foo3() 161950a13cfSDan Gohman br label %sw.epilog 162950a13cfSDan Gohman 163950a13cfSDan Gohmansw.bb.4: ; preds = %entry 164950a13cfSDan Gohman tail call void @foo4() 165950a13cfSDan Gohman br label %sw.epilog 166950a13cfSDan Gohman 167950a13cfSDan Gohmansw.bb.5: ; preds = %entry 168950a13cfSDan Gohman tail call void @foo5() 169950a13cfSDan Gohman br label %sw.epilog 170950a13cfSDan Gohman 171950a13cfSDan Gohmansw.epilog: ; preds = %entry, %sw.bb.5, %sw.bb.4, %sw.bb.3, %sw.bb.2, %sw.bb.1, %sw.bb 172950a13cfSDan Gohman ret void 173950a13cfSDan Gohman} 174