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: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
542 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
543 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
544 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
545 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
546 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
547 ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
548 ; CHECK: $d0 = COPY [[CMEQv2i32_]]
549 ; CHECK: RET_ReallyLR implicit $d0
550 %2:fpr(<2 x s32>) = COPY $d0
551 %3:fpr(<2 x s32>) = COPY $d1
552 %13:gpr(s32) = G_CONSTANT i32 65535
553 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
554 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
555 %7:fpr(<2 x s32>) = G_AND %15, %14
556 %10:gpr(s32) = G_CONSTANT i32 65535
557 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
558 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
559 %8:fpr(<2 x s32>) = G_AND %12, %11
560 %9:fpr(<2 x s32>) = G_ICMP intpred(eq), %7(<2 x s32>), %8
561 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
562 $d0 = COPY %5(<2 x s32>)
563 RET_ReallyLR implicit $d0
570 regBankSelected: true
571 tracksRegLiveness: true
573 - { id: 0, class: fpr }
574 - { id: 1, class: fpr }
575 - { id: 2, class: _ }
576 - { id: 3, class: fpr }
577 - { id: 4, class: fpr }
578 machineFunctionInfo: {}
583 ; CHECK-LABEL: name: test_v8i16_eq
584 ; CHECK: liveins: $q0, $q1
585 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
586 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
587 ; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
588 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMEQv8i16_]]
589 ; CHECK: $d0 = COPY [[XTNv8i8_]]
590 ; CHECK: RET_ReallyLR implicit $d0
591 %0:fpr(<8 x s16>) = COPY $q0
592 %1:fpr(<8 x s16>) = COPY $q1
593 %4:fpr(<8 x s16>) = G_ICMP intpred(eq), %0(<8 x s16>), %1
594 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
595 $d0 = COPY %3(<8 x s8>)
596 RET_ReallyLR implicit $d0
603 regBankSelected: true
604 tracksRegLiveness: true
606 - { id: 0, class: fpr }
607 - { id: 1, class: fpr }
608 - { id: 2, class: _ }
609 - { id: 3, class: fpr }
610 - { id: 4, class: fpr }
611 machineFunctionInfo: {}
616 ; CHECK-LABEL: name: test_v4i16_eq
617 ; CHECK: liveins: $d0, $d1
618 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
619 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
620 ; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
621 ; CHECK: $d0 = COPY [[CMEQv4i16_]]
622 ; CHECK: RET_ReallyLR implicit $d0
623 %0:fpr(<4 x s16>) = COPY $d0
624 %1:fpr(<4 x s16>) = COPY $d1
625 %4:fpr(<4 x s16>) = G_ICMP intpred(eq), %0(<4 x s16>), %1
626 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
627 $d0 = COPY %3(<4 x s16>)
628 RET_ReallyLR implicit $d0
635 regBankSelected: true
636 tracksRegLiveness: true
638 - { id: 0, class: fpr }
639 - { id: 1, class: fpr }
640 - { id: 2, class: _ }
641 - { id: 3, class: fpr }
642 - { id: 4, class: fpr }
643 machineFunctionInfo: {}
648 ; CHECK-LABEL: name: test_v16i8_eq
649 ; CHECK: liveins: $q0, $q1
650 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
651 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
652 ; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
653 ; CHECK: $q0 = COPY [[CMEQv16i8_]]
654 ; CHECK: RET_ReallyLR implicit $q0
655 %0:fpr(<16 x s8>) = COPY $q0
656 %1:fpr(<16 x s8>) = COPY $q1
657 %4:fpr(<16 x s8>) = G_ICMP intpred(eq), %0(<16 x s8>), %1
658 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
659 $q0 = COPY %3(<16 x s8>)
660 RET_ReallyLR implicit $q0
667 regBankSelected: true
668 tracksRegLiveness: true
670 - { id: 0, class: fpr }
671 - { id: 1, class: fpr }
672 - { id: 2, class: _ }
673 - { id: 3, class: fpr }
674 - { id: 4, class: fpr }
675 machineFunctionInfo: {}
680 ; CHECK-LABEL: name: test_v8i8_eq
681 ; CHECK: liveins: $d0, $d1
682 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
683 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
684 ; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
685 ; CHECK: $d0 = COPY [[CMEQv8i8_]]
686 ; CHECK: RET_ReallyLR implicit $d0
687 %0:fpr(<8 x s8>) = COPY $d0
688 %1:fpr(<8 x s8>) = COPY $d1
689 %4:fpr(<8 x s8>) = G_ICMP intpred(eq), %0(<8 x s8>), %1
690 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
691 $d0 = COPY %3(<8 x s8>)
692 RET_ReallyLR implicit $d0
699 regBankSelected: true
700 tracksRegLiveness: true
702 - { id: 0, class: fpr }
703 - { id: 1, class: fpr }
704 - { id: 2, class: _ }
705 - { id: 3, class: fpr }
706 - { id: 4, class: fpr }
707 machineFunctionInfo: {}
712 ; CHECK-LABEL: name: test_v2i64_ne
713 ; CHECK: liveins: $q0, $q1
714 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
715 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
716 ; CHECK: [[CMEQv2i64_:%[0-9]+]]:fpr128 = CMEQv2i64 [[COPY]], [[COPY1]]
717 ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv2i64_]]
718 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[NOTv16i8_]]
719 ; CHECK: $d0 = COPY [[XTNv2i32_]]
720 ; CHECK: RET_ReallyLR implicit $d0
721 %0:fpr(<2 x s64>) = COPY $q0
722 %1:fpr(<2 x s64>) = COPY $q1
723 %4:fpr(<2 x s64>) = G_ICMP intpred(ne), %0(<2 x s64>), %1
724 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
725 $d0 = COPY %3(<2 x s32>)
726 RET_ReallyLR implicit $d0
733 regBankSelected: true
734 tracksRegLiveness: true
736 - { id: 0, class: fpr }
737 - { id: 1, class: fpr }
738 - { id: 2, class: _ }
739 - { id: 3, class: fpr }
740 - { id: 4, class: fpr }
741 machineFunctionInfo: {}
746 ; CHECK-LABEL: name: test_v4i32_ne
747 ; CHECK: liveins: $q0, $q1
748 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
749 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
750 ; CHECK: [[CMEQv4i32_:%[0-9]+]]:fpr128 = CMEQv4i32 [[COPY]], [[COPY1]]
751 ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv4i32_]]
752 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[NOTv16i8_]]
753 ; CHECK: $d0 = COPY [[XTNv4i16_]]
754 ; CHECK: RET_ReallyLR implicit $d0
755 %0:fpr(<4 x s32>) = COPY $q0
756 %1:fpr(<4 x s32>) = COPY $q1
757 %4:fpr(<4 x s32>) = G_ICMP intpred(ne), %0(<4 x s32>), %1
758 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
759 $d0 = COPY %3(<4 x s16>)
760 RET_ReallyLR implicit $d0
767 regBankSelected: true
768 tracksRegLiveness: true
770 - { id: 0, class: fpr }
771 - { id: 1, class: fpr }
772 - { id: 2, class: _ }
773 - { id: 3, class: fpr }
774 - { id: 4, class: fpr }
775 machineFunctionInfo: {}
780 ; CHECK-LABEL: name: test_v2i32_ne
781 ; CHECK: liveins: $d0, $d1
782 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
783 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
784 ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[COPY]], [[COPY1]]
785 ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
786 ; CHECK: $d0 = COPY [[NOTv8i8_]]
787 ; CHECK: RET_ReallyLR implicit $d0
788 %0:fpr(<2 x s32>) = COPY $d0
789 %1:fpr(<2 x s32>) = COPY $d1
790 %4:fpr(<2 x s32>) = G_ICMP intpred(ne), %0(<2 x s32>), %1
791 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
792 $d0 = COPY %3(<2 x s32>)
793 RET_ReallyLR implicit $d0
800 regBankSelected: true
801 tracksRegLiveness: true
803 - { id: 0, class: _ }
804 - { id: 1, class: _ }
805 - { id: 2, class: fpr }
806 - { id: 3, class: fpr }
807 - { id: 4, class: _ }
808 - { id: 5, class: fpr }
809 - { id: 6, class: _ }
810 - { id: 7, class: fpr }
811 - { id: 8, class: fpr }
812 - { id: 9, class: fpr }
813 - { id: 10, class: gpr }
814 - { id: 11, class: fpr }
815 - { id: 12, class: fpr }
816 - { id: 13, class: gpr }
817 - { id: 14, class: fpr }
818 - { id: 15, class: fpr }
819 machineFunctionInfo: {}
824 ; CHECK-LABEL: name: test_v2i16_ne
825 ; CHECK: liveins: $d0, $d1
826 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
827 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
828 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
829 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
830 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
831 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
832 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
833 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
834 ; CHECK: [[CMEQv2i32_:%[0-9]+]]:fpr64 = CMEQv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
835 ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv2i32_]]
836 ; CHECK: $d0 = COPY [[NOTv8i8_]]
837 ; CHECK: RET_ReallyLR implicit $d0
838 %2:fpr(<2 x s32>) = COPY $d0
839 %3:fpr(<2 x s32>) = COPY $d1
840 %13:gpr(s32) = G_CONSTANT i32 65535
841 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
842 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
843 %7:fpr(<2 x s32>) = G_AND %15, %14
844 %10:gpr(s32) = G_CONSTANT i32 65535
845 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
846 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
847 %8:fpr(<2 x s32>) = G_AND %12, %11
848 %9:fpr(<2 x s32>) = G_ICMP intpred(ne), %7(<2 x s32>), %8
849 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
850 $d0 = COPY %5(<2 x s32>)
851 RET_ReallyLR implicit $d0
858 regBankSelected: true
859 tracksRegLiveness: true
861 - { id: 0, class: fpr }
862 - { id: 1, class: fpr }
863 - { id: 2, class: _ }
864 - { id: 3, class: fpr }
865 - { id: 4, class: fpr }
866 machineFunctionInfo: {}
871 ; CHECK-LABEL: name: test_v8i16_ne
872 ; CHECK: liveins: $q0, $q1
873 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
874 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
875 ; CHECK: [[CMEQv8i16_:%[0-9]+]]:fpr128 = CMEQv8i16 [[COPY]], [[COPY1]]
876 ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv8i16_]]
877 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[NOTv16i8_]]
878 ; CHECK: $d0 = COPY [[XTNv8i8_]]
879 ; CHECK: RET_ReallyLR implicit $d0
880 %0:fpr(<8 x s16>) = COPY $q0
881 %1:fpr(<8 x s16>) = COPY $q1
882 %4:fpr(<8 x s16>) = G_ICMP intpred(ne), %0(<8 x s16>), %1
883 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
884 $d0 = COPY %3(<8 x s8>)
885 RET_ReallyLR implicit $d0
892 regBankSelected: true
893 tracksRegLiveness: true
895 - { id: 0, class: fpr }
896 - { id: 1, class: fpr }
897 - { id: 2, class: _ }
898 - { id: 3, class: fpr }
899 - { id: 4, class: fpr }
900 machineFunctionInfo: {}
905 ; CHECK-LABEL: name: test_v4i16_ne
906 ; CHECK: liveins: $d0, $d1
907 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
908 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
909 ; CHECK: [[CMEQv4i16_:%[0-9]+]]:fpr64 = CMEQv4i16 [[COPY]], [[COPY1]]
910 ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv4i16_]]
911 ; CHECK: $d0 = COPY [[NOTv8i8_]]
912 ; CHECK: RET_ReallyLR implicit $d0
913 %0:fpr(<4 x s16>) = COPY $d0
914 %1:fpr(<4 x s16>) = COPY $d1
915 %4:fpr(<4 x s16>) = G_ICMP intpred(ne), %0(<4 x s16>), %1
916 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
917 $d0 = COPY %3(<4 x s16>)
918 RET_ReallyLR implicit $d0
925 regBankSelected: true
926 tracksRegLiveness: true
928 - { id: 0, class: fpr }
929 - { id: 1, class: fpr }
930 - { id: 2, class: _ }
931 - { id: 3, class: fpr }
932 - { id: 4, class: fpr }
933 machineFunctionInfo: {}
938 ; CHECK-LABEL: name: test_v16i8_ne
939 ; CHECK: liveins: $q0, $q1
940 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
941 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
942 ; CHECK: [[CMEQv16i8_:%[0-9]+]]:fpr128 = CMEQv16i8 [[COPY]], [[COPY1]]
943 ; CHECK: [[NOTv16i8_:%[0-9]+]]:fpr128 = NOTv16i8 [[CMEQv16i8_]]
944 ; CHECK: $q0 = COPY [[NOTv16i8_]]
945 ; CHECK: RET_ReallyLR implicit $q0
946 %0:fpr(<16 x s8>) = COPY $q0
947 %1:fpr(<16 x s8>) = COPY $q1
948 %4:fpr(<16 x s8>) = G_ICMP intpred(ne), %0(<16 x s8>), %1
949 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
950 $q0 = COPY %3(<16 x s8>)
951 RET_ReallyLR implicit $q0
958 regBankSelected: true
959 tracksRegLiveness: true
961 - { id: 0, class: fpr }
962 - { id: 1, class: fpr }
963 - { id: 2, class: _ }
964 - { id: 3, class: fpr }
965 - { id: 4, class: fpr }
966 machineFunctionInfo: {}
971 ; CHECK-LABEL: name: test_v8i8_ne
972 ; CHECK: liveins: $d0, $d1
973 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
974 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
975 ; CHECK: [[CMEQv8i8_:%[0-9]+]]:fpr64 = CMEQv8i8 [[COPY]], [[COPY1]]
976 ; CHECK: [[NOTv8i8_:%[0-9]+]]:fpr64 = NOTv8i8 [[CMEQv8i8_]]
977 ; CHECK: $d0 = COPY [[NOTv8i8_]]
978 ; CHECK: RET_ReallyLR implicit $d0
979 %0:fpr(<8 x s8>) = COPY $d0
980 %1:fpr(<8 x s8>) = COPY $d1
981 %4:fpr(<8 x s8>) = G_ICMP intpred(ne), %0(<8 x s8>), %1
982 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
983 $d0 = COPY %3(<8 x s8>)
984 RET_ReallyLR implicit $d0
991 regBankSelected: true
992 tracksRegLiveness: true
994 - { id: 0, class: fpr }
995 - { id: 1, class: fpr }
996 - { id: 2, class: _ }
997 - { id: 3, class: fpr }
998 - { id: 4, class: fpr }
999 machineFunctionInfo: {}
1004 ; CHECK-LABEL: name: test_v2i64_ugt
1005 ; CHECK: liveins: $q0, $q1
1006 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1007 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1008 ; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY]], [[COPY1]]
1009 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1010 ; CHECK: $d0 = COPY [[XTNv2i32_]]
1011 ; CHECK: RET_ReallyLR implicit $d0
1012 %0:fpr(<2 x s64>) = COPY $q0
1013 %1:fpr(<2 x s64>) = COPY $q1
1014 %4:fpr(<2 x s64>) = G_ICMP intpred(ugt), %0(<2 x s64>), %1
1015 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1016 $d0 = COPY %3(<2 x s32>)
1017 RET_ReallyLR implicit $d0
1021 name: test_v4i32_ugt
1024 regBankSelected: true
1025 tracksRegLiveness: true
1027 - { id: 0, class: fpr }
1028 - { id: 1, class: fpr }
1029 - { id: 2, class: _ }
1030 - { id: 3, class: fpr }
1031 - { id: 4, class: fpr }
1032 machineFunctionInfo: {}
1037 ; CHECK-LABEL: name: test_v4i32_ugt
1038 ; CHECK: liveins: $q0, $q1
1039 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1040 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1041 ; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY]], [[COPY1]]
1042 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1043 ; CHECK: $d0 = COPY [[XTNv4i16_]]
1044 ; CHECK: RET_ReallyLR implicit $d0
1045 %0:fpr(<4 x s32>) = COPY $q0
1046 %1:fpr(<4 x s32>) = COPY $q1
1047 %4:fpr(<4 x s32>) = G_ICMP intpred(ugt), %0(<4 x s32>), %1
1048 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1049 $d0 = COPY %3(<4 x s16>)
1050 RET_ReallyLR implicit $d0
1054 name: test_v2i32_ugt
1057 regBankSelected: true
1058 tracksRegLiveness: true
1060 - { id: 0, class: fpr }
1061 - { id: 1, class: fpr }
1062 - { id: 2, class: _ }
1063 - { id: 3, class: fpr }
1064 - { id: 4, class: fpr }
1065 machineFunctionInfo: {}
1070 ; CHECK-LABEL: name: test_v2i32_ugt
1071 ; CHECK: liveins: $d0, $d1
1072 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1073 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1074 ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY]], [[COPY1]]
1075 ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1076 ; CHECK: RET_ReallyLR implicit $d0
1077 %0:fpr(<2 x s32>) = COPY $d0
1078 %1:fpr(<2 x s32>) = COPY $d1
1079 %4:fpr(<2 x s32>) = G_ICMP intpred(ugt), %0(<2 x s32>), %1
1080 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1081 $d0 = COPY %3(<2 x s32>)
1082 RET_ReallyLR implicit $d0
1086 name: test_v2i16_ugt
1089 regBankSelected: true
1090 tracksRegLiveness: true
1092 - { id: 0, class: _ }
1093 - { id: 1, class: _ }
1094 - { id: 2, class: fpr }
1095 - { id: 3, class: fpr }
1096 - { id: 4, class: _ }
1097 - { id: 5, class: fpr }
1098 - { id: 6, class: _ }
1099 - { id: 7, class: fpr }
1100 - { id: 8, class: fpr }
1101 - { id: 9, class: fpr }
1102 - { id: 10, class: gpr }
1103 - { id: 11, class: fpr }
1104 - { id: 12, class: fpr }
1105 - { id: 13, class: gpr }
1106 - { id: 14, class: fpr }
1107 - { id: 15, class: fpr }
1108 machineFunctionInfo: {}
1113 ; CHECK-LABEL: name: test_v2i16_ugt
1114 ; CHECK: liveins: $d0, $d1
1115 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1116 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1117 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1118 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1119 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
1120 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1121 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1122 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
1123 ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1124 ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1125 ; CHECK: RET_ReallyLR implicit $d0
1126 %2:fpr(<2 x s32>) = COPY $d0
1127 %3:fpr(<2 x s32>) = COPY $d1
1128 %13:gpr(s32) = G_CONSTANT i32 65535
1129 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1130 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1131 %7:fpr(<2 x s32>) = G_AND %15, %14
1132 %10:gpr(s32) = G_CONSTANT i32 65535
1133 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1134 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1135 %8:fpr(<2 x s32>) = G_AND %12, %11
1136 %9:fpr(<2 x s32>) = G_ICMP intpred(ugt), %7(<2 x s32>), %8
1137 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1138 $d0 = COPY %5(<2 x s32>)
1139 RET_ReallyLR implicit $d0
1143 name: test_v8i16_ugt
1146 regBankSelected: true
1147 tracksRegLiveness: true
1149 - { id: 0, class: fpr }
1150 - { id: 1, class: fpr }
1151 - { id: 2, class: _ }
1152 - { id: 3, class: fpr }
1153 - { id: 4, class: fpr }
1154 machineFunctionInfo: {}
1159 ; CHECK-LABEL: name: test_v8i16_ugt
1160 ; CHECK: liveins: $q0, $q1
1161 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1162 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1163 ; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY]], [[COPY1]]
1164 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1165 ; CHECK: $d0 = COPY [[XTNv8i8_]]
1166 ; CHECK: RET_ReallyLR implicit $d0
1167 %0:fpr(<8 x s16>) = COPY $q0
1168 %1:fpr(<8 x s16>) = COPY $q1
1169 %4:fpr(<8 x s16>) = G_ICMP intpred(ugt), %0(<8 x s16>), %1
1170 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1171 $d0 = COPY %3(<8 x s8>)
1172 RET_ReallyLR implicit $d0
1176 name: test_v4i16_ugt
1179 regBankSelected: true
1180 tracksRegLiveness: true
1182 - { id: 0, class: fpr }
1183 - { id: 1, class: fpr }
1184 - { id: 2, class: _ }
1185 - { id: 3, class: fpr }
1186 - { id: 4, class: fpr }
1187 machineFunctionInfo: {}
1192 ; CHECK-LABEL: name: test_v4i16_ugt
1193 ; CHECK: liveins: $d0, $d1
1194 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1195 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1196 ; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY]], [[COPY1]]
1197 ; CHECK: $d0 = COPY [[CMHIv4i16_]]
1198 ; CHECK: RET_ReallyLR implicit $d0
1199 %0:fpr(<4 x s16>) = COPY $d0
1200 %1:fpr(<4 x s16>) = COPY $d1
1201 %4:fpr(<4 x s16>) = G_ICMP intpred(ugt), %0(<4 x s16>), %1
1202 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1203 $d0 = COPY %3(<4 x s16>)
1204 RET_ReallyLR implicit $d0
1208 name: test_v16i8_ugt
1211 regBankSelected: true
1212 tracksRegLiveness: true
1214 - { id: 0, class: fpr }
1215 - { id: 1, class: fpr }
1216 - { id: 2, class: _ }
1217 - { id: 3, class: fpr }
1218 - { id: 4, class: fpr }
1219 machineFunctionInfo: {}
1224 ; CHECK-LABEL: name: test_v16i8_ugt
1225 ; CHECK: liveins: $q0, $q1
1226 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1227 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1228 ; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY]], [[COPY1]]
1229 ; CHECK: $q0 = COPY [[CMHIv16i8_]]
1230 ; CHECK: RET_ReallyLR implicit $q0
1231 %0:fpr(<16 x s8>) = COPY $q0
1232 %1:fpr(<16 x s8>) = COPY $q1
1233 %4:fpr(<16 x s8>) = G_ICMP intpred(ugt), %0(<16 x s8>), %1
1234 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1235 $q0 = COPY %3(<16 x s8>)
1236 RET_ReallyLR implicit $q0
1243 regBankSelected: true
1244 tracksRegLiveness: true
1246 - { id: 0, class: fpr }
1247 - { id: 1, class: fpr }
1248 - { id: 2, class: _ }
1249 - { id: 3, class: fpr }
1250 - { id: 4, class: fpr }
1251 machineFunctionInfo: {}
1256 ; CHECK-LABEL: name: test_v8i8_ugt
1257 ; CHECK: liveins: $d0, $d1
1258 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1259 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1260 ; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY]], [[COPY1]]
1261 ; CHECK: $d0 = COPY [[CMHIv8i8_]]
1262 ; CHECK: RET_ReallyLR implicit $d0
1263 %0:fpr(<8 x s8>) = COPY $d0
1264 %1:fpr(<8 x s8>) = COPY $d1
1265 %4:fpr(<8 x s8>) = G_ICMP intpred(ugt), %0(<8 x s8>), %1
1266 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1267 $d0 = COPY %3(<8 x s8>)
1268 RET_ReallyLR implicit $d0
1272 name: test_v2i64_uge
1275 regBankSelected: true
1276 tracksRegLiveness: true
1278 - { id: 0, class: fpr }
1279 - { id: 1, class: fpr }
1280 - { id: 2, class: _ }
1281 - { id: 3, class: fpr }
1282 - { id: 4, class: fpr }
1283 machineFunctionInfo: {}
1288 ; CHECK-LABEL: name: test_v2i64_uge
1289 ; CHECK: liveins: $q0, $q1
1290 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1291 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1292 ; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY]], [[COPY1]]
1293 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1294 ; CHECK: $d0 = COPY [[XTNv2i32_]]
1295 ; CHECK: RET_ReallyLR implicit $d0
1296 %0:fpr(<2 x s64>) = COPY $q0
1297 %1:fpr(<2 x s64>) = COPY $q1
1298 %4:fpr(<2 x s64>) = G_ICMP intpred(uge), %0(<2 x s64>), %1
1299 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1300 $d0 = COPY %3(<2 x s32>)
1301 RET_ReallyLR implicit $d0
1305 name: test_v4i32_uge
1308 regBankSelected: true
1309 tracksRegLiveness: true
1311 - { id: 0, class: fpr }
1312 - { id: 1, class: fpr }
1313 - { id: 2, class: _ }
1314 - { id: 3, class: fpr }
1315 - { id: 4, class: fpr }
1316 machineFunctionInfo: {}
1321 ; CHECK-LABEL: name: test_v4i32_uge
1322 ; CHECK: liveins: $q0, $q1
1323 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1324 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1325 ; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY]], [[COPY1]]
1326 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1327 ; CHECK: $d0 = COPY [[XTNv4i16_]]
1328 ; CHECK: RET_ReallyLR implicit $d0
1329 %0:fpr(<4 x s32>) = COPY $q0
1330 %1:fpr(<4 x s32>) = COPY $q1
1331 %4:fpr(<4 x s32>) = G_ICMP intpred(uge), %0(<4 x s32>), %1
1332 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1333 $d0 = COPY %3(<4 x s16>)
1334 RET_ReallyLR implicit $d0
1338 name: test_v2i32_uge
1341 regBankSelected: true
1342 tracksRegLiveness: true
1344 - { id: 0, class: fpr }
1345 - { id: 1, class: fpr }
1346 - { id: 2, class: _ }
1347 - { id: 3, class: fpr }
1348 - { id: 4, class: fpr }
1349 machineFunctionInfo: {}
1354 ; CHECK-LABEL: name: test_v2i32_uge
1355 ; CHECK: liveins: $d0, $d1
1356 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1357 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1358 ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY]], [[COPY1]]
1359 ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1360 ; CHECK: RET_ReallyLR implicit $d0
1361 %0:fpr(<2 x s32>) = COPY $d0
1362 %1:fpr(<2 x s32>) = COPY $d1
1363 %4:fpr(<2 x s32>) = G_ICMP intpred(uge), %0(<2 x s32>), %1
1364 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1365 $d0 = COPY %3(<2 x s32>)
1366 RET_ReallyLR implicit $d0
1370 name: test_v2i16_uge
1373 regBankSelected: true
1374 tracksRegLiveness: true
1376 - { id: 0, class: _ }
1377 - { id: 1, class: _ }
1378 - { id: 2, class: fpr }
1379 - { id: 3, class: fpr }
1380 - { id: 4, class: _ }
1381 - { id: 5, class: fpr }
1382 - { id: 6, class: _ }
1383 - { id: 7, class: fpr }
1384 - { id: 8, class: fpr }
1385 - { id: 9, class: fpr }
1386 - { id: 10, class: gpr }
1387 - { id: 11, class: fpr }
1388 - { id: 12, class: fpr }
1389 - { id: 13, class: gpr }
1390 - { id: 14, class: fpr }
1391 - { id: 15, class: fpr }
1392 machineFunctionInfo: {}
1397 ; CHECK-LABEL: name: test_v2i16_uge
1398 ; CHECK: liveins: $d0, $d1
1399 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1400 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1401 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1402 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1403 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
1404 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1405 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1406 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
1407 ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_]], [[ANDv8i8_1]]
1408 ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1409 ; CHECK: RET_ReallyLR implicit $d0
1410 %2:fpr(<2 x s32>) = COPY $d0
1411 %3:fpr(<2 x s32>) = COPY $d1
1412 %13:gpr(s32) = G_CONSTANT i32 65535
1413 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1414 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1415 %7:fpr(<2 x s32>) = G_AND %15, %14
1416 %10:gpr(s32) = G_CONSTANT i32 65535
1417 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1418 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1419 %8:fpr(<2 x s32>) = G_AND %12, %11
1420 %9:fpr(<2 x s32>) = G_ICMP intpred(uge), %7(<2 x s32>), %8
1421 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1422 $d0 = COPY %5(<2 x s32>)
1423 RET_ReallyLR implicit $d0
1427 name: test_v8i16_uge
1430 regBankSelected: true
1431 tracksRegLiveness: true
1433 - { id: 0, class: fpr }
1434 - { id: 1, class: fpr }
1435 - { id: 2, class: _ }
1436 - { id: 3, class: fpr }
1437 - { id: 4, class: fpr }
1438 machineFunctionInfo: {}
1443 ; CHECK-LABEL: name: test_v8i16_uge
1444 ; CHECK: liveins: $q0, $q1
1445 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1446 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1447 ; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY]], [[COPY1]]
1448 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
1449 ; CHECK: $d0 = COPY [[XTNv8i8_]]
1450 ; CHECK: RET_ReallyLR implicit $d0
1451 %0:fpr(<8 x s16>) = COPY $q0
1452 %1:fpr(<8 x s16>) = COPY $q1
1453 %4:fpr(<8 x s16>) = G_ICMP intpred(uge), %0(<8 x s16>), %1
1454 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1455 $d0 = COPY %3(<8 x s8>)
1456 RET_ReallyLR implicit $d0
1460 name: test_v4i16_uge
1463 regBankSelected: true
1464 tracksRegLiveness: true
1466 - { id: 0, class: fpr }
1467 - { id: 1, class: fpr }
1468 - { id: 2, class: _ }
1469 - { id: 3, class: fpr }
1470 - { id: 4, class: fpr }
1471 machineFunctionInfo: {}
1476 ; CHECK-LABEL: name: test_v4i16_uge
1477 ; CHECK: liveins: $d0, $d1
1478 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1479 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1480 ; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY]], [[COPY1]]
1481 ; CHECK: $d0 = COPY [[CMHSv4i16_]]
1482 ; CHECK: RET_ReallyLR implicit $d0
1483 %0:fpr(<4 x s16>) = COPY $d0
1484 %1:fpr(<4 x s16>) = COPY $d1
1485 %4:fpr(<4 x s16>) = G_ICMP intpred(uge), %0(<4 x s16>), %1
1486 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1487 $d0 = COPY %3(<4 x s16>)
1488 RET_ReallyLR implicit $d0
1492 name: test_v16i8_uge
1495 regBankSelected: true
1496 tracksRegLiveness: true
1498 - { id: 0, class: fpr }
1499 - { id: 1, class: fpr }
1500 - { id: 2, class: _ }
1501 - { id: 3, class: fpr }
1502 - { id: 4, class: fpr }
1503 machineFunctionInfo: {}
1508 ; CHECK-LABEL: name: test_v16i8_uge
1509 ; CHECK: liveins: $q0, $q1
1510 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1511 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1512 ; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY]], [[COPY1]]
1513 ; CHECK: $q0 = COPY [[CMHSv16i8_]]
1514 ; CHECK: RET_ReallyLR implicit $q0
1515 %0:fpr(<16 x s8>) = COPY $q0
1516 %1:fpr(<16 x s8>) = COPY $q1
1517 %4:fpr(<16 x s8>) = G_ICMP intpred(uge), %0(<16 x s8>), %1
1518 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1519 $q0 = COPY %3(<16 x s8>)
1520 RET_ReallyLR implicit $q0
1527 regBankSelected: true
1528 tracksRegLiveness: true
1530 - { id: 0, class: fpr }
1531 - { id: 1, class: fpr }
1532 - { id: 2, class: _ }
1533 - { id: 3, class: fpr }
1534 - { id: 4, class: fpr }
1535 machineFunctionInfo: {}
1540 ; CHECK-LABEL: name: test_v8i8_uge
1541 ; CHECK: liveins: $d0, $d1
1542 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1543 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1544 ; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY]], [[COPY1]]
1545 ; CHECK: $d0 = COPY [[CMHSv8i8_]]
1546 ; CHECK: RET_ReallyLR implicit $d0
1547 %0:fpr(<8 x s8>) = COPY $d0
1548 %1:fpr(<8 x s8>) = COPY $d1
1549 %4:fpr(<8 x s8>) = G_ICMP intpred(uge), %0(<8 x s8>), %1
1550 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1551 $d0 = COPY %3(<8 x s8>)
1552 RET_ReallyLR implicit $d0
1556 name: test_v2i64_ult
1559 regBankSelected: true
1560 tracksRegLiveness: true
1562 - { id: 0, class: fpr }
1563 - { id: 1, class: fpr }
1564 - { id: 2, class: _ }
1565 - { id: 3, class: fpr }
1566 - { id: 4, class: fpr }
1567 machineFunctionInfo: {}
1572 ; CHECK-LABEL: name: test_v2i64_ult
1573 ; CHECK: liveins: $q0, $q1
1574 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1575 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1576 ; CHECK: [[CMHIv2i64_:%[0-9]+]]:fpr128 = CMHIv2i64 [[COPY1]], [[COPY]]
1577 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHIv2i64_]]
1578 ; CHECK: $d0 = COPY [[XTNv2i32_]]
1579 ; CHECK: RET_ReallyLR implicit $d0
1580 %0:fpr(<2 x s64>) = COPY $q0
1581 %1:fpr(<2 x s64>) = COPY $q1
1582 %4:fpr(<2 x s64>) = G_ICMP intpred(ult), %0(<2 x s64>), %1
1583 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1584 $d0 = COPY %3(<2 x s32>)
1585 RET_ReallyLR implicit $d0
1589 name: test_v4i32_ult
1592 regBankSelected: true
1593 tracksRegLiveness: true
1595 - { id: 0, class: fpr }
1596 - { id: 1, class: fpr }
1597 - { id: 2, class: _ }
1598 - { id: 3, class: fpr }
1599 - { id: 4, class: fpr }
1600 machineFunctionInfo: {}
1605 ; CHECK-LABEL: name: test_v4i32_ult
1606 ; CHECK: liveins: $q0, $q1
1607 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1608 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1609 ; CHECK: [[CMHIv4i32_:%[0-9]+]]:fpr128 = CMHIv4i32 [[COPY1]], [[COPY]]
1610 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHIv4i32_]]
1611 ; CHECK: $d0 = COPY [[XTNv4i16_]]
1612 ; CHECK: RET_ReallyLR implicit $d0
1613 %0:fpr(<4 x s32>) = COPY $q0
1614 %1:fpr(<4 x s32>) = COPY $q1
1615 %4:fpr(<4 x s32>) = G_ICMP intpred(ult), %0(<4 x s32>), %1
1616 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1617 $d0 = COPY %3(<4 x s16>)
1618 RET_ReallyLR implicit $d0
1622 name: test_v2i32_ult
1625 regBankSelected: true
1626 tracksRegLiveness: true
1628 - { id: 0, class: fpr }
1629 - { id: 1, class: fpr }
1630 - { id: 2, class: _ }
1631 - { id: 3, class: fpr }
1632 - { id: 4, class: fpr }
1633 machineFunctionInfo: {}
1638 ; CHECK-LABEL: name: test_v2i32_ult
1639 ; CHECK: liveins: $d0, $d1
1640 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1641 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1642 ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[COPY1]], [[COPY]]
1643 ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1644 ; CHECK: RET_ReallyLR implicit $d0
1645 %0:fpr(<2 x s32>) = COPY $d0
1646 %1:fpr(<2 x s32>) = COPY $d1
1647 %4:fpr(<2 x s32>) = G_ICMP intpred(ult), %0(<2 x s32>), %1
1648 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1649 $d0 = COPY %3(<2 x s32>)
1650 RET_ReallyLR implicit $d0
1654 name: test_v2i16_ult
1657 regBankSelected: true
1658 tracksRegLiveness: true
1660 - { id: 0, class: _ }
1661 - { id: 1, class: _ }
1662 - { id: 2, class: fpr }
1663 - { id: 3, class: fpr }
1664 - { id: 4, class: _ }
1665 - { id: 5, class: fpr }
1666 - { id: 6, class: _ }
1667 - { id: 7, class: fpr }
1668 - { id: 8, class: fpr }
1669 - { id: 9, class: fpr }
1670 - { id: 10, class: gpr }
1671 - { id: 11, class: fpr }
1672 - { id: 12, class: fpr }
1673 - { id: 13, class: gpr }
1674 - { id: 14, class: fpr }
1675 - { id: 15, class: fpr }
1676 machineFunctionInfo: {}
1681 ; CHECK-LABEL: name: test_v2i16_ult
1682 ; CHECK: liveins: $d0, $d1
1683 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1684 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1685 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1686 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1687 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
1688 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1689 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1690 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
1691 ; CHECK: [[CMHIv2i32_:%[0-9]+]]:fpr64 = CMHIv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
1692 ; CHECK: $d0 = COPY [[CMHIv2i32_]]
1693 ; CHECK: RET_ReallyLR implicit $d0
1694 %2:fpr(<2 x s32>) = COPY $d0
1695 %3:fpr(<2 x s32>) = COPY $d1
1696 %13:gpr(s32) = G_CONSTANT i32 65535
1697 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1698 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1699 %7:fpr(<2 x s32>) = G_AND %15, %14
1700 %10:gpr(s32) = G_CONSTANT i32 65535
1701 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1702 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1703 %8:fpr(<2 x s32>) = G_AND %12, %11
1704 %9:fpr(<2 x s32>) = G_ICMP intpred(ult), %7(<2 x s32>), %8
1705 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1706 $d0 = COPY %5(<2 x s32>)
1707 RET_ReallyLR implicit $d0
1711 name: test_v8i16_ult
1714 regBankSelected: true
1715 tracksRegLiveness: true
1717 - { id: 0, class: fpr }
1718 - { id: 1, class: fpr }
1719 - { id: 2, class: _ }
1720 - { id: 3, class: fpr }
1721 - { id: 4, class: fpr }
1722 machineFunctionInfo: {}
1727 ; CHECK-LABEL: name: test_v8i16_ult
1728 ; CHECK: liveins: $q0, $q1
1729 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1730 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1731 ; CHECK: [[CMHIv8i16_:%[0-9]+]]:fpr128 = CMHIv8i16 [[COPY1]], [[COPY]]
1732 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHIv8i16_]]
1733 ; CHECK: $d0 = COPY [[XTNv8i8_]]
1734 ; CHECK: RET_ReallyLR implicit $d0
1735 %0:fpr(<8 x s16>) = COPY $q0
1736 %1:fpr(<8 x s16>) = COPY $q1
1737 %4:fpr(<8 x s16>) = G_ICMP intpred(ult), %0(<8 x s16>), %1
1738 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
1739 $d0 = COPY %3(<8 x s8>)
1740 RET_ReallyLR implicit $d0
1744 name: test_v4i16_ult
1747 regBankSelected: true
1748 tracksRegLiveness: true
1750 - { id: 0, class: fpr }
1751 - { id: 1, class: fpr }
1752 - { id: 2, class: _ }
1753 - { id: 3, class: fpr }
1754 - { id: 4, class: fpr }
1755 machineFunctionInfo: {}
1760 ; CHECK-LABEL: name: test_v4i16_ult
1761 ; CHECK: liveins: $d0, $d1
1762 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1763 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1764 ; CHECK: [[CMHIv4i16_:%[0-9]+]]:fpr64 = CMHIv4i16 [[COPY1]], [[COPY]]
1765 ; CHECK: $d0 = COPY [[CMHIv4i16_]]
1766 ; CHECK: RET_ReallyLR implicit $d0
1767 %0:fpr(<4 x s16>) = COPY $d0
1768 %1:fpr(<4 x s16>) = COPY $d1
1769 %4:fpr(<4 x s16>) = G_ICMP intpred(ult), %0(<4 x s16>), %1
1770 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
1771 $d0 = COPY %3(<4 x s16>)
1772 RET_ReallyLR implicit $d0
1776 name: test_v16i8_ult
1779 regBankSelected: true
1780 tracksRegLiveness: true
1782 - { id: 0, class: fpr }
1783 - { id: 1, class: fpr }
1784 - { id: 2, class: _ }
1785 - { id: 3, class: fpr }
1786 - { id: 4, class: fpr }
1787 machineFunctionInfo: {}
1792 ; CHECK-LABEL: name: test_v16i8_ult
1793 ; CHECK: liveins: $q0, $q1
1794 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1795 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1796 ; CHECK: [[CMHIv16i8_:%[0-9]+]]:fpr128 = CMHIv16i8 [[COPY1]], [[COPY]]
1797 ; CHECK: $q0 = COPY [[CMHIv16i8_]]
1798 ; CHECK: RET_ReallyLR implicit $q0
1799 %0:fpr(<16 x s8>) = COPY $q0
1800 %1:fpr(<16 x s8>) = COPY $q1
1801 %4:fpr(<16 x s8>) = G_ICMP intpred(ult), %0(<16 x s8>), %1
1802 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
1803 $q0 = COPY %3(<16 x s8>)
1804 RET_ReallyLR implicit $q0
1811 regBankSelected: true
1812 tracksRegLiveness: true
1814 - { id: 0, class: fpr }
1815 - { id: 1, class: fpr }
1816 - { id: 2, class: _ }
1817 - { id: 3, class: fpr }
1818 - { id: 4, class: fpr }
1819 machineFunctionInfo: {}
1824 ; CHECK-LABEL: name: test_v8i8_ult
1825 ; CHECK: liveins: $d0, $d1
1826 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1827 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1828 ; CHECK: [[CMHIv8i8_:%[0-9]+]]:fpr64 = CMHIv8i8 [[COPY1]], [[COPY]]
1829 ; CHECK: $d0 = COPY [[CMHIv8i8_]]
1830 ; CHECK: RET_ReallyLR implicit $d0
1831 %0:fpr(<8 x s8>) = COPY $d0
1832 %1:fpr(<8 x s8>) = COPY $d1
1833 %4:fpr(<8 x s8>) = G_ICMP intpred(ult), %0(<8 x s8>), %1
1834 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
1835 $d0 = COPY %3(<8 x s8>)
1836 RET_ReallyLR implicit $d0
1840 name: test_v2i64_ule
1843 regBankSelected: true
1844 tracksRegLiveness: true
1846 - { id: 0, class: fpr }
1847 - { id: 1, class: fpr }
1848 - { id: 2, class: _ }
1849 - { id: 3, class: fpr }
1850 - { id: 4, class: fpr }
1851 machineFunctionInfo: {}
1856 ; CHECK-LABEL: name: test_v2i64_ule
1857 ; CHECK: liveins: $q0, $q1
1858 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1859 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1860 ; CHECK: [[CMHSv2i64_:%[0-9]+]]:fpr128 = CMHSv2i64 [[COPY1]], [[COPY]]
1861 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMHSv2i64_]]
1862 ; CHECK: $d0 = COPY [[XTNv2i32_]]
1863 ; CHECK: RET_ReallyLR implicit $d0
1864 %0:fpr(<2 x s64>) = COPY $q0
1865 %1:fpr(<2 x s64>) = COPY $q1
1866 %4:fpr(<2 x s64>) = G_ICMP intpred(ule), %0(<2 x s64>), %1
1867 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
1868 $d0 = COPY %3(<2 x s32>)
1869 RET_ReallyLR implicit $d0
1873 name: test_v4i32_ule
1876 regBankSelected: true
1877 tracksRegLiveness: true
1879 - { id: 0, class: fpr }
1880 - { id: 1, class: fpr }
1881 - { id: 2, class: _ }
1882 - { id: 3, class: fpr }
1883 - { id: 4, class: fpr }
1884 machineFunctionInfo: {}
1889 ; CHECK-LABEL: name: test_v4i32_ule
1890 ; CHECK: liveins: $q0, $q1
1891 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
1892 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
1893 ; CHECK: [[CMHSv4i32_:%[0-9]+]]:fpr128 = CMHSv4i32 [[COPY1]], [[COPY]]
1894 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMHSv4i32_]]
1895 ; CHECK: $d0 = COPY [[XTNv4i16_]]
1896 ; CHECK: RET_ReallyLR implicit $d0
1897 %0:fpr(<4 x s32>) = COPY $q0
1898 %1:fpr(<4 x s32>) = COPY $q1
1899 %4:fpr(<4 x s32>) = G_ICMP intpred(ule), %0(<4 x s32>), %1
1900 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
1901 $d0 = COPY %3(<4 x s16>)
1902 RET_ReallyLR implicit $d0
1906 name: test_v2i32_ule
1909 regBankSelected: true
1910 tracksRegLiveness: true
1912 - { id: 0, class: fpr }
1913 - { id: 1, class: fpr }
1914 - { id: 2, class: _ }
1915 - { id: 3, class: fpr }
1916 - { id: 4, class: fpr }
1917 machineFunctionInfo: {}
1922 ; CHECK-LABEL: name: test_v2i32_ule
1923 ; CHECK: liveins: $d0, $d1
1924 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1925 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1926 ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[COPY1]], [[COPY]]
1927 ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1928 ; CHECK: RET_ReallyLR implicit $d0
1929 %0:fpr(<2 x s32>) = COPY $d0
1930 %1:fpr(<2 x s32>) = COPY $d1
1931 %4:fpr(<2 x s32>) = G_ICMP intpred(ule), %0(<2 x s32>), %1
1932 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
1933 $d0 = COPY %3(<2 x s32>)
1934 RET_ReallyLR implicit $d0
1938 name: test_v2i16_ule
1941 regBankSelected: true
1942 tracksRegLiveness: true
1944 - { id: 0, class: _ }
1945 - { id: 1, class: _ }
1946 - { id: 2, class: fpr }
1947 - { id: 3, class: fpr }
1948 - { id: 4, class: _ }
1949 - { id: 5, class: fpr }
1950 - { id: 6, class: _ }
1951 - { id: 7, class: fpr }
1952 - { id: 8, class: fpr }
1953 - { id: 9, class: fpr }
1954 - { id: 10, class: gpr }
1955 - { id: 11, class: fpr }
1956 - { id: 12, class: fpr }
1957 - { id: 13, class: gpr }
1958 - { id: 14, class: fpr }
1959 - { id: 15, class: fpr }
1960 machineFunctionInfo: {}
1965 ; CHECK-LABEL: name: test_v2i16_ule
1966 ; CHECK: liveins: $d0, $d1
1967 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
1968 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
1969 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1970 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1971 ; CHECK: [[ANDv8i8_:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY]], [[LDRDui]]
1972 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
1973 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
1974 ; CHECK: [[ANDv8i8_1:%[0-9]+]]:fpr64 = ANDv8i8 [[COPY1]], [[LDRDui1]]
1975 ; CHECK: [[CMHSv2i32_:%[0-9]+]]:fpr64 = CMHSv2i32 [[ANDv8i8_1]], [[ANDv8i8_]]
1976 ; CHECK: $d0 = COPY [[CMHSv2i32_]]
1977 ; CHECK: RET_ReallyLR implicit $d0
1978 %2:fpr(<2 x s32>) = COPY $d0
1979 %3:fpr(<2 x s32>) = COPY $d1
1980 %13:gpr(s32) = G_CONSTANT i32 65535
1981 %14:fpr(<2 x s32>) = G_BUILD_VECTOR %13(s32), %13(s32)
1982 %15:fpr(<2 x s32>) = COPY %2(<2 x s32>)
1983 %7:fpr(<2 x s32>) = G_AND %15, %14
1984 %10:gpr(s32) = G_CONSTANT i32 65535
1985 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
1986 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
1987 %8:fpr(<2 x s32>) = G_AND %12, %11
1988 %9:fpr(<2 x s32>) = G_ICMP intpred(ule), %7(<2 x s32>), %8
1989 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
1990 $d0 = COPY %5(<2 x s32>)
1991 RET_ReallyLR implicit $d0
1995 name: test_v8i16_ule
1998 regBankSelected: true
1999 tracksRegLiveness: true
2001 - { id: 0, class: fpr }
2002 - { id: 1, class: fpr }
2003 - { id: 2, class: _ }
2004 - { id: 3, class: fpr }
2005 - { id: 4, class: fpr }
2006 machineFunctionInfo: {}
2011 ; CHECK-LABEL: name: test_v8i16_ule
2012 ; CHECK: liveins: $q0, $q1
2013 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2014 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2015 ; CHECK: [[CMHSv8i16_:%[0-9]+]]:fpr128 = CMHSv8i16 [[COPY1]], [[COPY]]
2016 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMHSv8i16_]]
2017 ; CHECK: $d0 = COPY [[XTNv8i8_]]
2018 ; CHECK: RET_ReallyLR implicit $d0
2019 %0:fpr(<8 x s16>) = COPY $q0
2020 %1:fpr(<8 x s16>) = COPY $q1
2021 %4:fpr(<8 x s16>) = G_ICMP intpred(ule), %0(<8 x s16>), %1
2022 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2023 $d0 = COPY %3(<8 x s8>)
2024 RET_ReallyLR implicit $d0
2028 name: test_v4i16_ule
2031 regBankSelected: true
2032 tracksRegLiveness: true
2034 - { id: 0, class: fpr }
2035 - { id: 1, class: fpr }
2036 - { id: 2, class: _ }
2037 - { id: 3, class: fpr }
2038 - { id: 4, class: fpr }
2039 machineFunctionInfo: {}
2044 ; CHECK-LABEL: name: test_v4i16_ule
2045 ; CHECK: liveins: $d0, $d1
2046 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2047 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2048 ; CHECK: [[CMHSv4i16_:%[0-9]+]]:fpr64 = CMHSv4i16 [[COPY1]], [[COPY]]
2049 ; CHECK: $d0 = COPY [[CMHSv4i16_]]
2050 ; CHECK: RET_ReallyLR implicit $d0
2051 %0:fpr(<4 x s16>) = COPY $d0
2052 %1:fpr(<4 x s16>) = COPY $d1
2053 %4:fpr(<4 x s16>) = G_ICMP intpred(ule), %0(<4 x s16>), %1
2054 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2055 $d0 = COPY %3(<4 x s16>)
2056 RET_ReallyLR implicit $d0
2060 name: test_v16i8_ule
2063 regBankSelected: true
2064 tracksRegLiveness: true
2066 - { id: 0, class: fpr }
2067 - { id: 1, class: fpr }
2068 - { id: 2, class: _ }
2069 - { id: 3, class: fpr }
2070 - { id: 4, class: fpr }
2071 machineFunctionInfo: {}
2076 ; CHECK-LABEL: name: test_v16i8_ule
2077 ; CHECK: liveins: $q0, $q1
2078 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2079 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2080 ; CHECK: [[CMHSv16i8_:%[0-9]+]]:fpr128 = CMHSv16i8 [[COPY1]], [[COPY]]
2081 ; CHECK: $q0 = COPY [[CMHSv16i8_]]
2082 ; CHECK: RET_ReallyLR implicit $q0
2083 %0:fpr(<16 x s8>) = COPY $q0
2084 %1:fpr(<16 x s8>) = COPY $q1
2085 %4:fpr(<16 x s8>) = G_ICMP intpred(ule), %0(<16 x s8>), %1
2086 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2087 $q0 = COPY %3(<16 x s8>)
2088 RET_ReallyLR implicit $q0
2095 regBankSelected: true
2096 tracksRegLiveness: true
2098 - { id: 0, class: fpr }
2099 - { id: 1, class: fpr }
2100 - { id: 2, class: _ }
2101 - { id: 3, class: fpr }
2102 - { id: 4, class: fpr }
2103 machineFunctionInfo: {}
2108 ; CHECK-LABEL: name: test_v8i8_ule
2109 ; CHECK: liveins: $d0, $d1
2110 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2111 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2112 ; CHECK: [[CMHSv8i8_:%[0-9]+]]:fpr64 = CMHSv8i8 [[COPY1]], [[COPY]]
2113 ; CHECK: $d0 = COPY [[CMHSv8i8_]]
2114 ; CHECK: RET_ReallyLR implicit $d0
2115 %0:fpr(<8 x s8>) = COPY $d0
2116 %1:fpr(<8 x s8>) = COPY $d1
2117 %4:fpr(<8 x s8>) = G_ICMP intpred(ule), %0(<8 x s8>), %1
2118 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2119 $d0 = COPY %3(<8 x s8>)
2120 RET_ReallyLR implicit $d0
2124 name: test_v2i64_sgt
2127 regBankSelected: true
2128 tracksRegLiveness: true
2130 - { id: 0, class: fpr }
2131 - { id: 1, class: fpr }
2132 - { id: 2, class: _ }
2133 - { id: 3, class: fpr }
2134 - { id: 4, class: fpr }
2135 machineFunctionInfo: {}
2140 ; CHECK-LABEL: name: test_v2i64_sgt
2141 ; CHECK: liveins: $q0, $q1
2142 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2143 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2144 ; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY]], [[COPY1]]
2145 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2146 ; CHECK: $d0 = COPY [[XTNv2i32_]]
2147 ; CHECK: RET_ReallyLR implicit $d0
2148 %0:fpr(<2 x s64>) = COPY $q0
2149 %1:fpr(<2 x s64>) = COPY $q1
2150 %4:fpr(<2 x s64>) = G_ICMP intpred(sgt), %0(<2 x s64>), %1
2151 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2152 $d0 = COPY %3(<2 x s32>)
2153 RET_ReallyLR implicit $d0
2157 name: test_v4i32_sgt
2160 regBankSelected: true
2161 tracksRegLiveness: true
2163 - { id: 0, class: fpr }
2164 - { id: 1, class: fpr }
2165 - { id: 2, class: _ }
2166 - { id: 3, class: fpr }
2167 - { id: 4, class: fpr }
2168 machineFunctionInfo: {}
2173 ; CHECK-LABEL: name: test_v4i32_sgt
2174 ; CHECK: liveins: $q0, $q1
2175 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2176 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2177 ; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY]], [[COPY1]]
2178 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2179 ; CHECK: $d0 = COPY [[XTNv4i16_]]
2180 ; CHECK: RET_ReallyLR implicit $d0
2181 %0:fpr(<4 x s32>) = COPY $q0
2182 %1:fpr(<4 x s32>) = COPY $q1
2183 %4:fpr(<4 x s32>) = G_ICMP intpred(sgt), %0(<4 x s32>), %1
2184 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2185 $d0 = COPY %3(<4 x s16>)
2186 RET_ReallyLR implicit $d0
2190 name: test_v2i32_sgt
2193 regBankSelected: true
2194 tracksRegLiveness: true
2196 - { id: 0, class: fpr }
2197 - { id: 1, class: fpr }
2198 - { id: 2, class: _ }
2199 - { id: 3, class: fpr }
2200 - { id: 4, class: fpr }
2201 machineFunctionInfo: {}
2206 ; CHECK-LABEL: name: test_v2i32_sgt
2207 ; CHECK: liveins: $d0, $d1
2208 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2209 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2210 ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY]], [[COPY1]]
2211 ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2212 ; CHECK: RET_ReallyLR implicit $d0
2213 %0:fpr(<2 x s32>) = COPY $d0
2214 %1:fpr(<2 x s32>) = COPY $d1
2215 %4:fpr(<2 x s32>) = G_ICMP intpred(sgt), %0(<2 x s32>), %1
2216 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2217 $d0 = COPY %3(<2 x s32>)
2218 RET_ReallyLR implicit $d0
2222 name: test_v2i16_sgt
2225 regBankSelected: true
2226 tracksRegLiveness: true
2228 - { id: 0, class: _ }
2229 - { id: 1, class: _ }
2230 - { id: 2, class: fpr }
2231 - { id: 3, class: fpr }
2232 - { id: 4, class: _ }
2233 - { id: 5, class: fpr }
2234 - { id: 6, class: _ }
2235 - { id: 7, class: fpr }
2236 - { id: 8, class: fpr }
2237 - { id: 9, class: fpr }
2238 - { id: 10, class: gpr }
2239 - { id: 11, class: fpr }
2240 - { id: 12, class: fpr }
2241 - { id: 13, class: fpr }
2242 - { id: 14, class: gpr }
2243 - { id: 15, class: fpr }
2244 - { id: 16, class: fpr }
2245 - { id: 17, class: fpr }
2246 machineFunctionInfo: {}
2251 ; CHECK-LABEL: name: test_v2i16_sgt
2252 ; CHECK: liveins: $d0, $d1
2253 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2254 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2255 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2256 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2257 ; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2258 ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
2259 ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2260 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2261 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2262 ; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2263 ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
2264 ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2265 ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2266 ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2267 ; CHECK: RET_ReallyLR implicit $d0
2268 %2:fpr(<2 x s32>) = COPY $d0
2269 %3:fpr(<2 x s32>) = COPY $d1
2270 %14:gpr(s32) = G_CONSTANT i32 16
2271 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2272 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2273 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2274 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2275 %10:gpr(s32) = G_CONSTANT i32 16
2276 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2277 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2278 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2279 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2280 %9:fpr(<2 x s32>) = G_ICMP intpred(sgt), %7(<2 x s32>), %8
2281 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2282 $d0 = COPY %5(<2 x s32>)
2283 RET_ReallyLR implicit $d0
2287 name: test_v8i16_sgt
2290 regBankSelected: true
2291 tracksRegLiveness: true
2293 - { id: 0, class: fpr }
2294 - { id: 1, class: fpr }
2295 - { id: 2, class: _ }
2296 - { id: 3, class: fpr }
2297 - { id: 4, class: fpr }
2298 machineFunctionInfo: {}
2303 ; CHECK-LABEL: name: test_v8i16_sgt
2304 ; CHECK: liveins: $q0, $q1
2305 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2306 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2307 ; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY]], [[COPY1]]
2308 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2309 ; CHECK: $d0 = COPY [[XTNv8i8_]]
2310 ; CHECK: RET_ReallyLR implicit $d0
2311 %0:fpr(<8 x s16>) = COPY $q0
2312 %1:fpr(<8 x s16>) = COPY $q1
2313 %4:fpr(<8 x s16>) = G_ICMP intpred(sgt), %0(<8 x s16>), %1
2314 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2315 $d0 = COPY %3(<8 x s8>)
2316 RET_ReallyLR implicit $d0
2320 name: test_v4i16_sgt
2323 regBankSelected: true
2324 tracksRegLiveness: true
2326 - { id: 0, class: fpr }
2327 - { id: 1, class: fpr }
2328 - { id: 2, class: _ }
2329 - { id: 3, class: fpr }
2330 - { id: 4, class: fpr }
2331 machineFunctionInfo: {}
2336 ; CHECK-LABEL: name: test_v4i16_sgt
2337 ; CHECK: liveins: $d0, $d1
2338 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2339 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2340 ; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY]], [[COPY1]]
2341 ; CHECK: $d0 = COPY [[CMGTv4i16_]]
2342 ; CHECK: RET_ReallyLR implicit $d0
2343 %0:fpr(<4 x s16>) = COPY $d0
2344 %1:fpr(<4 x s16>) = COPY $d1
2345 %4:fpr(<4 x s16>) = G_ICMP intpred(sgt), %0(<4 x s16>), %1
2346 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2347 $d0 = COPY %3(<4 x s16>)
2348 RET_ReallyLR implicit $d0
2352 name: test_v16i8_sgt
2355 regBankSelected: true
2356 tracksRegLiveness: true
2358 - { id: 0, class: fpr }
2359 - { id: 1, class: fpr }
2360 - { id: 2, class: _ }
2361 - { id: 3, class: fpr }
2362 - { id: 4, class: fpr }
2363 machineFunctionInfo: {}
2368 ; CHECK-LABEL: name: test_v16i8_sgt
2369 ; CHECK: liveins: $q0, $q1
2370 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2371 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2372 ; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY]], [[COPY1]]
2373 ; CHECK: $q0 = COPY [[CMGTv16i8_]]
2374 ; CHECK: RET_ReallyLR implicit $q0
2375 %0:fpr(<16 x s8>) = COPY $q0
2376 %1:fpr(<16 x s8>) = COPY $q1
2377 %4:fpr(<16 x s8>) = G_ICMP intpred(sgt), %0(<16 x s8>), %1
2378 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2379 $q0 = COPY %3(<16 x s8>)
2380 RET_ReallyLR implicit $q0
2387 regBankSelected: true
2388 tracksRegLiveness: true
2390 - { id: 0, class: fpr }
2391 - { id: 1, class: fpr }
2392 - { id: 2, class: _ }
2393 - { id: 3, class: fpr }
2394 - { id: 4, class: fpr }
2395 machineFunctionInfo: {}
2400 ; CHECK-LABEL: name: test_v8i8_sgt
2401 ; CHECK: liveins: $d0, $d1
2402 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2403 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2404 ; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY]], [[COPY1]]
2405 ; CHECK: $d0 = COPY [[CMGTv8i8_]]
2406 ; CHECK: RET_ReallyLR implicit $d0
2407 %0:fpr(<8 x s8>) = COPY $d0
2408 %1:fpr(<8 x s8>) = COPY $d1
2409 %4:fpr(<8 x s8>) = G_ICMP intpred(sgt), %0(<8 x s8>), %1
2410 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2411 $d0 = COPY %3(<8 x s8>)
2412 RET_ReallyLR implicit $d0
2416 name: test_v2i64_sge
2419 regBankSelected: true
2420 tracksRegLiveness: true
2422 - { id: 0, class: fpr }
2423 - { id: 1, class: fpr }
2424 - { id: 2, class: _ }
2425 - { id: 3, class: fpr }
2426 - { id: 4, class: fpr }
2427 machineFunctionInfo: {}
2432 ; CHECK-LABEL: name: test_v2i64_sge
2433 ; CHECK: liveins: $q0, $q1
2434 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2435 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2436 ; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY]], [[COPY1]]
2437 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
2438 ; CHECK: $d0 = COPY [[XTNv2i32_]]
2439 ; CHECK: RET_ReallyLR implicit $d0
2440 %0:fpr(<2 x s64>) = COPY $q0
2441 %1:fpr(<2 x s64>) = COPY $q1
2442 %4:fpr(<2 x s64>) = G_ICMP intpred(sge), %0(<2 x s64>), %1
2443 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2444 $d0 = COPY %3(<2 x s32>)
2445 RET_ReallyLR implicit $d0
2449 name: test_v4i32_sge
2452 regBankSelected: true
2453 tracksRegLiveness: true
2455 - { id: 0, class: fpr }
2456 - { id: 1, class: fpr }
2457 - { id: 2, class: _ }
2458 - { id: 3, class: fpr }
2459 - { id: 4, class: fpr }
2460 machineFunctionInfo: {}
2465 ; CHECK-LABEL: name: test_v4i32_sge
2466 ; CHECK: liveins: $q0, $q1
2467 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2468 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2469 ; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY]], [[COPY1]]
2470 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
2471 ; CHECK: $d0 = COPY [[XTNv4i16_]]
2472 ; CHECK: RET_ReallyLR implicit $d0
2473 %0:fpr(<4 x s32>) = COPY $q0
2474 %1:fpr(<4 x s32>) = COPY $q1
2475 %4:fpr(<4 x s32>) = G_ICMP intpred(sge), %0(<4 x s32>), %1
2476 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2477 $d0 = COPY %3(<4 x s16>)
2478 RET_ReallyLR implicit $d0
2482 name: test_v2i32_sge
2485 regBankSelected: true
2486 tracksRegLiveness: true
2488 - { id: 0, class: fpr }
2489 - { id: 1, class: fpr }
2490 - { id: 2, class: _ }
2491 - { id: 3, class: fpr }
2492 - { id: 4, class: fpr }
2493 machineFunctionInfo: {}
2498 ; CHECK-LABEL: name: test_v2i32_sge
2499 ; CHECK: liveins: $d0, $d1
2500 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2501 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2502 ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY]], [[COPY1]]
2503 ; CHECK: $d0 = COPY [[CMGEv2i32_]]
2504 ; CHECK: RET_ReallyLR implicit $d0
2505 %0:fpr(<2 x s32>) = COPY $d0
2506 %1:fpr(<2 x s32>) = COPY $d1
2507 %4:fpr(<2 x s32>) = G_ICMP intpred(sge), %0(<2 x s32>), %1
2508 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2509 $d0 = COPY %3(<2 x s32>)
2510 RET_ReallyLR implicit $d0
2514 name: test_v2i16_sge
2517 regBankSelected: true
2518 tracksRegLiveness: true
2520 - { id: 0, class: _ }
2521 - { id: 1, class: _ }
2522 - { id: 2, class: fpr }
2523 - { id: 3, class: fpr }
2524 - { id: 4, class: _ }
2525 - { id: 5, class: fpr }
2526 - { id: 6, class: _ }
2527 - { id: 7, class: fpr }
2528 - { id: 8, class: fpr }
2529 - { id: 9, class: fpr }
2530 - { id: 10, class: gpr }
2531 - { id: 11, class: fpr }
2532 - { id: 12, class: fpr }
2533 - { id: 13, class: fpr }
2534 - { id: 14, class: gpr }
2535 - { id: 15, class: fpr }
2536 - { id: 16, class: fpr }
2537 - { id: 17, class: fpr }
2538 machineFunctionInfo: {}
2543 ; CHECK-LABEL: name: test_v2i16_sge
2544 ; CHECK: liveins: $d0, $d1
2545 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2546 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2547 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2548 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2549 ; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2550 ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
2551 ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2552 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2553 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2554 ; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2555 ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
2556 ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2557 ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_]], [[SSHLv2i32_1]]
2558 ; CHECK: $d0 = COPY [[CMGEv2i32_]]
2559 ; CHECK: RET_ReallyLR implicit $d0
2560 %2:fpr(<2 x s32>) = COPY $d0
2561 %3:fpr(<2 x s32>) = COPY $d1
2562 %14:gpr(s32) = G_CONSTANT i32 16
2563 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2564 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2565 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2566 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2567 %10:gpr(s32) = G_CONSTANT i32 16
2568 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2569 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2570 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2571 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2572 %9:fpr(<2 x s32>) = G_ICMP intpred(sge), %7(<2 x s32>), %8
2573 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2574 $d0 = COPY %5(<2 x s32>)
2575 RET_ReallyLR implicit $d0
2579 name: test_v8i16_sge
2582 regBankSelected: true
2583 tracksRegLiveness: true
2585 - { id: 0, class: fpr }
2586 - { id: 1, class: fpr }
2587 - { id: 2, class: _ }
2588 - { id: 3, class: fpr }
2589 - { id: 4, class: fpr }
2590 machineFunctionInfo: {}
2595 ; CHECK-LABEL: name: test_v8i16_sge
2596 ; CHECK: liveins: $q0, $q1
2597 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2598 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2599 ; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY]], [[COPY1]]
2600 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
2601 ; CHECK: $d0 = COPY [[XTNv8i8_]]
2602 ; CHECK: RET_ReallyLR implicit $d0
2603 %0:fpr(<8 x s16>) = COPY $q0
2604 %1:fpr(<8 x s16>) = COPY $q1
2605 %4:fpr(<8 x s16>) = G_ICMP intpred(sge), %0(<8 x s16>), %1
2606 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2607 $d0 = COPY %3(<8 x s8>)
2608 RET_ReallyLR implicit $d0
2612 name: test_v4i16_sge
2615 regBankSelected: true
2616 tracksRegLiveness: true
2618 - { id: 0, class: fpr }
2619 - { id: 1, class: fpr }
2620 - { id: 2, class: _ }
2621 - { id: 3, class: fpr }
2622 - { id: 4, class: fpr }
2623 machineFunctionInfo: {}
2628 ; CHECK-LABEL: name: test_v4i16_sge
2629 ; CHECK: liveins: $d0, $d1
2630 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2631 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2632 ; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY]], [[COPY1]]
2633 ; CHECK: $d0 = COPY [[CMGEv4i16_]]
2634 ; CHECK: RET_ReallyLR implicit $d0
2635 %0:fpr(<4 x s16>) = COPY $d0
2636 %1:fpr(<4 x s16>) = COPY $d1
2637 %4:fpr(<4 x s16>) = G_ICMP intpred(sge), %0(<4 x s16>), %1
2638 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2639 $d0 = COPY %3(<4 x s16>)
2640 RET_ReallyLR implicit $d0
2644 name: test_v16i8_sge
2647 regBankSelected: true
2648 tracksRegLiveness: true
2650 - { id: 0, class: fpr }
2651 - { id: 1, class: fpr }
2652 - { id: 2, class: _ }
2653 - { id: 3, class: fpr }
2654 - { id: 4, class: fpr }
2655 machineFunctionInfo: {}
2660 ; CHECK-LABEL: name: test_v16i8_sge
2661 ; CHECK: liveins: $q0, $q1
2662 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2663 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2664 ; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY]], [[COPY1]]
2665 ; CHECK: $q0 = COPY [[CMGEv16i8_]]
2666 ; CHECK: RET_ReallyLR implicit $q0
2667 %0:fpr(<16 x s8>) = COPY $q0
2668 %1:fpr(<16 x s8>) = COPY $q1
2669 %4:fpr(<16 x s8>) = G_ICMP intpred(sge), %0(<16 x s8>), %1
2670 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2671 $q0 = COPY %3(<16 x s8>)
2672 RET_ReallyLR implicit $q0
2679 regBankSelected: true
2680 tracksRegLiveness: true
2682 - { id: 0, class: fpr }
2683 - { id: 1, class: fpr }
2684 - { id: 2, class: _ }
2685 - { id: 3, class: fpr }
2686 - { id: 4, class: fpr }
2687 machineFunctionInfo: {}
2692 ; CHECK-LABEL: name: test_v8i8_sge
2693 ; CHECK: liveins: $d0, $d1
2694 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2695 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2696 ; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY]], [[COPY1]]
2697 ; CHECK: $d0 = COPY [[CMGEv8i8_]]
2698 ; CHECK: RET_ReallyLR implicit $d0
2699 %0:fpr(<8 x s8>) = COPY $d0
2700 %1:fpr(<8 x s8>) = COPY $d1
2701 %4:fpr(<8 x s8>) = G_ICMP intpred(sge), %0(<8 x s8>), %1
2702 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2703 $d0 = COPY %3(<8 x s8>)
2704 RET_ReallyLR implicit $d0
2708 name: test_v2i64_slt
2711 regBankSelected: true
2712 tracksRegLiveness: true
2714 - { id: 0, class: fpr }
2715 - { id: 1, class: fpr }
2716 - { id: 2, class: _ }
2717 - { id: 3, class: fpr }
2718 - { id: 4, class: fpr }
2719 machineFunctionInfo: {}
2724 ; CHECK-LABEL: name: test_v2i64_slt
2725 ; CHECK: liveins: $q0, $q1
2726 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2727 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2728 ; CHECK: [[CMGTv2i64_:%[0-9]+]]:fpr128 = CMGTv2i64 [[COPY1]], [[COPY]]
2729 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGTv2i64_]]
2730 ; CHECK: $d0 = COPY [[XTNv2i32_]]
2731 ; CHECK: RET_ReallyLR implicit $d0
2732 %0:fpr(<2 x s64>) = COPY $q0
2733 %1:fpr(<2 x s64>) = COPY $q1
2734 %4:fpr(<2 x s64>) = G_ICMP intpred(slt), %0(<2 x s64>), %1
2735 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
2736 $d0 = COPY %3(<2 x s32>)
2737 RET_ReallyLR implicit $d0
2741 name: test_v4i32_slt
2744 regBankSelected: true
2745 tracksRegLiveness: true
2747 - { id: 0, class: fpr }
2748 - { id: 1, class: fpr }
2749 - { id: 2, class: _ }
2750 - { id: 3, class: fpr }
2751 - { id: 4, class: fpr }
2752 machineFunctionInfo: {}
2757 ; CHECK-LABEL: name: test_v4i32_slt
2758 ; CHECK: liveins: $q0, $q1
2759 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2760 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2761 ; CHECK: [[CMGTv4i32_:%[0-9]+]]:fpr128 = CMGTv4i32 [[COPY1]], [[COPY]]
2762 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGTv4i32_]]
2763 ; CHECK: $d0 = COPY [[XTNv4i16_]]
2764 ; CHECK: RET_ReallyLR implicit $d0
2765 %0:fpr(<4 x s32>) = COPY $q0
2766 %1:fpr(<4 x s32>) = COPY $q1
2767 %4:fpr(<4 x s32>) = G_ICMP intpred(slt), %0(<4 x s32>), %1
2768 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
2769 $d0 = COPY %3(<4 x s16>)
2770 RET_ReallyLR implicit $d0
2774 name: test_v2i32_slt
2777 regBankSelected: true
2778 tracksRegLiveness: true
2780 - { id: 0, class: fpr }
2781 - { id: 1, class: fpr }
2782 - { id: 2, class: _ }
2783 - { id: 3, class: fpr }
2784 - { id: 4, class: fpr }
2785 machineFunctionInfo: {}
2790 ; CHECK-LABEL: name: test_v2i32_slt
2791 ; CHECK: liveins: $d0, $d1
2792 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2793 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2794 ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[COPY1]], [[COPY]]
2795 ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2796 ; CHECK: RET_ReallyLR implicit $d0
2797 %0:fpr(<2 x s32>) = COPY $d0
2798 %1:fpr(<2 x s32>) = COPY $d1
2799 %4:fpr(<2 x s32>) = G_ICMP intpred(slt), %0(<2 x s32>), %1
2800 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
2801 $d0 = COPY %3(<2 x s32>)
2802 RET_ReallyLR implicit $d0
2806 name: test_v2i16_slt
2809 regBankSelected: true
2810 tracksRegLiveness: true
2812 - { id: 0, class: _ }
2813 - { id: 1, class: _ }
2814 - { id: 2, class: fpr }
2815 - { id: 3, class: fpr }
2816 - { id: 4, class: _ }
2817 - { id: 5, class: fpr }
2818 - { id: 6, class: _ }
2819 - { id: 7, class: fpr }
2820 - { id: 8, class: fpr }
2821 - { id: 9, class: fpr }
2822 - { id: 10, class: gpr }
2823 - { id: 11, class: fpr }
2824 - { id: 12, class: fpr }
2825 - { id: 13, class: fpr }
2826 - { id: 14, class: gpr }
2827 - { id: 15, class: fpr }
2828 - { id: 16, class: fpr }
2829 - { id: 17, class: fpr }
2830 machineFunctionInfo: {}
2835 ; CHECK-LABEL: name: test_v2i16_slt
2836 ; CHECK: liveins: $d0, $d1
2837 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2838 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2839 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2840 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2841 ; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
2842 ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
2843 ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
2844 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
2845 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
2846 ; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
2847 ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
2848 ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
2849 ; CHECK: [[CMGTv2i32_:%[0-9]+]]:fpr64 = CMGTv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
2850 ; CHECK: $d0 = COPY [[CMGTv2i32_]]
2851 ; CHECK: RET_ReallyLR implicit $d0
2852 %2:fpr(<2 x s32>) = COPY $d0
2853 %3:fpr(<2 x s32>) = COPY $d1
2854 %14:gpr(s32) = G_CONSTANT i32 16
2855 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
2856 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
2857 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
2858 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
2859 %10:gpr(s32) = G_CONSTANT i32 16
2860 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
2861 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
2862 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
2863 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
2864 %9:fpr(<2 x s32>) = G_ICMP intpred(slt), %7(<2 x s32>), %8
2865 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
2866 $d0 = COPY %5(<2 x s32>)
2867 RET_ReallyLR implicit $d0
2871 name: test_v8i16_slt
2874 regBankSelected: true
2875 tracksRegLiveness: true
2877 - { id: 0, class: fpr }
2878 - { id: 1, class: fpr }
2879 - { id: 2, class: _ }
2880 - { id: 3, class: fpr }
2881 - { id: 4, class: fpr }
2882 machineFunctionInfo: {}
2887 ; CHECK-LABEL: name: test_v8i16_slt
2888 ; CHECK: liveins: $q0, $q1
2889 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2890 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2891 ; CHECK: [[CMGTv8i16_:%[0-9]+]]:fpr128 = CMGTv8i16 [[COPY1]], [[COPY]]
2892 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGTv8i16_]]
2893 ; CHECK: $d0 = COPY [[XTNv8i8_]]
2894 ; CHECK: RET_ReallyLR implicit $d0
2895 %0:fpr(<8 x s16>) = COPY $q0
2896 %1:fpr(<8 x s16>) = COPY $q1
2897 %4:fpr(<8 x s16>) = G_ICMP intpred(slt), %0(<8 x s16>), %1
2898 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
2899 $d0 = COPY %3(<8 x s8>)
2900 RET_ReallyLR implicit $d0
2904 name: test_v4i16_slt
2907 regBankSelected: true
2908 tracksRegLiveness: true
2910 - { id: 0, class: fpr }
2911 - { id: 1, class: fpr }
2912 - { id: 2, class: _ }
2913 - { id: 3, class: fpr }
2914 - { id: 4, class: fpr }
2915 machineFunctionInfo: {}
2920 ; CHECK-LABEL: name: test_v4i16_slt
2921 ; CHECK: liveins: $d0, $d1
2922 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2923 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2924 ; CHECK: [[CMGTv4i16_:%[0-9]+]]:fpr64 = CMGTv4i16 [[COPY1]], [[COPY]]
2925 ; CHECK: $d0 = COPY [[CMGTv4i16_]]
2926 ; CHECK: RET_ReallyLR implicit $d0
2927 %0:fpr(<4 x s16>) = COPY $d0
2928 %1:fpr(<4 x s16>) = COPY $d1
2929 %4:fpr(<4 x s16>) = G_ICMP intpred(slt), %0(<4 x s16>), %1
2930 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
2931 $d0 = COPY %3(<4 x s16>)
2932 RET_ReallyLR implicit $d0
2936 name: test_v16i8_slt
2939 regBankSelected: true
2940 tracksRegLiveness: true
2942 - { id: 0, class: fpr }
2943 - { id: 1, class: fpr }
2944 - { id: 2, class: _ }
2945 - { id: 3, class: fpr }
2946 - { id: 4, class: fpr }
2947 machineFunctionInfo: {}
2952 ; CHECK-LABEL: name: test_v16i8_slt
2953 ; CHECK: liveins: $q0, $q1
2954 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
2955 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
2956 ; CHECK: [[CMGTv16i8_:%[0-9]+]]:fpr128 = CMGTv16i8 [[COPY1]], [[COPY]]
2957 ; CHECK: $q0 = COPY [[CMGTv16i8_]]
2958 ; CHECK: RET_ReallyLR implicit $q0
2959 %0:fpr(<16 x s8>) = COPY $q0
2960 %1:fpr(<16 x s8>) = COPY $q1
2961 %4:fpr(<16 x s8>) = G_ICMP intpred(slt), %0(<16 x s8>), %1
2962 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
2963 $q0 = COPY %3(<16 x s8>)
2964 RET_ReallyLR implicit $q0
2971 regBankSelected: true
2972 tracksRegLiveness: true
2974 - { id: 0, class: fpr }
2975 - { id: 1, class: fpr }
2976 - { id: 2, class: _ }
2977 - { id: 3, class: fpr }
2978 - { id: 4, class: fpr }
2979 machineFunctionInfo: {}
2984 ; CHECK-LABEL: name: test_v8i8_slt
2985 ; CHECK: liveins: $d0, $d1
2986 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
2987 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
2988 ; CHECK: [[CMGTv8i8_:%[0-9]+]]:fpr64 = CMGTv8i8 [[COPY1]], [[COPY]]
2989 ; CHECK: $d0 = COPY [[CMGTv8i8_]]
2990 ; CHECK: RET_ReallyLR implicit $d0
2991 %0:fpr(<8 x s8>) = COPY $d0
2992 %1:fpr(<8 x s8>) = COPY $d1
2993 %4:fpr(<8 x s8>) = G_ICMP intpred(slt), %0(<8 x s8>), %1
2994 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
2995 $d0 = COPY %3(<8 x s8>)
2996 RET_ReallyLR implicit $d0
3000 name: test_v2i64_sle
3003 regBankSelected: true
3004 tracksRegLiveness: true
3006 - { id: 0, class: fpr }
3007 - { id: 1, class: fpr }
3008 - { id: 2, class: _ }
3009 - { id: 3, class: fpr }
3010 - { id: 4, class: fpr }
3011 machineFunctionInfo: {}
3016 ; CHECK-LABEL: name: test_v2i64_sle
3017 ; CHECK: liveins: $q0, $q1
3018 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3019 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3020 ; CHECK: [[CMGEv2i64_:%[0-9]+]]:fpr128 = CMGEv2i64 [[COPY1]], [[COPY]]
3021 ; CHECK: [[XTNv2i32_:%[0-9]+]]:fpr64 = XTNv2i32 [[CMGEv2i64_]]
3022 ; CHECK: $d0 = COPY [[XTNv2i32_]]
3023 ; CHECK: RET_ReallyLR implicit $d0
3024 %0:fpr(<2 x s64>) = COPY $q0
3025 %1:fpr(<2 x s64>) = COPY $q1
3026 %4:fpr(<2 x s64>) = G_ICMP intpred(sle), %0(<2 x s64>), %1
3027 %3:fpr(<2 x s32>) = G_TRUNC %4(<2 x s64>)
3028 $d0 = COPY %3(<2 x s32>)
3029 RET_ReallyLR implicit $d0
3033 name: test_v4i32_sle
3036 regBankSelected: true
3037 tracksRegLiveness: true
3039 - { id: 0, class: fpr }
3040 - { id: 1, class: fpr }
3041 - { id: 2, class: _ }
3042 - { id: 3, class: fpr }
3043 - { id: 4, class: fpr }
3044 machineFunctionInfo: {}
3049 ; CHECK-LABEL: name: test_v4i32_sle
3050 ; CHECK: liveins: $q0, $q1
3051 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3052 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3053 ; CHECK: [[CMGEv4i32_:%[0-9]+]]:fpr128 = CMGEv4i32 [[COPY1]], [[COPY]]
3054 ; CHECK: [[XTNv4i16_:%[0-9]+]]:fpr64 = XTNv4i16 [[CMGEv4i32_]]
3055 ; CHECK: $d0 = COPY [[XTNv4i16_]]
3056 ; CHECK: RET_ReallyLR implicit $d0
3057 %0:fpr(<4 x s32>) = COPY $q0
3058 %1:fpr(<4 x s32>) = COPY $q1
3059 %4:fpr(<4 x s32>) = G_ICMP intpred(sle), %0(<4 x s32>), %1
3060 %3:fpr(<4 x s16>) = G_TRUNC %4(<4 x s32>)
3061 $d0 = COPY %3(<4 x s16>)
3062 RET_ReallyLR implicit $d0
3066 name: test_v2i32_sle
3069 regBankSelected: true
3070 tracksRegLiveness: true
3072 - { id: 0, class: fpr }
3073 - { id: 1, class: fpr }
3074 - { id: 2, class: _ }
3075 - { id: 3, class: fpr }
3076 - { id: 4, class: fpr }
3077 machineFunctionInfo: {}
3082 ; CHECK-LABEL: name: test_v2i32_sle
3083 ; CHECK: liveins: $d0, $d1
3084 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3085 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3086 ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[COPY1]], [[COPY]]
3087 ; CHECK: $d0 = COPY [[CMGEv2i32_]]
3088 ; CHECK: RET_ReallyLR implicit $d0
3089 %0:fpr(<2 x s32>) = COPY $d0
3090 %1:fpr(<2 x s32>) = COPY $d1
3091 %4:fpr(<2 x s32>) = G_ICMP intpred(sle), %0(<2 x s32>), %1
3092 %3:fpr(<2 x s32>) = COPY %4(<2 x s32>)
3093 $d0 = COPY %3(<2 x s32>)
3094 RET_ReallyLR implicit $d0
3098 name: test_v2i16_sle
3101 regBankSelected: true
3102 tracksRegLiveness: true
3104 - { id: 0, class: _ }
3105 - { id: 1, class: _ }
3106 - { id: 2, class: fpr }
3107 - { id: 3, class: fpr }
3108 - { id: 4, class: _ }
3109 - { id: 5, class: fpr }
3110 - { id: 6, class: _ }
3111 - { id: 7, class: fpr }
3112 - { id: 8, class: fpr }
3113 - { id: 9, class: fpr }
3114 - { id: 10, class: gpr }
3115 - { id: 11, class: fpr }
3116 - { id: 12, class: fpr }
3117 - { id: 13, class: fpr }
3118 - { id: 14, class: gpr }
3119 - { id: 15, class: fpr }
3120 - { id: 16, class: fpr }
3121 - { id: 17, class: fpr }
3122 machineFunctionInfo: {}
3127 ; CHECK-LABEL: name: test_v2i16_sle
3128 ; CHECK: liveins: $d0, $d1
3129 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3130 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3131 ; CHECK: [[ADRP:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
3132 ; CHECK: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui [[ADRP]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
3133 ; CHECK: [[SHLv2i32_shift:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY]], 16
3134 ; CHECK: [[NEGv2i32_:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui]]
3135 ; CHECK: [[SSHLv2i32_:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift]], [[NEGv2i32_]]
3136 ; CHECK: [[ADRP1:%[0-9]+]]:gpr64common = ADRP target-flags(aarch64-page) %const.0
3137 ; CHECK: [[LDRDui1:%[0-9]+]]:fpr64 = LDRDui [[ADRP1]], target-flags(aarch64-pageoff, aarch64-nc) %const.0
3138 ; CHECK: [[SHLv2i32_shift1:%[0-9]+]]:fpr64 = SHLv2i32_shift [[COPY1]], 16
3139 ; CHECK: [[NEGv2i32_1:%[0-9]+]]:fpr64 = NEGv2i32 [[LDRDui1]]
3140 ; CHECK: [[SSHLv2i32_1:%[0-9]+]]:fpr64 = SSHLv2i32 [[SHLv2i32_shift1]], [[NEGv2i32_1]]
3141 ; CHECK: [[CMGEv2i32_:%[0-9]+]]:fpr64 = CMGEv2i32 [[SSHLv2i32_1]], [[SSHLv2i32_]]
3142 ; CHECK: $d0 = COPY [[CMGEv2i32_]]
3143 ; CHECK: RET_ReallyLR implicit $d0
3144 %2:fpr(<2 x s32>) = COPY $d0
3145 %3:fpr(<2 x s32>) = COPY $d1
3146 %14:gpr(s32) = G_CONSTANT i32 16
3147 %15:fpr(<2 x s32>) = G_BUILD_VECTOR %14(s32), %14(s32)
3148 %16:fpr(<2 x s32>) = COPY %2(<2 x s32>)
3149 %17:fpr(<2 x s32>) = G_SHL %16, %15(<2 x s32>)
3150 %7:fpr(<2 x s32>) = G_ASHR %17, %15(<2 x s32>)
3151 %10:gpr(s32) = G_CONSTANT i32 16
3152 %11:fpr(<2 x s32>) = G_BUILD_VECTOR %10(s32), %10(s32)
3153 %12:fpr(<2 x s32>) = COPY %3(<2 x s32>)
3154 %13:fpr(<2 x s32>) = G_SHL %12, %11(<2 x s32>)
3155 %8:fpr(<2 x s32>) = G_ASHR %13, %11(<2 x s32>)
3156 %9:fpr(<2 x s32>) = G_ICMP intpred(sle), %7(<2 x s32>), %8
3157 %5:fpr(<2 x s32>) = COPY %9(<2 x s32>)
3158 $d0 = COPY %5(<2 x s32>)
3159 RET_ReallyLR implicit $d0
3163 name: test_v8i16_sle
3166 regBankSelected: true
3167 tracksRegLiveness: true
3169 - { id: 0, class: fpr }
3170 - { id: 1, class: fpr }
3171 - { id: 2, class: _ }
3172 - { id: 3, class: fpr }
3173 - { id: 4, class: fpr }
3174 machineFunctionInfo: {}
3179 ; CHECK-LABEL: name: test_v8i16_sle
3180 ; CHECK: liveins: $q0, $q1
3181 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3182 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3183 ; CHECK: [[CMGEv8i16_:%[0-9]+]]:fpr128 = CMGEv8i16 [[COPY1]], [[COPY]]
3184 ; CHECK: [[XTNv8i8_:%[0-9]+]]:fpr64 = XTNv8i8 [[CMGEv8i16_]]
3185 ; CHECK: $d0 = COPY [[XTNv8i8_]]
3186 ; CHECK: RET_ReallyLR implicit $d0
3187 %0:fpr(<8 x s16>) = COPY $q0
3188 %1:fpr(<8 x s16>) = COPY $q1
3189 %4:fpr(<8 x s16>) = G_ICMP intpred(sle), %0(<8 x s16>), %1
3190 %3:fpr(<8 x s8>) = G_TRUNC %4(<8 x s16>)
3191 $d0 = COPY %3(<8 x s8>)
3192 RET_ReallyLR implicit $d0
3196 name: test_v4i16_sle
3199 regBankSelected: true
3200 tracksRegLiveness: true
3202 - { id: 0, class: fpr }
3203 - { id: 1, class: fpr }
3204 - { id: 2, class: _ }
3205 - { id: 3, class: fpr }
3206 - { id: 4, class: fpr }
3207 machineFunctionInfo: {}
3212 ; CHECK-LABEL: name: test_v4i16_sle
3213 ; CHECK: liveins: $d0, $d1
3214 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3215 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3216 ; CHECK: [[CMGEv4i16_:%[0-9]+]]:fpr64 = CMGEv4i16 [[COPY1]], [[COPY]]
3217 ; CHECK: $d0 = COPY [[CMGEv4i16_]]
3218 ; CHECK: RET_ReallyLR implicit $d0
3219 %0:fpr(<4 x s16>) = COPY $d0
3220 %1:fpr(<4 x s16>) = COPY $d1
3221 %4:fpr(<4 x s16>) = G_ICMP intpred(sle), %0(<4 x s16>), %1
3222 %3:fpr(<4 x s16>) = COPY %4(<4 x s16>)
3223 $d0 = COPY %3(<4 x s16>)
3224 RET_ReallyLR implicit $d0
3228 name: test_v16i8_sle
3231 regBankSelected: true
3232 tracksRegLiveness: true
3234 - { id: 0, class: fpr }
3235 - { id: 1, class: fpr }
3236 - { id: 2, class: _ }
3237 - { id: 3, class: fpr }
3238 - { id: 4, class: fpr }
3239 machineFunctionInfo: {}
3244 ; CHECK-LABEL: name: test_v16i8_sle
3245 ; CHECK: liveins: $q0, $q1
3246 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
3247 ; CHECK: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1
3248 ; CHECK: [[CMGEv16i8_:%[0-9]+]]:fpr128 = CMGEv16i8 [[COPY1]], [[COPY]]
3249 ; CHECK: $q0 = COPY [[CMGEv16i8_]]
3250 ; CHECK: RET_ReallyLR implicit $q0
3251 %0:fpr(<16 x s8>) = COPY $q0
3252 %1:fpr(<16 x s8>) = COPY $q1
3253 %4:fpr(<16 x s8>) = G_ICMP intpred(sle), %0(<16 x s8>), %1
3254 %3:fpr(<16 x s8>) = COPY %4(<16 x s8>)
3255 $q0 = COPY %3(<16 x s8>)
3256 RET_ReallyLR implicit $q0
3263 regBankSelected: true
3264 tracksRegLiveness: true
3266 - { id: 0, class: fpr }
3267 - { id: 1, class: fpr }
3268 - { id: 2, class: _ }
3269 - { id: 3, class: fpr }
3270 - { id: 4, class: fpr }
3271 machineFunctionInfo: {}
3276 ; CHECK-LABEL: name: test_v8i8_sle
3277 ; CHECK: liveins: $d0, $d1
3278 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
3279 ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
3280 ; CHECK: [[CMGEv8i8_:%[0-9]+]]:fpr64 = CMGEv8i8 [[COPY1]], [[COPY]]
3281 ; CHECK: $d0 = COPY [[CMGEv8i8_]]
3282 ; CHECK: RET_ReallyLR implicit $d0
3283 %0:fpr(<8 x s8>) = COPY $d0
3284 %1:fpr(<8 x s8>) = COPY $d1
3285 %4:fpr(<8 x s8>) = G_ICMP intpred(sle), %0(<8 x s8>), %1
3286 %3:fpr(<8 x s8>) = COPY %4(<8 x s8>)
3287 $d0 = COPY %3(<8 x s8>)
3288 RET_ReallyLR implicit $d0