349 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN,GFX10 %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN %s3 4# GCN-LABEL: name: vmem_write_sgpr5# GCN: BUFFER_LOAD_DWORD_OFFEN6# GFX10-NEXT: S_WAITCNT_DEPCTR 652837# GCN-NEXT: S_MOV_B328---9name: vmem_write_sgpr10body: |11 bb.0:12 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF13 $sgpr4 = IMPLICIT_DEF14 $vgpr0 = IMPLICIT_DEF15 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec16 $sgpr0 = S_MOV_B32 017...18# GCN-LABEL: name: vmem_write_exec19# GCN: BUFFER_STORE_DWORD_OFFEN_exact20# GFX10-NEXT: S_WAITCNT_DEPCTR 6528321# GCN-NEXT: S_MOV_B3222---23name: vmem_write_exec24body: |25 bb.0:26 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF27 $sgpr4 = IMPLICIT_DEF28 $vgpr0 = IMPLICIT_DEF29 $vgpr1 = IMPLICIT_DEF30 BUFFER_STORE_DWORD_OFFEN_exact killed renamable $vgpr0, renamable $vgpr1, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec31 $exec_lo = S_MOV_B32 -132...33# GCN-LABEL: name: vmem_write_sgpr_chain34# GCN: BUFFER_LOAD_DWORD_OFFEN35# GCN-NEXT: S_MOV_B3236# GCN-NEXT: S_MOV_B3237# GCN-NEXT: S_MOV_B3238# GCN-NEXT: S_MOV_B3239# GFX10-NEXT: S_WAITCNT_DEPCTR 6528340# GCN-NEXT: S_MOV_B3241---42name: vmem_write_sgpr_chain43body: |44 bb.0:45 successors:46 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF47 $sgpr4 = IMPLICIT_DEF48 $vgpr0 = IMPLICIT_DEF49 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec50 $sgpr5 = S_MOV_B32 $sgpr051 $sgpr6 = S_MOV_B32 $sgpr152 $sgpr7 = S_MOV_B32 $sgpr253 $sgpr8 = S_MOV_B32 $sgpr354 $sgpr0 = S_MOV_B32 055...56# GCN-LABEL: name: vmem_smem_write_sgpr57# GCN: BUFFER_LOAD_DWORD_OFFEN58# GFX10-NEXT: S_WAITCNT_DEPCTR 6528359# GCN-NEXT: S_LOAD_DWORD_IMM60---61name: vmem_smem_write_sgpr62body: |63 bb.0:64 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF65 $sgpr4 = IMPLICIT_DEF66 $vgpr0 = IMPLICIT_DEF67 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec68 $sgpr0 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 0, 069...70# GCN-LABEL: name: vmem_snop_write_sgpr71# GCN: BUFFER_LOAD_DWORD_OFFEN72# GCN-NEXT: S_NOP73# GFX10-NEXT: S_WAITCNT_DEPCTR 6528374# GCN-NEXT: S_MOV_B3275---76name: vmem_snop_write_sgpr77body: |78 bb.0:79 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF80 $sgpr4 = IMPLICIT_DEF81 $vgpr0 = IMPLICIT_DEF82 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec83 S_NOP 084 $sgpr0 = S_MOV_B32 085...86# GCN-LABEL: name: vmem_valu_write_sgpr87# GCN: BUFFER_LOAD_DWORD_OFFEN88# GCN-NEXT: V_ADD_F3289# GCN-NEXT: S_MOV_B3290---91name: vmem_valu_write_sgpr92body: |93 bb.0:94 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF95 $sgpr4 = IMPLICIT_DEF96 $vgpr0 = IMPLICIT_DEF97 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec98 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec99 $sgpr0 = S_MOV_B32 0100...101# GCN-LABEL: name: vmem_swait0_write_sgpr102# GCN: BUFFER_LOAD_DWORD_OFFEN103# GCN-NEXT: S_WAITCNT104# GCN-NEXT: S_MOV_B32105---106name: vmem_swait0_write_sgpr107body: |108 bb.0:109 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF110 $sgpr4 = IMPLICIT_DEF111 $vgpr0 = IMPLICIT_DEF112 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec113 S_WAITCNT 0114 $sgpr0 = S_MOV_B32 0115...116# GCN-LABEL: name: vmem_swait_any_write_sgpr117# GCN: BUFFER_LOAD_DWORD_OFFEN118# GCN-NEXT: S_WAITCNT119# GFX10-NEXT: S_WAITCNT_DEPCTR 65283120# GCN-NEXT: S_MOV_B32121---122name: vmem_swait_any_write_sgpr123body: |124 bb.0:125 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF126 $sgpr4 = IMPLICIT_DEF127 $vgpr0 = IMPLICIT_DEF128 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec129 S_WAITCNT 1130 $sgpr0 = S_MOV_B32 0131...132# GCN-LABEL: name: vmem_write_exec_impread133# GCN: BUFFER_LOAD_DWORD_OFFEN134# GFX10-NEXT: S_WAITCNT_DEPCTR 65283135# GCN-NEXT: S_MOV_B64136---137name: vmem_write_exec_impread138body: |139 bb.0:140 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF141 $sgpr4 = IMPLICIT_DEF142 $vgpr0 = IMPLICIT_DEF143 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec144 $exec = S_MOV_B64 7145...146# GCN-LABEL: name: vmem_write_exec_expread147# GCN: BUFFER_LOAD_DWORD_OFFEN148# GFX10-NEXT: S_WAITCNT_DEPCTR 65283149# GCN-NEXT: S_MOV_B64150---151name: vmem_write_exec_expread152body: |153 bb.0:154 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF155 $vgpr0 = IMPLICIT_DEF156 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $exec_lo, 0, 0, 0, implicit $exec157 $exec = S_MOV_B64 7158...159# GCN-LABEL: name: ds_write_m0160# GCN: DS_READ_B32161# GFX10-NEXT: S_WAITCNT_DEPCTR 65283162# GCN-NEXT: S_MOV_B32163---164name: ds_write_m0165body: |166 bb.0:167 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF168 $sgpr4 = IMPLICIT_DEF169 $vgpr0 = IMPLICIT_DEF170 $vgpr1 = DS_READ_B32 $vgpr0, 0, 0, implicit $m0, implicit $exec171 $m0 = S_MOV_B32 7172...173# GCN-LABEL: name: vmem_write_sgpr_fall_through174# GCN: BUFFER_LOAD_DWORD_OFFEN175# GCN: bb.1:176# GFX10-NEXT: S_WAITCNT_DEPCTR 65283177# GCN-NEXT: S_MOV_B32178---179name: vmem_write_sgpr_fall_through180body: |181 bb.0:182 successors: %bb.1183 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF184 $sgpr4 = IMPLICIT_DEF185 $vgpr0 = IMPLICIT_DEF186 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec187 188 bb.1:189 $sgpr0 = S_MOV_B32 0190...191# GCN-LABEL: name: vmem_write_sgpr_branch192# GCN: BUFFER_LOAD_DWORD_OFFEN193# GCN-NEXT: S_BRANCH194# GCN: bb.1:195# GFX10-NEXT: S_WAITCNT_DEPCTR 65283196# GCN-NEXT: S_MOV_B32197---198name: vmem_write_sgpr_branch199body: |200 bb.0:201 successors: %bb.1202 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF203 $sgpr4 = IMPLICIT_DEF204 $vgpr0 = IMPLICIT_DEF205 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec206 S_BRANCH %bb.1207 208 bb.1:209 $sgpr0 = S_MOV_B32 0210...211# GCN-LABEL: name: vmem_write_sgpr_branch_around212# GCN: BUFFER_LOAD_DWORD_OFFEN213# GCN-NEXT: S_BRANCH214# GCN: bb.2:215# GFX10-NEXT: S_WAITCNT_DEPCTR 65283216# GCN-NEXT: S_MOV_B32217---218name: vmem_write_sgpr_branch_around219body: |220 bb.0:221 successors: %bb.2222 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF223 $sgpr4 = IMPLICIT_DEF224 $vgpr0 = IMPLICIT_DEF225 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec226 S_BRANCH %bb.2227 228 bb.1:229 successors: %bb.2230 S_WAITCNT 0231 232 bb.2:233 $sgpr0 = S_MOV_B32 0234...235# GCN-LABEL: name: vmem_write_sgpr_cbranch_around236# GCN: BUFFER_LOAD_DWORD_OFFEN237# GCN-NEXT: S_CBRANCH238# GCN-NEXT: S_BRANCH239# GCN: bb.1:240# GCN: S_WAITCNT241# GCN: V_ADD_CO_U32242# GCN: bb.2:243# GFX10-NEXT: S_WAITCNT_DEPCTR 65283244# GCN-NEXT: S_MOV_B32245---246name: vmem_write_sgpr_cbranch_around247body: |248 bb.0:249 successors: %bb.1, %bb.2250 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF251 $sgpr4 = IMPLICIT_DEF252 $vgpr0 = IMPLICIT_DEF253 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec254 S_CBRANCH_SCC0 %bb.2, implicit $scc255 S_BRANCH %bb.1256 257 bb.1:258 successors: %bb.2259 S_WAITCNT 0260 $vgpr2, $vcc_lo = V_ADD_CO_U32_e64 $vgpr1, $vgpr1, 0, implicit $exec261 S_BRANCH %bb.2262 263 bb.2:264 $sgpr0 = S_MOV_B32 0265...266# GCN-LABEL: name: vmem_write_sgpr_branch_backedge267# GCN: $vgpr0 = IMPLICIT_DEF268# GFX10-NEXT: S_WAITCNT_DEPCTR 65283269# GCN-NEXT: S_MOV_B32270---271name: vmem_write_sgpr_branch_backedge272body: |273 bb.0:274 successors: %bb.1275 $sgpr0_sgpr1_sgpr2_sgpr3 = IMPLICIT_DEF276 $sgpr4 = IMPLICIT_DEF277 $vgpr0 = IMPLICIT_DEF278 $sgpr0 = S_MOV_B32 0279 280 bb.1:281 $vgpr1 = BUFFER_LOAD_DWORD_OFFEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 0, 0, 0, implicit $exec282 S_BRANCH %bb.0283...284# GCN-LABEL: name: ds_write_exec285# GCN: DS_WRITE_B32_gfx9286# GFX10-NEXT: S_WAITCNT_DEPCTR 65283287# GCN-NEXT: S_MOV_B32288---289name: ds_write_exec290body: |291 bb.0:292 $vgpr0 = IMPLICIT_DEF293 $vgpr1 = IMPLICIT_DEF294 DS_WRITE_B32_gfx9 $vgpr0, $vgpr1, 0, 0, implicit $exec295 $exec_lo = S_MOV_B32 -1296...297# GCN-LABEL: name: vmem_scratch_exec298# GCN: SCRATCH_LOAD_DWORD299# GFX10-NEXT: S_WAITCNT_DEPCTR 65283300# GCN-NEXT: S_MOV_B32301---302name: vmem_scratch_exec303body: |304 bb.0:305 $vgpr0 = IMPLICIT_DEF306 $vgpr1 = SCRATCH_LOAD_DWORD undef $vgpr0, 0, 0, implicit $exec, implicit $flat_scr307 $exec_lo = S_MOV_B32 -1308...309# GCN-LABEL: name: vmem_flat_exec310# GCN: FLAT_LOAD_DWORD311# GFX10-NEXT: S_WAITCNT_DEPCTR 65283312# GCN-NEXT: S_MOV_B32313---314name: vmem_flat_exec315body: |316 bb.0:317 $vgpr0 = IMPLICIT_DEF318 $vgpr1 = IMPLICIT_DEF319 $vgpr2 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr320 $exec_lo = S_MOV_B32 -1321...322# GCN-LABEL: name: vmem_global_exec323# GCN: GLOBAL_LOAD_DWORD324# GFX10-NEXT: S_WAITCNT_DEPCTR 65283325# GCN-NEXT: S_MOV_B32326---327name: vmem_global_exec328body: |329 bb.0:330 $vgpr0 = IMPLICIT_DEF331 $vgpr1 = IMPLICIT_DEF332 $vgpr2 = GLOBAL_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec333 $exec_lo = S_MOV_B32 -1334...335# GCN-LABEL: name: vmem_global_atomic_exec336# GCN: GLOBAL_ATOMIC_ADD_RTN337# GFX10-NEXT: S_WAITCNT_DEPCTR 65283338# GCN-NEXT: S_MOV_B32339---340name: vmem_global_atomic_exec341body: |342 bb.0:343 $vgpr0 = IMPLICIT_DEF344 $vgpr1 = IMPLICIT_DEF345 $vgpr2 = IMPLICIT_DEF346 $vgpr3 = GLOBAL_ATOMIC_ADD_RTN $vgpr0_vgpr1, $vgpr2, 0, 1, implicit $exec :: (load store syncscope("agent") seq_cst (s32), addrspace 1)347 $exec_lo = S_MOV_B32 -1348...349