1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s 2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %} 3 4; CHECK: OpFunction 5; CHECK: OpBranchConditional %[[#]] %[[#if_then:]] %[[#if_end:]] 6; CHECK: %[[#if_then]] = OpLabel 7; CHECK: OpBranch %[[#if_end]] 8; CHECK: %[[#if_end]] = OpLabel 9; CHECK: %[[#Var:]] = OpPhi 10; CHECK: OpSwitch %[[#Var]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] 11; CHECK-COUNT-10: OpLabel 12; CHECK: %[[#epilog:]] = OpLabel 13; CHECK: OpBranch %[[#exit:]] 14; CHECK: %[[#exit]] = OpLabel 15; CHECK: OpReturn 16; CHECK-NOT: OpLabel 17; CHECK-NEXT: OpFunctionEnd 18 19define spir_func void @foo(i64 noundef %addr, i64 noundef %as) { 20entry: 21 %src = inttoptr i64 %as to ptr addrspace(4) 22 %val = load i8, ptr addrspace(4) %src 23 %cmp = icmp sgt i8 %val, 0 24 br i1 %cmp, label %if.then, label %if.end 25 26if.then: 27 %add.ptr = getelementptr inbounds i8, ptr addrspace(4) %src, i64 1 28 %cond = load i8, ptr addrspace(4) %add.ptr 29 br label %if.end 30 31if.end: 32 %swval = phi i8 [ %cond, %if.then ], [ %val, %entry ] 33 switch i8 %swval, label %sw.default [ 34 i8 -127, label %sw.epilog 35 i8 -126, label %sw.bb3 36 i8 -125, label %sw.bb4 37 i8 -111, label %sw.bb5 38 i8 -110, label %sw.bb6 39 i8 -109, label %sw.bb7 40 i8 -15, label %sw.bb8 41 i8 -14, label %sw.bb8 42 i8 -13, label %sw.bb8 43 i8 -124, label %sw.bb9 44 i8 -95, label %sw.bb10 45 i8 -123, label %sw.bb11 46 ] 47 48sw.bb3: 49 br label %sw.epilog 50 51sw.bb4: 52 br label %sw.epilog 53 54sw.bb5: 55 br label %sw.epilog 56 57sw.bb6: 58 br label %sw.epilog 59 60sw.bb7: 61 br label %sw.epilog 62 63sw.bb8: 64 br label %sw.epilog 65 66sw.bb9: 67 br label %sw.epilog 68 69sw.bb10: 70 br label %sw.epilog 71 72sw.bb11: 73 br label %sw.epilog 74 75sw.default: 76 br label %sw.epilog 77 78sw.epilog: 79 br label %exit 80 81exit: 82 ret void 83} 84