@@ -733,3 +733,70 @@ body: |
733
733
liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vcc
734
734
S_ENDPGM 0
735
735
...
736
+ ---
737
+ name : test_no_sink_permlane_swap
738
+ tracksRegLiveness : true
739
+ machineFunctionInfo :
740
+ isEntryFunction : true
741
+ body : |
742
+ ; GFX9-LABEL: name: test_no_sink_permlane_swap
743
+ ; GFX9: bb.0:
744
+ ; GFX9-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
745
+ ; GFX9-NEXT: liveins: $vgpr0
746
+ ; GFX9-NEXT: {{ $}}
747
+ ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
748
+ ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
749
+ ; GFX9-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 0
750
+ ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY [[S_MOV_B64_]]
751
+ ; GFX9-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD killed [[COPY1]], 0, 0, implicit $exec :: (load (s32), addrspace 1)
752
+ ; GFX9-NEXT: [[V_PERMLANE32_SWAP_B32_e64_:%[0-9]+]]:vgpr_32, [[V_PERMLANE32_SWAP_B32_e64_1:%[0-9]+]]:vgpr_32 = V_PERMLANE32_SWAP_B32_e64 [[GLOBAL_LOAD_DWORD]], [[GLOBAL_LOAD_DWORD]], 0, 0, implicit $exec
753
+ ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
754
+ ; GFX9-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1
755
+ ; GFX9-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I32_e64 [[COPY2]], [[S_MOV_B32_]], implicit $exec
756
+ ; GFX9-NEXT: [[SI_IF:%[0-9]+]]:sreg_64 = SI_IF [[V_CMP_LT_I32_e64_]], %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
757
+ ; GFX9-NEXT: S_BRANCH %bb.1
758
+ ; GFX9-NEXT: {{ $}}
759
+ ; GFX9-NEXT: bb.1:
760
+ ; GFX9-NEXT: successors: %bb.2(0x80000000)
761
+ ; GFX9-NEXT: {{ $}}
762
+ ; GFX9-NEXT: [[V_MAX_I32_e64_:%[0-9]+]]:vgpr_32 = V_MAX_I32_e64 [[V_PERMLANE32_SWAP_B32_e64_]], [[V_PERMLANE32_SWAP_B32_e64_1]], implicit $exec
763
+ ; GFX9-NEXT: {{ $}}
764
+ ; GFX9-NEXT: bb.2:
765
+ ; GFX9-NEXT: successors: %bb.3(0x80000000)
766
+ ; GFX9-NEXT: {{ $}}
767
+ ; GFX9-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B32_e32_]], %bb.0, [[V_MAX_I32_e64_]], %bb.1
768
+ ; GFX9-NEXT: SI_END_CF [[SI_IF]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
769
+ ; GFX9-NEXT: {{ $}}
770
+ ; GFX9-NEXT: bb.3:
771
+ ; GFX9-NEXT: S_ENDPGM 0, implicit [[PHI]]
772
+ bb.0:
773
+ successors: %bb.2(0x40000000), %bb.1(0x40000000)
774
+ liveins: $vgpr0
775
+
776
+ %0:vgpr_32 = COPY $vgpr0
777
+ %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
778
+ %2:sreg_64 = S_MOV_B64 0
779
+ %3:vreg_64 = COPY %2
780
+ %4:vgpr_32 = GLOBAL_LOAD_DWORD killed %3, 0, 0, implicit $exec :: (load (s32), addrspace 1)
781
+ %5:vgpr_32, %6:vgpr_32 = V_PERMLANE32_SWAP_B32_e64 %4, %4, 0, 0, implicit $exec
782
+ %7:vgpr_32 = COPY $vgpr0
783
+ %8:sreg_32 = S_MOV_B32 1
784
+ %9:sreg_64 = V_CMP_LT_I32_e64 %7, %8, implicit $exec
785
+ %10:sreg_64 = COPY %9
786
+ %11:sreg_64 = SI_IF %10, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
787
+ S_BRANCH %bb.1
788
+
789
+ bb.1:
790
+ successors: %bb.2(0x80000000)
791
+
792
+ %12:vgpr_32 = V_MAX_I32_e64 %5, %6, implicit $exec
793
+
794
+ bb.2:
795
+ successors: %bb.3(0x80000000)
796
+
797
+ %13:vgpr_32 = PHI %1, %bb.0, %12, %bb.1
798
+ SI_END_CF %11, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
799
+
800
+ bb.3:
801
+ S_ENDPGM 0, implicit %13
802
+ ...
0 commit comments