Skip to content

Commit d8bcfc3

Browse files
committed
added two more tests that result in no waitcnt:
- fence does not specify LDS - fence is not a release
1 parent 6e3be02 commit d8bcfc3

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

llvm/test/CodeGen/AMDGPU/insert-waitcnts-fence-soft.mir

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,46 @@ body: |
8484
8585
...
8686

87+
# Expected no vmcnt since the fence does not specify LDS
88+
89+
---
90+
name: dma_then_no_lds
91+
body: |
92+
bb.0:
93+
; GCN-LABEL: name: dma_then_no_lds
94+
; GCN: S_WAITCNT 0
95+
; GCN-NEXT: BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison` + 4, addrspace 1), (store (s32) into `ptr addrspace(3) poison` + 4, addrspace 3)
96+
; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec
97+
; GCN-NEXT: $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
98+
; GCN-NEXT: S_ENDPGM 0
99+
BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison` + 4), (store (s32) into `ptr addrspace(3) poison` + 4)
100+
$vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec
101+
S_WAITCNT_FENCE_soft 5, 5, 5
102+
$vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
103+
S_ENDPGM 0
104+
105+
...
106+
107+
# Expected no vmcnt since the fence is not a release
108+
109+
---
110+
name: no_release
111+
body: |
112+
bb.0:
113+
; GCN-LABEL: name: no_release
114+
; GCN: S_WAITCNT 0
115+
; GCN-NEXT: BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison` + 4, addrspace 1), (store (s32) into `ptr addrspace(3) poison` + 4, addrspace 3)
116+
; GCN-NEXT: $vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec
117+
; GCN-NEXT: $vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
118+
; GCN-NEXT: S_ENDPGM 0
119+
BUFFER_LOAD_DWORD_LDS_IDXEN $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4, 4, 0, 0, implicit $exec, implicit $m0 :: (load (s32) from `ptr addrspace(1) poison` + 4), (store (s32) into `ptr addrspace(3) poison` + 4)
120+
$vgpr2 = GLOBAL_LOAD_DWORD $vgpr4_vgpr5, 0, 0, implicit $exec
121+
S_WAITCNT_FENCE_soft 4, 5, 15
122+
$vgpr1 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
123+
S_ENDPGM 0
124+
125+
...
126+
87127
# Expected no vmcnt since direct loads to LDS don't matter at wavefront scope.
88128

89129
---

0 commit comments

Comments
 (0)