1; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s
2
3; CHECK-DAG: OpName [[SCALARi32:%.+]] "select_i32"
4; CHECK-DAG: OpName [[VEC2i32:%.+]] "select_i32v2"
5; CHECK-DAG: OpName [[VEC2i32v2:%.+]] "select_v2i32v2"
6
7; CHECK: [[SCALARi32]] = OpFunction
8; CHECK-NEXT: [[C:%.+]] = OpFunctionParameter
9; CHECK-NEXT: [[T:%.+]] = OpFunctionParameter
10; CHECK-NEXT: [[F:%.+]] = OpFunctionParameter
11; CHECK: OpLabel
12; CHECK: [[R:%.+]] = OpSelect {{%.+}} [[C]] [[T]] [[F]]
13; CHECK: OpReturnValue [[R]]
14; CHECK-NEXT: OpFunctionEnd
15define i32 @select_i32(i1 %c, i32 %t, i32 %f) {
16  %r = select i1 %c, i32 %t, i32 %f
17  ret i32 %r
18}
19
20; CHECK: [[VEC2i32]] = OpFunction
21; CHECK-NEXT: [[C:%.+]] = OpFunctionParameter
22; CHECK-NEXT: [[T:%.+]] = OpFunctionParameter
23; CHECK-NEXT: [[F:%.+]] = OpFunctionParameter
24; CHECK: OpLabel
25; CHECK: [[R:%.+]] = OpSelect {{%.+}} [[C]] [[T]] [[F]]
26; CHECK: OpReturnValue [[R]]
27; CHECK-NEXT: OpFunctionEnd
28define <2 x i32> @select_i32v2(i1 %c, <2 x i32> %t, <2 x i32> %f) {
29  %r = select i1 %c, <2 x i32> %t, <2 x i32> %f
30  ret <2 x i32> %r
31}
32
33; CHECK: [[VEC2i32v2]] = OpFunction
34; CHECK-NEXT: [[C:%.+]] = OpFunctionParameter
35; CHECK-NEXT: [[T:%.+]] = OpFunctionParameter
36; CHECK-NEXT: [[F:%.+]] = OpFunctionParameter
37; CHECK: OpLabel
38; CHECK: [[R:%.+]] = OpSelect {{%.+}} [[C]] [[T]] [[F]]
39; CHECK: OpReturnValue [[R]]
40; CHECK-NEXT: OpFunctionEnd
41define <2 x i32> @select_v2i32v2(<2 x i1> %c, <2 x i32> %t, <2 x i32> %f) {
42  %r = select <2 x i1> %c, <2 x i32> %t, <2 x i32> %f
43  ret <2 x i32> %r
44}
45