[Frontend] Remove unused includes (NFC) (#116927)
[llvm-project.git] / llvm / test / CodeGen / SPIRV / branching / switch-range-check.ll
blob9981e0d86eaa34588630f7ca91aed196ac8dc469
1 ; RUN: llc -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 %}
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
19 define spir_func void @foo(i64 noundef %addr, i64 noundef %as) {
20 entry:
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
26 if.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
31 if.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   ]
48 sw.bb3:
49   br label %sw.epilog
51 sw.bb4:
52   br label %sw.epilog
54 sw.bb5:
55   br label %sw.epilog
57 sw.bb6:
58   br label %sw.epilog
60 sw.bb7:
61   br label %sw.epilog
63 sw.bb8:
64   br label %sw.epilog
66 sw.bb9:
67   br label %sw.epilog
69 sw.bb10:
70   br label %sw.epilog
72 sw.bb11:
73   br label %sw.epilog
75 sw.default:
76   br label %sw.epilog
78 sw.epilog:
79   br label %exit
81 exit:
82   ret void