@@ -521,9 +521,7 @@ body: |
521
521
; CHECK-NEXT: {{ $}}
522
522
; CHECK-NEXT: S_SINGLEUSE_VDST 1
523
523
; CHECK-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
524
- ; CHECK-NEXT: S_SINGLEUSE_VDST 1
525
524
; CHECK-NEXT: $vgpr1_lo16 = V_MOV_B16_t16_e32 $vgpr0_lo16, implicit $exec
526
- ; CHECK-NEXT: S_SINGLEUSE_VDST 1
527
525
; CHECK-NEXT: $vgpr1_hi16 = V_MOV_B16_t16_e32 $vgpr0_hi16, implicit $exec
528
526
; CHECK-NEXT: {{ $}}
529
527
; CHECK-NEXT: bb.1:
@@ -582,6 +580,31 @@ body: |
582
580
liveins: $vgpr1
583
581
...
584
582
583
+ # Write low 16-bits and then read 32-bit vgpr twice.
584
+ ---
585
+ name : write_lo_read_full_twice
586
+ tracksRegLiveness : true
587
+ body : |
588
+ ; CHECK-LABEL: name: write_lo_read_full_twice
589
+ ; CHECK: bb.0:
590
+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
591
+ ; CHECK-NEXT: liveins: $vgpr0
592
+ ; CHECK-NEXT: {{ $}}
593
+ ; CHECK-NEXT: $vgpr0_lo16 = V_MOV_B16_t16_e32 0, implicit $exec
594
+ ; CHECK-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec
595
+ ; CHECK-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
596
+ ; CHECK-NEXT: {{ $}}
597
+ ; CHECK-NEXT: bb.1:
598
+ ; CHECK-NEXT: liveins: $vgpr1, $vgpr2
599
+ bb.0:
600
+ liveins: $vgpr0
601
+ $vgpr0_lo16 = V_MOV_B16_t16_e32 0, implicit $exec
602
+ $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec
603
+ $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
604
+ bb.1:
605
+ liveins: $vgpr1, $vgpr2
606
+ ...
607
+
585
608
# Write high 16-bits and then read 32-bit vgpr.
586
609
---
587
610
name : write_hi_read_full
@@ -605,3 +628,78 @@ body: |
605
628
bb.1:
606
629
liveins: $vgpr1
607
630
...
631
+
632
+ # Write high 16-bits and then read 32-bit vgpr twice.
633
+ ---
634
+ name : write_hi_read_full_twice
635
+ tracksRegLiveness : true
636
+ body : |
637
+ ; CHECK-LABEL: name: write_hi_read_full_twice
638
+ ; CHECK: bb.0:
639
+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
640
+ ; CHECK-NEXT: liveins: $vgpr0
641
+ ; CHECK-NEXT: {{ $}}
642
+ ; CHECK-NEXT: $vgpr0_hi16 = V_MOV_B16_t16_e32 0, implicit $exec
643
+ ; CHECK-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec
644
+ ; CHECK-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
645
+ ; CHECK-NEXT: {{ $}}
646
+ ; CHECK-NEXT: bb.1:
647
+ ; CHECK-NEXT: liveins: $vgpr1, $vgpr2
648
+ bb.0:
649
+ liveins: $vgpr0
650
+ $vgpr0_hi16 = V_MOV_B16_t16_e32 0, implicit $exec
651
+ $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec
652
+ $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
653
+ bb.1:
654
+ liveins: $vgpr1, $vgpr2
655
+ ...
656
+
657
+ # Write low 16-bits and then write high 16-bits and then read 32-bit vgpr.
658
+ ---
659
+ name : write_both_read_full
660
+ tracksRegLiveness : true
661
+ body : |
662
+ ; CHECK-LABEL: name: write_both_read_full
663
+ ; CHECK: bb.0:
664
+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
665
+ ; CHECK-NEXT: {{ $}}
666
+ ; CHECK-NEXT: S_SINGLEUSE_VDST 1
667
+ ; CHECK-NEXT: $vgpr0_lo16 = V_MOV_B16_t16_e32 0, implicit $exec
668
+ ; CHECK-NEXT: S_SINGLEUSE_VDST 1
669
+ ; CHECK-NEXT: $vgpr0_hi16 = V_MOV_B16_t16_e32 0, implicit $exec
670
+ ; CHECK-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec
671
+ ; CHECK-NEXT: {{ $}}
672
+ ; CHECK-NEXT: bb.1:
673
+ ; CHECK-NEXT: liveins: $vgpr1
674
+ bb.0:
675
+ $vgpr0_lo16 = V_MOV_B16_t16_e32 0, implicit $exec
676
+ $vgpr0_hi16 = V_MOV_B16_t16_e32 0, implicit $exec
677
+ $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec
678
+ bb.1:
679
+ liveins: $vgpr1
680
+ ...
681
+
682
+ # Write low 16-bits and then write high 16-bits and then read 32-bit vgpr twice.
683
+ ---
684
+ name : write_both_read_full_twice
685
+ tracksRegLiveness : true
686
+ body : |
687
+ ; CHECK-LABEL: name: write_both_read_full_twice
688
+ ; CHECK: bb.0:
689
+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
690
+ ; CHECK-NEXT: {{ $}}
691
+ ; CHECK-NEXT: $vgpr0_lo16 = V_MOV_B16_t16_e32 0, implicit $exec
692
+ ; CHECK-NEXT: $vgpr0_hi16 = V_MOV_B16_t16_e32 0, implicit $exec
693
+ ; CHECK-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec
694
+ ; CHECK-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
695
+ ; CHECK-NEXT: {{ $}}
696
+ ; CHECK-NEXT: bb.1:
697
+ ; CHECK-NEXT: liveins: $vgpr1, $vgpr2
698
+ bb.0:
699
+ $vgpr0_lo16 = V_MOV_B16_t16_e32 0, implicit $exec
700
+ $vgpr0_hi16 = V_MOV_B16_t16_e32 0, implicit $exec
701
+ $vgpr1 = V_MOV_B32_e32 $vgpr0, implicit $exec
702
+ $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
703
+ bb.1:
704
+ liveins: $vgpr1, $vgpr2
705
+ ...
0 commit comments