brintos

brintos / llvm-project-archived public Read only

0
0
Text · 57.0 KiB · fe16f0d Raw
1267 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GCN %s3 4---5name: vmem_scratch_load6tracksRegLiveness: true7machineFunctionInfo:8  isEntryFunction: true9body: |10  bb.0:11    liveins: $vgpr012    ; GCN-LABEL: name: vmem_scratch_load13    ; GCN: liveins: $vgpr014    ; GCN-NEXT: {{  $}}15    ; GCN-NEXT: $vgpr1 = SCRATCH_LOAD_DWORD $vgpr0, 0, 0, implicit $exec, implicit $flat_scr16    ; GCN-NEXT: S_WAIT_LOADCNT 017    ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr1, implicit $exec18    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 1, implicit $exec19    ; GCN-NEXT: $vgpr1 = nofpexcept V_ADD_F32_e32 killed $vgpr2, killed $vgpr2, implicit $mode, implicit $exec20    $vgpr1 = SCRATCH_LOAD_DWORD $vgpr0, 0, 0, implicit $exec, implicit $flat_scr21    $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr1, implicit $exec22    $vgpr3 = V_MOV_B32_e32 1, implicit $exec23    $vgpr1 = nofpexcept V_ADD_F32_e32 killed $vgpr2, killed $vgpr2, implicit $mode, implicit $exec24...25 26---27name: vmem_buffer_load_dword_offset28tracksRegLiveness: true29machineFunctionInfo:30  isEntryFunction: true31body: |32  bb.0:33    liveins: $sgpr0_sgpr1_sgpr2_sgpr334    ; GCN-LABEL: name: vmem_buffer_load_dword_offset35    ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr336    ; GCN-NEXT: {{  $}}37    ; GCN-NEXT: $vgpr1 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec38    ; GCN-NEXT: S_WAIT_LOADCNT 039    ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr1, implicit $exec40    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 1, implicit $exec41    ; GCN-NEXT: $vgpr1 = nofpexcept V_ADD_F32_e32 killed $vgpr2, killed $vgpr2, implicit $mode, implicit $exec42    $vgpr1 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec43    $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr1, implicit $exec44    $vgpr3 = V_MOV_B32_e32 1, implicit $exec45    $vgpr1 = nofpexcept V_ADD_F32_e32 killed $vgpr2, killed $vgpr2, implicit $mode, implicit $exec46...47 48---49name: vmem_buffer_load_addr50tracksRegLiveness: true51machineFunctionInfo:52  isEntryFunction: true53body: |54  bb.0:55    liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr356    ; GCN-LABEL: name: vmem_buffer_load_addr57    ; GCN: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr358    ; GCN-NEXT: {{  $}}59    ; GCN-NEXT: $vgpr2 = BUFFER_LOAD_DWORD_ADDR64 $vgpr0_vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec60    ; GCN-NEXT: S_WAIT_LOADCNT 061    ; GCN-NEXT: $vgpr3 = V_LSHLREV_B32_e64 16, $vgpr2, implicit $exec62    ; GCN-NEXT: $vgpr4 = V_MOV_B32_e32 1, implicit $exec63    ; GCN-NEXT: $vgpr1 = nofpexcept V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec64    $vgpr2 = BUFFER_LOAD_DWORD_ADDR64 $vgpr0_vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec65    $vgpr3 = V_LSHLREV_B32_e64 16, $vgpr2, implicit $exec66    $vgpr4 = V_MOV_B32_e32 1, implicit $exec67    $vgpr1 = nofpexcept V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec68...69 70---71name: vmem_flat_load72tracksRegLiveness: true73machineFunctionInfo:74  isEntryFunction: true75body: |76  bb.0:77    liveins: $vgpr0, $vgpr178    ; GCN-LABEL: name: vmem_flat_load79    ; GCN: liveins: $vgpr0, $vgpr180    ; GCN-NEXT: {{  $}}81    ; GCN-NEXT: $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)82    ; GCN-NEXT: S_WAIT_LOADCNT 083    ; GCN-NEXT: $vgpr3 = V_LSHLREV_B32_e64 16, $vgpr2, implicit $exec84    ; GCN-NEXT: $vgpr4 = V_MOV_B32_e32 1, implicit $exec85    ; GCN-NEXT: $vgpr0 = nofpexcept V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec86    $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)87    $vgpr3 = V_LSHLREV_B32_e64 16, $vgpr2, implicit $exec88    $vgpr4 = V_MOV_B32_e32 1, implicit $exec89    $vgpr0 = nofpexcept V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec90...91 92---93name: vmem_global_load94tracksRegLiveness: true95machineFunctionInfo:96  isEntryFunction: true97body: |98  bb.0:99    liveins: $vgpr0, $vgpr1100    ; GCN-LABEL: name: vmem_global_load101    ; GCN: liveins: $vgpr0, $vgpr1102    ; GCN-NEXT: {{  $}}103    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) undef`, addrspace 1)104    ; GCN-NEXT: S_WAIT_LOADCNT 0105    ; GCN-NEXT: $vgpr3 = V_LSHLREV_B32_e64 16, $vgpr2, implicit $exec106    ; GCN-NEXT: $vgpr4 = V_MOV_B32_e32 1, implicit $exec107    ; GCN-NEXT: $vgpr0 = nofpexcept V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec108    $vgpr2 = GLOBAL_LOAD_DWORD killed renamable $vgpr0_vgpr1, 0, 0, implicit $exec:: (load (s32) from `float addrspace(1)* undef`, align 4, addrspace 1)109    $vgpr3 = V_LSHLREV_B32_e64 16, $vgpr2, implicit $exec110    $vgpr4 = V_MOV_B32_e32 1, implicit $exec111    $vgpr0 = nofpexcept V_ADD_F32_e32 killed $vgpr3, killed $vgpr4, implicit $mode, implicit $exec112...113 114---115name: vmem_global_store116tracksRegLiveness: true117machineFunctionInfo:118  isEntryFunction: true119body: |120  bb.0:121    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3122    ; GCN-LABEL: name: vmem_global_store123    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3124    ; GCN-NEXT: {{  $}}125    ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec126    ; GCN-NEXT: S_WAIT_XCNT 0127    ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec128    GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec129    $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec130...131 132---133name: vmem_buffer_store134tracksRegLiveness: true135machineFunctionInfo:136  scratchRSrcReg:  $sgpr0_sgpr1_sgpr2_sgpr3137  stackPtrOffsetReg:  $sgpr32138body: |139  bb.0:140    liveins: $vgpr0, $vgpr1141    ; GCN-LABEL: name: vmem_buffer_store142    ; GCN: liveins: $vgpr0, $vgpr1143    ; GCN-NEXT: {{  $}}144    ; GCN-NEXT: S_WAIT_LOADCNT_DSCNT 0145    ; GCN-NEXT: S_WAIT_KMCNT 0146    ; GCN-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec147    ; GCN-NEXT: S_WAIT_XCNT 0148    ; GCN-NEXT: $vgpr0 = V_LSHLREV_B32_e64 16, $vgpr1, implicit $exec149    BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec150    $vgpr0 = V_LSHLREV_B32_e64 16, $vgpr1, implicit $exec151...152 153---154name: vmem_scratch_store155tracksRegLiveness: true156machineFunctionInfo:157  stackPtrOffsetReg: '$sgpr32'158body: |159  bb.0:160    liveins: $vgpr0, $vgpr1, $vgpr2161    ; GCN-LABEL: name: vmem_scratch_store162    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2163    ; GCN-NEXT: {{  $}}164    ; GCN-NEXT: S_WAIT_LOADCNT_DSCNT 0165    ; GCN-NEXT: S_WAIT_KMCNT 0166    ; GCN-NEXT: SCRATCH_STORE_DWORDX2_SADDR killed $vgpr0_vgpr1, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr167    ; GCN-NEXT: S_WAIT_XCNT 0168    ; GCN-NEXT: $vgpr1 = V_LSHLREV_B32_e64 16, $vgpr2, implicit $exec169    SCRATCH_STORE_DWORDX2_SADDR killed $vgpr0_vgpr1, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr170    $vgpr1 = V_LSHLREV_B32_e64 16, $vgpr2, implicit $exec171...172 173---174name: smem_load175tracksRegLiveness: true176machineFunctionInfo:177  isEntryFunction: true178body: |179  bb.0:180    liveins: $sgpr2_sgpr3181    ; GCN-LABEL: name: smem_load182    ; GCN: liveins: $sgpr2_sgpr3183    ; GCN-NEXT: {{  $}}184    ; GCN-NEXT: $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM $sgpr2_sgpr3, 0, 0 :: (load (s64), addrspace 4)185    ; GCN-NEXT: S_WAIT_XCNT 0186    ; GCN-NEXT: $sgpr2 = S_MOV_B32 0187     $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM $sgpr2_sgpr3, 0, 0 :: (load (s64), addrspace 4)188     $sgpr2 = S_MOV_B32 0189...190 191---192name: smem_store193tracksRegLiveness: true194machineFunctionInfo:195  isEntryFunction: true196body: |197  bb.0:198     liveins: $sgpr0, $sgpr2, $sgpr3199    ; GCN-LABEL: name: smem_store200    ; GCN: liveins: $sgpr0, $sgpr2, $sgpr3201    ; GCN-NEXT: {{  $}}202    ; GCN-NEXT: S_STORE_DWORD_IMM $sgpr0, $sgpr2_sgpr3, 0, 0203    ; GCN-NEXT: S_WAIT_XCNT 0204    ; GCN-NEXT: $sgpr3 = S_MOV_B32 0205     S_STORE_DWORD_IMM $sgpr0, $sgpr2_sgpr3, 0, 0206     $sgpr3 = S_MOV_B32 0207...208 209# 4 global_load instructions together form a load-group.210 211---212name: vmem_load_group213tracksRegLiveness: true214machineFunctionInfo:215  isEntryFunction: true216body: |217  bb.0:218    liveins: $vgpr0, $vgpr1, $vgpr10219    ; GCN-LABEL: name: vmem_load_group220    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr10221    ; GCN-NEXT: {{  $}}222    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr223    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec224    ; GCN-NEXT: S_WAIT_LOADCNT 0225    ; GCN-NEXT: $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec226    ; GCN-NEXT: $vgpr4_vgpr5 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 8, 0, implicit $exec227    ; GCN-NEXT: $vgpr6_vgpr7 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 16, 0, implicit $exec228    ; GCN-NEXT: $vgpr8_vgpr9 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 24, 0, implicit $exec229    ; GCN-NEXT: S_WAIT_LOADCNT 2230    ; GCN-NEXT: $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr4, implicit $exec231    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr232    $vgpr1 = V_MOV_B32_e32 1, implicit $exec233    $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec234    $vgpr4_vgpr5 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 8, 0, implicit $exec235    $vgpr6_vgpr7 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 16, 0, implicit $exec236    $vgpr8_vgpr9 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 24, 0, implicit $exec237    $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr4, implicit $exec238...239 240# The contiguous stores form a single group.241 242---243name: vmem_store_group244tracksRegLiveness: true245machineFunctionInfo:246  isEntryFunction: true247body: |248  bb.0:249    liveins: $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10250    ; GCN-LABEL: name: vmem_store_group251    ; GCN: liveins: $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10252    ; GCN-NEXT: {{  $}}253    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr254    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec255    ; GCN-NEXT: S_WAIT_LOADCNT 0256    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec257    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec258    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $exec259    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec260    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr6, 0, 0, implicit $exec261    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr7, 0, 0, implicit $exec262    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr8, 0, 0, implicit $exec263    ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr9, 0, 0, implicit $exec264    ; GCN-NEXT: $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr6, implicit $exec265    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr266    $vgpr1 = V_MOV_B32_e32 1, implicit $exec267    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec268    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec269    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $exec270    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec271    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr6, 0, 0, implicit $exec272    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr7, 0, 0, implicit $exec273    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr8, 0, 0, implicit $exec274    GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr9, 0, 0, implicit $exec275    $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr6, implicit $exec276...277 278---279name: smem_load_group280tracksRegLiveness: true281machineFunctionInfo:282  isEntryFunction: true283body: |284  bb.0:285    liveins: $sgpr0_sgpr1286    ; GCN-LABEL: name: smem_load_group287    ; GCN: liveins: $sgpr0_sgpr1288    ; GCN-NEXT: {{  $}}289    ; GCN-NEXT: $sgpr2_sgpr3 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)290    ; GCN-NEXT: $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)291    ; GCN-NEXT: $sgpr6_sgpr7 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)292    ; GCN-NEXT: $sgpr8_sgpr9 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)293    ; GCN-NEXT: S_WAIT_KMCNT 0294    ; GCN-NEXT: $sgpr2 = S_MOV_B32 0295     $sgpr2_sgpr3 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)296     $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)297     $sgpr6_sgpr7 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)298     $sgpr8_sgpr9 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)299     $sgpr2 = S_MOV_B32 0300...301 302---303name: smem_store_group304tracksRegLiveness: true305machineFunctionInfo:306  isEntryFunction: true307body: |308  bb.0:309     liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $sgpr5310    ; GCN-LABEL: name: smem_store_group311    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $sgpr5312    ; GCN-NEXT: {{  $}}313    ; GCN-NEXT: S_STORE_DWORD_IMM $sgpr2, $sgpr0_sgpr1, 0, 0314    ; GCN-NEXT: S_STORE_DWORD_IMM $sgpr3, $sgpr0_sgpr1, 0, 0315    ; GCN-NEXT: S_STORE_DWORD_IMM $sgpr4, $sgpr0_sgpr1, 0, 0316    ; GCN-NEXT: S_STORE_DWORD_IMM $sgpr5, $sgpr0_sgpr1, 0, 0317    ; GCN-NEXT: S_WAIT_XCNT 0318    ; GCN-NEXT: $sgpr2 = S_MOV_B32 0319    ; GCN-NEXT: $sgpr3 = S_MOV_B32 0320     S_STORE_DWORD_IMM $sgpr2, $sgpr0_sgpr1, 0, 0321     S_STORE_DWORD_IMM $sgpr3, $sgpr0_sgpr1, 0, 0322     S_STORE_DWORD_IMM $sgpr4, $sgpr0_sgpr1, 0, 0323     S_STORE_DWORD_IMM $sgpr5, $sgpr0_sgpr1, 0, 0324     $sgpr2 = S_MOV_B32 0325     $sgpr3 = S_MOV_B32 0326...327 328# The four global_load instructions form two separate groups due to the interveing s_nop.329 330---331name: vmem_loads_with_an_intervening_nop332tracksRegLiveness: true333machineFunctionInfo:334  isEntryFunction: true335body: |336  bb.0:337    liveins: $vgpr0, $vgpr1, $vgpr10338    ; GCN-LABEL: name: vmem_loads_with_an_intervening_nop339    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr10340    ; GCN-NEXT: {{  $}}341    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr342    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec343    ; GCN-NEXT: S_WAIT_LOADCNT 0344    ; GCN-NEXT: $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec345    ; GCN-NEXT: $vgpr4_vgpr5 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 8, 0, implicit $exec346    ; GCN-NEXT: S_NOP 0347    ; GCN-NEXT: $vgpr6_vgpr7 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 16, 0, implicit $exec348    ; GCN-NEXT: $vgpr8_vgpr9 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 24, 0, implicit $exec349    ; GCN-NEXT: S_WAIT_LOADCNT 2350    ; GCN-NEXT: $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr4, implicit $exec351    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr352    $vgpr1 = V_MOV_B32_e32 1, implicit $exec353    $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec354    $vgpr4_vgpr5 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 8, 0, implicit $exec355    S_NOP 0356    $vgpr6_vgpr7 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 16, 0, implicit $exec357    $vgpr8_vgpr9 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 24, 0, implicit $exec358    $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr4, implicit $exec359...360 361---362name: vmem_contiguous_loads_with_an_intervening_store363tracksRegLiveness: true364machineFunctionInfo:365  isEntryFunction: true366body: |367  bb.0:368    liveins: $vgpr0, $vgpr1, $vgpr10369    ; GCN-LABEL: name: vmem_contiguous_loads_with_an_intervening_store370    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr10371    ; GCN-NEXT: {{  $}}372    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr373    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec374    ; GCN-NEXT: S_WAIT_LOADCNT 0375    ; GCN-NEXT: $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec376    ; GCN-NEXT: $vgpr4_vgpr5 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 8, 0, implicit $exec377    ; GCN-NEXT: S_WAIT_LOADCNT 1378    ; GCN-NEXT: GLOBAL_STORE_DWORDX2 $vgpr0_vgpr1, $vgpr2_vgpr3, 32, 0, implicit $exec379    ; GCN-NEXT: $vgpr6_vgpr7 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 16, 0, implicit $exec380    ; GCN-NEXT: $vgpr8_vgpr9 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 24, 0, implicit $exec381    ; GCN-NEXT: S_WAIT_LOADCNT 2382    ; GCN-NEXT: $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr4, implicit $exec383    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr384    $vgpr1 = V_MOV_B32_e32 1, implicit $exec385    $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec386    $vgpr4_vgpr5 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 8, 0, implicit $exec387    GLOBAL_STORE_DWORDX2 $vgpr0_vgpr1, $vgpr2_vgpr3, 32, 0, implicit $exec388    $vgpr6_vgpr7 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 16, 0, implicit $exec389    $vgpr8_vgpr9 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 24, 0, implicit $exec390    $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr4, implicit $exec391...392 393---394name: vmem_stores_with_intervening_nop395tracksRegLiveness: true396machineFunctionInfo:397  isEntryFunction: true398body: |399  bb.0:400    liveins: $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10401    ; GCN-LABEL: name: vmem_stores_with_intervening_nop402    ; GCN: liveins: $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10403    ; GCN-NEXT: {{  $}}404    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr405    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec406    ; GCN-NEXT: S_WAIT_LOADCNT 0407    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec408    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec409    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $exec410    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec411    ; GCN-NEXT: S_NOP 0412    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr6, 0, 0, implicit $exec413    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr7, 0, 0, implicit $exec414    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr8, 0, 0, implicit $exec415    ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr9, 0, 0, implicit $exec416    ; GCN-NEXT: $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr6, implicit $exec417    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr418    $vgpr1 = V_MOV_B32_e32 1, implicit $exec419    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec420    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec421    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $exec422    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec423    S_NOP 0424    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr6, 0, 0, implicit $exec425    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr7, 0, 0, implicit $exec426    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr8, 0, 0, implicit $exec427    GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr9, 0, 0, implicit $exec428    $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr6, implicit $exec429...430 431# The intervening load breaks the store group and form two distict store groups.432 433---434name: vmem_contiguous_stores_with_an_intervening_load435tracksRegLiveness: true436machineFunctionInfo:437  isEntryFunction: true438body: |439  bb.0:440    liveins: $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10441    ; GCN-LABEL: name: vmem_contiguous_stores_with_an_intervening_load442    ; GCN: liveins: $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10443    ; GCN-NEXT: {{  $}}444    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr445    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec446    ; GCN-NEXT: S_WAIT_LOADCNT 0447    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec448    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec449    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $exec450    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec451    ; GCN-NEXT: $vgpr11 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec452    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr6, 0, 0, implicit $exec453    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr7, 0, 0, implicit $exec454    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr8, 0, 0, implicit $exec455    ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr9, 0, 0, implicit $exec456    ; GCN-NEXT: $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr6, implicit $exec457    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr458    $vgpr1 = V_MOV_B32_e32 1, implicit $exec459    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec460    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec461    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $exec462    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec463    $vgpr11 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec464    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr6, 0, 0, implicit $exec465    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr7, 0, 0, implicit $exec466    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr8, 0, 0, implicit $exec467    GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr9, 0, 0, implicit $exec468    $vgpr10 = V_LSHLREV_B32_e64 16, $vgpr6, implicit $exec469...470 471# Atomic operations should not form a group. But they are memory instructions and should increment472# the xcnt counter value as they might cause register dependnecy. This test ensures S_WAIT_XCNT473# insertion for such cases.474 475---476name: atomic_op477tracksRegLiveness: true478machineFunctionInfo:479  isEntryFunction: true480body: |481  bb.0:482    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr0_sgpr1_sgpr2_sgpr3483    ; GCN-LABEL: name: atomic_op484    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr0_sgpr1_sgpr2_sgpr3485    ; GCN-NEXT: {{  $}}486    ; GCN-NEXT: $vgpr2 = BUFFER_ATOMIC_ADD_ADDR64_RTN $vgpr2, $vgpr0_vgpr1, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 1, implicit $exec :: (load store (s32), addrspace 1)487    ; GCN-NEXT: GLOBAL_ATOMIC_ADD_F32 $vgpr4_vgpr5, killed renamable $vgpr3, 0, 0, implicit $exec :: (load store syncscope("agent-one-as") monotonic monotonic (s32), addrspace 1)488    ; GCN-NEXT: $vgpr6 = SCRATCH_LOAD_DWORD $vgpr0, 0, 0, implicit $exec, implicit $flat_scr489    ; GCN-NEXT: S_WAIT_XCNT 2490    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec491    ; GCN-NEXT: S_WAIT_XCNT 1492    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 1, implicit $exec493    $vgpr2 = BUFFER_ATOMIC_ADD_ADDR64_RTN $vgpr2, $vgpr0_vgpr1, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 1, implicit $exec :: (load store (s32), addrspace 1)494    GLOBAL_ATOMIC_ADD_F32 $vgpr4_vgpr5, killed renamable $vgpr3, 0, 0, implicit $exec :: (load store syncscope("agent-one-as") monotonic monotonic (s32), addrspace 1)495    $vgpr6 = SCRATCH_LOAD_DWORD $vgpr0, 0, 0, implicit $exec, implicit $flat_scr496    $vgpr1 = V_MOV_B32_e32 0, implicit $exec497    $vgpr3 = V_MOV_B32_e32 1, implicit $exec498...499 500# Force insert S_WAIT_XCNT 0 for dependency in SMEM instruction even though501# there is a pending VMEM dependency.502 503---504name: smem_xcnt_insertion_with_pending_vmem_event505tracksRegLiveness: true506machineFunctionInfo:507  isEntryFunction: true508body: |509  bb.0:510    liveins: $sgpr0_sgpr1511    ; GCN-LABEL: name: smem_xcnt_insertion_with_pending_vmem_event512    ; GCN: liveins: $sgpr0_sgpr1513    ; GCN-NEXT: {{  $}}514    ; GCN-NEXT: $sgpr2_sgpr3 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)515    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 1, implicit $exec516    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 2, implicit $exec517    ; GCN-NEXT: $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec518    ; GCN-NEXT: $vgpr4 = V_MOV_B32_e32 1, implicit $exec519    ; GCN-NEXT: $vgpr5 = V_MOV_B32_e32 4, implicit $exec520    ; GCN-NEXT: GLOBAL_STORE_DWORDX2 $vgpr0_vgpr1, $vgpr4_vgpr5, 16, 0, implicit $exec521    ; GCN-NEXT: S_WAIT_KMCNT 0522    ; GCN-NEXT: $sgpr2 = S_ADD_I32 $sgpr0, 100, implicit-def $scc523    ; GCN-NEXT: S_WAIT_XCNT 0524    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 20, implicit $exec525    $sgpr2_sgpr3 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 0, 0 :: (load (s64), addrspace 4)526    $vgpr0 = V_MOV_B32_e32 1, implicit $exec527    $vgpr1 = V_MOV_B32_e32 2, implicit $exec528    $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec529    $vgpr4 = V_MOV_B32_e32 1, implicit $exec530    $vgpr5 = V_MOV_B32_e32 4, implicit $exec531    GLOBAL_STORE_DWORDX2 $vgpr0_vgpr1, $vgpr4_vgpr5, 16, 0, implicit $exec532    $sgpr2 = S_ADD_I32 $sgpr0, 100, implicit-def $scc533    $vgpr0 = V_MOV_B32_e32 20, implicit $exec534...535 536# The second instruction in the flat_load group has a WAR dependency with a prior537# memory opeartion (scratch_load instruction).538 539---540name: vmem_group_reg_dependency_with_prior_instruction541tracksRegLiveness: true542machineFunctionInfo:543  isEntryFunction: true544body: |545  bb.0:546    liveins: $vgpr4, $vgpr5547    ; GCN-LABEL: name: vmem_group_reg_dependency_with_prior_instruction548    ; GCN: liveins: $vgpr4, $vgpr5549    ; GCN-NEXT: {{  $}}550    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr4, 0, 0, implicit $exec, implicit $flat_scr551    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec552    ; GCN-NEXT: S_WAIT_LOADCNT 0553    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec554    ; GCN-NEXT: $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)555    ; GCN-NEXT: $vgpr4 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)556    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 1, implicit $exec557    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr4, 0, 0, implicit $exec, implicit $flat_scr558    $vgpr1 = V_MOV_B32_e32 1, implicit $exec559    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec560    $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)561    $vgpr4 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)562    $vgpr3 = V_MOV_B32_e32 1, implicit $exec563...564 565# Two instructions inside the load group have dependencies with prior instructions.566 567---568name: multiple_xcnt_insertion_in_group569tracksRegLiveness: true570machineFunctionInfo:571  isEntryFunction: true572body: |573  bb.0:574    liveins: $vgpr3, $vgpr4, $vgpr5575    ; GCN-LABEL: name: multiple_xcnt_insertion_in_group576    ; GCN: liveins: $vgpr3, $vgpr4, $vgpr5577    ; GCN-NEXT: {{  $}}578    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr4, 0, 0, implicit $exec, implicit $flat_scr579    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec580    ; GCN-NEXT: S_WAIT_LOADCNT 0581    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec582    ; GCN-NEXT: $vgpr2 = SCRATCH_LOAD_DWORD $vgpr3, 0, 0, implicit $exec, implicit $flat_scr583    ; GCN-NEXT: $vgpr6 = V_MOV_B32_e32 1, implicit $exec584    ; GCN-NEXT: $vgpr7 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)585    ; GCN-NEXT: $vgpr4 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)586    ; GCN-NEXT: $vgpr5 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)587    ; GCN-NEXT: $vgpr8 = V_MOV_B32_e32 1, implicit $exec588    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr4, 0, 0, implicit $exec, implicit $flat_scr589    $vgpr1 = V_MOV_B32_e32 1, implicit $exec590    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec591    $vgpr2 = SCRATCH_LOAD_DWORD $vgpr3, 0, 0, implicit $exec, implicit $flat_scr592    $vgpr6 = V_MOV_B32_e32 1, implicit $exec593    $vgpr7 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)594    $vgpr4 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)595    $vgpr5 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32), addrspace 1)596    $vgpr8 = V_MOV_B32_e32 1, implicit $exec597...598 599---600name: xcnt_event_post_load_group601tracksRegLiveness: true602machineFunctionInfo:603  isEntryFunction: true604body: |605  bb.0:606    liveins: $vgpr0, $vgpr1, $vgpr10607    ; GCN-LABEL: name: xcnt_event_post_load_group608    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr10609    ; GCN-NEXT: {{  $}}610    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr611    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec612    ; GCN-NEXT: S_WAIT_LOADCNT 0613    ; GCN-NEXT: $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec614    ; GCN-NEXT: $vgpr4_vgpr5 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 8, 0, implicit $exec615    ; GCN-NEXT: $vgpr6_vgpr7 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 16, 0, implicit $exec616    ; GCN-NEXT: $vgpr8_vgpr9 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 24, 0, implicit $exec617    ; GCN-NEXT: S_WAIT_LOADCNT 3618    ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec619    ; GCN-NEXT: $vgpr11 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr620    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec621    ; GCN-NEXT: S_WAIT_LOADCNT 2622    ; GCN-NEXT: $vgpr6 = V_MOV_B32_e32 1, implicit $exec623    ; GCN-NEXT: S_WAIT_XCNT 1624    ; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr4, implicit $exec625    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr626    $vgpr1 = V_MOV_B32_e32 1, implicit $exec627    $vgpr2_vgpr3 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 0, 0, implicit $exec628    $vgpr4_vgpr5 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 8, 0, implicit $exec629    $vgpr6_vgpr7 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 16, 0, implicit $exec630    $vgpr8_vgpr9 = GLOBAL_LOAD_DWORDX2 $vgpr0_vgpr1, 24, 0, implicit $exec631    GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec632    $vgpr11 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr633    $vgpr3 = V_MOV_B32_e32 0, implicit $exec634    $vgpr6 = V_MOV_B32_e32 1, implicit $exec635    $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr4, implicit $exec636...637 638# The three V_MOV_B32 instructions waiting outside the group needs appropriate wait_xcnt639# insertion as their dst registers have dependencies with instructions inside the group.640 641---642name: xcnt_event_post_store_group643tracksRegLiveness: true644machineFunctionInfo:645  isEntryFunction: true646body: |647  bb.0:648    liveins: $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10649    ; GCN-LABEL: name: xcnt_event_post_store_group650    ; GCN: liveins: $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10651    ; GCN-NEXT: {{  $}}652    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr653    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 1, implicit $exec654    ; GCN-NEXT: S_WAIT_LOADCNT 0655    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec656    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec657    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $exec658    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec659    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr6, 0, 0, implicit $exec660    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr7, 0, 0, implicit $exec661    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr8, 0, 0, implicit $exec662    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr9, 0, 0, implicit $exec663    ; GCN-NEXT: $vgpr11 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr664    ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec665    ; GCN-NEXT: S_WAIT_XCNT 8666    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec667    ; GCN-NEXT: S_WAIT_XCNT 6668    ; GCN-NEXT: $vgpr5 = V_MOV_B32_e32 1, implicit $exec669    ; GCN-NEXT: S_WAIT_XCNT 4670    ; GCN-NEXT: $vgpr7 = V_MOV_B32_e32 2, implicit $exec671    ; GCN-NEXT: S_WAIT_LOADCNT 0672    ; GCN-NEXT: $vgpr11 = V_LSHLREV_B32_e64 16, $vgpr10, implicit $exec673    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr674    $vgpr1 = V_MOV_B32_e32 1, implicit $exec675    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec676    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec677    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr4, 0, 0, implicit $exec678    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr5, 0, 0, implicit $exec679    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr6, 0, 0, implicit $exec680    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr7, 0, 0, implicit $exec681    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr8, 0, 0, implicit $exec682    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr9, 0, 0, implicit $exec683    $vgpr11 = SCRATCH_LOAD_DWORD $vgpr10, 0, 0, implicit $exec, implicit $flat_scr684    GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec685    $vgpr3 = V_MOV_B32_e32 0, implicit $exec686    $vgpr5 = V_MOV_B32_e32 1, implicit $exec687    $vgpr7 = V_MOV_B32_e32 2, implicit $exec688    $vgpr11 = V_LSHLREV_B32_e64 16, $vgpr10, implicit $exec689...690 691# This test captures the case that interleaving load store operations form separate groups.692# The registers in V_MOV_B32 are all have dependency with these independent groups and693# should have the wait_xcnt insertion with appropriate wait values.694 695---696name: load_store_switching697tracksRegLiveness: true698machineFunctionInfo:699  isEntryFunction: true700body: |701  bb.0:702    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5703    ; GCN-LABEL: name: load_store_switching704    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5705    ; GCN-NEXT: {{  $}}706    ; GCN-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD $vgpr5, 0, 0, implicit $exec, implicit $flat_scr707    ; GCN-NEXT: $vgpr1 = V_LSHLREV_B32_e64 16, $vgpr1, implicit $exec708    ; GCN-NEXT: S_WAIT_LOADCNT 0709    ; GCN-NEXT: $vgpr7 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec710    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr2_vgpr3, $vgpr4, 0, 0, implicit $exec711    ; GCN-NEXT: $vgpr8 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec712    ; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr2_vgpr3, $vgpr5, 0, 0, implicit $exec713    ; GCN-NEXT: S_WAIT_LOADCNT 1714    ; GCN-NEXT: $vgpr7 = V_MOV_B32_e32 0, implicit $exec715    ; GCN-NEXT: S_WAIT_XCNT 2716    ; GCN-NEXT: $vgpr4 = V_MOV_B32_e32 1, implicit $exec717    ; GCN-NEXT: S_WAIT_LOADCNT 0718    ; GCN-NEXT: $vgpr8 = V_MOV_B32_e32 2, implicit $exec719    ; GCN-NEXT: S_WAIT_XCNT 0720    ; GCN-NEXT: $vgpr5 = V_MOV_B32_e32 3, implicit $exec721    $vgpr0 = SCRATCH_LOAD_DWORD $vgpr5, 0, 0, implicit $exec, implicit $flat_scr722    $vgpr1 = V_LSHLREV_B32_e64 16, $vgpr1, implicit $exec723    $vgpr7 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec724    GLOBAL_STORE_DWORD $vgpr2_vgpr3, $vgpr4, 0, 0, implicit $exec725    $vgpr8 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 4, 0, implicit $exec726    GLOBAL_STORE_DWORD killed $vgpr2_vgpr3, $vgpr5, 0, 0, implicit $exec727    $vgpr7 = V_MOV_B32_e32 0, implicit $exec728    $vgpr4 = V_MOV_B32_e32 1, implicit $exec729    $vgpr8 = V_MOV_B32_e32 2, implicit $exec730    $vgpr5 = V_MOV_B32_e32 3, implicit $exec731...732 733# V_DUAL_MOV is a single instruction and should emit required xcnt734# if the destination registers have any memory-op dependency.735 736---737name: dual_mov738tracksRegLiveness: true739machineFunctionInfo:740  isEntryFunction: true741body: |742  bb.0:743     liveins: $sgpr0, $sgpr1, $vgpr1744    ; GCN-LABEL: name: dual_mov745    ; GCN: liveins: $sgpr0, $sgpr1, $vgpr1746    ; GCN-NEXT: {{  $}}747    ; GCN-NEXT: $vgpr2 = SCRATCH_LOAD_DWORD $vgpr1, 0, 0, implicit $exec, implicit $flat_scr748    ; GCN-NEXT: S_WAIT_LOADCNT 0749    ; GCN-NEXT: $vgpr1, $vgpr2 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 killed $sgpr0, killed $sgpr1, implicit $exec, implicit $exec, implicit $exec, implicit $exec, implicit $exec750    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 1, implicit $exec751     $vgpr2 = SCRATCH_LOAD_DWORD $vgpr1, 0, 0, implicit $exec, implicit $flat_scr752     $vgpr1, $vgpr2 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 killed $sgpr0, killed $sgpr1, implicit $exec, implicit $exec, implicit $exec, implicit $exec, implicit $exec753     $vgpr0 = V_MOV_B32_e32 1, implicit $exec754...755 756# No xcnt wait insertion for DS load/store operations.757 758---759name: ds_load_store760tracksRegLiveness: true761machineFunctionInfo:762  isEntryFunction: true763body: |764  bb.0:765    ; GCN-LABEL: name: ds_load_store766    ; GCN: $vgpr1 = V_MOV_B32_e32 1, implicit $exec767    ; GCN-NEXT: $vgpr0 = DS_READ_B32_gfx9 killed $vgpr1, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(3) undef`, addrspace 3)768    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 2, implicit $exec769    ; GCN-NEXT: S_WAIT_DSCNT 0770    ; GCN-NEXT: DS_WRITE_B32_gfx9 killed $vgpr0, killed $vgpr1, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(3) undef`, addrspace 3)771    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 20, implicit $exec772     $vgpr1 = V_MOV_B32_e32 1, implicit $exec773     $vgpr0 = DS_READ_B32_gfx9 killed $vgpr1, 0, 0, implicit $exec :: (load (s32) from `i32 addrspace(3)* undef`)774     $vgpr1 = V_MOV_B32_e32 2, implicit $exec775     DS_WRITE_B32_gfx9 killed $vgpr0, killed $vgpr1, 0, 0, implicit $exec :: (store (s32) into `i32 addrspace(3)* undef`)776     $vgpr0 = V_MOV_B32_e32 20, implicit $exec777...778 779---780name: xcnt_max781tracksRegLiveness: true782machineFunctionInfo:783  isEntryFunction: true784body: |785  bb.0:786    liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3787    ; GCN-LABEL: name: xcnt_max788    ; GCN: liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3789    ; GCN-NEXT: {{  $}}790    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec791    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec792    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec793    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec794    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec795    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec796    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec797    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec798    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec799    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec800    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec801    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec802    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec803    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec804    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec805    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec806    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec807    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec808    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec809    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec810    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec811    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec812    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec813    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec814    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec815    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec816    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec817    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec818    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec819    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec820    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec821    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec822    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec823    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec824    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec825    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec826    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec827    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec828    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec829    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec830    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec831    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec832    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec833    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec834    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec835    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec836    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec837    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec838    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec839    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec840    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec841    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec842    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec843    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec844    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec845    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec846    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec847    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec848    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec849    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec850    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec851    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec852    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec853    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec854    ; GCN-NEXT: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec855    ; GCN-NEXT: S_WAIT_XCNT 62856    ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 1, implicit $exec857    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec858    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec859    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec860    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec861    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec862    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec863    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec864    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec865    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec866    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec867    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec868    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec869    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec870    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec871    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec872    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec873    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec874    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec875    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec876    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec877    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec878    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec879    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec880    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec881    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec882    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec883    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec884    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec885    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec886    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec887    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec888    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec889    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec890    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec891    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec892    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec893    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec894    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec895    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec896    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec897    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec898    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec899    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec900    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec901    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec902    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec903    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec904    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec905    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec906    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec907    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec908    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec909    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec910    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec911    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec912    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec913    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec914    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec915    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec916    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec917    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec918    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec919    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec920    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec921    GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr3, 0, 0, implicit $exec922    $vgpr2 = V_MOV_B32_e32 1, implicit $exec923...924 925---926name: wait_kmcnt_with_outstanding_vmem927tracksRegLiveness: true928machineFunctionInfo:929  isEntryFunction: true930body: |931  bb.0:932    liveins: $vgpr0_vgpr1, $sgpr0_sgpr1933    ; GCN-LABEL: name: wait_kmcnt_with_outstanding_vmem934    ; GCN: liveins: $vgpr0_vgpr1, $sgpr0_sgpr1935    ; GCN-NEXT: {{  $}}936    ; GCN-NEXT: $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 0937    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec938    ; GCN-NEXT: S_WAIT_KMCNT 0939    ; GCN-NEXT: $sgpr2 = S_MOV_B32 $sgpr2940    ; GCN-NEXT: S_WAIT_XCNT 0941    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec942    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 0943    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec944    $sgpr2 = S_MOV_B32 $sgpr2945    $vgpr0 = V_MOV_B32_e32 0, implicit $exec946...947 948---949name: wait_kmcnt_with_outstanding_vmem_2950tracksRegLiveness: true951machineFunctionInfo:952  isEntryFunction: true953body: |954  ; GCN-LABEL: name: wait_kmcnt_with_outstanding_vmem_2955  ; GCN: bb.0:956  ; GCN-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)957  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc958  ; GCN-NEXT: {{  $}}959  ; GCN-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 0960  ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.2, implicit $scc961  ; GCN-NEXT: {{  $}}962  ; GCN-NEXT: bb.1:963  ; GCN-NEXT:   successors: %bb.2(0x80000000)964  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr2965  ; GCN-NEXT: {{  $}}966  ; GCN-NEXT:   $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec967  ; GCN-NEXT: {{  $}}968  ; GCN-NEXT: bb.2:969  ; GCN-NEXT:   liveins: $sgpr2970  ; GCN-NEXT: {{  $}}971  ; GCN-NEXT:   S_WAIT_KMCNT 0972  ; GCN-NEXT:   $sgpr2 = S_MOV_B32 $sgpr2973  ; GCN-NEXT:   S_WAIT_XCNT 0974  ; GCN-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec975  bb.0:976    liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc977    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 0978    S_CBRANCH_SCC1 %bb.2, implicit $scc979  bb.1:980    liveins: $vgpr0_vgpr1, $sgpr2981    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec982  bb.2:983    liveins: $sgpr2984    $sgpr2 = S_MOV_B32 $sgpr2985    $vgpr0 = V_MOV_B32_e32 0, implicit $exec986...987 988---989name: wait_kmcnt_and_wait_loadcnt990tracksRegLiveness: true991machineFunctionInfo:992  isEntryFunction: true993body: |994  ; GCN-LABEL: name: wait_kmcnt_and_wait_loadcnt995  ; GCN: bb.0:996  ; GCN-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)997  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc998  ; GCN-NEXT: {{  $}}999  ; GCN-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01000  ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.2, implicit $scc1001  ; GCN-NEXT: {{  $}}1002  ; GCN-NEXT: bb.1:1003  ; GCN-NEXT:   successors: %bb.2(0x80000000)1004  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr21005  ; GCN-NEXT: {{  $}}1006  ; GCN-NEXT:   $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1007  ; GCN-NEXT: {{  $}}1008  ; GCN-NEXT: bb.2:1009  ; GCN-NEXT:   liveins: $sgpr21010  ; GCN-NEXT: {{  $}}1011  ; GCN-NEXT:   S_WAIT_KMCNT 01012  ; GCN-NEXT:   $sgpr2 = S_MOV_B32 $sgpr21013  ; GCN-NEXT:   S_WAIT_LOADCNT 01014  ; GCN-NEXT:   $vgpr2 = V_MOV_B32_e32 0, implicit $exec1015  bb.0:1016    liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1017    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01018    S_CBRANCH_SCC1 %bb.2, implicit $scc1019  bb.1:1020    liveins: $vgpr0_vgpr1, $sgpr21021    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1022  bb.2:1023    liveins: $sgpr21024    $sgpr2 = S_MOV_B32 $sgpr21025    $vgpr2 = V_MOV_B32_e32 0, implicit $exec1026...1027 1028---1029name: implicit_handling_of_pending_vmem_group1030tracksRegLiveness: true1031machineFunctionInfo:1032  isEntryFunction: true1033body: |1034  ; GCN-LABEL: name: implicit_handling_of_pending_vmem_group1035  ; GCN: bb.0:1036  ; GCN-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)1037  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1038  ; GCN-NEXT: {{  $}}1039  ; GCN-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01040  ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.2, implicit $scc1041  ; GCN-NEXT: {{  $}}1042  ; GCN-NEXT: bb.1:1043  ; GCN-NEXT:   successors: %bb.2(0x80000000)1044  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr21045  ; GCN-NEXT: {{  $}}1046  ; GCN-NEXT:   $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1047  ; GCN-NEXT: {{  $}}1048  ; GCN-NEXT: bb.2:1049  ; GCN-NEXT:   liveins: $sgpr0_sgpr1, $sgpr21050  ; GCN-NEXT: {{  $}}1051  ; GCN-NEXT:   S_WAIT_KMCNT 01052  ; GCN-NEXT:   $sgpr2 = S_MOV_B32 $sgpr21053  ; GCN-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01054  ; GCN-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec1055  ; GCN-NEXT:   S_WAIT_XCNT 01056  ; GCN-NEXT:   $sgpr0 = S_MOV_B32 $sgpr01057  bb.0:1058    liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1059    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01060    S_CBRANCH_SCC1 %bb.2, implicit $scc1061  bb.1:1062    liveins: $vgpr0_vgpr1, $sgpr21063    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1064  bb.2:1065    liveins: $sgpr0_sgpr1, $sgpr21066    $sgpr2 = S_MOV_B32 $sgpr21067    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01068    $vgpr0 = V_MOV_B32_e32 0, implicit $exec1069    $sgpr0 = S_MOV_B32 $sgpr01070...1071 1072---1073name: mixed_pending_events1074tracksRegLiveness: true1075machineFunctionInfo:1076  isEntryFunction: true1077body: |1078  ; GCN-LABEL: name: mixed_pending_events1079  ; GCN: bb.0:1080  ; GCN-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)1081  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1082  ; GCN-NEXT: {{  $}}1083  ; GCN-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01084  ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.2, implicit $scc1085  ; GCN-NEXT: {{  $}}1086  ; GCN-NEXT: bb.1:1087  ; GCN-NEXT:   successors: %bb.2(0x80000000)1088  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr21089  ; GCN-NEXT: {{  $}}1090  ; GCN-NEXT:   $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 100, 0, implicit $exec1091  ; GCN-NEXT:   $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 200, 0, implicit $exec1092  ; GCN-NEXT: {{  $}}1093  ; GCN-NEXT: bb.2:1094  ; GCN-NEXT:   liveins: $sgpr2, $vgpr21095  ; GCN-NEXT: {{  $}}1096  ; GCN-NEXT:   S_WAIT_LOADCNT 11097  ; GCN-NEXT:   $vgpr2 = V_MOV_B32_e32 $vgpr2, implicit $exec1098  ; GCN-NEXT:   S_WAIT_KMCNT 01099  ; GCN-NEXT:   $sgpr2 = S_MOV_B32 $sgpr21100  ; GCN-NEXT:   S_WAIT_XCNT 01101  ; GCN-NEXT:   $vgpr0 = V_MOV_B32_e32 0, implicit $exec1102  bb.0:1103    liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1104    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01105    S_CBRANCH_SCC1 %bb.2, implicit $scc1106  bb.1:1107    liveins: $vgpr0_vgpr1, $sgpr21108    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 100, 0, implicit $exec1109    $vgpr3 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 200, 0, implicit $exec1110  bb.2:1111    liveins: $sgpr2, $vgpr21112    $vgpr2 = V_MOV_B32_e32 $vgpr2, implicit $exec1113    $sgpr2 = S_MOV_B32 $sgpr21114    $vgpr0 = V_MOV_B32_e32 0, implicit $exec1115...1116 1117---1118name: pending_vmem_event_between_block1119tracksRegLiveness: true1120machineFunctionInfo:1121  isEntryFunction: true1122body: |1123  ; GCN-LABEL: name: pending_vmem_event_between_block1124  ; GCN: bb.0:1125  ; GCN-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)1126  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1127  ; GCN-NEXT: {{  $}}1128  ; GCN-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01129  ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.2, implicit $scc1130  ; GCN-NEXT: {{  $}}1131  ; GCN-NEXT: bb.1:1132  ; GCN-NEXT:   successors: %bb.2(0x80000000)1133  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $sgpr21134  ; GCN-NEXT: {{  $}}1135  ; GCN-NEXT:   $vgpr4 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1136  ; GCN-NEXT:   $vgpr5 = GLOBAL_LOAD_DWORD $vgpr2_vgpr3, 0, 0, implicit $exec1137  ; GCN-NEXT: {{  $}}1138  ; GCN-NEXT: bb.2:1139  ; GCN-NEXT:   liveins: $sgpr0_sgpr1, $sgpr2, $vgpr21140  ; GCN-NEXT: {{  $}}1141  ; GCN-NEXT:   S_WAIT_KMCNT 01142  ; GCN-NEXT:   $sgpr2 = S_MOV_B32 $sgpr21143  ; GCN-NEXT:   S_WAIT_XCNT 11144  ; GCN-NEXT:   $vgpr1 = V_MOV_B32_e32 0, implicit $exec1145  ; GCN-NEXT:   S_WAIT_XCNT 01146  ; GCN-NEXT:   $vgpr2 = V_MOV_B32_e32 0, implicit $exec1147  ; GCN-NEXT:   $sgpr0 = S_MOV_B32 $sgpr01148  bb.0:1149    liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1150    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01151    S_CBRANCH_SCC1 %bb.2, implicit $scc1152  bb.1:1153    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $sgpr21154    $vgpr4 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1155    $vgpr5 = GLOBAL_LOAD_DWORD $vgpr2_vgpr3, 0, 0, implicit $exec1156  bb.2:1157    liveins: $sgpr0_sgpr1, $sgpr2, $vgpr21158    $sgpr2 = S_MOV_B32 $sgpr21159    $vgpr1 = V_MOV_B32_e32 0, implicit $exec1160    $vgpr2 = V_MOV_B32_e32 0, implicit $exec1161    $sgpr0 = S_MOV_B32 $sgpr01162...1163 1164---1165name: flushing_vmem_cnt_on_block_entry1166tracksRegLiveness: true1167machineFunctionInfo:1168  isEntryFunction: true1169body: |1170  ; GCN-LABEL: name: flushing_vmem_cnt_on_block_entry1171  ; GCN: bb.0:1172  ; GCN-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)1173  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1174  ; GCN-NEXT: {{  $}}1175  ; GCN-NEXT:   $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01176  ; GCN-NEXT:   S_CBRANCH_SCC1 %bb.2, implicit $scc1177  ; GCN-NEXT: {{  $}}1178  ; GCN-NEXT: bb.1:1179  ; GCN-NEXT:   successors: %bb.2(0x80000000)1180  ; GCN-NEXT:   liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $sgpr21181  ; GCN-NEXT: {{  $}}1182  ; GCN-NEXT:   $vgpr4 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1183  ; GCN-NEXT:   $vgpr5 = GLOBAL_LOAD_DWORD $vgpr2_vgpr3, 0, 0, implicit $exec1184  ; GCN-NEXT: {{  $}}1185  ; GCN-NEXT: bb.2:1186  ; GCN-NEXT:   liveins: $sgpr0_sgpr1, $sgpr2, $vgpr21187  ; GCN-NEXT: {{  $}}1188  ; GCN-NEXT:   S_WAIT_XCNT 01189  ; GCN-NEXT:   $vgpr1 = V_MOV_B32_e32 0, implicit $exec1190  ; GCN-NEXT:   $vgpr2 = V_MOV_B32_e32 0, implicit $exec1191  ; GCN-NEXT:   $sgpr0 = S_MOV_B32 $sgpr01192  bb.0:1193    liveins: $vgpr0_vgpr1, $sgpr0_sgpr1, $scc1194    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01195    S_CBRANCH_SCC1 %bb.2, implicit $scc1196  bb.1:1197    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $sgpr21198    $vgpr4 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1199    $vgpr5 = GLOBAL_LOAD_DWORD $vgpr2_vgpr3, 0, 0, implicit $exec1200  bb.2:1201    liveins: $sgpr0_sgpr1, $sgpr2, $vgpr21202    $vgpr1 = V_MOV_B32_e32 0, implicit $exec1203    $vgpr2 = V_MOV_B32_e32 0, implicit $exec1204    $sgpr0 = S_MOV_B32 $sgpr01205...1206 1207---1208name: wait_loadcnt_with_outstanding_smem1209tracksRegLiveness: true1210machineFunctionInfo:1211  isEntryFunction: true1212body: |1213  bb.0:1214    liveins: $vgpr0_vgpr1, $sgpr0_sgpr11215    ; GCN-LABEL: name: wait_loadcnt_with_outstanding_smem1216    ; GCN: liveins: $vgpr0_vgpr1, $sgpr0_sgpr11217    ; GCN-NEXT: {{  $}}1218    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1219    ; GCN-NEXT: $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01220    ; GCN-NEXT: S_WAIT_LOADCNT 01221    ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr2, implicit $exec1222    ; GCN-NEXT: S_WAIT_XCNT 01223    ; GCN-NEXT: $sgpr0 = S_MOV_B32 01224    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1225    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01226    $vgpr2 = V_MOV_B32_e32 $vgpr2, implicit $exec1227    $sgpr0 = S_MOV_B32 01228...1229 1230---1231name: overwrite_vgpr_after_smem1232tracksRegLiveness: true1233machineFunctionInfo:1234  isEntryFunction: true1235body: |1236  bb.0:1237    liveins: $vgpr0_vgpr1, $sgpr0_sgpr11238    ; GCN-LABEL: name: overwrite_vgpr_after_smem1239    ; GCN: liveins: $vgpr0_vgpr1, $sgpr0_sgpr11240    ; GCN-NEXT: {{  $}}1241    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1242    ; GCN-NEXT: $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01243    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec1244    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1245    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01246    $vgpr0 = V_MOV_B32_e32 0, implicit $exec1247...1248 1249---1250name: overwrite_sgpr_after_vmem1251tracksRegLiveness: true1252machineFunctionInfo:1253  isEntryFunction: true1254body: |1255  bb.0:1256    liveins: $vgpr0_vgpr1, $sgpr0_sgpr11257    ; GCN-LABEL: name: overwrite_sgpr_after_vmem1258    ; GCN: liveins: $vgpr0_vgpr1, $sgpr0_sgpr11259    ; GCN-NEXT: {{  $}}1260    ; GCN-NEXT: $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01261    ; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1262    ; GCN-NEXT: $sgpr0 = S_MOV_B32 01263    $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 01264    $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec1265    $sgpr0 = S_MOV_B32 01266...1267