1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx600 < %s | FileCheck --check-prefixes=GFX6 %s
3 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx700 < %s | FileCheck --check-prefixes=GFX7 %s
4 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1010 < %s | FileCheck --check-prefixes=GFX10-WGP %s
5 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1010 -mattr=+cumode < %s | FileCheck --check-prefixes=GFX10-CU %s
6 ; RUN: llc -mtriple=amdgcn-amd-amdpal -O0 -mcpu=gfx700 -amdgcn-skip-cache-invalidations < %s | FileCheck --check-prefixes=SKIP-CACHE-INV %s
7 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX90A-NOTTGSPLIT %s
8 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx90a -mattr=+tgsplit < %s | FileCheck -check-prefixes=GFX90A-TGSPLIT %s
9 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX940-NOTTGSPLIT %s
10 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx940 -mattr=+tgsplit < %s | FileCheck -check-prefixes=GFX940-TGSPLIT %s
11 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11-WGP %s
12 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1100 -mattr=+cumode < %s | FileCheck --check-prefixes=GFX11-CU %s
13 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GFX12-WGP %s
14 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1200 -mattr=+cumode < %s | FileCheck --check-prefixes=GFX12-CU %s
16 define amdgpu_kernel void @workgroup_acquire_fence() {
17 ; GFX6-LABEL: workgroup_acquire_fence:
18 ; GFX6: ; %bb.0: ; %entry
21 ; GFX7-LABEL: workgroup_acquire_fence:
22 ; GFX7: ; %bb.0: ; %entry
25 ; GFX10-WGP-LABEL: workgroup_acquire_fence:
26 ; GFX10-WGP: ; %bb.0: ; %entry
27 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
28 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
29 ; GFX10-WGP-NEXT: buffer_gl0_inv
30 ; GFX10-WGP-NEXT: s_endpgm
32 ; GFX10-CU-LABEL: workgroup_acquire_fence:
33 ; GFX10-CU: ; %bb.0: ; %entry
34 ; GFX10-CU-NEXT: s_endpgm
36 ; SKIP-CACHE-INV-LABEL: workgroup_acquire_fence:
37 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
38 ; SKIP-CACHE-INV-NEXT: s_endpgm
40 ; GFX90A-NOTTGSPLIT-LABEL: workgroup_acquire_fence:
41 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
42 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
44 ; GFX90A-TGSPLIT-LABEL: workgroup_acquire_fence:
45 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
46 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
47 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
48 ; GFX90A-TGSPLIT-NEXT: s_endpgm
50 ; GFX940-NOTTGSPLIT-LABEL: workgroup_acquire_fence:
51 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
52 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
54 ; GFX940-TGSPLIT-LABEL: workgroup_acquire_fence:
55 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
56 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
57 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0
58 ; GFX940-TGSPLIT-NEXT: s_endpgm
60 ; GFX11-WGP-LABEL: workgroup_acquire_fence:
61 ; GFX11-WGP: ; %bb.0: ; %entry
62 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
63 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
64 ; GFX11-WGP-NEXT: buffer_gl0_inv
65 ; GFX11-WGP-NEXT: s_endpgm
67 ; GFX11-CU-LABEL: workgroup_acquire_fence:
68 ; GFX11-CU: ; %bb.0: ; %entry
69 ; GFX11-CU-NEXT: s_endpgm
71 ; GFX12-WGP-LABEL: workgroup_acquire_fence:
72 ; GFX12-WGP: ; %bb.0: ; %entry
73 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
74 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
75 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SE
76 ; GFX12-WGP-NEXT: s_endpgm
78 ; GFX12-CU-LABEL: workgroup_acquire_fence:
79 ; GFX12-CU: ; %bb.0: ; %entry
80 ; GFX12-CU-NEXT: s_endpgm
82 fence syncscope("workgroup") acquire, !mmra !{!"amdgpu-as", !"global"}
86 define amdgpu_kernel void @workgroup_release_fence() {
87 ; GFX6-LABEL: workgroup_release_fence:
88 ; GFX6: ; %bb.0: ; %entry
91 ; GFX7-LABEL: workgroup_release_fence:
92 ; GFX7: ; %bb.0: ; %entry
95 ; GFX10-WGP-LABEL: workgroup_release_fence:
96 ; GFX10-WGP: ; %bb.0: ; %entry
97 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
98 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
99 ; GFX10-WGP-NEXT: s_endpgm
101 ; GFX10-CU-LABEL: workgroup_release_fence:
102 ; GFX10-CU: ; %bb.0: ; %entry
103 ; GFX10-CU-NEXT: s_endpgm
105 ; SKIP-CACHE-INV-LABEL: workgroup_release_fence:
106 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
107 ; SKIP-CACHE-INV-NEXT: s_endpgm
109 ; GFX90A-NOTTGSPLIT-LABEL: workgroup_release_fence:
110 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
111 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
113 ; GFX90A-TGSPLIT-LABEL: workgroup_release_fence:
114 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
115 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
116 ; GFX90A-TGSPLIT-NEXT: s_endpgm
118 ; GFX940-NOTTGSPLIT-LABEL: workgroup_release_fence:
119 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
120 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
122 ; GFX940-TGSPLIT-LABEL: workgroup_release_fence:
123 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
124 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
125 ; GFX940-TGSPLIT-NEXT: s_endpgm
127 ; GFX11-WGP-LABEL: workgroup_release_fence:
128 ; GFX11-WGP: ; %bb.0: ; %entry
129 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
130 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
131 ; GFX11-WGP-NEXT: s_endpgm
133 ; GFX11-CU-LABEL: workgroup_release_fence:
134 ; GFX11-CU: ; %bb.0: ; %entry
135 ; GFX11-CU-NEXT: s_endpgm
137 ; GFX12-WGP-LABEL: workgroup_release_fence:
138 ; GFX12-WGP: ; %bb.0: ; %entry
139 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
140 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
141 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
142 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
143 ; GFX12-WGP-NEXT: s_endpgm
145 ; GFX12-CU-LABEL: workgroup_release_fence:
146 ; GFX12-CU: ; %bb.0: ; %entry
147 ; GFX12-CU-NEXT: s_endpgm
149 fence syncscope("workgroup") release, !mmra !{!"amdgpu-as", !"global"}
153 define amdgpu_kernel void @workgroup_acq_rel_fence() {
154 ; GFX6-LABEL: workgroup_acq_rel_fence:
155 ; GFX6: ; %bb.0: ; %entry
156 ; GFX6-NEXT: s_endpgm
158 ; GFX7-LABEL: workgroup_acq_rel_fence:
159 ; GFX7: ; %bb.0: ; %entry
160 ; GFX7-NEXT: s_endpgm
162 ; GFX10-WGP-LABEL: workgroup_acq_rel_fence:
163 ; GFX10-WGP: ; %bb.0: ; %entry
164 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
165 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
166 ; GFX10-WGP-NEXT: buffer_gl0_inv
167 ; GFX10-WGP-NEXT: s_endpgm
169 ; GFX10-CU-LABEL: workgroup_acq_rel_fence:
170 ; GFX10-CU: ; %bb.0: ; %entry
171 ; GFX10-CU-NEXT: s_endpgm
173 ; SKIP-CACHE-INV-LABEL: workgroup_acq_rel_fence:
174 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
175 ; SKIP-CACHE-INV-NEXT: s_endpgm
177 ; GFX90A-NOTTGSPLIT-LABEL: workgroup_acq_rel_fence:
178 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
179 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
181 ; GFX90A-TGSPLIT-LABEL: workgroup_acq_rel_fence:
182 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
183 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
184 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
185 ; GFX90A-TGSPLIT-NEXT: s_endpgm
187 ; GFX940-NOTTGSPLIT-LABEL: workgroup_acq_rel_fence:
188 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
189 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
191 ; GFX940-TGSPLIT-LABEL: workgroup_acq_rel_fence:
192 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
193 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
194 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0
195 ; GFX940-TGSPLIT-NEXT: s_endpgm
197 ; GFX11-WGP-LABEL: workgroup_acq_rel_fence:
198 ; GFX11-WGP: ; %bb.0: ; %entry
199 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
200 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
201 ; GFX11-WGP-NEXT: buffer_gl0_inv
202 ; GFX11-WGP-NEXT: s_endpgm
204 ; GFX11-CU-LABEL: workgroup_acq_rel_fence:
205 ; GFX11-CU: ; %bb.0: ; %entry
206 ; GFX11-CU-NEXT: s_endpgm
208 ; GFX12-WGP-LABEL: workgroup_acq_rel_fence:
209 ; GFX12-WGP: ; %bb.0: ; %entry
210 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
211 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
212 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
213 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
214 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SE
215 ; GFX12-WGP-NEXT: s_endpgm
217 ; GFX12-CU-LABEL: workgroup_acq_rel_fence:
218 ; GFX12-CU: ; %bb.0: ; %entry
219 ; GFX12-CU-NEXT: s_endpgm
221 fence syncscope("workgroup") acq_rel, !mmra !{!"amdgpu-as", !"global"}
225 define amdgpu_kernel void @workgroup_seq_cst_fence() {
226 ; GFX6-LABEL: workgroup_seq_cst_fence:
227 ; GFX6: ; %bb.0: ; %entry
228 ; GFX6-NEXT: s_endpgm
230 ; GFX7-LABEL: workgroup_seq_cst_fence:
231 ; GFX7: ; %bb.0: ; %entry
232 ; GFX7-NEXT: s_endpgm
234 ; GFX10-WGP-LABEL: workgroup_seq_cst_fence:
235 ; GFX10-WGP: ; %bb.0: ; %entry
236 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
237 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
238 ; GFX10-WGP-NEXT: buffer_gl0_inv
239 ; GFX10-WGP-NEXT: s_endpgm
241 ; GFX10-CU-LABEL: workgroup_seq_cst_fence:
242 ; GFX10-CU: ; %bb.0: ; %entry
243 ; GFX10-CU-NEXT: s_endpgm
245 ; SKIP-CACHE-INV-LABEL: workgroup_seq_cst_fence:
246 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
247 ; SKIP-CACHE-INV-NEXT: s_endpgm
249 ; GFX90A-NOTTGSPLIT-LABEL: workgroup_seq_cst_fence:
250 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
251 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
253 ; GFX90A-TGSPLIT-LABEL: workgroup_seq_cst_fence:
254 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
255 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
256 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
257 ; GFX90A-TGSPLIT-NEXT: s_endpgm
259 ; GFX940-NOTTGSPLIT-LABEL: workgroup_seq_cst_fence:
260 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
261 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
263 ; GFX940-TGSPLIT-LABEL: workgroup_seq_cst_fence:
264 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
265 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
266 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0
267 ; GFX940-TGSPLIT-NEXT: s_endpgm
269 ; GFX11-WGP-LABEL: workgroup_seq_cst_fence:
270 ; GFX11-WGP: ; %bb.0: ; %entry
271 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
272 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
273 ; GFX11-WGP-NEXT: buffer_gl0_inv
274 ; GFX11-WGP-NEXT: s_endpgm
276 ; GFX11-CU-LABEL: workgroup_seq_cst_fence:
277 ; GFX11-CU: ; %bb.0: ; %entry
278 ; GFX11-CU-NEXT: s_endpgm
280 ; GFX12-WGP-LABEL: workgroup_seq_cst_fence:
281 ; GFX12-WGP: ; %bb.0: ; %entry
282 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
283 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
284 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
285 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
286 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SE
287 ; GFX12-WGP-NEXT: s_endpgm
289 ; GFX12-CU-LABEL: workgroup_seq_cst_fence:
290 ; GFX12-CU: ; %bb.0: ; %entry
291 ; GFX12-CU-NEXT: s_endpgm
293 fence syncscope("workgroup") seq_cst, !mmra !{!"amdgpu-as", !"global"}
297 define amdgpu_kernel void @workgroup_one_as_acquire_fence() {
298 ; GFX6-LABEL: workgroup_one_as_acquire_fence:
299 ; GFX6: ; %bb.0: ; %entry
300 ; GFX6-NEXT: s_endpgm
302 ; GFX7-LABEL: workgroup_one_as_acquire_fence:
303 ; GFX7: ; %bb.0: ; %entry
304 ; GFX7-NEXT: s_endpgm
306 ; GFX10-WGP-LABEL: workgroup_one_as_acquire_fence:
307 ; GFX10-WGP: ; %bb.0: ; %entry
308 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
309 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
310 ; GFX10-WGP-NEXT: buffer_gl0_inv
311 ; GFX10-WGP-NEXT: s_endpgm
313 ; GFX10-CU-LABEL: workgroup_one_as_acquire_fence:
314 ; GFX10-CU: ; %bb.0: ; %entry
315 ; GFX10-CU-NEXT: s_endpgm
317 ; SKIP-CACHE-INV-LABEL: workgroup_one_as_acquire_fence:
318 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
319 ; SKIP-CACHE-INV-NEXT: s_endpgm
321 ; GFX90A-NOTTGSPLIT-LABEL: workgroup_one_as_acquire_fence:
322 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
323 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
325 ; GFX90A-TGSPLIT-LABEL: workgroup_one_as_acquire_fence:
326 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
327 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
328 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
329 ; GFX90A-TGSPLIT-NEXT: s_endpgm
331 ; GFX940-NOTTGSPLIT-LABEL: workgroup_one_as_acquire_fence:
332 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
333 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
335 ; GFX940-TGSPLIT-LABEL: workgroup_one_as_acquire_fence:
336 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
337 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
338 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0
339 ; GFX940-TGSPLIT-NEXT: s_endpgm
341 ; GFX11-WGP-LABEL: workgroup_one_as_acquire_fence:
342 ; GFX11-WGP: ; %bb.0: ; %entry
343 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
344 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
345 ; GFX11-WGP-NEXT: buffer_gl0_inv
346 ; GFX11-WGP-NEXT: s_endpgm
348 ; GFX11-CU-LABEL: workgroup_one_as_acquire_fence:
349 ; GFX11-CU: ; %bb.0: ; %entry
350 ; GFX11-CU-NEXT: s_endpgm
352 ; GFX12-WGP-LABEL: workgroup_one_as_acquire_fence:
353 ; GFX12-WGP: ; %bb.0: ; %entry
354 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
355 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
356 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SE
357 ; GFX12-WGP-NEXT: s_endpgm
359 ; GFX12-CU-LABEL: workgroup_one_as_acquire_fence:
360 ; GFX12-CU: ; %bb.0: ; %entry
361 ; GFX12-CU-NEXT: s_endpgm
363 fence syncscope("workgroup-one-as") acquire, !mmra !{!"amdgpu-as", !"global"}
367 define amdgpu_kernel void @workgroup_one_as_release_fence() {
368 ; GFX6-LABEL: workgroup_one_as_release_fence:
369 ; GFX6: ; %bb.0: ; %entry
370 ; GFX6-NEXT: s_endpgm
372 ; GFX7-LABEL: workgroup_one_as_release_fence:
373 ; GFX7: ; %bb.0: ; %entry
374 ; GFX7-NEXT: s_endpgm
376 ; GFX10-WGP-LABEL: workgroup_one_as_release_fence:
377 ; GFX10-WGP: ; %bb.0: ; %entry
378 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
379 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
380 ; GFX10-WGP-NEXT: s_endpgm
382 ; GFX10-CU-LABEL: workgroup_one_as_release_fence:
383 ; GFX10-CU: ; %bb.0: ; %entry
384 ; GFX10-CU-NEXT: s_endpgm
386 ; SKIP-CACHE-INV-LABEL: workgroup_one_as_release_fence:
387 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
388 ; SKIP-CACHE-INV-NEXT: s_endpgm
390 ; GFX90A-NOTTGSPLIT-LABEL: workgroup_one_as_release_fence:
391 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
392 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
394 ; GFX90A-TGSPLIT-LABEL: workgroup_one_as_release_fence:
395 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
396 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
397 ; GFX90A-TGSPLIT-NEXT: s_endpgm
399 ; GFX940-NOTTGSPLIT-LABEL: workgroup_one_as_release_fence:
400 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
401 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
403 ; GFX940-TGSPLIT-LABEL: workgroup_one_as_release_fence:
404 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
405 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
406 ; GFX940-TGSPLIT-NEXT: s_endpgm
408 ; GFX11-WGP-LABEL: workgroup_one_as_release_fence:
409 ; GFX11-WGP: ; %bb.0: ; %entry
410 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
411 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
412 ; GFX11-WGP-NEXT: s_endpgm
414 ; GFX11-CU-LABEL: workgroup_one_as_release_fence:
415 ; GFX11-CU: ; %bb.0: ; %entry
416 ; GFX11-CU-NEXT: s_endpgm
418 ; GFX12-WGP-LABEL: workgroup_one_as_release_fence:
419 ; GFX12-WGP: ; %bb.0: ; %entry
420 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
421 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
422 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
423 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
424 ; GFX12-WGP-NEXT: s_endpgm
426 ; GFX12-CU-LABEL: workgroup_one_as_release_fence:
427 ; GFX12-CU: ; %bb.0: ; %entry
428 ; GFX12-CU-NEXT: s_endpgm
430 fence syncscope("workgroup-one-as") release, !mmra !{!"amdgpu-as", !"global"}
434 define amdgpu_kernel void @workgroup_one_as_acq_rel_fence() {
435 ; GFX6-LABEL: workgroup_one_as_acq_rel_fence:
436 ; GFX6: ; %bb.0: ; %entry
437 ; GFX6-NEXT: s_endpgm
439 ; GFX7-LABEL: workgroup_one_as_acq_rel_fence:
440 ; GFX7: ; %bb.0: ; %entry
441 ; GFX7-NEXT: s_endpgm
443 ; GFX10-WGP-LABEL: workgroup_one_as_acq_rel_fence:
444 ; GFX10-WGP: ; %bb.0: ; %entry
445 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
446 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
447 ; GFX10-WGP-NEXT: buffer_gl0_inv
448 ; GFX10-WGP-NEXT: s_endpgm
450 ; GFX10-CU-LABEL: workgroup_one_as_acq_rel_fence:
451 ; GFX10-CU: ; %bb.0: ; %entry
452 ; GFX10-CU-NEXT: s_endpgm
454 ; SKIP-CACHE-INV-LABEL: workgroup_one_as_acq_rel_fence:
455 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
456 ; SKIP-CACHE-INV-NEXT: s_endpgm
458 ; GFX90A-NOTTGSPLIT-LABEL: workgroup_one_as_acq_rel_fence:
459 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
460 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
462 ; GFX90A-TGSPLIT-LABEL: workgroup_one_as_acq_rel_fence:
463 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
464 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
465 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
466 ; GFX90A-TGSPLIT-NEXT: s_endpgm
468 ; GFX940-NOTTGSPLIT-LABEL: workgroup_one_as_acq_rel_fence:
469 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
470 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
472 ; GFX940-TGSPLIT-LABEL: workgroup_one_as_acq_rel_fence:
473 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
474 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
475 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0
476 ; GFX940-TGSPLIT-NEXT: s_endpgm
478 ; GFX11-WGP-LABEL: workgroup_one_as_acq_rel_fence:
479 ; GFX11-WGP: ; %bb.0: ; %entry
480 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
481 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
482 ; GFX11-WGP-NEXT: buffer_gl0_inv
483 ; GFX11-WGP-NEXT: s_endpgm
485 ; GFX11-CU-LABEL: workgroup_one_as_acq_rel_fence:
486 ; GFX11-CU: ; %bb.0: ; %entry
487 ; GFX11-CU-NEXT: s_endpgm
489 ; GFX12-WGP-LABEL: workgroup_one_as_acq_rel_fence:
490 ; GFX12-WGP: ; %bb.0: ; %entry
491 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
492 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
493 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
494 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
495 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SE
496 ; GFX12-WGP-NEXT: s_endpgm
498 ; GFX12-CU-LABEL: workgroup_one_as_acq_rel_fence:
499 ; GFX12-CU: ; %bb.0: ; %entry
500 ; GFX12-CU-NEXT: s_endpgm
502 fence syncscope("workgroup-one-as") acq_rel, !mmra !{!"amdgpu-as", !"global"}
506 define amdgpu_kernel void @workgroup_one_as_seq_cst_fence() {
507 ; GFX6-LABEL: workgroup_one_as_seq_cst_fence:
508 ; GFX6: ; %bb.0: ; %entry
509 ; GFX6-NEXT: s_endpgm
511 ; GFX7-LABEL: workgroup_one_as_seq_cst_fence:
512 ; GFX7: ; %bb.0: ; %entry
513 ; GFX7-NEXT: s_endpgm
515 ; GFX10-WGP-LABEL: workgroup_one_as_seq_cst_fence:
516 ; GFX10-WGP: ; %bb.0: ; %entry
517 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
518 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
519 ; GFX10-WGP-NEXT: buffer_gl0_inv
520 ; GFX10-WGP-NEXT: s_endpgm
522 ; GFX10-CU-LABEL: workgroup_one_as_seq_cst_fence:
523 ; GFX10-CU: ; %bb.0: ; %entry
524 ; GFX10-CU-NEXT: s_endpgm
526 ; SKIP-CACHE-INV-LABEL: workgroup_one_as_seq_cst_fence:
527 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
528 ; SKIP-CACHE-INV-NEXT: s_endpgm
530 ; GFX90A-NOTTGSPLIT-LABEL: workgroup_one_as_seq_cst_fence:
531 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
532 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
534 ; GFX90A-TGSPLIT-LABEL: workgroup_one_as_seq_cst_fence:
535 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
536 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
537 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
538 ; GFX90A-TGSPLIT-NEXT: s_endpgm
540 ; GFX940-NOTTGSPLIT-LABEL: workgroup_one_as_seq_cst_fence:
541 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
542 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
544 ; GFX940-TGSPLIT-LABEL: workgroup_one_as_seq_cst_fence:
545 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
546 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
547 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0
548 ; GFX940-TGSPLIT-NEXT: s_endpgm
550 ; GFX11-WGP-LABEL: workgroup_one_as_seq_cst_fence:
551 ; GFX11-WGP: ; %bb.0: ; %entry
552 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
553 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
554 ; GFX11-WGP-NEXT: buffer_gl0_inv
555 ; GFX11-WGP-NEXT: s_endpgm
557 ; GFX11-CU-LABEL: workgroup_one_as_seq_cst_fence:
558 ; GFX11-CU: ; %bb.0: ; %entry
559 ; GFX11-CU-NEXT: s_endpgm
561 ; GFX12-WGP-LABEL: workgroup_one_as_seq_cst_fence:
562 ; GFX12-WGP: ; %bb.0: ; %entry
563 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
564 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
565 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
566 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
567 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SE
568 ; GFX12-WGP-NEXT: s_endpgm
570 ; GFX12-CU-LABEL: workgroup_one_as_seq_cst_fence:
571 ; GFX12-CU: ; %bb.0: ; %entry
572 ; GFX12-CU-NEXT: s_endpgm
574 fence syncscope("workgroup-one-as") seq_cst, !mmra !{!"amdgpu-as", !"global"}
578 define amdgpu_kernel void @agent_acquire_fence() {
579 ; GFX6-LABEL: agent_acquire_fence:
580 ; GFX6: ; %bb.0: ; %entry
581 ; GFX6-NEXT: s_waitcnt vmcnt(0)
582 ; GFX6-NEXT: buffer_wbinvl1
583 ; GFX6-NEXT: s_endpgm
585 ; GFX7-LABEL: agent_acquire_fence:
586 ; GFX7: ; %bb.0: ; %entry
587 ; GFX7-NEXT: s_waitcnt vmcnt(0)
588 ; GFX7-NEXT: buffer_wbinvl1_vol
589 ; GFX7-NEXT: s_endpgm
591 ; GFX10-WGP-LABEL: agent_acquire_fence:
592 ; GFX10-WGP: ; %bb.0: ; %entry
593 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
594 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
595 ; GFX10-WGP-NEXT: buffer_gl1_inv
596 ; GFX10-WGP-NEXT: buffer_gl0_inv
597 ; GFX10-WGP-NEXT: s_endpgm
599 ; GFX10-CU-LABEL: agent_acquire_fence:
600 ; GFX10-CU: ; %bb.0: ; %entry
601 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
602 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
603 ; GFX10-CU-NEXT: buffer_gl1_inv
604 ; GFX10-CU-NEXT: buffer_gl0_inv
605 ; GFX10-CU-NEXT: s_endpgm
607 ; SKIP-CACHE-INV-LABEL: agent_acquire_fence:
608 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
609 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
610 ; SKIP-CACHE-INV-NEXT: s_endpgm
612 ; GFX90A-NOTTGSPLIT-LABEL: agent_acquire_fence:
613 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
614 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
615 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
616 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
618 ; GFX90A-TGSPLIT-LABEL: agent_acquire_fence:
619 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
620 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
621 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
622 ; GFX90A-TGSPLIT-NEXT: s_endpgm
624 ; GFX940-NOTTGSPLIT-LABEL: agent_acquire_fence:
625 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
626 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
627 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc1
628 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
630 ; GFX940-TGSPLIT-LABEL: agent_acquire_fence:
631 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
632 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
633 ; GFX940-TGSPLIT-NEXT: buffer_inv sc1
634 ; GFX940-TGSPLIT-NEXT: s_endpgm
636 ; GFX11-WGP-LABEL: agent_acquire_fence:
637 ; GFX11-WGP: ; %bb.0: ; %entry
638 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
639 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
640 ; GFX11-WGP-NEXT: buffer_gl1_inv
641 ; GFX11-WGP-NEXT: buffer_gl0_inv
642 ; GFX11-WGP-NEXT: s_endpgm
644 ; GFX11-CU-LABEL: agent_acquire_fence:
645 ; GFX11-CU: ; %bb.0: ; %entry
646 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
647 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
648 ; GFX11-CU-NEXT: buffer_gl1_inv
649 ; GFX11-CU-NEXT: buffer_gl0_inv
650 ; GFX11-CU-NEXT: s_endpgm
652 ; GFX12-WGP-LABEL: agent_acquire_fence:
653 ; GFX12-WGP: ; %bb.0: ; %entry
654 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
655 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
656 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_DEV
657 ; GFX12-WGP-NEXT: s_endpgm
659 ; GFX12-CU-LABEL: agent_acquire_fence:
660 ; GFX12-CU: ; %bb.0: ; %entry
661 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
662 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
663 ; GFX12-CU-NEXT: global_inv scope:SCOPE_DEV
664 ; GFX12-CU-NEXT: s_endpgm
666 fence syncscope("agent") acquire, !mmra !{!"amdgpu-as", !"global"}
670 define amdgpu_kernel void @agent_release_fence() {
671 ; GFX6-LABEL: agent_release_fence:
672 ; GFX6: ; %bb.0: ; %entry
673 ; GFX6-NEXT: s_waitcnt vmcnt(0)
674 ; GFX6-NEXT: s_endpgm
676 ; GFX7-LABEL: agent_release_fence:
677 ; GFX7: ; %bb.0: ; %entry
678 ; GFX7-NEXT: s_waitcnt vmcnt(0)
679 ; GFX7-NEXT: s_endpgm
681 ; GFX10-WGP-LABEL: agent_release_fence:
682 ; GFX10-WGP: ; %bb.0: ; %entry
683 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
684 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
685 ; GFX10-WGP-NEXT: s_endpgm
687 ; GFX10-CU-LABEL: agent_release_fence:
688 ; GFX10-CU: ; %bb.0: ; %entry
689 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
690 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
691 ; GFX10-CU-NEXT: s_endpgm
693 ; SKIP-CACHE-INV-LABEL: agent_release_fence:
694 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
695 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
696 ; SKIP-CACHE-INV-NEXT: s_endpgm
698 ; GFX90A-NOTTGSPLIT-LABEL: agent_release_fence:
699 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
700 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
701 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
703 ; GFX90A-TGSPLIT-LABEL: agent_release_fence:
704 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
705 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
706 ; GFX90A-TGSPLIT-NEXT: s_endpgm
708 ; GFX940-NOTTGSPLIT-LABEL: agent_release_fence:
709 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
710 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc1
711 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
712 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
714 ; GFX940-TGSPLIT-LABEL: agent_release_fence:
715 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
716 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc1
717 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
718 ; GFX940-TGSPLIT-NEXT: s_endpgm
720 ; GFX11-WGP-LABEL: agent_release_fence:
721 ; GFX11-WGP: ; %bb.0: ; %entry
722 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
723 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
724 ; GFX11-WGP-NEXT: s_endpgm
726 ; GFX11-CU-LABEL: agent_release_fence:
727 ; GFX11-CU: ; %bb.0: ; %entry
728 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
729 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
730 ; GFX11-CU-NEXT: s_endpgm
732 ; GFX12-WGP-LABEL: agent_release_fence:
733 ; GFX12-WGP: ; %bb.0: ; %entry
734 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
735 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
736 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
737 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
738 ; GFX12-WGP-NEXT: s_endpgm
740 ; GFX12-CU-LABEL: agent_release_fence:
741 ; GFX12-CU: ; %bb.0: ; %entry
742 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
743 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
744 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
745 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
746 ; GFX12-CU-NEXT: s_endpgm
748 fence syncscope("agent") release, !mmra !{!"amdgpu-as", !"global"}
752 define amdgpu_kernel void @agent_acq_rel_fence() {
753 ; GFX6-LABEL: agent_acq_rel_fence:
754 ; GFX6: ; %bb.0: ; %entry
755 ; GFX6-NEXT: s_waitcnt vmcnt(0)
756 ; GFX6-NEXT: buffer_wbinvl1
757 ; GFX6-NEXT: s_endpgm
759 ; GFX7-LABEL: agent_acq_rel_fence:
760 ; GFX7: ; %bb.0: ; %entry
761 ; GFX7-NEXT: s_waitcnt vmcnt(0)
762 ; GFX7-NEXT: buffer_wbinvl1_vol
763 ; GFX7-NEXT: s_endpgm
765 ; GFX10-WGP-LABEL: agent_acq_rel_fence:
766 ; GFX10-WGP: ; %bb.0: ; %entry
767 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
768 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
769 ; GFX10-WGP-NEXT: buffer_gl1_inv
770 ; GFX10-WGP-NEXT: buffer_gl0_inv
771 ; GFX10-WGP-NEXT: s_endpgm
773 ; GFX10-CU-LABEL: agent_acq_rel_fence:
774 ; GFX10-CU: ; %bb.0: ; %entry
775 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
776 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
777 ; GFX10-CU-NEXT: buffer_gl1_inv
778 ; GFX10-CU-NEXT: buffer_gl0_inv
779 ; GFX10-CU-NEXT: s_endpgm
781 ; SKIP-CACHE-INV-LABEL: agent_acq_rel_fence:
782 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
783 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
784 ; SKIP-CACHE-INV-NEXT: s_endpgm
786 ; GFX90A-NOTTGSPLIT-LABEL: agent_acq_rel_fence:
787 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
788 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
789 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
790 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
792 ; GFX90A-TGSPLIT-LABEL: agent_acq_rel_fence:
793 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
794 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
795 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
796 ; GFX90A-TGSPLIT-NEXT: s_endpgm
798 ; GFX940-NOTTGSPLIT-LABEL: agent_acq_rel_fence:
799 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
800 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc1
801 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
802 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc1
803 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
805 ; GFX940-TGSPLIT-LABEL: agent_acq_rel_fence:
806 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
807 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc1
808 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
809 ; GFX940-TGSPLIT-NEXT: buffer_inv sc1
810 ; GFX940-TGSPLIT-NEXT: s_endpgm
812 ; GFX11-WGP-LABEL: agent_acq_rel_fence:
813 ; GFX11-WGP: ; %bb.0: ; %entry
814 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
815 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
816 ; GFX11-WGP-NEXT: buffer_gl1_inv
817 ; GFX11-WGP-NEXT: buffer_gl0_inv
818 ; GFX11-WGP-NEXT: s_endpgm
820 ; GFX11-CU-LABEL: agent_acq_rel_fence:
821 ; GFX11-CU: ; %bb.0: ; %entry
822 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
823 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
824 ; GFX11-CU-NEXT: buffer_gl1_inv
825 ; GFX11-CU-NEXT: buffer_gl0_inv
826 ; GFX11-CU-NEXT: s_endpgm
828 ; GFX12-WGP-LABEL: agent_acq_rel_fence:
829 ; GFX12-WGP: ; %bb.0: ; %entry
830 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
831 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
832 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
833 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
834 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_DEV
835 ; GFX12-WGP-NEXT: s_endpgm
837 ; GFX12-CU-LABEL: agent_acq_rel_fence:
838 ; GFX12-CU: ; %bb.0: ; %entry
839 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
840 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
841 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
842 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
843 ; GFX12-CU-NEXT: global_inv scope:SCOPE_DEV
844 ; GFX12-CU-NEXT: s_endpgm
846 fence syncscope("agent") acq_rel, !mmra !{!"amdgpu-as", !"global"}
850 define amdgpu_kernel void @agent_seq_cst_fence() {
851 ; GFX6-LABEL: agent_seq_cst_fence:
852 ; GFX6: ; %bb.0: ; %entry
853 ; GFX6-NEXT: s_waitcnt vmcnt(0)
854 ; GFX6-NEXT: buffer_wbinvl1
855 ; GFX6-NEXT: s_endpgm
857 ; GFX7-LABEL: agent_seq_cst_fence:
858 ; GFX7: ; %bb.0: ; %entry
859 ; GFX7-NEXT: s_waitcnt vmcnt(0)
860 ; GFX7-NEXT: buffer_wbinvl1_vol
861 ; GFX7-NEXT: s_endpgm
863 ; GFX10-WGP-LABEL: agent_seq_cst_fence:
864 ; GFX10-WGP: ; %bb.0: ; %entry
865 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
866 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
867 ; GFX10-WGP-NEXT: buffer_gl1_inv
868 ; GFX10-WGP-NEXT: buffer_gl0_inv
869 ; GFX10-WGP-NEXT: s_endpgm
871 ; GFX10-CU-LABEL: agent_seq_cst_fence:
872 ; GFX10-CU: ; %bb.0: ; %entry
873 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
874 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
875 ; GFX10-CU-NEXT: buffer_gl1_inv
876 ; GFX10-CU-NEXT: buffer_gl0_inv
877 ; GFX10-CU-NEXT: s_endpgm
879 ; SKIP-CACHE-INV-LABEL: agent_seq_cst_fence:
880 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
881 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
882 ; SKIP-CACHE-INV-NEXT: s_endpgm
884 ; GFX90A-NOTTGSPLIT-LABEL: agent_seq_cst_fence:
885 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
886 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
887 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
888 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
890 ; GFX90A-TGSPLIT-LABEL: agent_seq_cst_fence:
891 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
892 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
893 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
894 ; GFX90A-TGSPLIT-NEXT: s_endpgm
896 ; GFX940-NOTTGSPLIT-LABEL: agent_seq_cst_fence:
897 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
898 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc1
899 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
900 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc1
901 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
903 ; GFX940-TGSPLIT-LABEL: agent_seq_cst_fence:
904 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
905 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc1
906 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
907 ; GFX940-TGSPLIT-NEXT: buffer_inv sc1
908 ; GFX940-TGSPLIT-NEXT: s_endpgm
910 ; GFX11-WGP-LABEL: agent_seq_cst_fence:
911 ; GFX11-WGP: ; %bb.0: ; %entry
912 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
913 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
914 ; GFX11-WGP-NEXT: buffer_gl1_inv
915 ; GFX11-WGP-NEXT: buffer_gl0_inv
916 ; GFX11-WGP-NEXT: s_endpgm
918 ; GFX11-CU-LABEL: agent_seq_cst_fence:
919 ; GFX11-CU: ; %bb.0: ; %entry
920 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
921 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
922 ; GFX11-CU-NEXT: buffer_gl1_inv
923 ; GFX11-CU-NEXT: buffer_gl0_inv
924 ; GFX11-CU-NEXT: s_endpgm
926 ; GFX12-WGP-LABEL: agent_seq_cst_fence:
927 ; GFX12-WGP: ; %bb.0: ; %entry
928 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
929 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
930 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
931 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
932 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_DEV
933 ; GFX12-WGP-NEXT: s_endpgm
935 ; GFX12-CU-LABEL: agent_seq_cst_fence:
936 ; GFX12-CU: ; %bb.0: ; %entry
937 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
938 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
939 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
940 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
941 ; GFX12-CU-NEXT: global_inv scope:SCOPE_DEV
942 ; GFX12-CU-NEXT: s_endpgm
944 fence syncscope("agent") seq_cst, !mmra !{!"amdgpu-as", !"global"}
948 define amdgpu_kernel void @agent_one_as_acquire_fence() {
949 ; GFX6-LABEL: agent_one_as_acquire_fence:
950 ; GFX6: ; %bb.0: ; %entry
951 ; GFX6-NEXT: s_waitcnt vmcnt(0)
952 ; GFX6-NEXT: buffer_wbinvl1
953 ; GFX6-NEXT: s_endpgm
955 ; GFX7-LABEL: agent_one_as_acquire_fence:
956 ; GFX7: ; %bb.0: ; %entry
957 ; GFX7-NEXT: s_waitcnt vmcnt(0)
958 ; GFX7-NEXT: buffer_wbinvl1_vol
959 ; GFX7-NEXT: s_endpgm
961 ; GFX10-WGP-LABEL: agent_one_as_acquire_fence:
962 ; GFX10-WGP: ; %bb.0: ; %entry
963 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
964 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
965 ; GFX10-WGP-NEXT: buffer_gl1_inv
966 ; GFX10-WGP-NEXT: buffer_gl0_inv
967 ; GFX10-WGP-NEXT: s_endpgm
969 ; GFX10-CU-LABEL: agent_one_as_acquire_fence:
970 ; GFX10-CU: ; %bb.0: ; %entry
971 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
972 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
973 ; GFX10-CU-NEXT: buffer_gl1_inv
974 ; GFX10-CU-NEXT: buffer_gl0_inv
975 ; GFX10-CU-NEXT: s_endpgm
977 ; SKIP-CACHE-INV-LABEL: agent_one_as_acquire_fence:
978 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
979 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
980 ; SKIP-CACHE-INV-NEXT: s_endpgm
982 ; GFX90A-NOTTGSPLIT-LABEL: agent_one_as_acquire_fence:
983 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
984 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
985 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
986 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
988 ; GFX90A-TGSPLIT-LABEL: agent_one_as_acquire_fence:
989 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
990 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
991 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
992 ; GFX90A-TGSPLIT-NEXT: s_endpgm
994 ; GFX940-NOTTGSPLIT-LABEL: agent_one_as_acquire_fence:
995 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
996 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
997 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc1
998 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1000 ; GFX940-TGSPLIT-LABEL: agent_one_as_acquire_fence:
1001 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1002 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1003 ; GFX940-TGSPLIT-NEXT: buffer_inv sc1
1004 ; GFX940-TGSPLIT-NEXT: s_endpgm
1006 ; GFX11-WGP-LABEL: agent_one_as_acquire_fence:
1007 ; GFX11-WGP: ; %bb.0: ; %entry
1008 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1009 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1010 ; GFX11-WGP-NEXT: buffer_gl1_inv
1011 ; GFX11-WGP-NEXT: buffer_gl0_inv
1012 ; GFX11-WGP-NEXT: s_endpgm
1014 ; GFX11-CU-LABEL: agent_one_as_acquire_fence:
1015 ; GFX11-CU: ; %bb.0: ; %entry
1016 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1017 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1018 ; GFX11-CU-NEXT: buffer_gl1_inv
1019 ; GFX11-CU-NEXT: buffer_gl0_inv
1020 ; GFX11-CU-NEXT: s_endpgm
1022 ; GFX12-WGP-LABEL: agent_one_as_acquire_fence:
1023 ; GFX12-WGP: ; %bb.0: ; %entry
1024 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1025 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1026 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_DEV
1027 ; GFX12-WGP-NEXT: s_endpgm
1029 ; GFX12-CU-LABEL: agent_one_as_acquire_fence:
1030 ; GFX12-CU: ; %bb.0: ; %entry
1031 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1032 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1033 ; GFX12-CU-NEXT: global_inv scope:SCOPE_DEV
1034 ; GFX12-CU-NEXT: s_endpgm
1036 fence syncscope("agent-one-as") acquire, !mmra !{!"amdgpu-as", !"global"}
1040 define amdgpu_kernel void @agent_one_as_release_fence() {
1041 ; GFX6-LABEL: agent_one_as_release_fence:
1042 ; GFX6: ; %bb.0: ; %entry
1043 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1044 ; GFX6-NEXT: s_endpgm
1046 ; GFX7-LABEL: agent_one_as_release_fence:
1047 ; GFX7: ; %bb.0: ; %entry
1048 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1049 ; GFX7-NEXT: s_endpgm
1051 ; GFX10-WGP-LABEL: agent_one_as_release_fence:
1052 ; GFX10-WGP: ; %bb.0: ; %entry
1053 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1054 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1055 ; GFX10-WGP-NEXT: s_endpgm
1057 ; GFX10-CU-LABEL: agent_one_as_release_fence:
1058 ; GFX10-CU: ; %bb.0: ; %entry
1059 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1060 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1061 ; GFX10-CU-NEXT: s_endpgm
1063 ; SKIP-CACHE-INV-LABEL: agent_one_as_release_fence:
1064 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1065 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1066 ; SKIP-CACHE-INV-NEXT: s_endpgm
1068 ; GFX90A-NOTTGSPLIT-LABEL: agent_one_as_release_fence:
1069 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1070 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1071 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1073 ; GFX90A-TGSPLIT-LABEL: agent_one_as_release_fence:
1074 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1075 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1076 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1078 ; GFX940-NOTTGSPLIT-LABEL: agent_one_as_release_fence:
1079 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1080 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc1
1081 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1082 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1084 ; GFX940-TGSPLIT-LABEL: agent_one_as_release_fence:
1085 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1086 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc1
1087 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1088 ; GFX940-TGSPLIT-NEXT: s_endpgm
1090 ; GFX11-WGP-LABEL: agent_one_as_release_fence:
1091 ; GFX11-WGP: ; %bb.0: ; %entry
1092 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1093 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1094 ; GFX11-WGP-NEXT: s_endpgm
1096 ; GFX11-CU-LABEL: agent_one_as_release_fence:
1097 ; GFX11-CU: ; %bb.0: ; %entry
1098 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1099 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1100 ; GFX11-CU-NEXT: s_endpgm
1102 ; GFX12-WGP-LABEL: agent_one_as_release_fence:
1103 ; GFX12-WGP: ; %bb.0: ; %entry
1104 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
1105 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
1106 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1107 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1108 ; GFX12-WGP-NEXT: s_endpgm
1110 ; GFX12-CU-LABEL: agent_one_as_release_fence:
1111 ; GFX12-CU: ; %bb.0: ; %entry
1112 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
1113 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
1114 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1115 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1116 ; GFX12-CU-NEXT: s_endpgm
1118 fence syncscope("agent-one-as") release, !mmra !{!"amdgpu-as", !"global"}
1122 define amdgpu_kernel void @agent_one_as_acq_rel_fence() {
1123 ; GFX6-LABEL: agent_one_as_acq_rel_fence:
1124 ; GFX6: ; %bb.0: ; %entry
1125 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1126 ; GFX6-NEXT: buffer_wbinvl1
1127 ; GFX6-NEXT: s_endpgm
1129 ; GFX7-LABEL: agent_one_as_acq_rel_fence:
1130 ; GFX7: ; %bb.0: ; %entry
1131 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1132 ; GFX7-NEXT: buffer_wbinvl1_vol
1133 ; GFX7-NEXT: s_endpgm
1135 ; GFX10-WGP-LABEL: agent_one_as_acq_rel_fence:
1136 ; GFX10-WGP: ; %bb.0: ; %entry
1137 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1138 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1139 ; GFX10-WGP-NEXT: buffer_gl1_inv
1140 ; GFX10-WGP-NEXT: buffer_gl0_inv
1141 ; GFX10-WGP-NEXT: s_endpgm
1143 ; GFX10-CU-LABEL: agent_one_as_acq_rel_fence:
1144 ; GFX10-CU: ; %bb.0: ; %entry
1145 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1146 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1147 ; GFX10-CU-NEXT: buffer_gl1_inv
1148 ; GFX10-CU-NEXT: buffer_gl0_inv
1149 ; GFX10-CU-NEXT: s_endpgm
1151 ; SKIP-CACHE-INV-LABEL: agent_one_as_acq_rel_fence:
1152 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1153 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1154 ; SKIP-CACHE-INV-NEXT: s_endpgm
1156 ; GFX90A-NOTTGSPLIT-LABEL: agent_one_as_acq_rel_fence:
1157 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1158 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1159 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
1160 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1162 ; GFX90A-TGSPLIT-LABEL: agent_one_as_acq_rel_fence:
1163 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1164 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1165 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
1166 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1168 ; GFX940-NOTTGSPLIT-LABEL: agent_one_as_acq_rel_fence:
1169 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1170 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc1
1171 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1172 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc1
1173 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1175 ; GFX940-TGSPLIT-LABEL: agent_one_as_acq_rel_fence:
1176 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1177 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc1
1178 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1179 ; GFX940-TGSPLIT-NEXT: buffer_inv sc1
1180 ; GFX940-TGSPLIT-NEXT: s_endpgm
1182 ; GFX11-WGP-LABEL: agent_one_as_acq_rel_fence:
1183 ; GFX11-WGP: ; %bb.0: ; %entry
1184 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1185 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1186 ; GFX11-WGP-NEXT: buffer_gl1_inv
1187 ; GFX11-WGP-NEXT: buffer_gl0_inv
1188 ; GFX11-WGP-NEXT: s_endpgm
1190 ; GFX11-CU-LABEL: agent_one_as_acq_rel_fence:
1191 ; GFX11-CU: ; %bb.0: ; %entry
1192 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1193 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1194 ; GFX11-CU-NEXT: buffer_gl1_inv
1195 ; GFX11-CU-NEXT: buffer_gl0_inv
1196 ; GFX11-CU-NEXT: s_endpgm
1198 ; GFX12-WGP-LABEL: agent_one_as_acq_rel_fence:
1199 ; GFX12-WGP: ; %bb.0: ; %entry
1200 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
1201 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
1202 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1203 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1204 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_DEV
1205 ; GFX12-WGP-NEXT: s_endpgm
1207 ; GFX12-CU-LABEL: agent_one_as_acq_rel_fence:
1208 ; GFX12-CU: ; %bb.0: ; %entry
1209 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
1210 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
1211 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1212 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1213 ; GFX12-CU-NEXT: global_inv scope:SCOPE_DEV
1214 ; GFX12-CU-NEXT: s_endpgm
1216 fence syncscope("agent-one-as") acq_rel, !mmra !{!"amdgpu-as", !"global"}
1220 define amdgpu_kernel void @agent_one_as_seq_cst_fence() {
1221 ; GFX6-LABEL: agent_one_as_seq_cst_fence:
1222 ; GFX6: ; %bb.0: ; %entry
1223 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1224 ; GFX6-NEXT: buffer_wbinvl1
1225 ; GFX6-NEXT: s_endpgm
1227 ; GFX7-LABEL: agent_one_as_seq_cst_fence:
1228 ; GFX7: ; %bb.0: ; %entry
1229 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1230 ; GFX7-NEXT: buffer_wbinvl1_vol
1231 ; GFX7-NEXT: s_endpgm
1233 ; GFX10-WGP-LABEL: agent_one_as_seq_cst_fence:
1234 ; GFX10-WGP: ; %bb.0: ; %entry
1235 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1236 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1237 ; GFX10-WGP-NEXT: buffer_gl1_inv
1238 ; GFX10-WGP-NEXT: buffer_gl0_inv
1239 ; GFX10-WGP-NEXT: s_endpgm
1241 ; GFX10-CU-LABEL: agent_one_as_seq_cst_fence:
1242 ; GFX10-CU: ; %bb.0: ; %entry
1243 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1244 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1245 ; GFX10-CU-NEXT: buffer_gl1_inv
1246 ; GFX10-CU-NEXT: buffer_gl0_inv
1247 ; GFX10-CU-NEXT: s_endpgm
1249 ; SKIP-CACHE-INV-LABEL: agent_one_as_seq_cst_fence:
1250 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1251 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1252 ; SKIP-CACHE-INV-NEXT: s_endpgm
1254 ; GFX90A-NOTTGSPLIT-LABEL: agent_one_as_seq_cst_fence:
1255 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1256 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1257 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
1258 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1260 ; GFX90A-TGSPLIT-LABEL: agent_one_as_seq_cst_fence:
1261 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1262 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1263 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
1264 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1266 ; GFX940-NOTTGSPLIT-LABEL: agent_one_as_seq_cst_fence:
1267 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1268 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc1
1269 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1270 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc1
1271 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1273 ; GFX940-TGSPLIT-LABEL: agent_one_as_seq_cst_fence:
1274 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1275 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc1
1276 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1277 ; GFX940-TGSPLIT-NEXT: buffer_inv sc1
1278 ; GFX940-TGSPLIT-NEXT: s_endpgm
1280 ; GFX11-WGP-LABEL: agent_one_as_seq_cst_fence:
1281 ; GFX11-WGP: ; %bb.0: ; %entry
1282 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1283 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1284 ; GFX11-WGP-NEXT: buffer_gl1_inv
1285 ; GFX11-WGP-NEXT: buffer_gl0_inv
1286 ; GFX11-WGP-NEXT: s_endpgm
1288 ; GFX11-CU-LABEL: agent_one_as_seq_cst_fence:
1289 ; GFX11-CU: ; %bb.0: ; %entry
1290 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1291 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1292 ; GFX11-CU-NEXT: buffer_gl1_inv
1293 ; GFX11-CU-NEXT: buffer_gl0_inv
1294 ; GFX11-CU-NEXT: s_endpgm
1296 ; GFX12-WGP-LABEL: agent_one_as_seq_cst_fence:
1297 ; GFX12-WGP: ; %bb.0: ; %entry
1298 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
1299 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
1300 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1301 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1302 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_DEV
1303 ; GFX12-WGP-NEXT: s_endpgm
1305 ; GFX12-CU-LABEL: agent_one_as_seq_cst_fence:
1306 ; GFX12-CU: ; %bb.0: ; %entry
1307 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
1308 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
1309 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1310 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1311 ; GFX12-CU-NEXT: global_inv scope:SCOPE_DEV
1312 ; GFX12-CU-NEXT: s_endpgm
1314 fence syncscope("agent-one-as") seq_cst, !mmra !{!"amdgpu-as", !"global"}
1318 define amdgpu_kernel void @system_acquire_fence() {
1319 ; GFX6-LABEL: system_acquire_fence:
1320 ; GFX6: ; %bb.0: ; %entry
1321 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1322 ; GFX6-NEXT: buffer_wbinvl1
1323 ; GFX6-NEXT: s_endpgm
1325 ; GFX7-LABEL: system_acquire_fence:
1326 ; GFX7: ; %bb.0: ; %entry
1327 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1328 ; GFX7-NEXT: buffer_wbinvl1_vol
1329 ; GFX7-NEXT: s_endpgm
1331 ; GFX10-WGP-LABEL: system_acquire_fence:
1332 ; GFX10-WGP: ; %bb.0: ; %entry
1333 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1334 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1335 ; GFX10-WGP-NEXT: buffer_gl1_inv
1336 ; GFX10-WGP-NEXT: buffer_gl0_inv
1337 ; GFX10-WGP-NEXT: s_endpgm
1339 ; GFX10-CU-LABEL: system_acquire_fence:
1340 ; GFX10-CU: ; %bb.0: ; %entry
1341 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1342 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1343 ; GFX10-CU-NEXT: buffer_gl1_inv
1344 ; GFX10-CU-NEXT: buffer_gl0_inv
1345 ; GFX10-CU-NEXT: s_endpgm
1347 ; SKIP-CACHE-INV-LABEL: system_acquire_fence:
1348 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1349 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1350 ; SKIP-CACHE-INV-NEXT: s_endpgm
1352 ; GFX90A-NOTTGSPLIT-LABEL: system_acquire_fence:
1353 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1354 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1355 ; GFX90A-NOTTGSPLIT-NEXT: buffer_invl2
1356 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
1357 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1359 ; GFX90A-TGSPLIT-LABEL: system_acquire_fence:
1360 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1361 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1362 ; GFX90A-TGSPLIT-NEXT: buffer_invl2
1363 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
1364 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1366 ; GFX940-NOTTGSPLIT-LABEL: system_acquire_fence:
1367 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1368 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1369 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc0 sc1
1370 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1372 ; GFX940-TGSPLIT-LABEL: system_acquire_fence:
1373 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1374 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1375 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0 sc1
1376 ; GFX940-TGSPLIT-NEXT: s_endpgm
1378 ; GFX11-WGP-LABEL: system_acquire_fence:
1379 ; GFX11-WGP: ; %bb.0: ; %entry
1380 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1381 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1382 ; GFX11-WGP-NEXT: buffer_gl1_inv
1383 ; GFX11-WGP-NEXT: buffer_gl0_inv
1384 ; GFX11-WGP-NEXT: s_endpgm
1386 ; GFX11-CU-LABEL: system_acquire_fence:
1387 ; GFX11-CU: ; %bb.0: ; %entry
1388 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1389 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1390 ; GFX11-CU-NEXT: buffer_gl1_inv
1391 ; GFX11-CU-NEXT: buffer_gl0_inv
1392 ; GFX11-CU-NEXT: s_endpgm
1394 ; GFX12-WGP-LABEL: system_acquire_fence:
1395 ; GFX12-WGP: ; %bb.0: ; %entry
1396 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1397 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1398 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SYS
1399 ; GFX12-WGP-NEXT: s_endpgm
1401 ; GFX12-CU-LABEL: system_acquire_fence:
1402 ; GFX12-CU: ; %bb.0: ; %entry
1403 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1404 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1405 ; GFX12-CU-NEXT: global_inv scope:SCOPE_SYS
1406 ; GFX12-CU-NEXT: s_endpgm
1408 fence acquire, !mmra !{!"amdgpu-as", !"global"}
1412 define amdgpu_kernel void @system_release_fence() {
1413 ; GFX6-LABEL: system_release_fence:
1414 ; GFX6: ; %bb.0: ; %entry
1415 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1416 ; GFX6-NEXT: s_endpgm
1418 ; GFX7-LABEL: system_release_fence:
1419 ; GFX7: ; %bb.0: ; %entry
1420 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1421 ; GFX7-NEXT: s_endpgm
1423 ; GFX10-WGP-LABEL: system_release_fence:
1424 ; GFX10-WGP: ; %bb.0: ; %entry
1425 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1426 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1427 ; GFX10-WGP-NEXT: s_endpgm
1429 ; GFX10-CU-LABEL: system_release_fence:
1430 ; GFX10-CU: ; %bb.0: ; %entry
1431 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1432 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1433 ; GFX10-CU-NEXT: s_endpgm
1435 ; SKIP-CACHE-INV-LABEL: system_release_fence:
1436 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1437 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1438 ; SKIP-CACHE-INV-NEXT: s_endpgm
1440 ; GFX90A-NOTTGSPLIT-LABEL: system_release_fence:
1441 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1442 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbl2
1443 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1444 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1446 ; GFX90A-TGSPLIT-LABEL: system_release_fence:
1447 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1448 ; GFX90A-TGSPLIT-NEXT: buffer_wbl2
1449 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1450 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1452 ; GFX940-NOTTGSPLIT-LABEL: system_release_fence:
1453 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1454 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1455 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1456 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1458 ; GFX940-TGSPLIT-LABEL: system_release_fence:
1459 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1460 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1461 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1462 ; GFX940-TGSPLIT-NEXT: s_endpgm
1464 ; GFX11-WGP-LABEL: system_release_fence:
1465 ; GFX11-WGP: ; %bb.0: ; %entry
1466 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1467 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1468 ; GFX11-WGP-NEXT: s_endpgm
1470 ; GFX11-CU-LABEL: system_release_fence:
1471 ; GFX11-CU: ; %bb.0: ; %entry
1472 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1473 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1474 ; GFX11-CU-NEXT: s_endpgm
1476 ; GFX12-WGP-LABEL: system_release_fence:
1477 ; GFX12-WGP: ; %bb.0: ; %entry
1478 ; GFX12-WGP-NEXT: global_wb scope:SCOPE_SYS
1479 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
1480 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
1481 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1482 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1483 ; GFX12-WGP-NEXT: s_endpgm
1485 ; GFX12-CU-LABEL: system_release_fence:
1486 ; GFX12-CU: ; %bb.0: ; %entry
1487 ; GFX12-CU-NEXT: global_wb scope:SCOPE_SYS
1488 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
1489 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
1490 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1491 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1492 ; GFX12-CU-NEXT: s_endpgm
1494 fence release, !mmra !{!"amdgpu-as", !"global"}
1498 define amdgpu_kernel void @system_acq_rel_fence() {
1499 ; GFX6-LABEL: system_acq_rel_fence:
1500 ; GFX6: ; %bb.0: ; %entry
1501 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1502 ; GFX6-NEXT: buffer_wbinvl1
1503 ; GFX6-NEXT: s_endpgm
1505 ; GFX7-LABEL: system_acq_rel_fence:
1506 ; GFX7: ; %bb.0: ; %entry
1507 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1508 ; GFX7-NEXT: buffer_wbinvl1_vol
1509 ; GFX7-NEXT: s_endpgm
1511 ; GFX10-WGP-LABEL: system_acq_rel_fence:
1512 ; GFX10-WGP: ; %bb.0: ; %entry
1513 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1514 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1515 ; GFX10-WGP-NEXT: buffer_gl1_inv
1516 ; GFX10-WGP-NEXT: buffer_gl0_inv
1517 ; GFX10-WGP-NEXT: s_endpgm
1519 ; GFX10-CU-LABEL: system_acq_rel_fence:
1520 ; GFX10-CU: ; %bb.0: ; %entry
1521 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1522 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1523 ; GFX10-CU-NEXT: buffer_gl1_inv
1524 ; GFX10-CU-NEXT: buffer_gl0_inv
1525 ; GFX10-CU-NEXT: s_endpgm
1527 ; SKIP-CACHE-INV-LABEL: system_acq_rel_fence:
1528 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1529 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1530 ; SKIP-CACHE-INV-NEXT: s_endpgm
1532 ; GFX90A-NOTTGSPLIT-LABEL: system_acq_rel_fence:
1533 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1534 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbl2
1535 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1536 ; GFX90A-NOTTGSPLIT-NEXT: buffer_invl2
1537 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
1538 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1540 ; GFX90A-TGSPLIT-LABEL: system_acq_rel_fence:
1541 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1542 ; GFX90A-TGSPLIT-NEXT: buffer_wbl2
1543 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1544 ; GFX90A-TGSPLIT-NEXT: buffer_invl2
1545 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
1546 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1548 ; GFX940-NOTTGSPLIT-LABEL: system_acq_rel_fence:
1549 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1550 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1551 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1552 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc0 sc1
1553 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1555 ; GFX940-TGSPLIT-LABEL: system_acq_rel_fence:
1556 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1557 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1558 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1559 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0 sc1
1560 ; GFX940-TGSPLIT-NEXT: s_endpgm
1562 ; GFX11-WGP-LABEL: system_acq_rel_fence:
1563 ; GFX11-WGP: ; %bb.0: ; %entry
1564 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1565 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1566 ; GFX11-WGP-NEXT: buffer_gl1_inv
1567 ; GFX11-WGP-NEXT: buffer_gl0_inv
1568 ; GFX11-WGP-NEXT: s_endpgm
1570 ; GFX11-CU-LABEL: system_acq_rel_fence:
1571 ; GFX11-CU: ; %bb.0: ; %entry
1572 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1573 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1574 ; GFX11-CU-NEXT: buffer_gl1_inv
1575 ; GFX11-CU-NEXT: buffer_gl0_inv
1576 ; GFX11-CU-NEXT: s_endpgm
1578 ; GFX12-WGP-LABEL: system_acq_rel_fence:
1579 ; GFX12-WGP: ; %bb.0: ; %entry
1580 ; GFX12-WGP-NEXT: global_wb scope:SCOPE_SYS
1581 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
1582 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
1583 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1584 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1585 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SYS
1586 ; GFX12-WGP-NEXT: s_endpgm
1588 ; GFX12-CU-LABEL: system_acq_rel_fence:
1589 ; GFX12-CU: ; %bb.0: ; %entry
1590 ; GFX12-CU-NEXT: global_wb scope:SCOPE_SYS
1591 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
1592 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
1593 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1594 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1595 ; GFX12-CU-NEXT: global_inv scope:SCOPE_SYS
1596 ; GFX12-CU-NEXT: s_endpgm
1598 fence acq_rel, !mmra !{!"amdgpu-as", !"global"}
1602 define amdgpu_kernel void @system_seq_cst_fence() {
1603 ; GFX6-LABEL: system_seq_cst_fence:
1604 ; GFX6: ; %bb.0: ; %entry
1605 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1606 ; GFX6-NEXT: buffer_wbinvl1
1607 ; GFX6-NEXT: s_endpgm
1609 ; GFX7-LABEL: system_seq_cst_fence:
1610 ; GFX7: ; %bb.0: ; %entry
1611 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1612 ; GFX7-NEXT: buffer_wbinvl1_vol
1613 ; GFX7-NEXT: s_endpgm
1615 ; GFX10-WGP-LABEL: system_seq_cst_fence:
1616 ; GFX10-WGP: ; %bb.0: ; %entry
1617 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1618 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1619 ; GFX10-WGP-NEXT: buffer_gl1_inv
1620 ; GFX10-WGP-NEXT: buffer_gl0_inv
1621 ; GFX10-WGP-NEXT: s_endpgm
1623 ; GFX10-CU-LABEL: system_seq_cst_fence:
1624 ; GFX10-CU: ; %bb.0: ; %entry
1625 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1626 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1627 ; GFX10-CU-NEXT: buffer_gl1_inv
1628 ; GFX10-CU-NEXT: buffer_gl0_inv
1629 ; GFX10-CU-NEXT: s_endpgm
1631 ; SKIP-CACHE-INV-LABEL: system_seq_cst_fence:
1632 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1633 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1634 ; SKIP-CACHE-INV-NEXT: s_endpgm
1636 ; GFX90A-NOTTGSPLIT-LABEL: system_seq_cst_fence:
1637 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1638 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbl2
1639 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1640 ; GFX90A-NOTTGSPLIT-NEXT: buffer_invl2
1641 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
1642 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1644 ; GFX90A-TGSPLIT-LABEL: system_seq_cst_fence:
1645 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1646 ; GFX90A-TGSPLIT-NEXT: buffer_wbl2
1647 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1648 ; GFX90A-TGSPLIT-NEXT: buffer_invl2
1649 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
1650 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1652 ; GFX940-NOTTGSPLIT-LABEL: system_seq_cst_fence:
1653 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1654 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1655 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1656 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc0 sc1
1657 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1659 ; GFX940-TGSPLIT-LABEL: system_seq_cst_fence:
1660 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1661 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1662 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1663 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0 sc1
1664 ; GFX940-TGSPLIT-NEXT: s_endpgm
1666 ; GFX11-WGP-LABEL: system_seq_cst_fence:
1667 ; GFX11-WGP: ; %bb.0: ; %entry
1668 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1669 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1670 ; GFX11-WGP-NEXT: buffer_gl1_inv
1671 ; GFX11-WGP-NEXT: buffer_gl0_inv
1672 ; GFX11-WGP-NEXT: s_endpgm
1674 ; GFX11-CU-LABEL: system_seq_cst_fence:
1675 ; GFX11-CU: ; %bb.0: ; %entry
1676 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1677 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1678 ; GFX11-CU-NEXT: buffer_gl1_inv
1679 ; GFX11-CU-NEXT: buffer_gl0_inv
1680 ; GFX11-CU-NEXT: s_endpgm
1682 ; GFX12-WGP-LABEL: system_seq_cst_fence:
1683 ; GFX12-WGP: ; %bb.0: ; %entry
1684 ; GFX12-WGP-NEXT: global_wb scope:SCOPE_SYS
1685 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
1686 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
1687 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1688 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1689 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SYS
1690 ; GFX12-WGP-NEXT: s_endpgm
1692 ; GFX12-CU-LABEL: system_seq_cst_fence:
1693 ; GFX12-CU: ; %bb.0: ; %entry
1694 ; GFX12-CU-NEXT: global_wb scope:SCOPE_SYS
1695 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
1696 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
1697 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1698 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1699 ; GFX12-CU-NEXT: global_inv scope:SCOPE_SYS
1700 ; GFX12-CU-NEXT: s_endpgm
1702 fence seq_cst, !mmra !{!"amdgpu-as", !"global"}
1706 define amdgpu_kernel void @system_one_as_acquire_fence() {
1707 ; GFX6-LABEL: system_one_as_acquire_fence:
1708 ; GFX6: ; %bb.0: ; %entry
1709 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1710 ; GFX6-NEXT: buffer_wbinvl1
1711 ; GFX6-NEXT: s_endpgm
1713 ; GFX7-LABEL: system_one_as_acquire_fence:
1714 ; GFX7: ; %bb.0: ; %entry
1715 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1716 ; GFX7-NEXT: buffer_wbinvl1_vol
1717 ; GFX7-NEXT: s_endpgm
1719 ; GFX10-WGP-LABEL: system_one_as_acquire_fence:
1720 ; GFX10-WGP: ; %bb.0: ; %entry
1721 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1722 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1723 ; GFX10-WGP-NEXT: buffer_gl1_inv
1724 ; GFX10-WGP-NEXT: buffer_gl0_inv
1725 ; GFX10-WGP-NEXT: s_endpgm
1727 ; GFX10-CU-LABEL: system_one_as_acquire_fence:
1728 ; GFX10-CU: ; %bb.0: ; %entry
1729 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1730 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1731 ; GFX10-CU-NEXT: buffer_gl1_inv
1732 ; GFX10-CU-NEXT: buffer_gl0_inv
1733 ; GFX10-CU-NEXT: s_endpgm
1735 ; SKIP-CACHE-INV-LABEL: system_one_as_acquire_fence:
1736 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1737 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1738 ; SKIP-CACHE-INV-NEXT: s_endpgm
1740 ; GFX90A-NOTTGSPLIT-LABEL: system_one_as_acquire_fence:
1741 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1742 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1743 ; GFX90A-NOTTGSPLIT-NEXT: buffer_invl2
1744 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
1745 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1747 ; GFX90A-TGSPLIT-LABEL: system_one_as_acquire_fence:
1748 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1749 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1750 ; GFX90A-TGSPLIT-NEXT: buffer_invl2
1751 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
1752 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1754 ; GFX940-NOTTGSPLIT-LABEL: system_one_as_acquire_fence:
1755 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1756 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1757 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc0 sc1
1758 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1760 ; GFX940-TGSPLIT-LABEL: system_one_as_acquire_fence:
1761 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1762 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1763 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0 sc1
1764 ; GFX940-TGSPLIT-NEXT: s_endpgm
1766 ; GFX11-WGP-LABEL: system_one_as_acquire_fence:
1767 ; GFX11-WGP: ; %bb.0: ; %entry
1768 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1769 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1770 ; GFX11-WGP-NEXT: buffer_gl1_inv
1771 ; GFX11-WGP-NEXT: buffer_gl0_inv
1772 ; GFX11-WGP-NEXT: s_endpgm
1774 ; GFX11-CU-LABEL: system_one_as_acquire_fence:
1775 ; GFX11-CU: ; %bb.0: ; %entry
1776 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1777 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1778 ; GFX11-CU-NEXT: buffer_gl1_inv
1779 ; GFX11-CU-NEXT: buffer_gl0_inv
1780 ; GFX11-CU-NEXT: s_endpgm
1782 ; GFX12-WGP-LABEL: system_one_as_acquire_fence:
1783 ; GFX12-WGP: ; %bb.0: ; %entry
1784 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1785 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1786 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SYS
1787 ; GFX12-WGP-NEXT: s_endpgm
1789 ; GFX12-CU-LABEL: system_one_as_acquire_fence:
1790 ; GFX12-CU: ; %bb.0: ; %entry
1791 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1792 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1793 ; GFX12-CU-NEXT: global_inv scope:SCOPE_SYS
1794 ; GFX12-CU-NEXT: s_endpgm
1796 fence syncscope("one-as") acquire, !mmra !{!"amdgpu-as", !"global"}
1800 define amdgpu_kernel void @system_one_as_release_fence() {
1801 ; GFX6-LABEL: system_one_as_release_fence:
1802 ; GFX6: ; %bb.0: ; %entry
1803 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1804 ; GFX6-NEXT: s_endpgm
1806 ; GFX7-LABEL: system_one_as_release_fence:
1807 ; GFX7: ; %bb.0: ; %entry
1808 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1809 ; GFX7-NEXT: s_endpgm
1811 ; GFX10-WGP-LABEL: system_one_as_release_fence:
1812 ; GFX10-WGP: ; %bb.0: ; %entry
1813 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1814 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1815 ; GFX10-WGP-NEXT: s_endpgm
1817 ; GFX10-CU-LABEL: system_one_as_release_fence:
1818 ; GFX10-CU: ; %bb.0: ; %entry
1819 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1820 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1821 ; GFX10-CU-NEXT: s_endpgm
1823 ; SKIP-CACHE-INV-LABEL: system_one_as_release_fence:
1824 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1825 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1826 ; SKIP-CACHE-INV-NEXT: s_endpgm
1828 ; GFX90A-NOTTGSPLIT-LABEL: system_one_as_release_fence:
1829 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1830 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbl2
1831 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1832 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1834 ; GFX90A-TGSPLIT-LABEL: system_one_as_release_fence:
1835 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1836 ; GFX90A-TGSPLIT-NEXT: buffer_wbl2
1837 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1838 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1840 ; GFX940-NOTTGSPLIT-LABEL: system_one_as_release_fence:
1841 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1842 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1843 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1844 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1846 ; GFX940-TGSPLIT-LABEL: system_one_as_release_fence:
1847 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1848 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1849 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1850 ; GFX940-TGSPLIT-NEXT: s_endpgm
1852 ; GFX11-WGP-LABEL: system_one_as_release_fence:
1853 ; GFX11-WGP: ; %bb.0: ; %entry
1854 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1855 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1856 ; GFX11-WGP-NEXT: s_endpgm
1858 ; GFX11-CU-LABEL: system_one_as_release_fence:
1859 ; GFX11-CU: ; %bb.0: ; %entry
1860 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1861 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1862 ; GFX11-CU-NEXT: s_endpgm
1864 ; GFX12-WGP-LABEL: system_one_as_release_fence:
1865 ; GFX12-WGP: ; %bb.0: ; %entry
1866 ; GFX12-WGP-NEXT: global_wb scope:SCOPE_SYS
1867 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
1868 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
1869 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1870 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1871 ; GFX12-WGP-NEXT: s_endpgm
1873 ; GFX12-CU-LABEL: system_one_as_release_fence:
1874 ; GFX12-CU: ; %bb.0: ; %entry
1875 ; GFX12-CU-NEXT: global_wb scope:SCOPE_SYS
1876 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
1877 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
1878 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1879 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1880 ; GFX12-CU-NEXT: s_endpgm
1882 fence syncscope("one-as") release, !mmra !{!"amdgpu-as", !"global"}
1886 define amdgpu_kernel void @system_one_as_acq_rel_fence() {
1887 ; GFX6-LABEL: system_one_as_acq_rel_fence:
1888 ; GFX6: ; %bb.0: ; %entry
1889 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1890 ; GFX6-NEXT: buffer_wbinvl1
1891 ; GFX6-NEXT: s_endpgm
1893 ; GFX7-LABEL: system_one_as_acq_rel_fence:
1894 ; GFX7: ; %bb.0: ; %entry
1895 ; GFX7-NEXT: s_waitcnt vmcnt(0)
1896 ; GFX7-NEXT: buffer_wbinvl1_vol
1897 ; GFX7-NEXT: s_endpgm
1899 ; GFX10-WGP-LABEL: system_one_as_acq_rel_fence:
1900 ; GFX10-WGP: ; %bb.0: ; %entry
1901 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
1902 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1903 ; GFX10-WGP-NEXT: buffer_gl1_inv
1904 ; GFX10-WGP-NEXT: buffer_gl0_inv
1905 ; GFX10-WGP-NEXT: s_endpgm
1907 ; GFX10-CU-LABEL: system_one_as_acq_rel_fence:
1908 ; GFX10-CU: ; %bb.0: ; %entry
1909 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
1910 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
1911 ; GFX10-CU-NEXT: buffer_gl1_inv
1912 ; GFX10-CU-NEXT: buffer_gl0_inv
1913 ; GFX10-CU-NEXT: s_endpgm
1915 ; SKIP-CACHE-INV-LABEL: system_one_as_acq_rel_fence:
1916 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
1917 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
1918 ; SKIP-CACHE-INV-NEXT: s_endpgm
1920 ; GFX90A-NOTTGSPLIT-LABEL: system_one_as_acq_rel_fence:
1921 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
1922 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbl2
1923 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1924 ; GFX90A-NOTTGSPLIT-NEXT: buffer_invl2
1925 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
1926 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
1928 ; GFX90A-TGSPLIT-LABEL: system_one_as_acq_rel_fence:
1929 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
1930 ; GFX90A-TGSPLIT-NEXT: buffer_wbl2
1931 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1932 ; GFX90A-TGSPLIT-NEXT: buffer_invl2
1933 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
1934 ; GFX90A-TGSPLIT-NEXT: s_endpgm
1936 ; GFX940-NOTTGSPLIT-LABEL: system_one_as_acq_rel_fence:
1937 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
1938 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1939 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
1940 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc0 sc1
1941 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
1943 ; GFX940-TGSPLIT-LABEL: system_one_as_acq_rel_fence:
1944 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
1945 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc0 sc1
1946 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
1947 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0 sc1
1948 ; GFX940-TGSPLIT-NEXT: s_endpgm
1950 ; GFX11-WGP-LABEL: system_one_as_acq_rel_fence:
1951 ; GFX11-WGP: ; %bb.0: ; %entry
1952 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
1953 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
1954 ; GFX11-WGP-NEXT: buffer_gl1_inv
1955 ; GFX11-WGP-NEXT: buffer_gl0_inv
1956 ; GFX11-WGP-NEXT: s_endpgm
1958 ; GFX11-CU-LABEL: system_one_as_acq_rel_fence:
1959 ; GFX11-CU: ; %bb.0: ; %entry
1960 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
1961 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
1962 ; GFX11-CU-NEXT: buffer_gl1_inv
1963 ; GFX11-CU-NEXT: buffer_gl0_inv
1964 ; GFX11-CU-NEXT: s_endpgm
1966 ; GFX12-WGP-LABEL: system_one_as_acq_rel_fence:
1967 ; GFX12-WGP: ; %bb.0: ; %entry
1968 ; GFX12-WGP-NEXT: global_wb scope:SCOPE_SYS
1969 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
1970 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
1971 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
1972 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
1973 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SYS
1974 ; GFX12-WGP-NEXT: s_endpgm
1976 ; GFX12-CU-LABEL: system_one_as_acq_rel_fence:
1977 ; GFX12-CU: ; %bb.0: ; %entry
1978 ; GFX12-CU-NEXT: global_wb scope:SCOPE_SYS
1979 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
1980 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
1981 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
1982 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
1983 ; GFX12-CU-NEXT: global_inv scope:SCOPE_SYS
1984 ; GFX12-CU-NEXT: s_endpgm
1986 fence syncscope("one-as") acq_rel, !mmra !{!"amdgpu-as", !"global"}
1990 define amdgpu_kernel void @system_one_as_seq_cst_fence() {
1991 ; GFX6-LABEL: system_one_as_seq_cst_fence:
1992 ; GFX6: ; %bb.0: ; %entry
1993 ; GFX6-NEXT: s_waitcnt vmcnt(0)
1994 ; GFX6-NEXT: buffer_wbinvl1
1995 ; GFX6-NEXT: s_endpgm
1997 ; GFX7-LABEL: system_one_as_seq_cst_fence:
1998 ; GFX7: ; %bb.0: ; %entry
1999 ; GFX7-NEXT: s_waitcnt vmcnt(0)
2000 ; GFX7-NEXT: buffer_wbinvl1_vol
2001 ; GFX7-NEXT: s_endpgm
2003 ; GFX10-WGP-LABEL: system_one_as_seq_cst_fence:
2004 ; GFX10-WGP: ; %bb.0: ; %entry
2005 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)
2006 ; GFX10-WGP-NEXT: s_waitcnt_vscnt null, 0x0
2007 ; GFX10-WGP-NEXT: buffer_gl1_inv
2008 ; GFX10-WGP-NEXT: buffer_gl0_inv
2009 ; GFX10-WGP-NEXT: s_endpgm
2011 ; GFX10-CU-LABEL: system_one_as_seq_cst_fence:
2012 ; GFX10-CU: ; %bb.0: ; %entry
2013 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
2014 ; GFX10-CU-NEXT: s_waitcnt_vscnt null, 0x0
2015 ; GFX10-CU-NEXT: buffer_gl1_inv
2016 ; GFX10-CU-NEXT: buffer_gl0_inv
2017 ; GFX10-CU-NEXT: s_endpgm
2019 ; SKIP-CACHE-INV-LABEL: system_one_as_seq_cst_fence:
2020 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
2021 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)
2022 ; SKIP-CACHE-INV-NEXT: s_endpgm
2024 ; GFX90A-NOTTGSPLIT-LABEL: system_one_as_seq_cst_fence:
2025 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
2026 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbl2
2027 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
2028 ; GFX90A-NOTTGSPLIT-NEXT: buffer_invl2
2029 ; GFX90A-NOTTGSPLIT-NEXT: buffer_wbinvl1_vol
2030 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
2032 ; GFX90A-TGSPLIT-LABEL: system_one_as_seq_cst_fence:
2033 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
2034 ; GFX90A-TGSPLIT-NEXT: buffer_wbl2
2035 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
2036 ; GFX90A-TGSPLIT-NEXT: buffer_invl2
2037 ; GFX90A-TGSPLIT-NEXT: buffer_wbinvl1_vol
2038 ; GFX90A-TGSPLIT-NEXT: s_endpgm
2040 ; GFX940-NOTTGSPLIT-LABEL: system_one_as_seq_cst_fence:
2041 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
2042 ; GFX940-NOTTGSPLIT-NEXT: buffer_wbl2 sc0 sc1
2043 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)
2044 ; GFX940-NOTTGSPLIT-NEXT: buffer_inv sc0 sc1
2045 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
2047 ; GFX940-TGSPLIT-LABEL: system_one_as_seq_cst_fence:
2048 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
2049 ; GFX940-TGSPLIT-NEXT: buffer_wbl2 sc0 sc1
2050 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
2051 ; GFX940-TGSPLIT-NEXT: buffer_inv sc0 sc1
2052 ; GFX940-TGSPLIT-NEXT: s_endpgm
2054 ; GFX11-WGP-LABEL: system_one_as_seq_cst_fence:
2055 ; GFX11-WGP: ; %bb.0: ; %entry
2056 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)
2057 ; GFX11-WGP-NEXT: s_waitcnt_vscnt null, 0x0
2058 ; GFX11-WGP-NEXT: buffer_gl1_inv
2059 ; GFX11-WGP-NEXT: buffer_gl0_inv
2060 ; GFX11-WGP-NEXT: s_endpgm
2062 ; GFX11-CU-LABEL: system_one_as_seq_cst_fence:
2063 ; GFX11-CU: ; %bb.0: ; %entry
2064 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
2065 ; GFX11-CU-NEXT: s_waitcnt_vscnt null, 0x0
2066 ; GFX11-CU-NEXT: buffer_gl1_inv
2067 ; GFX11-CU-NEXT: buffer_gl0_inv
2068 ; GFX11-CU-NEXT: s_endpgm
2070 ; GFX12-WGP-LABEL: system_one_as_seq_cst_fence:
2071 ; GFX12-WGP: ; %bb.0: ; %entry
2072 ; GFX12-WGP-NEXT: global_wb scope:SCOPE_SYS
2073 ; GFX12-WGP-NEXT: s_wait_bvhcnt 0x0
2074 ; GFX12-WGP-NEXT: s_wait_samplecnt 0x0
2075 ; GFX12-WGP-NEXT: s_wait_loadcnt 0x0
2076 ; GFX12-WGP-NEXT: s_wait_storecnt 0x0
2077 ; GFX12-WGP-NEXT: global_inv scope:SCOPE_SYS
2078 ; GFX12-WGP-NEXT: s_endpgm
2080 ; GFX12-CU-LABEL: system_one_as_seq_cst_fence:
2081 ; GFX12-CU: ; %bb.0: ; %entry
2082 ; GFX12-CU-NEXT: global_wb scope:SCOPE_SYS
2083 ; GFX12-CU-NEXT: s_wait_bvhcnt 0x0
2084 ; GFX12-CU-NEXT: s_wait_samplecnt 0x0
2085 ; GFX12-CU-NEXT: s_wait_loadcnt 0x0
2086 ; GFX12-CU-NEXT: s_wait_storecnt 0x0
2087 ; GFX12-CU-NEXT: global_inv scope:SCOPE_SYS
2088 ; GFX12-CU-NEXT: s_endpgm
2090 fence syncscope("one-as") seq_cst, !mmra !{!"amdgpu-as", !"global"}