1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=regbankselect %s -o - | FileCheck %s --check-prefix=FAST
3 # RUN: llc -mtriple=x86_64-linux-gnu -regbankselect-greedy -run-pass=regbankselect %s -o - | FileCheck %s --check-prefix=GREEDY
6 define i8 @test_add_i8(i8 %arg1, i8 %arg2) {
7 %ret = add i8 %arg1, %arg2
11 define i16 @test_add_i16(i16 %arg1, i16 %arg2) {
12 %ret = add i16 %arg1, %arg2
16 define i32 @test_add_i32(i32 %arg1, i32 %arg2) {
17 %ret = add i32 %arg1, %arg2
21 define i64 @test_add_i64(i64 %arg1, i64 %arg2) {
22 %ret = add i64 %arg1, %arg2
26 define void @test_mul_gpr() {
30 define float @test_add_float(float %arg1, float %arg2) {
31 %ret = fadd float %arg1, %arg2
35 define double @test_add_double(double %arg1, double %arg2) {
36 %ret = fadd double %arg1, %arg2
40 define void @test_fsub_float() {
41 %ret1 = fsub float undef, undef
42 %ret2 = fsub double undef, undef
46 define void @test_fmul_float() {
47 %ret1 = fmul float undef, undef
48 %ret2 = fmul double undef, undef
52 define void @test_fdiv_float() {
53 %ret1 = fdiv float undef, undef
54 %ret2 = fdiv double undef, undef
59 define <4 x i32> @test_add_v4i32(<4 x i32> %arg1, <4 x i32> %arg2) {
60 %ret = add <4 x i32> %arg1, %arg2
64 define <4 x float> @test_add_v4f32(<4 x float> %arg1, <4 x float> %arg2) {
65 %ret = fadd <4 x float> %arg1, %arg2
69 define i8 @test_load_i8(ptr %p1) {
74 define i16 @test_load_i16(ptr %p1) {
75 %r = load i16, ptr %p1
79 define i32 @test_load_i32(ptr %p1) {
80 %r = load i32, ptr %p1
84 define i64 @test_load_i64(ptr %p1) {
85 %r = load i64, ptr %p1
89 define float @test_load_float(ptr %p1) {
90 %r = load float, ptr %p1
94 define double @test_load_double(ptr %p1) {
95 %r = load double, ptr %p1
99 define <4 x i32> @test_load_v4i32(ptr %p1) {
100 %r = load <4 x i32>, ptr %p1, align 16
104 define ptr @test_store_i32(i32 %val, ptr %p1) {
105 store i32 %val, ptr %p1
109 define ptr @test_store_i64(i64 %val, ptr %p1) {
110 store i64 %val, ptr %p1
114 define ptr @test_store_float(float %val, ptr %p1) {
115 store float %val, ptr %p1
119 define ptr @test_store_double(double %val, ptr %p1) {
120 store double %val, ptr %p1
124 define void @constInt_check() {
128 define void @trunc_check() {
132 define void @test_gep() {
133 %p1 = getelementptr i32, ptr undef, i32 5
134 %p2 = getelementptr i32, ptr undef, i64 5
138 define i1 @test_icmp_eq_i8(i8 %a, i8 %b) {
139 %r = icmp eq i8 %a, %b
143 define i1 @test_icmp_eq_i16(i16 %a, i16 %b) {
144 %r = icmp eq i16 %a, %b
148 define i1 @test_icmp_eq_i32(i32 %a, i32 %b) {
149 %r = icmp eq i32 %a, %b
153 define i1 @test_icmp_eq_i64(i64 %a, i64 %b) {
154 %r = icmp eq i64 %a, %b
158 define i8 @test_xor_i8() {
159 %ret = xor i8 undef, undef
163 define i16 @test_or_i16() {
164 %ret = or i16 undef, undef
168 define i32 @test_and_i32() {
169 %ret = and i32 undef, undef
173 define i64 @test_and_i64() {
174 %ret = and i64 undef, undef
178 @g_int = global i32 0, align 4
180 define ptr @test_global_ptrv() {
185 define i8 @test_undef() {
189 define i8 @test_undef2(i8 %a) {
190 %r = add i8 %a, undef
194 define float @test_undef3() {
198 define float @test_undef4(float %a) {
199 %r = fadd float %a, undef
203 define i32 @test_i32(i32 %a, i32 %f, i32 %t) {
205 %cmp = icmp sgt i32 %a, 0
206 br i1 %cmp, label %cond.true, label %cond.false
208 cond.true: ; preds = %entry
211 cond.false: ; preds = %entry
214 cond.end: ; preds = %cond.false, %cond.true
215 %cond = phi i32 [ %f, %cond.true ], [ %t, %cond.false ]
219 define float @test_float(i32 %a, float %f, float %t) {
221 %cmp = icmp sgt i32 %a, 0
222 br i1 %cmp, label %cond.true, label %cond.false
224 cond.true: ; preds = %entry
227 cond.false: ; preds = %entry
230 cond.end: ; preds = %cond.false, %cond.true
231 %cond = phi float [ %f, %cond.true ], [ %t, %cond.false ]
235 define double @test_fpext(float %a) {
237 %conv = fpext float %a to double
241 define float @test_fptrunc(double %a) {
243 %conv = fptrunc double %a to float
247 define void @test_fconstant() {
251 define float @int32_to_float(i32 %a) {
253 %conv = sitofp i32 %a to float
257 define float @int64_to_float(i64 %a) {
259 %conv = sitofp i64 %a to float
263 define double @int32_to_double(i32 %a) {
265 %conv = sitofp i32 %a to double
269 define double @int64_to_double(i64 %a) {
271 %conv = sitofp i64 %a to double
275 define signext i8 @float_to_int8(float %val) {
277 %conv = fptosi float %val to i8
281 define signext i16 @float_to_int16(float %val) {
283 %conv = fptosi float %val to i16
287 define i32 @float_to_int32(float %val) {
289 %conv = fptosi float %val to i32
293 define i64 @float_to_int64(float %val) {
295 %conv = fptosi float %val to i64
299 define signext i8 @double_to_int8(double %val) {
301 %conv = fptosi double %val to i8
305 define signext i16 @double_to_int16(double %val) {
307 %conv = fptosi double %val to i16
311 define i32 @double_to_int32(double %val) {
313 %conv = fptosi double %val to i32
317 define i64 @double_to_int64(double %val) {
319 %conv = fptosi double %val to i64
323 define i1 @fcmp_float_oeq(float %x, float %y) {
324 %1 = fcmp oeq float %x, %y
328 define i1 @fcmp_float_ogt(float %x, float %y) {
329 %1 = fcmp ogt float %x, %y
333 define i1 @fcmp_float_oge(float %x, float %y) {
334 %1 = fcmp oge float %x, %y
338 define i1 @fcmp_float_olt(float %x, float %y) {
339 %1 = fcmp olt float %x, %y
343 define i1 @fcmp_float_ole(float %x, float %y) {
344 %1 = fcmp ole float %x, %y
348 define i1 @fcmp_float_one(float %x, float %y) {
349 %1 = fcmp one float %x, %y
353 define i1 @fcmp_float_ord(float %x, float %y) {
354 %1 = fcmp ord float %x, %y
358 define i1 @fcmp_float_uno(float %x, float %y) {
359 %1 = fcmp uno float %x, %y
363 define i1 @fcmp_float_ueq(float %x, float %y) {
364 %1 = fcmp ueq float %x, %y
368 define i1 @fcmp_float_ugt(float %x, float %y) {
369 %1 = fcmp ugt float %x, %y
373 define i1 @fcmp_float_uge(float %x, float %y) {
374 %1 = fcmp uge float %x, %y
378 define i1 @fcmp_float_ult(float %x, float %y) {
379 %1 = fcmp ult float %x, %y
383 define i1 @fcmp_float_ule(float %x, float %y) {
384 %1 = fcmp ule float %x, %y
388 define i1 @fcmp_float_une(float %x, float %y) {
389 %1 = fcmp une float %x, %y
393 define i1 @fcmp_double_oeq(double %x, double %y) {
394 %1 = fcmp oeq double %x, %y
398 define i1 @fcmp_double_ogt(double %x, double %y) {
399 %1 = fcmp ogt double %x, %y
403 define i1 @fcmp_double_oge(double %x, double %y) {
404 %1 = fcmp oge double %x, %y
408 define i1 @fcmp_double_olt(double %x, double %y) {
409 %1 = fcmp olt double %x, %y
413 define i1 @fcmp_double_ole(double %x, double %y) {
414 %1 = fcmp ole double %x, %y
418 define i1 @fcmp_double_one(double %x, double %y) {
419 %1 = fcmp one double %x, %y
423 define i1 @fcmp_double_ord(double %x, double %y) {
424 %1 = fcmp ord double %x, %y
428 define i1 @fcmp_double_uno(double %x, double %y) {
429 %1 = fcmp uno double %x, %y
433 define i1 @fcmp_double_ueq(double %x, double %y) {
434 %1 = fcmp ueq double %x, %y
438 define i1 @fcmp_double_ugt(double %x, double %y) {
439 %1 = fcmp ugt double %x, %y
443 define i1 @fcmp_double_uge(double %x, double %y) {
444 %1 = fcmp uge double %x, %y
448 define i1 @fcmp_double_ult(double %x, double %y) {
449 %1 = fcmp ult double %x, %y
453 define i1 @fcmp_double_ule(double %x, double %y) {
454 %1 = fcmp ule double %x, %y
458 define i1 @fcmp_double_une(double %x, double %y) {
459 %1 = fcmp une double %x, %y
468 regBankSelected: false
470 tracksRegLiveness: true
472 - { id: 0, class: _ }
473 - { id: 1, class: _ }
474 - { id: 2, class: _ }
479 ; FAST-LABEL: name: test_add_i8
480 ; FAST: liveins: $edi, $esi
481 ; FAST: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil
482 ; FAST: [[COPY1:%[0-9]+]]:gpr(s8) = COPY $sil
483 ; FAST: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[COPY1]]
484 ; FAST: $al = COPY [[ADD]](s8)
485 ; FAST: RET 0, implicit $al
486 ; GREEDY-LABEL: name: test_add_i8
487 ; GREEDY: liveins: $edi, $esi
488 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil
489 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s8) = COPY $sil
490 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[COPY1]]
491 ; GREEDY: $al = COPY [[ADD]](s8)
492 ; GREEDY: RET 0, implicit $al
495 %2(s8) = G_ADD %0, %1
504 regBankSelected: false
506 tracksRegLiveness: true
508 - { id: 0, class: _ }
509 - { id: 1, class: _ }
510 - { id: 2, class: _ }
515 ; FAST-LABEL: name: test_add_i16
516 ; FAST: liveins: $edi, $esi
517 ; FAST: [[COPY:%[0-9]+]]:gpr(s16) = COPY $di
518 ; FAST: [[COPY1:%[0-9]+]]:gpr(s16) = COPY $si
519 ; FAST: [[ADD:%[0-9]+]]:gpr(s16) = G_ADD [[COPY]], [[COPY1]]
520 ; FAST: $ax = COPY [[ADD]](s16)
521 ; FAST: RET 0, implicit $ax
522 ; GREEDY-LABEL: name: test_add_i16
523 ; GREEDY: liveins: $edi, $esi
524 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s16) = COPY $di
525 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s16) = COPY $si
526 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s16) = G_ADD [[COPY]], [[COPY1]]
527 ; GREEDY: $ax = COPY [[ADD]](s16)
528 ; GREEDY: RET 0, implicit $ax
531 %2(s16) = G_ADD %0, %1
540 regBankSelected: false
542 tracksRegLiveness: true
544 - { id: 0, class: _ }
545 - { id: 1, class: _ }
546 - { id: 2, class: _ }
551 ; FAST-LABEL: name: test_add_i32
552 ; FAST: liveins: $edi, $esi
553 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
554 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
555 ; FAST: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY1]]
556 ; FAST: $eax = COPY [[ADD]](s32)
557 ; FAST: RET 0, implicit $eax
558 ; GREEDY-LABEL: name: test_add_i32
559 ; GREEDY: liveins: $edi, $esi
560 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
561 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
562 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY1]]
563 ; GREEDY: $eax = COPY [[ADD]](s32)
564 ; GREEDY: RET 0, implicit $eax
567 %2(s32) = G_ADD %0, %1
576 regBankSelected: false
578 tracksRegLiveness: true
580 - { id: 0, class: _ }
581 - { id: 1, class: _ }
582 - { id: 2, class: _ }
587 ; FAST-LABEL: name: test_add_i64
588 ; FAST: liveins: $rdi, $rsi
589 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
590 ; FAST: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi
591 ; FAST: [[ADD:%[0-9]+]]:gpr(s64) = G_ADD [[COPY]], [[COPY1]]
592 ; FAST: $rax = COPY [[ADD]](s64)
593 ; FAST: RET 0, implicit $rax
594 ; GREEDY-LABEL: name: test_add_i64
595 ; GREEDY: liveins: $rdi, $rsi
596 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
597 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi
598 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s64) = G_ADD [[COPY]], [[COPY1]]
599 ; GREEDY: $rax = COPY [[ADD]](s64)
600 ; GREEDY: RET 0, implicit $rax
603 %2(s64) = G_ADD %0, %1
612 regBankSelected: false
614 tracksRegLiveness: true
616 - { id: 0, class: _ }
617 - { id: 1, class: _ }
618 - { id: 2, class: _ }
619 - { id: 3, class: _ }
620 - { id: 4, class: _ }
621 - { id: 5, class: _ }
622 - { id: 6, class: _ }
623 - { id: 7, class: _ }
627 ; FAST-LABEL: name: test_mul_gpr
628 ; FAST: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
629 ; FAST: [[DEF1:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
630 ; FAST: [[DEF2:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF
631 ; FAST: [[DEF3:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF
632 ; FAST: [[MUL:%[0-9]+]]:gpr(s64) = G_MUL [[DEF]], [[DEF]]
633 ; FAST: [[MUL1:%[0-9]+]]:gpr(s32) = G_MUL [[DEF1]], [[DEF1]]
634 ; FAST: [[MUL2:%[0-9]+]]:gpr(s16) = G_MUL [[DEF2]], [[DEF2]]
635 ; FAST: [[MUL3:%[0-9]+]]:gpr(s8) = G_MUL [[DEF3]], [[DEF3]]
637 ; GREEDY-LABEL: name: test_mul_gpr
638 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
639 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
640 ; GREEDY: [[DEF2:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF
641 ; GREEDY: [[DEF3:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF
642 ; GREEDY: [[MUL:%[0-9]+]]:gpr(s64) = G_MUL [[DEF]], [[DEF]]
643 ; GREEDY: [[MUL1:%[0-9]+]]:gpr(s32) = G_MUL [[DEF1]], [[DEF1]]
644 ; GREEDY: [[MUL2:%[0-9]+]]:gpr(s16) = G_MUL [[DEF2]], [[DEF2]]
645 ; GREEDY: [[MUL3:%[0-9]+]]:gpr(s8) = G_MUL [[DEF3]], [[DEF3]]
647 %0(s64) = G_IMPLICIT_DEF
648 %1(s32) = G_IMPLICIT_DEF
649 %2(s16) = G_IMPLICIT_DEF
650 %3(s8) = G_IMPLICIT_DEF
651 %4(s64) = G_MUL %0, %0
652 %5(s32) = G_MUL %1, %1
653 %6(s16) = G_MUL %2, %2
654 %7(s8) = G_MUL %3, %3
661 regBankSelected: false
663 tracksRegLiveness: true
665 - { id: 0, class: _ }
666 - { id: 1, class: _ }
667 - { id: 2, class: _ }
668 - { id: 3, class: _ }
669 - { id: 4, class: _ }
670 - { id: 5, class: _ }
673 liveins: $xmm0, $xmm1
675 ; FAST-LABEL: name: test_add_float
676 ; FAST: liveins: $xmm0, $xmm1
677 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
678 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
679 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
680 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
681 ; FAST: [[FADD:%[0-9]+]]:vecr(s32) = G_FADD [[TRUNC]], [[TRUNC1]]
682 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s32)
683 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
684 ; FAST: RET 0, implicit $xmm0
685 ; GREEDY-LABEL: name: test_add_float
686 ; GREEDY: liveins: $xmm0, $xmm1
687 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
688 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
689 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
690 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
691 ; GREEDY: [[FADD:%[0-9]+]]:vecr(s32) = G_FADD [[TRUNC]], [[TRUNC1]]
692 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s32)
693 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
694 ; GREEDY: RET 0, implicit $xmm0
695 %2:_(s128) = COPY $xmm0
696 %0:_(s32) = G_TRUNC %2(s128)
697 %3:_(s128) = COPY $xmm1
698 %1:_(s32) = G_TRUNC %3(s128)
699 %4:_(s32) = G_FADD %0, %1
700 %5:_(s128) = G_ANYEXT %4(s32)
701 $xmm0 = COPY %5(s128)
702 RET 0, implicit $xmm0
706 name: test_add_double
709 regBankSelected: false
711 tracksRegLiveness: true
713 - { id: 0, class: _ }
714 - { id: 1, class: _ }
715 - { id: 2, class: _ }
716 - { id: 3, class: _ }
717 - { id: 4, class: _ }
718 - { id: 5, class: _ }
721 liveins: $xmm0, $xmm1
723 ; FAST-LABEL: name: test_add_double
724 ; FAST: liveins: $xmm0, $xmm1
725 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
726 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
727 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
728 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
729 ; FAST: [[FADD:%[0-9]+]]:vecr(s64) = G_FADD [[TRUNC]], [[TRUNC1]]
730 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s64)
731 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
732 ; FAST: RET 0, implicit $xmm0
733 ; GREEDY-LABEL: name: test_add_double
734 ; GREEDY: liveins: $xmm0, $xmm1
735 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
736 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
737 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
738 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
739 ; GREEDY: [[FADD:%[0-9]+]]:vecr(s64) = G_FADD [[TRUNC]], [[TRUNC1]]
740 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s64)
741 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
742 ; GREEDY: RET 0, implicit $xmm0
743 %2:_(s128) = COPY $xmm0
744 %0:_(s64) = G_TRUNC %2(s128)
745 %3:_(s128) = COPY $xmm1
746 %1:_(s64) = G_TRUNC %3(s128)
747 %4:_(s64) = G_FADD %0, %1
748 %5:_(s128) = G_ANYEXT %4(s64)
749 $xmm0 = COPY %5(s128)
750 RET 0, implicit $xmm0
754 name: test_fsub_float
757 regBankSelected: false
759 - { id: 0, class: _, preferred-register: '' }
760 - { id: 1, class: _, preferred-register: '' }
761 - { id: 2, class: _, preferred-register: '' }
762 - { id: 3, class: _, preferred-register: '' }
769 ; FAST-LABEL: name: test_fsub_float
770 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
771 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
772 ; FAST: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
773 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
774 ; FAST: [[FSUB:%[0-9]+]]:vecr(s32) = G_FSUB [[COPY]], [[COPY1]]
775 ; FAST: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
776 ; FAST: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
777 ; FAST: [[FSUB1:%[0-9]+]]:vecr(s64) = G_FSUB [[COPY2]], [[COPY3]]
779 ; GREEDY-LABEL: name: test_fsub_float
780 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
781 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
782 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
783 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
784 ; GREEDY: [[FSUB:%[0-9]+]]:vecr(s32) = G_FSUB [[COPY]], [[COPY1]]
785 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
786 ; GREEDY: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
787 ; GREEDY: [[FSUB1:%[0-9]+]]:vecr(s64) = G_FSUB [[COPY2]], [[COPY3]]
789 %0(s32) = G_IMPLICIT_DEF
790 %2(s64) = G_IMPLICIT_DEF
791 %1(s32) = G_FSUB %0, %0
792 %3(s64) = G_FSUB %2, %2
797 name: test_fmul_float
800 regBankSelected: false
802 - { id: 0, class: _, preferred-register: '' }
803 - { id: 1, class: _, preferred-register: '' }
804 - { id: 2, class: _, preferred-register: '' }
805 - { id: 3, class: _, preferred-register: '' }
812 ; FAST-LABEL: name: test_fmul_float
813 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
814 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
815 ; FAST: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
816 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
817 ; FAST: [[FMUL:%[0-9]+]]:vecr(s32) = G_FMUL [[COPY]], [[COPY1]]
818 ; FAST: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
819 ; FAST: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
820 ; FAST: [[FMUL1:%[0-9]+]]:vecr(s64) = G_FMUL [[COPY2]], [[COPY3]]
822 ; GREEDY-LABEL: name: test_fmul_float
823 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
824 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
825 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
826 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
827 ; GREEDY: [[FMUL:%[0-9]+]]:vecr(s32) = G_FMUL [[COPY]], [[COPY1]]
828 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
829 ; GREEDY: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
830 ; GREEDY: [[FMUL1:%[0-9]+]]:vecr(s64) = G_FMUL [[COPY2]], [[COPY3]]
832 %0(s32) = G_IMPLICIT_DEF
833 %2(s64) = G_IMPLICIT_DEF
834 %1(s32) = G_FMUL %0, %0
835 %3(s64) = G_FMUL %2, %2
840 name: test_fdiv_float
843 regBankSelected: false
845 - { id: 0, class: _, preferred-register: '' }
846 - { id: 1, class: _, preferred-register: '' }
847 - { id: 2, class: _, preferred-register: '' }
848 - { id: 3, class: _, preferred-register: '' }
855 ; FAST-LABEL: name: test_fdiv_float
856 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
857 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
858 ; FAST: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
859 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
860 ; FAST: [[FDIV:%[0-9]+]]:vecr(s32) = G_FDIV [[COPY]], [[COPY1]]
861 ; FAST: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
862 ; FAST: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
863 ; FAST: [[FDIV1:%[0-9]+]]:vecr(s64) = G_FDIV [[COPY2]], [[COPY3]]
865 ; GREEDY-LABEL: name: test_fdiv_float
866 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
867 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
868 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
869 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
870 ; GREEDY: [[FDIV:%[0-9]+]]:vecr(s32) = G_FDIV [[COPY]], [[COPY1]]
871 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
872 ; GREEDY: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)
873 ; GREEDY: [[FDIV1:%[0-9]+]]:vecr(s64) = G_FDIV [[COPY2]], [[COPY3]]
875 %0(s32) = G_IMPLICIT_DEF
876 %2(s64) = G_IMPLICIT_DEF
877 %1(s32) = G_FDIV %0, %0
878 %3(s64) = G_FDIV %2, %2
886 regBankSelected: false
888 tracksRegLiveness: true
890 - { id: 0, class: _ }
891 - { id: 1, class: _ }
892 - { id: 2, class: _ }
895 liveins: $xmm0, $xmm1
897 ; FAST-LABEL: name: test_add_v4i32
898 ; FAST: liveins: $xmm0, $xmm1
899 ; FAST: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0
900 ; FAST: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1
901 ; FAST: [[ADD:%[0-9]+]]:vecr(<4 x s32>) = G_ADD [[COPY]], [[COPY1]]
902 ; FAST: $xmm0 = COPY [[ADD]](<4 x s32>)
903 ; FAST: RET 0, implicit $xmm0
904 ; GREEDY-LABEL: name: test_add_v4i32
905 ; GREEDY: liveins: $xmm0, $xmm1
906 ; GREEDY: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0
907 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1
908 ; GREEDY: [[ADD:%[0-9]+]]:vecr(<4 x s32>) = G_ADD [[COPY]], [[COPY1]]
909 ; GREEDY: $xmm0 = COPY [[ADD]](<4 x s32>)
910 ; GREEDY: RET 0, implicit $xmm0
911 %0(<4 x s32>) = COPY $xmm0
912 %1(<4 x s32>) = COPY $xmm1
913 %2(<4 x s32>) = G_ADD %0, %1
914 $xmm0 = COPY %2(<4 x s32>)
915 RET 0, implicit $xmm0
922 regBankSelected: false
924 tracksRegLiveness: true
926 - { id: 0, class: _ }
927 - { id: 1, class: _ }
928 - { id: 2, class: _ }
931 liveins: $xmm0, $xmm1
933 ; FAST-LABEL: name: test_add_v4f32
934 ; FAST: liveins: $xmm0, $xmm1
935 ; FAST: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0
936 ; FAST: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1
937 ; FAST: [[FADD:%[0-9]+]]:vecr(<4 x s32>) = G_FADD [[COPY]], [[COPY1]]
938 ; FAST: $xmm0 = COPY [[FADD]](<4 x s32>)
939 ; FAST: RET 0, implicit $xmm0
940 ; GREEDY-LABEL: name: test_add_v4f32
941 ; GREEDY: liveins: $xmm0, $xmm1
942 ; GREEDY: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0
943 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1
944 ; GREEDY: [[FADD:%[0-9]+]]:vecr(<4 x s32>) = G_FADD [[COPY]], [[COPY1]]
945 ; GREEDY: $xmm0 = COPY [[FADD]](<4 x s32>)
946 ; GREEDY: RET 0, implicit $xmm0
947 %0(<4 x s32>) = COPY $xmm0
948 %1(<4 x s32>) = COPY $xmm1
949 %2(<4 x s32>) = G_FADD %0, %1
950 $xmm0 = COPY %2(<4 x s32>)
951 RET 0, implicit $xmm0
958 regBankSelected: false
961 - { id: 0, class: _ }
962 - { id: 1, class: _ }
967 ; FAST-LABEL: name: test_load_i8
968 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
969 ; FAST: [[LOAD:%[0-9]+]]:gpr(s8) = G_LOAD [[COPY]](p0) :: (load (s8) from %ir.p1)
970 ; FAST: $al = COPY [[LOAD]](s8)
971 ; FAST: RET 0, implicit $al
972 ; GREEDY-LABEL: name: test_load_i8
973 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
974 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s8) = G_LOAD [[COPY]](p0) :: (load (s8) from %ir.p1)
975 ; GREEDY: $al = COPY [[LOAD]](s8)
976 ; GREEDY: RET 0, implicit $al
978 %1(s8) = G_LOAD %0(p0) :: (load (s8) from %ir.p1)
987 regBankSelected: false
990 - { id: 0, class: _ }
991 - { id: 1, class: _ }
996 ; FAST-LABEL: name: test_load_i16
997 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
998 ; FAST: [[LOAD:%[0-9]+]]:gpr(s16) = G_LOAD [[COPY]](p0) :: (load (s16) from %ir.p1)
999 ; FAST: $ax = COPY [[LOAD]](s16)
1000 ; FAST: RET 0, implicit $ax
1001 ; GREEDY-LABEL: name: test_load_i16
1002 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1003 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s16) = G_LOAD [[COPY]](p0) :: (load (s16) from %ir.p1)
1004 ; GREEDY: $ax = COPY [[LOAD]](s16)
1005 ; GREEDY: RET 0, implicit $ax
1007 %1(s16) = G_LOAD %0(p0) :: (load (s16) from %ir.p1)
1016 regBankSelected: false
1019 - { id: 0, class: _ }
1020 - { id: 1, class: _ }
1025 ; FAST-LABEL: name: test_load_i32
1026 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1027 ; FAST: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.p1)
1028 ; FAST: $eax = COPY [[LOAD]](s32)
1029 ; FAST: RET 0, implicit $eax
1030 ; GREEDY-LABEL: name: test_load_i32
1031 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1032 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.p1)
1033 ; GREEDY: $eax = COPY [[LOAD]](s32)
1034 ; GREEDY: RET 0, implicit $eax
1036 %1(s32) = G_LOAD %0(p0) :: (load (s32) from %ir.p1)
1038 RET 0, implicit $eax
1044 exposesReturnsTwice: false
1046 regBankSelected: false
1049 - { id: 0, class: _ }
1050 - { id: 1, class: _ }
1055 ; FAST-LABEL: name: test_load_i64
1056 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1057 ; FAST: [[LOAD:%[0-9]+]]:gpr(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.p1)
1058 ; FAST: $rax = COPY [[LOAD]](s64)
1059 ; FAST: RET 0, implicit $rax
1060 ; GREEDY-LABEL: name: test_load_i64
1061 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1062 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.p1)
1063 ; GREEDY: $rax = COPY [[LOAD]](s64)
1064 ; GREEDY: RET 0, implicit $rax
1066 %1(s64) = G_LOAD %0(p0) :: (load (s64) from %ir.p1)
1068 RET 0, implicit $rax
1072 name: test_load_float
1075 regBankSelected: false
1078 - { id: 0, class: _ }
1079 - { id: 1, class: _ }
1084 ; FAST-LABEL: name: test_load_float
1085 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1086 ; FAST: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.p1)
1087 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[LOAD]](s32)
1088 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[COPY1]](s32)
1089 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
1090 ; FAST: RET 0, implicit $xmm0
1091 ; GREEDY-LABEL: name: test_load_float
1092 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1093 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.p1)
1094 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[LOAD]](s32)
1095 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[COPY1]](s32)
1096 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
1097 ; GREEDY: RET 0, implicit $xmm0
1098 %0:_(p0) = COPY $rdi
1099 %1:_(s32) = G_LOAD %0(p0) :: (load (s32) from %ir.p1)
1100 %2:_(s128) = G_ANYEXT %1(s32)
1101 $xmm0 = COPY %2(s128)
1102 RET 0, implicit $xmm0
1106 name: test_load_double
1109 regBankSelected: false
1112 - { id: 0, class: _ }
1113 - { id: 1, class: _ }
1118 ; FAST-LABEL: name: test_load_double
1119 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1120 ; FAST: [[LOAD:%[0-9]+]]:gpr(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.p1)
1121 ; FAST: [[COPY1:%[0-9]+]]:vecr(s64) = COPY [[LOAD]](s64)
1122 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[COPY1]](s64)
1123 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
1124 ; FAST: RET 0, implicit $xmm0
1125 ; GREEDY-LABEL: name: test_load_double
1126 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1127 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.p1)
1128 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s64) = COPY [[LOAD]](s64)
1129 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[COPY1]](s64)
1130 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
1131 ; GREEDY: RET 0, implicit $xmm0
1132 %0:_(p0) = COPY $rdi
1133 %1:_(s64) = G_LOAD %0(p0) :: (load (s64) from %ir.p1)
1134 %2:_(s128) = G_ANYEXT %1(s64)
1135 $xmm0 = COPY %2(s128)
1136 RET 0, implicit $xmm0
1140 name: test_load_v4i32
1143 regBankSelected: false
1146 - { id: 0, class: _ }
1147 - { id: 1, class: _ }
1152 ; FAST-LABEL: name: test_load_v4i32
1153 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1154 ; FAST: [[LOAD:%[0-9]+]]:vecr(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>) from %ir.p1, align 1)
1155 ; FAST: $xmm0 = COPY [[LOAD]](<4 x s32>)
1156 ; FAST: RET 0, implicit $xmm0
1157 ; GREEDY-LABEL: name: test_load_v4i32
1158 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi
1159 ; GREEDY: [[LOAD:%[0-9]+]]:vecr(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>) from %ir.p1, align 1)
1160 ; GREEDY: $xmm0 = COPY [[LOAD]](<4 x s32>)
1161 ; GREEDY: RET 0, implicit $xmm0
1163 %1(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.p1, align 1)
1164 $xmm0 = COPY %1(<4 x s32>)
1165 RET 0, implicit $xmm0
1169 name: test_store_i32
1172 regBankSelected: false
1175 - { id: 0, class: _ }
1176 - { id: 1, class: _ }
1181 ; FAST-LABEL: name: test_store_i32
1182 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1183 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi
1184 ; FAST: G_STORE [[COPY]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1)
1185 ; FAST: $rax = COPY [[COPY1]](p0)
1186 ; FAST: RET 0, implicit $rax
1187 ; GREEDY-LABEL: name: test_store_i32
1188 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1189 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi
1190 ; GREEDY: G_STORE [[COPY]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1)
1191 ; GREEDY: $rax = COPY [[COPY1]](p0)
1192 ; GREEDY: RET 0, implicit $rax
1195 G_STORE %0(s32), %1(p0) :: (store (s32) into %ir.p1)
1197 RET 0, implicit $rax
1201 name: test_store_i64
1204 regBankSelected: false
1207 - { id: 0, class: _ }
1208 - { id: 1, class: _ }
1213 ; FAST-LABEL: name: test_store_i64
1214 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
1215 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi
1216 ; FAST: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1)
1217 ; FAST: $rax = COPY [[COPY1]](p0)
1218 ; FAST: RET 0, implicit $rax
1219 ; GREEDY-LABEL: name: test_store_i64
1220 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
1221 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi
1222 ; GREEDY: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1)
1223 ; GREEDY: $rax = COPY [[COPY1]](p0)
1224 ; GREEDY: RET 0, implicit $rax
1227 G_STORE %0(s64), %1(p0) :: (store (s64) into %ir.p1)
1229 RET 0, implicit $rax
1233 name: test_store_float
1236 regBankSelected: false
1242 - { id: 0, class: _ }
1243 - { id: 1, class: _ }
1246 liveins: $rdi, $xmm0
1248 ; FAST-LABEL: name: test_store_float
1249 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
1250 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
1251 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi
1252 ; FAST: [[COPY2:%[0-9]+]]:gpr(s32) = COPY [[TRUNC]](s32)
1253 ; FAST: G_STORE [[COPY2]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1)
1254 ; FAST: $rax = COPY [[COPY1]](p0)
1255 ; FAST: RET 0, implicit $rax
1256 ; GREEDY-LABEL: name: test_store_float
1257 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
1258 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
1259 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi
1260 ; GREEDY: G_STORE [[TRUNC]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1)
1261 ; GREEDY: $rax = COPY [[COPY1]](p0)
1262 ; GREEDY: RET 0, implicit $rax
1263 %2:_(s128) = COPY $xmm0
1264 %0:_(s32) = G_TRUNC %2(s128)
1265 %1:_(p0) = COPY $rdi
1266 G_STORE %0(s32), %1(p0) :: (store (s32) into %ir.p1)
1268 RET 0, implicit $rax
1272 name: test_store_double
1275 regBankSelected: false
1281 - { id: 0, class: _ }
1282 - { id: 1, class: _ }
1285 liveins: $rdi, $xmm0
1287 ; FAST-LABEL: name: test_store_double
1288 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
1289 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
1290 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi
1291 ; FAST: [[COPY2:%[0-9]+]]:gpr(s64) = COPY [[TRUNC]](s64)
1292 ; FAST: G_STORE [[COPY2]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1)
1293 ; FAST: $rax = COPY [[COPY1]](p0)
1294 ; FAST: RET 0, implicit $rax
1295 ; GREEDY-LABEL: name: test_store_double
1296 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
1297 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
1298 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi
1299 ; GREEDY: G_STORE [[TRUNC]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1)
1300 ; GREEDY: $rax = COPY [[COPY1]](p0)
1301 ; GREEDY: RET 0, implicit $rax
1302 %2:_(s128) = COPY $xmm0
1303 %0:_(s64) = G_TRUNC %2(s128)
1304 %1:_(p0) = COPY $rdi
1305 G_STORE %0(s64), %1(p0) :: (store (s64) into %ir.p1)
1307 RET 0, implicit $rax
1311 name: constInt_check
1315 - { id: 0, class: _ }
1316 - { id: 1, class: _ }
1317 - { id: 2, class: _ }
1318 - { id: 3, class: _ }
1321 ; FAST-LABEL: name: constInt_check
1322 ; FAST: [[C:%[0-9]+]]:gpr(s8) = G_CONSTANT i8 8
1323 ; FAST: [[C1:%[0-9]+]]:gpr(s16) = G_CONSTANT i16 16
1324 ; FAST: [[C2:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 32
1325 ; FAST: [[C3:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 64
1327 ; GREEDY-LABEL: name: constInt_check
1328 ; GREEDY: [[C:%[0-9]+]]:gpr(s8) = G_CONSTANT i8 8
1329 ; GREEDY: [[C1:%[0-9]+]]:gpr(s16) = G_CONSTANT i16 16
1330 ; GREEDY: [[C2:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 32
1331 ; GREEDY: [[C3:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 64
1333 %0(s8) = G_CONSTANT i8 8
1334 %1(s16) = G_CONSTANT i16 16
1335 %2(s32) = G_CONSTANT i32 32
1336 %3(s64) = G_CONSTANT i64 64
1345 - { id: 0, class: _ }
1346 - { id: 1, class: _ }
1347 - { id: 2, class: _ }
1348 - { id: 3, class: _ }
1351 ; FAST-LABEL: name: trunc_check
1352 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
1353 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[DEF]](s32)
1354 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[DEF]](s32)
1355 ; FAST: [[TRUNC2:%[0-9]+]]:gpr(s16) = G_TRUNC [[DEF]](s32)
1357 ; GREEDY-LABEL: name: trunc_check
1358 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
1359 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[DEF]](s32)
1360 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[DEF]](s32)
1361 ; GREEDY: [[TRUNC2:%[0-9]+]]:gpr(s16) = G_TRUNC [[DEF]](s32)
1363 %0(s32) = G_IMPLICIT_DEF
1364 %1(s1) = G_TRUNC %0(s32)
1365 %2(s8) = G_TRUNC %0(s32)
1366 %3(s16) = G_TRUNC %0(s32)
1374 - { id: 0, class: _ }
1375 - { id: 1, class: _ }
1376 - { id: 2, class: _ }
1377 - { id: 3, class: _ }
1378 - { id: 4, class: _ }
1381 ; FAST-LABEL: name: test_gep
1382 ; FAST: [[DEF:%[0-9]+]]:gpr(p0) = G_IMPLICIT_DEF
1383 ; FAST: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 20
1384 ; FAST: [[PTR_ADD:%[0-9]+]]:gpr(p0) = G_PTR_ADD [[DEF]], [[C]](s64)
1387 ; GREEDY-LABEL: name: test_gep
1388 ; GREEDY: [[DEF:%[0-9]+]]:gpr(p0) = G_IMPLICIT_DEF
1389 ; GREEDY: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 20
1390 ; GREEDY: [[PTR_ADD:%[0-9]+]]:gpr(p0) = G_PTR_ADD [[DEF]], [[C]](s64)
1392 %0(p0) = G_IMPLICIT_DEF
1393 %1(s64) = G_CONSTANT i64 20
1394 %2(p0) = G_PTR_ADD %0, %1(s64)
1399 name: test_icmp_eq_i8
1402 regBankSelected: false
1404 - { id: 0, class: _ }
1405 - { id: 1, class: _ }
1406 - { id: 2, class: _ }
1411 ; FAST-LABEL: name: test_icmp_eq_i8
1412 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1413 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY]](s32)
1414 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
1415 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY1]](s32)
1416 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[TRUNC]](s8), [[TRUNC1]]
1417 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)
1418 ; FAST: $al = COPY [[COPY2]](s8)
1419 ; FAST: RET 0, implicit $al
1420 ; GREEDY-LABEL: name: test_icmp_eq_i8
1421 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1422 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY]](s32)
1423 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
1424 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY1]](s32)
1425 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[TRUNC]](s8), [[TRUNC1]]
1426 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)
1427 ; GREEDY: $al = COPY [[COPY2]](s8)
1428 ; GREEDY: RET 0, implicit $al
1429 %2:_(s32) = COPY $edi
1430 %0:_(s8) = G_TRUNC %2(s32)
1431 %3:_(s32) = COPY $esi
1432 %1:_(s8) = G_TRUNC %3(s32)
1433 %6:_(s8) = G_ICMP intpred(eq), %0(s8), %1
1434 %5:_(s8) = COPY %6(s8)
1440 name: test_icmp_eq_i16
1443 regBankSelected: false
1445 - { id: 0, class: _ }
1446 - { id: 1, class: _ }
1447 - { id: 2, class: _ }
1452 ; FAST-LABEL: name: test_icmp_eq_i16
1453 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1454 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY]](s32)
1455 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
1456 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY1]](s32)
1457 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[TRUNC]](s16), [[TRUNC1]]
1458 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)
1459 ; FAST: $al = COPY [[COPY2]](s8)
1460 ; FAST: RET 0, implicit $al
1461 ; GREEDY-LABEL: name: test_icmp_eq_i16
1462 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1463 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY]](s32)
1464 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
1465 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY1]](s32)
1466 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[TRUNC]](s16), [[TRUNC1]]
1467 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)
1468 ; GREEDY: $al = COPY [[COPY2]](s8)
1469 ; GREEDY: RET 0, implicit $al
1470 %2:_(s32) = COPY $edi
1471 %0:_(s16) = G_TRUNC %2(s32)
1472 %3:_(s32) = COPY $esi
1473 %1:_(s16) = G_TRUNC %3(s32)
1474 %6:_(s8) = G_ICMP intpred(eq), %0(s16), %1
1475 %5:_(s8) = COPY %6(s8)
1481 name: test_icmp_eq_i32
1484 regBankSelected: false
1486 - { id: 0, class: _ }
1487 - { id: 1, class: _ }
1488 - { id: 2, class: _ }
1493 ; FAST-LABEL: name: test_icmp_eq_i32
1494 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1495 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
1496 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
1497 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)
1498 ; FAST: $al = COPY [[COPY2]](s8)
1499 ; FAST: RET 0, implicit $al
1500 ; GREEDY-LABEL: name: test_icmp_eq_i32
1501 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1502 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
1503 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]
1504 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)
1505 ; GREEDY: $al = COPY [[COPY2]](s8)
1506 ; GREEDY: RET 0, implicit $al
1507 %0:_(s32) = COPY $edi
1508 %1:_(s32) = COPY $esi
1509 %4:_(s8) = G_ICMP intpred(eq), %0(s32), %1
1510 %3:_(s8) = COPY %4(s8)
1516 name: test_icmp_eq_i64
1519 regBankSelected: false
1521 - { id: 0, class: _ }
1522 - { id: 1, class: _ }
1523 - { id: 2, class: _ }
1528 ; FAST-LABEL: name: test_icmp_eq_i64
1529 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
1530 ; FAST: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi
1531 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
1532 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)
1533 ; FAST: $al = COPY [[COPY2]](s8)
1534 ; FAST: RET 0, implicit $al
1535 ; GREEDY-LABEL: name: test_icmp_eq_i64
1536 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
1537 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi
1538 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]
1539 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)
1540 ; GREEDY: $al = COPY [[COPY2]](s8)
1541 ; GREEDY: RET 0, implicit $al
1542 %0:_(s64) = COPY $rdi
1543 %1:_(s64) = COPY $rsi
1544 %4:_(s8) = G_ICMP intpred(eq), %0(s64), %1
1545 %3:_(s8) = COPY %4(s8)
1554 regBankSelected: false
1556 - { id: 0, class: _, preferred-register: '' }
1557 - { id: 1, class: _, preferred-register: '' }
1564 ; FAST-LABEL: name: test_xor_i8
1565 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF
1566 ; FAST: [[XOR:%[0-9]+]]:gpr(s8) = G_XOR [[DEF]], [[DEF]]
1567 ; FAST: $al = COPY [[XOR]](s8)
1568 ; FAST: RET 0, implicit $al
1569 ; GREEDY-LABEL: name: test_xor_i8
1570 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF
1571 ; GREEDY: [[XOR:%[0-9]+]]:gpr(s8) = G_XOR [[DEF]], [[DEF]]
1572 ; GREEDY: $al = COPY [[XOR]](s8)
1573 ; GREEDY: RET 0, implicit $al
1574 %0(s8) = G_IMPLICIT_DEF
1575 %1(s8) = G_XOR %0, %0
1584 regBankSelected: false
1586 - { id: 0, class: _, preferred-register: '' }
1587 - { id: 1, class: _, preferred-register: '' }
1594 ; FAST-LABEL: name: test_or_i16
1595 ; FAST: [[DEF:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF
1596 ; FAST: [[OR:%[0-9]+]]:gpr(s16) = G_OR [[DEF]], [[DEF]]
1597 ; FAST: $ax = COPY [[OR]](s16)
1598 ; FAST: RET 0, implicit $ax
1599 ; GREEDY-LABEL: name: test_or_i16
1600 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF
1601 ; GREEDY: [[OR:%[0-9]+]]:gpr(s16) = G_OR [[DEF]], [[DEF]]
1602 ; GREEDY: $ax = COPY [[OR]](s16)
1603 ; GREEDY: RET 0, implicit $ax
1604 %0(s16) = G_IMPLICIT_DEF
1605 %1(s16) = G_OR %0, %0
1614 regBankSelected: false
1616 - { id: 0, class: _, preferred-register: '' }
1617 - { id: 1, class: _, preferred-register: '' }
1624 ; FAST-LABEL: name: test_and_i32
1625 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
1626 ; FAST: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[DEF]], [[DEF]]
1627 ; FAST: $eax = COPY [[AND]](s32)
1628 ; FAST: RET 0, implicit $eax
1629 ; GREEDY-LABEL: name: test_and_i32
1630 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
1631 ; GREEDY: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[DEF]], [[DEF]]
1632 ; GREEDY: $eax = COPY [[AND]](s32)
1633 ; GREEDY: RET 0, implicit $eax
1634 %0(s32) = G_IMPLICIT_DEF
1635 %1(s32) = G_AND %0, %0
1637 RET 0, implicit $eax
1644 regBankSelected: false
1646 - { id: 0, class: _, preferred-register: '' }
1647 - { id: 1, class: _, preferred-register: '' }
1654 ; FAST-LABEL: name: test_and_i64
1655 ; FAST: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
1656 ; FAST: [[AND:%[0-9]+]]:gpr(s64) = G_AND [[DEF]], [[DEF]]
1657 ; FAST: $rax = COPY [[AND]](s64)
1658 ; FAST: RET 0, implicit $rax
1659 ; GREEDY-LABEL: name: test_and_i64
1660 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF
1661 ; GREEDY: [[AND:%[0-9]+]]:gpr(s64) = G_AND [[DEF]], [[DEF]]
1662 ; GREEDY: $rax = COPY [[AND]](s64)
1663 ; GREEDY: RET 0, implicit $rax
1664 %0(s64) = G_IMPLICIT_DEF
1665 %1(s64) = G_AND %0, %0
1667 RET 0, implicit $rax
1671 name: test_global_ptrv
1674 regBankSelected: false
1676 - { id: 0, class: _, preferred-register: '' }
1679 ; FAST-LABEL: name: test_global_ptrv
1680 ; FAST: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @g_int
1681 ; FAST: $rax = COPY [[GV]](p0)
1682 ; FAST: RET 0, implicit $rax
1683 ; GREEDY-LABEL: name: test_global_ptrv
1684 ; GREEDY: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @g_int
1685 ; GREEDY: $rax = COPY [[GV]](p0)
1686 ; GREEDY: RET 0, implicit $rax
1687 %0(p0) = G_GLOBAL_VALUE @g_int
1689 RET 0, implicit $rax
1696 regBankSelected: false
1698 - { id: 0, class: _, preferred-register: '' }
1705 ; FAST-LABEL: name: test_undef
1706 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF
1707 ; FAST: $al = COPY [[DEF]](s8)
1708 ; FAST: RET 0, implicit $al
1709 ; GREEDY-LABEL: name: test_undef
1710 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF
1711 ; GREEDY: $al = COPY [[DEF]](s8)
1712 ; GREEDY: RET 0, implicit $al
1713 %0(s8) = G_IMPLICIT_DEF
1722 regBankSelected: false
1724 - { id: 0, class: _, preferred-register: '' }
1725 - { id: 1, class: _, preferred-register: '' }
1726 - { id: 2, class: _, preferred-register: '' }
1735 ; FAST-LABEL: name: test_undef2
1736 ; FAST: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil
1737 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF
1738 ; FAST: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[DEF]]
1739 ; FAST: $al = COPY [[ADD]](s8)
1740 ; FAST: RET 0, implicit $al
1741 ; GREEDY-LABEL: name: test_undef2
1742 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil
1743 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF
1744 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[DEF]]
1745 ; GREEDY: $al = COPY [[ADD]](s8)
1746 ; GREEDY: RET 0, implicit $al
1748 %1(s8) = G_IMPLICIT_DEF
1749 %2(s8) = G_ADD %0, %1
1758 regBankSelected: false
1760 - { id: 1, class: _, preferred-register: '' }
1767 ; FAST-LABEL: name: test_undef3
1768 ; FAST: [[DEF:%[0-9]+]]:vecr(s128) = G_IMPLICIT_DEF
1769 ; FAST: $xmm0 = COPY [[DEF]](s128)
1770 ; FAST: RET 0, implicit $xmm0
1771 ; GREEDY-LABEL: name: test_undef3
1772 ; GREEDY: [[DEF:%[0-9]+]]:vecr(s128) = G_IMPLICIT_DEF
1773 ; GREEDY: $xmm0 = COPY [[DEF]](s128)
1774 ; GREEDY: RET 0, implicit $xmm0
1775 %1(s128) = G_IMPLICIT_DEF
1776 $xmm0 = COPY %1(s128)
1777 RET 0, implicit $xmm0
1784 regBankSelected: false
1786 - { id: 0, class: _, preferred-register: '' }
1787 - { id: 1, class: _, preferred-register: '' }
1788 - { id: 2, class: _, preferred-register: '' }
1789 - { id: 3, class: _, preferred-register: '' }
1790 - { id: 4, class: _, preferred-register: '' }
1799 ; FAST-LABEL: name: test_undef4
1800 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
1801 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
1802 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
1803 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
1804 ; FAST: [[FADD:%[0-9]+]]:vecr(s32) = G_FADD [[TRUNC]], [[COPY1]]
1805 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s32)
1806 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
1807 ; FAST: RET 0, implicit $xmm0
1808 ; GREEDY-LABEL: name: test_undef4
1809 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
1810 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
1811 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF
1812 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)
1813 ; GREEDY: [[FADD:%[0-9]+]]:vecr(s32) = G_FADD [[TRUNC]], [[COPY1]]
1814 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s32)
1815 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
1816 ; GREEDY: RET 0, implicit $xmm0
1817 %1:_(s128) = COPY $xmm0
1818 %0:_(s32) = G_TRUNC %1(s128)
1819 %2:_(s32) = G_IMPLICIT_DEF
1820 %3:_(s32) = G_FADD %0, %2
1821 %4:_(s128) = G_ANYEXT %3(s32)
1822 $xmm0 = COPY %4(s128)
1823 RET 0, implicit $xmm0
1830 regBankSelected: false
1831 tracksRegLiveness: true
1833 - { id: 0, class: _, preferred-register: '' }
1834 - { id: 1, class: _, preferred-register: '' }
1835 - { id: 2, class: _, preferred-register: '' }
1836 - { id: 3, class: _, preferred-register: '' }
1837 - { id: 4, class: _, preferred-register: '' }
1838 - { id: 5, class: _, preferred-register: '' }
1839 - { id: 6, class: _, preferred-register: '' }
1841 ; FAST-LABEL: name: test_i32
1843 ; FAST: successors: %bb.1(0x40000000), %bb.2(0x40000000)
1844 ; FAST: liveins: $edi, $edx, $esi
1845 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1846 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
1847 ; FAST: [[COPY2:%[0-9]+]]:gpr(s32) = COPY $edx
1848 ; FAST: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0
1849 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
1850 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s8)
1851 ; FAST: G_BRCOND [[TRUNC]](s1), %bb.1
1853 ; FAST: bb.1.cond.true:
1854 ; FAST: successors: %bb.3(0x80000000)
1856 ; FAST: bb.2.cond.false:
1857 ; FAST: successors: %bb.3(0x80000000)
1858 ; FAST: bb.3.cond.end:
1859 ; FAST: [[PHI:%[0-9]+]]:gpr(s32) = G_PHI [[COPY1]](s32), %bb.1, [[COPY2]](s32), %bb.2
1860 ; FAST: $eax = COPY [[PHI]](s32)
1861 ; FAST: RET 0, implicit $eax
1862 ; GREEDY-LABEL: name: test_i32
1863 ; GREEDY: bb.0.entry:
1864 ; GREEDY: successors: %bb.1(0x40000000), %bb.2(0x40000000)
1865 ; GREEDY: liveins: $edi, $edx, $esi
1866 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1867 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi
1868 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s32) = COPY $edx
1869 ; GREEDY: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0
1870 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
1871 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s8)
1872 ; GREEDY: G_BRCOND [[TRUNC]](s1), %bb.1
1873 ; GREEDY: G_BR %bb.2
1874 ; GREEDY: bb.1.cond.true:
1875 ; GREEDY: successors: %bb.3(0x80000000)
1876 ; GREEDY: G_BR %bb.3
1877 ; GREEDY: bb.2.cond.false:
1878 ; GREEDY: successors: %bb.3(0x80000000)
1879 ; GREEDY: bb.3.cond.end:
1880 ; GREEDY: [[PHI:%[0-9]+]]:gpr(s32) = G_PHI [[COPY1]](s32), %bb.1, [[COPY2]](s32), %bb.2
1881 ; GREEDY: $eax = COPY [[PHI]](s32)
1882 ; GREEDY: RET 0, implicit $eax
1884 successors: %bb.1(0x40000000), %bb.2(0x40000000)
1885 liveins: $edi, $edx, $esi
1890 %3(s32) = G_CONSTANT i32 0
1891 %6(s8) = G_ICMP intpred(sgt), %0(s32), %3
1892 %4(s1) = G_TRUNC %6(s8)
1893 G_BRCOND %4(s1), %bb.1
1897 successors: %bb.3(0x80000000)
1902 successors: %bb.3(0x80000000)
1905 %5(s32) = G_PHI %1(s32), %bb.1, %2(s32), %bb.2
1907 RET 0, implicit $eax
1914 regBankSelected: false
1915 tracksRegLiveness: true
1917 - { id: 0, class: _, preferred-register: '' }
1918 - { id: 1, class: _, preferred-register: '' }
1919 - { id: 2, class: _, preferred-register: '' }
1920 - { id: 3, class: _, preferred-register: '' }
1921 - { id: 4, class: _, preferred-register: '' }
1922 - { id: 5, class: _, preferred-register: '' }
1924 ; FAST-LABEL: name: test_float
1926 ; FAST: successors: %bb.2(0x40000000), %bb.1(0x40000000)
1927 ; FAST: liveins: $edi, $xmm0, $xmm1
1928 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1929 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm0
1930 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
1931 ; FAST: [[COPY2:%[0-9]+]]:vecr(s128) = COPY $xmm1
1932 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY2]](s128)
1933 ; FAST: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0
1934 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
1935 ; FAST: [[TRUNC2:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s8)
1936 ; FAST: G_BRCOND [[TRUNC2]](s1), %bb.2
1937 ; FAST: bb.1.cond.false:
1938 ; FAST: successors: %bb.2(0x80000000)
1939 ; FAST: bb.2.cond.end:
1940 ; FAST: [[PHI:%[0-9]+]]:vecr(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
1941 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[PHI]](s32)
1942 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
1943 ; FAST: RET 0, implicit $xmm0
1944 ; GREEDY-LABEL: name: test_float
1945 ; GREEDY: bb.0.entry:
1946 ; GREEDY: successors: %bb.2(0x40000000), %bb.1(0x40000000)
1947 ; GREEDY: liveins: $edi, $xmm0, $xmm1
1948 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
1949 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm0
1950 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
1951 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s128) = COPY $xmm1
1952 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY2]](s128)
1953 ; GREEDY: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0
1954 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]
1955 ; GREEDY: [[TRUNC2:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s8)
1956 ; GREEDY: G_BRCOND [[TRUNC2]](s1), %bb.2
1957 ; GREEDY: bb.1.cond.false:
1958 ; GREEDY: successors: %bb.2(0x80000000)
1959 ; GREEDY: bb.2.cond.end:
1960 ; GREEDY: [[PHI:%[0-9]+]]:vecr(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.0
1961 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[PHI]](s32)
1962 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
1963 ; GREEDY: RET 0, implicit $xmm0
1965 successors: %bb.3(0x40000000), %bb.2(0x40000000)
1966 liveins: $edi, $xmm0, $xmm1
1968 %0:_(s32) = COPY $edi
1969 %3:_(s128) = COPY $xmm0
1970 %1:_(s32) = G_TRUNC %3(s128)
1971 %4:_(s128) = COPY $xmm1
1972 %2:_(s32) = G_TRUNC %4(s128)
1973 %5:_(s32) = G_CONSTANT i32 0
1974 %9:_(s8) = G_ICMP intpred(sgt), %0(s32), %5
1975 %6:_(s1) = G_TRUNC %9(s8)
1976 G_BRCOND %6(s1), %bb.3
1979 successors: %bb.3(0x80000000)
1983 %7:_(s32) = G_PHI %2(s32), %bb.2, %1(s32), %bb.1
1984 %8:_(s128) = G_ANYEXT %7(s32)
1985 $xmm0 = COPY %8(s128)
1986 RET 0, implicit $xmm0
1993 regBankSelected: false
1995 - { id: 0, class: _, preferred-register: '' }
1996 - { id: 1, class: _, preferred-register: '' }
2001 ; FAST-LABEL: name: test_fpext
2002 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2003 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2004 ; FAST: [[FPEXT:%[0-9]+]]:vecr(s64) = G_FPEXT [[TRUNC]](s32)
2005 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FPEXT]](s64)
2006 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
2007 ; FAST: RET 0, implicit $xmm0
2008 ; GREEDY-LABEL: name: test_fpext
2009 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2010 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2011 ; GREEDY: [[FPEXT:%[0-9]+]]:vecr(s64) = G_FPEXT [[TRUNC]](s32)
2012 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FPEXT]](s64)
2013 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
2014 ; GREEDY: RET 0, implicit $xmm0
2015 %1:_(s128) = COPY $xmm0
2016 %0:_(s32) = G_TRUNC %1(s128)
2017 %2:_(s64) = G_FPEXT %0(s32)
2018 %3:_(s128) = G_ANYEXT %2(s64)
2019 $xmm0 = COPY %3(s128)
2020 RET 0, implicit $xmm0
2027 tracksRegLiveness: true
2029 - { id: 0, class: _ }
2030 - { id: 1, class: _ }
2031 - { id: 2, class: _ }
2032 - { id: 3, class: _ }
2037 ; FAST-LABEL: name: test_fptrunc
2038 ; FAST: liveins: $xmm0
2039 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2040 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2041 ; FAST: [[FPTRUNC:%[0-9]+]]:vecr(s32) = G_FPTRUNC [[TRUNC]](s64)
2042 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FPTRUNC]](s32)
2043 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
2044 ; FAST: RET 0, implicit $xmm0
2045 ; GREEDY-LABEL: name: test_fptrunc
2046 ; GREEDY: liveins: $xmm0
2047 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2048 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2049 ; GREEDY: [[FPTRUNC:%[0-9]+]]:vecr(s32) = G_FPTRUNC [[TRUNC]](s64)
2050 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FPTRUNC]](s32)
2051 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
2052 ; GREEDY: RET 0, implicit $xmm0
2053 %1:_(s128) = COPY $xmm0
2054 %0:_(s64) = G_TRUNC %1(s128)
2055 %2:_(s32) = G_FPTRUNC %0(s64)
2056 %3:_(s128) = G_ANYEXT %2(s32)
2057 $xmm0 = COPY %3(s128)
2058 RET 0, implicit $xmm0
2062 name: test_fconstant
2063 # ALL-LABEL: name: test_fconstant
2066 - { id: 0, class: _ }
2067 - { id: 1, class: _ }
2070 ; FAST-LABEL: name: test_fconstant
2071 ; FAST: [[C:%[0-9]+]]:vecr(s32) = G_FCONSTANT float 1.000000e+00
2072 ; FAST: [[C1:%[0-9]+]]:vecr(s64) = G_FCONSTANT double 2.000000e+00
2073 ; GREEDY-LABEL: name: test_fconstant
2074 ; GREEDY: [[C:%[0-9]+]]:vecr(s32) = G_FCONSTANT float 1.000000e+00
2075 ; GREEDY: [[C1:%[0-9]+]]:vecr(s64) = G_FCONSTANT double 2.000000e+00
2076 %0(s32) = G_FCONSTANT float 1.0
2077 %1(s64) = G_FCONSTANT double 2.0
2081 name: int32_to_float
2084 tracksRegLiveness: true
2086 - { id: 0, class: _ }
2087 - { id: 1, class: _ }
2088 - { id: 2, class: _ }
2093 ; FAST-LABEL: name: int32_to_float
2094 ; FAST: liveins: $edi
2095 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
2096 ; FAST: [[SITOFP:%[0-9]+]]:vecr(s32) = G_SITOFP [[COPY]](s32)
2097 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s32)
2098 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
2099 ; FAST: RET 0, implicit $xmm0
2100 ; GREEDY-LABEL: name: int32_to_float
2101 ; GREEDY: liveins: $edi
2102 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
2103 ; GREEDY: [[SITOFP:%[0-9]+]]:vecr(s32) = G_SITOFP [[COPY]](s32)
2104 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s32)
2105 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
2106 ; GREEDY: RET 0, implicit $xmm0
2107 %0:_(s32) = COPY $edi
2108 %1:_(s32) = G_SITOFP %0(s32)
2109 %2:_(s128) = G_ANYEXT %1(s32)
2110 $xmm0 = COPY %2(s128)
2111 RET 0, implicit $xmm0
2115 name: int64_to_float
2118 tracksRegLiveness: true
2120 - { id: 0, class: _ }
2121 - { id: 1, class: _ }
2122 - { id: 2, class: _ }
2127 ; FAST-LABEL: name: int64_to_float
2128 ; FAST: liveins: $rdi
2129 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
2130 ; FAST: [[SITOFP:%[0-9]+]]:vecr(s32) = G_SITOFP [[COPY]](s64)
2131 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s32)
2132 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
2133 ; FAST: RET 0, implicit $xmm0
2134 ; GREEDY-LABEL: name: int64_to_float
2135 ; GREEDY: liveins: $rdi
2136 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
2137 ; GREEDY: [[SITOFP:%[0-9]+]]:vecr(s32) = G_SITOFP [[COPY]](s64)
2138 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s32)
2139 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
2140 ; GREEDY: RET 0, implicit $xmm0
2141 %0:_(s64) = COPY $rdi
2142 %1:_(s32) = G_SITOFP %0(s64)
2143 %2:_(s128) = G_ANYEXT %1(s32)
2144 $xmm0 = COPY %2(s128)
2145 RET 0, implicit $xmm0
2149 name: int32_to_double
2152 tracksRegLiveness: true
2154 - { id: 0, class: _ }
2155 - { id: 1, class: _ }
2156 - { id: 2, class: _ }
2161 ; FAST-LABEL: name: int32_to_double
2162 ; FAST: liveins: $edi
2163 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
2164 ; FAST: [[SITOFP:%[0-9]+]]:vecr(s64) = G_SITOFP [[COPY]](s32)
2165 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s64)
2166 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
2167 ; FAST: RET 0, implicit $xmm0
2168 ; GREEDY-LABEL: name: int32_to_double
2169 ; GREEDY: liveins: $edi
2170 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi
2171 ; GREEDY: [[SITOFP:%[0-9]+]]:vecr(s64) = G_SITOFP [[COPY]](s32)
2172 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s64)
2173 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
2174 ; GREEDY: RET 0, implicit $xmm0
2175 %0:_(s32) = COPY $edi
2176 %1:_(s64) = G_SITOFP %0(s32)
2177 %2:_(s128) = G_ANYEXT %1(s64)
2178 $xmm0 = COPY %2(s128)
2179 RET 0, implicit $xmm0
2183 name: int64_to_double
2186 tracksRegLiveness: true
2188 - { id: 0, class: _ }
2189 - { id: 1, class: _ }
2190 - { id: 2, class: _ }
2195 ; FAST-LABEL: name: int64_to_double
2196 ; FAST: liveins: $rdi
2197 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
2198 ; FAST: [[SITOFP:%[0-9]+]]:vecr(s64) = G_SITOFP [[COPY]](s64)
2199 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s64)
2200 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)
2201 ; FAST: RET 0, implicit $xmm0
2202 ; GREEDY-LABEL: name: int64_to_double
2203 ; GREEDY: liveins: $rdi
2204 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi
2205 ; GREEDY: [[SITOFP:%[0-9]+]]:vecr(s64) = G_SITOFP [[COPY]](s64)
2206 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s64)
2207 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)
2208 ; GREEDY: RET 0, implicit $xmm0
2209 %0:_(s64) = COPY $rdi
2210 %1:_(s64) = G_SITOFP %0(s64)
2211 %2:_(s128) = G_ANYEXT %1(s64)
2212 $xmm0 = COPY %2(s128)
2213 RET 0, implicit $xmm0
2220 tracksRegLiveness: true
2222 - { id: 0, class: _ }
2223 - { id: 1, class: _ }
2224 - { id: 2, class: _ }
2225 - { id: 3, class: _ }
2230 ; FAST-LABEL: name: float_to_int8
2231 ; FAST: liveins: $xmm0
2232 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2233 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2234 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)
2235 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[FPTOSI]](s32)
2236 ; FAST: $al = COPY [[TRUNC1]](s8)
2237 ; FAST: RET 0, implicit $al
2238 ; GREEDY-LABEL: name: float_to_int8
2239 ; GREEDY: liveins: $xmm0
2240 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2241 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2242 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)
2243 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[FPTOSI]](s32)
2244 ; GREEDY: $al = COPY [[TRUNC1]](s8)
2245 ; GREEDY: RET 0, implicit $al
2246 %1:_(s128) = COPY $xmm0
2247 %0:_(s32) = G_TRUNC %1(s128)
2248 %3:_(s32) = G_FPTOSI %0(s32)
2249 %2:_(s8) = G_TRUNC %3(s32)
2255 name: float_to_int16
2258 tracksRegLiveness: true
2260 - { id: 0, class: _ }
2261 - { id: 1, class: _ }
2262 - { id: 2, class: _ }
2263 - { id: 3, class: _ }
2268 ; FAST-LABEL: name: float_to_int16
2269 ; FAST: liveins: $xmm0
2270 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2271 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2272 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)
2273 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[FPTOSI]](s32)
2274 ; FAST: $ax = COPY [[TRUNC1]](s16)
2275 ; FAST: RET 0, implicit $ax
2276 ; GREEDY-LABEL: name: float_to_int16
2277 ; GREEDY: liveins: $xmm0
2278 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2279 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2280 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)
2281 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[FPTOSI]](s32)
2282 ; GREEDY: $ax = COPY [[TRUNC1]](s16)
2283 ; GREEDY: RET 0, implicit $ax
2284 %1:_(s128) = COPY $xmm0
2285 %0:_(s32) = G_TRUNC %1(s128)
2286 %3:_(s32) = G_FPTOSI %0(s32)
2287 %2:_(s16) = G_TRUNC %3(s32)
2293 name: float_to_int32
2296 tracksRegLiveness: true
2298 - { id: 0, class: _ }
2299 - { id: 1, class: _ }
2300 - { id: 2, class: _ }
2305 ; FAST-LABEL: name: float_to_int32
2306 ; FAST: liveins: $xmm0
2307 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2308 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2309 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)
2310 ; FAST: $eax = COPY [[FPTOSI]](s32)
2311 ; FAST: RET 0, implicit $eax
2312 ; GREEDY-LABEL: name: float_to_int32
2313 ; GREEDY: liveins: $xmm0
2314 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2315 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2316 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)
2317 ; GREEDY: $eax = COPY [[FPTOSI]](s32)
2318 ; GREEDY: RET 0, implicit $eax
2319 %1:_(s128) = COPY $xmm0
2320 %0:_(s32) = G_TRUNC %1(s128)
2321 %2:_(s32) = G_FPTOSI %0(s32)
2323 RET 0, implicit $eax
2327 name: float_to_int64
2330 tracksRegLiveness: true
2332 - { id: 0, class: _ }
2333 - { id: 1, class: _ }
2334 - { id: 2, class: _ }
2339 ; FAST-LABEL: name: float_to_int64
2340 ; FAST: liveins: $xmm0
2341 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2342 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2343 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[TRUNC]](s32)
2344 ; FAST: $rax = COPY [[FPTOSI]](s64)
2345 ; FAST: RET 0, implicit $rax
2346 ; GREEDY-LABEL: name: float_to_int64
2347 ; GREEDY: liveins: $xmm0
2348 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2349 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2350 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[TRUNC]](s32)
2351 ; GREEDY: $rax = COPY [[FPTOSI]](s64)
2352 ; GREEDY: RET 0, implicit $rax
2353 %1:_(s128) = COPY $xmm0
2354 %0:_(s32) = G_TRUNC %1(s128)
2355 %2:_(s64) = G_FPTOSI %0(s32)
2357 RET 0, implicit $rax
2361 name: double_to_int8
2364 tracksRegLiveness: true
2366 - { id: 0, class: _ }
2367 - { id: 1, class: _ }
2368 - { id: 2, class: _ }
2369 - { id: 3, class: _ }
2374 ; FAST-LABEL: name: double_to_int8
2375 ; FAST: liveins: $xmm0
2376 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2377 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2378 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)
2379 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[FPTOSI]](s32)
2380 ; FAST: $al = COPY [[TRUNC1]](s8)
2381 ; FAST: RET 0, implicit $al
2382 ; GREEDY-LABEL: name: double_to_int8
2383 ; GREEDY: liveins: $xmm0
2384 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2385 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2386 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)
2387 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[FPTOSI]](s32)
2388 ; GREEDY: $al = COPY [[TRUNC1]](s8)
2389 ; GREEDY: RET 0, implicit $al
2390 %1:_(s128) = COPY $xmm0
2391 %0:_(s64) = G_TRUNC %1(s128)
2392 %3:_(s32) = G_FPTOSI %0(s64)
2393 %2:_(s8) = G_TRUNC %3(s32)
2399 name: double_to_int16
2402 tracksRegLiveness: true
2404 - { id: 0, class: _ }
2405 - { id: 1, class: _ }
2406 - { id: 2, class: _ }
2407 - { id: 3, class: _ }
2412 ; FAST-LABEL: name: double_to_int16
2413 ; FAST: liveins: $xmm0
2414 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2415 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2416 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)
2417 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[FPTOSI]](s32)
2418 ; FAST: $ax = COPY [[TRUNC1]](s16)
2419 ; FAST: RET 0, implicit $ax
2420 ; GREEDY-LABEL: name: double_to_int16
2421 ; GREEDY: liveins: $xmm0
2422 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2423 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2424 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)
2425 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[FPTOSI]](s32)
2426 ; GREEDY: $ax = COPY [[TRUNC1]](s16)
2427 ; GREEDY: RET 0, implicit $ax
2428 %1:_(s128) = COPY $xmm0
2429 %0:_(s64) = G_TRUNC %1(s128)
2430 %3:_(s32) = G_FPTOSI %0(s64)
2431 %2:_(s16) = G_TRUNC %3(s32)
2437 name: double_to_int32
2440 tracksRegLiveness: true
2442 - { id: 0, class: _ }
2443 - { id: 1, class: _ }
2444 - { id: 2, class: _ }
2449 ; FAST-LABEL: name: double_to_int32
2450 ; FAST: liveins: $xmm0
2451 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2452 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2453 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)
2454 ; FAST: $eax = COPY [[FPTOSI]](s32)
2455 ; FAST: RET 0, implicit $eax
2456 ; GREEDY-LABEL: name: double_to_int32
2457 ; GREEDY: liveins: $xmm0
2458 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2459 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2460 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)
2461 ; GREEDY: $eax = COPY [[FPTOSI]](s32)
2462 ; GREEDY: RET 0, implicit $eax
2463 %1:_(s128) = COPY $xmm0
2464 %0:_(s64) = G_TRUNC %1(s128)
2465 %2:_(s32) = G_FPTOSI %0(s64)
2467 RET 0, implicit $eax
2471 name: double_to_int64
2474 tracksRegLiveness: true
2476 - { id: 0, class: _ }
2477 - { id: 1, class: _ }
2478 - { id: 2, class: _ }
2483 ; FAST-LABEL: name: double_to_int64
2484 ; FAST: liveins: $xmm0
2485 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2486 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2487 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[TRUNC]](s64)
2488 ; FAST: $rax = COPY [[FPTOSI]](s64)
2489 ; FAST: RET 0, implicit $rax
2490 ; GREEDY-LABEL: name: double_to_int64
2491 ; GREEDY: liveins: $xmm0
2492 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2493 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
2494 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[TRUNC]](s64)
2495 ; GREEDY: $rax = COPY [[FPTOSI]](s64)
2496 ; GREEDY: RET 0, implicit $rax
2497 %1:_(s128) = COPY $xmm0
2498 %0:_(s64) = G_TRUNC %1(s128)
2499 %2:_(s64) = G_FPTOSI %0(s64)
2501 RET 0, implicit $rax
2505 name: fcmp_float_oeq
2508 tracksRegLiveness: true
2510 - { id: 0, class: _ }
2511 - { id: 1, class: _ }
2512 - { id: 2, class: _ }
2513 - { id: 3, class: _ }
2514 - { id: 4, class: _ }
2515 - { id: 5, class: _ }
2516 - { id: 6, class: _ }
2519 liveins: $xmm0, $xmm1
2521 ; FAST-LABEL: name: fcmp_float_oeq
2522 ; FAST: liveins: $xmm0, $xmm1
2523 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2524 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2525 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2526 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2527 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s32), [[TRUNC1]]
2528 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2529 ; FAST: $al = COPY [[COPY2]](s8)
2530 ; FAST: RET 0, implicit $al
2531 ; GREEDY-LABEL: name: fcmp_float_oeq
2532 ; GREEDY: liveins: $xmm0, $xmm1
2533 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2534 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2535 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2536 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2537 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s32), [[TRUNC1]]
2538 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2539 ; GREEDY: $al = COPY [[COPY2]](s8)
2540 ; GREEDY: RET 0, implicit $al
2541 %2:_(s128) = COPY $xmm0
2542 %0:_(s32) = G_TRUNC %2(s128)
2543 %3:_(s128) = COPY $xmm1
2544 %1:_(s32) = G_TRUNC %3(s128)
2545 %6:_(s8) = G_FCMP floatpred(oeq), %0(s32), %1
2546 %5:_(s8) = COPY %6(s8)
2552 name: fcmp_float_ogt
2555 tracksRegLiveness: true
2557 - { id: 0, class: _ }
2558 - { id: 1, class: _ }
2559 - { id: 2, class: _ }
2560 - { id: 3, class: _ }
2561 - { id: 4, class: _ }
2562 - { id: 5, class: _ }
2563 - { id: 6, class: _ }
2566 liveins: $xmm0, $xmm1
2568 ; FAST-LABEL: name: fcmp_float_ogt
2569 ; FAST: liveins: $xmm0, $xmm1
2570 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2571 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2572 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2573 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2574 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s32), [[TRUNC1]]
2575 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2576 ; FAST: $al = COPY [[COPY2]](s8)
2577 ; FAST: RET 0, implicit $al
2578 ; GREEDY-LABEL: name: fcmp_float_ogt
2579 ; GREEDY: liveins: $xmm0, $xmm1
2580 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2581 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2582 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2583 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2584 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s32), [[TRUNC1]]
2585 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2586 ; GREEDY: $al = COPY [[COPY2]](s8)
2587 ; GREEDY: RET 0, implicit $al
2588 %2:_(s128) = COPY $xmm0
2589 %0:_(s32) = G_TRUNC %2(s128)
2590 %3:_(s128) = COPY $xmm1
2591 %1:_(s32) = G_TRUNC %3(s128)
2592 %6:_(s8) = G_FCMP floatpred(ogt), %0(s32), %1
2593 %5:_(s8) = COPY %6(s8)
2599 name: fcmp_float_oge
2602 tracksRegLiveness: true
2604 - { id: 0, class: _ }
2605 - { id: 1, class: _ }
2606 - { id: 2, class: _ }
2607 - { id: 3, class: _ }
2608 - { id: 4, class: _ }
2609 - { id: 5, class: _ }
2610 - { id: 6, class: _ }
2613 liveins: $xmm0, $xmm1
2615 ; FAST-LABEL: name: fcmp_float_oge
2616 ; FAST: liveins: $xmm0, $xmm1
2617 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2618 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2619 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2620 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2621 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oge), [[TRUNC]](s32), [[TRUNC1]]
2622 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2623 ; FAST: $al = COPY [[COPY2]](s8)
2624 ; FAST: RET 0, implicit $al
2625 ; GREEDY-LABEL: name: fcmp_float_oge
2626 ; GREEDY: liveins: $xmm0, $xmm1
2627 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2628 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2629 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2630 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2631 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oge), [[TRUNC]](s32), [[TRUNC1]]
2632 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2633 ; GREEDY: $al = COPY [[COPY2]](s8)
2634 ; GREEDY: RET 0, implicit $al
2635 %2:_(s128) = COPY $xmm0
2636 %0:_(s32) = G_TRUNC %2(s128)
2637 %3:_(s128) = COPY $xmm1
2638 %1:_(s32) = G_TRUNC %3(s128)
2639 %6:_(s8) = G_FCMP floatpred(oge), %0(s32), %1
2640 %5:_(s8) = COPY %6(s8)
2646 name: fcmp_float_olt
2649 tracksRegLiveness: true
2651 - { id: 0, class: _ }
2652 - { id: 1, class: _ }
2653 - { id: 2, class: _ }
2654 - { id: 3, class: _ }
2655 - { id: 4, class: _ }
2656 - { id: 5, class: _ }
2657 - { id: 6, class: _ }
2660 liveins: $xmm0, $xmm1
2662 ; FAST-LABEL: name: fcmp_float_olt
2663 ; FAST: liveins: $xmm0, $xmm1
2664 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2665 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2666 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2667 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2668 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(olt), [[TRUNC]](s32), [[TRUNC1]]
2669 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2670 ; FAST: $al = COPY [[COPY2]](s8)
2671 ; FAST: RET 0, implicit $al
2672 ; GREEDY-LABEL: name: fcmp_float_olt
2673 ; GREEDY: liveins: $xmm0, $xmm1
2674 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2675 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2676 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2677 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2678 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(olt), [[TRUNC]](s32), [[TRUNC1]]
2679 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2680 ; GREEDY: $al = COPY [[COPY2]](s8)
2681 ; GREEDY: RET 0, implicit $al
2682 %2:_(s128) = COPY $xmm0
2683 %0:_(s32) = G_TRUNC %2(s128)
2684 %3:_(s128) = COPY $xmm1
2685 %1:_(s32) = G_TRUNC %3(s128)
2686 %6:_(s8) = G_FCMP floatpred(olt), %0(s32), %1
2687 %5:_(s8) = COPY %6(s8)
2693 name: fcmp_float_ole
2696 tracksRegLiveness: true
2698 - { id: 0, class: _ }
2699 - { id: 1, class: _ }
2700 - { id: 2, class: _ }
2701 - { id: 3, class: _ }
2702 - { id: 4, class: _ }
2703 - { id: 5, class: _ }
2704 - { id: 6, class: _ }
2707 liveins: $xmm0, $xmm1
2709 ; FAST-LABEL: name: fcmp_float_ole
2710 ; FAST: liveins: $xmm0, $xmm1
2711 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2712 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2713 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2714 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2715 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ole), [[TRUNC]](s32), [[TRUNC1]]
2716 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2717 ; FAST: $al = COPY [[COPY2]](s8)
2718 ; FAST: RET 0, implicit $al
2719 ; GREEDY-LABEL: name: fcmp_float_ole
2720 ; GREEDY: liveins: $xmm0, $xmm1
2721 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2722 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2723 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2724 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2725 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ole), [[TRUNC]](s32), [[TRUNC1]]
2726 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2727 ; GREEDY: $al = COPY [[COPY2]](s8)
2728 ; GREEDY: RET 0, implicit $al
2729 %2:_(s128) = COPY $xmm0
2730 %0:_(s32) = G_TRUNC %2(s128)
2731 %3:_(s128) = COPY $xmm1
2732 %1:_(s32) = G_TRUNC %3(s128)
2733 %6:_(s8) = G_FCMP floatpred(ole), %0(s32), %1
2734 %5:_(s8) = COPY %6(s8)
2740 name: fcmp_float_one
2743 tracksRegLiveness: true
2745 - { id: 0, class: _ }
2746 - { id: 1, class: _ }
2747 - { id: 2, class: _ }
2748 - { id: 3, class: _ }
2749 - { id: 4, class: _ }
2750 - { id: 5, class: _ }
2751 - { id: 6, class: _ }
2754 liveins: $xmm0, $xmm1
2756 ; FAST-LABEL: name: fcmp_float_one
2757 ; FAST: liveins: $xmm0, $xmm1
2758 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2759 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2760 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2761 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2762 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(one), [[TRUNC]](s32), [[TRUNC1]]
2763 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2764 ; FAST: $al = COPY [[COPY2]](s8)
2765 ; FAST: RET 0, implicit $al
2766 ; GREEDY-LABEL: name: fcmp_float_one
2767 ; GREEDY: liveins: $xmm0, $xmm1
2768 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2769 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2770 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2771 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2772 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(one), [[TRUNC]](s32), [[TRUNC1]]
2773 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2774 ; GREEDY: $al = COPY [[COPY2]](s8)
2775 ; GREEDY: RET 0, implicit $al
2776 %2:_(s128) = COPY $xmm0
2777 %0:_(s32) = G_TRUNC %2(s128)
2778 %3:_(s128) = COPY $xmm1
2779 %1:_(s32) = G_TRUNC %3(s128)
2780 %6:_(s8) = G_FCMP floatpred(one), %0(s32), %1
2781 %5:_(s8) = COPY %6(s8)
2787 name: fcmp_float_ord
2790 tracksRegLiveness: true
2792 - { id: 0, class: _ }
2793 - { id: 1, class: _ }
2794 - { id: 2, class: _ }
2795 - { id: 3, class: _ }
2796 - { id: 4, class: _ }
2797 - { id: 5, class: _ }
2798 - { id: 6, class: _ }
2801 liveins: $xmm0, $xmm1
2803 ; FAST-LABEL: name: fcmp_float_ord
2804 ; FAST: liveins: $xmm0, $xmm1
2805 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2806 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2807 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2808 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2809 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ord), [[TRUNC]](s32), [[TRUNC1]]
2810 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2811 ; FAST: $al = COPY [[COPY2]](s8)
2812 ; FAST: RET 0, implicit $al
2813 ; GREEDY-LABEL: name: fcmp_float_ord
2814 ; GREEDY: liveins: $xmm0, $xmm1
2815 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2816 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2817 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2818 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2819 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ord), [[TRUNC]](s32), [[TRUNC1]]
2820 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2821 ; GREEDY: $al = COPY [[COPY2]](s8)
2822 ; GREEDY: RET 0, implicit $al
2823 %2:_(s128) = COPY $xmm0
2824 %0:_(s32) = G_TRUNC %2(s128)
2825 %3:_(s128) = COPY $xmm1
2826 %1:_(s32) = G_TRUNC %3(s128)
2827 %6:_(s8) = G_FCMP floatpred(ord), %0(s32), %1
2828 %5:_(s8) = COPY %6(s8)
2834 name: fcmp_float_uno
2837 tracksRegLiveness: true
2839 - { id: 0, class: _ }
2840 - { id: 1, class: _ }
2841 - { id: 2, class: _ }
2842 - { id: 3, class: _ }
2843 - { id: 4, class: _ }
2844 - { id: 5, class: _ }
2845 - { id: 6, class: _ }
2848 liveins: $xmm0, $xmm1
2850 ; FAST-LABEL: name: fcmp_float_uno
2851 ; FAST: liveins: $xmm0, $xmm1
2852 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2853 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2854 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2855 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2856 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uno), [[TRUNC]](s32), [[TRUNC1]]
2857 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2858 ; FAST: $al = COPY [[COPY2]](s8)
2859 ; FAST: RET 0, implicit $al
2860 ; GREEDY-LABEL: name: fcmp_float_uno
2861 ; GREEDY: liveins: $xmm0, $xmm1
2862 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2863 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2864 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2865 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2866 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uno), [[TRUNC]](s32), [[TRUNC1]]
2867 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2868 ; GREEDY: $al = COPY [[COPY2]](s8)
2869 ; GREEDY: RET 0, implicit $al
2870 %2:_(s128) = COPY $xmm0
2871 %0:_(s32) = G_TRUNC %2(s128)
2872 %3:_(s128) = COPY $xmm1
2873 %1:_(s32) = G_TRUNC %3(s128)
2874 %6:_(s8) = G_FCMP floatpred(uno), %0(s32), %1
2875 %5:_(s8) = COPY %6(s8)
2881 name: fcmp_float_ueq
2884 tracksRegLiveness: true
2886 - { id: 0, class: _ }
2887 - { id: 1, class: _ }
2888 - { id: 2, class: _ }
2889 - { id: 3, class: _ }
2890 - { id: 4, class: _ }
2891 - { id: 5, class: _ }
2892 - { id: 6, class: _ }
2895 liveins: $xmm0, $xmm1
2897 ; FAST-LABEL: name: fcmp_float_ueq
2898 ; FAST: liveins: $xmm0, $xmm1
2899 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2900 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2901 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2902 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2903 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s32), [[TRUNC1]]
2904 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2905 ; FAST: $al = COPY [[COPY2]](s8)
2906 ; FAST: RET 0, implicit $al
2907 ; GREEDY-LABEL: name: fcmp_float_ueq
2908 ; GREEDY: liveins: $xmm0, $xmm1
2909 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2910 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2911 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2912 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2913 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s32), [[TRUNC1]]
2914 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2915 ; GREEDY: $al = COPY [[COPY2]](s8)
2916 ; GREEDY: RET 0, implicit $al
2917 %2:_(s128) = COPY $xmm0
2918 %0:_(s32) = G_TRUNC %2(s128)
2919 %3:_(s128) = COPY $xmm1
2920 %1:_(s32) = G_TRUNC %3(s128)
2921 %6:_(s8) = G_FCMP floatpred(ueq), %0(s32), %1
2922 %5:_(s8) = COPY %6(s8)
2928 name: fcmp_float_ugt
2931 tracksRegLiveness: true
2933 - { id: 0, class: _ }
2934 - { id: 1, class: _ }
2935 - { id: 2, class: _ }
2936 - { id: 3, class: _ }
2937 - { id: 4, class: _ }
2938 - { id: 5, class: _ }
2939 - { id: 6, class: _ }
2942 liveins: $xmm0, $xmm1
2944 ; FAST-LABEL: name: fcmp_float_ugt
2945 ; FAST: liveins: $xmm0, $xmm1
2946 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2947 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2948 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2949 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2950 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s32), [[TRUNC1]]
2951 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2952 ; FAST: $al = COPY [[COPY2]](s8)
2953 ; FAST: RET 0, implicit $al
2954 ; GREEDY-LABEL: name: fcmp_float_ugt
2955 ; GREEDY: liveins: $xmm0, $xmm1
2956 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2957 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2958 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2959 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2960 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s32), [[TRUNC1]]
2961 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2962 ; GREEDY: $al = COPY [[COPY2]](s8)
2963 ; GREEDY: RET 0, implicit $al
2964 %2:_(s128) = COPY $xmm0
2965 %0:_(s32) = G_TRUNC %2(s128)
2966 %3:_(s128) = COPY $xmm1
2967 %1:_(s32) = G_TRUNC %3(s128)
2968 %6:_(s8) = G_FCMP floatpred(ugt), %0(s32), %1
2969 %5:_(s8) = COPY %6(s8)
2975 name: fcmp_float_uge
2978 tracksRegLiveness: true
2980 - { id: 0, class: _ }
2981 - { id: 1, class: _ }
2982 - { id: 2, class: _ }
2983 - { id: 3, class: _ }
2984 - { id: 4, class: _ }
2985 - { id: 5, class: _ }
2986 - { id: 6, class: _ }
2989 liveins: $xmm0, $xmm1
2991 ; FAST-LABEL: name: fcmp_float_uge
2992 ; FAST: liveins: $xmm0, $xmm1
2993 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
2994 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
2995 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
2996 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
2997 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uge), [[TRUNC]](s32), [[TRUNC1]]
2998 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
2999 ; FAST: $al = COPY [[COPY2]](s8)
3000 ; FAST: RET 0, implicit $al
3001 ; GREEDY-LABEL: name: fcmp_float_uge
3002 ; GREEDY: liveins: $xmm0, $xmm1
3003 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3004 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
3005 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3006 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
3007 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uge), [[TRUNC]](s32), [[TRUNC1]]
3008 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3009 ; GREEDY: $al = COPY [[COPY2]](s8)
3010 ; GREEDY: RET 0, implicit $al
3011 %2:_(s128) = COPY $xmm0
3012 %0:_(s32) = G_TRUNC %2(s128)
3013 %3:_(s128) = COPY $xmm1
3014 %1:_(s32) = G_TRUNC %3(s128)
3015 %6:_(s8) = G_FCMP floatpred(uge), %0(s32), %1
3016 %5:_(s8) = COPY %6(s8)
3022 name: fcmp_float_ult
3025 tracksRegLiveness: true
3027 - { id: 0, class: _ }
3028 - { id: 1, class: _ }
3029 - { id: 2, class: _ }
3030 - { id: 3, class: _ }
3031 - { id: 4, class: _ }
3032 - { id: 5, class: _ }
3033 - { id: 6, class: _ }
3036 liveins: $xmm0, $xmm1
3038 ; FAST-LABEL: name: fcmp_float_ult
3039 ; FAST: liveins: $xmm0, $xmm1
3040 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3041 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
3042 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3043 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
3044 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ult), [[TRUNC]](s32), [[TRUNC1]]
3045 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3046 ; FAST: $al = COPY [[COPY2]](s8)
3047 ; FAST: RET 0, implicit $al
3048 ; GREEDY-LABEL: name: fcmp_float_ult
3049 ; GREEDY: liveins: $xmm0, $xmm1
3050 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3051 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
3052 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3053 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
3054 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ult), [[TRUNC]](s32), [[TRUNC1]]
3055 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3056 ; GREEDY: $al = COPY [[COPY2]](s8)
3057 ; GREEDY: RET 0, implicit $al
3058 %2:_(s128) = COPY $xmm0
3059 %0:_(s32) = G_TRUNC %2(s128)
3060 %3:_(s128) = COPY $xmm1
3061 %1:_(s32) = G_TRUNC %3(s128)
3062 %6:_(s8) = G_FCMP floatpred(ult), %0(s32), %1
3063 %5:_(s8) = COPY %6(s8)
3069 name: fcmp_float_ule
3072 tracksRegLiveness: true
3074 - { id: 0, class: _ }
3075 - { id: 1, class: _ }
3076 - { id: 2, class: _ }
3077 - { id: 3, class: _ }
3078 - { id: 4, class: _ }
3079 - { id: 5, class: _ }
3080 - { id: 6, class: _ }
3083 liveins: $xmm0, $xmm1
3085 ; FAST-LABEL: name: fcmp_float_ule
3086 ; FAST: liveins: $xmm0, $xmm1
3087 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3088 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
3089 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3090 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
3091 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ule), [[TRUNC]](s32), [[TRUNC1]]
3092 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3093 ; FAST: $al = COPY [[COPY2]](s8)
3094 ; FAST: RET 0, implicit $al
3095 ; GREEDY-LABEL: name: fcmp_float_ule
3096 ; GREEDY: liveins: $xmm0, $xmm1
3097 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3098 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
3099 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3100 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
3101 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ule), [[TRUNC]](s32), [[TRUNC1]]
3102 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3103 ; GREEDY: $al = COPY [[COPY2]](s8)
3104 ; GREEDY: RET 0, implicit $al
3105 %2:_(s128) = COPY $xmm0
3106 %0:_(s32) = G_TRUNC %2(s128)
3107 %3:_(s128) = COPY $xmm1
3108 %1:_(s32) = G_TRUNC %3(s128)
3109 %6:_(s8) = G_FCMP floatpred(ule), %0(s32), %1
3110 %5:_(s8) = COPY %6(s8)
3116 name: fcmp_float_une
3119 tracksRegLiveness: true
3121 - { id: 0, class: _ }
3122 - { id: 1, class: _ }
3123 - { id: 2, class: _ }
3124 - { id: 3, class: _ }
3125 - { id: 4, class: _ }
3126 - { id: 5, class: _ }
3127 - { id: 6, class: _ }
3130 liveins: $xmm0, $xmm1
3132 ; FAST-LABEL: name: fcmp_float_une
3133 ; FAST: liveins: $xmm0, $xmm1
3134 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3135 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
3136 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3137 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
3138 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(une), [[TRUNC]](s32), [[TRUNC1]]
3139 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3140 ; FAST: $al = COPY [[COPY2]](s8)
3141 ; FAST: RET 0, implicit $al
3142 ; GREEDY-LABEL: name: fcmp_float_une
3143 ; GREEDY: liveins: $xmm0, $xmm1
3144 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3145 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)
3146 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3147 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)
3148 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(une), [[TRUNC]](s32), [[TRUNC1]]
3149 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3150 ; GREEDY: $al = COPY [[COPY2]](s8)
3151 ; GREEDY: RET 0, implicit $al
3152 %2:_(s128) = COPY $xmm0
3153 %0:_(s32) = G_TRUNC %2(s128)
3154 %3:_(s128) = COPY $xmm1
3155 %1:_(s32) = G_TRUNC %3(s128)
3156 %6:_(s8) = G_FCMP floatpred(une), %0(s32), %1
3157 %5:_(s8) = COPY %6(s8)
3163 name: fcmp_double_oeq
3166 tracksRegLiveness: true
3168 - { id: 0, class: _ }
3169 - { id: 1, class: _ }
3170 - { id: 2, class: _ }
3171 - { id: 3, class: _ }
3172 - { id: 4, class: _ }
3173 - { id: 5, class: _ }
3174 - { id: 6, class: _ }
3177 liveins: $xmm0, $xmm1
3179 ; FAST-LABEL: name: fcmp_double_oeq
3180 ; FAST: liveins: $xmm0, $xmm1
3181 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3182 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3183 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3184 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3185 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s64), [[TRUNC1]]
3186 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3187 ; FAST: $al = COPY [[COPY2]](s8)
3188 ; FAST: RET 0, implicit $al
3189 ; GREEDY-LABEL: name: fcmp_double_oeq
3190 ; GREEDY: liveins: $xmm0, $xmm1
3191 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3192 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3193 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3194 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3195 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s64), [[TRUNC1]]
3196 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3197 ; GREEDY: $al = COPY [[COPY2]](s8)
3198 ; GREEDY: RET 0, implicit $al
3199 %2:_(s128) = COPY $xmm0
3200 %0:_(s64) = G_TRUNC %2(s128)
3201 %3:_(s128) = COPY $xmm1
3202 %1:_(s64) = G_TRUNC %3(s128)
3203 %6:_(s8) = G_FCMP floatpred(oeq), %0(s64), %1
3204 %5:_(s8) = COPY %6(s8)
3210 name: fcmp_double_ogt
3213 tracksRegLiveness: true
3215 - { id: 0, class: _ }
3216 - { id: 1, class: _ }
3217 - { id: 2, class: _ }
3218 - { id: 3, class: _ }
3219 - { id: 4, class: _ }
3220 - { id: 5, class: _ }
3221 - { id: 6, class: _ }
3224 liveins: $xmm0, $xmm1
3226 ; FAST-LABEL: name: fcmp_double_ogt
3227 ; FAST: liveins: $xmm0, $xmm1
3228 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3229 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3230 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3231 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3232 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s64), [[TRUNC1]]
3233 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3234 ; FAST: $al = COPY [[COPY2]](s8)
3235 ; FAST: RET 0, implicit $al
3236 ; GREEDY-LABEL: name: fcmp_double_ogt
3237 ; GREEDY: liveins: $xmm0, $xmm1
3238 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3239 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3240 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3241 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3242 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s64), [[TRUNC1]]
3243 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3244 ; GREEDY: $al = COPY [[COPY2]](s8)
3245 ; GREEDY: RET 0, implicit $al
3246 %2:_(s128) = COPY $xmm0
3247 %0:_(s64) = G_TRUNC %2(s128)
3248 %3:_(s128) = COPY $xmm1
3249 %1:_(s64) = G_TRUNC %3(s128)
3250 %6:_(s8) = G_FCMP floatpred(ogt), %0(s64), %1
3251 %5:_(s8) = COPY %6(s8)
3257 name: fcmp_double_oge
3260 tracksRegLiveness: true
3262 - { id: 0, class: _ }
3263 - { id: 1, class: _ }
3264 - { id: 2, class: _ }
3265 - { id: 3, class: _ }
3266 - { id: 4, class: _ }
3267 - { id: 5, class: _ }
3268 - { id: 6, class: _ }
3271 liveins: $xmm0, $xmm1
3273 ; FAST-LABEL: name: fcmp_double_oge
3274 ; FAST: liveins: $xmm0, $xmm1
3275 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3276 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3277 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3278 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3279 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oge), [[TRUNC]](s64), [[TRUNC1]]
3280 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3281 ; FAST: $al = COPY [[COPY2]](s8)
3282 ; FAST: RET 0, implicit $al
3283 ; GREEDY-LABEL: name: fcmp_double_oge
3284 ; GREEDY: liveins: $xmm0, $xmm1
3285 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3286 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3287 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3288 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3289 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oge), [[TRUNC]](s64), [[TRUNC1]]
3290 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3291 ; GREEDY: $al = COPY [[COPY2]](s8)
3292 ; GREEDY: RET 0, implicit $al
3293 %2:_(s128) = COPY $xmm0
3294 %0:_(s64) = G_TRUNC %2(s128)
3295 %3:_(s128) = COPY $xmm1
3296 %1:_(s64) = G_TRUNC %3(s128)
3297 %6:_(s8) = G_FCMP floatpred(oge), %0(s64), %1
3298 %5:_(s8) = COPY %6(s8)
3304 name: fcmp_double_olt
3307 tracksRegLiveness: true
3309 - { id: 0, class: _ }
3310 - { id: 1, class: _ }
3311 - { id: 2, class: _ }
3312 - { id: 3, class: _ }
3313 - { id: 4, class: _ }
3314 - { id: 5, class: _ }
3315 - { id: 6, class: _ }
3318 liveins: $xmm0, $xmm1
3320 ; FAST-LABEL: name: fcmp_double_olt
3321 ; FAST: liveins: $xmm0, $xmm1
3322 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3323 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3324 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3325 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3326 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(olt), [[TRUNC]](s64), [[TRUNC1]]
3327 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3328 ; FAST: $al = COPY [[COPY2]](s8)
3329 ; FAST: RET 0, implicit $al
3330 ; GREEDY-LABEL: name: fcmp_double_olt
3331 ; GREEDY: liveins: $xmm0, $xmm1
3332 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3333 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3334 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3335 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3336 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(olt), [[TRUNC]](s64), [[TRUNC1]]
3337 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3338 ; GREEDY: $al = COPY [[COPY2]](s8)
3339 ; GREEDY: RET 0, implicit $al
3340 %2:_(s128) = COPY $xmm0
3341 %0:_(s64) = G_TRUNC %2(s128)
3342 %3:_(s128) = COPY $xmm1
3343 %1:_(s64) = G_TRUNC %3(s128)
3344 %6:_(s8) = G_FCMP floatpred(olt), %0(s64), %1
3345 %5:_(s8) = COPY %6(s8)
3351 name: fcmp_double_ole
3354 tracksRegLiveness: true
3356 - { id: 0, class: _ }
3357 - { id: 1, class: _ }
3358 - { id: 2, class: _ }
3359 - { id: 3, class: _ }
3360 - { id: 4, class: _ }
3361 - { id: 5, class: _ }
3362 - { id: 6, class: _ }
3365 liveins: $xmm0, $xmm1
3367 ; FAST-LABEL: name: fcmp_double_ole
3368 ; FAST: liveins: $xmm0, $xmm1
3369 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3370 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3371 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3372 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3373 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ole), [[TRUNC]](s64), [[TRUNC1]]
3374 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3375 ; FAST: $al = COPY [[COPY2]](s8)
3376 ; FAST: RET 0, implicit $al
3377 ; GREEDY-LABEL: name: fcmp_double_ole
3378 ; GREEDY: liveins: $xmm0, $xmm1
3379 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3380 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3381 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3382 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3383 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ole), [[TRUNC]](s64), [[TRUNC1]]
3384 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3385 ; GREEDY: $al = COPY [[COPY2]](s8)
3386 ; GREEDY: RET 0, implicit $al
3387 %2:_(s128) = COPY $xmm0
3388 %0:_(s64) = G_TRUNC %2(s128)
3389 %3:_(s128) = COPY $xmm1
3390 %1:_(s64) = G_TRUNC %3(s128)
3391 %6:_(s8) = G_FCMP floatpred(ole), %0(s64), %1
3392 %5:_(s8) = COPY %6(s8)
3398 name: fcmp_double_one
3401 tracksRegLiveness: true
3403 - { id: 0, class: _ }
3404 - { id: 1, class: _ }
3405 - { id: 2, class: _ }
3406 - { id: 3, class: _ }
3407 - { id: 4, class: _ }
3408 - { id: 5, class: _ }
3409 - { id: 6, class: _ }
3412 liveins: $xmm0, $xmm1
3414 ; FAST-LABEL: name: fcmp_double_one
3415 ; FAST: liveins: $xmm0, $xmm1
3416 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3417 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3418 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3419 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3420 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(one), [[TRUNC]](s64), [[TRUNC1]]
3421 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3422 ; FAST: $al = COPY [[COPY2]](s8)
3423 ; FAST: RET 0, implicit $al
3424 ; GREEDY-LABEL: name: fcmp_double_one
3425 ; GREEDY: liveins: $xmm0, $xmm1
3426 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3427 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3428 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3429 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3430 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(one), [[TRUNC]](s64), [[TRUNC1]]
3431 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3432 ; GREEDY: $al = COPY [[COPY2]](s8)
3433 ; GREEDY: RET 0, implicit $al
3434 %2:_(s128) = COPY $xmm0
3435 %0:_(s64) = G_TRUNC %2(s128)
3436 %3:_(s128) = COPY $xmm1
3437 %1:_(s64) = G_TRUNC %3(s128)
3438 %6:_(s8) = G_FCMP floatpred(one), %0(s64), %1
3439 %5:_(s8) = COPY %6(s8)
3445 name: fcmp_double_ord
3448 tracksRegLiveness: true
3450 - { id: 0, class: _ }
3451 - { id: 1, class: _ }
3452 - { id: 2, class: _ }
3453 - { id: 3, class: _ }
3454 - { id: 4, class: _ }
3455 - { id: 5, class: _ }
3456 - { id: 6, class: _ }
3459 liveins: $xmm0, $xmm1
3461 ; FAST-LABEL: name: fcmp_double_ord
3462 ; FAST: liveins: $xmm0, $xmm1
3463 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3464 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3465 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3466 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3467 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ord), [[TRUNC]](s64), [[TRUNC1]]
3468 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3469 ; FAST: $al = COPY [[COPY2]](s8)
3470 ; FAST: RET 0, implicit $al
3471 ; GREEDY-LABEL: name: fcmp_double_ord
3472 ; GREEDY: liveins: $xmm0, $xmm1
3473 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3474 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3475 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3476 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3477 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ord), [[TRUNC]](s64), [[TRUNC1]]
3478 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3479 ; GREEDY: $al = COPY [[COPY2]](s8)
3480 ; GREEDY: RET 0, implicit $al
3481 %2:_(s128) = COPY $xmm0
3482 %0:_(s64) = G_TRUNC %2(s128)
3483 %3:_(s128) = COPY $xmm1
3484 %1:_(s64) = G_TRUNC %3(s128)
3485 %6:_(s8) = G_FCMP floatpred(ord), %0(s64), %1
3486 %5:_(s8) = COPY %6(s8)
3492 name: fcmp_double_uno
3495 tracksRegLiveness: true
3497 - { id: 0, class: _ }
3498 - { id: 1, class: _ }
3499 - { id: 2, class: _ }
3500 - { id: 3, class: _ }
3501 - { id: 4, class: _ }
3502 - { id: 5, class: _ }
3503 - { id: 6, class: _ }
3506 liveins: $xmm0, $xmm1
3508 ; FAST-LABEL: name: fcmp_double_uno
3509 ; FAST: liveins: $xmm0, $xmm1
3510 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3511 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3512 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3513 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3514 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uno), [[TRUNC]](s64), [[TRUNC1]]
3515 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3516 ; FAST: $al = COPY [[COPY2]](s8)
3517 ; FAST: RET 0, implicit $al
3518 ; GREEDY-LABEL: name: fcmp_double_uno
3519 ; GREEDY: liveins: $xmm0, $xmm1
3520 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3521 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3522 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3523 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3524 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uno), [[TRUNC]](s64), [[TRUNC1]]
3525 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3526 ; GREEDY: $al = COPY [[COPY2]](s8)
3527 ; GREEDY: RET 0, implicit $al
3528 %2:_(s128) = COPY $xmm0
3529 %0:_(s64) = G_TRUNC %2(s128)
3530 %3:_(s128) = COPY $xmm1
3531 %1:_(s64) = G_TRUNC %3(s128)
3532 %6:_(s8) = G_FCMP floatpred(uno), %0(s64), %1
3533 %5:_(s8) = COPY %6(s8)
3539 name: fcmp_double_ueq
3542 tracksRegLiveness: true
3544 - { id: 0, class: _ }
3545 - { id: 1, class: _ }
3546 - { id: 2, class: _ }
3547 - { id: 3, class: _ }
3548 - { id: 4, class: _ }
3549 - { id: 5, class: _ }
3550 - { id: 6, class: _ }
3553 liveins: $xmm0, $xmm1
3555 ; FAST-LABEL: name: fcmp_double_ueq
3556 ; FAST: liveins: $xmm0, $xmm1
3557 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3558 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3559 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3560 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3561 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s64), [[TRUNC1]]
3562 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3563 ; FAST: $al = COPY [[COPY2]](s8)
3564 ; FAST: RET 0, implicit $al
3565 ; GREEDY-LABEL: name: fcmp_double_ueq
3566 ; GREEDY: liveins: $xmm0, $xmm1
3567 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3568 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3569 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3570 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3571 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s64), [[TRUNC1]]
3572 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3573 ; GREEDY: $al = COPY [[COPY2]](s8)
3574 ; GREEDY: RET 0, implicit $al
3575 %2:_(s128) = COPY $xmm0
3576 %0:_(s64) = G_TRUNC %2(s128)
3577 %3:_(s128) = COPY $xmm1
3578 %1:_(s64) = G_TRUNC %3(s128)
3579 %6:_(s8) = G_FCMP floatpred(ueq), %0(s64), %1
3580 %5:_(s8) = COPY %6(s8)
3586 name: fcmp_double_ugt
3589 tracksRegLiveness: true
3591 - { id: 0, class: _ }
3592 - { id: 1, class: _ }
3593 - { id: 2, class: _ }
3594 - { id: 3, class: _ }
3595 - { id: 4, class: _ }
3596 - { id: 5, class: _ }
3597 - { id: 6, class: _ }
3600 liveins: $xmm0, $xmm1
3602 ; FAST-LABEL: name: fcmp_double_ugt
3603 ; FAST: liveins: $xmm0, $xmm1
3604 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3605 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3606 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3607 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3608 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s64), [[TRUNC1]]
3609 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3610 ; FAST: $al = COPY [[COPY2]](s8)
3611 ; FAST: RET 0, implicit $al
3612 ; GREEDY-LABEL: name: fcmp_double_ugt
3613 ; GREEDY: liveins: $xmm0, $xmm1
3614 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3615 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3616 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3617 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3618 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s64), [[TRUNC1]]
3619 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3620 ; GREEDY: $al = COPY [[COPY2]](s8)
3621 ; GREEDY: RET 0, implicit $al
3622 %2:_(s128) = COPY $xmm0
3623 %0:_(s64) = G_TRUNC %2(s128)
3624 %3:_(s128) = COPY $xmm1
3625 %1:_(s64) = G_TRUNC %3(s128)
3626 %6:_(s8) = G_FCMP floatpred(ugt), %0(s64), %1
3627 %5:_(s8) = COPY %6(s8)
3633 name: fcmp_double_uge
3636 tracksRegLiveness: true
3638 - { id: 0, class: _ }
3639 - { id: 1, class: _ }
3640 - { id: 2, class: _ }
3641 - { id: 3, class: _ }
3642 - { id: 4, class: _ }
3643 - { id: 5, class: _ }
3644 - { id: 6, class: _ }
3647 liveins: $xmm0, $xmm1
3649 ; FAST-LABEL: name: fcmp_double_uge
3650 ; FAST: liveins: $xmm0, $xmm1
3651 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3652 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3653 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3654 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3655 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uge), [[TRUNC]](s64), [[TRUNC1]]
3656 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3657 ; FAST: $al = COPY [[COPY2]](s8)
3658 ; FAST: RET 0, implicit $al
3659 ; GREEDY-LABEL: name: fcmp_double_uge
3660 ; GREEDY: liveins: $xmm0, $xmm1
3661 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3662 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3663 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3664 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3665 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uge), [[TRUNC]](s64), [[TRUNC1]]
3666 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3667 ; GREEDY: $al = COPY [[COPY2]](s8)
3668 ; GREEDY: RET 0, implicit $al
3669 %2:_(s128) = COPY $xmm0
3670 %0:_(s64) = G_TRUNC %2(s128)
3671 %3:_(s128) = COPY $xmm1
3672 %1:_(s64) = G_TRUNC %3(s128)
3673 %6:_(s8) = G_FCMP floatpred(uge), %0(s64), %1
3674 %5:_(s8) = COPY %6(s8)
3680 name: fcmp_double_ult
3683 tracksRegLiveness: true
3685 - { id: 0, class: _ }
3686 - { id: 1, class: _ }
3687 - { id: 2, class: _ }
3688 - { id: 3, class: _ }
3689 - { id: 4, class: _ }
3690 - { id: 5, class: _ }
3691 - { id: 6, class: _ }
3694 liveins: $xmm0, $xmm1
3696 ; FAST-LABEL: name: fcmp_double_ult
3697 ; FAST: liveins: $xmm0, $xmm1
3698 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3699 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3700 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3701 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3702 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ult), [[TRUNC]](s64), [[TRUNC1]]
3703 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3704 ; FAST: $al = COPY [[COPY2]](s8)
3705 ; FAST: RET 0, implicit $al
3706 ; GREEDY-LABEL: name: fcmp_double_ult
3707 ; GREEDY: liveins: $xmm0, $xmm1
3708 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3709 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3710 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3711 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3712 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ult), [[TRUNC]](s64), [[TRUNC1]]
3713 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3714 ; GREEDY: $al = COPY [[COPY2]](s8)
3715 ; GREEDY: RET 0, implicit $al
3716 %2:_(s128) = COPY $xmm0
3717 %0:_(s64) = G_TRUNC %2(s128)
3718 %3:_(s128) = COPY $xmm1
3719 %1:_(s64) = G_TRUNC %3(s128)
3720 %6:_(s8) = G_FCMP floatpred(ult), %0(s64), %1
3721 %5:_(s8) = COPY %6(s8)
3727 name: fcmp_double_ule
3730 tracksRegLiveness: true
3732 - { id: 0, class: _ }
3733 - { id: 1, class: _ }
3734 - { id: 2, class: _ }
3735 - { id: 3, class: _ }
3736 - { id: 4, class: _ }
3737 - { id: 5, class: _ }
3738 - { id: 6, class: _ }
3741 liveins: $xmm0, $xmm1
3743 ; FAST-LABEL: name: fcmp_double_ule
3744 ; FAST: liveins: $xmm0, $xmm1
3745 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3746 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3747 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3748 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3749 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ule), [[TRUNC]](s64), [[TRUNC1]]
3750 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3751 ; FAST: $al = COPY [[COPY2]](s8)
3752 ; FAST: RET 0, implicit $al
3753 ; GREEDY-LABEL: name: fcmp_double_ule
3754 ; GREEDY: liveins: $xmm0, $xmm1
3755 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3756 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3757 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3758 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3759 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ule), [[TRUNC]](s64), [[TRUNC1]]
3760 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3761 ; GREEDY: $al = COPY [[COPY2]](s8)
3762 ; GREEDY: RET 0, implicit $al
3763 %2:_(s128) = COPY $xmm0
3764 %0:_(s64) = G_TRUNC %2(s128)
3765 %3:_(s128) = COPY $xmm1
3766 %1:_(s64) = G_TRUNC %3(s128)
3767 %6:_(s8) = G_FCMP floatpred(ule), %0(s64), %1
3768 %5:_(s8) = COPY %6(s8)
3774 name: fcmp_double_une
3777 tracksRegLiveness: true
3779 - { id: 0, class: _ }
3780 - { id: 1, class: _ }
3781 - { id: 2, class: _ }
3782 - { id: 3, class: _ }
3783 - { id: 4, class: _ }
3784 - { id: 5, class: _ }
3785 - { id: 6, class: _ }
3788 liveins: $xmm0, $xmm1
3790 ; FAST-LABEL: name: fcmp_double_une
3791 ; FAST: liveins: $xmm0, $xmm1
3792 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3793 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3794 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3795 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3796 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(une), [[TRUNC]](s64), [[TRUNC1]]
3797 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3798 ; FAST: $al = COPY [[COPY2]](s8)
3799 ; FAST: RET 0, implicit $al
3800 ; GREEDY-LABEL: name: fcmp_double_une
3801 ; GREEDY: liveins: $xmm0, $xmm1
3802 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0
3803 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)
3804 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1
3805 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)
3806 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(une), [[TRUNC]](s64), [[TRUNC1]]
3807 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)
3808 ; GREEDY: $al = COPY [[COPY2]](s8)
3809 ; GREEDY: RET 0, implicit $al
3810 %2:_(s128) = COPY $xmm0
3811 %0:_(s64) = G_TRUNC %2(s128)
3812 %3:_(s128) = COPY $xmm1
3813 %1:_(s64) = G_TRUNC %3(s128)
3814 %6:_(s8) = G_FCMP floatpred(une), %0(s64), %1
3815 %5:_(s8) = COPY %6(s8)