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