xref: /llvm-project/llvm/test/CodeGen/SPIRV/sitofp-with-bool.ll (revision 43222bd3091db5403e3320d23a241a534c1eefec)
1; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
2
3; CHECK-DAG: %[[#int_32:]] = OpTypeInt 32 0
4; CHECK-DAG: %[[#float:]] = OpTypeFloat 32
5; CHECK-DAG: %[[#bool:]] = OpTypeBool
6; CHECK-DAG: %[[#zero:]] = OpConstant %[[#int_32]] 0
7; CHECK-DAG: %[[#one:]] = OpConstant %[[#int_32]] 1
8; CHECK-DAG: %[[#ptr:]] = OpTypePointer CrossWorkgroup %[[#float]]
9
10; CHECK: OpFunction
11; CHECK: %[[#A:]] = OpFunctionParameter %[[#ptr]]
12; CHECK: %[[#B:]] = OpFunctionParameter %[[#]]
13; CHECK: %[[#cmp_res:]] = OpSGreaterThan %[[#bool]] %[[#B]] %[[#zero]]
14; CHECK: %[[#select_res:]] = OpSelect %[[#int_32]] %[[#cmp_res]] %[[#one]] %[[#zero]]
15; CHECK: %[[#stof_res:]] = OpConvertSToF %[[#]] %[[#select_res]]
16; CHECK: OpStore %[[#A]] %[[#stof_res]]
17
18define dso_local spir_kernel void @K(ptr addrspace(1) nocapture %A, i32 %B) local_unnamed_addr {
19entry:
20  %cmp = icmp sgt i32 %B, 0
21  %conv = sitofp i1 %cmp to float
22  store float %conv, float addrspace(1)* %A, align 4
23  ret void
24}
25