xref: /llvm-project/llvm/test/CodeGen/SPIRV/instructions/select.ll (revision 67d3ef74b31e1517d4f679e754cc2b3041c95901)
1*67d3ef74SVyacheslav Levytskyy; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s
2f7680835SVyacheslav Levytskyy; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}
3b8e1544bSIlia Diachkov
4*67d3ef74SVyacheslav Levytskyy; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
5b512df66SVyacheslav Levytskyy; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
6b512df66SVyacheslav Levytskyy
7b8e1544bSIlia Diachkov; CHECK-DAG:  OpName [[SCALARi32:%.+]] "select_i32"
8f7680835SVyacheslav Levytskyy; CHECK-DAG:  OpName [[SCALARPTR:%.+]] "select_ptr"
9b8e1544bSIlia Diachkov; CHECK-DAG:  OpName [[VEC2i32:%.+]] "select_i32v2"
10b8e1544bSIlia Diachkov; CHECK-DAG:  OpName [[VEC2i32v2:%.+]] "select_v2i32v2"
11b8e1544bSIlia Diachkov
12b8e1544bSIlia Diachkov; CHECK:      [[SCALARi32]] = OpFunction
13b8e1544bSIlia Diachkov; CHECK-NEXT: [[C:%.+]] = OpFunctionParameter
14b8e1544bSIlia Diachkov; CHECK-NEXT: [[T:%.+]] = OpFunctionParameter
15b8e1544bSIlia Diachkov; CHECK-NEXT: [[F:%.+]] = OpFunctionParameter
16b8e1544bSIlia Diachkov; CHECK:      OpLabel
17b8e1544bSIlia Diachkov; CHECK:      [[R:%.+]] = OpSelect {{%.+}} [[C]] [[T]] [[F]]
18b8e1544bSIlia Diachkov; CHECK:      OpReturnValue [[R]]
19b8e1544bSIlia Diachkov; CHECK-NEXT: OpFunctionEnd
20b8e1544bSIlia Diachkovdefine i32 @select_i32(i1 %c, i32 %t, i32 %f) {
21b8e1544bSIlia Diachkov  %r = select i1 %c, i32 %t, i32 %f
22b8e1544bSIlia Diachkov  ret i32 %r
23b8e1544bSIlia Diachkov}
24b8e1544bSIlia Diachkov
25f7680835SVyacheslav Levytskyy; CHECK:      [[SCALARPTR]] = OpFunction
26f7680835SVyacheslav Levytskyy; CHECK-NEXT: [[C:%.+]] = OpFunctionParameter
27f7680835SVyacheslav Levytskyy; CHECK-NEXT: [[T:%.+]] = OpFunctionParameter
28f7680835SVyacheslav Levytskyy; CHECK-NEXT: [[F:%.+]] = OpFunctionParameter
29f7680835SVyacheslav Levytskyy; CHECK:      OpLabel
30f7680835SVyacheslav Levytskyy; CHECK:      [[R:%.+]] = OpSelect {{%.+}} [[C]] [[T]] [[F]]
31f7680835SVyacheslav Levytskyy; CHECK:      OpReturnValue [[R]]
32f7680835SVyacheslav Levytskyy; CHECK-NEXT: OpFunctionEnd
33f7680835SVyacheslav Levytskyydefine ptr @select_ptr(i1 %c, ptr %t, ptr %f) {
34f7680835SVyacheslav Levytskyy  %r = select i1 %c, ptr %t, ptr %f
35f7680835SVyacheslav Levytskyy  ret ptr %r
36f7680835SVyacheslav Levytskyy}
37f7680835SVyacheslav Levytskyy
38b8e1544bSIlia Diachkov; CHECK:      [[VEC2i32]] = OpFunction
39b8e1544bSIlia Diachkov; CHECK-NEXT: [[C:%.+]] = OpFunctionParameter
40b8e1544bSIlia Diachkov; CHECK-NEXT: [[T:%.+]] = OpFunctionParameter
41b8e1544bSIlia Diachkov; CHECK-NEXT: [[F:%.+]] = OpFunctionParameter
42b8e1544bSIlia Diachkov; CHECK:      OpLabel
43b8e1544bSIlia Diachkov; CHECK:      [[R:%.+]] = OpSelect {{%.+}} [[C]] [[T]] [[F]]
44b8e1544bSIlia Diachkov; CHECK:      OpReturnValue [[R]]
45b8e1544bSIlia Diachkov; CHECK-NEXT: OpFunctionEnd
46b8e1544bSIlia Diachkovdefine <2 x i32> @select_i32v2(i1 %c, <2 x i32> %t, <2 x i32> %f) {
47b8e1544bSIlia Diachkov  %r = select i1 %c, <2 x i32> %t, <2 x i32> %f
48b8e1544bSIlia Diachkov  ret <2 x i32> %r
49b8e1544bSIlia Diachkov}
50b8e1544bSIlia Diachkov
51b8e1544bSIlia Diachkov; CHECK:      [[VEC2i32v2]] = OpFunction
52b8e1544bSIlia Diachkov; CHECK-NEXT: [[C:%.+]] = OpFunctionParameter
53b8e1544bSIlia Diachkov; CHECK-NEXT: [[T:%.+]] = OpFunctionParameter
54b8e1544bSIlia Diachkov; CHECK-NEXT: [[F:%.+]] = OpFunctionParameter
55b8e1544bSIlia Diachkov; CHECK:      OpLabel
56b8e1544bSIlia Diachkov; CHECK:      [[R:%.+]] = OpSelect {{%.+}} [[C]] [[T]] [[F]]
57b8e1544bSIlia Diachkov; CHECK:      OpReturnValue [[R]]
58b8e1544bSIlia Diachkov; CHECK-NEXT: OpFunctionEnd
59b8e1544bSIlia Diachkovdefine <2 x i32> @select_v2i32v2(<2 x i1> %c, <2 x i32> %t, <2 x i32> %f) {
60b8e1544bSIlia Diachkov  %r = select <2 x i1> %c, <2 x i32> %t, <2 x i32> %f
61b8e1544bSIlia Diachkov  ret <2 x i32> %r
62b8e1544bSIlia Diachkov}
63