1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
5 source_filename = "icmp-autogen-tests-with-ne.ll"
6 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
7 target triple = "aarch64"
9 define <2 x i1> @test_v2i64_eq(<2 x i64> %v1, <2 x i64> %v2) {
10 %cmp = icmp eq <2 x i64> %v1, %v2
14 define <4 x i1> @test_v4i32_eq(<4 x i32> %v1, <4 x i32> %v2) {
15 %cmp = icmp eq <4 x i32> %v1, %v2
19 define <2 x i1> @test_v2i32_eq(<2 x i32> %v1, <2 x i32> %v2) {
20 %cmp = icmp eq <2 x i32> %v1, %v2
24 define <2 x i1> @test_v2i16_eq(<2 x i16> %v1, <2 x i16> %v2) {
25 %cmp = icmp eq <2 x i16> %v1, %v2
29 define <8 x i1> @test_v8i16_eq(<8 x i16> %v1, <8 x i16> %v2) {
30 %cmp = icmp eq <8 x i16> %v1, %v2
34 define <4 x i1> @test_v4i16_eq(<4 x i16> %v1, <4 x i16> %v2) {
35 %cmp = icmp eq <4 x i16> %v1, %v2
39 define <16 x i1> @test_v16i8_eq(<16 x i8> %v1, <16 x i8> %v2) {
40 %cmp = icmp eq <16 x i8> %v1, %v2
44 define <8 x i1> @test_v8i8_eq(<8 x i8> %v1, <8 x i8> %v2) {
45 %cmp = icmp eq <8 x i8> %v1, %v2
49 define <2 x i1> @test_v2i64_ne(<2 x i64> %v1, <2 x i64> %v2) {
50 %cmp = icmp ne <2 x i64> %v1, %v2
54 define <4 x i1> @test_v4i32_ne(<4 x i32> %v1, <4 x i32> %v2) {
55 %cmp = icmp ne <4 x i32> %v1, %v2
59 define <2 x i1> @test_v2i32_ne(<2 x i32> %v1, <2 x i32> %v2) {
60 %cmp = icmp ne <2 x i32> %v1, %v2
64 define <2 x i1> @test_v2i16_ne(<2 x i16> %v1, <2 x i16> %v2) {
65 %cmp = icmp ne <2 x i16> %v1, %v2
69 define <8 x i1> @test_v8i16_ne(<8 x i16> %v1, <8 x i16> %v2) {
70 %cmp = icmp ne <8 x i16> %v1, %v2
74 define <4 x i1> @test_v4i16_ne(<4 x i16> %v1, <4 x i16> %v2) {
75 %cmp = icmp ne <4 x i16> %v1, %v2
79 define <16 x i1> @test_v16i8_ne(<16 x i8> %v1, <16 x i8> %v2) {
80 %cmp = icmp ne <16 x i8> %v1, %v2
84 define <8 x i1> @test_v8i8_ne(<8 x i8> %v1, <8 x i8> %v2) {
85 %cmp = icmp ne <8 x i8> %v1, %v2
89 define <2 x i1> @test_v2i64_ugt(<2 x i64> %v1, <2 x i64> %v2) {
90 %cmp = icmp ugt <2 x i64> %v1, %v2
94 define <4 x i1> @test_v4i32_ugt(<4 x i32> %v1, <4 x i32> %v2) {
95 %cmp = icmp ugt <4 x i32> %v1, %v2
99 define <2 x i1> @test_v2i32_ugt(<2 x i32> %v1, <2 x i32> %v2) {
100 %cmp = icmp ugt <2 x i32> %v1, %v2
104 define <2 x i1> @test_v2i16_ugt(<2 x i16> %v1, <2 x i16> %v2) {
105 %cmp = icmp ugt <2 x i16> %v1, %v2
109 define <8 x i1> @test_v8i16_ugt(<8 x i16> %v1, <8 x i16> %v2) {
110 %cmp = icmp ugt <8 x i16> %v1, %v2
114 define <4 x i1> @test_v4i16_ugt(<4 x i16> %v1, <4 x i16> %v2) {
115 %cmp = icmp ugt <4 x i16> %v1, %v2
119 define <16 x i1> @test_v16i8_ugt(<16 x i8> %v1, <16 x i8> %v2) {
120 %cmp = icmp ugt <16 x i8> %v1, %v2
124 define <8 x i1> @test_v8i8_ugt(<8 x i8> %v1, <8 x i8> %v2) {
125 %cmp = icmp ugt <8 x i8> %v1, %v2
129 define <2 x i1> @test_v2i64_uge(<2 x i64> %v1, <2 x i64> %v2) {
130 %cmp = icmp uge <2 x i64> %v1, %v2
134 define <4 x i1> @test_v4i32_uge(<4 x i32> %v1, <4 x i32> %v2) {
135 %cmp = icmp uge <4 x i32> %v1, %v2
139 define <2 x i1> @test_v2i32_uge(<2 x i32> %v1, <2 x i32> %v2) {
140 %cmp = icmp uge <2 x i32> %v1, %v2
144 define <2 x i1> @test_v2i16_uge(<2 x i16> %v1, <2 x i16> %v2) {
145 %cmp = icmp uge <2 x i16> %v1, %v2
149 define <8 x i1> @test_v8i16_uge(<8 x i16> %v1, <8 x i16> %v2) {
150 %cmp = icmp uge <8 x i16> %v1, %v2
154 define <4 x i1> @test_v4i16_uge(<4 x i16> %v1, <4 x i16> %v2) {
155 %cmp = icmp uge <4 x i16> %v1, %v2
159 define <16 x i1> @test_v16i8_uge(<16 x i8> %v1, <16 x i8> %v2) {
160 %cmp = icmp uge <16 x i8> %v1, %v2
164 define <8 x i1> @test_v8i8_uge(<8 x i8> %v1, <8 x i8> %v2) {
165 %cmp = icmp uge <8 x i8> %v1, %v2
169 define <2 x i1> @test_v2i64_ult(<2 x i64> %v1, <2 x i64> %v2) {
170 %cmp = icmp ult <2 x i64> %v1, %v2
174 define <4 x i1> @test_v4i32_ult(<4 x i32> %v1, <4 x i32> %v2) {
175 %cmp = icmp ult <4 x i32> %v1, %v2
179 define <2 x i1> @test_v2i32_ult(<2 x i32> %v1, <2 x i32> %v2) {
180 %cmp = icmp ult <2 x i32> %v1, %v2
184 define <2 x i1> @test_v2i16_ult(<2 x i16> %v1, <2 x i16> %v2) {
185 %cmp = icmp ult <2 x i16> %v1, %v2
189 define <8 x i1> @test_v8i16_ult(<8 x i16> %v1, <8 x i16> %v2) {
190 %cmp = icmp ult <8 x i16> %v1, %v2
194 define <4 x i1> @test_v4i16_ult(<4 x i16> %v1, <4 x i16> %v2) {
195 %cmp = icmp ult <4 x i16> %v1, %v2
199 define <16 x i1> @test_v16i8_ult(<16 x i8> %v1, <16 x i8> %v2) {
200 %cmp = icmp ult <16 x i8> %v1, %v2
204 define <8 x i1> @test_v8i8_ult(<8 x i8> %v1, <8 x i8> %v2) {
205 %cmp = icmp ult <8 x i8> %v1, %v2
209 define <2 x i1> @test_v2i64_ule(<2 x i64> %v1, <2 x i64> %v2) {
210 %cmp = icmp ule <2 x i64> %v1, %v2
214 define <4 x i1> @test_v4i32_ule(<4 x i32> %v1, <4 x i32> %v2) {
215 %cmp = icmp ule <4 x i32> %v1, %v2
219 define <2 x i1> @test_v2i32_ule(<2 x i32> %v1, <2 x i32> %v2) {
220 %cmp = icmp ule <2 x i32> %v1, %v2
224 define <2 x i1> @test_v2i16_ule(<2 x i16> %v1, <2 x i16> %v2) {
225 %cmp = icmp ule <2 x i16> %v1, %v2
229 define <8 x i1> @test_v8i16_ule(<8 x i16> %v1, <8 x i16> %v2) {
230 %cmp = icmp ule <8 x i16> %v1, %v2
234 define <4 x i1> @test_v4i16_ule(<4 x i16> %v1, <4 x i16> %v2) {
235 %cmp = icmp ule <4 x i16> %v1, %v2
239 define <16 x i1> @test_v16i8_ule(<16 x i8> %v1, <16 x i8> %v2) {
240 %cmp = icmp ule <16 x i8> %v1, %v2
244 define <8 x i1> @test_v8i8_ule(<8 x i8> %v1, <8 x i8> %v2) {
245 %cmp = icmp ule <8 x i8> %v1, %v2
249 define <2 x i1> @test_v2i64_sgt(<2 x i64> %v1, <2 x i64> %v2) {
250 %cmp = icmp sgt <2 x i64> %v1, %v2
254 define <4 x i1> @test_v4i32_sgt(<4 x i32> %v1, <4 x i32> %v2) {
255 %cmp = icmp sgt <4 x i32> %v1, %v2
259 define <2 x i1> @test_v2i32_sgt(<2 x i32> %v1, <2 x i32> %v2) {
260 %cmp = icmp sgt <2 x i32> %v1, %v2
264 define <2 x i1> @test_v2i16_sgt(<2 x i16> %v1, <2 x i16> %v2) {
265 %cmp = icmp sgt <2 x i16> %v1, %v2
269 define <8 x i1> @test_v8i16_sgt(<8 x i16> %v1, <8 x i16> %v2) {
270 %cmp = icmp sgt <8 x i16> %v1, %v2
274 define <4 x i1> @test_v4i16_sgt(<4 x i16> %v1, <4 x i16> %v2) {
275 %cmp = icmp sgt <4 x i16> %v1, %v2
279 define <16 x i1> @test_v16i8_sgt(<16 x i8> %v1, <16 x i8> %v2) {
280 %cmp = icmp sgt <16 x i8> %v1, %v2
284 define <8 x i1> @test_v8i8_sgt(<8 x i8> %v1, <8 x i8> %v2) {
285 %cmp = icmp sgt <8 x i8> %v1, %v2
289 define <2 x i1> @test_v2i64_sge(<2 x i64> %v1, <2 x i64> %v2) {
290 %cmp = icmp sge <2 x i64> %v1, %v2
294 define <4 x i1> @test_v4i32_sge(<4 x i32> %v1, <4 x i32> %v2) {
295 %cmp = icmp sge <4 x i32> %v1, %v2
299 define <2 x i1> @test_v2i32_sge(<2 x i32> %v1, <2 x i32> %v2) {
300 %cmp = icmp sge <2 x i32> %v1, %v2
304 define <2 x i1> @test_v2i16_sge(<2 x i16> %v1, <2 x i16> %v2) {
305 %cmp = icmp sge <2 x i16> %v1, %v2
309 define <8 x i1> @test_v8i16_sge(<8 x i16> %v1, <8 x i16> %v2) {
310 %cmp = icmp sge <8 x i16> %v1, %v2
314 define <4 x i1> @test_v4i16_sge(<4 x i16> %v1, <4 x i16> %v2) {
315 %cmp = icmp sge <4 x i16> %v1, %v2
319 define <16 x i1> @test_v16i8_sge(<16 x i8> %v1, <16 x i8> %v2) {
320 %cmp = icmp sge <16 x i8> %v1, %v2
324 define <8 x i1> @test_v8i8_sge(<8 x i8> %v1, <8 x i8> %v2) {
325 %cmp = icmp sge <8 x i8> %v1, %v2
329 define <2 x i1> @test_v2i64_slt(<2 x i64> %v1, <2 x i64> %v2) {
330 %cmp = icmp slt <2 x i64> %v1, %v2
334 define <4 x i1> @test_v4i32_slt(<4 x i32> %v1, <4 x i32> %v2) {
335 %cmp = icmp slt <4 x i32> %v1, %v2
339 define <2 x i1> @test_v2i32_slt(<2 x i32> %v1, <2 x i32> %v2) {
340 %cmp = icmp slt <2 x i32> %v1, %v2
344 define <2 x i1> @test_v2i16_slt(<2 x i16> %v1, <2 x i16> %v2) {
345 %cmp = icmp slt <2 x i16> %v1, %v2
349 define <8 x i1> @test_v8i16_slt(<8 x i16> %v1, <8 x i16> %v2) {
350 %cmp = icmp slt <8 x i16> %v1, %v2
354 define <4 x i1> @test_v4i16_slt(<4 x i16> %v1, <4 x i16> %v2) {
355 %cmp = icmp slt <4 x i16> %v1, %v2
359 define <16 x i1> @test_v16i8_slt(<16 x i8> %v1, <16 x i8> %v2) {
360 %cmp = icmp slt <16 x i8> %v1, %v2
364 define <8 x i1> @test_v8i8_slt(<8 x i8> %v1, <8 x i8> %v2) {
365 %cmp = icmp slt <8 x i8> %v1, %v2
369 define <2 x i1> @test_v2i64_sle(<2 x i64> %v1, <2 x i64> %v2) {
370 %cmp = icmp sle <2 x i64> %v1, %v2
374 define <4 x i1> @test_v4i32_sle(<4 x i32> %v1, <4 x i32> %v2) {
375 %cmp = icmp sle <4 x i32> %v1, %v2
379 define <2 x i1> @test_v2i32_sle(<2 x i32> %v1, <2 x i32> %v2) {
380 %cmp = icmp sle <2 x i32> %v1, %v2
384 define <2 x i1> @test_v2i16_sle(<2 x i16> %v1, <2 x i16> %v2) {
385 %cmp = icmp sle <2 x i16> %v1, %v2
389 define <8 x i1> @test_v8i16_sle(<8 x i16> %v1, <8 x i16> %v2) {
390 %cmp = icmp sle <8 x i16> %v1, %v2
394 define <4 x i1> @test_v4i16_sle(<4 x i16> %v1, <4 x i16> %v2) {
395 %cmp = icmp sle <4 x i16> %v1, %v2
399 define <16 x i1> @test_v16i8_sle(<16 x i8> %v1, <16 x i8> %v2) {
400 %cmp = icmp sle <16 x i8> %v1, %v2
404 define <8 x i1> @test_v8i8_sle(<8 x i8> %v1, <8 x i8> %v2) {
405 %cmp = icmp sle <8 x i8> %v1, %v2
414 regBankSelected: true
415 tracksRegLiveness: true
417 - { id: 0, class: fpr }
418 - { id: 1, class: fpr }
419 - { id: 2, class: _ }
420 - { id: 3, class: fpr }
421 - { id: 4, class: fpr }
422 machineFunctionInfo: {}
427 ; CHECK-LABEL: name: test_v2i64_eq
428 ; CHECK: liveins: $q0, $q1
430 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
431 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
432 ; CHECK-NEXT: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
433 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMEQv2i64_]]
434 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
435 ; CHECK-NEXT: RET_ReallyLR implicit $d0
436 %0:fpr(<2 x s64>) = COPY $q0
437 %1:fpr(<2 x s64>) = COPY $q1
438 %4:fpr(<2 x s64>) = G_ICMP intpred(eq), %0(<2 x s64>), %1
439 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
440 $d0 = COPY %3(<2 x s32>)
441 RET_ReallyLR implicit $d0
448 regBankSelected: true
449 tracksRegLiveness: true
451 - { id: 0, class: fpr }
452 - { id: 1, class: fpr }
453 - { id: 2, class: _ }
454 - { id: 3, class: fpr }
455 - { id: 4, class: fpr }
456 machineFunctionInfo: {}
461 ; CHECK-LABEL: name: test_v4i32_eq
462 ; CHECK: liveins: $q0, $q1
464 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
465 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
466 ; CHECK-NEXT: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
467 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMEQv4i32_]]
468 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
469 ; CHECK-NEXT: RET_ReallyLR implicit $d0
470 %0:fpr(<4 x s32>) = COPY $q0
471 %1:fpr(<4 x s32>) = COPY $q1
472 %4:fpr(<4 x s32>) = G_ICMP intpred(eq), %0(<4 x s32>), %1
473 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
474 $d0 = COPY %3(<4 x s16>)
475 RET_ReallyLR implicit $d0
482 regBankSelected: true
483 tracksRegLiveness: true
485 - { id: 0, class: fpr }
486 - { id: 1, class: fpr }
487 - { id: 2, class: _ }
488 - { id: 3, class: fpr }
489 - { id: 4, class: fpr }
490 machineFunctionInfo: {}
495 ; CHECK-LABEL: name: test_v2i32_eq
496 ; CHECK: liveins: $d0, $d1
498 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
499 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
500 ; CHECK-NEXT: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
501 ; CHECK-NEXT: $d0 = COPY [[CMEQv2i32_]]
502 ; CHECK-NEXT: RET_ReallyLR implicit $d0
503 %0:fpr(<2 x s32>) = COPY $d0
504 %1:fpr(<2 x s32>) = COPY $d1
505 %4:fpr(<2 x s32>) = G_ICMP intpred(eq), %0(<2 x s32>), %1
506 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
507 $d0 = COPY %3(<2 x s32>)
508 RET_ReallyLR implicit $d0
515 regBankSelected: true
516 tracksRegLiveness: true
518 - { id: 0, class: _ }
519 - { id: 1, class: _ }
520 - { id: 2, class: fpr }
521 - { id: 3, class: fpr }
522 - { id: 4, class: _ }
523 - { id: 5, class: fpr }
524 - { id: 6, class: _ }
525 - { id: 7, class: fpr }
526 - { id: 8, class: fpr }
527 - { id: 9, class: fpr }
528 - { id: 10, class: gpr }
529 - { id: 11, class: fpr }
530 - { id: 12, class: fpr }
531 - { id: 13, class: gpr }
532 - { id: 14, class: fpr }
533 - { id: 15, class: fpr }
534 machineFunctionInfo: {}
539 ; CHECK-LABEL: name: test_v2i16_eq
540 ; CHECK: liveins: $d0, $d1
542 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
543 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
544 ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51
545 ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]]
546 ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51
547 ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]]
548 ; CHECK-NEXT: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
549 ; CHECK-NEXT: $d0 = COPY [[CMEQv2i32_]]
550 ; CHECK-NEXT: RET_ReallyLR implicit $d0
551 %2:fpr(<2 x s32>) = COPY $d0
552 %3:fpr(<2 x s32>) = COPY $d1
553 %13:gpr(s32) = G_CONSTANT i32 65535
554 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
555 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
556 %7:fpr(<2 x s32>) = G_AND %15, %14
557 %10:gpr(s32) = G_CONSTANT i32 65535
558 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
559 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
560 %8:fpr(<2 x s32>) = G_AND %12, %11
561 %9:fpr(<2 x s32>) = G_ICMP intpred(eq), %7(<2 x s32>), %8
562 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
563 $d0 = COPY %5(<2 x s32>)
564 RET_ReallyLR implicit $d0
571 regBankSelected: true
572 tracksRegLiveness: true
574 - { id: 0, class: fpr }
575 - { id: 1, class: fpr }
576 - { id: 2, class: _ }
577 - { id: 3, class: fpr }
578 - { id: 4, class: fpr }
579 machineFunctionInfo: {}
584 ; CHECK-LABEL: name: test_v8i16_eq
585 ; CHECK: liveins: $q0, $q1
587 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
588 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
589 ; CHECK-NEXT: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
590 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMEQv8i16_]]
591 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
592 ; CHECK-NEXT: RET_ReallyLR implicit $d0
593 %0:fpr(<8 x s16>) = COPY $q0
594 %1:fpr(<8 x s16>) = COPY $q1
595 %4:fpr(<8 x s16>) = G_ICMP intpred(eq), %0(<8 x s16>), %1
596 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
597 $d0 = COPY %3(<8 x s8>)
598 RET_ReallyLR implicit $d0
605 regBankSelected: true
606 tracksRegLiveness: true
608 - { id: 0, class: fpr }
609 - { id: 1, class: fpr }
610 - { id: 2, class: _ }
611 - { id: 3, class: fpr }
612 - { id: 4, class: fpr }
613 machineFunctionInfo: {}
618 ; CHECK-LABEL: name: test_v4i16_eq
619 ; CHECK: liveins: $d0, $d1
621 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
622 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
623 ; CHECK-NEXT: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
624 ; CHECK-NEXT: $d0 = COPY [[CMEQv4i16_]]
625 ; CHECK-NEXT: RET_ReallyLR implicit $d0
626 %0:fpr(<4 x s16>) = COPY $d0
627 %1:fpr(<4 x s16>) = COPY $d1
628 %4:fpr(<4 x s16>) = G_ICMP intpred(eq), %0(<4 x s16>), %1
629 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
630 $d0 = COPY %3(<4 x s16>)
631 RET_ReallyLR implicit $d0
638 regBankSelected: true
639 tracksRegLiveness: true
641 - { id: 0, class: fpr }
642 - { id: 1, class: fpr }
643 - { id: 2, class: _ }
644 - { id: 3, class: fpr }
645 - { id: 4, class: fpr }
646 machineFunctionInfo: {}
651 ; CHECK-LABEL: name: test_v16i8_eq
652 ; CHECK: liveins: $q0, $q1
654 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
655 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
656 ; CHECK-NEXT: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
657 ; CHECK-NEXT: $q0 = COPY [[CMEQv16i8_]]
658 ; CHECK-NEXT: RET_ReallyLR implicit $q0
659 %0:fpr(<16 x s8>) = COPY $q0
660 %1:fpr(<16 x s8>) = COPY $q1
661 %4:fpr(<16 x s8>) = G_ICMP intpred(eq), %0(<16 x s8>), %1
662 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
663 $q0 = COPY %3(<16 x s8>)
664 RET_ReallyLR implicit $q0
671 regBankSelected: true
672 tracksRegLiveness: true
674 - { id: 0, class: fpr }
675 - { id: 1, class: fpr }
676 - { id: 2, class: _ }
677 - { id: 3, class: fpr }
678 - { id: 4, class: fpr }
679 machineFunctionInfo: {}
684 ; CHECK-LABEL: name: test_v8i8_eq
685 ; CHECK: liveins: $d0, $d1
687 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
688 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
689 ; CHECK-NEXT: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
690 ; CHECK-NEXT: $d0 = COPY [[CMEQv8i8_]]
691 ; CHECK-NEXT: RET_ReallyLR implicit $d0
692 %0:fpr(<8 x s8>) = COPY $d0
693 %1:fpr(<8 x s8>) = COPY $d1
694 %4:fpr(<8 x s8>) = G_ICMP intpred(eq), %0(<8 x s8>), %1
695 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
696 $d0 = COPY %3(<8 x s8>)
697 RET_ReallyLR implicit $d0
704 regBankSelected: true
705 tracksRegLiveness: true
707 - { id: 0, class: fpr }
708 - { id: 1, class: fpr }
709 - { id: 2, class: _ }
710 - { id: 3, class: fpr }
711 - { id: 4, class: fpr }
712 machineFunctionInfo: {}
717 ; CHECK-LABEL: name: test_v2i64_ne
718 ; CHECK: liveins: $q0, $q1
720 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
721 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
722 ; CHECK-NEXT: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
723 ; CHECK-NEXT: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv2i64_]]
724 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[NOTv16i8_]]
725 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
726 ; CHECK-NEXT: RET_ReallyLR implicit $d0
727 %0:fpr(<2 x s64>) = COPY $q0
728 %1:fpr(<2 x s64>) = COPY $q1
729 %4:fpr(<2 x s64>) = G_ICMP intpred(ne), %0(<2 x s64>), %1
730 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
731 $d0 = COPY %3(<2 x s32>)
732 RET_ReallyLR implicit $d0
739 regBankSelected: true
740 tracksRegLiveness: true
742 - { id: 0, class: fpr }
743 - { id: 1, class: fpr }
744 - { id: 2, class: _ }
745 - { id: 3, class: fpr }
746 - { id: 4, class: fpr }
747 machineFunctionInfo: {}
752 ; CHECK-LABEL: name: test_v4i32_ne
753 ; CHECK: liveins: $q0, $q1
755 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
756 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
757 ; CHECK-NEXT: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
758 ; CHECK-NEXT: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv4i32_]]
759 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[NOTv16i8_]]
760 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
761 ; CHECK-NEXT: RET_ReallyLR implicit $d0
762 %0:fpr(<4 x s32>) = COPY $q0
763 %1:fpr(<4 x s32>) = COPY $q1
764 %4:fpr(<4 x s32>) = G_ICMP intpred(ne), %0(<4 x s32>), %1
765 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
766 $d0 = COPY %3(<4 x s16>)
767 RET_ReallyLR implicit $d0
774 regBankSelected: true
775 tracksRegLiveness: true
777 - { id: 0, class: fpr }
778 - { id: 1, class: fpr }
779 - { id: 2, class: _ }
780 - { id: 3, class: fpr }
781 - { id: 4, class: fpr }
782 machineFunctionInfo: {}
787 ; CHECK-LABEL: name: test_v2i32_ne
788 ; CHECK: liveins: $d0, $d1
790 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
791 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
792 ; CHECK-NEXT: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
793 ; CHECK-NEXT: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
794 ; CHECK-NEXT: $d0 = COPY [[NOTv8i8_]]
795 ; CHECK-NEXT: RET_ReallyLR implicit $d0
796 %0:fpr(<2 x s32>) = COPY $d0
797 %1:fpr(<2 x s32>) = COPY $d1
798 %4:fpr(<2 x s32>) = G_ICMP intpred(ne), %0(<2 x s32>), %1
799 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
800 $d0 = COPY %3(<2 x s32>)
801 RET_ReallyLR implicit $d0
808 regBankSelected: true
809 tracksRegLiveness: true
811 - { id: 0, class: _ }
812 - { id: 1, class: _ }
813 - { id: 2, class: fpr }
814 - { id: 3, class: fpr }
815 - { id: 4, class: _ }
816 - { id: 5, class: fpr }
817 - { id: 6, class: _ }
818 - { id: 7, class: fpr }
819 - { id: 8, class: fpr }
820 - { id: 9, class: fpr }
821 - { id: 10, class: gpr }
822 - { id: 11, class: fpr }
823 - { id: 12, class: fpr }
824 - { id: 13, class: gpr }
825 - { id: 14, class: fpr }
826 - { id: 15, class: fpr }
827 machineFunctionInfo: {}
832 ; CHECK-LABEL: name: test_v2i16_ne
833 ; CHECK: liveins: $d0, $d1
835 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
836 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
837 ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51
838 ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]]
839 ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51
840 ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]]
841 ; CHECK-NEXT: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
842 ; CHECK-NEXT: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
843 ; CHECK-NEXT: $d0 = COPY [[NOTv8i8_]]
844 ; CHECK-NEXT: RET_ReallyLR implicit $d0
845 %2:fpr(<2 x s32>) = COPY $d0
846 %3:fpr(<2 x s32>) = COPY $d1
847 %13:gpr(s32) = G_CONSTANT i32 65535
848 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
849 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
850 %7:fpr(<2 x s32>) = G_AND %15, %14
851 %10:gpr(s32) = G_CONSTANT i32 65535
852 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
853 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
854 %8:fpr(<2 x s32>) = G_AND %12, %11
855 %9:fpr(<2 x s32>) = G_ICMP intpred(ne), %7(<2 x s32>), %8
856 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
857 $d0 = COPY %5(<2 x s32>)
858 RET_ReallyLR implicit $d0
865 regBankSelected: true
866 tracksRegLiveness: true
868 - { id: 0, class: fpr }
869 - { id: 1, class: fpr }
870 - { id: 2, class: _ }
871 - { id: 3, class: fpr }
872 - { id: 4, class: fpr }
873 machineFunctionInfo: {}
878 ; CHECK-LABEL: name: test_v8i16_ne
879 ; CHECK: liveins: $q0, $q1
881 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
882 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
883 ; CHECK-NEXT: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
884 ; CHECK-NEXT: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv8i16_]]
885 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[NOTv16i8_]]
886 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
887 ; CHECK-NEXT: RET_ReallyLR implicit $d0
888 %0:fpr(<8 x s16>) = COPY $q0
889 %1:fpr(<8 x s16>) = COPY $q1
890 %4:fpr(<8 x s16>) = G_ICMP intpred(ne), %0(<8 x s16>), %1
891 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
892 $d0 = COPY %3(<8 x s8>)
893 RET_ReallyLR implicit $d0
900 regBankSelected: true
901 tracksRegLiveness: true
903 - { id: 0, class: fpr }
904 - { id: 1, class: fpr }
905 - { id: 2, class: _ }
906 - { id: 3, class: fpr }
907 - { id: 4, class: fpr }
908 machineFunctionInfo: {}
913 ; CHECK-LABEL: name: test_v4i16_ne
914 ; CHECK: liveins: $d0, $d1
916 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
917 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
918 ; CHECK-NEXT: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
919 ; CHECK-NEXT: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv4i16_]]
920 ; CHECK-NEXT: $d0 = COPY [[NOTv8i8_]]
921 ; CHECK-NEXT: RET_ReallyLR implicit $d0
922 %0:fpr(<4 x s16>) = COPY $d0
923 %1:fpr(<4 x s16>) = COPY $d1
924 %4:fpr(<4 x s16>) = G_ICMP intpred(ne), %0(<4 x s16>), %1
925 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
926 $d0 = COPY %3(<4 x s16>)
927 RET_ReallyLR implicit $d0
934 regBankSelected: true
935 tracksRegLiveness: true
937 - { id: 0, class: fpr }
938 - { id: 1, class: fpr }
939 - { id: 2, class: _ }
940 - { id: 3, class: fpr }
941 - { id: 4, class: fpr }
942 machineFunctionInfo: {}
947 ; CHECK-LABEL: name: test_v16i8_ne
948 ; CHECK: liveins: $q0, $q1
950 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
951 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
952 ; CHECK-NEXT: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
953 ; CHECK-NEXT: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv16i8_]]
954 ; CHECK-NEXT: $q0 = COPY [[NOTv16i8_]]
955 ; CHECK-NEXT: RET_ReallyLR implicit $q0
956 %0:fpr(<16 x s8>) = COPY $q0
957 %1:fpr(<16 x s8>) = COPY $q1
958 %4:fpr(<16 x s8>) = G_ICMP intpred(ne), %0(<16 x s8>), %1
959 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
960 $q0 = COPY %3(<16 x s8>)
961 RET_ReallyLR implicit $q0
968 regBankSelected: true
969 tracksRegLiveness: true
971 - { id: 0, class: fpr }
972 - { id: 1, class: fpr }
973 - { id: 2, class: _ }
974 - { id: 3, class: fpr }
975 - { id: 4, class: fpr }
976 machineFunctionInfo: {}
981 ; CHECK-LABEL: name: test_v8i8_ne
982 ; CHECK: liveins: $d0, $d1
984 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
985 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
986 ; CHECK-NEXT: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
987 ; CHECK-NEXT: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv8i8_]]
988 ; CHECK-NEXT: $d0 = COPY [[NOTv8i8_]]
989 ; CHECK-NEXT: RET_ReallyLR implicit $d0
990 %0:fpr(<8 x s8>) = COPY $d0
991 %1:fpr(<8 x s8>) = COPY $d1
992 %4:fpr(<8 x s8>) = G_ICMP intpred(ne), %0(<8 x s8>), %1
993 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
994 $d0 = COPY %3(<8 x s8>)
995 RET_ReallyLR implicit $d0
1002 regBankSelected: true
1003 tracksRegLiveness: true
1005 - { id: 0, class: fpr }
1006 - { id: 1, class: fpr }
1007 - { id: 2, class: _ }
1008 - { id: 3, class: fpr }
1009 - { id: 4, class: fpr }
1010 machineFunctionInfo: {}
1015 ; CHECK-LABEL: name: test_v2i64_ugt
1016 ; CHECK: liveins: $q0, $q1
1017 ; CHECK-NEXT: {{ $}}
1018 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1019 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1020 ; CHECK-NEXT: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY]], [[COPY1]]
1021 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1022 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
1023 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1024 %0:fpr(<2 x s64>) = COPY $q0
1025 %1:fpr(<2 x s64>) = COPY $q1
1026 %4:fpr(<2 x s64>) = G_ICMP intpred(ugt), %0(<2 x s64>), %1
1027 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1028 $d0 = COPY %3(<2 x s32>)
1029 RET_ReallyLR implicit $d0
1033 name: test_v4i32_ugt
1036 regBankSelected: true
1037 tracksRegLiveness: true
1039 - { id: 0, class: fpr }
1040 - { id: 1, class: fpr }
1041 - { id: 2, class: _ }
1042 - { id: 3, class: fpr }
1043 - { id: 4, class: fpr }
1044 machineFunctionInfo: {}
1049 ; CHECK-LABEL: name: test_v4i32_ugt
1050 ; CHECK: liveins: $q0, $q1
1051 ; CHECK-NEXT: {{ $}}
1052 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1053 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1054 ; CHECK-NEXT: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY]], [[COPY1]]
1055 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1056 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
1057 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1058 %0:fpr(<4 x s32>) = COPY $q0
1059 %1:fpr(<4 x s32>) = COPY $q1
1060 %4:fpr(<4 x s32>) = G_ICMP intpred(ugt), %0(<4 x s32>), %1
1061 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1062 $d0 = COPY %3(<4 x s16>)
1063 RET_ReallyLR implicit $d0
1067 name: test_v2i32_ugt
1070 regBankSelected: true
1071 tracksRegLiveness: true
1073 - { id: 0, class: fpr }
1074 - { id: 1, class: fpr }
1075 - { id: 2, class: _ }
1076 - { id: 3, class: fpr }
1077 - { id: 4, class: fpr }
1078 machineFunctionInfo: {}
1083 ; CHECK-LABEL: name: test_v2i32_ugt
1084 ; CHECK: liveins: $d0, $d1
1085 ; CHECK-NEXT: {{ $}}
1086 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1087 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1088 ; CHECK-NEXT: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY]], [[COPY1]]
1089 ; CHECK-NEXT: $d0 = COPY [[CMHIv2i32_]]
1090 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1091 %0:fpr(<2 x s32>) = COPY $d0
1092 %1:fpr(<2 x s32>) = COPY $d1
1093 %4:fpr(<2 x s32>) = G_ICMP intpred(ugt), %0(<2 x s32>), %1
1094 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1095 $d0 = COPY %3(<2 x s32>)
1096 RET_ReallyLR implicit $d0
1100 name: test_v2i16_ugt
1103 regBankSelected: true
1104 tracksRegLiveness: true
1106 - { id: 0, class: _ }
1107 - { id: 1, class: _ }
1108 - { id: 2, class: fpr }
1109 - { id: 3, class: fpr }
1110 - { id: 4, class: _ }
1111 - { id: 5, class: fpr }
1112 - { id: 6, class: _ }
1113 - { id: 7, class: fpr }
1114 - { id: 8, class: fpr }
1115 - { id: 9, class: fpr }
1116 - { id: 10, class: gpr }
1117 - { id: 11, class: fpr }
1118 - { id: 12, class: fpr }
1119 - { id: 13, class: gpr }
1120 - { id: 14, class: fpr }
1121 - { id: 15, class: fpr }
1122 machineFunctionInfo: {}
1127 ; CHECK-LABEL: name: test_v2i16_ugt
1128 ; CHECK: liveins: $d0, $d1
1129 ; CHECK-NEXT: {{ $}}
1130 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1131 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1132 ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51
1133 ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]]
1134 ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51
1135 ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]]
1136 ; CHECK-NEXT: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1137 ; CHECK-NEXT: $d0 = COPY [[CMHIv2i32_]]
1138 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1139 %2:fpr(<2 x s32>) = COPY $d0
1140 %3:fpr(<2 x s32>) = COPY $d1
1141 %13:gpr(s32) = G_CONSTANT i32 65535
1142 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1143 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1144 %7:fpr(<2 x s32>) = G_AND %15, %14
1145 %10:gpr(s32) = G_CONSTANT i32 65535
1146 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1147 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1148 %8:fpr(<2 x s32>) = G_AND %12, %11
1149 %9:fpr(<2 x s32>) = G_ICMP intpred(ugt), %7(<2 x s32>), %8
1150 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1151 $d0 = COPY %5(<2 x s32>)
1152 RET_ReallyLR implicit $d0
1156 name: test_v8i16_ugt
1159 regBankSelected: true
1160 tracksRegLiveness: true
1162 - { id: 0, class: fpr }
1163 - { id: 1, class: fpr }
1164 - { id: 2, class: _ }
1165 - { id: 3, class: fpr }
1166 - { id: 4, class: fpr }
1167 machineFunctionInfo: {}
1172 ; CHECK-LABEL: name: test_v8i16_ugt
1173 ; CHECK: liveins: $q0, $q1
1174 ; CHECK-NEXT: {{ $}}
1175 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1176 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1177 ; CHECK-NEXT: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY]], [[COPY1]]
1178 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1179 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
1180 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1181 %0:fpr(<8 x s16>) = COPY $q0
1182 %1:fpr(<8 x s16>) = COPY $q1
1183 %4:fpr(<8 x s16>) = G_ICMP intpred(ugt), %0(<8 x s16>), %1
1184 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1185 $d0 = COPY %3(<8 x s8>)
1186 RET_ReallyLR implicit $d0
1190 name: test_v4i16_ugt
1193 regBankSelected: true
1194 tracksRegLiveness: true
1196 - { id: 0, class: fpr }
1197 - { id: 1, class: fpr }
1198 - { id: 2, class: _ }
1199 - { id: 3, class: fpr }
1200 - { id: 4, class: fpr }
1201 machineFunctionInfo: {}
1206 ; CHECK-LABEL: name: test_v4i16_ugt
1207 ; CHECK: liveins: $d0, $d1
1208 ; CHECK-NEXT: {{ $}}
1209 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1210 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1211 ; CHECK-NEXT: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY]], [[COPY1]]
1212 ; CHECK-NEXT: $d0 = COPY [[CMHIv4i16_]]
1213 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1214 %0:fpr(<4 x s16>) = COPY $d0
1215 %1:fpr(<4 x s16>) = COPY $d1
1216 %4:fpr(<4 x s16>) = G_ICMP intpred(ugt), %0(<4 x s16>), %1
1217 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1218 $d0 = COPY %3(<4 x s16>)
1219 RET_ReallyLR implicit $d0
1223 name: test_v16i8_ugt
1226 regBankSelected: true
1227 tracksRegLiveness: true
1229 - { id: 0, class: fpr }
1230 - { id: 1, class: fpr }
1231 - { id: 2, class: _ }
1232 - { id: 3, class: fpr }
1233 - { id: 4, class: fpr }
1234 machineFunctionInfo: {}
1239 ; CHECK-LABEL: name: test_v16i8_ugt
1240 ; CHECK: liveins: $q0, $q1
1241 ; CHECK-NEXT: {{ $}}
1242 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1243 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1244 ; CHECK-NEXT: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY]], [[COPY1]]
1245 ; CHECK-NEXT: $q0 = COPY [[CMHIv16i8_]]
1246 ; CHECK-NEXT: RET_ReallyLR implicit $q0
1247 %0:fpr(<16 x s8>) = COPY $q0
1248 %1:fpr(<16 x s8>) = COPY $q1
1249 %4:fpr(<16 x s8>) = G_ICMP intpred(ugt), %0(<16 x s8>), %1
1250 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1251 $q0 = COPY %3(<16 x s8>)
1252 RET_ReallyLR implicit $q0
1259 regBankSelected: true
1260 tracksRegLiveness: true
1262 - { id: 0, class: fpr }
1263 - { id: 1, class: fpr }
1264 - { id: 2, class: _ }
1265 - { id: 3, class: fpr }
1266 - { id: 4, class: fpr }
1267 machineFunctionInfo: {}
1272 ; CHECK-LABEL: name: test_v8i8_ugt
1273 ; CHECK: liveins: $d0, $d1
1274 ; CHECK-NEXT: {{ $}}
1275 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1276 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1277 ; CHECK-NEXT: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY]], [[COPY1]]
1278 ; CHECK-NEXT: $d0 = COPY [[CMHIv8i8_]]
1279 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1280 %0:fpr(<8 x s8>) = COPY $d0
1281 %1:fpr(<8 x s8>) = COPY $d1
1282 %4:fpr(<8 x s8>) = G_ICMP intpred(ugt), %0(<8 x s8>), %1
1283 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1284 $d0 = COPY %3(<8 x s8>)
1285 RET_ReallyLR implicit $d0
1289 name: test_v2i64_uge
1292 regBankSelected: true
1293 tracksRegLiveness: true
1295 - { id: 0, class: fpr }
1296 - { id: 1, class: fpr }
1297 - { id: 2, class: _ }
1298 - { id: 3, class: fpr }
1299 - { id: 4, class: fpr }
1300 machineFunctionInfo: {}
1305 ; CHECK-LABEL: name: test_v2i64_uge
1306 ; CHECK: liveins: $q0, $q1
1307 ; CHECK-NEXT: {{ $}}
1308 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1309 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1310 ; CHECK-NEXT: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY]], [[COPY1]]
1311 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1312 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
1313 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1314 %0:fpr(<2 x s64>) = COPY $q0
1315 %1:fpr(<2 x s64>) = COPY $q1
1316 %4:fpr(<2 x s64>) = G_ICMP intpred(uge), %0(<2 x s64>), %1
1317 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1318 $d0 = COPY %3(<2 x s32>)
1319 RET_ReallyLR implicit $d0
1323 name: test_v4i32_uge
1326 regBankSelected: true
1327 tracksRegLiveness: true
1329 - { id: 0, class: fpr }
1330 - { id: 1, class: fpr }
1331 - { id: 2, class: _ }
1332 - { id: 3, class: fpr }
1333 - { id: 4, class: fpr }
1334 machineFunctionInfo: {}
1339 ; CHECK-LABEL: name: test_v4i32_uge
1340 ; CHECK: liveins: $q0, $q1
1341 ; CHECK-NEXT: {{ $}}
1342 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1343 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1344 ; CHECK-NEXT: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY]], [[COPY1]]
1345 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1346 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
1347 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1348 %0:fpr(<4 x s32>) = COPY $q0
1349 %1:fpr(<4 x s32>) = COPY $q1
1350 %4:fpr(<4 x s32>) = G_ICMP intpred(uge), %0(<4 x s32>), %1
1351 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1352 $d0 = COPY %3(<4 x s16>)
1353 RET_ReallyLR implicit $d0
1357 name: test_v2i32_uge
1360 regBankSelected: true
1361 tracksRegLiveness: true
1363 - { id: 0, class: fpr }
1364 - { id: 1, class: fpr }
1365 - { id: 2, class: _ }
1366 - { id: 3, class: fpr }
1367 - { id: 4, class: fpr }
1368 machineFunctionInfo: {}
1373 ; CHECK-LABEL: name: test_v2i32_uge
1374 ; CHECK: liveins: $d0, $d1
1375 ; CHECK-NEXT: {{ $}}
1376 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1377 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1378 ; CHECK-NEXT: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY]], [[COPY1]]
1379 ; CHECK-NEXT: $d0 = COPY [[CMHSv2i32_]]
1380 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1381 %0:fpr(<2 x s32>) = COPY $d0
1382 %1:fpr(<2 x s32>) = COPY $d1
1383 %4:fpr(<2 x s32>) = G_ICMP intpred(uge), %0(<2 x s32>), %1
1384 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1385 $d0 = COPY %3(<2 x s32>)
1386 RET_ReallyLR implicit $d0
1390 name: test_v2i16_uge
1393 regBankSelected: true
1394 tracksRegLiveness: true
1396 - { id: 0, class: _ }
1397 - { id: 1, class: _ }
1398 - { id: 2, class: fpr }
1399 - { id: 3, class: fpr }
1400 - { id: 4, class: _ }
1401 - { id: 5, class: fpr }
1402 - { id: 6, class: _ }
1403 - { id: 7, class: fpr }
1404 - { id: 8, class: fpr }
1405 - { id: 9, class: fpr }
1406 - { id: 10, class: gpr }
1407 - { id: 11, class: fpr }
1408 - { id: 12, class: fpr }
1409 - { id: 13, class: gpr }
1410 - { id: 14, class: fpr }
1411 - { id: 15, class: fpr }
1412 machineFunctionInfo: {}
1417 ; CHECK-LABEL: name: test_v2i16_uge
1418 ; CHECK: liveins: $d0, $d1
1419 ; CHECK-NEXT: {{ $}}
1420 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1421 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1422 ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51
1423 ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]]
1424 ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51
1425 ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]]
1426 ; CHECK-NEXT: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1427 ; CHECK-NEXT: $d0 = COPY [[CMHSv2i32_]]
1428 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1429 %2:fpr(<2 x s32>) = COPY $d0
1430 %3:fpr(<2 x s32>) = COPY $d1
1431 %13:gpr(s32) = G_CONSTANT i32 65535
1432 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1433 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1434 %7:fpr(<2 x s32>) = G_AND %15, %14
1435 %10:gpr(s32) = G_CONSTANT i32 65535
1436 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1437 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1438 %8:fpr(<2 x s32>) = G_AND %12, %11
1439 %9:fpr(<2 x s32>) = G_ICMP intpred(uge), %7(<2 x s32>), %8
1440 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1441 $d0 = COPY %5(<2 x s32>)
1442 RET_ReallyLR implicit $d0
1446 name: test_v8i16_uge
1449 regBankSelected: true
1450 tracksRegLiveness: true
1452 - { id: 0, class: fpr }
1453 - { id: 1, class: fpr }
1454 - { id: 2, class: _ }
1455 - { id: 3, class: fpr }
1456 - { id: 4, class: fpr }
1457 machineFunctionInfo: {}
1462 ; CHECK-LABEL: name: test_v8i16_uge
1463 ; CHECK: liveins: $q0, $q1
1464 ; CHECK-NEXT: {{ $}}
1465 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1466 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1467 ; CHECK-NEXT: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY]], [[COPY1]]
1468 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
1469 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
1470 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1471 %0:fpr(<8 x s16>) = COPY $q0
1472 %1:fpr(<8 x s16>) = COPY $q1
1473 %4:fpr(<8 x s16>) = G_ICMP intpred(uge), %0(<8 x s16>), %1
1474 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1475 $d0 = COPY %3(<8 x s8>)
1476 RET_ReallyLR implicit $d0
1480 name: test_v4i16_uge
1483 regBankSelected: true
1484 tracksRegLiveness: true
1486 - { id: 0, class: fpr }
1487 - { id: 1, class: fpr }
1488 - { id: 2, class: _ }
1489 - { id: 3, class: fpr }
1490 - { id: 4, class: fpr }
1491 machineFunctionInfo: {}
1496 ; CHECK-LABEL: name: test_v4i16_uge
1497 ; CHECK: liveins: $d0, $d1
1498 ; CHECK-NEXT: {{ $}}
1499 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1500 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1501 ; CHECK-NEXT: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY]], [[COPY1]]
1502 ; CHECK-NEXT: $d0 = COPY [[CMHSv4i16_]]
1503 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1504 %0:fpr(<4 x s16>) = COPY $d0
1505 %1:fpr(<4 x s16>) = COPY $d1
1506 %4:fpr(<4 x s16>) = G_ICMP intpred(uge), %0(<4 x s16>), %1
1507 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1508 $d0 = COPY %3(<4 x s16>)
1509 RET_ReallyLR implicit $d0
1513 name: test_v16i8_uge
1516 regBankSelected: true
1517 tracksRegLiveness: true
1519 - { id: 0, class: fpr }
1520 - { id: 1, class: fpr }
1521 - { id: 2, class: _ }
1522 - { id: 3, class: fpr }
1523 - { id: 4, class: fpr }
1524 machineFunctionInfo: {}
1529 ; CHECK-LABEL: name: test_v16i8_uge
1530 ; CHECK: liveins: $q0, $q1
1531 ; CHECK-NEXT: {{ $}}
1532 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1533 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1534 ; CHECK-NEXT: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY]], [[COPY1]]
1535 ; CHECK-NEXT: $q0 = COPY [[CMHSv16i8_]]
1536 ; CHECK-NEXT: RET_ReallyLR implicit $q0
1537 %0:fpr(<16 x s8>) = COPY $q0
1538 %1:fpr(<16 x s8>) = COPY $q1
1539 %4:fpr(<16 x s8>) = G_ICMP intpred(uge), %0(<16 x s8>), %1
1540 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1541 $q0 = COPY %3(<16 x s8>)
1542 RET_ReallyLR implicit $q0
1549 regBankSelected: true
1550 tracksRegLiveness: true
1552 - { id: 0, class: fpr }
1553 - { id: 1, class: fpr }
1554 - { id: 2, class: _ }
1555 - { id: 3, class: fpr }
1556 - { id: 4, class: fpr }
1557 machineFunctionInfo: {}
1562 ; CHECK-LABEL: name: test_v8i8_uge
1563 ; CHECK: liveins: $d0, $d1
1564 ; CHECK-NEXT: {{ $}}
1565 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1566 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1567 ; CHECK-NEXT: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY]], [[COPY1]]
1568 ; CHECK-NEXT: $d0 = COPY [[CMHSv8i8_]]
1569 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1570 %0:fpr(<8 x s8>) = COPY $d0
1571 %1:fpr(<8 x s8>) = COPY $d1
1572 %4:fpr(<8 x s8>) = G_ICMP intpred(uge), %0(<8 x s8>), %1
1573 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1574 $d0 = COPY %3(<8 x s8>)
1575 RET_ReallyLR implicit $d0
1579 name: test_v2i64_ult
1582 regBankSelected: true
1583 tracksRegLiveness: true
1585 - { id: 0, class: fpr }
1586 - { id: 1, class: fpr }
1587 - { id: 2, class: _ }
1588 - { id: 3, class: fpr }
1589 - { id: 4, class: fpr }
1590 machineFunctionInfo: {}
1595 ; CHECK-LABEL: name: test_v2i64_ult
1596 ; CHECK: liveins: $q0, $q1
1597 ; CHECK-NEXT: {{ $}}
1598 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1599 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1600 ; CHECK-NEXT: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY1]], [[COPY]]
1601 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1602 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
1603 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1604 %0:fpr(<2 x s64>) = COPY $q0
1605 %1:fpr(<2 x s64>) = COPY $q1
1606 %4:fpr(<2 x s64>) = G_ICMP intpred(ult), %0(<2 x s64>), %1
1607 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1608 $d0 = COPY %3(<2 x s32>)
1609 RET_ReallyLR implicit $d0
1613 name: test_v4i32_ult
1616 regBankSelected: true
1617 tracksRegLiveness: true
1619 - { id: 0, class: fpr }
1620 - { id: 1, class: fpr }
1621 - { id: 2, class: _ }
1622 - { id: 3, class: fpr }
1623 - { id: 4, class: fpr }
1624 machineFunctionInfo: {}
1629 ; CHECK-LABEL: name: test_v4i32_ult
1630 ; CHECK: liveins: $q0, $q1
1631 ; CHECK-NEXT: {{ $}}
1632 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1633 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1634 ; CHECK-NEXT: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY1]], [[COPY]]
1635 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1636 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
1637 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1638 %0:fpr(<4 x s32>) = COPY $q0
1639 %1:fpr(<4 x s32>) = COPY $q1
1640 %4:fpr(<4 x s32>) = G_ICMP intpred(ult), %0(<4 x s32>), %1
1641 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1642 $d0 = COPY %3(<4 x s16>)
1643 RET_ReallyLR implicit $d0
1647 name: test_v2i32_ult
1650 regBankSelected: true
1651 tracksRegLiveness: true
1653 - { id: 0, class: fpr }
1654 - { id: 1, class: fpr }
1655 - { id: 2, class: _ }
1656 - { id: 3, class: fpr }
1657 - { id: 4, class: fpr }
1658 machineFunctionInfo: {}
1663 ; CHECK-LABEL: name: test_v2i32_ult
1664 ; CHECK: liveins: $d0, $d1
1665 ; CHECK-NEXT: {{ $}}
1666 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1667 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1668 ; CHECK-NEXT: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY1]], [[COPY]]
1669 ; CHECK-NEXT: $d0 = COPY [[CMHIv2i32_]]
1670 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1671 %0:fpr(<2 x s32>) = COPY $d0
1672 %1:fpr(<2 x s32>) = COPY $d1
1673 %4:fpr(<2 x s32>) = G_ICMP intpred(ult), %0(<2 x s32>), %1
1674 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1675 $d0 = COPY %3(<2 x s32>)
1676 RET_ReallyLR implicit $d0
1680 name: test_v2i16_ult
1683 regBankSelected: true
1684 tracksRegLiveness: true
1686 - { id: 0, class: _ }
1687 - { id: 1, class: _ }
1688 - { id: 2, class: fpr }
1689 - { id: 3, class: fpr }
1690 - { id: 4, class: _ }
1691 - { id: 5, class: fpr }
1692 - { id: 6, class: _ }
1693 - { id: 7, class: fpr }
1694 - { id: 8, class: fpr }
1695 - { id: 9, class: fpr }
1696 - { id: 10, class: gpr }
1697 - { id: 11, class: fpr }
1698 - { id: 12, class: fpr }
1699 - { id: 13, class: gpr }
1700 - { id: 14, class: fpr }
1701 - { id: 15, class: fpr }
1702 machineFunctionInfo: {}
1707 ; CHECK-LABEL: name: test_v2i16_ult
1708 ; CHECK: liveins: $d0, $d1
1709 ; CHECK-NEXT: {{ $}}
1710 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1711 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1712 ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51
1713 ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]]
1714 ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51
1715 ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]]
1716 ; CHECK-NEXT: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
1717 ; CHECK-NEXT: $d0 = COPY [[CMHIv2i32_]]
1718 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1719 %2:fpr(<2 x s32>) = COPY $d0
1720 %3:fpr(<2 x s32>) = COPY $d1
1721 %13:gpr(s32) = G_CONSTANT i32 65535
1722 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1723 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1724 %7:fpr(<2 x s32>) = G_AND %15, %14
1725 %10:gpr(s32) = G_CONSTANT i32 65535
1726 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1727 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1728 %8:fpr(<2 x s32>) = G_AND %12, %11
1729 %9:fpr(<2 x s32>) = G_ICMP intpred(ult), %7(<2 x s32>), %8
1730 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1731 $d0 = COPY %5(<2 x s32>)
1732 RET_ReallyLR implicit $d0
1736 name: test_v8i16_ult
1739 regBankSelected: true
1740 tracksRegLiveness: true
1742 - { id: 0, class: fpr }
1743 - { id: 1, class: fpr }
1744 - { id: 2, class: _ }
1745 - { id: 3, class: fpr }
1746 - { id: 4, class: fpr }
1747 machineFunctionInfo: {}
1752 ; CHECK-LABEL: name: test_v8i16_ult
1753 ; CHECK: liveins: $q0, $q1
1754 ; CHECK-NEXT: {{ $}}
1755 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1756 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1757 ; CHECK-NEXT: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY1]], [[COPY]]
1758 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1759 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
1760 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1761 %0:fpr(<8 x s16>) = COPY $q0
1762 %1:fpr(<8 x s16>) = COPY $q1
1763 %4:fpr(<8 x s16>) = G_ICMP intpred(ult), %0(<8 x s16>), %1
1764 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1765 $d0 = COPY %3(<8 x s8>)
1766 RET_ReallyLR implicit $d0
1770 name: test_v4i16_ult
1773 regBankSelected: true
1774 tracksRegLiveness: true
1776 - { id: 0, class: fpr }
1777 - { id: 1, class: fpr }
1778 - { id: 2, class: _ }
1779 - { id: 3, class: fpr }
1780 - { id: 4, class: fpr }
1781 machineFunctionInfo: {}
1786 ; CHECK-LABEL: name: test_v4i16_ult
1787 ; CHECK: liveins: $d0, $d1
1788 ; CHECK-NEXT: {{ $}}
1789 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1790 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1791 ; CHECK-NEXT: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY1]], [[COPY]]
1792 ; CHECK-NEXT: $d0 = COPY [[CMHIv4i16_]]
1793 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1794 %0:fpr(<4 x s16>) = COPY $d0
1795 %1:fpr(<4 x s16>) = COPY $d1
1796 %4:fpr(<4 x s16>) = G_ICMP intpred(ult), %0(<4 x s16>), %1
1797 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1798 $d0 = COPY %3(<4 x s16>)
1799 RET_ReallyLR implicit $d0
1803 name: test_v16i8_ult
1806 regBankSelected: true
1807 tracksRegLiveness: true
1809 - { id: 0, class: fpr }
1810 - { id: 1, class: fpr }
1811 - { id: 2, class: _ }
1812 - { id: 3, class: fpr }
1813 - { id: 4, class: fpr }
1814 machineFunctionInfo: {}
1819 ; CHECK-LABEL: name: test_v16i8_ult
1820 ; CHECK: liveins: $q0, $q1
1821 ; CHECK-NEXT: {{ $}}
1822 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1823 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1824 ; CHECK-NEXT: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY1]], [[COPY]]
1825 ; CHECK-NEXT: $q0 = COPY [[CMHIv16i8_]]
1826 ; CHECK-NEXT: RET_ReallyLR implicit $q0
1827 %0:fpr(<16 x s8>) = COPY $q0
1828 %1:fpr(<16 x s8>) = COPY $q1
1829 %4:fpr(<16 x s8>) = G_ICMP intpred(ult), %0(<16 x s8>), %1
1830 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1831 $q0 = COPY %3(<16 x s8>)
1832 RET_ReallyLR implicit $q0
1839 regBankSelected: true
1840 tracksRegLiveness: true
1842 - { id: 0, class: fpr }
1843 - { id: 1, class: fpr }
1844 - { id: 2, class: _ }
1845 - { id: 3, class: fpr }
1846 - { id: 4, class: fpr }
1847 machineFunctionInfo: {}
1852 ; CHECK-LABEL: name: test_v8i8_ult
1853 ; CHECK: liveins: $d0, $d1
1854 ; CHECK-NEXT: {{ $}}
1855 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1856 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1857 ; CHECK-NEXT: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY1]], [[COPY]]
1858 ; CHECK-NEXT: $d0 = COPY [[CMHIv8i8_]]
1859 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1860 %0:fpr(<8 x s8>) = COPY $d0
1861 %1:fpr(<8 x s8>) = COPY $d1
1862 %4:fpr(<8 x s8>) = G_ICMP intpred(ult), %0(<8 x s8>), %1
1863 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1864 $d0 = COPY %3(<8 x s8>)
1865 RET_ReallyLR implicit $d0
1869 name: test_v2i64_ule
1872 regBankSelected: true
1873 tracksRegLiveness: true
1875 - { id: 0, class: fpr }
1876 - { id: 1, class: fpr }
1877 - { id: 2, class: _ }
1878 - { id: 3, class: fpr }
1879 - { id: 4, class: fpr }
1880 machineFunctionInfo: {}
1885 ; CHECK-LABEL: name: test_v2i64_ule
1886 ; CHECK: liveins: $q0, $q1
1887 ; CHECK-NEXT: {{ $}}
1888 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1889 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1890 ; CHECK-NEXT: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY1]], [[COPY]]
1891 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1892 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
1893 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1894 %0:fpr(<2 x s64>) = COPY $q0
1895 %1:fpr(<2 x s64>) = COPY $q1
1896 %4:fpr(<2 x s64>) = G_ICMP intpred(ule), %0(<2 x s64>), %1
1897 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1898 $d0 = COPY %3(<2 x s32>)
1899 RET_ReallyLR implicit $d0
1903 name: test_v4i32_ule
1906 regBankSelected: true
1907 tracksRegLiveness: true
1909 - { id: 0, class: fpr }
1910 - { id: 1, class: fpr }
1911 - { id: 2, class: _ }
1912 - { id: 3, class: fpr }
1913 - { id: 4, class: fpr }
1914 machineFunctionInfo: {}
1919 ; CHECK-LABEL: name: test_v4i32_ule
1920 ; CHECK: liveins: $q0, $q1
1921 ; CHECK-NEXT: {{ $}}
1922 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1923 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1924 ; CHECK-NEXT: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY1]], [[COPY]]
1925 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1926 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
1927 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1928 %0:fpr(<4 x s32>) = COPY $q0
1929 %1:fpr(<4 x s32>) = COPY $q1
1930 %4:fpr(<4 x s32>) = G_ICMP intpred(ule), %0(<4 x s32>), %1
1931 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1932 $d0 = COPY %3(<4 x s16>)
1933 RET_ReallyLR implicit $d0
1937 name: test_v2i32_ule
1940 regBankSelected: true
1941 tracksRegLiveness: true
1943 - { id: 0, class: fpr }
1944 - { id: 1, class: fpr }
1945 - { id: 2, class: _ }
1946 - { id: 3, class: fpr }
1947 - { id: 4, class: fpr }
1948 machineFunctionInfo: {}
1953 ; CHECK-LABEL: name: test_v2i32_ule
1954 ; CHECK: liveins: $d0, $d1
1955 ; CHECK-NEXT: {{ $}}
1956 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1957 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1958 ; CHECK-NEXT: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY1]], [[COPY]]
1959 ; CHECK-NEXT: $d0 = COPY [[CMHSv2i32_]]
1960 ; CHECK-NEXT: RET_ReallyLR implicit $d0
1961 %0:fpr(<2 x s32>) = COPY $d0
1962 %1:fpr(<2 x s32>) = COPY $d1
1963 %4:fpr(<2 x s32>) = G_ICMP intpred(ule), %0(<2 x s32>), %1
1964 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1965 $d0 = COPY %3(<2 x s32>)
1966 RET_ReallyLR implicit $d0
1970 name: test_v2i16_ule
1973 regBankSelected: true
1974 tracksRegLiveness: true
1976 - { id: 0, class: _ }
1977 - { id: 1, class: _ }
1978 - { id: 2, class: fpr }
1979 - { id: 3, class: fpr }
1980 - { id: 4, class: _ }
1981 - { id: 5, class: fpr }
1982 - { id: 6, class: _ }
1983 - { id: 7, class: fpr }
1984 - { id: 8, class: fpr }
1985 - { id: 9, class: fpr }
1986 - { id: 10, class: gpr }
1987 - { id: 11, class: fpr }
1988 - { id: 12, class: fpr }
1989 - { id: 13, class: gpr }
1990 - { id: 14, class: fpr }
1991 - { id: 15, class: fpr }
1992 machineFunctionInfo: {}
1997 ; CHECK-LABEL: name: test_v2i16_ule
1998 ; CHECK: liveins: $d0, $d1
1999 ; CHECK-NEXT: {{ $}}
2000 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2001 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2002 ; CHECK-NEXT: [[MOVID:%[0-9]+]]:fpr64 = MOVID 51
2003 ; CHECK-NEXT: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[MOVID]]
2004 ; CHECK-NEXT: [[MOVID1:%[0-9]+]]:fpr64 = MOVID 51
2005 ; CHECK-NEXT: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[MOVID1]]
2006 ; CHECK-NEXT: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
2007 ; CHECK-NEXT: $d0 = COPY [[CMHSv2i32_]]
2008 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2009 %2:fpr(<2 x s32>) = COPY $d0
2010 %3:fpr(<2 x s32>) = COPY $d1
2011 %13:gpr(s32) = G_CONSTANT i32 65535
2012 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
2013 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2014 %7:fpr(<2 x s32>) = G_AND %15, %14
2015 %10:gpr(s32) = G_CONSTANT i32 65535
2016 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2017 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2018 %8:fpr(<2 x s32>) = G_AND %12, %11
2019 %9:fpr(<2 x s32>) = G_ICMP intpred(ule), %7(<2 x s32>), %8
2020 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2021 $d0 = COPY %5(<2 x s32>)
2022 RET_ReallyLR implicit $d0
2026 name: test_v8i16_ule
2029 regBankSelected: true
2030 tracksRegLiveness: true
2032 - { id: 0, class: fpr }
2033 - { id: 1, class: fpr }
2034 - { id: 2, class: _ }
2035 - { id: 3, class: fpr }
2036 - { id: 4, class: fpr }
2037 machineFunctionInfo: {}
2042 ; CHECK-LABEL: name: test_v8i16_ule
2043 ; CHECK: liveins: $q0, $q1
2044 ; CHECK-NEXT: {{ $}}
2045 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2046 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2047 ; CHECK-NEXT: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY1]], [[COPY]]
2048 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
2049 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
2050 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2051 %0:fpr(<8 x s16>) = COPY $q0
2052 %1:fpr(<8 x s16>) = COPY $q1
2053 %4:fpr(<8 x s16>) = G_ICMP intpred(ule), %0(<8 x s16>), %1
2054 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2055 $d0 = COPY %3(<8 x s8>)
2056 RET_ReallyLR implicit $d0
2060 name: test_v4i16_ule
2063 regBankSelected: true
2064 tracksRegLiveness: true
2066 - { id: 0, class: fpr }
2067 - { id: 1, class: fpr }
2068 - { id: 2, class: _ }
2069 - { id: 3, class: fpr }
2070 - { id: 4, class: fpr }
2071 machineFunctionInfo: {}
2076 ; CHECK-LABEL: name: test_v4i16_ule
2077 ; CHECK: liveins: $d0, $d1
2078 ; CHECK-NEXT: {{ $}}
2079 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2080 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2081 ; CHECK-NEXT: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY1]], [[COPY]]
2082 ; CHECK-NEXT: $d0 = COPY [[CMHSv4i16_]]
2083 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2084 %0:fpr(<4 x s16>) = COPY $d0
2085 %1:fpr(<4 x s16>) = COPY $d1
2086 %4:fpr(<4 x s16>) = G_ICMP intpred(ule), %0(<4 x s16>), %1
2087 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2088 $d0 = COPY %3(<4 x s16>)
2089 RET_ReallyLR implicit $d0
2093 name: test_v16i8_ule
2096 regBankSelected: true
2097 tracksRegLiveness: true
2099 - { id: 0, class: fpr }
2100 - { id: 1, class: fpr }
2101 - { id: 2, class: _ }
2102 - { id: 3, class: fpr }
2103 - { id: 4, class: fpr }
2104 machineFunctionInfo: {}
2109 ; CHECK-LABEL: name: test_v16i8_ule
2110 ; CHECK: liveins: $q0, $q1
2111 ; CHECK-NEXT: {{ $}}
2112 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2113 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2114 ; CHECK-NEXT: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY1]], [[COPY]]
2115 ; CHECK-NEXT: $q0 = COPY [[CMHSv16i8_]]
2116 ; CHECK-NEXT: RET_ReallyLR implicit $q0
2117 %0:fpr(<16 x s8>) = COPY $q0
2118 %1:fpr(<16 x s8>) = COPY $q1
2119 %4:fpr(<16 x s8>) = G_ICMP intpred(ule), %0(<16 x s8>), %1
2120 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2121 $q0 = COPY %3(<16 x s8>)
2122 RET_ReallyLR implicit $q0
2129 regBankSelected: true
2130 tracksRegLiveness: true
2132 - { id: 0, class: fpr }
2133 - { id: 1, class: fpr }
2134 - { id: 2, class: _ }
2135 - { id: 3, class: fpr }
2136 - { id: 4, class: fpr }
2137 machineFunctionInfo: {}
2142 ; CHECK-LABEL: name: test_v8i8_ule
2143 ; CHECK: liveins: $d0, $d1
2144 ; CHECK-NEXT: {{ $}}
2145 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2146 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2147 ; CHECK-NEXT: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY1]], [[COPY]]
2148 ; CHECK-NEXT: $d0 = COPY [[CMHSv8i8_]]
2149 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2150 %0:fpr(<8 x s8>) = COPY $d0
2151 %1:fpr(<8 x s8>) = COPY $d1
2152 %4:fpr(<8 x s8>) = G_ICMP intpred(ule), %0(<8 x s8>), %1
2153 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2154 $d0 = COPY %3(<8 x s8>)
2155 RET_ReallyLR implicit $d0
2159 name: test_v2i64_sgt
2162 regBankSelected: true
2163 tracksRegLiveness: true
2165 - { id: 0, class: fpr }
2166 - { id: 1, class: fpr }
2167 - { id: 2, class: _ }
2168 - { id: 3, class: fpr }
2169 - { id: 4, class: fpr }
2170 machineFunctionInfo: {}
2175 ; CHECK-LABEL: name: test_v2i64_sgt
2176 ; CHECK: liveins: $q0, $q1
2177 ; CHECK-NEXT: {{ $}}
2178 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2179 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2180 ; CHECK-NEXT: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY]], [[COPY1]]
2181 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2182 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
2183 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2184 %0:fpr(<2 x s64>) = COPY $q0
2185 %1:fpr(<2 x s64>) = COPY $q1
2186 %4:fpr(<2 x s64>) = G_ICMP intpred(sgt), %0(<2 x s64>), %1
2187 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2188 $d0 = COPY %3(<2 x s32>)
2189 RET_ReallyLR implicit $d0
2193 name: test_v4i32_sgt
2196 regBankSelected: true
2197 tracksRegLiveness: true
2199 - { id: 0, class: fpr }
2200 - { id: 1, class: fpr }
2201 - { id: 2, class: _ }
2202 - { id: 3, class: fpr }
2203 - { id: 4, class: fpr }
2204 machineFunctionInfo: {}
2209 ; CHECK-LABEL: name: test_v4i32_sgt
2210 ; CHECK: liveins: $q0, $q1
2211 ; CHECK-NEXT: {{ $}}
2212 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2213 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2214 ; CHECK-NEXT: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY]], [[COPY1]]
2215 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2216 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
2217 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2218 %0:fpr(<4 x s32>) = COPY $q0
2219 %1:fpr(<4 x s32>) = COPY $q1
2220 %4:fpr(<4 x s32>) = G_ICMP intpred(sgt), %0(<4 x s32>), %1
2221 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2222 $d0 = COPY %3(<4 x s16>)
2223 RET_ReallyLR implicit $d0
2227 name: test_v2i32_sgt
2230 regBankSelected: true
2231 tracksRegLiveness: true
2233 - { id: 0, class: fpr }
2234 - { id: 1, class: fpr }
2235 - { id: 2, class: _ }
2236 - { id: 3, class: fpr }
2237 - { id: 4, class: fpr }
2238 machineFunctionInfo: {}
2243 ; CHECK-LABEL: name: test_v2i32_sgt
2244 ; CHECK: liveins: $d0, $d1
2245 ; CHECK-NEXT: {{ $}}
2246 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2247 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2248 ; CHECK-NEXT: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY]], [[COPY1]]
2249 ; CHECK-NEXT: $d0 = COPY [[CMGTv2i32_]]
2250 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2251 %0:fpr(<2 x s32>) = COPY $d0
2252 %1:fpr(<2 x s32>) = COPY $d1
2253 %4:fpr(<2 x s32>) = G_ICMP intpred(sgt), %0(<2 x s32>), %1
2254 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2255 $d0 = COPY %3(<2 x s32>)
2256 RET_ReallyLR implicit $d0
2260 name: test_v2i16_sgt
2263 regBankSelected: true
2264 tracksRegLiveness: true
2266 - { id: 0, class: _ }
2267 - { id: 1, class: _ }
2268 - { id: 2, class: fpr }
2269 - { id: 3, class: fpr }
2270 - { id: 4, class: _ }
2271 - { id: 5, class: fpr }
2272 - { id: 6, class: _ }
2273 - { id: 7, class: fpr }
2274 - { id: 8, class: fpr }
2275 - { id: 9, class: fpr }
2276 - { id: 10, class: gpr }
2277 - { id: 11, class: fpr }
2278 - { id: 12, class: fpr }
2279 - { id: 13, class: fpr }
2280 - { id: 14, class: gpr }
2281 - { id: 15, class: fpr }
2282 - { id: 16, class: fpr }
2283 - { id: 17, class: fpr }
2284 machineFunctionInfo: {}
2289 ; CHECK-LABEL: name: test_v2i16_sgt
2290 ; CHECK: liveins: $d0, $d1
2291 ; CHECK-NEXT: {{ $}}
2292 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2293 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2294 ; CHECK-NEXT: [[MOVIv2i32_:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0
2295 ; CHECK-NEXT: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2296 ; CHECK-NEXT: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_]]
2297 ; CHECK-NEXT: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2298 ; CHECK-NEXT: [[MOVIv2i32_1:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0
2299 ; CHECK-NEXT: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2300 ; CHECK-NEXT: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_1]]
2301 ; CHECK-NEXT: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2302 ; CHECK-NEXT: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2303 ; CHECK-NEXT: $d0 = COPY [[CMGTv2i32_]]
2304 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2305 %2:fpr(<2 x s32>) = COPY $d0
2306 %3:fpr(<2 x s32>) = COPY $d1
2307 %14:gpr(s32) = G_CONSTANT i32 16
2308 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2309 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2310 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2311 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2312 %10:gpr(s32) = G_CONSTANT i32 16
2313 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2314 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2315 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2316 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2317 %9:fpr(<2 x s32>) = G_ICMP intpred(sgt), %7(<2 x s32>), %8
2318 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2319 $d0 = COPY %5(<2 x s32>)
2320 RET_ReallyLR implicit $d0
2324 name: test_v8i16_sgt
2327 regBankSelected: true
2328 tracksRegLiveness: true
2330 - { id: 0, class: fpr }
2331 - { id: 1, class: fpr }
2332 - { id: 2, class: _ }
2333 - { id: 3, class: fpr }
2334 - { id: 4, class: fpr }
2335 machineFunctionInfo: {}
2340 ; CHECK-LABEL: name: test_v8i16_sgt
2341 ; CHECK: liveins: $q0, $q1
2342 ; CHECK-NEXT: {{ $}}
2343 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2344 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2345 ; CHECK-NEXT: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY]], [[COPY1]]
2346 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2347 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
2348 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2349 %0:fpr(<8 x s16>) = COPY $q0
2350 %1:fpr(<8 x s16>) = COPY $q1
2351 %4:fpr(<8 x s16>) = G_ICMP intpred(sgt), %0(<8 x s16>), %1
2352 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2353 $d0 = COPY %3(<8 x s8>)
2354 RET_ReallyLR implicit $d0
2358 name: test_v4i16_sgt
2361 regBankSelected: true
2362 tracksRegLiveness: true
2364 - { id: 0, class: fpr }
2365 - { id: 1, class: fpr }
2366 - { id: 2, class: _ }
2367 - { id: 3, class: fpr }
2368 - { id: 4, class: fpr }
2369 machineFunctionInfo: {}
2374 ; CHECK-LABEL: name: test_v4i16_sgt
2375 ; CHECK: liveins: $d0, $d1
2376 ; CHECK-NEXT: {{ $}}
2377 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2378 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2379 ; CHECK-NEXT: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY]], [[COPY1]]
2380 ; CHECK-NEXT: $d0 = COPY [[CMGTv4i16_]]
2381 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2382 %0:fpr(<4 x s16>) = COPY $d0
2383 %1:fpr(<4 x s16>) = COPY $d1
2384 %4:fpr(<4 x s16>) = G_ICMP intpred(sgt), %0(<4 x s16>), %1
2385 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2386 $d0 = COPY %3(<4 x s16>)
2387 RET_ReallyLR implicit $d0
2391 name: test_v16i8_sgt
2394 regBankSelected: true
2395 tracksRegLiveness: true
2397 - { id: 0, class: fpr }
2398 - { id: 1, class: fpr }
2399 - { id: 2, class: _ }
2400 - { id: 3, class: fpr }
2401 - { id: 4, class: fpr }
2402 machineFunctionInfo: {}
2407 ; CHECK-LABEL: name: test_v16i8_sgt
2408 ; CHECK: liveins: $q0, $q1
2409 ; CHECK-NEXT: {{ $}}
2410 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2411 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2412 ; CHECK-NEXT: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY]], [[COPY1]]
2413 ; CHECK-NEXT: $q0 = COPY [[CMGTv16i8_]]
2414 ; CHECK-NEXT: RET_ReallyLR implicit $q0
2415 %0:fpr(<16 x s8>) = COPY $q0
2416 %1:fpr(<16 x s8>) = COPY $q1
2417 %4:fpr(<16 x s8>) = G_ICMP intpred(sgt), %0(<16 x s8>), %1
2418 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2419 $q0 = COPY %3(<16 x s8>)
2420 RET_ReallyLR implicit $q0
2427 regBankSelected: true
2428 tracksRegLiveness: true
2430 - { id: 0, class: fpr }
2431 - { id: 1, class: fpr }
2432 - { id: 2, class: _ }
2433 - { id: 3, class: fpr }
2434 - { id: 4, class: fpr }
2435 machineFunctionInfo: {}
2440 ; CHECK-LABEL: name: test_v8i8_sgt
2441 ; CHECK: liveins: $d0, $d1
2442 ; CHECK-NEXT: {{ $}}
2443 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2444 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2445 ; CHECK-NEXT: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY]], [[COPY1]]
2446 ; CHECK-NEXT: $d0 = COPY [[CMGTv8i8_]]
2447 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2448 %0:fpr(<8 x s8>) = COPY $d0
2449 %1:fpr(<8 x s8>) = COPY $d1
2450 %4:fpr(<8 x s8>) = G_ICMP intpred(sgt), %0(<8 x s8>), %1
2451 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2452 $d0 = COPY %3(<8 x s8>)
2453 RET_ReallyLR implicit $d0
2457 name: test_v2i64_sge
2460 regBankSelected: true
2461 tracksRegLiveness: true
2463 - { id: 0, class: fpr }
2464 - { id: 1, class: fpr }
2465 - { id: 2, class: _ }
2466 - { id: 3, class: fpr }
2467 - { id: 4, class: fpr }
2468 machineFunctionInfo: {}
2473 ; CHECK-LABEL: name: test_v2i64_sge
2474 ; CHECK: liveins: $q0, $q1
2475 ; CHECK-NEXT: {{ $}}
2476 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2477 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2478 ; CHECK-NEXT: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY]], [[COPY1]]
2479 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
2480 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
2481 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2482 %0:fpr(<2 x s64>) = COPY $q0
2483 %1:fpr(<2 x s64>) = COPY $q1
2484 %4:fpr(<2 x s64>) = G_ICMP intpred(sge), %0(<2 x s64>), %1
2485 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2486 $d0 = COPY %3(<2 x s32>)
2487 RET_ReallyLR implicit $d0
2491 name: test_v4i32_sge
2494 regBankSelected: true
2495 tracksRegLiveness: true
2497 - { id: 0, class: fpr }
2498 - { id: 1, class: fpr }
2499 - { id: 2, class: _ }
2500 - { id: 3, class: fpr }
2501 - { id: 4, class: fpr }
2502 machineFunctionInfo: {}
2507 ; CHECK-LABEL: name: test_v4i32_sge
2508 ; CHECK: liveins: $q0, $q1
2509 ; CHECK-NEXT: {{ $}}
2510 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2511 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2512 ; CHECK-NEXT: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY]], [[COPY1]]
2513 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
2514 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
2515 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2516 %0:fpr(<4 x s32>) = COPY $q0
2517 %1:fpr(<4 x s32>) = COPY $q1
2518 %4:fpr(<4 x s32>) = G_ICMP intpred(sge), %0(<4 x s32>), %1
2519 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2520 $d0 = COPY %3(<4 x s16>)
2521 RET_ReallyLR implicit $d0
2525 name: test_v2i32_sge
2528 regBankSelected: true
2529 tracksRegLiveness: true
2531 - { id: 0, class: fpr }
2532 - { id: 1, class: fpr }
2533 - { id: 2, class: _ }
2534 - { id: 3, class: fpr }
2535 - { id: 4, class: fpr }
2536 machineFunctionInfo: {}
2541 ; CHECK-LABEL: name: test_v2i32_sge
2542 ; CHECK: liveins: $d0, $d1
2543 ; CHECK-NEXT: {{ $}}
2544 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2545 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2546 ; CHECK-NEXT: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY]], [[COPY1]]
2547 ; CHECK-NEXT: $d0 = COPY [[CMGEv2i32_]]
2548 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2549 %0:fpr(<2 x s32>) = COPY $d0
2550 %1:fpr(<2 x s32>) = COPY $d1
2551 %4:fpr(<2 x s32>) = G_ICMP intpred(sge), %0(<2 x s32>), %1
2552 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2553 $d0 = COPY %3(<2 x s32>)
2554 RET_ReallyLR implicit $d0
2558 name: test_v2i16_sge
2561 regBankSelected: true
2562 tracksRegLiveness: true
2564 - { id: 0, class: _ }
2565 - { id: 1, class: _ }
2566 - { id: 2, class: fpr }
2567 - { id: 3, class: fpr }
2568 - { id: 4, class: _ }
2569 - { id: 5, class: fpr }
2570 - { id: 6, class: _ }
2571 - { id: 7, class: fpr }
2572 - { id: 8, class: fpr }
2573 - { id: 9, class: fpr }
2574 - { id: 10, class: gpr }
2575 - { id: 11, class: fpr }
2576 - { id: 12, class: fpr }
2577 - { id: 13, class: fpr }
2578 - { id: 14, class: gpr }
2579 - { id: 15, class: fpr }
2580 - { id: 16, class: fpr }
2581 - { id: 17, class: fpr }
2582 machineFunctionInfo: {}
2587 ; CHECK-LABEL: name: test_v2i16_sge
2588 ; CHECK: liveins: $d0, $d1
2589 ; CHECK-NEXT: {{ $}}
2590 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2591 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2592 ; CHECK-NEXT: [[MOVIv2i32_:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0
2593 ; CHECK-NEXT: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2594 ; CHECK-NEXT: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_]]
2595 ; CHECK-NEXT: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2596 ; CHECK-NEXT: [[MOVIv2i32_1:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0
2597 ; CHECK-NEXT: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2598 ; CHECK-NEXT: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_1]]
2599 ; CHECK-NEXT: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2600 ; CHECK-NEXT: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2601 ; CHECK-NEXT: $d0 = COPY [[CMGEv2i32_]]
2602 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2603 %2:fpr(<2 x s32>) = COPY $d0
2604 %3:fpr(<2 x s32>) = COPY $d1
2605 %14:gpr(s32) = G_CONSTANT i32 16
2606 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2607 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2608 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2609 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2610 %10:gpr(s32) = G_CONSTANT i32 16
2611 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2612 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2613 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2614 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2615 %9:fpr(<2 x s32>) = G_ICMP intpred(sge), %7(<2 x s32>), %8
2616 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2617 $d0 = COPY %5(<2 x s32>)
2618 RET_ReallyLR implicit $d0
2622 name: test_v8i16_sge
2625 regBankSelected: true
2626 tracksRegLiveness: true
2628 - { id: 0, class: fpr }
2629 - { id: 1, class: fpr }
2630 - { id: 2, class: _ }
2631 - { id: 3, class: fpr }
2632 - { id: 4, class: fpr }
2633 machineFunctionInfo: {}
2638 ; CHECK-LABEL: name: test_v8i16_sge
2639 ; CHECK: liveins: $q0, $q1
2640 ; CHECK-NEXT: {{ $}}
2641 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2642 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2643 ; CHECK-NEXT: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY]], [[COPY1]]
2644 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
2645 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
2646 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2647 %0:fpr(<8 x s16>) = COPY $q0
2648 %1:fpr(<8 x s16>) = COPY $q1
2649 %4:fpr(<8 x s16>) = G_ICMP intpred(sge), %0(<8 x s16>), %1
2650 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2651 $d0 = COPY %3(<8 x s8>)
2652 RET_ReallyLR implicit $d0
2656 name: test_v4i16_sge
2659 regBankSelected: true
2660 tracksRegLiveness: true
2662 - { id: 0, class: fpr }
2663 - { id: 1, class: fpr }
2664 - { id: 2, class: _ }
2665 - { id: 3, class: fpr }
2666 - { id: 4, class: fpr }
2667 machineFunctionInfo: {}
2672 ; CHECK-LABEL: name: test_v4i16_sge
2673 ; CHECK: liveins: $d0, $d1
2674 ; CHECK-NEXT: {{ $}}
2675 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2676 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2677 ; CHECK-NEXT: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY]], [[COPY1]]
2678 ; CHECK-NEXT: $d0 = COPY [[CMGEv4i16_]]
2679 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2680 %0:fpr(<4 x s16>) = COPY $d0
2681 %1:fpr(<4 x s16>) = COPY $d1
2682 %4:fpr(<4 x s16>) = G_ICMP intpred(sge), %0(<4 x s16>), %1
2683 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2684 $d0 = COPY %3(<4 x s16>)
2685 RET_ReallyLR implicit $d0
2689 name: test_v16i8_sge
2692 regBankSelected: true
2693 tracksRegLiveness: true
2695 - { id: 0, class: fpr }
2696 - { id: 1, class: fpr }
2697 - { id: 2, class: _ }
2698 - { id: 3, class: fpr }
2699 - { id: 4, class: fpr }
2700 machineFunctionInfo: {}
2705 ; CHECK-LABEL: name: test_v16i8_sge
2706 ; CHECK: liveins: $q0, $q1
2707 ; CHECK-NEXT: {{ $}}
2708 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2709 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2710 ; CHECK-NEXT: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY]], [[COPY1]]
2711 ; CHECK-NEXT: $q0 = COPY [[CMGEv16i8_]]
2712 ; CHECK-NEXT: RET_ReallyLR implicit $q0
2713 %0:fpr(<16 x s8>) = COPY $q0
2714 %1:fpr(<16 x s8>) = COPY $q1
2715 %4:fpr(<16 x s8>) = G_ICMP intpred(sge), %0(<16 x s8>), %1
2716 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2717 $q0 = COPY %3(<16 x s8>)
2718 RET_ReallyLR implicit $q0
2725 regBankSelected: true
2726 tracksRegLiveness: true
2728 - { id: 0, class: fpr }
2729 - { id: 1, class: fpr }
2730 - { id: 2, class: _ }
2731 - { id: 3, class: fpr }
2732 - { id: 4, class: fpr }
2733 machineFunctionInfo: {}
2738 ; CHECK-LABEL: name: test_v8i8_sge
2739 ; CHECK: liveins: $d0, $d1
2740 ; CHECK-NEXT: {{ $}}
2741 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2742 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2743 ; CHECK-NEXT: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY]], [[COPY1]]
2744 ; CHECK-NEXT: $d0 = COPY [[CMGEv8i8_]]
2745 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2746 %0:fpr(<8 x s8>) = COPY $d0
2747 %1:fpr(<8 x s8>) = COPY $d1
2748 %4:fpr(<8 x s8>) = G_ICMP intpred(sge), %0(<8 x s8>), %1
2749 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2750 $d0 = COPY %3(<8 x s8>)
2751 RET_ReallyLR implicit $d0
2755 name: test_v2i64_slt
2758 regBankSelected: true
2759 tracksRegLiveness: true
2761 - { id: 0, class: fpr }
2762 - { id: 1, class: fpr }
2763 - { id: 2, class: _ }
2764 - { id: 3, class: fpr }
2765 - { id: 4, class: fpr }
2766 machineFunctionInfo: {}
2771 ; CHECK-LABEL: name: test_v2i64_slt
2772 ; CHECK: liveins: $q0, $q1
2773 ; CHECK-NEXT: {{ $}}
2774 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2775 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2776 ; CHECK-NEXT: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY1]], [[COPY]]
2777 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2778 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
2779 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2780 %0:fpr(<2 x s64>) = COPY $q0
2781 %1:fpr(<2 x s64>) = COPY $q1
2782 %4:fpr(<2 x s64>) = G_ICMP intpred(slt), %0(<2 x s64>), %1
2783 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2784 $d0 = COPY %3(<2 x s32>)
2785 RET_ReallyLR implicit $d0
2789 name: test_v4i32_slt
2792 regBankSelected: true
2793 tracksRegLiveness: true
2795 - { id: 0, class: fpr }
2796 - { id: 1, class: fpr }
2797 - { id: 2, class: _ }
2798 - { id: 3, class: fpr }
2799 - { id: 4, class: fpr }
2800 machineFunctionInfo: {}
2805 ; CHECK-LABEL: name: test_v4i32_slt
2806 ; CHECK: liveins: $q0, $q1
2807 ; CHECK-NEXT: {{ $}}
2808 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2809 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2810 ; CHECK-NEXT: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY1]], [[COPY]]
2811 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2812 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
2813 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2814 %0:fpr(<4 x s32>) = COPY $q0
2815 %1:fpr(<4 x s32>) = COPY $q1
2816 %4:fpr(<4 x s32>) = G_ICMP intpred(slt), %0(<4 x s32>), %1
2817 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2818 $d0 = COPY %3(<4 x s16>)
2819 RET_ReallyLR implicit $d0
2823 name: test_v2i32_slt
2826 regBankSelected: true
2827 tracksRegLiveness: true
2829 - { id: 0, class: fpr }
2830 - { id: 1, class: fpr }
2831 - { id: 2, class: _ }
2832 - { id: 3, class: fpr }
2833 - { id: 4, class: fpr }
2834 machineFunctionInfo: {}
2839 ; CHECK-LABEL: name: test_v2i32_slt
2840 ; CHECK: liveins: $d0, $d1
2841 ; CHECK-NEXT: {{ $}}
2842 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2843 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2844 ; CHECK-NEXT: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY1]], [[COPY]]
2845 ; CHECK-NEXT: $d0 = COPY [[CMGTv2i32_]]
2846 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2847 %0:fpr(<2 x s32>) = COPY $d0
2848 %1:fpr(<2 x s32>) = COPY $d1
2849 %4:fpr(<2 x s32>) = G_ICMP intpred(slt), %0(<2 x s32>), %1
2850 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2851 $d0 = COPY %3(<2 x s32>)
2852 RET_ReallyLR implicit $d0
2856 name: test_v2i16_slt
2859 regBankSelected: true
2860 tracksRegLiveness: true
2862 - { id: 0, class: _ }
2863 - { id: 1, class: _ }
2864 - { id: 2, class: fpr }
2865 - { id: 3, class: fpr }
2866 - { id: 4, class: _ }
2867 - { id: 5, class: fpr }
2868 - { id: 6, class: _ }
2869 - { id: 7, class: fpr }
2870 - { id: 8, class: fpr }
2871 - { id: 9, class: fpr }
2872 - { id: 10, class: gpr }
2873 - { id: 11, class: fpr }
2874 - { id: 12, class: fpr }
2875 - { id: 13, class: fpr }
2876 - { id: 14, class: gpr }
2877 - { id: 15, class: fpr }
2878 - { id: 16, class: fpr }
2879 - { id: 17, class: fpr }
2880 machineFunctionInfo: {}
2885 ; CHECK-LABEL: name: test_v2i16_slt
2886 ; CHECK: liveins: $d0, $d1
2887 ; CHECK-NEXT: {{ $}}
2888 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2889 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2890 ; CHECK-NEXT: [[MOVIv2i32_:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0
2891 ; CHECK-NEXT: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2892 ; CHECK-NEXT: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_]]
2893 ; CHECK-NEXT: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2894 ; CHECK-NEXT: [[MOVIv2i32_1:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0
2895 ; CHECK-NEXT: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2896 ; CHECK-NEXT: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_1]]
2897 ; CHECK-NEXT: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2898 ; CHECK-NEXT: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
2899 ; CHECK-NEXT: $d0 = COPY [[CMGTv2i32_]]
2900 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2901 %2:fpr(<2 x s32>) = COPY $d0
2902 %3:fpr(<2 x s32>) = COPY $d1
2903 %14:gpr(s32) = G_CONSTANT i32 16
2904 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2905 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2906 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2907 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2908 %10:gpr(s32) = G_CONSTANT i32 16
2909 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2910 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2911 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2912 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2913 %9:fpr(<2 x s32>) = G_ICMP intpred(slt), %7(<2 x s32>), %8
2914 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2915 $d0 = COPY %5(<2 x s32>)
2916 RET_ReallyLR implicit $d0
2920 name: test_v8i16_slt
2923 regBankSelected: true
2924 tracksRegLiveness: true
2926 - { id: 0, class: fpr }
2927 - { id: 1, class: fpr }
2928 - { id: 2, class: _ }
2929 - { id: 3, class: fpr }
2930 - { id: 4, class: fpr }
2931 machineFunctionInfo: {}
2936 ; CHECK-LABEL: name: test_v8i16_slt
2937 ; CHECK: liveins: $q0, $q1
2938 ; CHECK-NEXT: {{ $}}
2939 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2940 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2941 ; CHECK-NEXT: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY1]], [[COPY]]
2942 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2943 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
2944 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2945 %0:fpr(<8 x s16>) = COPY $q0
2946 %1:fpr(<8 x s16>) = COPY $q1
2947 %4:fpr(<8 x s16>) = G_ICMP intpred(slt), %0(<8 x s16>), %1
2948 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2949 $d0 = COPY %3(<8 x s8>)
2950 RET_ReallyLR implicit $d0
2954 name: test_v4i16_slt
2957 regBankSelected: true
2958 tracksRegLiveness: true
2960 - { id: 0, class: fpr }
2961 - { id: 1, class: fpr }
2962 - { id: 2, class: _ }
2963 - { id: 3, class: fpr }
2964 - { id: 4, class: fpr }
2965 machineFunctionInfo: {}
2970 ; CHECK-LABEL: name: test_v4i16_slt
2971 ; CHECK: liveins: $d0, $d1
2972 ; CHECK-NEXT: {{ $}}
2973 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2974 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2975 ; CHECK-NEXT: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY1]], [[COPY]]
2976 ; CHECK-NEXT: $d0 = COPY [[CMGTv4i16_]]
2977 ; CHECK-NEXT: RET_ReallyLR implicit $d0
2978 %0:fpr(<4 x s16>) = COPY $d0
2979 %1:fpr(<4 x s16>) = COPY $d1
2980 %4:fpr(<4 x s16>) = G_ICMP intpred(slt), %0(<4 x s16>), %1
2981 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2982 $d0 = COPY %3(<4 x s16>)
2983 RET_ReallyLR implicit $d0
2987 name: test_v16i8_slt
2990 regBankSelected: true
2991 tracksRegLiveness: true
2993 - { id: 0, class: fpr }
2994 - { id: 1, class: fpr }
2995 - { id: 2, class: _ }
2996 - { id: 3, class: fpr }
2997 - { id: 4, class: fpr }
2998 machineFunctionInfo: {}
3003 ; CHECK-LABEL: name: test_v16i8_slt
3004 ; CHECK: liveins: $q0, $q1
3005 ; CHECK-NEXT: {{ $}}
3006 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3007 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3008 ; CHECK-NEXT: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY1]], [[COPY]]
3009 ; CHECK-NEXT: $q0 = COPY [[CMGTv16i8_]]
3010 ; CHECK-NEXT: RET_ReallyLR implicit $q0
3011 %0:fpr(<16 x s8>) = COPY $q0
3012 %1:fpr(<16 x s8>) = COPY $q1
3013 %4:fpr(<16 x s8>) = G_ICMP intpred(slt), %0(<16 x s8>), %1
3014 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
3015 $q0 = COPY %3(<16 x s8>)
3016 RET_ReallyLR implicit $q0
3023 regBankSelected: true
3024 tracksRegLiveness: true
3026 - { id: 0, class: fpr }
3027 - { id: 1, class: fpr }
3028 - { id: 2, class: _ }
3029 - { id: 3, class: fpr }
3030 - { id: 4, class: fpr }
3031 machineFunctionInfo: {}
3036 ; CHECK-LABEL: name: test_v8i8_slt
3037 ; CHECK: liveins: $d0, $d1
3038 ; CHECK-NEXT: {{ $}}
3039 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3040 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3041 ; CHECK-NEXT: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY1]], [[COPY]]
3042 ; CHECK-NEXT: $d0 = COPY [[CMGTv8i8_]]
3043 ; CHECK-NEXT: RET_ReallyLR implicit $d0
3044 %0:fpr(<8 x s8>) = COPY $d0
3045 %1:fpr(<8 x s8>) = COPY $d1
3046 %4:fpr(<8 x s8>) = G_ICMP intpred(slt), %0(<8 x s8>), %1
3047 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
3048 $d0 = COPY %3(<8 x s8>)
3049 RET_ReallyLR implicit $d0
3053 name: test_v2i64_sle
3056 regBankSelected: true
3057 tracksRegLiveness: true
3059 - { id: 0, class: fpr }
3060 - { id: 1, class: fpr }
3061 - { id: 2, class: _ }
3062 - { id: 3, class: fpr }
3063 - { id: 4, class: fpr }
3064 machineFunctionInfo: {}
3069 ; CHECK-LABEL: name: test_v2i64_sle
3070 ; CHECK: liveins: $q0, $q1
3071 ; CHECK-NEXT: {{ $}}
3072 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3073 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3074 ; CHECK-NEXT: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY1]], [[COPY]]
3075 ; CHECK-NEXT: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
3076 ; CHECK-NEXT: $d0 = COPY [[XTNv2i32_]]
3077 ; CHECK-NEXT: RET_ReallyLR implicit $d0
3078 %0:fpr(<2 x s64>) = COPY $q0
3079 %1:fpr(<2 x s64>) = COPY $q1
3080 %4:fpr(<2 x s64>) = G_ICMP intpred(sle), %0(<2 x s64>), %1
3081 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
3082 $d0 = COPY %3(<2 x s32>)
3083 RET_ReallyLR implicit $d0
3087 name: test_v4i32_sle
3090 regBankSelected: true
3091 tracksRegLiveness: true
3093 - { id: 0, class: fpr }
3094 - { id: 1, class: fpr }
3095 - { id: 2, class: _ }
3096 - { id: 3, class: fpr }
3097 - { id: 4, class: fpr }
3098 machineFunctionInfo: {}
3103 ; CHECK-LABEL: name: test_v4i32_sle
3104 ; CHECK: liveins: $q0, $q1
3105 ; CHECK-NEXT: {{ $}}
3106 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3107 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3108 ; CHECK-NEXT: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY1]], [[COPY]]
3109 ; CHECK-NEXT: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
3110 ; CHECK-NEXT: $d0 = COPY [[XTNv4i16_]]
3111 ; CHECK-NEXT: RET_ReallyLR implicit $d0
3112 %0:fpr(<4 x s32>) = COPY $q0
3113 %1:fpr(<4 x s32>) = COPY $q1
3114 %4:fpr(<4 x s32>) = G_ICMP intpred(sle), %0(<4 x s32>), %1
3115 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
3116 $d0 = COPY %3(<4 x s16>)
3117 RET_ReallyLR implicit $d0
3121 name: test_v2i32_sle
3124 regBankSelected: true
3125 tracksRegLiveness: true
3127 - { id: 0, class: fpr }
3128 - { id: 1, class: fpr }
3129 - { id: 2, class: _ }
3130 - { id: 3, class: fpr }
3131 - { id: 4, class: fpr }
3132 machineFunctionInfo: {}
3137 ; CHECK-LABEL: name: test_v2i32_sle
3138 ; CHECK: liveins: $d0, $d1
3139 ; CHECK-NEXT: {{ $}}
3140 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3141 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3142 ; CHECK-NEXT: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY1]], [[COPY]]
3143 ; CHECK-NEXT: $d0 = COPY [[CMGEv2i32_]]
3144 ; CHECK-NEXT: RET_ReallyLR implicit $d0
3145 %0:fpr(<2 x s32>) = COPY $d0
3146 %1:fpr(<2 x s32>) = COPY $d1
3147 %4:fpr(<2 x s32>) = G_ICMP intpred(sle), %0(<2 x s32>), %1
3148 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
3149 $d0 = COPY %3(<2 x s32>)
3150 RET_ReallyLR implicit $d0
3154 name: test_v2i16_sle
3157 regBankSelected: true
3158 tracksRegLiveness: true
3160 - { id: 0, class: _ }
3161 - { id: 1, class: _ }
3162 - { id: 2, class: fpr }
3163 - { id: 3, class: fpr }
3164 - { id: 4, class: _ }
3165 - { id: 5, class: fpr }
3166 - { id: 6, class: _ }
3167 - { id: 7, class: fpr }
3168 - { id: 8, class: fpr }
3169 - { id: 9, class: fpr }
3170 - { id: 10, class: gpr }
3171 - { id: 11, class: fpr }
3172 - { id: 12, class: fpr }
3173 - { id: 13, class: fpr }
3174 - { id: 14, class: gpr }
3175 - { id: 15, class: fpr }
3176 - { id: 16, class: fpr }
3177 - { id: 17, class: fpr }
3178 machineFunctionInfo: {}
3183 ; CHECK-LABEL: name: test_v2i16_sle
3184 ; CHECK: liveins: $d0, $d1
3185 ; CHECK-NEXT: {{ $}}
3186 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3187 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3188 ; CHECK-NEXT: [[MOVIv2i32_:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0
3189 ; CHECK-NEXT: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
3190 ; CHECK-NEXT: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_]]
3191 ; CHECK-NEXT: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
3192 ; CHECK-NEXT: [[MOVIv2i32_1:%[0-9]+]]:fpr64 = MOVIv2i32 16, 0
3193 ; CHECK-NEXT: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
3194 ; CHECK-NEXT: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[MOVIv2i32_1]]
3195 ; CHECK-NEXT: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
3196 ; CHECK-NEXT: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
3197 ; CHECK-NEXT: $d0 = COPY [[CMGEv2i32_]]
3198 ; CHECK-NEXT: RET_ReallyLR implicit $d0
3199 %2:fpr(<2 x s32>) = COPY $d0
3200 %3:fpr(<2 x s32>) = COPY $d1
3201 %14:gpr(s32) = G_CONSTANT i32 16
3202 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
3203 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
3204 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
3205 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
3206 %10:gpr(s32) = G_CONSTANT i32 16
3207 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
3208 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
3209 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
3210 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
3211 %9:fpr(<2 x s32>) = G_ICMP intpred(sle), %7(<2 x s32>), %8
3212 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
3213 $d0 = COPY %5(<2 x s32>)
3214 RET_ReallyLR implicit $d0
3218 name: test_v8i16_sle
3221 regBankSelected: true
3222 tracksRegLiveness: true
3224 - { id: 0, class: fpr }
3225 - { id: 1, class: fpr }
3226 - { id: 2, class: _ }
3227 - { id: 3, class: fpr }
3228 - { id: 4, class: fpr }
3229 machineFunctionInfo: {}
3234 ; CHECK-LABEL: name: test_v8i16_sle
3235 ; CHECK: liveins: $q0, $q1
3236 ; CHECK-NEXT: {{ $}}
3237 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3238 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3239 ; CHECK-NEXT: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY1]], [[COPY]]
3240 ; CHECK-NEXT: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
3241 ; CHECK-NEXT: $d0 = COPY [[XTNv8i8_]]
3242 ; CHECK-NEXT: RET_ReallyLR implicit $d0
3243 %0:fpr(<8 x s16>) = COPY $q0
3244 %1:fpr(<8 x s16>) = COPY $q1
3245 %4:fpr(<8 x s16>) = G_ICMP intpred(sle), %0(<8 x s16>), %1
3246 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
3247 $d0 = COPY %3(<8 x s8>)
3248 RET_ReallyLR implicit $d0
3252 name: test_v4i16_sle
3255 regBankSelected: true
3256 tracksRegLiveness: true
3258 - { id: 0, class: fpr }
3259 - { id: 1, class: fpr }
3260 - { id: 2, class: _ }
3261 - { id: 3, class: fpr }
3262 - { id: 4, class: fpr }
3263 machineFunctionInfo: {}
3268 ; CHECK-LABEL: name: test_v4i16_sle
3269 ; CHECK: liveins: $d0, $d1
3270 ; CHECK-NEXT: {{ $}}
3271 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3272 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3273 ; CHECK-NEXT: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY1]], [[COPY]]
3274 ; CHECK-NEXT: $d0 = COPY [[CMGEv4i16_]]
3275 ; CHECK-NEXT: RET_ReallyLR implicit $d0
3276 %0:fpr(<4 x s16>) = COPY $d0
3277 %1:fpr(<4 x s16>) = COPY $d1
3278 %4:fpr(<4 x s16>) = G_ICMP intpred(sle), %0(<4 x s16>), %1
3279 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
3280 $d0 = COPY %3(<4 x s16>)
3281 RET_ReallyLR implicit $d0
3285 name: test_v16i8_sle
3288 regBankSelected: true
3289 tracksRegLiveness: true
3291 - { id: 0, class: fpr }
3292 - { id: 1, class: fpr }
3293 - { id: 2, class: _ }
3294 - { id: 3, class: fpr }
3295 - { id: 4, class: fpr }
3296 machineFunctionInfo: {}
3301 ; CHECK-LABEL: name: test_v16i8_sle
3302 ; CHECK: liveins: $q0, $q1
3303 ; CHECK-NEXT: {{ $}}
3304 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3305 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3306 ; CHECK-NEXT: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY1]], [[COPY]]
3307 ; CHECK-NEXT: $q0 = COPY [[CMGEv16i8_]]
3308 ; CHECK-NEXT: RET_ReallyLR implicit $q0
3309 %0:fpr(<16 x s8>) = COPY $q0
3310 %1:fpr(<16 x s8>) = COPY $q1
3311 %4:fpr(<16 x s8>) = G_ICMP intpred(sle), %0(<16 x s8>), %1
3312 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
3313 $q0 = COPY %3(<16 x s8>)
3314 RET_ReallyLR implicit $q0
3321 regBankSelected: true
3322 tracksRegLiveness: true
3324 - { id: 0, class: fpr }
3325 - { id: 1, class: fpr }
3326 - { id: 2, class: _ }
3327 - { id: 3, class: fpr }
3328 - { id: 4, class: fpr }
3329 machineFunctionInfo: {}
3334 ; CHECK-LABEL: name: test_v8i8_sle
3335 ; CHECK: liveins: $d0, $d1
3336 ; CHECK-NEXT: {{ $}}
3337 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3338 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3339 ; CHECK-NEXT: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY1]], [[COPY]]
3340 ; CHECK-NEXT: $d0 = COPY [[CMGEv8i8_]]
3341 ; CHECK-NEXT: RET_ReallyLR implicit $d0
3342 %0:fpr(<8 x s8>) = COPY $d0
3343 %1:fpr(<8 x s8>) = COPY $d1
3344 %4:fpr(<8 x s8>) = G_ICMP intpred(sle), %0(<8 x s8>), %1
3345 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
3346 $d0 = COPY %3(<8 x s8>)
3347 RET_ReallyLR implicit $d0