blob: 63c77e83c24469ed8bfb26b20a6313b0ac4b9a1b [file] [log] [blame]
Jan Vesely2cb62ce2014-07-10 22:40:21 +00001; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck %s --check-prefix=EG --check-prefix=FUNC
2; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck %s --check-prefix=SI --check-prefix=FUNC
Tom Stellard5a6b0d82013-04-19 02:10:53 +00003
Jan Vesely2cb62ce2014-07-10 22:40:21 +00004; FUNC-LABEL: @fp_to_uint_v2i32
5; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
6; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
7; SI: V_CVT_U32_F32_e32
8; SI: V_CVT_U32_F32_e32
Tom Stellard0344cdf2013-08-01 15:23:42 +00009
10define void @fp_to_uint_v2i32(<2 x i32> addrspace(1)* %out, <2 x float> %in) {
11 %result = fptoui <2 x float> %in to <2 x i32>
12 store <2 x i32> %result, <2 x i32> addrspace(1)* %out
13 ret void
14}
15
Jan Vesely2cb62ce2014-07-10 22:40:21 +000016; FUNC-LABEL: @fp_to_uint_v4i32
17; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
18; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
19; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
20; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
21; SI: V_CVT_U32_F32_e32
22; SI: V_CVT_U32_F32_e32
23; SI: V_CVT_U32_F32_e32
24; SI: V_CVT_U32_F32_e32
Tom Stellard5a6b0d82013-04-19 02:10:53 +000025
26define void @fp_to_uint_v4i32(<4 x i32> addrspace(1)* %out, <4 x float> addrspace(1)* %in) {
27 %value = load <4 x float> addrspace(1) * %in
28 %result = fptoui <4 x float> %value to <4 x i32>
29 store <4 x i32> %result, <4 x i32> addrspace(1)* %out
30 ret void
31}
Jan Vesely2cb62ce2014-07-10 22:40:21 +000032
33; FUNC: @fp_to_uint_i64
34; EG-DAG: AND_INT
35; EG-DAG: LSHR
36; EG-DAG: SUB_INT
37; EG-DAG: AND_INT
38; EG-DAG: ASHR
39; EG-DAG: AND_INT
40; EG-DAG: OR_INT
41; EG-DAG: SUB_INT
42; EG-DAG: LSHL
43; EG-DAG: LSHL
44; EG-DAG: SUB_INT
45; EG-DAG: LSHR
46; EG-DAG: LSHR
47; EG-DAG: SETGT_UINT
48; EG-DAG: SETGT_INT
49; EG-DAG: XOR_INT
50; EG-DAG: XOR_INT
51; EG: SUB_INT
52; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +000053; EG-DAG: CNDE_INT
54; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +000055
56; SI: S_ENDPGM
57define void @fp_to_uint_i64(i64 addrspace(1)* %out, float %x) {
58 %conv = fptoui float %x to i64
59 store i64 %conv, i64 addrspace(1)* %out
60 ret void
61}
62
63; FUNC: @fp_to_uint_v2i64
64; EG-DAG: AND_INT
65; EG-DAG: LSHR
66; EG-DAG: SUB_INT
67; EG-DAG: AND_INT
68; EG-DAG: ASHR
69; EG-DAG: AND_INT
70; EG-DAG: OR_INT
71; EG-DAG: SUB_INT
72; EG-DAG: LSHL
73; EG-DAG: LSHL
74; EG-DAG: SUB_INT
75; EG-DAG: LSHR
76; EG-DAG: LSHR
77; EG-DAG: SETGT_UINT
78; EG-DAG: SETGT_INT
79; EG-DAG: XOR_INT
80; EG-DAG: XOR_INT
81; EG-DAG: SUB_INT
82; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +000083; EG-DAG: CNDE_INT
84; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +000085; EG-DAG: AND_INT
86; EG-DAG: LSHR
87; EG-DAG: SUB_INT
88; EG-DAG: AND_INT
89; EG-DAG: ASHR
90; EG-DAG: AND_INT
91; EG-DAG: OR_INT
92; EG-DAG: SUB_INT
93; EG-DAG: LSHL
94; EG-DAG: LSHL
95; EG-DAG: SUB_INT
96; EG-DAG: LSHR
97; EG-DAG: LSHR
98; EG-DAG: SETGT_UINT
99; EG-DAG: SETGT_INT
100; EG-DAG: XOR_INT
101; EG-DAG: XOR_INT
102; EG-DAG: SUB_INT
103; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000104; EG-DAG: CNDE_INT
105; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000106
107; SI: S_ENDPGM
108define void @fp_to_uint_v2i64(<2 x i64> addrspace(1)* %out, <2 x float> %x) {
109 %conv = fptoui <2 x float> %x to <2 x i64>
110 store <2 x i64> %conv, <2 x i64> addrspace(1)* %out
111 ret void
112}
113
114; FUNC: @fp_to_uint_v4i64
115; EG-DAG: AND_INT
116; EG-DAG: LSHR
117; EG-DAG: SUB_INT
118; EG-DAG: AND_INT
119; EG-DAG: ASHR
120; EG-DAG: AND_INT
121; EG-DAG: OR_INT
122; EG-DAG: SUB_INT
123; EG-DAG: LSHL
124; EG-DAG: LSHL
125; EG-DAG: SUB_INT
126; EG-DAG: LSHR
127; EG-DAG: LSHR
128; EG-DAG: SETGT_UINT
129; EG-DAG: SETGT_INT
130; EG-DAG: XOR_INT
131; EG-DAG: XOR_INT
132; EG-DAG: SUB_INT
133; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000134; EG-DAG: CNDE_INT
135; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000136; EG-DAG: AND_INT
137; EG-DAG: LSHR
138; EG-DAG: SUB_INT
139; EG-DAG: AND_INT
140; EG-DAG: ASHR
141; EG-DAG: AND_INT
142; EG-DAG: OR_INT
143; EG-DAG: SUB_INT
144; EG-DAG: LSHL
145; EG-DAG: LSHL
146; EG-DAG: SUB_INT
147; EG-DAG: LSHR
148; EG-DAG: LSHR
149; EG-DAG: SETGT_UINT
150; EG-DAG: SETGT_INT
151; EG-DAG: XOR_INT
152; EG-DAG: XOR_INT
153; EG-DAG: SUB_INT
154; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000155; EG-DAG: CNDE_INT
156; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000157; EG-DAG: AND_INT
158; EG-DAG: LSHR
159; EG-DAG: SUB_INT
160; EG-DAG: AND_INT
161; EG-DAG: ASHR
162; EG-DAG: AND_INT
163; EG-DAG: OR_INT
164; EG-DAG: SUB_INT
165; EG-DAG: LSHL
166; EG-DAG: LSHL
167; EG-DAG: SUB_INT
168; EG-DAG: LSHR
169; EG-DAG: LSHR
170; EG-DAG: SETGT_UINT
171; EG-DAG: SETGT_INT
172; EG-DAG: XOR_INT
173; EG-DAG: XOR_INT
174; EG-DAG: SUB_INT
175; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000176; EG-DAG: CNDE_INT
177; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000178; EG-DAG: AND_INT
179; EG-DAG: LSHR
180; EG-DAG: SUB_INT
181; EG-DAG: AND_INT
182; EG-DAG: ASHR
183; EG-DAG: AND_INT
184; EG-DAG: OR_INT
185; EG-DAG: SUB_INT
186; EG-DAG: LSHL
187; EG-DAG: LSHL
188; EG-DAG: SUB_INT
189; EG-DAG: LSHR
190; EG-DAG: LSHR
191; EG-DAG: SETGT_UINT
192; EG-DAG: SETGT_INT
193; EG-DAG: XOR_INT
194; EG-DAG: XOR_INT
195; EG-DAG: SUB_INT
196; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000197; EG-DAG: CNDE_INT
198; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000199
200; SI: S_ENDPGM
201define void @fp_to_uint_v4i64(<4 x i64> addrspace(1)* %out, <4 x float> %x) {
202 %conv = fptoui <4 x float> %x to <4 x i64>
203 store <4 x i64> %conv, <4 x i64> addrspace(1)* %out
204 ret void
205}