@@ -557,3 +557,174 @@ body: |
557557 S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
558558
559559 ...
560+
561+ ---
562+ name : vreg_128_mixed_sgpr_vgpr_copy_sources_0
563+ tracksRegLiveness : true
564+ body : |
565+ bb.0:
566+ liveins: $vgpr0, $vgpr1, $sgpr8, $sgpr9
567+
568+ ; CHECK-LABEL: name: vreg_128_mixed_sgpr_vgpr_copy_sources_0
569+ ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr8, $sgpr9
570+ ; CHECK-NEXT: {{ $}}
571+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
572+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
573+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr8
574+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr9
575+ ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
576+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:areg_128 = COPY [[REG_SEQUENCE]]
577+ ; CHECK-NEXT: $agpr0_agpr1_agpr2_agpr3 = COPY [[COPY4]]
578+ ; CHECK-NEXT: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
579+ %0:vgpr_32 = COPY $vgpr0
580+ %1:vgpr_32 = COPY $vgpr1
581+ %2:sreg_32 = COPY $sgpr8
582+ %3:sreg_32 = COPY $sgpr9
583+ %4:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
584+ %5:areg_128 = COPY %4
585+ $agpr0_agpr1_agpr2_agpr3 = COPY %5
586+ S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
587+
588+ ...
589+
590+ ---
591+ name : vreg_128_mixed_sgpr_vgpr_copy_sources_1
592+ tracksRegLiveness : true
593+ body : |
594+ bb.0:
595+ liveins: $vgpr0, $sgpr8, $sgpr9, $sgpr10
596+
597+ ; CHECK-LABEL: name: vreg_128_mixed_sgpr_vgpr_copy_sources_1
598+ ; CHECK: liveins: $vgpr0, $sgpr8, $sgpr9, $sgpr10
599+ ; CHECK-NEXT: {{ $}}
600+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
601+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8
602+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr9
603+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr10
604+ ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
605+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:areg_128 = COPY [[REG_SEQUENCE]]
606+ ; CHECK-NEXT: $agpr0_agpr1_agpr2_agpr3 = COPY [[COPY4]]
607+ ; CHECK-NEXT: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
608+ %0:vgpr_32 = COPY $vgpr0
609+ %1:sreg_32 = COPY $sgpr8
610+ %2:sreg_32 = COPY $sgpr9
611+ %3:sreg_32 = COPY $sgpr10
612+ %4:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
613+ %5:areg_128 = COPY %4
614+ $agpr0_agpr1_agpr2_agpr3 = COPY %5
615+ S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
616+
617+ ...
618+
619+ ---
620+ name : vreg_128_mixed_sgpr_vgpr_copy_sources_2
621+ tracksRegLiveness : true
622+ body : |
623+ bb.0:
624+ liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr8
625+
626+ ; CHECK-LABEL: name: vreg_128_mixed_sgpr_vgpr_copy_sources_2
627+ ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr8
628+ ; CHECK-NEXT: {{ $}}
629+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
630+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
631+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2
632+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr8
633+ ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3
634+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:areg_128 = COPY [[REG_SEQUENCE]]
635+ ; CHECK-NEXT: $agpr0_agpr1_agpr2_agpr3 = COPY [[COPY4]]
636+ ; CHECK-NEXT: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
637+ %0:vgpr_32 = COPY $vgpr0
638+ %1:vgpr_32 = COPY $vgpr1
639+ %2:vgpr_32 = COPY $vgpr2
640+ %3:sreg_32 = COPY $sgpr8
641+ %4:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %2, %subreg.sub2, %3, %subreg.sub3
642+ %5:areg_128 = COPY %4
643+ $agpr0_agpr1_agpr2_agpr3 = COPY %5
644+ S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
645+
646+ ...
647+
648+ ---
649+ name : vreg_128_mixed_sgpr_vgpr_imm_sources_0
650+ tracksRegLiveness : true
651+ body : |
652+ bb.0:
653+ ; CHECK-LABEL: name: vreg_128_mixed_sgpr_vgpr_imm_sources_0
654+ ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
655+ ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
656+ ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[S_MOV_B32_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1, [[S_MOV_B32_]], %subreg.sub2, [[V_MOV_B32_e32_]], %subreg.sub3
657+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:areg_128 = COPY [[REG_SEQUENCE]]
658+ ; CHECK-NEXT: $agpr0_agpr1_agpr2_agpr3 = COPY [[COPY]]
659+ ; CHECK-NEXT: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
660+ %0:sgpr_32 = S_MOV_B32 0
661+ %1:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
662+ %2:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %0, %subreg.sub2, %1, %subreg.sub3
663+ %3:areg_128 = COPY %2
664+ $agpr0_agpr1_agpr2_agpr3 = COPY %3
665+ S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
666+
667+ ...
668+
669+ ---
670+ name : vreg_128_mixed_sgpr_vgpr_imm_sources_1
671+ tracksRegLiveness : true
672+ body : |
673+ bb.0:
674+ ; CHECK-LABEL: name: vreg_128_mixed_sgpr_vgpr_imm_sources_1
675+ ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 999
676+ ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
677+ ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[S_MOV_B32_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1, [[S_MOV_B32_]], %subreg.sub2, [[V_MOV_B32_e32_]], %subreg.sub3
678+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:areg_128 = COPY [[REG_SEQUENCE]]
679+ ; CHECK-NEXT: $agpr0_agpr1_agpr2_agpr3 = COPY [[COPY]]
680+ ; CHECK-NEXT: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
681+ %0:sgpr_32 = S_MOV_B32 999
682+ %1:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
683+ %2:vreg_128 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1, %0, %subreg.sub2, %1, %subreg.sub3
684+ %3:areg_128 = COPY %2
685+ $agpr0_agpr1_agpr2_agpr3 = COPY %3
686+ S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
687+
688+ ...
689+
690+ ---
691+ name : vreg_128_mixed_sgpr_vgpr_imm_sources_2
692+ tracksRegLiveness : true
693+ body : |
694+ bb.0:
695+ ; CHECK-LABEL: name: vreg_128_mixed_sgpr_vgpr_imm_sources_2
696+ ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 999
697+ ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
698+ ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[S_MOV_B32_]], %subreg.sub1, [[S_MOV_B32_]], %subreg.sub2, [[S_MOV_B32_]], %subreg.sub3
699+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:areg_128 = COPY [[REG_SEQUENCE]]
700+ ; CHECK-NEXT: $agpr0_agpr1_agpr2_agpr3 = COPY [[COPY]]
701+ ; CHECK-NEXT: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
702+ %0:sgpr_32 = S_MOV_B32 999
703+ %1:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
704+ %2:vreg_128 = REG_SEQUENCE %1, %subreg.sub0, %0, %subreg.sub1, %0, %subreg.sub2, %0, %subreg.sub3
705+ %3:areg_128 = COPY %2
706+ $agpr0_agpr1_agpr2_agpr3 = COPY %3
707+ S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
708+
709+ ...
710+
711+ ---
712+ name : vreg_128_mixed_sgpr_vgpr_imm_sources_3
713+ tracksRegLiveness : true
714+ body : |
715+ bb.0:
716+ ; CHECK-LABEL: name: vreg_128_mixed_sgpr_vgpr_imm_sources_3
717+ ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 8
718+ ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 123, implicit $exec
719+ ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub1, [[V_MOV_B32_e32_]], %subreg.sub2, [[S_MOV_B32_]], %subreg.sub3
720+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:areg_128 = COPY [[REG_SEQUENCE]]
721+ ; CHECK-NEXT: $agpr0_agpr1_agpr2_agpr3 = COPY [[COPY]]
722+ ; CHECK-NEXT: S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
723+ %0:sgpr_32 = S_MOV_B32 8
724+ %1:vgpr_32 = V_MOV_B32_e32 123, implicit $exec
725+ %2:vreg_128 = REG_SEQUENCE %1, %subreg.sub0, %1, %subreg.sub1, %1, %subreg.sub2, %0, %subreg.sub3
726+ %3:areg_128 = COPY %2
727+ $agpr0_agpr1_agpr2_agpr3 = COPY %3
728+ S_ENDPGM 0, implicit $agpr0_agpr1_agpr2_agpr3
729+
730+ ...
0 commit comments