brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 25c2c86 Raw
84 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}3 4; CHECK: OpFunction5; CHECK: OpBranchConditional %[[#]] %[[#if_then:]] %[[#if_end:]]6; CHECK: %[[#if_then]] = OpLabel7; CHECK: OpBranch %[[#if_end]]8; CHECK: %[[#if_end]] = OpLabel9; CHECK: %[[#Var:]] = OpPhi10; CHECK: OpSwitch %[[#Var]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]] [[#]] %[[#]]11; CHECK-COUNT-10: OpLabel12; CHECK: %[[#epilog:]] = OpLabel13; CHECK:                 OpBranch %[[#exit:]]14; CHECK:    %[[#exit]] = OpLabel15; CHECK:                 OpReturn16; CHECK-NOT: OpLabel17; CHECK-NEXT: OpFunctionEnd18 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) %src23  %cmp = icmp sgt i8 %val, 024  br i1 %cmp, label %if.then, label %if.end25 26if.then:27  %add.ptr = getelementptr inbounds i8, ptr addrspace(4) %src, i64 128  %cond = load i8, ptr addrspace(4) %add.ptr29  br label %if.end30 31if.end:32  %swval = phi i8 [ %cond, %if.then ], [ %val, %entry ]33  switch i8 %swval, label %sw.default [34    i8 -127, label %sw.epilog35    i8 -126, label %sw.bb336    i8 -125, label %sw.bb437    i8 -111, label %sw.bb538    i8 -110, label %sw.bb639    i8 -109, label %sw.bb740    i8 -15, label %sw.bb841    i8 -14, label %sw.bb842    i8 -13, label %sw.bb843    i8 -124, label %sw.bb944    i8 -95, label %sw.bb1045    i8 -123, label %sw.bb1146  ]47 48sw.bb3:49  br label %sw.epilog50 51sw.bb4:52  br label %sw.epilog53 54sw.bb5:55  br label %sw.epilog56 57sw.bb6:58  br label %sw.epilog59 60sw.bb7:61  br label %sw.epilog62 63sw.bb8:64  br label %sw.epilog65 66sw.bb9:67  br label %sw.epilog68 69sw.bb10:70  br label %sw.epilog71 72sw.bb11:73  br label %sw.epilog74 75sw.default:76  br label %sw.epilog77 78sw.epilog:79  br label %exit80 81exit:82  ret void83}84