1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=aarch64-none-elf -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,SDISEL
3 ; RUN: llc -mtriple=aarch64-none-elf -global-isel -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,GISEL
5 define i32 @and_eq_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
6 ; SDISEL-LABEL: and_eq_eq:
7 ; SDISEL: // %bb.0: // %entry
8 ; SDISEL-NEXT: cmp w0, w1
9 ; SDISEL-NEXT: ccmp w2, w3, #0, eq
10 ; SDISEL-NEXT: cset w0, eq
13 ; GISEL-LABEL: and_eq_eq:
14 ; GISEL: // %bb.0: // %entry
15 ; GISEL-NEXT: cmp w0, w1
16 ; GISEL-NEXT: cset w8, eq
17 ; GISEL-NEXT: cmp w2, w3
18 ; GISEL-NEXT: cset w9, eq
19 ; GISEL-NEXT: and w0, w8, w9
22 %c0 = icmp eq i32 %s0, %s1
23 %c1 = icmp eq i32 %s2, %s3
25 %z = zext i1 %a to i32
29 define i32 @and_eq_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
30 ; SDISEL-LABEL: and_eq_ne:
31 ; SDISEL: // %bb.0: // %entry
32 ; SDISEL-NEXT: cmp w0, w1
33 ; SDISEL-NEXT: ccmp w2, w3, #4, eq
34 ; SDISEL-NEXT: cset w0, ne
37 ; GISEL-LABEL: and_eq_ne:
38 ; GISEL: // %bb.0: // %entry
39 ; GISEL-NEXT: cmp w0, w1
40 ; GISEL-NEXT: cset w8, eq
41 ; GISEL-NEXT: cmp w2, w3
42 ; GISEL-NEXT: cset w9, ne
43 ; GISEL-NEXT: and w0, w8, w9
46 %c0 = icmp eq i32 %s0, %s1
47 %c1 = icmp ne i32 %s2, %s3
49 %z = zext i1 %a to i32
53 define i32 @and_eq_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
54 ; SDISEL-LABEL: and_eq_ult:
55 ; SDISEL: // %bb.0: // %entry
56 ; SDISEL-NEXT: cmp w0, w1
57 ; SDISEL-NEXT: ccmp w2, w3, #2, eq
58 ; SDISEL-NEXT: cset w0, lo
61 ; GISEL-LABEL: and_eq_ult:
62 ; GISEL: // %bb.0: // %entry
63 ; GISEL-NEXT: cmp w0, w1
64 ; GISEL-NEXT: cset w8, eq
65 ; GISEL-NEXT: cmp w2, w3
66 ; GISEL-NEXT: cset w9, lo
67 ; GISEL-NEXT: and w0, w8, w9
70 %c0 = icmp eq i32 %s0, %s1
71 %c1 = icmp ult i32 %s2, %s3
73 %z = zext i1 %a to i32
77 define i32 @and_eq_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
78 ; SDISEL-LABEL: and_eq_ule:
79 ; SDISEL: // %bb.0: // %entry
80 ; SDISEL-NEXT: cmp w0, w1
81 ; SDISEL-NEXT: ccmp w2, w3, #2, eq
82 ; SDISEL-NEXT: cset w0, ls
85 ; GISEL-LABEL: and_eq_ule:
86 ; GISEL: // %bb.0: // %entry
87 ; GISEL-NEXT: cmp w0, w1
88 ; GISEL-NEXT: cset w8, eq
89 ; GISEL-NEXT: cmp w2, w3
90 ; GISEL-NEXT: cset w9, ls
91 ; GISEL-NEXT: and w0, w8, w9
94 %c0 = icmp eq i32 %s0, %s1
95 %c1 = icmp ule i32 %s2, %s3
97 %z = zext i1 %a to i32
101 define i32 @and_eq_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
102 ; SDISEL-LABEL: and_eq_ugt:
103 ; SDISEL: // %bb.0: // %entry
104 ; SDISEL-NEXT: cmp w0, w1
105 ; SDISEL-NEXT: ccmp w2, w3, #0, eq
106 ; SDISEL-NEXT: cset w0, hi
109 ; GISEL-LABEL: and_eq_ugt:
110 ; GISEL: // %bb.0: // %entry
111 ; GISEL-NEXT: cmp w0, w1
112 ; GISEL-NEXT: cset w8, eq
113 ; GISEL-NEXT: cmp w2, w3
114 ; GISEL-NEXT: cset w9, hi
115 ; GISEL-NEXT: and w0, w8, w9
118 %c0 = icmp eq i32 %s0, %s1
119 %c1 = icmp ugt i32 %s2, %s3
121 %z = zext i1 %a to i32
125 define i32 @and_eq_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
126 ; SDISEL-LABEL: and_eq_uge:
127 ; SDISEL: // %bb.0: // %entry
128 ; SDISEL-NEXT: cmp w0, w1
129 ; SDISEL-NEXT: ccmp w2, w3, #0, eq
130 ; SDISEL-NEXT: cset w0, hs
133 ; GISEL-LABEL: and_eq_uge:
134 ; GISEL: // %bb.0: // %entry
135 ; GISEL-NEXT: cmp w0, w1
136 ; GISEL-NEXT: cset w8, eq
137 ; GISEL-NEXT: cmp w2, w3
138 ; GISEL-NEXT: cset w9, hs
139 ; GISEL-NEXT: and w0, w8, w9
142 %c0 = icmp eq i32 %s0, %s1
143 %c1 = icmp uge i32 %s2, %s3
145 %z = zext i1 %a to i32
149 define i32 @and_eq_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
150 ; SDISEL-LABEL: and_eq_slt:
151 ; SDISEL: // %bb.0: // %entry
152 ; SDISEL-NEXT: cmp w0, w1
153 ; SDISEL-NEXT: ccmp w2, w3, #0, eq
154 ; SDISEL-NEXT: cset w0, lt
157 ; GISEL-LABEL: and_eq_slt:
158 ; GISEL: // %bb.0: // %entry
159 ; GISEL-NEXT: cmp w0, w1
160 ; GISEL-NEXT: cset w8, eq
161 ; GISEL-NEXT: cmp w2, w3
162 ; GISEL-NEXT: cset w9, lt
163 ; GISEL-NEXT: and w0, w8, w9
166 %c0 = icmp eq i32 %s0, %s1
167 %c1 = icmp slt i32 %s2, %s3
169 %z = zext i1 %a to i32
173 define i32 @and_eq_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
174 ; SDISEL-LABEL: and_eq_sle:
175 ; SDISEL: // %bb.0: // %entry
176 ; SDISEL-NEXT: cmp w0, w1
177 ; SDISEL-NEXT: ccmp w2, w3, #0, eq
178 ; SDISEL-NEXT: cset w0, le
181 ; GISEL-LABEL: and_eq_sle:
182 ; GISEL: // %bb.0: // %entry
183 ; GISEL-NEXT: cmp w0, w1
184 ; GISEL-NEXT: cset w8, eq
185 ; GISEL-NEXT: cmp w2, w3
186 ; GISEL-NEXT: cset w9, le
187 ; GISEL-NEXT: and w0, w8, w9
190 %c0 = icmp eq i32 %s0, %s1
191 %c1 = icmp sle i32 %s2, %s3
193 %z = zext i1 %a to i32
197 define i32 @and_eq_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
198 ; SDISEL-LABEL: and_eq_sgt:
199 ; SDISEL: // %bb.0: // %entry
200 ; SDISEL-NEXT: cmp w0, w1
201 ; SDISEL-NEXT: ccmp w2, w3, #4, eq
202 ; SDISEL-NEXT: cset w0, gt
205 ; GISEL-LABEL: and_eq_sgt:
206 ; GISEL: // %bb.0: // %entry
207 ; GISEL-NEXT: cmp w0, w1
208 ; GISEL-NEXT: cset w8, eq
209 ; GISEL-NEXT: cmp w2, w3
210 ; GISEL-NEXT: cset w9, gt
211 ; GISEL-NEXT: and w0, w8, w9
214 %c0 = icmp eq i32 %s0, %s1
215 %c1 = icmp sgt i32 %s2, %s3
217 %z = zext i1 %a to i32
221 define i32 @and_eq_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
222 ; SDISEL-LABEL: and_eq_sge:
223 ; SDISEL: // %bb.0: // %entry
224 ; SDISEL-NEXT: cmp w0, w1
225 ; SDISEL-NEXT: ccmp w2, w3, #8, eq
226 ; SDISEL-NEXT: cset w0, ge
229 ; GISEL-LABEL: and_eq_sge:
230 ; GISEL: // %bb.0: // %entry
231 ; GISEL-NEXT: cmp w0, w1
232 ; GISEL-NEXT: cset w8, eq
233 ; GISEL-NEXT: cmp w2, w3
234 ; GISEL-NEXT: cset w9, ge
235 ; GISEL-NEXT: and w0, w8, w9
238 %c0 = icmp eq i32 %s0, %s1
239 %c1 = icmp sge i32 %s2, %s3
241 %z = zext i1 %a to i32
245 define i32 @and_ne_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
246 ; SDISEL-LABEL: and_ne_eq:
247 ; SDISEL: // %bb.0: // %entry
248 ; SDISEL-NEXT: cmp w0, w1
249 ; SDISEL-NEXT: ccmp w2, w3, #0, ne
250 ; SDISEL-NEXT: cset w0, eq
253 ; GISEL-LABEL: and_ne_eq:
254 ; GISEL: // %bb.0: // %entry
255 ; GISEL-NEXT: cmp w0, w1
256 ; GISEL-NEXT: cset w8, ne
257 ; GISEL-NEXT: cmp w2, w3
258 ; GISEL-NEXT: cset w9, eq
259 ; GISEL-NEXT: and w0, w8, w9
262 %c0 = icmp ne i32 %s0, %s1
263 %c1 = icmp eq i32 %s2, %s3
265 %z = zext i1 %a to i32
269 define i32 @and_ne_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
270 ; SDISEL-LABEL: and_ne_ne:
271 ; SDISEL: // %bb.0: // %entry
272 ; SDISEL-NEXT: cmp w0, w1
273 ; SDISEL-NEXT: ccmp w2, w3, #4, ne
274 ; SDISEL-NEXT: cset w0, ne
277 ; GISEL-LABEL: and_ne_ne:
278 ; GISEL: // %bb.0: // %entry
279 ; GISEL-NEXT: cmp w0, w1
280 ; GISEL-NEXT: cset w8, ne
281 ; GISEL-NEXT: cmp w2, w3
282 ; GISEL-NEXT: cset w9, ne
283 ; GISEL-NEXT: and w0, w8, w9
286 %c0 = icmp ne i32 %s0, %s1
287 %c1 = icmp ne i32 %s2, %s3
289 %z = zext i1 %a to i32
293 define i32 @and_ne_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
294 ; SDISEL-LABEL: and_ne_ult:
295 ; SDISEL: // %bb.0: // %entry
296 ; SDISEL-NEXT: cmp w0, w1
297 ; SDISEL-NEXT: ccmp w2, w3, #2, ne
298 ; SDISEL-NEXT: cset w0, lo
301 ; GISEL-LABEL: and_ne_ult:
302 ; GISEL: // %bb.0: // %entry
303 ; GISEL-NEXT: cmp w0, w1
304 ; GISEL-NEXT: cset w8, ne
305 ; GISEL-NEXT: cmp w2, w3
306 ; GISEL-NEXT: cset w9, lo
307 ; GISEL-NEXT: and w0, w8, w9
310 %c0 = icmp ne i32 %s0, %s1
311 %c1 = icmp ult i32 %s2, %s3
313 %z = zext i1 %a to i32
317 define i32 @and_ne_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
318 ; SDISEL-LABEL: and_ne_ule:
319 ; SDISEL: // %bb.0: // %entry
320 ; SDISEL-NEXT: cmp w0, w1
321 ; SDISEL-NEXT: ccmp w2, w3, #2, ne
322 ; SDISEL-NEXT: cset w0, ls
325 ; GISEL-LABEL: and_ne_ule:
326 ; GISEL: // %bb.0: // %entry
327 ; GISEL-NEXT: cmp w0, w1
328 ; GISEL-NEXT: cset w8, ne
329 ; GISEL-NEXT: cmp w2, w3
330 ; GISEL-NEXT: cset w9, ls
331 ; GISEL-NEXT: and w0, w8, w9
334 %c0 = icmp ne i32 %s0, %s1
335 %c1 = icmp ule i32 %s2, %s3
337 %z = zext i1 %a to i32
341 define i32 @and_ne_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
342 ; SDISEL-LABEL: and_ne_ugt:
343 ; SDISEL: // %bb.0: // %entry
344 ; SDISEL-NEXT: cmp w0, w1
345 ; SDISEL-NEXT: ccmp w2, w3, #0, ne
346 ; SDISEL-NEXT: cset w0, hi
349 ; GISEL-LABEL: and_ne_ugt:
350 ; GISEL: // %bb.0: // %entry
351 ; GISEL-NEXT: cmp w0, w1
352 ; GISEL-NEXT: cset w8, ne
353 ; GISEL-NEXT: cmp w2, w3
354 ; GISEL-NEXT: cset w9, hi
355 ; GISEL-NEXT: and w0, w8, w9
358 %c0 = icmp ne i32 %s0, %s1
359 %c1 = icmp ugt i32 %s2, %s3
361 %z = zext i1 %a to i32
365 define i32 @and_ne_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
366 ; SDISEL-LABEL: and_ne_uge:
367 ; SDISEL: // %bb.0: // %entry
368 ; SDISEL-NEXT: cmp w0, w1
369 ; SDISEL-NEXT: ccmp w2, w3, #0, ne
370 ; SDISEL-NEXT: cset w0, hs
373 ; GISEL-LABEL: and_ne_uge:
374 ; GISEL: // %bb.0: // %entry
375 ; GISEL-NEXT: cmp w0, w1
376 ; GISEL-NEXT: cset w8, ne
377 ; GISEL-NEXT: cmp w2, w3
378 ; GISEL-NEXT: cset w9, hs
379 ; GISEL-NEXT: and w0, w8, w9
382 %c0 = icmp ne i32 %s0, %s1
383 %c1 = icmp uge i32 %s2, %s3
385 %z = zext i1 %a to i32
389 define i32 @and_ne_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
390 ; SDISEL-LABEL: and_ne_slt:
391 ; SDISEL: // %bb.0: // %entry
392 ; SDISEL-NEXT: cmp w0, w1
393 ; SDISEL-NEXT: ccmp w2, w3, #0, ne
394 ; SDISEL-NEXT: cset w0, lt
397 ; GISEL-LABEL: and_ne_slt:
398 ; GISEL: // %bb.0: // %entry
399 ; GISEL-NEXT: cmp w0, w1
400 ; GISEL-NEXT: cset w8, ne
401 ; GISEL-NEXT: cmp w2, w3
402 ; GISEL-NEXT: cset w9, lt
403 ; GISEL-NEXT: and w0, w8, w9
406 %c0 = icmp ne i32 %s0, %s1
407 %c1 = icmp slt i32 %s2, %s3
409 %z = zext i1 %a to i32
413 define i32 @and_ne_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
414 ; SDISEL-LABEL: and_ne_sle:
415 ; SDISEL: // %bb.0: // %entry
416 ; SDISEL-NEXT: cmp w0, w1
417 ; SDISEL-NEXT: ccmp w2, w3, #0, ne
418 ; SDISEL-NEXT: cset w0, le
421 ; GISEL-LABEL: and_ne_sle:
422 ; GISEL: // %bb.0: // %entry
423 ; GISEL-NEXT: cmp w0, w1
424 ; GISEL-NEXT: cset w8, ne
425 ; GISEL-NEXT: cmp w2, w3
426 ; GISEL-NEXT: cset w9, le
427 ; GISEL-NEXT: and w0, w8, w9
430 %c0 = icmp ne i32 %s0, %s1
431 %c1 = icmp sle i32 %s2, %s3
433 %z = zext i1 %a to i32
437 define i32 @and_ne_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
438 ; SDISEL-LABEL: and_ne_sgt:
439 ; SDISEL: // %bb.0: // %entry
440 ; SDISEL-NEXT: cmp w0, w1
441 ; SDISEL-NEXT: ccmp w2, w3, #4, ne
442 ; SDISEL-NEXT: cset w0, gt
445 ; GISEL-LABEL: and_ne_sgt:
446 ; GISEL: // %bb.0: // %entry
447 ; GISEL-NEXT: cmp w0, w1
448 ; GISEL-NEXT: cset w8, ne
449 ; GISEL-NEXT: cmp w2, w3
450 ; GISEL-NEXT: cset w9, gt
451 ; GISEL-NEXT: and w0, w8, w9
454 %c0 = icmp ne i32 %s0, %s1
455 %c1 = icmp sgt i32 %s2, %s3
457 %z = zext i1 %a to i32
461 define i32 @and_ne_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
462 ; SDISEL-LABEL: and_ne_sge:
463 ; SDISEL: // %bb.0: // %entry
464 ; SDISEL-NEXT: cmp w0, w1
465 ; SDISEL-NEXT: ccmp w2, w3, #8, ne
466 ; SDISEL-NEXT: cset w0, ge
469 ; GISEL-LABEL: and_ne_sge:
470 ; GISEL: // %bb.0: // %entry
471 ; GISEL-NEXT: cmp w0, w1
472 ; GISEL-NEXT: cset w8, ne
473 ; GISEL-NEXT: cmp w2, w3
474 ; GISEL-NEXT: cset w9, ge
475 ; GISEL-NEXT: and w0, w8, w9
478 %c0 = icmp ne i32 %s0, %s1
479 %c1 = icmp sge i32 %s2, %s3
481 %z = zext i1 %a to i32
485 define i32 @and_ult_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
486 ; SDISEL-LABEL: and_ult_eq:
487 ; SDISEL: // %bb.0: // %entry
488 ; SDISEL-NEXT: cmp w0, w1
489 ; SDISEL-NEXT: ccmp w2, w3, #0, lo
490 ; SDISEL-NEXT: cset w0, eq
493 ; GISEL-LABEL: and_ult_eq:
494 ; GISEL: // %bb.0: // %entry
495 ; GISEL-NEXT: cmp w0, w1
496 ; GISEL-NEXT: cset w8, lo
497 ; GISEL-NEXT: cmp w2, w3
498 ; GISEL-NEXT: cset w9, eq
499 ; GISEL-NEXT: and w0, w8, w9
502 %c0 = icmp ult i32 %s0, %s1
503 %c1 = icmp eq i32 %s2, %s3
505 %z = zext i1 %a to i32
509 define i32 @and_ult_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
510 ; SDISEL-LABEL: and_ult_ne:
511 ; SDISEL: // %bb.0: // %entry
512 ; SDISEL-NEXT: cmp w0, w1
513 ; SDISEL-NEXT: ccmp w2, w3, #4, lo
514 ; SDISEL-NEXT: cset w0, ne
517 ; GISEL-LABEL: and_ult_ne:
518 ; GISEL: // %bb.0: // %entry
519 ; GISEL-NEXT: cmp w0, w1
520 ; GISEL-NEXT: cset w8, lo
521 ; GISEL-NEXT: cmp w2, w3
522 ; GISEL-NEXT: cset w9, ne
523 ; GISEL-NEXT: and w0, w8, w9
526 %c0 = icmp ult i32 %s0, %s1
527 %c1 = icmp ne i32 %s2, %s3
529 %z = zext i1 %a to i32
533 define i32 @and_ult_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
534 ; SDISEL-LABEL: and_ult_ult:
535 ; SDISEL: // %bb.0: // %entry
536 ; SDISEL-NEXT: cmp w0, w1
537 ; SDISEL-NEXT: ccmp w2, w3, #2, lo
538 ; SDISEL-NEXT: cset w0, lo
541 ; GISEL-LABEL: and_ult_ult:
542 ; GISEL: // %bb.0: // %entry
543 ; GISEL-NEXT: cmp w0, w1
544 ; GISEL-NEXT: cset w8, lo
545 ; GISEL-NEXT: cmp w2, w3
546 ; GISEL-NEXT: cset w9, lo
547 ; GISEL-NEXT: and w0, w8, w9
550 %c0 = icmp ult i32 %s0, %s1
551 %c1 = icmp ult i32 %s2, %s3
553 %z = zext i1 %a to i32
557 define i32 @and_ult_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
558 ; SDISEL-LABEL: and_ult_ule:
559 ; SDISEL: // %bb.0: // %entry
560 ; SDISEL-NEXT: cmp w0, w1
561 ; SDISEL-NEXT: ccmp w2, w3, #2, lo
562 ; SDISEL-NEXT: cset w0, ls
565 ; GISEL-LABEL: and_ult_ule:
566 ; GISEL: // %bb.0: // %entry
567 ; GISEL-NEXT: cmp w0, w1
568 ; GISEL-NEXT: cset w8, lo
569 ; GISEL-NEXT: cmp w2, w3
570 ; GISEL-NEXT: cset w9, ls
571 ; GISEL-NEXT: and w0, w8, w9
574 %c0 = icmp ult i32 %s0, %s1
575 %c1 = icmp ule i32 %s2, %s3
577 %z = zext i1 %a to i32
581 define i32 @and_ult_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
582 ; SDISEL-LABEL: and_ult_ugt:
583 ; SDISEL: // %bb.0: // %entry
584 ; SDISEL-NEXT: cmp w0, w1
585 ; SDISEL-NEXT: ccmp w2, w3, #0, lo
586 ; SDISEL-NEXT: cset w0, hi
589 ; GISEL-LABEL: and_ult_ugt:
590 ; GISEL: // %bb.0: // %entry
591 ; GISEL-NEXT: cmp w0, w1
592 ; GISEL-NEXT: cset w8, lo
593 ; GISEL-NEXT: cmp w2, w3
594 ; GISEL-NEXT: cset w9, hi
595 ; GISEL-NEXT: and w0, w8, w9
598 %c0 = icmp ult i32 %s0, %s1
599 %c1 = icmp ugt i32 %s2, %s3
601 %z = zext i1 %a to i32
605 define i32 @and_ult_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
606 ; SDISEL-LABEL: and_ult_uge:
607 ; SDISEL: // %bb.0: // %entry
608 ; SDISEL-NEXT: cmp w0, w1
609 ; SDISEL-NEXT: ccmp w2, w3, #0, lo
610 ; SDISEL-NEXT: cset w0, hs
613 ; GISEL-LABEL: and_ult_uge:
614 ; GISEL: // %bb.0: // %entry
615 ; GISEL-NEXT: cmp w0, w1
616 ; GISEL-NEXT: cset w8, lo
617 ; GISEL-NEXT: cmp w2, w3
618 ; GISEL-NEXT: cset w9, hs
619 ; GISEL-NEXT: and w0, w8, w9
622 %c0 = icmp ult i32 %s0, %s1
623 %c1 = icmp uge i32 %s2, %s3
625 %z = zext i1 %a to i32
629 define i32 @and_ult_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
630 ; SDISEL-LABEL: and_ult_slt:
631 ; SDISEL: // %bb.0: // %entry
632 ; SDISEL-NEXT: cmp w0, w1
633 ; SDISEL-NEXT: ccmp w2, w3, #0, lo
634 ; SDISEL-NEXT: cset w0, lt
637 ; GISEL-LABEL: and_ult_slt:
638 ; GISEL: // %bb.0: // %entry
639 ; GISEL-NEXT: cmp w0, w1
640 ; GISEL-NEXT: cset w8, lo
641 ; GISEL-NEXT: cmp w2, w3
642 ; GISEL-NEXT: cset w9, lt
643 ; GISEL-NEXT: and w0, w8, w9
646 %c0 = icmp ult i32 %s0, %s1
647 %c1 = icmp slt i32 %s2, %s3
649 %z = zext i1 %a to i32
653 define i32 @and_ult_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
654 ; SDISEL-LABEL: and_ult_sle:
655 ; SDISEL: // %bb.0: // %entry
656 ; SDISEL-NEXT: cmp w0, w1
657 ; SDISEL-NEXT: ccmp w2, w3, #0, lo
658 ; SDISEL-NEXT: cset w0, le
661 ; GISEL-LABEL: and_ult_sle:
662 ; GISEL: // %bb.0: // %entry
663 ; GISEL-NEXT: cmp w0, w1
664 ; GISEL-NEXT: cset w8, lo
665 ; GISEL-NEXT: cmp w2, w3
666 ; GISEL-NEXT: cset w9, le
667 ; GISEL-NEXT: and w0, w8, w9
670 %c0 = icmp ult i32 %s0, %s1
671 %c1 = icmp sle i32 %s2, %s3
673 %z = zext i1 %a to i32
677 define i32 @and_ult_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
678 ; SDISEL-LABEL: and_ult_sgt:
679 ; SDISEL: // %bb.0: // %entry
680 ; SDISEL-NEXT: cmp w0, w1
681 ; SDISEL-NEXT: ccmp w2, w3, #4, lo
682 ; SDISEL-NEXT: cset w0, gt
685 ; GISEL-LABEL: and_ult_sgt:
686 ; GISEL: // %bb.0: // %entry
687 ; GISEL-NEXT: cmp w0, w1
688 ; GISEL-NEXT: cset w8, lo
689 ; GISEL-NEXT: cmp w2, w3
690 ; GISEL-NEXT: cset w9, gt
691 ; GISEL-NEXT: and w0, w8, w9
694 %c0 = icmp ult i32 %s0, %s1
695 %c1 = icmp sgt i32 %s2, %s3
697 %z = zext i1 %a to i32
701 define i32 @and_ult_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
702 ; SDISEL-LABEL: and_ult_sge:
703 ; SDISEL: // %bb.0: // %entry
704 ; SDISEL-NEXT: cmp w0, w1
705 ; SDISEL-NEXT: ccmp w2, w3, #8, lo
706 ; SDISEL-NEXT: cset w0, ge
709 ; GISEL-LABEL: and_ult_sge:
710 ; GISEL: // %bb.0: // %entry
711 ; GISEL-NEXT: cmp w0, w1
712 ; GISEL-NEXT: cset w8, lo
713 ; GISEL-NEXT: cmp w2, w3
714 ; GISEL-NEXT: cset w9, ge
715 ; GISEL-NEXT: and w0, w8, w9
718 %c0 = icmp ult i32 %s0, %s1
719 %c1 = icmp sge i32 %s2, %s3
721 %z = zext i1 %a to i32
725 define i32 @and_ule_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
726 ; SDISEL-LABEL: and_ule_eq:
727 ; SDISEL: // %bb.0: // %entry
728 ; SDISEL-NEXT: cmp w0, w1
729 ; SDISEL-NEXT: ccmp w2, w3, #0, ls
730 ; SDISEL-NEXT: cset w0, eq
733 ; GISEL-LABEL: and_ule_eq:
734 ; GISEL: // %bb.0: // %entry
735 ; GISEL-NEXT: cmp w0, w1
736 ; GISEL-NEXT: cset w8, ls
737 ; GISEL-NEXT: cmp w2, w3
738 ; GISEL-NEXT: cset w9, eq
739 ; GISEL-NEXT: and w0, w8, w9
742 %c0 = icmp ule i32 %s0, %s1
743 %c1 = icmp eq i32 %s2, %s3
745 %z = zext i1 %a to i32
749 define i32 @and_ule_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
750 ; SDISEL-LABEL: and_ule_ne:
751 ; SDISEL: // %bb.0: // %entry
752 ; SDISEL-NEXT: cmp w0, w1
753 ; SDISEL-NEXT: ccmp w2, w3, #4, ls
754 ; SDISEL-NEXT: cset w0, ne
757 ; GISEL-LABEL: and_ule_ne:
758 ; GISEL: // %bb.0: // %entry
759 ; GISEL-NEXT: cmp w0, w1
760 ; GISEL-NEXT: cset w8, ls
761 ; GISEL-NEXT: cmp w2, w3
762 ; GISEL-NEXT: cset w9, ne
763 ; GISEL-NEXT: and w0, w8, w9
766 %c0 = icmp ule i32 %s0, %s1
767 %c1 = icmp ne i32 %s2, %s3
769 %z = zext i1 %a to i32
773 define i32 @and_ule_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
774 ; SDISEL-LABEL: and_ule_ult:
775 ; SDISEL: // %bb.0: // %entry
776 ; SDISEL-NEXT: cmp w0, w1
777 ; SDISEL-NEXT: ccmp w2, w3, #2, ls
778 ; SDISEL-NEXT: cset w0, lo
781 ; GISEL-LABEL: and_ule_ult:
782 ; GISEL: // %bb.0: // %entry
783 ; GISEL-NEXT: cmp w0, w1
784 ; GISEL-NEXT: cset w8, ls
785 ; GISEL-NEXT: cmp w2, w3
786 ; GISEL-NEXT: cset w9, lo
787 ; GISEL-NEXT: and w0, w8, w9
790 %c0 = icmp ule i32 %s0, %s1
791 %c1 = icmp ult i32 %s2, %s3
793 %z = zext i1 %a to i32
797 define i32 @and_ule_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
798 ; SDISEL-LABEL: and_ule_ule:
799 ; SDISEL: // %bb.0: // %entry
800 ; SDISEL-NEXT: cmp w0, w1
801 ; SDISEL-NEXT: ccmp w2, w3, #2, ls
802 ; SDISEL-NEXT: cset w0, ls
805 ; GISEL-LABEL: and_ule_ule:
806 ; GISEL: // %bb.0: // %entry
807 ; GISEL-NEXT: cmp w0, w1
808 ; GISEL-NEXT: cset w8, ls
809 ; GISEL-NEXT: cmp w2, w3
810 ; GISEL-NEXT: cset w9, ls
811 ; GISEL-NEXT: and w0, w8, w9
814 %c0 = icmp ule i32 %s0, %s1
815 %c1 = icmp ule i32 %s2, %s3
817 %z = zext i1 %a to i32
821 define i32 @and_ule_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
822 ; SDISEL-LABEL: and_ule_ugt:
823 ; SDISEL: // %bb.0: // %entry
824 ; SDISEL-NEXT: cmp w0, w1
825 ; SDISEL-NEXT: ccmp w2, w3, #0, ls
826 ; SDISEL-NEXT: cset w0, hi
829 ; GISEL-LABEL: and_ule_ugt:
830 ; GISEL: // %bb.0: // %entry
831 ; GISEL-NEXT: cmp w0, w1
832 ; GISEL-NEXT: cset w8, ls
833 ; GISEL-NEXT: cmp w2, w3
834 ; GISEL-NEXT: cset w9, hi
835 ; GISEL-NEXT: and w0, w8, w9
838 %c0 = icmp ule i32 %s0, %s1
839 %c1 = icmp ugt i32 %s2, %s3
841 %z = zext i1 %a to i32
845 define i32 @and_ule_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
846 ; SDISEL-LABEL: and_ule_uge:
847 ; SDISEL: // %bb.0: // %entry
848 ; SDISEL-NEXT: cmp w0, w1
849 ; SDISEL-NEXT: ccmp w2, w3, #0, ls
850 ; SDISEL-NEXT: cset w0, hs
853 ; GISEL-LABEL: and_ule_uge:
854 ; GISEL: // %bb.0: // %entry
855 ; GISEL-NEXT: cmp w0, w1
856 ; GISEL-NEXT: cset w8, ls
857 ; GISEL-NEXT: cmp w2, w3
858 ; GISEL-NEXT: cset w9, hs
859 ; GISEL-NEXT: and w0, w8, w9
862 %c0 = icmp ule i32 %s0, %s1
863 %c1 = icmp uge i32 %s2, %s3
865 %z = zext i1 %a to i32
869 define i32 @and_ule_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
870 ; SDISEL-LABEL: and_ule_slt:
871 ; SDISEL: // %bb.0: // %entry
872 ; SDISEL-NEXT: cmp w0, w1
873 ; SDISEL-NEXT: ccmp w2, w3, #0, ls
874 ; SDISEL-NEXT: cset w0, lt
877 ; GISEL-LABEL: and_ule_slt:
878 ; GISEL: // %bb.0: // %entry
879 ; GISEL-NEXT: cmp w0, w1
880 ; GISEL-NEXT: cset w8, ls
881 ; GISEL-NEXT: cmp w2, w3
882 ; GISEL-NEXT: cset w9, lt
883 ; GISEL-NEXT: and w0, w8, w9
886 %c0 = icmp ule i32 %s0, %s1
887 %c1 = icmp slt i32 %s2, %s3
889 %z = zext i1 %a to i32
893 define i32 @and_ule_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
894 ; SDISEL-LABEL: and_ule_sle:
895 ; SDISEL: // %bb.0: // %entry
896 ; SDISEL-NEXT: cmp w0, w1
897 ; SDISEL-NEXT: ccmp w2, w3, #0, ls
898 ; SDISEL-NEXT: cset w0, le
901 ; GISEL-LABEL: and_ule_sle:
902 ; GISEL: // %bb.0: // %entry
903 ; GISEL-NEXT: cmp w0, w1
904 ; GISEL-NEXT: cset w8, ls
905 ; GISEL-NEXT: cmp w2, w3
906 ; GISEL-NEXT: cset w9, le
907 ; GISEL-NEXT: and w0, w8, w9
910 %c0 = icmp ule i32 %s0, %s1
911 %c1 = icmp sle i32 %s2, %s3
913 %z = zext i1 %a to i32
917 define i32 @and_ule_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
918 ; SDISEL-LABEL: and_ule_sgt:
919 ; SDISEL: // %bb.0: // %entry
920 ; SDISEL-NEXT: cmp w0, w1
921 ; SDISEL-NEXT: ccmp w2, w3, #4, ls
922 ; SDISEL-NEXT: cset w0, gt
925 ; GISEL-LABEL: and_ule_sgt:
926 ; GISEL: // %bb.0: // %entry
927 ; GISEL-NEXT: cmp w0, w1
928 ; GISEL-NEXT: cset w8, ls
929 ; GISEL-NEXT: cmp w2, w3
930 ; GISEL-NEXT: cset w9, gt
931 ; GISEL-NEXT: and w0, w8, w9
934 %c0 = icmp ule i32 %s0, %s1
935 %c1 = icmp sgt i32 %s2, %s3
937 %z = zext i1 %a to i32
941 define i32 @and_ule_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
942 ; SDISEL-LABEL: and_ule_sge:
943 ; SDISEL: // %bb.0: // %entry
944 ; SDISEL-NEXT: cmp w0, w1
945 ; SDISEL-NEXT: ccmp w2, w3, #8, ls
946 ; SDISEL-NEXT: cset w0, ge
949 ; GISEL-LABEL: and_ule_sge:
950 ; GISEL: // %bb.0: // %entry
951 ; GISEL-NEXT: cmp w0, w1
952 ; GISEL-NEXT: cset w8, ls
953 ; GISEL-NEXT: cmp w2, w3
954 ; GISEL-NEXT: cset w9, ge
955 ; GISEL-NEXT: and w0, w8, w9
958 %c0 = icmp ule i32 %s0, %s1
959 %c1 = icmp sge i32 %s2, %s3
961 %z = zext i1 %a to i32
965 define i32 @and_ugt_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
966 ; SDISEL-LABEL: and_ugt_eq:
967 ; SDISEL: // %bb.0: // %entry
968 ; SDISEL-NEXT: cmp w0, w1
969 ; SDISEL-NEXT: ccmp w2, w3, #0, hi
970 ; SDISEL-NEXT: cset w0, eq
973 ; GISEL-LABEL: and_ugt_eq:
974 ; GISEL: // %bb.0: // %entry
975 ; GISEL-NEXT: cmp w0, w1
976 ; GISEL-NEXT: cset w8, hi
977 ; GISEL-NEXT: cmp w2, w3
978 ; GISEL-NEXT: cset w9, eq
979 ; GISEL-NEXT: and w0, w8, w9
982 %c0 = icmp ugt i32 %s0, %s1
983 %c1 = icmp eq i32 %s2, %s3
985 %z = zext i1 %a to i32
989 define i32 @and_ugt_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
990 ; SDISEL-LABEL: and_ugt_ne:
991 ; SDISEL: // %bb.0: // %entry
992 ; SDISEL-NEXT: cmp w0, w1
993 ; SDISEL-NEXT: ccmp w2, w3, #4, hi
994 ; SDISEL-NEXT: cset w0, ne
997 ; GISEL-LABEL: and_ugt_ne:
998 ; GISEL: // %bb.0: // %entry
999 ; GISEL-NEXT: cmp w0, w1
1000 ; GISEL-NEXT: cset w8, hi
1001 ; GISEL-NEXT: cmp w2, w3
1002 ; GISEL-NEXT: cset w9, ne
1003 ; GISEL-NEXT: and w0, w8, w9
1006 %c0 = icmp ugt i32 %s0, %s1
1007 %c1 = icmp ne i32 %s2, %s3
1008 %a = and i1 %c0, %c1
1009 %z = zext i1 %a to i32
1013 define i32 @and_ugt_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1014 ; SDISEL-LABEL: and_ugt_ult:
1015 ; SDISEL: // %bb.0: // %entry
1016 ; SDISEL-NEXT: cmp w0, w1
1017 ; SDISEL-NEXT: ccmp w2, w3, #2, hi
1018 ; SDISEL-NEXT: cset w0, lo
1021 ; GISEL-LABEL: and_ugt_ult:
1022 ; GISEL: // %bb.0: // %entry
1023 ; GISEL-NEXT: cmp w0, w1
1024 ; GISEL-NEXT: cset w8, hi
1025 ; GISEL-NEXT: cmp w2, w3
1026 ; GISEL-NEXT: cset w9, lo
1027 ; GISEL-NEXT: and w0, w8, w9
1030 %c0 = icmp ugt i32 %s0, %s1
1031 %c1 = icmp ult i32 %s2, %s3
1032 %a = and i1 %c0, %c1
1033 %z = zext i1 %a to i32
1037 define i32 @and_ugt_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1038 ; SDISEL-LABEL: and_ugt_ule:
1039 ; SDISEL: // %bb.0: // %entry
1040 ; SDISEL-NEXT: cmp w0, w1
1041 ; SDISEL-NEXT: ccmp w2, w3, #2, hi
1042 ; SDISEL-NEXT: cset w0, ls
1045 ; GISEL-LABEL: and_ugt_ule:
1046 ; GISEL: // %bb.0: // %entry
1047 ; GISEL-NEXT: cmp w0, w1
1048 ; GISEL-NEXT: cset w8, hi
1049 ; GISEL-NEXT: cmp w2, w3
1050 ; GISEL-NEXT: cset w9, ls
1051 ; GISEL-NEXT: and w0, w8, w9
1054 %c0 = icmp ugt i32 %s0, %s1
1055 %c1 = icmp ule i32 %s2, %s3
1056 %a = and i1 %c0, %c1
1057 %z = zext i1 %a to i32
1061 define i32 @and_ugt_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1062 ; SDISEL-LABEL: and_ugt_ugt:
1063 ; SDISEL: // %bb.0: // %entry
1064 ; SDISEL-NEXT: cmp w0, w1
1065 ; SDISEL-NEXT: ccmp w2, w3, #0, hi
1066 ; SDISEL-NEXT: cset w0, hi
1069 ; GISEL-LABEL: and_ugt_ugt:
1070 ; GISEL: // %bb.0: // %entry
1071 ; GISEL-NEXT: cmp w0, w1
1072 ; GISEL-NEXT: cset w8, hi
1073 ; GISEL-NEXT: cmp w2, w3
1074 ; GISEL-NEXT: cset w9, hi
1075 ; GISEL-NEXT: and w0, w8, w9
1078 %c0 = icmp ugt i32 %s0, %s1
1079 %c1 = icmp ugt i32 %s2, %s3
1080 %a = and i1 %c0, %c1
1081 %z = zext i1 %a to i32
1085 define i32 @and_ugt_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1086 ; SDISEL-LABEL: and_ugt_uge:
1087 ; SDISEL: // %bb.0: // %entry
1088 ; SDISEL-NEXT: cmp w0, w1
1089 ; SDISEL-NEXT: ccmp w2, w3, #0, hi
1090 ; SDISEL-NEXT: cset w0, hs
1093 ; GISEL-LABEL: and_ugt_uge:
1094 ; GISEL: // %bb.0: // %entry
1095 ; GISEL-NEXT: cmp w0, w1
1096 ; GISEL-NEXT: cset w8, hi
1097 ; GISEL-NEXT: cmp w2, w3
1098 ; GISEL-NEXT: cset w9, hs
1099 ; GISEL-NEXT: and w0, w8, w9
1102 %c0 = icmp ugt i32 %s0, %s1
1103 %c1 = icmp uge i32 %s2, %s3
1104 %a = and i1 %c0, %c1
1105 %z = zext i1 %a to i32
1109 define i32 @and_ugt_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1110 ; SDISEL-LABEL: and_ugt_slt:
1111 ; SDISEL: // %bb.0: // %entry
1112 ; SDISEL-NEXT: cmp w0, w1
1113 ; SDISEL-NEXT: ccmp w2, w3, #0, hi
1114 ; SDISEL-NEXT: cset w0, lt
1117 ; GISEL-LABEL: and_ugt_slt:
1118 ; GISEL: // %bb.0: // %entry
1119 ; GISEL-NEXT: cmp w0, w1
1120 ; GISEL-NEXT: cset w8, hi
1121 ; GISEL-NEXT: cmp w2, w3
1122 ; GISEL-NEXT: cset w9, lt
1123 ; GISEL-NEXT: and w0, w8, w9
1126 %c0 = icmp ugt i32 %s0, %s1
1127 %c1 = icmp slt i32 %s2, %s3
1128 %a = and i1 %c0, %c1
1129 %z = zext i1 %a to i32
1133 define i32 @and_ugt_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1134 ; SDISEL-LABEL: and_ugt_sle:
1135 ; SDISEL: // %bb.0: // %entry
1136 ; SDISEL-NEXT: cmp w0, w1
1137 ; SDISEL-NEXT: ccmp w2, w3, #0, hi
1138 ; SDISEL-NEXT: cset w0, le
1141 ; GISEL-LABEL: and_ugt_sle:
1142 ; GISEL: // %bb.0: // %entry
1143 ; GISEL-NEXT: cmp w0, w1
1144 ; GISEL-NEXT: cset w8, hi
1145 ; GISEL-NEXT: cmp w2, w3
1146 ; GISEL-NEXT: cset w9, le
1147 ; GISEL-NEXT: and w0, w8, w9
1150 %c0 = icmp ugt i32 %s0, %s1
1151 %c1 = icmp sle i32 %s2, %s3
1152 %a = and i1 %c0, %c1
1153 %z = zext i1 %a to i32
1157 define i32 @and_ugt_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1158 ; SDISEL-LABEL: and_ugt_sgt:
1159 ; SDISEL: // %bb.0: // %entry
1160 ; SDISEL-NEXT: cmp w0, w1
1161 ; SDISEL-NEXT: ccmp w2, w3, #4, hi
1162 ; SDISEL-NEXT: cset w0, gt
1165 ; GISEL-LABEL: and_ugt_sgt:
1166 ; GISEL: // %bb.0: // %entry
1167 ; GISEL-NEXT: cmp w0, w1
1168 ; GISEL-NEXT: cset w8, hi
1169 ; GISEL-NEXT: cmp w2, w3
1170 ; GISEL-NEXT: cset w9, gt
1171 ; GISEL-NEXT: and w0, w8, w9
1174 %c0 = icmp ugt i32 %s0, %s1
1175 %c1 = icmp sgt i32 %s2, %s3
1176 %a = and i1 %c0, %c1
1177 %z = zext i1 %a to i32
1181 define i32 @and_ugt_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1182 ; SDISEL-LABEL: and_ugt_sge:
1183 ; SDISEL: // %bb.0: // %entry
1184 ; SDISEL-NEXT: cmp w0, w1
1185 ; SDISEL-NEXT: ccmp w2, w3, #8, hi
1186 ; SDISEL-NEXT: cset w0, ge
1189 ; GISEL-LABEL: and_ugt_sge:
1190 ; GISEL: // %bb.0: // %entry
1191 ; GISEL-NEXT: cmp w0, w1
1192 ; GISEL-NEXT: cset w8, hi
1193 ; GISEL-NEXT: cmp w2, w3
1194 ; GISEL-NEXT: cset w9, ge
1195 ; GISEL-NEXT: and w0, w8, w9
1198 %c0 = icmp ugt i32 %s0, %s1
1199 %c1 = icmp sge i32 %s2, %s3
1200 %a = and i1 %c0, %c1
1201 %z = zext i1 %a to i32
1205 define i32 @and_uge_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1206 ; SDISEL-LABEL: and_uge_eq:
1207 ; SDISEL: // %bb.0: // %entry
1208 ; SDISEL-NEXT: cmp w0, w1
1209 ; SDISEL-NEXT: ccmp w2, w3, #0, hs
1210 ; SDISEL-NEXT: cset w0, eq
1213 ; GISEL-LABEL: and_uge_eq:
1214 ; GISEL: // %bb.0: // %entry
1215 ; GISEL-NEXT: cmp w0, w1
1216 ; GISEL-NEXT: cset w8, hs
1217 ; GISEL-NEXT: cmp w2, w3
1218 ; GISEL-NEXT: cset w9, eq
1219 ; GISEL-NEXT: and w0, w8, w9
1222 %c0 = icmp uge i32 %s0, %s1
1223 %c1 = icmp eq i32 %s2, %s3
1224 %a = and i1 %c0, %c1
1225 %z = zext i1 %a to i32
1229 define i32 @and_uge_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1230 ; SDISEL-LABEL: and_uge_ne:
1231 ; SDISEL: // %bb.0: // %entry
1232 ; SDISEL-NEXT: cmp w0, w1
1233 ; SDISEL-NEXT: ccmp w2, w3, #4, hs
1234 ; SDISEL-NEXT: cset w0, ne
1237 ; GISEL-LABEL: and_uge_ne:
1238 ; GISEL: // %bb.0: // %entry
1239 ; GISEL-NEXT: cmp w0, w1
1240 ; GISEL-NEXT: cset w8, hs
1241 ; GISEL-NEXT: cmp w2, w3
1242 ; GISEL-NEXT: cset w9, ne
1243 ; GISEL-NEXT: and w0, w8, w9
1246 %c0 = icmp uge i32 %s0, %s1
1247 %c1 = icmp ne i32 %s2, %s3
1248 %a = and i1 %c0, %c1
1249 %z = zext i1 %a to i32
1253 define i32 @and_uge_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1254 ; SDISEL-LABEL: and_uge_ult:
1255 ; SDISEL: // %bb.0: // %entry
1256 ; SDISEL-NEXT: cmp w0, w1
1257 ; SDISEL-NEXT: ccmp w2, w3, #2, hs
1258 ; SDISEL-NEXT: cset w0, lo
1261 ; GISEL-LABEL: and_uge_ult:
1262 ; GISEL: // %bb.0: // %entry
1263 ; GISEL-NEXT: cmp w0, w1
1264 ; GISEL-NEXT: cset w8, hs
1265 ; GISEL-NEXT: cmp w2, w3
1266 ; GISEL-NEXT: cset w9, lo
1267 ; GISEL-NEXT: and w0, w8, w9
1270 %c0 = icmp uge i32 %s0, %s1
1271 %c1 = icmp ult i32 %s2, %s3
1272 %a = and i1 %c0, %c1
1273 %z = zext i1 %a to i32
1277 define i32 @and_uge_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1278 ; SDISEL-LABEL: and_uge_ule:
1279 ; SDISEL: // %bb.0: // %entry
1280 ; SDISEL-NEXT: cmp w0, w1
1281 ; SDISEL-NEXT: ccmp w2, w3, #2, hs
1282 ; SDISEL-NEXT: cset w0, ls
1285 ; GISEL-LABEL: and_uge_ule:
1286 ; GISEL: // %bb.0: // %entry
1287 ; GISEL-NEXT: cmp w0, w1
1288 ; GISEL-NEXT: cset w8, hs
1289 ; GISEL-NEXT: cmp w2, w3
1290 ; GISEL-NEXT: cset w9, ls
1291 ; GISEL-NEXT: and w0, w8, w9
1294 %c0 = icmp uge i32 %s0, %s1
1295 %c1 = icmp ule i32 %s2, %s3
1296 %a = and i1 %c0, %c1
1297 %z = zext i1 %a to i32
1301 define i32 @and_uge_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1302 ; SDISEL-LABEL: and_uge_ugt:
1303 ; SDISEL: // %bb.0: // %entry
1304 ; SDISEL-NEXT: cmp w0, w1
1305 ; SDISEL-NEXT: ccmp w2, w3, #0, hs
1306 ; SDISEL-NEXT: cset w0, hi
1309 ; GISEL-LABEL: and_uge_ugt:
1310 ; GISEL: // %bb.0: // %entry
1311 ; GISEL-NEXT: cmp w0, w1
1312 ; GISEL-NEXT: cset w8, hs
1313 ; GISEL-NEXT: cmp w2, w3
1314 ; GISEL-NEXT: cset w9, hi
1315 ; GISEL-NEXT: and w0, w8, w9
1318 %c0 = icmp uge i32 %s0, %s1
1319 %c1 = icmp ugt i32 %s2, %s3
1320 %a = and i1 %c0, %c1
1321 %z = zext i1 %a to i32
1325 define i32 @and_uge_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1326 ; SDISEL-LABEL: and_uge_uge:
1327 ; SDISEL: // %bb.0: // %entry
1328 ; SDISEL-NEXT: cmp w0, w1
1329 ; SDISEL-NEXT: ccmp w2, w3, #0, hs
1330 ; SDISEL-NEXT: cset w0, hs
1333 ; GISEL-LABEL: and_uge_uge:
1334 ; GISEL: // %bb.0: // %entry
1335 ; GISEL-NEXT: cmp w0, w1
1336 ; GISEL-NEXT: cset w8, hs
1337 ; GISEL-NEXT: cmp w2, w3
1338 ; GISEL-NEXT: cset w9, hs
1339 ; GISEL-NEXT: and w0, w8, w9
1342 %c0 = icmp uge i32 %s0, %s1
1343 %c1 = icmp uge i32 %s2, %s3
1344 %a = and i1 %c0, %c1
1345 %z = zext i1 %a to i32
1349 define i32 @and_uge_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1350 ; SDISEL-LABEL: and_uge_slt:
1351 ; SDISEL: // %bb.0: // %entry
1352 ; SDISEL-NEXT: cmp w0, w1
1353 ; SDISEL-NEXT: ccmp w2, w3, #0, hs
1354 ; SDISEL-NEXT: cset w0, lt
1357 ; GISEL-LABEL: and_uge_slt:
1358 ; GISEL: // %bb.0: // %entry
1359 ; GISEL-NEXT: cmp w0, w1
1360 ; GISEL-NEXT: cset w8, hs
1361 ; GISEL-NEXT: cmp w2, w3
1362 ; GISEL-NEXT: cset w9, lt
1363 ; GISEL-NEXT: and w0, w8, w9
1366 %c0 = icmp uge i32 %s0, %s1
1367 %c1 = icmp slt i32 %s2, %s3
1368 %a = and i1 %c0, %c1
1369 %z = zext i1 %a to i32
1373 define i32 @and_uge_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1374 ; SDISEL-LABEL: and_uge_sle:
1375 ; SDISEL: // %bb.0: // %entry
1376 ; SDISEL-NEXT: cmp w0, w1
1377 ; SDISEL-NEXT: ccmp w2, w3, #0, hs
1378 ; SDISEL-NEXT: cset w0, le
1381 ; GISEL-LABEL: and_uge_sle:
1382 ; GISEL: // %bb.0: // %entry
1383 ; GISEL-NEXT: cmp w0, w1
1384 ; GISEL-NEXT: cset w8, hs
1385 ; GISEL-NEXT: cmp w2, w3
1386 ; GISEL-NEXT: cset w9, le
1387 ; GISEL-NEXT: and w0, w8, w9
1390 %c0 = icmp uge i32 %s0, %s1
1391 %c1 = icmp sle i32 %s2, %s3
1392 %a = and i1 %c0, %c1
1393 %z = zext i1 %a to i32
1397 define i32 @and_uge_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1398 ; SDISEL-LABEL: and_uge_sgt:
1399 ; SDISEL: // %bb.0: // %entry
1400 ; SDISEL-NEXT: cmp w0, w1
1401 ; SDISEL-NEXT: ccmp w2, w3, #4, hs
1402 ; SDISEL-NEXT: cset w0, gt
1405 ; GISEL-LABEL: and_uge_sgt:
1406 ; GISEL: // %bb.0: // %entry
1407 ; GISEL-NEXT: cmp w0, w1
1408 ; GISEL-NEXT: cset w8, hs
1409 ; GISEL-NEXT: cmp w2, w3
1410 ; GISEL-NEXT: cset w9, gt
1411 ; GISEL-NEXT: and w0, w8, w9
1414 %c0 = icmp uge i32 %s0, %s1
1415 %c1 = icmp sgt i32 %s2, %s3
1416 %a = and i1 %c0, %c1
1417 %z = zext i1 %a to i32
1421 define i32 @and_uge_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1422 ; SDISEL-LABEL: and_uge_sge:
1423 ; SDISEL: // %bb.0: // %entry
1424 ; SDISEL-NEXT: cmp w0, w1
1425 ; SDISEL-NEXT: ccmp w2, w3, #8, hs
1426 ; SDISEL-NEXT: cset w0, ge
1429 ; GISEL-LABEL: and_uge_sge:
1430 ; GISEL: // %bb.0: // %entry
1431 ; GISEL-NEXT: cmp w0, w1
1432 ; GISEL-NEXT: cset w8, hs
1433 ; GISEL-NEXT: cmp w2, w3
1434 ; GISEL-NEXT: cset w9, ge
1435 ; GISEL-NEXT: and w0, w8, w9
1438 %c0 = icmp uge i32 %s0, %s1
1439 %c1 = icmp sge i32 %s2, %s3
1440 %a = and i1 %c0, %c1
1441 %z = zext i1 %a to i32
1445 define i32 @and_slt_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1446 ; SDISEL-LABEL: and_slt_eq:
1447 ; SDISEL: // %bb.0: // %entry
1448 ; SDISEL-NEXT: cmp w0, w1
1449 ; SDISEL-NEXT: ccmp w2, w3, #0, lt
1450 ; SDISEL-NEXT: cset w0, eq
1453 ; GISEL-LABEL: and_slt_eq:
1454 ; GISEL: // %bb.0: // %entry
1455 ; GISEL-NEXT: cmp w0, w1
1456 ; GISEL-NEXT: cset w8, lt
1457 ; GISEL-NEXT: cmp w2, w3
1458 ; GISEL-NEXT: cset w9, eq
1459 ; GISEL-NEXT: and w0, w8, w9
1462 %c0 = icmp slt i32 %s0, %s1
1463 %c1 = icmp eq i32 %s2, %s3
1464 %a = and i1 %c0, %c1
1465 %z = zext i1 %a to i32
1469 define i32 @and_slt_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1470 ; SDISEL-LABEL: and_slt_ne:
1471 ; SDISEL: // %bb.0: // %entry
1472 ; SDISEL-NEXT: cmp w0, w1
1473 ; SDISEL-NEXT: ccmp w2, w3, #4, lt
1474 ; SDISEL-NEXT: cset w0, ne
1477 ; GISEL-LABEL: and_slt_ne:
1478 ; GISEL: // %bb.0: // %entry
1479 ; GISEL-NEXT: cmp w0, w1
1480 ; GISEL-NEXT: cset w8, lt
1481 ; GISEL-NEXT: cmp w2, w3
1482 ; GISEL-NEXT: cset w9, ne
1483 ; GISEL-NEXT: and w0, w8, w9
1486 %c0 = icmp slt i32 %s0, %s1
1487 %c1 = icmp ne i32 %s2, %s3
1488 %a = and i1 %c0, %c1
1489 %z = zext i1 %a to i32
1493 define i32 @and_slt_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1494 ; SDISEL-LABEL: and_slt_ult:
1495 ; SDISEL: // %bb.0: // %entry
1496 ; SDISEL-NEXT: cmp w0, w1
1497 ; SDISEL-NEXT: ccmp w2, w3, #2, lt
1498 ; SDISEL-NEXT: cset w0, lo
1501 ; GISEL-LABEL: and_slt_ult:
1502 ; GISEL: // %bb.0: // %entry
1503 ; GISEL-NEXT: cmp w0, w1
1504 ; GISEL-NEXT: cset w8, lt
1505 ; GISEL-NEXT: cmp w2, w3
1506 ; GISEL-NEXT: cset w9, lo
1507 ; GISEL-NEXT: and w0, w8, w9
1510 %c0 = icmp slt i32 %s0, %s1
1511 %c1 = icmp ult i32 %s2, %s3
1512 %a = and i1 %c0, %c1
1513 %z = zext i1 %a to i32
1517 define i32 @and_slt_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1518 ; SDISEL-LABEL: and_slt_ule:
1519 ; SDISEL: // %bb.0: // %entry
1520 ; SDISEL-NEXT: cmp w0, w1
1521 ; SDISEL-NEXT: ccmp w2, w3, #2, lt
1522 ; SDISEL-NEXT: cset w0, ls
1525 ; GISEL-LABEL: and_slt_ule:
1526 ; GISEL: // %bb.0: // %entry
1527 ; GISEL-NEXT: cmp w0, w1
1528 ; GISEL-NEXT: cset w8, lt
1529 ; GISEL-NEXT: cmp w2, w3
1530 ; GISEL-NEXT: cset w9, ls
1531 ; GISEL-NEXT: and w0, w8, w9
1534 %c0 = icmp slt i32 %s0, %s1
1535 %c1 = icmp ule i32 %s2, %s3
1536 %a = and i1 %c0, %c1
1537 %z = zext i1 %a to i32
1541 define i32 @and_slt_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1542 ; SDISEL-LABEL: and_slt_ugt:
1543 ; SDISEL: // %bb.0: // %entry
1544 ; SDISEL-NEXT: cmp w0, w1
1545 ; SDISEL-NEXT: ccmp w2, w3, #0, lt
1546 ; SDISEL-NEXT: cset w0, hi
1549 ; GISEL-LABEL: and_slt_ugt:
1550 ; GISEL: // %bb.0: // %entry
1551 ; GISEL-NEXT: cmp w0, w1
1552 ; GISEL-NEXT: cset w8, lt
1553 ; GISEL-NEXT: cmp w2, w3
1554 ; GISEL-NEXT: cset w9, hi
1555 ; GISEL-NEXT: and w0, w8, w9
1558 %c0 = icmp slt i32 %s0, %s1
1559 %c1 = icmp ugt i32 %s2, %s3
1560 %a = and i1 %c0, %c1
1561 %z = zext i1 %a to i32
1565 define i32 @and_slt_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1566 ; SDISEL-LABEL: and_slt_uge:
1567 ; SDISEL: // %bb.0: // %entry
1568 ; SDISEL-NEXT: cmp w0, w1
1569 ; SDISEL-NEXT: ccmp w2, w3, #0, lt
1570 ; SDISEL-NEXT: cset w0, hs
1573 ; GISEL-LABEL: and_slt_uge:
1574 ; GISEL: // %bb.0: // %entry
1575 ; GISEL-NEXT: cmp w0, w1
1576 ; GISEL-NEXT: cset w8, lt
1577 ; GISEL-NEXT: cmp w2, w3
1578 ; GISEL-NEXT: cset w9, hs
1579 ; GISEL-NEXT: and w0, w8, w9
1582 %c0 = icmp slt i32 %s0, %s1
1583 %c1 = icmp uge i32 %s2, %s3
1584 %a = and i1 %c0, %c1
1585 %z = zext i1 %a to i32
1589 define i32 @and_slt_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1590 ; SDISEL-LABEL: and_slt_slt:
1591 ; SDISEL: // %bb.0: // %entry
1592 ; SDISEL-NEXT: cmp w0, w1
1593 ; SDISEL-NEXT: ccmp w2, w3, #0, lt
1594 ; SDISEL-NEXT: cset w0, lt
1597 ; GISEL-LABEL: and_slt_slt:
1598 ; GISEL: // %bb.0: // %entry
1599 ; GISEL-NEXT: cmp w0, w1
1600 ; GISEL-NEXT: cset w8, lt
1601 ; GISEL-NEXT: cmp w2, w3
1602 ; GISEL-NEXT: cset w9, lt
1603 ; GISEL-NEXT: and w0, w8, w9
1606 %c0 = icmp slt i32 %s0, %s1
1607 %c1 = icmp slt i32 %s2, %s3
1608 %a = and i1 %c0, %c1
1609 %z = zext i1 %a to i32
1613 define i32 @and_slt_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1614 ; SDISEL-LABEL: and_slt_sle:
1615 ; SDISEL: // %bb.0: // %entry
1616 ; SDISEL-NEXT: cmp w0, w1
1617 ; SDISEL-NEXT: ccmp w2, w3, #0, lt
1618 ; SDISEL-NEXT: cset w0, le
1621 ; GISEL-LABEL: and_slt_sle:
1622 ; GISEL: // %bb.0: // %entry
1623 ; GISEL-NEXT: cmp w0, w1
1624 ; GISEL-NEXT: cset w8, lt
1625 ; GISEL-NEXT: cmp w2, w3
1626 ; GISEL-NEXT: cset w9, le
1627 ; GISEL-NEXT: and w0, w8, w9
1630 %c0 = icmp slt i32 %s0, %s1
1631 %c1 = icmp sle i32 %s2, %s3
1632 %a = and i1 %c0, %c1
1633 %z = zext i1 %a to i32
1637 define i32 @and_slt_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1638 ; SDISEL-LABEL: and_slt_sgt:
1639 ; SDISEL: // %bb.0: // %entry
1640 ; SDISEL-NEXT: cmp w0, w1
1641 ; SDISEL-NEXT: ccmp w2, w3, #4, lt
1642 ; SDISEL-NEXT: cset w0, gt
1645 ; GISEL-LABEL: and_slt_sgt:
1646 ; GISEL: // %bb.0: // %entry
1647 ; GISEL-NEXT: cmp w0, w1
1648 ; GISEL-NEXT: cset w8, lt
1649 ; GISEL-NEXT: cmp w2, w3
1650 ; GISEL-NEXT: cset w9, gt
1651 ; GISEL-NEXT: and w0, w8, w9
1654 %c0 = icmp slt i32 %s0, %s1
1655 %c1 = icmp sgt i32 %s2, %s3
1656 %a = and i1 %c0, %c1
1657 %z = zext i1 %a to i32
1661 define i32 @and_slt_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1662 ; SDISEL-LABEL: and_slt_sge:
1663 ; SDISEL: // %bb.0: // %entry
1664 ; SDISEL-NEXT: cmp w0, w1
1665 ; SDISEL-NEXT: ccmp w2, w3, #8, lt
1666 ; SDISEL-NEXT: cset w0, ge
1669 ; GISEL-LABEL: and_slt_sge:
1670 ; GISEL: // %bb.0: // %entry
1671 ; GISEL-NEXT: cmp w0, w1
1672 ; GISEL-NEXT: cset w8, lt
1673 ; GISEL-NEXT: cmp w2, w3
1674 ; GISEL-NEXT: cset w9, ge
1675 ; GISEL-NEXT: and w0, w8, w9
1678 %c0 = icmp slt i32 %s0, %s1
1679 %c1 = icmp sge i32 %s2, %s3
1680 %a = and i1 %c0, %c1
1681 %z = zext i1 %a to i32
1685 define i32 @and_sle_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1686 ; SDISEL-LABEL: and_sle_eq:
1687 ; SDISEL: // %bb.0: // %entry
1688 ; SDISEL-NEXT: cmp w0, w1
1689 ; SDISEL-NEXT: ccmp w2, w3, #0, le
1690 ; SDISEL-NEXT: cset w0, eq
1693 ; GISEL-LABEL: and_sle_eq:
1694 ; GISEL: // %bb.0: // %entry
1695 ; GISEL-NEXT: cmp w0, w1
1696 ; GISEL-NEXT: cset w8, le
1697 ; GISEL-NEXT: cmp w2, w3
1698 ; GISEL-NEXT: cset w9, eq
1699 ; GISEL-NEXT: and w0, w8, w9
1702 %c0 = icmp sle i32 %s0, %s1
1703 %c1 = icmp eq i32 %s2, %s3
1704 %a = and i1 %c0, %c1
1705 %z = zext i1 %a to i32
1709 define i32 @and_sle_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1710 ; SDISEL-LABEL: and_sle_ne:
1711 ; SDISEL: // %bb.0: // %entry
1712 ; SDISEL-NEXT: cmp w0, w1
1713 ; SDISEL-NEXT: ccmp w2, w3, #4, le
1714 ; SDISEL-NEXT: cset w0, ne
1717 ; GISEL-LABEL: and_sle_ne:
1718 ; GISEL: // %bb.0: // %entry
1719 ; GISEL-NEXT: cmp w0, w1
1720 ; GISEL-NEXT: cset w8, le
1721 ; GISEL-NEXT: cmp w2, w3
1722 ; GISEL-NEXT: cset w9, ne
1723 ; GISEL-NEXT: and w0, w8, w9
1726 %c0 = icmp sle i32 %s0, %s1
1727 %c1 = icmp ne i32 %s2, %s3
1728 %a = and i1 %c0, %c1
1729 %z = zext i1 %a to i32
1733 define i32 @and_sle_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1734 ; SDISEL-LABEL: and_sle_ult:
1735 ; SDISEL: // %bb.0: // %entry
1736 ; SDISEL-NEXT: cmp w0, w1
1737 ; SDISEL-NEXT: ccmp w2, w3, #2, le
1738 ; SDISEL-NEXT: cset w0, lo
1741 ; GISEL-LABEL: and_sle_ult:
1742 ; GISEL: // %bb.0: // %entry
1743 ; GISEL-NEXT: cmp w0, w1
1744 ; GISEL-NEXT: cset w8, le
1745 ; GISEL-NEXT: cmp w2, w3
1746 ; GISEL-NEXT: cset w9, lo
1747 ; GISEL-NEXT: and w0, w8, w9
1750 %c0 = icmp sle i32 %s0, %s1
1751 %c1 = icmp ult i32 %s2, %s3
1752 %a = and i1 %c0, %c1
1753 %z = zext i1 %a to i32
1757 define i32 @and_sle_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1758 ; SDISEL-LABEL: and_sle_ule:
1759 ; SDISEL: // %bb.0: // %entry
1760 ; SDISEL-NEXT: cmp w0, w1
1761 ; SDISEL-NEXT: ccmp w2, w3, #2, le
1762 ; SDISEL-NEXT: cset w0, ls
1765 ; GISEL-LABEL: and_sle_ule:
1766 ; GISEL: // %bb.0: // %entry
1767 ; GISEL-NEXT: cmp w0, w1
1768 ; GISEL-NEXT: cset w8, le
1769 ; GISEL-NEXT: cmp w2, w3
1770 ; GISEL-NEXT: cset w9, ls
1771 ; GISEL-NEXT: and w0, w8, w9
1774 %c0 = icmp sle i32 %s0, %s1
1775 %c1 = icmp ule i32 %s2, %s3
1776 %a = and i1 %c0, %c1
1777 %z = zext i1 %a to i32
1781 define i32 @and_sle_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1782 ; SDISEL-LABEL: and_sle_ugt:
1783 ; SDISEL: // %bb.0: // %entry
1784 ; SDISEL-NEXT: cmp w0, w1
1785 ; SDISEL-NEXT: ccmp w2, w3, #0, le
1786 ; SDISEL-NEXT: cset w0, hi
1789 ; GISEL-LABEL: and_sle_ugt:
1790 ; GISEL: // %bb.0: // %entry
1791 ; GISEL-NEXT: cmp w0, w1
1792 ; GISEL-NEXT: cset w8, le
1793 ; GISEL-NEXT: cmp w2, w3
1794 ; GISEL-NEXT: cset w9, hi
1795 ; GISEL-NEXT: and w0, w8, w9
1798 %c0 = icmp sle i32 %s0, %s1
1799 %c1 = icmp ugt i32 %s2, %s3
1800 %a = and i1 %c0, %c1
1801 %z = zext i1 %a to i32
1805 define i32 @and_sle_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1806 ; SDISEL-LABEL: and_sle_uge:
1807 ; SDISEL: // %bb.0: // %entry
1808 ; SDISEL-NEXT: cmp w0, w1
1809 ; SDISEL-NEXT: ccmp w2, w3, #0, le
1810 ; SDISEL-NEXT: cset w0, hs
1813 ; GISEL-LABEL: and_sle_uge:
1814 ; GISEL: // %bb.0: // %entry
1815 ; GISEL-NEXT: cmp w0, w1
1816 ; GISEL-NEXT: cset w8, le
1817 ; GISEL-NEXT: cmp w2, w3
1818 ; GISEL-NEXT: cset w9, hs
1819 ; GISEL-NEXT: and w0, w8, w9
1822 %c0 = icmp sle i32 %s0, %s1
1823 %c1 = icmp uge i32 %s2, %s3
1824 %a = and i1 %c0, %c1
1825 %z = zext i1 %a to i32
1829 define i32 @and_sle_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1830 ; SDISEL-LABEL: and_sle_slt:
1831 ; SDISEL: // %bb.0: // %entry
1832 ; SDISEL-NEXT: cmp w0, w1
1833 ; SDISEL-NEXT: ccmp w2, w3, #0, le
1834 ; SDISEL-NEXT: cset w0, lt
1837 ; GISEL-LABEL: and_sle_slt:
1838 ; GISEL: // %bb.0: // %entry
1839 ; GISEL-NEXT: cmp w0, w1
1840 ; GISEL-NEXT: cset w8, le
1841 ; GISEL-NEXT: cmp w2, w3
1842 ; GISEL-NEXT: cset w9, lt
1843 ; GISEL-NEXT: and w0, w8, w9
1846 %c0 = icmp sle i32 %s0, %s1
1847 %c1 = icmp slt i32 %s2, %s3
1848 %a = and i1 %c0, %c1
1849 %z = zext i1 %a to i32
1853 define i32 @and_sle_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1854 ; SDISEL-LABEL: and_sle_sle:
1855 ; SDISEL: // %bb.0: // %entry
1856 ; SDISEL-NEXT: cmp w0, w1
1857 ; SDISEL-NEXT: ccmp w2, w3, #0, le
1858 ; SDISEL-NEXT: cset w0, le
1861 ; GISEL-LABEL: and_sle_sle:
1862 ; GISEL: // %bb.0: // %entry
1863 ; GISEL-NEXT: cmp w0, w1
1864 ; GISEL-NEXT: cset w8, le
1865 ; GISEL-NEXT: cmp w2, w3
1866 ; GISEL-NEXT: cset w9, le
1867 ; GISEL-NEXT: and w0, w8, w9
1870 %c0 = icmp sle i32 %s0, %s1
1871 %c1 = icmp sle i32 %s2, %s3
1872 %a = and i1 %c0, %c1
1873 %z = zext i1 %a to i32
1877 define i32 @and_sle_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1878 ; SDISEL-LABEL: and_sle_sgt:
1879 ; SDISEL: // %bb.0: // %entry
1880 ; SDISEL-NEXT: cmp w0, w1
1881 ; SDISEL-NEXT: ccmp w2, w3, #4, le
1882 ; SDISEL-NEXT: cset w0, gt
1885 ; GISEL-LABEL: and_sle_sgt:
1886 ; GISEL: // %bb.0: // %entry
1887 ; GISEL-NEXT: cmp w0, w1
1888 ; GISEL-NEXT: cset w8, le
1889 ; GISEL-NEXT: cmp w2, w3
1890 ; GISEL-NEXT: cset w9, gt
1891 ; GISEL-NEXT: and w0, w8, w9
1894 %c0 = icmp sle i32 %s0, %s1
1895 %c1 = icmp sgt i32 %s2, %s3
1896 %a = and i1 %c0, %c1
1897 %z = zext i1 %a to i32
1901 define i32 @and_sle_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1902 ; SDISEL-LABEL: and_sle_sge:
1903 ; SDISEL: // %bb.0: // %entry
1904 ; SDISEL-NEXT: cmp w0, w1
1905 ; SDISEL-NEXT: ccmp w2, w3, #8, le
1906 ; SDISEL-NEXT: cset w0, ge
1909 ; GISEL-LABEL: and_sle_sge:
1910 ; GISEL: // %bb.0: // %entry
1911 ; GISEL-NEXT: cmp w0, w1
1912 ; GISEL-NEXT: cset w8, le
1913 ; GISEL-NEXT: cmp w2, w3
1914 ; GISEL-NEXT: cset w9, ge
1915 ; GISEL-NEXT: and w0, w8, w9
1918 %c0 = icmp sle i32 %s0, %s1
1919 %c1 = icmp sge i32 %s2, %s3
1920 %a = and i1 %c0, %c1
1921 %z = zext i1 %a to i32
1925 define i32 @and_sgt_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1926 ; SDISEL-LABEL: and_sgt_eq:
1927 ; SDISEL: // %bb.0: // %entry
1928 ; SDISEL-NEXT: cmp w0, w1
1929 ; SDISEL-NEXT: ccmp w2, w3, #0, gt
1930 ; SDISEL-NEXT: cset w0, eq
1933 ; GISEL-LABEL: and_sgt_eq:
1934 ; GISEL: // %bb.0: // %entry
1935 ; GISEL-NEXT: cmp w0, w1
1936 ; GISEL-NEXT: cset w8, gt
1937 ; GISEL-NEXT: cmp w2, w3
1938 ; GISEL-NEXT: cset w9, eq
1939 ; GISEL-NEXT: and w0, w8, w9
1942 %c0 = icmp sgt i32 %s0, %s1
1943 %c1 = icmp eq i32 %s2, %s3
1944 %a = and i1 %c0, %c1
1945 %z = zext i1 %a to i32
1949 define i32 @and_sgt_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1950 ; SDISEL-LABEL: and_sgt_ne:
1951 ; SDISEL: // %bb.0: // %entry
1952 ; SDISEL-NEXT: cmp w0, w1
1953 ; SDISEL-NEXT: ccmp w2, w3, #4, gt
1954 ; SDISEL-NEXT: cset w0, ne
1957 ; GISEL-LABEL: and_sgt_ne:
1958 ; GISEL: // %bb.0: // %entry
1959 ; GISEL-NEXT: cmp w0, w1
1960 ; GISEL-NEXT: cset w8, gt
1961 ; GISEL-NEXT: cmp w2, w3
1962 ; GISEL-NEXT: cset w9, ne
1963 ; GISEL-NEXT: and w0, w8, w9
1966 %c0 = icmp sgt i32 %s0, %s1
1967 %c1 = icmp ne i32 %s2, %s3
1968 %a = and i1 %c0, %c1
1969 %z = zext i1 %a to i32
1973 define i32 @and_sgt_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1974 ; SDISEL-LABEL: and_sgt_ult:
1975 ; SDISEL: // %bb.0: // %entry
1976 ; SDISEL-NEXT: cmp w0, w1
1977 ; SDISEL-NEXT: ccmp w2, w3, #2, gt
1978 ; SDISEL-NEXT: cset w0, lo
1981 ; GISEL-LABEL: and_sgt_ult:
1982 ; GISEL: // %bb.0: // %entry
1983 ; GISEL-NEXT: cmp w0, w1
1984 ; GISEL-NEXT: cset w8, gt
1985 ; GISEL-NEXT: cmp w2, w3
1986 ; GISEL-NEXT: cset w9, lo
1987 ; GISEL-NEXT: and w0, w8, w9
1990 %c0 = icmp sgt i32 %s0, %s1
1991 %c1 = icmp ult i32 %s2, %s3
1992 %a = and i1 %c0, %c1
1993 %z = zext i1 %a to i32
1997 define i32 @and_sgt_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
1998 ; SDISEL-LABEL: and_sgt_ule:
1999 ; SDISEL: // %bb.0: // %entry
2000 ; SDISEL-NEXT: cmp w0, w1
2001 ; SDISEL-NEXT: ccmp w2, w3, #2, gt
2002 ; SDISEL-NEXT: cset w0, ls
2005 ; GISEL-LABEL: and_sgt_ule:
2006 ; GISEL: // %bb.0: // %entry
2007 ; GISEL-NEXT: cmp w0, w1
2008 ; GISEL-NEXT: cset w8, gt
2009 ; GISEL-NEXT: cmp w2, w3
2010 ; GISEL-NEXT: cset w9, ls
2011 ; GISEL-NEXT: and w0, w8, w9
2014 %c0 = icmp sgt i32 %s0, %s1
2015 %c1 = icmp ule i32 %s2, %s3
2016 %a = and i1 %c0, %c1
2017 %z = zext i1 %a to i32
2021 define i32 @and_sgt_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2022 ; SDISEL-LABEL: and_sgt_ugt:
2023 ; SDISEL: // %bb.0: // %entry
2024 ; SDISEL-NEXT: cmp w0, w1
2025 ; SDISEL-NEXT: ccmp w2, w3, #0, gt
2026 ; SDISEL-NEXT: cset w0, hi
2029 ; GISEL-LABEL: and_sgt_ugt:
2030 ; GISEL: // %bb.0: // %entry
2031 ; GISEL-NEXT: cmp w0, w1
2032 ; GISEL-NEXT: cset w8, gt
2033 ; GISEL-NEXT: cmp w2, w3
2034 ; GISEL-NEXT: cset w9, hi
2035 ; GISEL-NEXT: and w0, w8, w9
2038 %c0 = icmp sgt i32 %s0, %s1
2039 %c1 = icmp ugt i32 %s2, %s3
2040 %a = and i1 %c0, %c1
2041 %z = zext i1 %a to i32
2045 define i32 @and_sgt_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2046 ; SDISEL-LABEL: and_sgt_uge:
2047 ; SDISEL: // %bb.0: // %entry
2048 ; SDISEL-NEXT: cmp w0, w1
2049 ; SDISEL-NEXT: ccmp w2, w3, #0, gt
2050 ; SDISEL-NEXT: cset w0, hs
2053 ; GISEL-LABEL: and_sgt_uge:
2054 ; GISEL: // %bb.0: // %entry
2055 ; GISEL-NEXT: cmp w0, w1
2056 ; GISEL-NEXT: cset w8, gt
2057 ; GISEL-NEXT: cmp w2, w3
2058 ; GISEL-NEXT: cset w9, hs
2059 ; GISEL-NEXT: and w0, w8, w9
2062 %c0 = icmp sgt i32 %s0, %s1
2063 %c1 = icmp uge i32 %s2, %s3
2064 %a = and i1 %c0, %c1
2065 %z = zext i1 %a to i32
2069 define i32 @and_sgt_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2070 ; SDISEL-LABEL: and_sgt_slt:
2071 ; SDISEL: // %bb.0: // %entry
2072 ; SDISEL-NEXT: cmp w0, w1
2073 ; SDISEL-NEXT: ccmp w2, w3, #0, gt
2074 ; SDISEL-NEXT: cset w0, lt
2077 ; GISEL-LABEL: and_sgt_slt:
2078 ; GISEL: // %bb.0: // %entry
2079 ; GISEL-NEXT: cmp w0, w1
2080 ; GISEL-NEXT: cset w8, gt
2081 ; GISEL-NEXT: cmp w2, w3
2082 ; GISEL-NEXT: cset w9, lt
2083 ; GISEL-NEXT: and w0, w8, w9
2086 %c0 = icmp sgt i32 %s0, %s1
2087 %c1 = icmp slt i32 %s2, %s3
2088 %a = and i1 %c0, %c1
2089 %z = zext i1 %a to i32
2093 define i32 @and_sgt_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2094 ; SDISEL-LABEL: and_sgt_sle:
2095 ; SDISEL: // %bb.0: // %entry
2096 ; SDISEL-NEXT: cmp w0, w1
2097 ; SDISEL-NEXT: ccmp w2, w3, #0, gt
2098 ; SDISEL-NEXT: cset w0, le
2101 ; GISEL-LABEL: and_sgt_sle:
2102 ; GISEL: // %bb.0: // %entry
2103 ; GISEL-NEXT: cmp w0, w1
2104 ; GISEL-NEXT: cset w8, gt
2105 ; GISEL-NEXT: cmp w2, w3
2106 ; GISEL-NEXT: cset w9, le
2107 ; GISEL-NEXT: and w0, w8, w9
2110 %c0 = icmp sgt i32 %s0, %s1
2111 %c1 = icmp sle i32 %s2, %s3
2112 %a = and i1 %c0, %c1
2113 %z = zext i1 %a to i32
2117 define i32 @and_sgt_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2118 ; SDISEL-LABEL: and_sgt_sgt:
2119 ; SDISEL: // %bb.0: // %entry
2120 ; SDISEL-NEXT: cmp w0, w1
2121 ; SDISEL-NEXT: ccmp w2, w3, #4, gt
2122 ; SDISEL-NEXT: cset w0, gt
2125 ; GISEL-LABEL: and_sgt_sgt:
2126 ; GISEL: // %bb.0: // %entry
2127 ; GISEL-NEXT: cmp w0, w1
2128 ; GISEL-NEXT: cset w8, gt
2129 ; GISEL-NEXT: cmp w2, w3
2130 ; GISEL-NEXT: cset w9, gt
2131 ; GISEL-NEXT: and w0, w8, w9
2134 %c0 = icmp sgt i32 %s0, %s1
2135 %c1 = icmp sgt i32 %s2, %s3
2136 %a = and i1 %c0, %c1
2137 %z = zext i1 %a to i32
2141 define i32 @and_sgt_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2142 ; SDISEL-LABEL: and_sgt_sge:
2143 ; SDISEL: // %bb.0: // %entry
2144 ; SDISEL-NEXT: cmp w0, w1
2145 ; SDISEL-NEXT: ccmp w2, w3, #8, gt
2146 ; SDISEL-NEXT: cset w0, ge
2149 ; GISEL-LABEL: and_sgt_sge:
2150 ; GISEL: // %bb.0: // %entry
2151 ; GISEL-NEXT: cmp w0, w1
2152 ; GISEL-NEXT: cset w8, gt
2153 ; GISEL-NEXT: cmp w2, w3
2154 ; GISEL-NEXT: cset w9, ge
2155 ; GISEL-NEXT: and w0, w8, w9
2158 %c0 = icmp sgt i32 %s0, %s1
2159 %c1 = icmp sge i32 %s2, %s3
2160 %a = and i1 %c0, %c1
2161 %z = zext i1 %a to i32
2165 define i32 @and_sge_eq(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2166 ; SDISEL-LABEL: and_sge_eq:
2167 ; SDISEL: // %bb.0: // %entry
2168 ; SDISEL-NEXT: cmp w0, w1
2169 ; SDISEL-NEXT: ccmp w2, w3, #0, ge
2170 ; SDISEL-NEXT: cset w0, eq
2173 ; GISEL-LABEL: and_sge_eq:
2174 ; GISEL: // %bb.0: // %entry
2175 ; GISEL-NEXT: cmp w0, w1
2176 ; GISEL-NEXT: cset w8, ge
2177 ; GISEL-NEXT: cmp w2, w3
2178 ; GISEL-NEXT: cset w9, eq
2179 ; GISEL-NEXT: and w0, w8, w9
2182 %c0 = icmp sge i32 %s0, %s1
2183 %c1 = icmp eq i32 %s2, %s3
2184 %a = and i1 %c0, %c1
2185 %z = zext i1 %a to i32
2189 define i32 @and_sge_ne(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2190 ; SDISEL-LABEL: and_sge_ne:
2191 ; SDISEL: // %bb.0: // %entry
2192 ; SDISEL-NEXT: cmp w0, w1
2193 ; SDISEL-NEXT: ccmp w2, w3, #4, ge
2194 ; SDISEL-NEXT: cset w0, ne
2197 ; GISEL-LABEL: and_sge_ne:
2198 ; GISEL: // %bb.0: // %entry
2199 ; GISEL-NEXT: cmp w0, w1
2200 ; GISEL-NEXT: cset w8, ge
2201 ; GISEL-NEXT: cmp w2, w3
2202 ; GISEL-NEXT: cset w9, ne
2203 ; GISEL-NEXT: and w0, w8, w9
2206 %c0 = icmp sge i32 %s0, %s1
2207 %c1 = icmp ne i32 %s2, %s3
2208 %a = and i1 %c0, %c1
2209 %z = zext i1 %a to i32
2213 define i32 @and_sge_ult(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2214 ; SDISEL-LABEL: and_sge_ult:
2215 ; SDISEL: // %bb.0: // %entry
2216 ; SDISEL-NEXT: cmp w0, w1
2217 ; SDISEL-NEXT: ccmp w2, w3, #2, ge
2218 ; SDISEL-NEXT: cset w0, lo
2221 ; GISEL-LABEL: and_sge_ult:
2222 ; GISEL: // %bb.0: // %entry
2223 ; GISEL-NEXT: cmp w0, w1
2224 ; GISEL-NEXT: cset w8, ge
2225 ; GISEL-NEXT: cmp w2, w3
2226 ; GISEL-NEXT: cset w9, lo
2227 ; GISEL-NEXT: and w0, w8, w9
2230 %c0 = icmp sge i32 %s0, %s1
2231 %c1 = icmp ult i32 %s2, %s3
2232 %a = and i1 %c0, %c1
2233 %z = zext i1 %a to i32
2237 define i32 @and_sge_ule(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2238 ; SDISEL-LABEL: and_sge_ule:
2239 ; SDISEL: // %bb.0: // %entry
2240 ; SDISEL-NEXT: cmp w0, w1
2241 ; SDISEL-NEXT: ccmp w2, w3, #2, ge
2242 ; SDISEL-NEXT: cset w0, ls
2245 ; GISEL-LABEL: and_sge_ule:
2246 ; GISEL: // %bb.0: // %entry
2247 ; GISEL-NEXT: cmp w0, w1
2248 ; GISEL-NEXT: cset w8, ge
2249 ; GISEL-NEXT: cmp w2, w3
2250 ; GISEL-NEXT: cset w9, ls
2251 ; GISEL-NEXT: and w0, w8, w9
2254 %c0 = icmp sge i32 %s0, %s1
2255 %c1 = icmp ule i32 %s2, %s3
2256 %a = and i1 %c0, %c1
2257 %z = zext i1 %a to i32
2261 define i32 @and_sge_ugt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2262 ; SDISEL-LABEL: and_sge_ugt:
2263 ; SDISEL: // %bb.0: // %entry
2264 ; SDISEL-NEXT: cmp w0, w1
2265 ; SDISEL-NEXT: ccmp w2, w3, #0, ge
2266 ; SDISEL-NEXT: cset w0, hi
2269 ; GISEL-LABEL: and_sge_ugt:
2270 ; GISEL: // %bb.0: // %entry
2271 ; GISEL-NEXT: cmp w0, w1
2272 ; GISEL-NEXT: cset w8, ge
2273 ; GISEL-NEXT: cmp w2, w3
2274 ; GISEL-NEXT: cset w9, hi
2275 ; GISEL-NEXT: and w0, w8, w9
2278 %c0 = icmp sge i32 %s0, %s1
2279 %c1 = icmp ugt i32 %s2, %s3
2280 %a = and i1 %c0, %c1
2281 %z = zext i1 %a to i32
2285 define i32 @and_sge_uge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2286 ; SDISEL-LABEL: and_sge_uge:
2287 ; SDISEL: // %bb.0: // %entry
2288 ; SDISEL-NEXT: cmp w0, w1
2289 ; SDISEL-NEXT: ccmp w2, w3, #0, ge
2290 ; SDISEL-NEXT: cset w0, hs
2293 ; GISEL-LABEL: and_sge_uge:
2294 ; GISEL: // %bb.0: // %entry
2295 ; GISEL-NEXT: cmp w0, w1
2296 ; GISEL-NEXT: cset w8, ge
2297 ; GISEL-NEXT: cmp w2, w3
2298 ; GISEL-NEXT: cset w9, hs
2299 ; GISEL-NEXT: and w0, w8, w9
2302 %c0 = icmp sge i32 %s0, %s1
2303 %c1 = icmp uge i32 %s2, %s3
2304 %a = and i1 %c0, %c1
2305 %z = zext i1 %a to i32
2309 define i32 @and_sge_slt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2310 ; SDISEL-LABEL: and_sge_slt:
2311 ; SDISEL: // %bb.0: // %entry
2312 ; SDISEL-NEXT: cmp w0, w1
2313 ; SDISEL-NEXT: ccmp w2, w3, #0, ge
2314 ; SDISEL-NEXT: cset w0, lt
2317 ; GISEL-LABEL: and_sge_slt:
2318 ; GISEL: // %bb.0: // %entry
2319 ; GISEL-NEXT: cmp w0, w1
2320 ; GISEL-NEXT: cset w8, ge
2321 ; GISEL-NEXT: cmp w2, w3
2322 ; GISEL-NEXT: cset w9, lt
2323 ; GISEL-NEXT: and w0, w8, w9
2326 %c0 = icmp sge i32 %s0, %s1
2327 %c1 = icmp slt i32 %s2, %s3
2328 %a = and i1 %c0, %c1
2329 %z = zext i1 %a to i32
2333 define i32 @and_sge_sle(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2334 ; SDISEL-LABEL: and_sge_sle:
2335 ; SDISEL: // %bb.0: // %entry
2336 ; SDISEL-NEXT: cmp w0, w1
2337 ; SDISEL-NEXT: ccmp w2, w3, #0, ge
2338 ; SDISEL-NEXT: cset w0, le
2341 ; GISEL-LABEL: and_sge_sle:
2342 ; GISEL: // %bb.0: // %entry
2343 ; GISEL-NEXT: cmp w0, w1
2344 ; GISEL-NEXT: cset w8, ge
2345 ; GISEL-NEXT: cmp w2, w3
2346 ; GISEL-NEXT: cset w9, le
2347 ; GISEL-NEXT: and w0, w8, w9
2350 %c0 = icmp sge i32 %s0, %s1
2351 %c1 = icmp sle i32 %s2, %s3
2352 %a = and i1 %c0, %c1
2353 %z = zext i1 %a to i32
2357 define i32 @and_sge_sgt(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2358 ; SDISEL-LABEL: and_sge_sgt:
2359 ; SDISEL: // %bb.0: // %entry
2360 ; SDISEL-NEXT: cmp w0, w1
2361 ; SDISEL-NEXT: ccmp w2, w3, #4, ge
2362 ; SDISEL-NEXT: cset w0, gt
2365 ; GISEL-LABEL: and_sge_sgt:
2366 ; GISEL: // %bb.0: // %entry
2367 ; GISEL-NEXT: cmp w0, w1
2368 ; GISEL-NEXT: cset w8, ge
2369 ; GISEL-NEXT: cmp w2, w3
2370 ; GISEL-NEXT: cset w9, gt
2371 ; GISEL-NEXT: and w0, w8, w9
2374 %c0 = icmp sge i32 %s0, %s1
2375 %c1 = icmp sgt i32 %s2, %s3
2376 %a = and i1 %c0, %c1
2377 %z = zext i1 %a to i32
2381 define i32 @and_sge_sge(i32 %s0, i32 %s1, i32 %s2, i32 %s3) {
2382 ; SDISEL-LABEL: and_sge_sge:
2383 ; SDISEL: // %bb.0: // %entry
2384 ; SDISEL-NEXT: cmp w0, w1
2385 ; SDISEL-NEXT: ccmp w2, w3, #8, ge
2386 ; SDISEL-NEXT: cset w0, ge
2389 ; GISEL-LABEL: and_sge_sge:
2390 ; GISEL: // %bb.0: // %entry
2391 ; GISEL-NEXT: cmp w0, w1
2392 ; GISEL-NEXT: cset w8, ge
2393 ; GISEL-NEXT: cmp w2, w3
2394 ; GISEL-NEXT: cset w9, ge
2395 ; GISEL-NEXT: and w0, w8, w9
2398 %c0 = icmp sge i32 %s0, %s1
2399 %c1 = icmp sge i32 %s2, %s3
2400 %a = and i1 %c0, %c1
2401 %z = zext i1 %a to i32
2405 define i32 @cmp_to_ands1(i32 %num) {
2406 ; SDISEL-LABEL: cmp_to_ands1:
2408 ; SDISEL-NEXT: and w8, w0, #0xff
2409 ; SDISEL-NEXT: tst w0, #0xfe
2410 ; SDISEL-NEXT: csel w0, w8, wzr, ne
2413 ; GISEL-LABEL: cmp_to_ands1:
2415 ; GISEL-NEXT: and w8, w0, #0xff
2416 ; GISEL-NEXT: cmp w8, #1
2417 ; GISEL-NEXT: csel w0, w8, wzr, hi
2419 %and = and i32 %num, 255
2420 %cmp = icmp ugt i32 %and, 1
2421 %r = select i1 %cmp, i32 %and, i32 0
2425 define i32 @cmp_to_ands2(i32 %num) {
2426 ; SDISEL-LABEL: cmp_to_ands2:
2428 ; SDISEL-NEXT: and w8, w0, #0xfe
2429 ; SDISEL-NEXT: tst w0, #0xc0
2430 ; SDISEL-NEXT: csel w0, w8, wzr, ne
2433 ; GISEL-LABEL: cmp_to_ands2:
2435 ; GISEL-NEXT: and w8, w0, #0xfe
2436 ; GISEL-NEXT: cmp w8, #63
2437 ; GISEL-NEXT: csel w0, w8, wzr, hi
2439 %and = and i32 %num, 254
2440 %cmp = icmp ugt i32 %and, 63
2441 %r = select i1 %cmp, i32 %and, i32 0
2445 define i32 @cmp_to_ands3(i32 %num, i32 %a) {
2446 ; SDISEL-LABEL: cmp_to_ands3:
2448 ; SDISEL-NEXT: tst w0, #0x10
2449 ; SDISEL-NEXT: csel w0, w1, wzr, ne
2452 ; GISEL-LABEL: cmp_to_ands3:
2454 ; GISEL-NEXT: mov w8, #23
2455 ; GISEL-NEXT: and w8, w0, w8
2456 ; GISEL-NEXT: cmp w8, #7
2457 ; GISEL-NEXT: csel w0, w1, wzr, hi
2459 %and = and i32 %num, 23
2460 %cmp = icmp ugt i32 %and, 7
2461 %r = select i1 %cmp, i32 %a, i32 0
2465 define i32 @cmp_to_ands4(i32 %num, i32 %a) {
2466 ; SDISEL-LABEL: cmp_to_ands4:
2468 ; SDISEL-NEXT: and w8, w0, #0x30
2469 ; SDISEL-NEXT: tst w0, #0x20
2470 ; SDISEL-NEXT: csel w0, w8, w1, eq
2473 ; GISEL-LABEL: cmp_to_ands4:
2475 ; GISEL-NEXT: and w8, w0, #0x30
2476 ; GISEL-NEXT: cmp w8, #31
2477 ; GISEL-NEXT: csel w0, w8, w1, ls
2479 %and = and i32 %num, 48
2480 %cmp = icmp ule i32 %and, 31
2481 %r = select i1 %cmp, i32 %and, i32 %a
2485 define i32 @cmp_to_ands5(i32 %num, i32 %a) {
2486 ; SDISEL-LABEL: cmp_to_ands5:
2488 ; SDISEL-NEXT: and w8, w0, #0xf8
2489 ; SDISEL-NEXT: tst w0, #0xc0
2490 ; SDISEL-NEXT: csel w0, w8, w1, eq
2493 ; GISEL-LABEL: cmp_to_ands5:
2495 ; GISEL-NEXT: and w8, w0, #0xf8
2496 ; GISEL-NEXT: cmp w8, #64
2497 ; GISEL-NEXT: csel w0, w8, w1, lo
2499 %and = and i32 %num, 248
2500 %cmp = icmp ult i32 %and, 64
2501 %r = select i1 %cmp, i32 %and, i32 %a
2505 define i32 @cmp_to_ands6(i32 %num) {
2506 ; SDISEL-LABEL: cmp_to_ands6:
2508 ; SDISEL-NEXT: and w8, w0, #0xfe
2509 ; SDISEL-NEXT: tst w0, #0xf0
2510 ; SDISEL-NEXT: csel w0, w8, wzr, ne
2513 ; GISEL-LABEL: cmp_to_ands6:
2515 ; GISEL-NEXT: and w8, w0, #0xfe
2516 ; GISEL-NEXT: cmp w8, #16
2517 ; GISEL-NEXT: csel w0, w8, wzr, hs
2519 %and = and i32 %num, 254
2520 %cmp = icmp uge i32 %and, 16
2521 %r = select i1 %cmp, i32 %and, i32 0
2525 define i1 @and_fcmp(float %0, float %1) {
2526 ; SDISEL-LABEL: and_fcmp:
2528 ; SDISEL-NEXT: fcmp s1, s1
2529 ; SDISEL-NEXT: fccmp s0, s0, #0, vs
2530 ; SDISEL-NEXT: cset w0, vs
2533 ; GISEL-LABEL: and_fcmp:
2535 ; GISEL-NEXT: fcmp s0, #0.0
2536 ; GISEL-NEXT: cset w8, vs
2537 ; GISEL-NEXT: fcmp s1, #0.0
2538 ; GISEL-NEXT: cset w9, vs
2539 ; GISEL-NEXT: and w0, w8, w9
2542 %3 = fcmp uno float %0, 0.000000e+00
2543 %4 = fcmp uno float %1, 0.000000e+00
2549 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: