Skip to content

Commit a20c838

Browse files
committed
Test some cases with mixed sgpr and vgpr inputs
1 parent 6898b93 commit a20c838

File tree

1 file changed

+171
-0
lines changed

1 file changed

+171
-0
lines changed

llvm/test/CodeGen/AMDGPU/si-fold-operands-agpr-copy-reg-sequence.mir

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)