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 ; ModuleID = 'icmp-autogen-tests-with-ne.ll'
6 source_filename = "icmp-autogen-tests-with-ne.ll"
7 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
8 target triple = "aarch64"
10 define <2 x i1> @test_v2i64_eq(<2 x i64> %v1, <2 x i64> %v2) {
11 %cmp = icmp eq <2 x i64> %v1, %v2
15 define <4 x i1> @test_v4i32_eq(<4 x i32> %v1, <4 x i32> %v2) {
16 %cmp = icmp eq <4 x i32> %v1, %v2
20 define <2 x i1> @test_v2i32_eq(<2 x i32> %v1, <2 x i32> %v2) {
21 %cmp = icmp eq <2 x i32> %v1, %v2
25 define <2 x i1> @test_v2i16_eq(<2 x i16> %v1, <2 x i16> %v2) {
26 %cmp = icmp eq <2 x i16> %v1, %v2
30 define <8 x i1> @test_v8i16_eq(<8 x i16> %v1, <8 x i16> %v2) {
31 %cmp = icmp eq <8 x i16> %v1, %v2
35 define <4 x i1> @test_v4i16_eq(<4 x i16> %v1, <4 x i16> %v2) {
36 %cmp = icmp eq <4 x i16> %v1, %v2
40 define <16 x i1> @test_v16i8_eq(<16 x i8> %v1, <16 x i8> %v2) {
41 %cmp = icmp eq <16 x i8> %v1, %v2
45 define <8 x i1> @test_v8i8_eq(<8 x i8> %v1, <8 x i8> %v2) {
46 %cmp = icmp eq <8 x i8> %v1, %v2
50 define <2 x i1> @test_v2i64_ne(<2 x i64> %v1, <2 x i64> %v2) {
51 %cmp = icmp ne <2 x i64> %v1, %v2
55 define <4 x i1> @test_v4i32_ne(<4 x i32> %v1, <4 x i32> %v2) {
56 %cmp = icmp ne <4 x i32> %v1, %v2
60 define <2 x i1> @test_v2i32_ne(<2 x i32> %v1, <2 x i32> %v2) {
61 %cmp = icmp ne <2 x i32> %v1, %v2
65 define <2 x i1> @test_v2i16_ne(<2 x i16> %v1, <2 x i16> %v2) {
66 %cmp = icmp ne <2 x i16> %v1, %v2
70 define <8 x i1> @test_v8i16_ne(<8 x i16> %v1, <8 x i16> %v2) {
71 %cmp = icmp ne <8 x i16> %v1, %v2
75 define <4 x i1> @test_v4i16_ne(<4 x i16> %v1, <4 x i16> %v2) {
76 %cmp = icmp ne <4 x i16> %v1, %v2
80 define <16 x i1> @test_v16i8_ne(<16 x i8> %v1, <16 x i8> %v2) {
81 %cmp = icmp ne <16 x i8> %v1, %v2
85 define <8 x i1> @test_v8i8_ne(<8 x i8> %v1, <8 x i8> %v2) {
86 %cmp = icmp ne <8 x i8> %v1, %v2
90 define <2 x i1> @test_v2i64_ugt(<2 x i64> %v1, <2 x i64> %v2) {
91 %cmp = icmp ugt <2 x i64> %v1, %v2
95 define <4 x i1> @test_v4i32_ugt(<4 x i32> %v1, <4 x i32> %v2) {
96 %cmp = icmp ugt <4 x i32> %v1, %v2
100 define <2 x i1> @test_v2i32_ugt(<2 x i32> %v1, <2 x i32> %v2) {
101 %cmp = icmp ugt <2 x i32> %v1, %v2
105 define <2 x i1> @test_v2i16_ugt(<2 x i16> %v1, <2 x i16> %v2) {
106 %cmp = icmp ugt <2 x i16> %v1, %v2
110 define <8 x i1> @test_v8i16_ugt(<8 x i16> %v1, <8 x i16> %v2) {
111 %cmp = icmp ugt <8 x i16> %v1, %v2
115 define <4 x i1> @test_v4i16_ugt(<4 x i16> %v1, <4 x i16> %v2) {
116 %cmp = icmp ugt <4 x i16> %v1, %v2
120 define <16 x i1> @test_v16i8_ugt(<16 x i8> %v1, <16 x i8> %v2) {
121 %cmp = icmp ugt <16 x i8> %v1, %v2
125 define <8 x i1> @test_v8i8_ugt(<8 x i8> %v1, <8 x i8> %v2) {
126 %cmp = icmp ugt <8 x i8> %v1, %v2
130 define <2 x i1> @test_v2i64_uge(<2 x i64> %v1, <2 x i64> %v2) {
131 %cmp = icmp uge <2 x i64> %v1, %v2
135 define <4 x i1> @test_v4i32_uge(<4 x i32> %v1, <4 x i32> %v2) {
136 %cmp = icmp uge <4 x i32> %v1, %v2
140 define <2 x i1> @test_v2i32_uge(<2 x i32> %v1, <2 x i32> %v2) {
141 %cmp = icmp uge <2 x i32> %v1, %v2
145 define <2 x i1> @test_v2i16_uge(<2 x i16> %v1, <2 x i16> %v2) {
146 %cmp = icmp uge <2 x i16> %v1, %v2
150 define <8 x i1> @test_v8i16_uge(<8 x i16> %v1, <8 x i16> %v2) {
151 %cmp = icmp uge <8 x i16> %v1, %v2
155 define <4 x i1> @test_v4i16_uge(<4 x i16> %v1, <4 x i16> %v2) {
156 %cmp = icmp uge <4 x i16> %v1, %v2
160 define <16 x i1> @test_v16i8_uge(<16 x i8> %v1, <16 x i8> %v2) {
161 %cmp = icmp uge <16 x i8> %v1, %v2
165 define <8 x i1> @test_v8i8_uge(<8 x i8> %v1, <8 x i8> %v2) {
166 %cmp = icmp uge <8 x i8> %v1, %v2
170 define <2 x i1> @test_v2i64_ult(<2 x i64> %v1, <2 x i64> %v2) {
171 %cmp = icmp ult <2 x i64> %v1, %v2
175 define <4 x i1> @test_v4i32_ult(<4 x i32> %v1, <4 x i32> %v2) {
176 %cmp = icmp ult <4 x i32> %v1, %v2
180 define <2 x i1> @test_v2i32_ult(<2 x i32> %v1, <2 x i32> %v2) {
181 %cmp = icmp ult <2 x i32> %v1, %v2
185 define <2 x i1> @test_v2i16_ult(<2 x i16> %v1, <2 x i16> %v2) {
186 %cmp = icmp ult <2 x i16> %v1, %v2
190 define <8 x i1> @test_v8i16_ult(<8 x i16> %v1, <8 x i16> %v2) {
191 %cmp = icmp ult <8 x i16> %v1, %v2
195 define <4 x i1> @test_v4i16_ult(<4 x i16> %v1, <4 x i16> %v2) {
196 %cmp = icmp ult <4 x i16> %v1, %v2
200 define <16 x i1> @test_v16i8_ult(<16 x i8> %v1, <16 x i8> %v2) {
201 %cmp = icmp ult <16 x i8> %v1, %v2
205 define <8 x i1> @test_v8i8_ult(<8 x i8> %v1, <8 x i8> %v2) {
206 %cmp = icmp ult <8 x i8> %v1, %v2
210 define <2 x i1> @test_v2i64_ule(<2 x i64> %v1, <2 x i64> %v2) {
211 %cmp = icmp ule <2 x i64> %v1, %v2
215 define <4 x i1> @test_v4i32_ule(<4 x i32> %v1, <4 x i32> %v2) {
216 %cmp = icmp ule <4 x i32> %v1, %v2
220 define <2 x i1> @test_v2i32_ule(<2 x i32> %v1, <2 x i32> %v2) {
221 %cmp = icmp ule <2 x i32> %v1, %v2
225 define <2 x i1> @test_v2i16_ule(<2 x i16> %v1, <2 x i16> %v2) {
226 %cmp = icmp ule <2 x i16> %v1, %v2
230 define <8 x i1> @test_v8i16_ule(<8 x i16> %v1, <8 x i16> %v2) {
231 %cmp = icmp ule <8 x i16> %v1, %v2
235 define <4 x i1> @test_v4i16_ule(<4 x i16> %v1, <4 x i16> %v2) {
236 %cmp = icmp ule <4 x i16> %v1, %v2
240 define <16 x i1> @test_v16i8_ule(<16 x i8> %v1, <16 x i8> %v2) {
241 %cmp = icmp ule <16 x i8> %v1, %v2
245 define <8 x i1> @test_v8i8_ule(<8 x i8> %v1, <8 x i8> %v2) {
246 %cmp = icmp ule <8 x i8> %v1, %v2
250 define <2 x i1> @test_v2i64_sgt(<2 x i64> %v1, <2 x i64> %v2) {
251 %cmp = icmp sgt <2 x i64> %v1, %v2
255 define <4 x i1> @test_v4i32_sgt(<4 x i32> %v1, <4 x i32> %v2) {
256 %cmp = icmp sgt <4 x i32> %v1, %v2
260 define <2 x i1> @test_v2i32_sgt(<2 x i32> %v1, <2 x i32> %v2) {
261 %cmp = icmp sgt <2 x i32> %v1, %v2
265 define <2 x i1> @test_v2i16_sgt(<2 x i16> %v1, <2 x i16> %v2) {
266 %cmp = icmp sgt <2 x i16> %v1, %v2
270 define <8 x i1> @test_v8i16_sgt(<8 x i16> %v1, <8 x i16> %v2) {
271 %cmp = icmp sgt <8 x i16> %v1, %v2
275 define <4 x i1> @test_v4i16_sgt(<4 x i16> %v1, <4 x i16> %v2) {
276 %cmp = icmp sgt <4 x i16> %v1, %v2
280 define <16 x i1> @test_v16i8_sgt(<16 x i8> %v1, <16 x i8> %v2) {
281 %cmp = icmp sgt <16 x i8> %v1, %v2
285 define <8 x i1> @test_v8i8_sgt(<8 x i8> %v1, <8 x i8> %v2) {
286 %cmp = icmp sgt <8 x i8> %v1, %v2
290 define <2 x i1> @test_v2i64_sge(<2 x i64> %v1, <2 x i64> %v2) {
291 %cmp = icmp sge <2 x i64> %v1, %v2
295 define <4 x i1> @test_v4i32_sge(<4 x i32> %v1, <4 x i32> %v2) {
296 %cmp = icmp sge <4 x i32> %v1, %v2
300 define <2 x i1> @test_v2i32_sge(<2 x i32> %v1, <2 x i32> %v2) {
301 %cmp = icmp sge <2 x i32> %v1, %v2
305 define <2 x i1> @test_v2i16_sge(<2 x i16> %v1, <2 x i16> %v2) {
306 %cmp = icmp sge <2 x i16> %v1, %v2
310 define <8 x i1> @test_v8i16_sge(<8 x i16> %v1, <8 x i16> %v2) {
311 %cmp = icmp sge <8 x i16> %v1, %v2
315 define <4 x i1> @test_v4i16_sge(<4 x i16> %v1, <4 x i16> %v2) {
316 %cmp = icmp sge <4 x i16> %v1, %v2
320 define <16 x i1> @test_v16i8_sge(<16 x i8> %v1, <16 x i8> %v2) {
321 %cmp = icmp sge <16 x i8> %v1, %v2
325 define <8 x i1> @test_v8i8_sge(<8 x i8> %v1, <8 x i8> %v2) {
326 %cmp = icmp sge <8 x i8> %v1, %v2
330 define <2 x i1> @test_v2i64_slt(<2 x i64> %v1, <2 x i64> %v2) {
331 %cmp = icmp slt <2 x i64> %v1, %v2
335 define <4 x i1> @test_v4i32_slt(<4 x i32> %v1, <4 x i32> %v2) {
336 %cmp = icmp slt <4 x i32> %v1, %v2
340 define <2 x i1> @test_v2i32_slt(<2 x i32> %v1, <2 x i32> %v2) {
341 %cmp = icmp slt <2 x i32> %v1, %v2
345 define <2 x i1> @test_v2i16_slt(<2 x i16> %v1, <2 x i16> %v2) {
346 %cmp = icmp slt <2 x i16> %v1, %v2
350 define <8 x i1> @test_v8i16_slt(<8 x i16> %v1, <8 x i16> %v2) {
351 %cmp = icmp slt <8 x i16> %v1, %v2
355 define <4 x i1> @test_v4i16_slt(<4 x i16> %v1, <4 x i16> %v2) {
356 %cmp = icmp slt <4 x i16> %v1, %v2
360 define <16 x i1> @test_v16i8_slt(<16 x i8> %v1, <16 x i8> %v2) {
361 %cmp = icmp slt <16 x i8> %v1, %v2
365 define <8 x i1> @test_v8i8_slt(<8 x i8> %v1, <8 x i8> %v2) {
366 %cmp = icmp slt <8 x i8> %v1, %v2
370 define <2 x i1> @test_v2i64_sle(<2 x i64> %v1, <2 x i64> %v2) {
371 %cmp = icmp sle <2 x i64> %v1, %v2
375 define <4 x i1> @test_v4i32_sle(<4 x i32> %v1, <4 x i32> %v2) {
376 %cmp = icmp sle <4 x i32> %v1, %v2
380 define <2 x i1> @test_v2i32_sle(<2 x i32> %v1, <2 x i32> %v2) {
381 %cmp = icmp sle <2 x i32> %v1, %v2
385 define <2 x i1> @test_v2i16_sle(<2 x i16> %v1, <2 x i16> %v2) {
386 %cmp = icmp sle <2 x i16> %v1, %v2
390 define <8 x i1> @test_v8i16_sle(<8 x i16> %v1, <8 x i16> %v2) {
391 %cmp = icmp sle <8 x i16> %v1, %v2
395 define <4 x i1> @test_v4i16_sle(<4 x i16> %v1, <4 x i16> %v2) {
396 %cmp = icmp sle <4 x i16> %v1, %v2
400 define <16 x i1> @test_v16i8_sle(<16 x i8> %v1, <16 x i8> %v2) {
401 %cmp = icmp sle <16 x i8> %v1, %v2
405 define <8 x i1> @test_v8i8_sle(<8 x i8> %v1, <8 x i8> %v2) {
406 %cmp = icmp sle <8 x i8> %v1, %v2
415 regBankSelected: true
416 tracksRegLiveness: true
418 - { id: 0, class: fpr }
419 - { id: 1, class: fpr }
420 - { id: 2, class: _ }
421 - { id: 3, class: fpr }
422 - { id: 4, class: fpr }
423 machineFunctionInfo: {}
428 ; CHECK-LABEL: name: test_v2i64_eq
429 ; CHECK: liveins: $q0, $q1
430 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
431 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
432 ; CHECK: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
433 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMEQv2i64_]]
434 ; CHECK: $d0 = COPY [[XTNv2i32_]]
435 ; CHECK: 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
463 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
464 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
465 ; CHECK: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
466 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMEQv4i32_]]
467 ; CHECK: $d0 = COPY [[XTNv4i16_]]
468 ; CHECK: RET_ReallyLR implicit $d0
469 %0:fpr(<4 x s32>) = COPY $q0
470 %1:fpr(<4 x s32>) = COPY $q1
471 %4:fpr(<4 x s32>) = G_ICMP intpred(eq), %0(<4 x s32>), %1
472 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
473 $d0 = COPY %3(<4 x s16>)
474 RET_ReallyLR implicit $d0
481 regBankSelected: true
482 tracksRegLiveness: true
484 - { id: 0, class: fpr }
485 - { id: 1, class: fpr }
486 - { id: 2, class: _ }
487 - { id: 3, class: fpr }
488 - { id: 4, class: fpr }
489 machineFunctionInfo: {}
494 ; CHECK-LABEL: name: test_v2i32_eq
495 ; CHECK: liveins: $d0, $d1
496 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
497 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
498 ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
499 ; CHECK: $d0 = COPY [[CMEQv2i32_]]
500 ; CHECK: RET_ReallyLR implicit $d0
501 %0:fpr(<2 x s32>) = COPY $d0
502 %1:fpr(<2 x s32>) = COPY $d1
503 %4:fpr(<2 x s32>) = G_ICMP intpred(eq), %0(<2 x s32>), %1
504 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
505 $d0 = COPY %3(<2 x s32>)
506 RET_ReallyLR implicit $d0
513 regBankSelected: true
514 tracksRegLiveness: true
516 - { id: 0, class: _ }
517 - { id: 1, class: _ }
518 - { id: 2, class: fpr }
519 - { id: 3, class: fpr }
520 - { id: 4, class: _ }
521 - { id: 5, class: fpr }
522 - { id: 6, class: _ }
523 - { id: 7, class: fpr }
524 - { id: 8, class: fpr }
525 - { id: 9, class: fpr }
526 - { id: 10, class: gpr }
527 - { id: 11, class: fpr }
528 - { id: 12, class: fpr }
529 - { id: 13, class: gpr }
530 - { id: 14, class: fpr }
531 - { id: 15, class: fpr }
532 machineFunctionInfo: {}
537 ; CHECK-LABEL: name: test_v2i16_eq
538 ; CHECK: liveins: $d0, $d1
539 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
540 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
541 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
542 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
543 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
544 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
545 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
546 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
547 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
548 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
549 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
550 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
551 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
552 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
553 ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
554 ; CHECK: $d0 = COPY [[CMEQv2i32_]]
555 ; CHECK: RET_ReallyLR implicit $d0
556 %2:fpr(<2 x s32>) = COPY $d0
557 %3:fpr(<2 x s32>) = COPY $d1
558 %13:gpr(s32) = G_CONSTANT i32 65535
559 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
560 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
561 %7:fpr(<2 x s32>) = G_AND %15, %14
562 %10:gpr(s32) = G_CONSTANT i32 65535
563 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
564 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
565 %8:fpr(<2 x s32>) = G_AND %12, %11
566 %9:fpr(<2 x s32>) = G_ICMP intpred(eq), %7(<2 x s32>), %8
567 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
568 $d0 = COPY %5(<2 x s32>)
569 RET_ReallyLR implicit $d0
576 regBankSelected: true
577 tracksRegLiveness: true
579 - { id: 0, class: fpr }
580 - { id: 1, class: fpr }
581 - { id: 2, class: _ }
582 - { id: 3, class: fpr }
583 - { id: 4, class: fpr }
584 machineFunctionInfo: {}
589 ; CHECK-LABEL: name: test_v8i16_eq
590 ; CHECK: liveins: $q0, $q1
591 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
592 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
593 ; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
594 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMEQv8i16_]]
595 ; CHECK: $d0 = COPY [[XTNv8i8_]]
596 ; CHECK: RET_ReallyLR implicit $d0
597 %0:fpr(<8 x s16>) = COPY $q0
598 %1:fpr(<8 x s16>) = COPY $q1
599 %4:fpr(<8 x s16>) = G_ICMP intpred(eq), %0(<8 x s16>), %1
600 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
601 $d0 = COPY %3(<8 x s8>)
602 RET_ReallyLR implicit $d0
609 regBankSelected: true
610 tracksRegLiveness: true
612 - { id: 0, class: fpr }
613 - { id: 1, class: fpr }
614 - { id: 2, class: _ }
615 - { id: 3, class: fpr }
616 - { id: 4, class: fpr }
617 machineFunctionInfo: {}
622 ; CHECK-LABEL: name: test_v4i16_eq
623 ; CHECK: liveins: $d0, $d1
624 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
625 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
626 ; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
627 ; CHECK: $d0 = COPY [[CMEQv4i16_]]
628 ; CHECK: RET_ReallyLR implicit $d0
629 %0:fpr(<4 x s16>) = COPY $d0
630 %1:fpr(<4 x s16>) = COPY $d1
631 %4:fpr(<4 x s16>) = G_ICMP intpred(eq), %0(<4 x s16>), %1
632 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
633 $d0 = COPY %3(<4 x s16>)
634 RET_ReallyLR implicit $d0
641 regBankSelected: true
642 tracksRegLiveness: true
644 - { id: 0, class: fpr }
645 - { id: 1, class: fpr }
646 - { id: 2, class: _ }
647 - { id: 3, class: fpr }
648 - { id: 4, class: fpr }
649 machineFunctionInfo: {}
654 ; CHECK-LABEL: name: test_v16i8_eq
655 ; CHECK: liveins: $q0, $q1
656 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
657 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
658 ; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
659 ; CHECK: $q0 = COPY [[CMEQv16i8_]]
660 ; CHECK: RET_ReallyLR implicit $q0
661 %0:fpr(<16 x s8>) = COPY $q0
662 %1:fpr(<16 x s8>) = COPY $q1
663 %4:fpr(<16 x s8>) = G_ICMP intpred(eq), %0(<16 x s8>), %1
664 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
665 $q0 = COPY %3(<16 x s8>)
666 RET_ReallyLR implicit $q0
673 regBankSelected: true
674 tracksRegLiveness: true
676 - { id: 0, class: fpr }
677 - { id: 1, class: fpr }
678 - { id: 2, class: _ }
679 - { id: 3, class: fpr }
680 - { id: 4, class: fpr }
681 machineFunctionInfo: {}
686 ; CHECK-LABEL: name: test_v8i8_eq
687 ; CHECK: liveins: $d0, $d1
688 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
689 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
690 ; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
691 ; CHECK: $d0 = COPY [[CMEQv8i8_]]
692 ; CHECK: RET_ReallyLR implicit $d0
693 %0:fpr(<8 x s8>) = COPY $d0
694 %1:fpr(<8 x s8>) = COPY $d1
695 %4:fpr(<8 x s8>) = G_ICMP intpred(eq), %0(<8 x s8>), %1
696 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
697 $d0 = COPY %3(<8 x s8>)
698 RET_ReallyLR implicit $d0
705 regBankSelected: true
706 tracksRegLiveness: true
708 - { id: 0, class: fpr }
709 - { id: 1, class: fpr }
710 - { id: 2, class: _ }
711 - { id: 3, class: fpr }
712 - { id: 4, class: fpr }
713 machineFunctionInfo: {}
718 ; CHECK-LABEL: name: test_v2i64_ne
719 ; CHECK: liveins: $q0, $q1
720 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
721 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
722 ; CHECK: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
723 ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv2i64_]]
724 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[NOTv16i8_]]
725 ; CHECK: $d0 = COPY [[XTNv2i32_]]
726 ; CHECK: 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
754 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
755 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
756 ; CHECK: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
757 ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv4i32_]]
758 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[NOTv16i8_]]
759 ; CHECK: $d0 = COPY [[XTNv4i16_]]
760 ; CHECK: RET_ReallyLR implicit $d0
761 %0:fpr(<4 x s32>) = COPY $q0
762 %1:fpr(<4 x s32>) = COPY $q1
763 %4:fpr(<4 x s32>) = G_ICMP intpred(ne), %0(<4 x s32>), %1
764 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
765 $d0 = COPY %3(<4 x s16>)
766 RET_ReallyLR implicit $d0
773 regBankSelected: true
774 tracksRegLiveness: true
776 - { id: 0, class: fpr }
777 - { id: 1, class: fpr }
778 - { id: 2, class: _ }
779 - { id: 3, class: fpr }
780 - { id: 4, class: fpr }
781 machineFunctionInfo: {}
786 ; CHECK-LABEL: name: test_v2i32_ne
787 ; CHECK: liveins: $d0, $d1
788 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
789 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
790 ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
791 ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
792 ; CHECK: $d0 = COPY [[NOTv8i8_]]
793 ; CHECK: RET_ReallyLR implicit $d0
794 %0:fpr(<2 x s32>) = COPY $d0
795 %1:fpr(<2 x s32>) = COPY $d1
796 %4:fpr(<2 x s32>) = G_ICMP intpred(ne), %0(<2 x s32>), %1
797 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
798 $d0 = COPY %3(<2 x s32>)
799 RET_ReallyLR implicit $d0
806 regBankSelected: true
807 tracksRegLiveness: true
809 - { id: 0, class: _ }
810 - { id: 1, class: _ }
811 - { id: 2, class: fpr }
812 - { id: 3, class: fpr }
813 - { id: 4, class: _ }
814 - { id: 5, class: fpr }
815 - { id: 6, class: _ }
816 - { id: 7, class: fpr }
817 - { id: 8, class: fpr }
818 - { id: 9, class: fpr }
819 - { id: 10, class: gpr }
820 - { id: 11, class: fpr }
821 - { id: 12, class: fpr }
822 - { id: 13, class: gpr }
823 - { id: 14, class: fpr }
824 - { id: 15, class: fpr }
825 machineFunctionInfo: {}
830 ; CHECK-LABEL: name: test_v2i16_ne
831 ; CHECK: liveins: $d0, $d1
832 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
833 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
834 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
835 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
836 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
837 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
838 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
839 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
840 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
841 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
842 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
843 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
844 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
845 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
846 ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
847 ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
848 ; CHECK: $d0 = COPY [[NOTv8i8_]]
849 ; CHECK: RET_ReallyLR implicit $d0
850 %2:fpr(<2 x s32>) = COPY $d0
851 %3:fpr(<2 x s32>) = COPY $d1
852 %13:gpr(s32) = G_CONSTANT i32 65535
853 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
854 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
855 %7:fpr(<2 x s32>) = G_AND %15, %14
856 %10:gpr(s32) = G_CONSTANT i32 65535
857 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
858 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
859 %8:fpr(<2 x s32>) = G_AND %12, %11
860 %9:fpr(<2 x s32>) = G_ICMP intpred(ne), %7(<2 x s32>), %8
861 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
862 $d0 = COPY %5(<2 x s32>)
863 RET_ReallyLR implicit $d0
870 regBankSelected: true
871 tracksRegLiveness: true
873 - { id: 0, class: fpr }
874 - { id: 1, class: fpr }
875 - { id: 2, class: _ }
876 - { id: 3, class: fpr }
877 - { id: 4, class: fpr }
878 machineFunctionInfo: {}
883 ; CHECK-LABEL: name: test_v8i16_ne
884 ; CHECK: liveins: $q0, $q1
885 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
886 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
887 ; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
888 ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv8i16_]]
889 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[NOTv16i8_]]
890 ; CHECK: $d0 = COPY [[XTNv8i8_]]
891 ; CHECK: RET_ReallyLR implicit $d0
892 %0:fpr(<8 x s16>) = COPY $q0
893 %1:fpr(<8 x s16>) = COPY $q1
894 %4:fpr(<8 x s16>) = G_ICMP intpred(ne), %0(<8 x s16>), %1
895 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
896 $d0 = COPY %3(<8 x s8>)
897 RET_ReallyLR implicit $d0
904 regBankSelected: true
905 tracksRegLiveness: true
907 - { id: 0, class: fpr }
908 - { id: 1, class: fpr }
909 - { id: 2, class: _ }
910 - { id: 3, class: fpr }
911 - { id: 4, class: fpr }
912 machineFunctionInfo: {}
917 ; CHECK-LABEL: name: test_v4i16_ne
918 ; CHECK: liveins: $d0, $d1
919 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
920 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
921 ; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
922 ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv4i16_]]
923 ; CHECK: $d0 = COPY [[NOTv8i8_]]
924 ; CHECK: RET_ReallyLR implicit $d0
925 %0:fpr(<4 x s16>) = COPY $d0
926 %1:fpr(<4 x s16>) = COPY $d1
927 %4:fpr(<4 x s16>) = G_ICMP intpred(ne), %0(<4 x s16>), %1
928 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
929 $d0 = COPY %3(<4 x s16>)
930 RET_ReallyLR implicit $d0
937 regBankSelected: true
938 tracksRegLiveness: true
940 - { id: 0, class: fpr }
941 - { id: 1, class: fpr }
942 - { id: 2, class: _ }
943 - { id: 3, class: fpr }
944 - { id: 4, class: fpr }
945 machineFunctionInfo: {}
950 ; CHECK-LABEL: name: test_v16i8_ne
951 ; CHECK: liveins: $q0, $q1
952 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
953 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
954 ; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
955 ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv16i8_]]
956 ; CHECK: $q0 = COPY [[NOTv16i8_]]
957 ; CHECK: RET_ReallyLR implicit $q0
958 %0:fpr(<16 x s8>) = COPY $q0
959 %1:fpr(<16 x s8>) = COPY $q1
960 %4:fpr(<16 x s8>) = G_ICMP intpred(ne), %0(<16 x s8>), %1
961 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
962 $q0 = COPY %3(<16 x s8>)
963 RET_ReallyLR implicit $q0
970 regBankSelected: true
971 tracksRegLiveness: true
973 - { id: 0, class: fpr }
974 - { id: 1, class: fpr }
975 - { id: 2, class: _ }
976 - { id: 3, class: fpr }
977 - { id: 4, class: fpr }
978 machineFunctionInfo: {}
983 ; CHECK-LABEL: name: test_v8i8_ne
984 ; CHECK: liveins: $d0, $d1
985 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
986 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
987 ; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
988 ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv8i8_]]
989 ; CHECK: $d0 = COPY [[NOTv8i8_]]
990 ; CHECK: RET_ReallyLR implicit $d0
991 %0:fpr(<8 x s8>) = COPY $d0
992 %1:fpr(<8 x s8>) = COPY $d1
993 %4:fpr(<8 x s8>) = G_ICMP intpred(ne), %0(<8 x s8>), %1
994 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
995 $d0 = COPY %3(<8 x s8>)
996 RET_ReallyLR implicit $d0
1000 name: test_v2i64_ugt
1003 regBankSelected: true
1004 tracksRegLiveness: true
1006 - { id: 0, class: fpr }
1007 - { id: 1, class: fpr }
1008 - { id: 2, class: _ }
1009 - { id: 3, class: fpr }
1010 - { id: 4, class: fpr }
1011 machineFunctionInfo: {}
1016 ; CHECK-LABEL: name: test_v2i64_ugt
1017 ; CHECK: liveins: $q0, $q1
1018 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1019 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1020 ; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY]], [[COPY1]]
1021 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1022 ; CHECK: $d0 = COPY [[XTNv2i32_]]
1023 ; CHECK: 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: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1052 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1053 ; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY]], [[COPY1]]
1054 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1055 ; CHECK: $d0 = COPY [[XTNv4i16_]]
1056 ; CHECK: RET_ReallyLR implicit $d0
1057 %0:fpr(<4 x s32>) = COPY $q0
1058 %1:fpr(<4 x s32>) = COPY $q1
1059 %4:fpr(<4 x s32>) = G_ICMP intpred(ugt), %0(<4 x s32>), %1
1060 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1061 $d0 = COPY %3(<4 x s16>)
1062 RET_ReallyLR implicit $d0
1066 name: test_v2i32_ugt
1069 regBankSelected: true
1070 tracksRegLiveness: true
1072 - { id: 0, class: fpr }
1073 - { id: 1, class: fpr }
1074 - { id: 2, class: _ }
1075 - { id: 3, class: fpr }
1076 - { id: 4, class: fpr }
1077 machineFunctionInfo: {}
1082 ; CHECK-LABEL: name: test_v2i32_ugt
1083 ; CHECK: liveins: $d0, $d1
1084 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1085 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1086 ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY]], [[COPY1]]
1087 ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1088 ; CHECK: RET_ReallyLR implicit $d0
1089 %0:fpr(<2 x s32>) = COPY $d0
1090 %1:fpr(<2 x s32>) = COPY $d1
1091 %4:fpr(<2 x s32>) = G_ICMP intpred(ugt), %0(<2 x s32>), %1
1092 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1093 $d0 = COPY %3(<2 x s32>)
1094 RET_ReallyLR implicit $d0
1098 name: test_v2i16_ugt
1101 regBankSelected: true
1102 tracksRegLiveness: true
1104 - { id: 0, class: _ }
1105 - { id: 1, class: _ }
1106 - { id: 2, class: fpr }
1107 - { id: 3, class: fpr }
1108 - { id: 4, class: _ }
1109 - { id: 5, class: fpr }
1110 - { id: 6, class: _ }
1111 - { id: 7, class: fpr }
1112 - { id: 8, class: fpr }
1113 - { id: 9, class: fpr }
1114 - { id: 10, class: gpr }
1115 - { id: 11, class: fpr }
1116 - { id: 12, class: fpr }
1117 - { id: 13, class: gpr }
1118 - { id: 14, class: fpr }
1119 - { id: 15, class: fpr }
1120 machineFunctionInfo: {}
1125 ; CHECK-LABEL: name: test_v2i16_ugt
1126 ; CHECK: liveins: $d0, $d1
1127 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1128 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1129 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
1130 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1131 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
1132 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
1133 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
1134 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
1135 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
1136 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1137 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
1138 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
1139 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
1140 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
1141 ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1142 ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1143 ; CHECK: RET_ReallyLR implicit $d0
1144 %2:fpr(<2 x s32>) = COPY $d0
1145 %3:fpr(<2 x s32>) = COPY $d1
1146 %13:gpr(s32) = G_CONSTANT i32 65535
1147 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1148 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1149 %7:fpr(<2 x s32>) = G_AND %15, %14
1150 %10:gpr(s32) = G_CONSTANT i32 65535
1151 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1152 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1153 %8:fpr(<2 x s32>) = G_AND %12, %11
1154 %9:fpr(<2 x s32>) = G_ICMP intpred(ugt), %7(<2 x s32>), %8
1155 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1156 $d0 = COPY %5(<2 x s32>)
1157 RET_ReallyLR implicit $d0
1161 name: test_v8i16_ugt
1164 regBankSelected: true
1165 tracksRegLiveness: true
1167 - { id: 0, class: fpr }
1168 - { id: 1, class: fpr }
1169 - { id: 2, class: _ }
1170 - { id: 3, class: fpr }
1171 - { id: 4, class: fpr }
1172 machineFunctionInfo: {}
1177 ; CHECK-LABEL: name: test_v8i16_ugt
1178 ; CHECK: liveins: $q0, $q1
1179 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1180 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1181 ; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY]], [[COPY1]]
1182 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1183 ; CHECK: $d0 = COPY [[XTNv8i8_]]
1184 ; CHECK: RET_ReallyLR implicit $d0
1185 %0:fpr(<8 x s16>) = COPY $q0
1186 %1:fpr(<8 x s16>) = COPY $q1
1187 %4:fpr(<8 x s16>) = G_ICMP intpred(ugt), %0(<8 x s16>), %1
1188 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1189 $d0 = COPY %3(<8 x s8>)
1190 RET_ReallyLR implicit $d0
1194 name: test_v4i16_ugt
1197 regBankSelected: true
1198 tracksRegLiveness: true
1200 - { id: 0, class: fpr }
1201 - { id: 1, class: fpr }
1202 - { id: 2, class: _ }
1203 - { id: 3, class: fpr }
1204 - { id: 4, class: fpr }
1205 machineFunctionInfo: {}
1210 ; CHECK-LABEL: name: test_v4i16_ugt
1211 ; CHECK: liveins: $d0, $d1
1212 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1213 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1214 ; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY]], [[COPY1]]
1215 ; CHECK: $d0 = COPY [[CMHIv4i16_]]
1216 ; CHECK: RET_ReallyLR implicit $d0
1217 %0:fpr(<4 x s16>) = COPY $d0
1218 %1:fpr(<4 x s16>) = COPY $d1
1219 %4:fpr(<4 x s16>) = G_ICMP intpred(ugt), %0(<4 x s16>), %1
1220 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1221 $d0 = COPY %3(<4 x s16>)
1222 RET_ReallyLR implicit $d0
1226 name: test_v16i8_ugt
1229 regBankSelected: true
1230 tracksRegLiveness: true
1232 - { id: 0, class: fpr }
1233 - { id: 1, class: fpr }
1234 - { id: 2, class: _ }
1235 - { id: 3, class: fpr }
1236 - { id: 4, class: fpr }
1237 machineFunctionInfo: {}
1242 ; CHECK-LABEL: name: test_v16i8_ugt
1243 ; CHECK: liveins: $q0, $q1
1244 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1245 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1246 ; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY]], [[COPY1]]
1247 ; CHECK: $q0 = COPY [[CMHIv16i8_]]
1248 ; CHECK: RET_ReallyLR implicit $q0
1249 %0:fpr(<16 x s8>) = COPY $q0
1250 %1:fpr(<16 x s8>) = COPY $q1
1251 %4:fpr(<16 x s8>) = G_ICMP intpred(ugt), %0(<16 x s8>), %1
1252 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1253 $q0 = COPY %3(<16 x s8>)
1254 RET_ReallyLR implicit $q0
1261 regBankSelected: true
1262 tracksRegLiveness: true
1264 - { id: 0, class: fpr }
1265 - { id: 1, class: fpr }
1266 - { id: 2, class: _ }
1267 - { id: 3, class: fpr }
1268 - { id: 4, class: fpr }
1269 machineFunctionInfo: {}
1274 ; CHECK-LABEL: name: test_v8i8_ugt
1275 ; CHECK: liveins: $d0, $d1
1276 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1277 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1278 ; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY]], [[COPY1]]
1279 ; CHECK: $d0 = COPY [[CMHIv8i8_]]
1280 ; CHECK: RET_ReallyLR implicit $d0
1281 %0:fpr(<8 x s8>) = COPY $d0
1282 %1:fpr(<8 x s8>) = COPY $d1
1283 %4:fpr(<8 x s8>) = G_ICMP intpred(ugt), %0(<8 x s8>), %1
1284 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1285 $d0 = COPY %3(<8 x s8>)
1286 RET_ReallyLR implicit $d0
1290 name: test_v2i64_uge
1293 regBankSelected: true
1294 tracksRegLiveness: true
1296 - { id: 0, class: fpr }
1297 - { id: 1, class: fpr }
1298 - { id: 2, class: _ }
1299 - { id: 3, class: fpr }
1300 - { id: 4, class: fpr }
1301 machineFunctionInfo: {}
1306 ; CHECK-LABEL: name: test_v2i64_uge
1307 ; CHECK: liveins: $q0, $q1
1308 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1309 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1310 ; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY]], [[COPY1]]
1311 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1312 ; CHECK: $d0 = COPY [[XTNv2i32_]]
1313 ; CHECK: 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: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1342 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1343 ; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY]], [[COPY1]]
1344 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1345 ; CHECK: $d0 = COPY [[XTNv4i16_]]
1346 ; CHECK: RET_ReallyLR implicit $d0
1347 %0:fpr(<4 x s32>) = COPY $q0
1348 %1:fpr(<4 x s32>) = COPY $q1
1349 %4:fpr(<4 x s32>) = G_ICMP intpred(uge), %0(<4 x s32>), %1
1350 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1351 $d0 = COPY %3(<4 x s16>)
1352 RET_ReallyLR implicit $d0
1356 name: test_v2i32_uge
1359 regBankSelected: true
1360 tracksRegLiveness: true
1362 - { id: 0, class: fpr }
1363 - { id: 1, class: fpr }
1364 - { id: 2, class: _ }
1365 - { id: 3, class: fpr }
1366 - { id: 4, class: fpr }
1367 machineFunctionInfo: {}
1372 ; CHECK-LABEL: name: test_v2i32_uge
1373 ; CHECK: liveins: $d0, $d1
1374 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1375 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1376 ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY]], [[COPY1]]
1377 ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1378 ; CHECK: RET_ReallyLR implicit $d0
1379 %0:fpr(<2 x s32>) = COPY $d0
1380 %1:fpr(<2 x s32>) = COPY $d1
1381 %4:fpr(<2 x s32>) = G_ICMP intpred(uge), %0(<2 x s32>), %1
1382 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1383 $d0 = COPY %3(<2 x s32>)
1384 RET_ReallyLR implicit $d0
1388 name: test_v2i16_uge
1391 regBankSelected: true
1392 tracksRegLiveness: true
1394 - { id: 0, class: _ }
1395 - { id: 1, class: _ }
1396 - { id: 2, class: fpr }
1397 - { id: 3, class: fpr }
1398 - { id: 4, class: _ }
1399 - { id: 5, class: fpr }
1400 - { id: 6, class: _ }
1401 - { id: 7, class: fpr }
1402 - { id: 8, class: fpr }
1403 - { id: 9, class: fpr }
1404 - { id: 10, class: gpr }
1405 - { id: 11, class: fpr }
1406 - { id: 12, class: fpr }
1407 - { id: 13, class: gpr }
1408 - { id: 14, class: fpr }
1409 - { id: 15, class: fpr }
1410 machineFunctionInfo: {}
1415 ; CHECK-LABEL: name: test_v2i16_uge
1416 ; CHECK: liveins: $d0, $d1
1417 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1418 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1419 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
1420 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1421 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
1422 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
1423 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
1424 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
1425 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
1426 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1427 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
1428 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
1429 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
1430 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
1431 ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1432 ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1433 ; CHECK: RET_ReallyLR implicit $d0
1434 %2:fpr(<2 x s32>) = COPY $d0
1435 %3:fpr(<2 x s32>) = COPY $d1
1436 %13:gpr(s32) = G_CONSTANT i32 65535
1437 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1438 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1439 %7:fpr(<2 x s32>) = G_AND %15, %14
1440 %10:gpr(s32) = G_CONSTANT i32 65535
1441 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1442 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1443 %8:fpr(<2 x s32>) = G_AND %12, %11
1444 %9:fpr(<2 x s32>) = G_ICMP intpred(uge), %7(<2 x s32>), %8
1445 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1446 $d0 = COPY %5(<2 x s32>)
1447 RET_ReallyLR implicit $d0
1451 name: test_v8i16_uge
1454 regBankSelected: true
1455 tracksRegLiveness: true
1457 - { id: 0, class: fpr }
1458 - { id: 1, class: fpr }
1459 - { id: 2, class: _ }
1460 - { id: 3, class: fpr }
1461 - { id: 4, class: fpr }
1462 machineFunctionInfo: {}
1467 ; CHECK-LABEL: name: test_v8i16_uge
1468 ; CHECK: liveins: $q0, $q1
1469 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1470 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1471 ; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY]], [[COPY1]]
1472 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
1473 ; CHECK: $d0 = COPY [[XTNv8i8_]]
1474 ; CHECK: RET_ReallyLR implicit $d0
1475 %0:fpr(<8 x s16>) = COPY $q0
1476 %1:fpr(<8 x s16>) = COPY $q1
1477 %4:fpr(<8 x s16>) = G_ICMP intpred(uge), %0(<8 x s16>), %1
1478 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1479 $d0 = COPY %3(<8 x s8>)
1480 RET_ReallyLR implicit $d0
1484 name: test_v4i16_uge
1487 regBankSelected: true
1488 tracksRegLiveness: true
1490 - { id: 0, class: fpr }
1491 - { id: 1, class: fpr }
1492 - { id: 2, class: _ }
1493 - { id: 3, class: fpr }
1494 - { id: 4, class: fpr }
1495 machineFunctionInfo: {}
1500 ; CHECK-LABEL: name: test_v4i16_uge
1501 ; CHECK: liveins: $d0, $d1
1502 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1503 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1504 ; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY]], [[COPY1]]
1505 ; CHECK: $d0 = COPY [[CMHSv4i16_]]
1506 ; CHECK: RET_ReallyLR implicit $d0
1507 %0:fpr(<4 x s16>) = COPY $d0
1508 %1:fpr(<4 x s16>) = COPY $d1
1509 %4:fpr(<4 x s16>) = G_ICMP intpred(uge), %0(<4 x s16>), %1
1510 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1511 $d0 = COPY %3(<4 x s16>)
1512 RET_ReallyLR implicit $d0
1516 name: test_v16i8_uge
1519 regBankSelected: true
1520 tracksRegLiveness: true
1522 - { id: 0, class: fpr }
1523 - { id: 1, class: fpr }
1524 - { id: 2, class: _ }
1525 - { id: 3, class: fpr }
1526 - { id: 4, class: fpr }
1527 machineFunctionInfo: {}
1532 ; CHECK-LABEL: name: test_v16i8_uge
1533 ; CHECK: liveins: $q0, $q1
1534 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1535 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1536 ; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY]], [[COPY1]]
1537 ; CHECK: $q0 = COPY [[CMHSv16i8_]]
1538 ; CHECK: RET_ReallyLR implicit $q0
1539 %0:fpr(<16 x s8>) = COPY $q0
1540 %1:fpr(<16 x s8>) = COPY $q1
1541 %4:fpr(<16 x s8>) = G_ICMP intpred(uge), %0(<16 x s8>), %1
1542 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1543 $q0 = COPY %3(<16 x s8>)
1544 RET_ReallyLR implicit $q0
1551 regBankSelected: true
1552 tracksRegLiveness: true
1554 - { id: 0, class: fpr }
1555 - { id: 1, class: fpr }
1556 - { id: 2, class: _ }
1557 - { id: 3, class: fpr }
1558 - { id: 4, class: fpr }
1559 machineFunctionInfo: {}
1564 ; CHECK-LABEL: name: test_v8i8_uge
1565 ; CHECK: liveins: $d0, $d1
1566 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1567 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1568 ; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY]], [[COPY1]]
1569 ; CHECK: $d0 = COPY [[CMHSv8i8_]]
1570 ; CHECK: RET_ReallyLR implicit $d0
1571 %0:fpr(<8 x s8>) = COPY $d0
1572 %1:fpr(<8 x s8>) = COPY $d1
1573 %4:fpr(<8 x s8>) = G_ICMP intpred(uge), %0(<8 x s8>), %1
1574 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1575 $d0 = COPY %3(<8 x s8>)
1576 RET_ReallyLR implicit $d0
1580 name: test_v2i64_ult
1583 regBankSelected: true
1584 tracksRegLiveness: true
1586 - { id: 0, class: fpr }
1587 - { id: 1, class: fpr }
1588 - { id: 2, class: _ }
1589 - { id: 3, class: fpr }
1590 - { id: 4, class: fpr }
1591 machineFunctionInfo: {}
1596 ; CHECK-LABEL: name: test_v2i64_ult
1597 ; CHECK: liveins: $q0, $q1
1598 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1599 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1600 ; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY1]], [[COPY]]
1601 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1602 ; CHECK: $d0 = COPY [[XTNv2i32_]]
1603 ; CHECK: 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: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1632 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1633 ; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY1]], [[COPY]]
1634 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1635 ; CHECK: $d0 = COPY [[XTNv4i16_]]
1636 ; CHECK: RET_ReallyLR implicit $d0
1637 %0:fpr(<4 x s32>) = COPY $q0
1638 %1:fpr(<4 x s32>) = COPY $q1
1639 %4:fpr(<4 x s32>) = G_ICMP intpred(ult), %0(<4 x s32>), %1
1640 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1641 $d0 = COPY %3(<4 x s16>)
1642 RET_ReallyLR implicit $d0
1646 name: test_v2i32_ult
1649 regBankSelected: true
1650 tracksRegLiveness: true
1652 - { id: 0, class: fpr }
1653 - { id: 1, class: fpr }
1654 - { id: 2, class: _ }
1655 - { id: 3, class: fpr }
1656 - { id: 4, class: fpr }
1657 machineFunctionInfo: {}
1662 ; CHECK-LABEL: name: test_v2i32_ult
1663 ; CHECK: liveins: $d0, $d1
1664 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1665 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1666 ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY1]], [[COPY]]
1667 ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1668 ; CHECK: RET_ReallyLR implicit $d0
1669 %0:fpr(<2 x s32>) = COPY $d0
1670 %1:fpr(<2 x s32>) = COPY $d1
1671 %4:fpr(<2 x s32>) = G_ICMP intpred(ult), %0(<2 x s32>), %1
1672 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1673 $d0 = COPY %3(<2 x s32>)
1674 RET_ReallyLR implicit $d0
1678 name: test_v2i16_ult
1681 regBankSelected: true
1682 tracksRegLiveness: true
1684 - { id: 0, class: _ }
1685 - { id: 1, class: _ }
1686 - { id: 2, class: fpr }
1687 - { id: 3, class: fpr }
1688 - { id: 4, class: _ }
1689 - { id: 5, class: fpr }
1690 - { id: 6, class: _ }
1691 - { id: 7, class: fpr }
1692 - { id: 8, class: fpr }
1693 - { id: 9, class: fpr }
1694 - { id: 10, class: gpr }
1695 - { id: 11, class: fpr }
1696 - { id: 12, class: fpr }
1697 - { id: 13, class: gpr }
1698 - { id: 14, class: fpr }
1699 - { id: 15, class: fpr }
1700 machineFunctionInfo: {}
1705 ; CHECK-LABEL: name: test_v2i16_ult
1706 ; CHECK: liveins: $d0, $d1
1707 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1708 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1709 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
1710 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1711 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
1712 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
1713 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
1714 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
1715 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
1716 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
1717 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
1718 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
1719 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
1720 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
1721 ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
1722 ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1723 ; CHECK: RET_ReallyLR implicit $d0
1724 %2:fpr(<2 x s32>) = COPY $d0
1725 %3:fpr(<2 x s32>) = COPY $d1
1726 %13:gpr(s32) = G_CONSTANT i32 65535
1727 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1728 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1729 %7:fpr(<2 x s32>) = G_AND %15, %14
1730 %10:gpr(s32) = G_CONSTANT i32 65535
1731 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1732 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1733 %8:fpr(<2 x s32>) = G_AND %12, %11
1734 %9:fpr(<2 x s32>) = G_ICMP intpred(ult), %7(<2 x s32>), %8
1735 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1736 $d0 = COPY %5(<2 x s32>)
1737 RET_ReallyLR implicit $d0
1741 name: test_v8i16_ult
1744 regBankSelected: true
1745 tracksRegLiveness: true
1747 - { id: 0, class: fpr }
1748 - { id: 1, class: fpr }
1749 - { id: 2, class: _ }
1750 - { id: 3, class: fpr }
1751 - { id: 4, class: fpr }
1752 machineFunctionInfo: {}
1757 ; CHECK-LABEL: name: test_v8i16_ult
1758 ; CHECK: liveins: $q0, $q1
1759 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1760 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1761 ; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY1]], [[COPY]]
1762 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1763 ; CHECK: $d0 = COPY [[XTNv8i8_]]
1764 ; CHECK: RET_ReallyLR implicit $d0
1765 %0:fpr(<8 x s16>) = COPY $q0
1766 %1:fpr(<8 x s16>) = COPY $q1
1767 %4:fpr(<8 x s16>) = G_ICMP intpred(ult), %0(<8 x s16>), %1
1768 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1769 $d0 = COPY %3(<8 x s8>)
1770 RET_ReallyLR implicit $d0
1774 name: test_v4i16_ult
1777 regBankSelected: true
1778 tracksRegLiveness: true
1780 - { id: 0, class: fpr }
1781 - { id: 1, class: fpr }
1782 - { id: 2, class: _ }
1783 - { id: 3, class: fpr }
1784 - { id: 4, class: fpr }
1785 machineFunctionInfo: {}
1790 ; CHECK-LABEL: name: test_v4i16_ult
1791 ; CHECK: liveins: $d0, $d1
1792 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1793 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1794 ; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY1]], [[COPY]]
1795 ; CHECK: $d0 = COPY [[CMHIv4i16_]]
1796 ; CHECK: RET_ReallyLR implicit $d0
1797 %0:fpr(<4 x s16>) = COPY $d0
1798 %1:fpr(<4 x s16>) = COPY $d1
1799 %4:fpr(<4 x s16>) = G_ICMP intpred(ult), %0(<4 x s16>), %1
1800 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1801 $d0 = COPY %3(<4 x s16>)
1802 RET_ReallyLR implicit $d0
1806 name: test_v16i8_ult
1809 regBankSelected: true
1810 tracksRegLiveness: true
1812 - { id: 0, class: fpr }
1813 - { id: 1, class: fpr }
1814 - { id: 2, class: _ }
1815 - { id: 3, class: fpr }
1816 - { id: 4, class: fpr }
1817 machineFunctionInfo: {}
1822 ; CHECK-LABEL: name: test_v16i8_ult
1823 ; CHECK: liveins: $q0, $q1
1824 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1825 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1826 ; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY1]], [[COPY]]
1827 ; CHECK: $q0 = COPY [[CMHIv16i8_]]
1828 ; CHECK: RET_ReallyLR implicit $q0
1829 %0:fpr(<16 x s8>) = COPY $q0
1830 %1:fpr(<16 x s8>) = COPY $q1
1831 %4:fpr(<16 x s8>) = G_ICMP intpred(ult), %0(<16 x s8>), %1
1832 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1833 $q0 = COPY %3(<16 x s8>)
1834 RET_ReallyLR implicit $q0
1841 regBankSelected: true
1842 tracksRegLiveness: true
1844 - { id: 0, class: fpr }
1845 - { id: 1, class: fpr }
1846 - { id: 2, class: _ }
1847 - { id: 3, class: fpr }
1848 - { id: 4, class: fpr }
1849 machineFunctionInfo: {}
1854 ; CHECK-LABEL: name: test_v8i8_ult
1855 ; CHECK: liveins: $d0, $d1
1856 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1857 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1858 ; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY1]], [[COPY]]
1859 ; CHECK: $d0 = COPY [[CMHIv8i8_]]
1860 ; CHECK: RET_ReallyLR implicit $d0
1861 %0:fpr(<8 x s8>) = COPY $d0
1862 %1:fpr(<8 x s8>) = COPY $d1
1863 %4:fpr(<8 x s8>) = G_ICMP intpred(ult), %0(<8 x s8>), %1
1864 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1865 $d0 = COPY %3(<8 x s8>)
1866 RET_ReallyLR implicit $d0
1870 name: test_v2i64_ule
1873 regBankSelected: true
1874 tracksRegLiveness: true
1876 - { id: 0, class: fpr }
1877 - { id: 1, class: fpr }
1878 - { id: 2, class: _ }
1879 - { id: 3, class: fpr }
1880 - { id: 4, class: fpr }
1881 machineFunctionInfo: {}
1886 ; CHECK-LABEL: name: test_v2i64_ule
1887 ; CHECK: liveins: $q0, $q1
1888 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1889 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1890 ; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY1]], [[COPY]]
1891 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1892 ; CHECK: $d0 = COPY [[XTNv2i32_]]
1893 ; CHECK: 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: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1922 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1923 ; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY1]], [[COPY]]
1924 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1925 ; CHECK: $d0 = COPY [[XTNv4i16_]]
1926 ; CHECK: RET_ReallyLR implicit $d0
1927 %0:fpr(<4 x s32>) = COPY $q0
1928 %1:fpr(<4 x s32>) = COPY $q1
1929 %4:fpr(<4 x s32>) = G_ICMP intpred(ule), %0(<4 x s32>), %1
1930 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1931 $d0 = COPY %3(<4 x s16>)
1932 RET_ReallyLR implicit $d0
1936 name: test_v2i32_ule
1939 regBankSelected: true
1940 tracksRegLiveness: true
1942 - { id: 0, class: fpr }
1943 - { id: 1, class: fpr }
1944 - { id: 2, class: _ }
1945 - { id: 3, class: fpr }
1946 - { id: 4, class: fpr }
1947 machineFunctionInfo: {}
1952 ; CHECK-LABEL: name: test_v2i32_ule
1953 ; CHECK: liveins: $d0, $d1
1954 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1955 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1956 ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY1]], [[COPY]]
1957 ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1958 ; CHECK: RET_ReallyLR implicit $d0
1959 %0:fpr(<2 x s32>) = COPY $d0
1960 %1:fpr(<2 x s32>) = COPY $d1
1961 %4:fpr(<2 x s32>) = G_ICMP intpred(ule), %0(<2 x s32>), %1
1962 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1963 $d0 = COPY %3(<2 x s32>)
1964 RET_ReallyLR implicit $d0
1968 name: test_v2i16_ule
1971 regBankSelected: true
1972 tracksRegLiveness: true
1974 - { id: 0, class: _ }
1975 - { id: 1, class: _ }
1976 - { id: 2, class: fpr }
1977 - { id: 3, class: fpr }
1978 - { id: 4, class: _ }
1979 - { id: 5, class: fpr }
1980 - { id: 6, class: _ }
1981 - { id: 7, class: fpr }
1982 - { id: 8, class: fpr }
1983 - { id: 9, class: fpr }
1984 - { id: 10, class: gpr }
1985 - { id: 11, class: fpr }
1986 - { id: 12, class: fpr }
1987 - { id: 13, class: gpr }
1988 - { id: 14, class: fpr }
1989 - { id: 15, class: fpr }
1990 machineFunctionInfo: {}
1995 ; CHECK-LABEL: name: test_v2i16_ule
1996 ; CHECK: liveins: $d0, $d1
1997 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1998 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1999 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 65535
2000 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2001 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
2002 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
2003 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
2004 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[COPY2]]
2005 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 65535
2006 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2007 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
2008 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
2009 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
2010 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[COPY3]]
2011 ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
2012 ; CHECK: $d0 = COPY [[CMHSv2i32_]]
2013 ; CHECK: RET_ReallyLR implicit $d0
2014 %2:fpr(<2 x s32>) = COPY $d0
2015 %3:fpr(<2 x s32>) = COPY $d1
2016 %13:gpr(s32) = G_CONSTANT i32 65535
2017 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
2018 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2019 %7:fpr(<2 x s32>) = G_AND %15, %14
2020 %10:gpr(s32) = G_CONSTANT i32 65535
2021 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2022 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2023 %8:fpr(<2 x s32>) = G_AND %12, %11
2024 %9:fpr(<2 x s32>) = G_ICMP intpred(ule), %7(<2 x s32>), %8
2025 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2026 $d0 = COPY %5(<2 x s32>)
2027 RET_ReallyLR implicit $d0
2031 name: test_v8i16_ule
2034 regBankSelected: true
2035 tracksRegLiveness: true
2037 - { id: 0, class: fpr }
2038 - { id: 1, class: fpr }
2039 - { id: 2, class: _ }
2040 - { id: 3, class: fpr }
2041 - { id: 4, class: fpr }
2042 machineFunctionInfo: {}
2047 ; CHECK-LABEL: name: test_v8i16_ule
2048 ; CHECK: liveins: $q0, $q1
2049 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2050 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2051 ; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY1]], [[COPY]]
2052 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
2053 ; CHECK: $d0 = COPY [[XTNv8i8_]]
2054 ; CHECK: RET_ReallyLR implicit $d0
2055 %0:fpr(<8 x s16>) = COPY $q0
2056 %1:fpr(<8 x s16>) = COPY $q1
2057 %4:fpr(<8 x s16>) = G_ICMP intpred(ule), %0(<8 x s16>), %1
2058 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2059 $d0 = COPY %3(<8 x s8>)
2060 RET_ReallyLR implicit $d0
2064 name: test_v4i16_ule
2067 regBankSelected: true
2068 tracksRegLiveness: true
2070 - { id: 0, class: fpr }
2071 - { id: 1, class: fpr }
2072 - { id: 2, class: _ }
2073 - { id: 3, class: fpr }
2074 - { id: 4, class: fpr }
2075 machineFunctionInfo: {}
2080 ; CHECK-LABEL: name: test_v4i16_ule
2081 ; CHECK: liveins: $d0, $d1
2082 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2083 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2084 ; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY1]], [[COPY]]
2085 ; CHECK: $d0 = COPY [[CMHSv4i16_]]
2086 ; CHECK: RET_ReallyLR implicit $d0
2087 %0:fpr(<4 x s16>) = COPY $d0
2088 %1:fpr(<4 x s16>) = COPY $d1
2089 %4:fpr(<4 x s16>) = G_ICMP intpred(ule), %0(<4 x s16>), %1
2090 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2091 $d0 = COPY %3(<4 x s16>)
2092 RET_ReallyLR implicit $d0
2096 name: test_v16i8_ule
2099 regBankSelected: true
2100 tracksRegLiveness: true
2102 - { id: 0, class: fpr }
2103 - { id: 1, class: fpr }
2104 - { id: 2, class: _ }
2105 - { id: 3, class: fpr }
2106 - { id: 4, class: fpr }
2107 machineFunctionInfo: {}
2112 ; CHECK-LABEL: name: test_v16i8_ule
2113 ; CHECK: liveins: $q0, $q1
2114 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2115 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2116 ; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY1]], [[COPY]]
2117 ; CHECK: $q0 = COPY [[CMHSv16i8_]]
2118 ; CHECK: RET_ReallyLR implicit $q0
2119 %0:fpr(<16 x s8>) = COPY $q0
2120 %1:fpr(<16 x s8>) = COPY $q1
2121 %4:fpr(<16 x s8>) = G_ICMP intpred(ule), %0(<16 x s8>), %1
2122 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2123 $q0 = COPY %3(<16 x s8>)
2124 RET_ReallyLR implicit $q0
2131 regBankSelected: true
2132 tracksRegLiveness: true
2134 - { id: 0, class: fpr }
2135 - { id: 1, class: fpr }
2136 - { id: 2, class: _ }
2137 - { id: 3, class: fpr }
2138 - { id: 4, class: fpr }
2139 machineFunctionInfo: {}
2144 ; CHECK-LABEL: name: test_v8i8_ule
2145 ; CHECK: liveins: $d0, $d1
2146 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2147 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2148 ; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY1]], [[COPY]]
2149 ; CHECK: $d0 = COPY [[CMHSv8i8_]]
2150 ; CHECK: RET_ReallyLR implicit $d0
2151 %0:fpr(<8 x s8>) = COPY $d0
2152 %1:fpr(<8 x s8>) = COPY $d1
2153 %4:fpr(<8 x s8>) = G_ICMP intpred(ule), %0(<8 x s8>), %1
2154 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2155 $d0 = COPY %3(<8 x s8>)
2156 RET_ReallyLR implicit $d0
2160 name: test_v2i64_sgt
2163 regBankSelected: true
2164 tracksRegLiveness: true
2166 - { id: 0, class: fpr }
2167 - { id: 1, class: fpr }
2168 - { id: 2, class: _ }
2169 - { id: 3, class: fpr }
2170 - { id: 4, class: fpr }
2171 machineFunctionInfo: {}
2176 ; CHECK-LABEL: name: test_v2i64_sgt
2177 ; CHECK: liveins: $q0, $q1
2178 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2179 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2180 ; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY]], [[COPY1]]
2181 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2182 ; CHECK: $d0 = COPY [[XTNv2i32_]]
2183 ; CHECK: 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: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2212 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2213 ; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY]], [[COPY1]]
2214 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2215 ; CHECK: $d0 = COPY [[XTNv4i16_]]
2216 ; CHECK: RET_ReallyLR implicit $d0
2217 %0:fpr(<4 x s32>) = COPY $q0
2218 %1:fpr(<4 x s32>) = COPY $q1
2219 %4:fpr(<4 x s32>) = G_ICMP intpred(sgt), %0(<4 x s32>), %1
2220 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2221 $d0 = COPY %3(<4 x s16>)
2222 RET_ReallyLR implicit $d0
2226 name: test_v2i32_sgt
2229 regBankSelected: true
2230 tracksRegLiveness: true
2232 - { id: 0, class: fpr }
2233 - { id: 1, class: fpr }
2234 - { id: 2, class: _ }
2235 - { id: 3, class: fpr }
2236 - { id: 4, class: fpr }
2237 machineFunctionInfo: {}
2242 ; CHECK-LABEL: name: test_v2i32_sgt
2243 ; CHECK: liveins: $d0, $d1
2244 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2245 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2246 ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY]], [[COPY1]]
2247 ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2248 ; CHECK: RET_ReallyLR implicit $d0
2249 %0:fpr(<2 x s32>) = COPY $d0
2250 %1:fpr(<2 x s32>) = COPY $d1
2251 %4:fpr(<2 x s32>) = G_ICMP intpred(sgt), %0(<2 x s32>), %1
2252 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2253 $d0 = COPY %3(<2 x s32>)
2254 RET_ReallyLR implicit $d0
2258 name: test_v2i16_sgt
2261 regBankSelected: true
2262 tracksRegLiveness: true
2264 - { id: 0, class: _ }
2265 - { id: 1, class: _ }
2266 - { id: 2, class: fpr }
2267 - { id: 3, class: fpr }
2268 - { id: 4, class: _ }
2269 - { id: 5, class: fpr }
2270 - { id: 6, class: _ }
2271 - { id: 7, class: fpr }
2272 - { id: 8, class: fpr }
2273 - { id: 9, class: fpr }
2274 - { id: 10, class: gpr }
2275 - { id: 11, class: fpr }
2276 - { id: 12, class: fpr }
2277 - { id: 13, class: fpr }
2278 - { id: 14, class: gpr }
2279 - { id: 15, class: fpr }
2280 - { id: 16, class: fpr }
2281 - { id: 17, class: fpr }
2282 machineFunctionInfo: {}
2287 ; CHECK-LABEL: name: test_v2i16_sgt
2288 ; CHECK: liveins: $d0, $d1
2289 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2290 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2291 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16
2292 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2293 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
2294 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
2295 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
2296 ; CHECK: [[USHLv2i32_:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY]], [[COPY2]]
2297 ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY2]]
2298 ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_]], [[NEGv2i32_]]
2299 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 16
2300 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2301 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
2302 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
2303 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
2304 ; CHECK: [[USHLv2i32_1:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY1]], [[COPY3]]
2305 ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY3]]
2306 ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_1]], [[NEGv2i32_1]]
2307 ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2308 ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2309 ; CHECK: RET_ReallyLR implicit $d0
2310 %2:fpr(<2 x s32>) = COPY $d0
2311 %3:fpr(<2 x s32>) = COPY $d1
2312 %14:gpr(s32) = G_CONSTANT i32 16
2313 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2314 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2315 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2316 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2317 %10:gpr(s32) = G_CONSTANT i32 16
2318 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2319 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2320 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2321 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2322 %9:fpr(<2 x s32>) = G_ICMP intpred(sgt), %7(<2 x s32>), %8
2323 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2324 $d0 = COPY %5(<2 x s32>)
2325 RET_ReallyLR implicit $d0
2329 name: test_v8i16_sgt
2332 regBankSelected: true
2333 tracksRegLiveness: true
2335 - { id: 0, class: fpr }
2336 - { id: 1, class: fpr }
2337 - { id: 2, class: _ }
2338 - { id: 3, class: fpr }
2339 - { id: 4, class: fpr }
2340 machineFunctionInfo: {}
2345 ; CHECK-LABEL: name: test_v8i16_sgt
2346 ; CHECK: liveins: $q0, $q1
2347 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2348 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2349 ; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY]], [[COPY1]]
2350 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2351 ; CHECK: $d0 = COPY [[XTNv8i8_]]
2352 ; CHECK: RET_ReallyLR implicit $d0
2353 %0:fpr(<8 x s16>) = COPY $q0
2354 %1:fpr(<8 x s16>) = COPY $q1
2355 %4:fpr(<8 x s16>) = G_ICMP intpred(sgt), %0(<8 x s16>), %1
2356 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2357 $d0 = COPY %3(<8 x s8>)
2358 RET_ReallyLR implicit $d0
2362 name: test_v4i16_sgt
2365 regBankSelected: true
2366 tracksRegLiveness: true
2368 - { id: 0, class: fpr }
2369 - { id: 1, class: fpr }
2370 - { id: 2, class: _ }
2371 - { id: 3, class: fpr }
2372 - { id: 4, class: fpr }
2373 machineFunctionInfo: {}
2378 ; CHECK-LABEL: name: test_v4i16_sgt
2379 ; CHECK: liveins: $d0, $d1
2380 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2381 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2382 ; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY]], [[COPY1]]
2383 ; CHECK: $d0 = COPY [[CMGTv4i16_]]
2384 ; CHECK: RET_ReallyLR implicit $d0
2385 %0:fpr(<4 x s16>) = COPY $d0
2386 %1:fpr(<4 x s16>) = COPY $d1
2387 %4:fpr(<4 x s16>) = G_ICMP intpred(sgt), %0(<4 x s16>), %1
2388 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2389 $d0 = COPY %3(<4 x s16>)
2390 RET_ReallyLR implicit $d0
2394 name: test_v16i8_sgt
2397 regBankSelected: true
2398 tracksRegLiveness: true
2400 - { id: 0, class: fpr }
2401 - { id: 1, class: fpr }
2402 - { id: 2, class: _ }
2403 - { id: 3, class: fpr }
2404 - { id: 4, class: fpr }
2405 machineFunctionInfo: {}
2410 ; CHECK-LABEL: name: test_v16i8_sgt
2411 ; CHECK: liveins: $q0, $q1
2412 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2413 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2414 ; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY]], [[COPY1]]
2415 ; CHECK: $q0 = COPY [[CMGTv16i8_]]
2416 ; CHECK: RET_ReallyLR implicit $q0
2417 %0:fpr(<16 x s8>) = COPY $q0
2418 %1:fpr(<16 x s8>) = COPY $q1
2419 %4:fpr(<16 x s8>) = G_ICMP intpred(sgt), %0(<16 x s8>), %1
2420 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2421 $q0 = COPY %3(<16 x s8>)
2422 RET_ReallyLR implicit $q0
2429 regBankSelected: true
2430 tracksRegLiveness: true
2432 - { id: 0, class: fpr }
2433 - { id: 1, class: fpr }
2434 - { id: 2, class: _ }
2435 - { id: 3, class: fpr }
2436 - { id: 4, class: fpr }
2437 machineFunctionInfo: {}
2442 ; CHECK-LABEL: name: test_v8i8_sgt
2443 ; CHECK: liveins: $d0, $d1
2444 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2445 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2446 ; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY]], [[COPY1]]
2447 ; CHECK: $d0 = COPY [[CMGTv8i8_]]
2448 ; CHECK: RET_ReallyLR implicit $d0
2449 %0:fpr(<8 x s8>) = COPY $d0
2450 %1:fpr(<8 x s8>) = COPY $d1
2451 %4:fpr(<8 x s8>) = G_ICMP intpred(sgt), %0(<8 x s8>), %1
2452 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2453 $d0 = COPY %3(<8 x s8>)
2454 RET_ReallyLR implicit $d0
2458 name: test_v2i64_sge
2461 regBankSelected: true
2462 tracksRegLiveness: true
2464 - { id: 0, class: fpr }
2465 - { id: 1, class: fpr }
2466 - { id: 2, class: _ }
2467 - { id: 3, class: fpr }
2468 - { id: 4, class: fpr }
2469 machineFunctionInfo: {}
2474 ; CHECK-LABEL: name: test_v2i64_sge
2475 ; CHECK: liveins: $q0, $q1
2476 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2477 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2478 ; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY]], [[COPY1]]
2479 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
2480 ; CHECK: $d0 = COPY [[XTNv2i32_]]
2481 ; CHECK: 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: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2510 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2511 ; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY]], [[COPY1]]
2512 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
2513 ; CHECK: $d0 = COPY [[XTNv4i16_]]
2514 ; CHECK: RET_ReallyLR implicit $d0
2515 %0:fpr(<4 x s32>) = COPY $q0
2516 %1:fpr(<4 x s32>) = COPY $q1
2517 %4:fpr(<4 x s32>) = G_ICMP intpred(sge), %0(<4 x s32>), %1
2518 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2519 $d0 = COPY %3(<4 x s16>)
2520 RET_ReallyLR implicit $d0
2524 name: test_v2i32_sge
2527 regBankSelected: true
2528 tracksRegLiveness: true
2530 - { id: 0, class: fpr }
2531 - { id: 1, class: fpr }
2532 - { id: 2, class: _ }
2533 - { id: 3, class: fpr }
2534 - { id: 4, class: fpr }
2535 machineFunctionInfo: {}
2540 ; CHECK-LABEL: name: test_v2i32_sge
2541 ; CHECK: liveins: $d0, $d1
2542 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2543 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2544 ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY]], [[COPY1]]
2545 ; CHECK: $d0 = COPY [[CMGEv2i32_]]
2546 ; CHECK: RET_ReallyLR implicit $d0
2547 %0:fpr(<2 x s32>) = COPY $d0
2548 %1:fpr(<2 x s32>) = COPY $d1
2549 %4:fpr(<2 x s32>) = G_ICMP intpred(sge), %0(<2 x s32>), %1
2550 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2551 $d0 = COPY %3(<2 x s32>)
2552 RET_ReallyLR implicit $d0
2556 name: test_v2i16_sge
2559 regBankSelected: true
2560 tracksRegLiveness: true
2562 - { id: 0, class: _ }
2563 - { id: 1, class: _ }
2564 - { id: 2, class: fpr }
2565 - { id: 3, class: fpr }
2566 - { id: 4, class: _ }
2567 - { id: 5, class: fpr }
2568 - { id: 6, class: _ }
2569 - { id: 7, class: fpr }
2570 - { id: 8, class: fpr }
2571 - { id: 9, class: fpr }
2572 - { id: 10, class: gpr }
2573 - { id: 11, class: fpr }
2574 - { id: 12, class: fpr }
2575 - { id: 13, class: fpr }
2576 - { id: 14, class: gpr }
2577 - { id: 15, class: fpr }
2578 - { id: 16, class: fpr }
2579 - { id: 17, class: fpr }
2580 machineFunctionInfo: {}
2585 ; CHECK-LABEL: name: test_v2i16_sge
2586 ; CHECK: liveins: $d0, $d1
2587 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2588 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2589 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16
2590 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2591 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
2592 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
2593 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
2594 ; CHECK: [[USHLv2i32_:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY]], [[COPY2]]
2595 ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY2]]
2596 ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_]], [[NEGv2i32_]]
2597 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 16
2598 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2599 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
2600 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
2601 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
2602 ; CHECK: [[USHLv2i32_1:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY1]], [[COPY3]]
2603 ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY3]]
2604 ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_1]], [[NEGv2i32_1]]
2605 ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2606 ; CHECK: $d0 = COPY [[CMGEv2i32_]]
2607 ; CHECK: RET_ReallyLR implicit $d0
2608 %2:fpr(<2 x s32>) = COPY $d0
2609 %3:fpr(<2 x s32>) = COPY $d1
2610 %14:gpr(s32) = G_CONSTANT i32 16
2611 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2612 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2613 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2614 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2615 %10:gpr(s32) = G_CONSTANT i32 16
2616 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2617 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2618 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2619 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2620 %9:fpr(<2 x s32>) = G_ICMP intpred(sge), %7(<2 x s32>), %8
2621 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2622 $d0 = COPY %5(<2 x s32>)
2623 RET_ReallyLR implicit $d0
2627 name: test_v8i16_sge
2630 regBankSelected: true
2631 tracksRegLiveness: true
2633 - { id: 0, class: fpr }
2634 - { id: 1, class: fpr }
2635 - { id: 2, class: _ }
2636 - { id: 3, class: fpr }
2637 - { id: 4, class: fpr }
2638 machineFunctionInfo: {}
2643 ; CHECK-LABEL: name: test_v8i16_sge
2644 ; CHECK: liveins: $q0, $q1
2645 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2646 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2647 ; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY]], [[COPY1]]
2648 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
2649 ; CHECK: $d0 = COPY [[XTNv8i8_]]
2650 ; CHECK: RET_ReallyLR implicit $d0
2651 %0:fpr(<8 x s16>) = COPY $q0
2652 %1:fpr(<8 x s16>) = COPY $q1
2653 %4:fpr(<8 x s16>) = G_ICMP intpred(sge), %0(<8 x s16>), %1
2654 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2655 $d0 = COPY %3(<8 x s8>)
2656 RET_ReallyLR implicit $d0
2660 name: test_v4i16_sge
2663 regBankSelected: true
2664 tracksRegLiveness: true
2666 - { id: 0, class: fpr }
2667 - { id: 1, class: fpr }
2668 - { id: 2, class: _ }
2669 - { id: 3, class: fpr }
2670 - { id: 4, class: fpr }
2671 machineFunctionInfo: {}
2676 ; CHECK-LABEL: name: test_v4i16_sge
2677 ; CHECK: liveins: $d0, $d1
2678 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2679 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2680 ; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY]], [[COPY1]]
2681 ; CHECK: $d0 = COPY [[CMGEv4i16_]]
2682 ; CHECK: RET_ReallyLR implicit $d0
2683 %0:fpr(<4 x s16>) = COPY $d0
2684 %1:fpr(<4 x s16>) = COPY $d1
2685 %4:fpr(<4 x s16>) = G_ICMP intpred(sge), %0(<4 x s16>), %1
2686 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2687 $d0 = COPY %3(<4 x s16>)
2688 RET_ReallyLR implicit $d0
2692 name: test_v16i8_sge
2695 regBankSelected: true
2696 tracksRegLiveness: true
2698 - { id: 0, class: fpr }
2699 - { id: 1, class: fpr }
2700 - { id: 2, class: _ }
2701 - { id: 3, class: fpr }
2702 - { id: 4, class: fpr }
2703 machineFunctionInfo: {}
2708 ; CHECK-LABEL: name: test_v16i8_sge
2709 ; CHECK: liveins: $q0, $q1
2710 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2711 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2712 ; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY]], [[COPY1]]
2713 ; CHECK: $q0 = COPY [[CMGEv16i8_]]
2714 ; CHECK: RET_ReallyLR implicit $q0
2715 %0:fpr(<16 x s8>) = COPY $q0
2716 %1:fpr(<16 x s8>) = COPY $q1
2717 %4:fpr(<16 x s8>) = G_ICMP intpred(sge), %0(<16 x s8>), %1
2718 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2719 $q0 = COPY %3(<16 x s8>)
2720 RET_ReallyLR implicit $q0
2727 regBankSelected: true
2728 tracksRegLiveness: true
2730 - { id: 0, class: fpr }
2731 - { id: 1, class: fpr }
2732 - { id: 2, class: _ }
2733 - { id: 3, class: fpr }
2734 - { id: 4, class: fpr }
2735 machineFunctionInfo: {}
2740 ; CHECK-LABEL: name: test_v8i8_sge
2741 ; CHECK: liveins: $d0, $d1
2742 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2743 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2744 ; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY]], [[COPY1]]
2745 ; CHECK: $d0 = COPY [[CMGEv8i8_]]
2746 ; CHECK: RET_ReallyLR implicit $d0
2747 %0:fpr(<8 x s8>) = COPY $d0
2748 %1:fpr(<8 x s8>) = COPY $d1
2749 %4:fpr(<8 x s8>) = G_ICMP intpred(sge), %0(<8 x s8>), %1
2750 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2751 $d0 = COPY %3(<8 x s8>)
2752 RET_ReallyLR implicit $d0
2756 name: test_v2i64_slt
2759 regBankSelected: true
2760 tracksRegLiveness: true
2762 - { id: 0, class: fpr }
2763 - { id: 1, class: fpr }
2764 - { id: 2, class: _ }
2765 - { id: 3, class: fpr }
2766 - { id: 4, class: fpr }
2767 machineFunctionInfo: {}
2772 ; CHECK-LABEL: name: test_v2i64_slt
2773 ; CHECK: liveins: $q0, $q1
2774 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2775 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2776 ; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY1]], [[COPY]]
2777 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2778 ; CHECK: $d0 = COPY [[XTNv2i32_]]
2779 ; CHECK: 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: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2808 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2809 ; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY1]], [[COPY]]
2810 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2811 ; CHECK: $d0 = COPY [[XTNv4i16_]]
2812 ; CHECK: RET_ReallyLR implicit $d0
2813 %0:fpr(<4 x s32>) = COPY $q0
2814 %1:fpr(<4 x s32>) = COPY $q1
2815 %4:fpr(<4 x s32>) = G_ICMP intpred(slt), %0(<4 x s32>), %1
2816 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2817 $d0 = COPY %3(<4 x s16>)
2818 RET_ReallyLR implicit $d0
2822 name: test_v2i32_slt
2825 regBankSelected: true
2826 tracksRegLiveness: true
2828 - { id: 0, class: fpr }
2829 - { id: 1, class: fpr }
2830 - { id: 2, class: _ }
2831 - { id: 3, class: fpr }
2832 - { id: 4, class: fpr }
2833 machineFunctionInfo: {}
2838 ; CHECK-LABEL: name: test_v2i32_slt
2839 ; CHECK: liveins: $d0, $d1
2840 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2841 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2842 ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY1]], [[COPY]]
2843 ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2844 ; CHECK: RET_ReallyLR implicit $d0
2845 %0:fpr(<2 x s32>) = COPY $d0
2846 %1:fpr(<2 x s32>) = COPY $d1
2847 %4:fpr(<2 x s32>) = G_ICMP intpred(slt), %0(<2 x s32>), %1
2848 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2849 $d0 = COPY %3(<2 x s32>)
2850 RET_ReallyLR implicit $d0
2854 name: test_v2i16_slt
2857 regBankSelected: true
2858 tracksRegLiveness: true
2860 - { id: 0, class: _ }
2861 - { id: 1, class: _ }
2862 - { id: 2, class: fpr }
2863 - { id: 3, class: fpr }
2864 - { id: 4, class: _ }
2865 - { id: 5, class: fpr }
2866 - { id: 6, class: _ }
2867 - { id: 7, class: fpr }
2868 - { id: 8, class: fpr }
2869 - { id: 9, class: fpr }
2870 - { id: 10, class: gpr }
2871 - { id: 11, class: fpr }
2872 - { id: 12, class: fpr }
2873 - { id: 13, class: fpr }
2874 - { id: 14, class: gpr }
2875 - { id: 15, class: fpr }
2876 - { id: 16, class: fpr }
2877 - { id: 17, class: fpr }
2878 machineFunctionInfo: {}
2883 ; CHECK-LABEL: name: test_v2i16_slt
2884 ; CHECK: liveins: $d0, $d1
2885 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2886 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2887 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16
2888 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2889 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
2890 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
2891 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
2892 ; CHECK: [[USHLv2i32_:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY]], [[COPY2]]
2893 ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY2]]
2894 ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_]], [[NEGv2i32_]]
2895 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 16
2896 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
2897 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
2898 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
2899 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
2900 ; CHECK: [[USHLv2i32_1:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY1]], [[COPY3]]
2901 ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY3]]
2902 ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_1]], [[NEGv2i32_1]]
2903 ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
2904 ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2905 ; CHECK: RET_ReallyLR implicit $d0
2906 %2:fpr(<2 x s32>) = COPY $d0
2907 %3:fpr(<2 x s32>) = COPY $d1
2908 %14:gpr(s32) = G_CONSTANT i32 16
2909 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2910 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2911 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2912 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2913 %10:gpr(s32) = G_CONSTANT i32 16
2914 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2915 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2916 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2917 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2918 %9:fpr(<2 x s32>) = G_ICMP intpred(slt), %7(<2 x s32>), %8
2919 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2920 $d0 = COPY %5(<2 x s32>)
2921 RET_ReallyLR implicit $d0
2925 name: test_v8i16_slt
2928 regBankSelected: true
2929 tracksRegLiveness: true
2931 - { id: 0, class: fpr }
2932 - { id: 1, class: fpr }
2933 - { id: 2, class: _ }
2934 - { id: 3, class: fpr }
2935 - { id: 4, class: fpr }
2936 machineFunctionInfo: {}
2941 ; CHECK-LABEL: name: test_v8i16_slt
2942 ; CHECK: liveins: $q0, $q1
2943 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2944 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2945 ; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY1]], [[COPY]]
2946 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2947 ; CHECK: $d0 = COPY [[XTNv8i8_]]
2948 ; CHECK: RET_ReallyLR implicit $d0
2949 %0:fpr(<8 x s16>) = COPY $q0
2950 %1:fpr(<8 x s16>) = COPY $q1
2951 %4:fpr(<8 x s16>) = G_ICMP intpred(slt), %0(<8 x s16>), %1
2952 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2953 $d0 = COPY %3(<8 x s8>)
2954 RET_ReallyLR implicit $d0
2958 name: test_v4i16_slt
2961 regBankSelected: true
2962 tracksRegLiveness: true
2964 - { id: 0, class: fpr }
2965 - { id: 1, class: fpr }
2966 - { id: 2, class: _ }
2967 - { id: 3, class: fpr }
2968 - { id: 4, class: fpr }
2969 machineFunctionInfo: {}
2974 ; CHECK-LABEL: name: test_v4i16_slt
2975 ; CHECK: liveins: $d0, $d1
2976 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2977 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2978 ; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY1]], [[COPY]]
2979 ; CHECK: $d0 = COPY [[CMGTv4i16_]]
2980 ; CHECK: RET_ReallyLR implicit $d0
2981 %0:fpr(<4 x s16>) = COPY $d0
2982 %1:fpr(<4 x s16>) = COPY $d1
2983 %4:fpr(<4 x s16>) = G_ICMP intpred(slt), %0(<4 x s16>), %1
2984 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2985 $d0 = COPY %3(<4 x s16>)
2986 RET_ReallyLR implicit $d0
2990 name: test_v16i8_slt
2993 regBankSelected: true
2994 tracksRegLiveness: true
2996 - { id: 0, class: fpr }
2997 - { id: 1, class: fpr }
2998 - { id: 2, class: _ }
2999 - { id: 3, class: fpr }
3000 - { id: 4, class: fpr }
3001 machineFunctionInfo: {}
3006 ; CHECK-LABEL: name: test_v16i8_slt
3007 ; CHECK: liveins: $q0, $q1
3008 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3009 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3010 ; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY1]], [[COPY]]
3011 ; CHECK: $q0 = COPY [[CMGTv16i8_]]
3012 ; CHECK: RET_ReallyLR implicit $q0
3013 %0:fpr(<16 x s8>) = COPY $q0
3014 %1:fpr(<16 x s8>) = COPY $q1
3015 %4:fpr(<16 x s8>) = G_ICMP intpred(slt), %0(<16 x s8>), %1
3016 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
3017 $q0 = COPY %3(<16 x s8>)
3018 RET_ReallyLR implicit $q0
3025 regBankSelected: true
3026 tracksRegLiveness: true
3028 - { id: 0, class: fpr }
3029 - { id: 1, class: fpr }
3030 - { id: 2, class: _ }
3031 - { id: 3, class: fpr }
3032 - { id: 4, class: fpr }
3033 machineFunctionInfo: {}
3038 ; CHECK-LABEL: name: test_v8i8_slt
3039 ; CHECK: liveins: $d0, $d1
3040 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3041 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3042 ; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY1]], [[COPY]]
3043 ; CHECK: $d0 = COPY [[CMGTv8i8_]]
3044 ; CHECK: RET_ReallyLR implicit $d0
3045 %0:fpr(<8 x s8>) = COPY $d0
3046 %1:fpr(<8 x s8>) = COPY $d1
3047 %4:fpr(<8 x s8>) = G_ICMP intpred(slt), %0(<8 x s8>), %1
3048 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
3049 $d0 = COPY %3(<8 x s8>)
3050 RET_ReallyLR implicit $d0
3054 name: test_v2i64_sle
3057 regBankSelected: true
3058 tracksRegLiveness: true
3060 - { id: 0, class: fpr }
3061 - { id: 1, class: fpr }
3062 - { id: 2, class: _ }
3063 - { id: 3, class: fpr }
3064 - { id: 4, class: fpr }
3065 machineFunctionInfo: {}
3070 ; CHECK-LABEL: name: test_v2i64_sle
3071 ; CHECK: liveins: $q0, $q1
3072 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3073 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3074 ; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY1]], [[COPY]]
3075 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
3076 ; CHECK: $d0 = COPY [[XTNv2i32_]]
3077 ; CHECK: 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: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3106 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3107 ; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY1]], [[COPY]]
3108 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
3109 ; CHECK: $d0 = COPY [[XTNv4i16_]]
3110 ; CHECK: RET_ReallyLR implicit $d0
3111 %0:fpr(<4 x s32>) = COPY $q0
3112 %1:fpr(<4 x s32>) = COPY $q1
3113 %4:fpr(<4 x s32>) = G_ICMP intpred(sle), %0(<4 x s32>), %1
3114 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
3115 $d0 = COPY %3(<4 x s16>)
3116 RET_ReallyLR implicit $d0
3120 name: test_v2i32_sle
3123 regBankSelected: true
3124 tracksRegLiveness: true
3126 - { id: 0, class: fpr }
3127 - { id: 1, class: fpr }
3128 - { id: 2, class: _ }
3129 - { id: 3, class: fpr }
3130 - { id: 4, class: fpr }
3131 machineFunctionInfo: {}
3136 ; CHECK-LABEL: name: test_v2i32_sle
3137 ; CHECK: liveins: $d0, $d1
3138 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3139 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3140 ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY1]], [[COPY]]
3141 ; CHECK: $d0 = COPY [[CMGEv2i32_]]
3142 ; CHECK: RET_ReallyLR implicit $d0
3143 %0:fpr(<2 x s32>) = COPY $d0
3144 %1:fpr(<2 x s32>) = COPY $d1
3145 %4:fpr(<2 x s32>) = G_ICMP intpred(sle), %0(<2 x s32>), %1
3146 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
3147 $d0 = COPY %3(<2 x s32>)
3148 RET_ReallyLR implicit $d0
3152 name: test_v2i16_sle
3155 regBankSelected: true
3156 tracksRegLiveness: true
3158 - { id: 0, class: _ }
3159 - { id: 1, class: _ }
3160 - { id: 2, class: fpr }
3161 - { id: 3, class: fpr }
3162 - { id: 4, class: _ }
3163 - { id: 5, class: fpr }
3164 - { id: 6, class: _ }
3165 - { id: 7, class: fpr }
3166 - { id: 8, class: fpr }
3167 - { id: 9, class: fpr }
3168 - { id: 10, class: gpr }
3169 - { id: 11, class: fpr }
3170 - { id: 12, class: fpr }
3171 - { id: 13, class: fpr }
3172 - { id: 14, class: gpr }
3173 - { id: 15, class: fpr }
3174 - { id: 16, class: fpr }
3175 - { id: 17, class: fpr }
3176 machineFunctionInfo: {}
3181 ; CHECK-LABEL: name: test_v2i16_sle
3182 ; CHECK: liveins: $d0, $d1
3183 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3184 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3185 ; CHECK: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16
3186 ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
3187 ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[MOVi32imm]], %subreg.ssub
3188 ; CHECK: [[INSvi32gpr:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG]], 1, [[MOVi32imm]]
3189 ; CHECK: [[COPY2:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr]].dsub
3190 ; CHECK: [[USHLv2i32_:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY]], [[COPY2]]
3191 ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY2]]
3192 ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_]], [[NEGv2i32_]]
3193 ; CHECK: [[MOVi32imm1:%[0-9]+]]:gpr32 = MOVi32imm 16
3194 ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
3195 ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[MOVi32imm1]], %subreg.ssub
3196 ; CHECK: [[INSvi32gpr1:%[0-9]+]]:fpr128 = INSvi32gpr [[INSERT_SUBREG1]], 1, [[MOVi32imm1]]
3197 ; CHECK: [[COPY3:%[0-9]+]]:fpr64 = COPY [[INSvi32gpr1]].dsub
3198 ; CHECK: [[USHLv2i32_1:%[0-9]+]]:fpr64 = USHLv2i32 [[COPY1]], [[COPY3]]
3199 ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[COPY3]]
3200 ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[USHLv2i32_1]], [[NEGv2i32_1]]
3201 ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
3202 ; CHECK: $d0 = COPY [[CMGEv2i32_]]
3203 ; CHECK: RET_ReallyLR implicit $d0
3204 %2:fpr(<2 x s32>) = COPY $d0
3205 %3:fpr(<2 x s32>) = COPY $d1
3206 %14:gpr(s32) = G_CONSTANT i32 16
3207 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
3208 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
3209 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
3210 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
3211 %10:gpr(s32) = G_CONSTANT i32 16
3212 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
3213 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
3214 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
3215 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
3216 %9:fpr(<2 x s32>) = G_ICMP intpred(sle), %7(<2 x s32>), %8
3217 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
3218 $d0 = COPY %5(<2 x s32>)
3219 RET_ReallyLR implicit $d0
3223 name: test_v8i16_sle
3226 regBankSelected: true
3227 tracksRegLiveness: true
3229 - { id: 0, class: fpr }
3230 - { id: 1, class: fpr }
3231 - { id: 2, class: _ }
3232 - { id: 3, class: fpr }
3233 - { id: 4, class: fpr }
3234 machineFunctionInfo: {}
3239 ; CHECK-LABEL: name: test_v8i16_sle
3240 ; CHECK: liveins: $q0, $q1
3241 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3242 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3243 ; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY1]], [[COPY]]
3244 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
3245 ; CHECK: $d0 = COPY [[XTNv8i8_]]
3246 ; CHECK: RET_ReallyLR implicit $d0
3247 %0:fpr(<8 x s16>) = COPY $q0
3248 %1:fpr(<8 x s16>) = COPY $q1
3249 %4:fpr(<8 x s16>) = G_ICMP intpred(sle), %0(<8 x s16>), %1
3250 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
3251 $d0 = COPY %3(<8 x s8>)
3252 RET_ReallyLR implicit $d0
3256 name: test_v4i16_sle
3259 regBankSelected: true
3260 tracksRegLiveness: true
3262 - { id: 0, class: fpr }
3263 - { id: 1, class: fpr }
3264 - { id: 2, class: _ }
3265 - { id: 3, class: fpr }
3266 - { id: 4, class: fpr }
3267 machineFunctionInfo: {}
3272 ; CHECK-LABEL: name: test_v4i16_sle
3273 ; CHECK: liveins: $d0, $d1
3274 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3275 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3276 ; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY1]], [[COPY]]
3277 ; CHECK: $d0 = COPY [[CMGEv4i16_]]
3278 ; CHECK: RET_ReallyLR implicit $d0
3279 %0:fpr(<4 x s16>) = COPY $d0
3280 %1:fpr(<4 x s16>) = COPY $d1
3281 %4:fpr(<4 x s16>) = G_ICMP intpred(sle), %0(<4 x s16>), %1
3282 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
3283 $d0 = COPY %3(<4 x s16>)
3284 RET_ReallyLR implicit $d0
3288 name: test_v16i8_sle
3291 regBankSelected: true
3292 tracksRegLiveness: true
3294 - { id: 0, class: fpr }
3295 - { id: 1, class: fpr }
3296 - { id: 2, class: _ }
3297 - { id: 3, class: fpr }
3298 - { id: 4, class: fpr }
3299 machineFunctionInfo: {}
3304 ; CHECK-LABEL: name: test_v16i8_sle
3305 ; CHECK: liveins: $q0, $q1
3306 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3307 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3308 ; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY1]], [[COPY]]
3309 ; CHECK: $q0 = COPY [[CMGEv16i8_]]
3310 ; CHECK: RET_ReallyLR implicit $q0
3311 %0:fpr(<16 x s8>) = COPY $q0
3312 %1:fpr(<16 x s8>) = COPY $q1
3313 %4:fpr(<16 x s8>) = G_ICMP intpred(sle), %0(<16 x s8>), %1
3314 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
3315 $q0 = COPY %3(<16 x s8>)
3316 RET_ReallyLR implicit $q0
3323 regBankSelected: true
3324 tracksRegLiveness: true
3326 - { id: 0, class: fpr }
3327 - { id: 1, class: fpr }
3328 - { id: 2, class: _ }
3329 - { id: 3, class: fpr }
3330 - { id: 4, class: fpr }
3331 machineFunctionInfo: {}
3336 ; CHECK-LABEL: name: test_v8i8_sle
3337 ; CHECK: liveins: $d0, $d1
3338 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3339 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3340 ; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY1]], [[COPY]]
3341 ; CHECK: $d0 = COPY [[CMGEv8i8_]]
3342 ; CHECK: RET_ReallyLR implicit $d0
3343 %0:fpr(<8 x s8>) = COPY $d0
3344 %1:fpr(<8 x s8>) = COPY $d1
3345 %4:fpr(<8 x s8>) = G_ICMP intpred(sle), %0(<8 x s8>), %1
3346 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
3347 $d0 = COPY %3(<8 x s8>)
3348 RET_ReallyLR implicit $d0