blob: 5970adf999c95180a2645415b12fb2802c5ba7ea [file] [log] [blame]
Matt Arsenault6f1e96b2014-12-02 21:02:20 +00001; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck %s -check-prefix=EG -check-prefix=FUNC
Tom Stellard49f8bfd2015-01-06 18:00:21 +00002; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck %s -check-prefix=SI -check-prefix=FUNC
Tom Stellard5a6b0d82013-04-19 02:10:53 +00003
Matt Arsenault6f1e96b2014-12-02 21:02:20 +00004; FUNC-LABEL: {{^}}fp_to_uint_f32_to_i32:
Matt Arsenault42d15652014-09-25 23:16:18 +00005; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
Matt Arsenault6f1e96b2014-12-02 21:02:20 +00006
Tom Stellard326d6ec2014-11-05 14:50:53 +00007; SI: v_cvt_u32_f32_e32
8; SI: s_endpgm
Matt Arsenault6f1e96b2014-12-02 21:02:20 +00009define void @fp_to_uint_f32_to_i32 (i32 addrspace(1)* %out, float %in) {
Matt Arsenault42d15652014-09-25 23:16:18 +000010 %conv = fptoui float %in to i32
11 store i32 %conv, i32 addrspace(1)* %out
12 ret void
13}
14
Matt Arsenault6f1e96b2014-12-02 21:02:20 +000015; FUNC-LABEL: {{^}}fp_to_uint_v2f32_to_v2i32:
Jan Vesely2cb62ce2014-07-10 22:40:21 +000016; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
17; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
Tom Stellard0344cdf2013-08-01 15:23:42 +000018
Matt Arsenault6f1e96b2014-12-02 21:02:20 +000019; SI: v_cvt_u32_f32_e32
20; SI: v_cvt_u32_f32_e32
21define void @fp_to_uint_v2f32_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x float> %in) {
Tom Stellard0344cdf2013-08-01 15:23:42 +000022 %result = fptoui <2 x float> %in to <2 x i32>
23 store <2 x i32> %result, <2 x i32> addrspace(1)* %out
24 ret void
25}
26
Matt Arsenault6f1e96b2014-12-02 21:02:20 +000027; FUNC-LABEL: {{^}}fp_to_uint_v4f32_to_v4i32:
Jan Vesely2cb62ce2014-07-10 22:40:21 +000028; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
29; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
30; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
31; EG: FLT_TO_UINT {{\** *}}T{{[0-9]+\.[XYZW], PV\.[XYZW]}}
Tom Stellard326d6ec2014-11-05 14:50:53 +000032; SI: v_cvt_u32_f32_e32
33; SI: v_cvt_u32_f32_e32
34; SI: v_cvt_u32_f32_e32
35; SI: v_cvt_u32_f32_e32
Tom Stellard5a6b0d82013-04-19 02:10:53 +000036
Matt Arsenault6f1e96b2014-12-02 21:02:20 +000037define void @fp_to_uint_v4f32_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x float> addrspace(1)* %in) {
Tom Stellard5a6b0d82013-04-19 02:10:53 +000038 %value = load <4 x float> addrspace(1) * %in
39 %result = fptoui <4 x float> %value to <4 x i32>
40 store <4 x i32> %result, <4 x i32> addrspace(1)* %out
41 ret void
42}
Jan Vesely2cb62ce2014-07-10 22:40:21 +000043
Matt Arsenault6f1e96b2014-12-02 21:02:20 +000044; FUNC: {{^}}fp_to_uint_f32_to_i64:
Jan Vesely2cb62ce2014-07-10 22:40:21 +000045; EG-DAG: AND_INT
46; EG-DAG: LSHR
47; EG-DAG: SUB_INT
48; EG-DAG: AND_INT
49; EG-DAG: ASHR
50; EG-DAG: AND_INT
51; EG-DAG: OR_INT
52; EG-DAG: SUB_INT
53; EG-DAG: LSHL
54; EG-DAG: LSHL
55; EG-DAG: SUB_INT
56; EG-DAG: LSHR
57; EG-DAG: LSHR
58; EG-DAG: SETGT_UINT
59; EG-DAG: SETGT_INT
60; EG-DAG: XOR_INT
61; EG-DAG: XOR_INT
62; EG: SUB_INT
63; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +000064; EG-DAG: CNDE_INT
65; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +000066
Tom Stellard326d6ec2014-11-05 14:50:53 +000067; SI: s_endpgm
Matt Arsenault6f1e96b2014-12-02 21:02:20 +000068define void @fp_to_uint_f32_to_i64(i64 addrspace(1)* %out, float %x) {
Jan Vesely2cb62ce2014-07-10 22:40:21 +000069 %conv = fptoui float %x to i64
70 store i64 %conv, i64 addrspace(1)* %out
71 ret void
72}
73
Matt Arsenault6f1e96b2014-12-02 21:02:20 +000074; FUNC: {{^}}fp_to_uint_v2f32_to_v2i64:
Jan Vesely2cb62ce2014-07-10 22:40:21 +000075; EG-DAG: AND_INT
76; EG-DAG: LSHR
77; EG-DAG: SUB_INT
78; EG-DAG: AND_INT
79; EG-DAG: ASHR
80; EG-DAG: AND_INT
81; EG-DAG: OR_INT
82; EG-DAG: SUB_INT
83; EG-DAG: LSHL
84; EG-DAG: LSHL
85; EG-DAG: SUB_INT
86; EG-DAG: LSHR
87; EG-DAG: LSHR
88; EG-DAG: SETGT_UINT
89; EG-DAG: SETGT_INT
90; EG-DAG: XOR_INT
91; EG-DAG: XOR_INT
92; EG-DAG: SUB_INT
93; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +000094; EG-DAG: CNDE_INT
95; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +000096; EG-DAG: AND_INT
97; EG-DAG: LSHR
98; EG-DAG: SUB_INT
99; EG-DAG: AND_INT
100; EG-DAG: ASHR
101; EG-DAG: AND_INT
102; EG-DAG: OR_INT
103; EG-DAG: SUB_INT
104; EG-DAG: LSHL
105; EG-DAG: LSHL
106; EG-DAG: SUB_INT
107; EG-DAG: LSHR
108; EG-DAG: LSHR
109; EG-DAG: SETGT_UINT
110; EG-DAG: SETGT_INT
111; EG-DAG: XOR_INT
112; EG-DAG: XOR_INT
113; EG-DAG: SUB_INT
114; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000115; EG-DAG: CNDE_INT
116; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000117
Tom Stellard326d6ec2014-11-05 14:50:53 +0000118; SI: s_endpgm
Matt Arsenault6f1e96b2014-12-02 21:02:20 +0000119define void @fp_to_uint_v2f32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x float> %x) {
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000120 %conv = fptoui <2 x float> %x to <2 x i64>
121 store <2 x i64> %conv, <2 x i64> addrspace(1)* %out
122 ret void
123}
124
Matt Arsenault6f1e96b2014-12-02 21:02:20 +0000125; FUNC: {{^}}fp_to_uint_v4f32_to_v4i64:
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000126; EG-DAG: AND_INT
127; EG-DAG: LSHR
128; EG-DAG: SUB_INT
129; EG-DAG: AND_INT
130; EG-DAG: ASHR
131; EG-DAG: AND_INT
132; EG-DAG: OR_INT
133; EG-DAG: SUB_INT
134; EG-DAG: LSHL
135; EG-DAG: LSHL
136; EG-DAG: SUB_INT
137; EG-DAG: LSHR
138; EG-DAG: LSHR
139; EG-DAG: SETGT_UINT
140; EG-DAG: SETGT_INT
141; EG-DAG: XOR_INT
142; EG-DAG: XOR_INT
143; EG-DAG: SUB_INT
144; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000145; EG-DAG: CNDE_INT
146; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000147; EG-DAG: AND_INT
148; EG-DAG: LSHR
149; EG-DAG: SUB_INT
150; EG-DAG: AND_INT
151; EG-DAG: ASHR
152; EG-DAG: AND_INT
153; EG-DAG: OR_INT
154; EG-DAG: SUB_INT
155; EG-DAG: LSHL
156; EG-DAG: LSHL
157; EG-DAG: SUB_INT
158; EG-DAG: LSHR
159; EG-DAG: LSHR
160; EG-DAG: SETGT_UINT
161; EG-DAG: SETGT_INT
162; EG-DAG: XOR_INT
163; EG-DAG: XOR_INT
164; EG-DAG: SUB_INT
165; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000166; EG-DAG: CNDE_INT
167; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000168; EG-DAG: AND_INT
169; EG-DAG: LSHR
170; EG-DAG: SUB_INT
171; EG-DAG: AND_INT
172; EG-DAG: ASHR
173; EG-DAG: AND_INT
174; EG-DAG: OR_INT
175; EG-DAG: SUB_INT
176; EG-DAG: LSHL
177; EG-DAG: LSHL
178; EG-DAG: SUB_INT
179; EG-DAG: LSHR
180; EG-DAG: LSHR
181; EG-DAG: SETGT_UINT
182; EG-DAG: SETGT_INT
183; EG-DAG: XOR_INT
184; EG-DAG: XOR_INT
185; EG-DAG: SUB_INT
186; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000187; EG-DAG: CNDE_INT
188; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000189; EG-DAG: AND_INT
190; EG-DAG: LSHR
191; EG-DAG: SUB_INT
192; EG-DAG: AND_INT
193; EG-DAG: ASHR
194; EG-DAG: AND_INT
195; EG-DAG: OR_INT
196; EG-DAG: SUB_INT
197; EG-DAG: LSHL
198; EG-DAG: LSHL
199; EG-DAG: SUB_INT
200; EG-DAG: LSHR
201; EG-DAG: LSHR
202; EG-DAG: SETGT_UINT
203; EG-DAG: SETGT_INT
204; EG-DAG: XOR_INT
205; EG-DAG: XOR_INT
206; EG-DAG: SUB_INT
207; EG-DAG: SUB_INT
Chandler Carruth411fb402014-07-26 05:49:40 +0000208; EG-DAG: CNDE_INT
209; EG-DAG: CNDE_INT
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000210
Tom Stellard326d6ec2014-11-05 14:50:53 +0000211; SI: s_endpgm
Matt Arsenault6f1e96b2014-12-02 21:02:20 +0000212define void @fp_to_uint_v4f32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x float> %x) {
Jan Vesely2cb62ce2014-07-10 22:40:21 +0000213 %conv = fptoui <4 x float> %x to <4 x i64>
214 store <4 x i64> %conv, <4 x i64> addrspace(1)* %out
215 ret void
216}