blob: 79d896bbcc7279381e24684508fc39400ae7168f [file] [log] [blame]
Aaron Watry05172752013-06-25 13:55:54 +00001;RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck --check-prefix=EG-CHECK %s
Tom Stellarda99c6ae2013-05-10 02:09:24 +00002
Aaron Watry05172752013-06-25 13:55:54 +00003;EG-CHECK: @test_select_v2i32
4;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
5;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
6
7define void @test_select_v2i32(<2 x i32> addrspace(1)* %out, <2 x i32> addrspace(1)* %in0, <2 x i32> addrspace(1)* %in1) {
8entry:
9 %0 = load <2 x i32> addrspace(1)* %in0
10 %1 = load <2 x i32> addrspace(1)* %in1
11 %cmp = icmp ne <2 x i32> %0, %1
12 %result = select <2 x i1> %cmp, <2 x i32> %0, <2 x i32> %1
13 store <2 x i32> %result, <2 x i32> addrspace(1)* %out
14 ret void
15}
16
Tom Stellard67ae4762013-07-18 21:43:35 +000017;EG-CHECK: @test_select_v2f32
18;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
19;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
20
21define void @test_select_v2f32(<2 x float> addrspace(1)* %out, <2 x float> addrspace(1)* %in0, <2 x float> addrspace(1)* %in1) {
22entry:
23 %0 = load <2 x float> addrspace(1)* %in0
24 %1 = load <2 x float> addrspace(1)* %in1
25 %cmp = fcmp one <2 x float> %0, %1
26 %result = select <2 x i1> %cmp, <2 x float> %0, <2 x float> %1
27 store <2 x float> %result, <2 x float> addrspace(1)* %out
28 ret void
29}
30
Aaron Watry05172752013-06-25 13:55:54 +000031;EG-CHECK: @test_select_v4i32
32;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
33;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
34;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
35;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
Tom Stellarda99c6ae2013-05-10 02:09:24 +000036
37define void @test_select_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %in0, <4 x i32> addrspace(1)* %in1) {
38entry:
39 %0 = load <4 x i32> addrspace(1)* %in0
40 %1 = load <4 x i32> addrspace(1)* %in1
41 %cmp = icmp ne <4 x i32> %0, %1
42 %result = select <4 x i1> %cmp, <4 x i32> %0, <4 x i32> %1
43 store <4 x i32> %result, <4 x i32> addrspace(1)* %out
44 ret void
45}
Tom Stellard67ae4762013-07-18 21:43:35 +000046
47;EG-CHECK: @test_select_v4f32
48;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
49;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
50;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
51;EG-CHECK: CNDE_INT {{\*? *}}T{{[0-9]+\.[XYZW], PV\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
52
53define void @test_select_v4f32(<4 x float> addrspace(1)* %out, <4 x float> addrspace(1)* %in0, <4 x float> addrspace(1)* %in1) {
54entry:
55 %0 = load <4 x float> addrspace(1)* %in0
56 %1 = load <4 x float> addrspace(1)* %in1
57 %cmp = fcmp one <4 x float> %0, %1
58 %result = select <4 x i1> %cmp, <4 x float> %0, <4 x float> %1
59 store <4 x float> %result, <4 x float> addrspace(1)* %out
60 ret void
61}