diff options
Diffstat (limited to 'llvm/test/CodeGen/AMDGPU/waitcnt-global-inv-wb.mir')
-rw-r--r-- | llvm/test/CodeGen/AMDGPU/waitcnt-global-inv-wb.mir | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AMDGPU/waitcnt-global-inv-wb.mir b/llvm/test/CodeGen/AMDGPU/waitcnt-global-inv-wb.mir new file mode 100644 index 0000000..c06e931 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/waitcnt-global-inv-wb.mir @@ -0,0 +1,29 @@ +# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py +# RUN: llc -march=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GFX12 %s + +# Check that we correctly track that GLOBAL_INV increases LOAD_cnt. +# We use a straightforward dependency between a GLOBAL_LOAD and an instruction +# that uses its result - the S_WAIT_LOADCNT introduced before the use should +# reflect the fact that there is a GLOBAL_INV between them. +# FIXME: We could get away with a S_WAIT_LOADCNT 1 here. +--- +name: waitcnt-global-inv +machineFunctionInfo: + isEntryFunction: true +body: | + bb.0: + liveins: $vgpr0, $vgpr1, $sgpr2_sgpr3 + + ; GFX12-LABEL: name: waitcnt-global-inv + ; GFX12: liveins: $vgpr0, $vgpr1, $sgpr2_sgpr3 + ; GFX12-NEXT: {{ $}} + ; GFX12-NEXT: renamable $vgpr0 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr2_sgpr3, killed $vgpr0, 0, 0, implicit $exec :: (load (s32), addrspace 1) + ; GFX12-NEXT: GLOBAL_INV 16, implicit $exec + ; GFX12-NEXT: S_WAITCNT 1015 + ; GFX12-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $exec + renamable $vgpr0 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr2_sgpr3, killed $vgpr0, 0, 0, implicit $exec :: (load (s32), addrspace 1) + GLOBAL_INV 16, implicit $exec + $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $exec +... + +# TODO: Test for GLOBAL_WB, GLOBAL_WBINV |