1 ; RUN: llc < %s -march=nvptx -mcpu=sm_20 -O2 | FileCheck %s
3 ; *************************************
4 ; * Cases with no min/max
6 define i32 @ab_eq_i32(i32 %a, i32 %b) {
10 %cmp = icmp eq i32 %a, %b
11 %sel = select i1 %cmp, i32 %a, i32 %b
15 define i64 @ba_ne_i64(i64 %a, i64 %b) {
19 %cmp = icmp ne i64 %a, %b
20 %sel = select i1 %cmp, i64 %b, i64 %a
24 ; *************************************
25 ; * All variations with i16
27 ; *** ab, unsigned, i16
28 define i16 @ab_ugt_i16(i16 %a, i16 %b) {
31 %cmp = icmp ugt i16 %a, %b
32 %sel = select i1 %cmp, i16 %a, i16 %b
36 define i16 @ab_uge_i16(i16 %a, i16 %b) {
39 %cmp = icmp uge i16 %a, %b
40 %sel = select i1 %cmp, i16 %a, i16 %b
44 define i16 @ab_ult_i16(i16 %a, i16 %b) {
47 %cmp = icmp ult i16 %a, %b
48 %sel = select i1 %cmp, i16 %a, i16 %b
52 define i16 @ab_ule_i16(i16 %a, i16 %b) {
55 %cmp = icmp ule i16 %a, %b
56 %sel = select i1 %cmp, i16 %a, i16 %b
61 define i16 @ab_sgt_i16(i16 %a, i16 %b) {
64 %cmp = icmp sgt i16 %a, %b
65 %sel = select i1 %cmp, i16 %a, i16 %b
69 define i16 @ab_sge_i16(i16 %a, i16 %b) {
72 %cmp = icmp sge i16 %a, %b
73 %sel = select i1 %cmp, i16 %a, i16 %b
77 define i16 @ab_slt_i16(i16 %a, i16 %b) {
80 %cmp = icmp slt i16 %a, %b
81 %sel = select i1 %cmp, i16 %a, i16 %b
85 define i16 @ab_sle_i16(i16 %a, i16 %b) {
88 %cmp = icmp sle i16 %a, %b
89 %sel = select i1 %cmp, i16 %a, i16 %b
93 ; *** ba, unsigned, i16
94 define i16 @ba_ugt_i16(i16 %a, i16 %b) {
97 %cmp = icmp ugt i16 %a, %b
98 %sel = select i1 %cmp, i16 %b, i16 %a
102 define i16 @ba_uge_i16(i16 %a, i16 %b) {
105 %cmp = icmp uge i16 %a, %b
106 %sel = select i1 %cmp, i16 %b, i16 %a
110 define i16 @ba_ult_i16(i16 %a, i16 %b) {
113 %cmp = icmp ult i16 %a, %b
114 %sel = select i1 %cmp, i16 %b, i16 %a
118 define i16 @ba_ule_i16(i16 %a, i16 %b) {
121 %cmp = icmp ule i16 %a, %b
122 %sel = select i1 %cmp, i16 %b, i16 %a
126 ; *** ba, signed, i16
127 define i16 @ba_sgt_i16(i16 %a, i16 %b) {
130 %cmp = icmp sgt i16 %a, %b
131 %sel = select i1 %cmp, i16 %b, i16 %a
135 define i16 @ba_sge_i16(i16 %a, i16 %b) {
138 %cmp = icmp sge i16 %a, %b
139 %sel = select i1 %cmp, i16 %b, i16 %a
143 define i16 @ba_slt_i16(i16 %a, i16 %b) {
146 %cmp = icmp slt i16 %a, %b
147 %sel = select i1 %cmp, i16 %b, i16 %a
151 define i16 @ba_sle_i16(i16 %a, i16 %b) {
154 %cmp = icmp sle i16 %a, %b
155 %sel = select i1 %cmp, i16 %b, i16 %a
159 ; *************************************
160 ; * All variations with i32
162 ; *** ab, unsigned, i32
163 define i32 @ab_ugt_i32(i32 %a, i32 %b) {
166 %cmp = icmp ugt i32 %a, %b
167 %sel = select i1 %cmp, i32 %a, i32 %b
171 define i32 @ab_uge_i32(i32 %a, i32 %b) {
174 %cmp = icmp uge i32 %a, %b
175 %sel = select i1 %cmp, i32 %a, i32 %b
179 define i32 @ab_ult_i32(i32 %a, i32 %b) {
182 %cmp = icmp ult i32 %a, %b
183 %sel = select i1 %cmp, i32 %a, i32 %b
187 define i32 @ab_ule_i32(i32 %a, i32 %b) {
190 %cmp = icmp ule i32 %a, %b
191 %sel = select i1 %cmp, i32 %a, i32 %b
195 ; *** ab, signed, i32
196 define i32 @ab_sgt_i32(i32 %a, i32 %b) {
199 %cmp = icmp sgt i32 %a, %b
200 %sel = select i1 %cmp, i32 %a, i32 %b
204 define i32 @ab_sge_i32(i32 %a, i32 %b) {
207 %cmp = icmp sge i32 %a, %b
208 %sel = select i1 %cmp, i32 %a, i32 %b
212 define i32 @ab_slt_i32(i32 %a, i32 %b) {
215 %cmp = icmp slt i32 %a, %b
216 %sel = select i1 %cmp, i32 %a, i32 %b
220 define i32 @ab_sle_i32(i32 %a, i32 %b) {
223 %cmp = icmp sle i32 %a, %b
224 %sel = select i1 %cmp, i32 %a, i32 %b
228 ; *** ba, unsigned, i32
229 define i32 @ba_ugt_i32(i32 %a, i32 %b) {
232 %cmp = icmp ugt i32 %a, %b
233 %sel = select i1 %cmp, i32 %b, i32 %a
237 define i32 @ba_uge_i32(i32 %a, i32 %b) {
240 %cmp = icmp uge i32 %a, %b
241 %sel = select i1 %cmp, i32 %b, i32 %a
245 define i32 @ba_ult_i32(i32 %a, i32 %b) {
248 %cmp = icmp ult i32 %a, %b
249 %sel = select i1 %cmp, i32 %b, i32 %a
253 define i32 @ba_ule_i32(i32 %a, i32 %b) {
256 %cmp = icmp ule i32 %a, %b
257 %sel = select i1 %cmp, i32 %b, i32 %a
261 ; *** ba, signed, i32
262 define i32 @ba_sgt_i32(i32 %a, i32 %b) {
265 %cmp = icmp sgt i32 %a, %b
266 %sel = select i1 %cmp, i32 %b, i32 %a
270 define i32 @ba_sge_i32(i32 %a, i32 %b) {
273 %cmp = icmp sge i32 %a, %b
274 %sel = select i1 %cmp, i32 %b, i32 %a
278 define i32 @ba_slt_i32(i32 %a, i32 %b) {
281 %cmp = icmp slt i32 %a, %b
282 %sel = select i1 %cmp, i32 %b, i32 %a
286 define i32 @ba_sle_i32(i32 %a, i32 %b) {
289 %cmp = icmp sle i32 %a, %b
290 %sel = select i1 %cmp, i32 %b, i32 %a
294 ; *************************************
295 ; * All variations with i64
297 ; *** ab, unsigned, i64
298 define i64 @ab_ugt_i64(i64 %a, i64 %b) {
301 %cmp = icmp ugt i64 %a, %b
302 %sel = select i1 %cmp, i64 %a, i64 %b
306 define i64 @ab_uge_i64(i64 %a, i64 %b) {
309 %cmp = icmp uge i64 %a, %b
310 %sel = select i1 %cmp, i64 %a, i64 %b
314 define i64 @ab_ult_i64(i64 %a, i64 %b) {
317 %cmp = icmp ult i64 %a, %b
318 %sel = select i1 %cmp, i64 %a, i64 %b
322 define i64 @ab_ule_i64(i64 %a, i64 %b) {
325 %cmp = icmp ule i64 %a, %b
326 %sel = select i1 %cmp, i64 %a, i64 %b
330 ; *** ab, signed, i64
331 define i64 @ab_sgt_i64(i64 %a, i64 %b) {
334 %cmp = icmp sgt i64 %a, %b
335 %sel = select i1 %cmp, i64 %a, i64 %b
339 define i64 @ab_sge_i64(i64 %a, i64 %b) {
342 %cmp = icmp sge i64 %a, %b
343 %sel = select i1 %cmp, i64 %a, i64 %b
347 define i64 @ab_slt_i64(i64 %a, i64 %b) {
350 %cmp = icmp slt i64 %a, %b
351 %sel = select i1 %cmp, i64 %a, i64 %b
355 define i64 @ab_sle_i64(i64 %a, i64 %b) {
358 %cmp = icmp sle i64 %a, %b
359 %sel = select i1 %cmp, i64 %a, i64 %b
363 ; *** ba, unsigned, i64
364 define i64 @ba_ugt_i64(i64 %a, i64 %b) {
367 %cmp = icmp ugt i64 %a, %b
368 %sel = select i1 %cmp, i64 %b, i64 %a
372 define i64 @ba_uge_i64(i64 %a, i64 %b) {
375 %cmp = icmp uge i64 %a, %b
376 %sel = select i1 %cmp, i64 %b, i64 %a
380 define i64 @ba_ult_i64(i64 %a, i64 %b) {
383 %cmp = icmp ult i64 %a, %b
384 %sel = select i1 %cmp, i64 %b, i64 %a
388 define i64 @ba_ule_i64(i64 %a, i64 %b) {
391 %cmp = icmp ule i64 %a, %b
392 %sel = select i1 %cmp, i64 %b, i64 %a
396 ; *** ba, signed, i64
397 define i64 @ba_sgt_i64(i64 %a, i64 %b) {
400 %cmp = icmp sgt i64 %a, %b
401 %sel = select i1 %cmp, i64 %b, i64 %a
405 define i64 @ba_sge_i64(i64 %a, i64 %b) {
408 %cmp = icmp sge i64 %a, %b
409 %sel = select i1 %cmp, i64 %b, i64 %a
413 define i64 @ba_slt_i64(i64 %a, i64 %b) {
416 %cmp = icmp slt i64 %a, %b
417 %sel = select i1 %cmp, i64 %b, i64 %a
421 define i64 @ba_sle_i64(i64 %a, i64 %b) {
424 %cmp = icmp sle i64 %a, %b
425 %sel = select i1 %cmp, i64 %b, i64 %a