blob: 6e71823a1327381c3fbdfc06823179edb251f5bb [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
Matt Arsenault42d15652014-09-25 23:16:18 +00004; FUNC-LABEL: @fp_to_uint_i32
5; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
6; SI: V_CVT_U32_F32_e32
7; SI: S_ENDPGM
8define void @fp_to_uint_i32 (i32 addrspace(1)* %out, float %in) {
9 %conv = fptoui float %in to i32
10 store i32 %conv, i32 addrspace(1)* %out
11 ret void
12}
13
Jan Vesely2cb62ce2014-07-10 22:40:21 +000014; FUNC-LABEL: @fp_to_uint_v2i32
15; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
16; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
17; SI: V_CVT_U32_F32_e32
18; SI: V_CVT_U32_F32_e32
Tom Stellard0344cdf2013-08-01 15:23:42 +000019
20define void @fp_to_uint_v2i32(<2 x i32> addrspace(1)* %out, <2 x float> %in) {
21 %result = fptoui <2 x float> %in to <2 x i32>
22 store <2 x i32> %result, <2 x i32> addrspace(1)* %out
23 ret void
24}
25
Jan Vesely2cb62ce2014-07-10 22:40:21 +000026; FUNC-LABEL: @fp_to_uint_v4i32
27; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
28; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
29; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
30; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
31; SI: V_CVT_U32_F32_e32
32; SI: V_CVT_U32_F32_e32
33; SI: V_CVT_U32_F32_e32
34; SI: V_CVT_U32_F32_e32
Tom Stellard5a6b0d82013-04-19 02:10:53 +000035
36define void @fp_to_uint_v4i32(<4 x i32> addrspace(1)* %out, <4 x float> addrspace(1)* %in) {
37 %value = load <4 x float> addrspace(1) * %in
38 %result = fptoui <4 x float> %value to <4 x i32>
39 store <4 x i32> %result, <4 x i32> addrspace(1)* %out
40 ret void
41}
Jan Vesely2cb62ce2014-07-10 22:40:21 +000042
43; FUNC: @fp_to_uint_i64
44; EG-DAG: AND_INT
45; EG-DAG: LSHR
46; EG-DAG: SUB_INT
47; EG-DAG: AND_INT
48; EG-DAG: ASHR
49; EG-DAG: AND_INT
50; EG-DAG: OR_INT
51; EG-DAG: SUB_INT
52; EG-DAG: LSHL
53; EG-DAG: LSHL
54; EG-DAG: SUB_INT
55; EG-DAG: LSHR
56; EG-DAG: LSHR
57; EG-DAG: SETGT_UINT
58; EG-DAG: SETGT_INT
59; EG-DAG: XOR_INT
60; EG-DAG: XOR_INT
61; EG: SUB_INT
62; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +000063; EG-DAG: CNDE_INT
64; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +000065
66; SI: S_ENDPGM
67define void @fp_to_uint_i64(i64 addrspace(1)* %out, float %x) {
68 %conv = fptoui float %x to i64
69 store i64 %conv, i64 addrspace(1)* %out
70 ret void
71}
72
73; FUNC: @fp_to_uint_v2i64
74; EG-DAG: AND_INT
75; EG-DAG: LSHR
76; EG-DAG: SUB_INT
77; EG-DAG: AND_INT
78; EG-DAG: ASHR
79; EG-DAG: AND_INT
80; EG-DAG: OR_INT
81; EG-DAG: SUB_INT
82; EG-DAG: LSHL
83; EG-DAG: LSHL
84; EG-DAG: SUB_INT
85; EG-DAG: LSHR
86; EG-DAG: LSHR
87; EG-DAG: SETGT_UINT
88; EG-DAG: SETGT_INT
89; EG-DAG: XOR_INT
90; EG-DAG: XOR_INT
91; EG-DAG: SUB_INT
92; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +000093; EG-DAG: CNDE_INT
94; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +000095; EG-DAG: AND_INT
96; EG-DAG: LSHR
97; EG-DAG: SUB_INT
98; EG-DAG: AND_INT
99; EG-DAG: ASHR
100; EG-DAG: AND_INT
101; EG-DAG: OR_INT
102; EG-DAG: SUB_INT
103; EG-DAG: LSHL
104; EG-DAG: LSHL
105; EG-DAG: SUB_INT
106; EG-DAG: LSHR
107; EG-DAG: LSHR
108; EG-DAG: SETGT_UINT
109; EG-DAG: SETGT_INT
110; EG-DAG: XOR_INT
111; EG-DAG: XOR_INT
112; EG-DAG: SUB_INT
113; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000114; EG-DAG: CNDE_INT
115; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000116
117; SI: S_ENDPGM
118define void @fp_to_uint_v2i64(<2 x i64> addrspace(1)* %out, <2 x float> %x) {
119 %conv = fptoui <2 x float> %x to <2 x i64>
120 store <2 x i64> %conv, <2 x i64> addrspace(1)* %out
121 ret void
122}
123
124; FUNC: @fp_to_uint_v4i64
125; EG-DAG: AND_INT
126; EG-DAG: LSHR
127; EG-DAG: SUB_INT
128; EG-DAG: AND_INT
129; EG-DAG: ASHR
130; EG-DAG: AND_INT
131; EG-DAG: OR_INT
132; EG-DAG: SUB_INT
133; EG-DAG: LSHL
134; EG-DAG: LSHL
135; EG-DAG: SUB_INT
136; EG-DAG: LSHR
137; EG-DAG: LSHR
138; EG-DAG: SETGT_UINT
139; EG-DAG: SETGT_INT
140; EG-DAG: XOR_INT
141; EG-DAG: XOR_INT
142; EG-DAG: SUB_INT
143; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000144; EG-DAG: CNDE_INT
145; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000146; EG-DAG: AND_INT
147; EG-DAG: LSHR
148; EG-DAG: SUB_INT
149; EG-DAG: AND_INT
150; EG-DAG: ASHR
151; EG-DAG: AND_INT
152; EG-DAG: OR_INT
153; EG-DAG: SUB_INT
154; EG-DAG: LSHL
155; EG-DAG: LSHL
156; EG-DAG: SUB_INT
157; EG-DAG: LSHR
158; EG-DAG: LSHR
159; EG-DAG: SETGT_UINT
160; EG-DAG: SETGT_INT
161; EG-DAG: XOR_INT
162; EG-DAG: XOR_INT
163; EG-DAG: SUB_INT
164; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000165; EG-DAG: CNDE_INT
166; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000167; EG-DAG: AND_INT
168; EG-DAG: LSHR
169; EG-DAG: SUB_INT
170; EG-DAG: AND_INT
171; EG-DAG: ASHR
172; EG-DAG: AND_INT
173; EG-DAG: OR_INT
174; EG-DAG: SUB_INT
175; EG-DAG: LSHL
176; EG-DAG: LSHL
177; EG-DAG: SUB_INT
178; EG-DAG: LSHR
179; EG-DAG: LSHR
180; EG-DAG: SETGT_UINT
181; EG-DAG: SETGT_INT
182; EG-DAG: XOR_INT
183; EG-DAG: XOR_INT
184; EG-DAG: SUB_INT
185; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000186; EG-DAG: CNDE_INT
187; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000188; EG-DAG: AND_INT
189; EG-DAG: LSHR
190; EG-DAG: SUB_INT
191; EG-DAG: AND_INT
192; EG-DAG: ASHR
193; EG-DAG: AND_INT
194; EG-DAG: OR_INT
195; EG-DAG: SUB_INT
196; EG-DAG: LSHL
197; EG-DAG: LSHL
198; EG-DAG: SUB_INT
199; EG-DAG: LSHR
200; EG-DAG: LSHR
201; EG-DAG: SETGT_UINT
202; EG-DAG: SETGT_INT
203; EG-DAG: XOR_INT
204; EG-DAG: XOR_INT
205; EG-DAG: SUB_INT
206; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000207; EG-DAG: CNDE_INT
208; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000209
210; SI: S_ENDPGM
211define void @fp_to_uint_v4i64(<4 x i64> addrspace(1)* %out, <4 x float> %x) {
212 %conv = fptoui <4 x float> %x to <4 x i64>
213 store <4 x i64> %conv, <4 x i64> addrspace(1)* %out
214 ret void
215}