53 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}3 4; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV5; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}6 7define spir_kernel void @test_two_switch_same_register(i32 %value) {8; CHECK-SPIRV: OpSwitch %[[#REGISTER:]] %[[#DEFAULT1:]] 1 %[[#CASE1:]] 0 %[[#CASE2:]]9 switch i32 %value, label %default1 [10 i32 1, label %case111 i32 0, label %case212 ]13 14case1:15 br label %default116 17case2:18 br label %default119 20default1:21 switch i32 %value, label %default2 [22 i32 0, label %case323 i32 1, label %case424 ]25 26case3:27 br label %default228 29case4:30 br label %default231 32default2:33 ret void34 35; CHECK-SPIRV: %[[#CASE2]] = OpLabel36; CHECK-SPIRV-NEXT: OpBranch %[[#DEFAULT1]]37 38; CHECK-SPIRV: %[[#CASE1]] = OpLabel39; CHECK-SPIRV-NEXT: OpBranch %[[#DEFAULT1]]40 41; CHECK-SPIRV: %[[#DEFAULT1]] = OpLabel42; CHECK-SPIRV-NEXT: OpSwitch %[[#REGISTER]] %[[#DEFAULT2:]] 0 %[[#CASE3:]] 1 %[[#CASE4:]]43 44; CHECK-SPIRV: %[[#CASE4]] = OpLabel45; CHECK-SPIRV-NEXT: OpBranch %[[#DEFAULT2]]46 47; CHECK-SPIRV: %[[#CASE3]] = OpLabel48; CHECK-SPIRV-NEXT: OpBranch %[[#DEFAULT2]]49 50; CHECK-SPIRV: %[[#DEFAULT2]] = OpLabel51; CHECK-SPIRV-NEXT: OpReturn52}53