xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-fence.ll (revision 6548b6354d1d990e1c98736f5e7c3de876bedc8e)
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -verify-machineinstrs -stop-after=irtranslator < %s | FileCheck %s
3
4define amdgpu_kernel void @system_one_as_acquire() {
5  ; CHECK-LABEL: name: system_one_as_acquire
6  ; CHECK: bb.1 (%ir-block.0):
7  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
8  ; CHECK-NEXT: {{  $}}
9  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
10  ; CHECK-NEXT:   G_FENCE 4, 2
11  ; CHECK-NEXT:   S_ENDPGM 0
12  fence syncscope("one-as") acquire
13  ret void
14}
15
16define amdgpu_kernel void @system_one_as_release() {
17  ; CHECK-LABEL: name: system_one_as_release
18  ; CHECK: bb.1 (%ir-block.0):
19  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
20  ; CHECK-NEXT: {{  $}}
21  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
22  ; CHECK-NEXT:   G_FENCE 5, 2
23  ; CHECK-NEXT:   S_ENDPGM 0
24  fence syncscope("one-as") release
25  ret void
26}
27
28define amdgpu_kernel void @system_one_as_acq_rel() {
29  ; CHECK-LABEL: name: system_one_as_acq_rel
30  ; CHECK: bb.1 (%ir-block.0):
31  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
32  ; CHECK-NEXT: {{  $}}
33  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
34  ; CHECK-NEXT:   G_FENCE 6, 2
35  ; CHECK-NEXT:   S_ENDPGM 0
36  fence syncscope("one-as") acq_rel
37  ret void
38}
39
40define amdgpu_kernel void @system_one_as_seq_cst() {
41  ; CHECK-LABEL: name: system_one_as_seq_cst
42  ; CHECK: bb.1 (%ir-block.0):
43  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
44  ; CHECK-NEXT: {{  $}}
45  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
46  ; CHECK-NEXT:   G_FENCE 7, 2
47  ; CHECK-NEXT:   S_ENDPGM 0
48  fence syncscope("one-as") seq_cst
49  ret void
50}
51
52define amdgpu_kernel void @singlethread_one_as_acquire() {
53  ; CHECK-LABEL: name: singlethread_one_as_acquire
54  ; CHECK: bb.1 (%ir-block.0):
55  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
56  ; CHECK-NEXT: {{  $}}
57  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
58  ; CHECK-NEXT:   G_FENCE 4, 3
59  ; CHECK-NEXT:   S_ENDPGM 0
60  fence syncscope("singlethread-one-as") acquire
61  ret void
62}
63
64define amdgpu_kernel void @singlethread_one_as_release() {
65  ; CHECK-LABEL: name: singlethread_one_as_release
66  ; CHECK: bb.1 (%ir-block.0):
67  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
68  ; CHECK-NEXT: {{  $}}
69  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
70  ; CHECK-NEXT:   G_FENCE 5, 3
71  ; CHECK-NEXT:   S_ENDPGM 0
72  fence syncscope("singlethread-one-as") release
73  ret void
74}
75
76define amdgpu_kernel void @singlethread_one_as_acq_rel() {
77  ; CHECK-LABEL: name: singlethread_one_as_acq_rel
78  ; CHECK: bb.1 (%ir-block.0):
79  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
80  ; CHECK-NEXT: {{  $}}
81  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
82  ; CHECK-NEXT:   G_FENCE 6, 3
83  ; CHECK-NEXT:   S_ENDPGM 0
84  fence syncscope("singlethread-one-as") acq_rel
85  ret void
86}
87
88define amdgpu_kernel void @singlethread_one_as_seq_cst() {
89  ; CHECK-LABEL: name: singlethread_one_as_seq_cst
90  ; CHECK: bb.1 (%ir-block.0):
91  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
92  ; CHECK-NEXT: {{  $}}
93  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
94  ; CHECK-NEXT:   G_FENCE 7, 3
95  ; CHECK-NEXT:   S_ENDPGM 0
96  fence syncscope("singlethread-one-as") seq_cst
97  ret void
98}
99
100define amdgpu_kernel void @agent_one_as_acquire() {
101  ; CHECK-LABEL: name: agent_one_as_acquire
102  ; CHECK: bb.1 (%ir-block.0):
103  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
104  ; CHECK-NEXT: {{  $}}
105  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
106  ; CHECK-NEXT:   G_FENCE 4, 4
107  ; CHECK-NEXT:   S_ENDPGM 0
108  fence syncscope("agent-one-as") acquire
109  ret void
110}
111
112define amdgpu_kernel void @agent_one_as_release() {
113  ; CHECK-LABEL: name: agent_one_as_release
114  ; CHECK: bb.1 (%ir-block.0):
115  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
116  ; CHECK-NEXT: {{  $}}
117  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
118  ; CHECK-NEXT:   G_FENCE 5, 4
119  ; CHECK-NEXT:   S_ENDPGM 0
120  fence syncscope("agent-one-as") release
121  ret void
122}
123
124define amdgpu_kernel void @agent_one_as_acq_rel() {
125  ; CHECK-LABEL: name: agent_one_as_acq_rel
126  ; CHECK: bb.1 (%ir-block.0):
127  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
128  ; CHECK-NEXT: {{  $}}
129  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
130  ; CHECK-NEXT:   G_FENCE 6, 4
131  ; CHECK-NEXT:   S_ENDPGM 0
132  fence syncscope("agent-one-as") acq_rel
133  ret void
134}
135
136define amdgpu_kernel void @agent_one_as_seq_cst() {
137  ; CHECK-LABEL: name: agent_one_as_seq_cst
138  ; CHECK: bb.1 (%ir-block.0):
139  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
140  ; CHECK-NEXT: {{  $}}
141  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
142  ; CHECK-NEXT:   G_FENCE 7, 4
143  ; CHECK-NEXT:   S_ENDPGM 0
144  fence syncscope("agent-one-as") seq_cst
145  ret void
146}
147
148define amdgpu_kernel void @workgroup_one_as_acquire() {
149  ; CHECK-LABEL: name: workgroup_one_as_acquire
150  ; CHECK: bb.1 (%ir-block.0):
151  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
152  ; CHECK-NEXT: {{  $}}
153  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
154  ; CHECK-NEXT:   G_FENCE 4, 5
155  ; CHECK-NEXT:   S_ENDPGM 0
156  fence syncscope("workgroup-one-as") acquire
157  ret void
158}
159
160define amdgpu_kernel void @workgroup_one_as_release() {
161  ; CHECK-LABEL: name: workgroup_one_as_release
162  ; CHECK: bb.1 (%ir-block.0):
163  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
164  ; CHECK-NEXT: {{  $}}
165  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
166  ; CHECK-NEXT:   G_FENCE 5, 5
167  ; CHECK-NEXT:   S_ENDPGM 0
168  fence syncscope("workgroup-one-as") release
169  ret void
170}
171
172define amdgpu_kernel void @workgroup_one_as_acq_rel() {
173  ; CHECK-LABEL: name: workgroup_one_as_acq_rel
174  ; CHECK: bb.1 (%ir-block.0):
175  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
176  ; CHECK-NEXT: {{  $}}
177  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
178  ; CHECK-NEXT:   G_FENCE 6, 5
179  ; CHECK-NEXT:   S_ENDPGM 0
180  fence syncscope("workgroup-one-as") acq_rel
181  ret void
182}
183
184define amdgpu_kernel void @workgroup_one_as_seq_cst() {
185  ; CHECK-LABEL: name: workgroup_one_as_seq_cst
186  ; CHECK: bb.1 (%ir-block.0):
187  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
188  ; CHECK-NEXT: {{  $}}
189  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
190  ; CHECK-NEXT:   G_FENCE 7, 5
191  ; CHECK-NEXT:   S_ENDPGM 0
192  fence syncscope("workgroup-one-as") seq_cst
193  ret void
194}
195
196define amdgpu_kernel void @wavefront_one_as_acquire() {
197  ; CHECK-LABEL: name: wavefront_one_as_acquire
198  ; CHECK: bb.1 (%ir-block.0):
199  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
200  ; CHECK-NEXT: {{  $}}
201  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
202  ; CHECK-NEXT:   G_FENCE 4, 6
203  ; CHECK-NEXT:   S_ENDPGM 0
204  fence syncscope("wavefront-one-as") acquire
205  ret void
206}
207
208define amdgpu_kernel void @wavefront_one_as_release() {
209  ; CHECK-LABEL: name: wavefront_one_as_release
210  ; CHECK: bb.1 (%ir-block.0):
211  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
212  ; CHECK-NEXT: {{  $}}
213  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
214  ; CHECK-NEXT:   G_FENCE 5, 6
215  ; CHECK-NEXT:   S_ENDPGM 0
216  fence syncscope("wavefront-one-as") release
217  ret void
218}
219
220define amdgpu_kernel void @wavefront_one_as_acq_rel() {
221  ; CHECK-LABEL: name: wavefront_one_as_acq_rel
222  ; CHECK: bb.1 (%ir-block.0):
223  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
224  ; CHECK-NEXT: {{  $}}
225  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
226  ; CHECK-NEXT:   G_FENCE 6, 6
227  ; CHECK-NEXT:   S_ENDPGM 0
228  fence syncscope("wavefront-one-as") acq_rel
229  ret void
230}
231
232define amdgpu_kernel void @wavefront_one_as_seq_cst() {
233  ; CHECK-LABEL: name: wavefront_one_as_seq_cst
234  ; CHECK: bb.1 (%ir-block.0):
235  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
236  ; CHECK-NEXT: {{  $}}
237  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
238  ; CHECK-NEXT:   G_FENCE 7, 6
239  ; CHECK-NEXT:   S_ENDPGM 0
240  fence syncscope("wavefront-one-as") seq_cst
241  ret void
242}
243
244define amdgpu_kernel void @system_acquire() {
245  ; CHECK-LABEL: name: system_acquire
246  ; CHECK: bb.1.entry:
247  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
248  ; CHECK-NEXT: {{  $}}
249  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
250  ; CHECK-NEXT:   S_ENDPGM 0
251entry:
252  ret void
253}
254
255define amdgpu_kernel void @system_release() {
256  ; CHECK-LABEL: name: system_release
257  ; CHECK: bb.1 (%ir-block.0):
258  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
259  ; CHECK-NEXT: {{  $}}
260  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
261  ; CHECK-NEXT:   G_FENCE 5, 1
262  ; CHECK-NEXT:   S_ENDPGM 0
263  fence release
264  ret void
265}
266
267define amdgpu_kernel void @system_acq_rel() {
268  ; CHECK-LABEL: name: system_acq_rel
269  ; CHECK: bb.1 (%ir-block.0):
270  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
271  ; CHECK-NEXT: {{  $}}
272  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
273  ; CHECK-NEXT:   G_FENCE 6, 1
274  ; CHECK-NEXT:   S_ENDPGM 0
275  fence acq_rel
276  ret void
277}
278
279define amdgpu_kernel void @system_seq_cst() {
280  ; CHECK-LABEL: name: system_seq_cst
281  ; CHECK: bb.1 (%ir-block.0):
282  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
283  ; CHECK-NEXT: {{  $}}
284  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
285  ; CHECK-NEXT:   G_FENCE 7, 1
286  ; CHECK-NEXT:   S_ENDPGM 0
287  fence seq_cst
288  ret void
289}
290
291define amdgpu_kernel void @singlethread_acquire() {
292  ; CHECK-LABEL: name: singlethread_acquire
293  ; CHECK: bb.1 (%ir-block.0):
294  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
295  ; CHECK-NEXT: {{  $}}
296  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
297  ; CHECK-NEXT:   G_FENCE 4, 0
298  ; CHECK-NEXT:   S_ENDPGM 0
299  fence syncscope("singlethread") acquire
300  ret void
301}
302
303define amdgpu_kernel void @singlethread_release() {
304  ; CHECK-LABEL: name: singlethread_release
305  ; CHECK: bb.1 (%ir-block.0):
306  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
307  ; CHECK-NEXT: {{  $}}
308  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
309  ; CHECK-NEXT:   G_FENCE 5, 0
310  ; CHECK-NEXT:   S_ENDPGM 0
311  fence syncscope("singlethread") release
312  ret void
313}
314
315define amdgpu_kernel void @singlethread_acq_rel() {
316  ; CHECK-LABEL: name: singlethread_acq_rel
317  ; CHECK: bb.1 (%ir-block.0):
318  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
319  ; CHECK-NEXT: {{  $}}
320  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
321  ; CHECK-NEXT:   G_FENCE 6, 0
322  ; CHECK-NEXT:   S_ENDPGM 0
323  fence syncscope("singlethread") acq_rel
324  ret void
325}
326
327define amdgpu_kernel void @singlethread_seq_cst() {
328  ; CHECK-LABEL: name: singlethread_seq_cst
329  ; CHECK: bb.1 (%ir-block.0):
330  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
331  ; CHECK-NEXT: {{  $}}
332  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
333  ; CHECK-NEXT:   G_FENCE 7, 0
334  ; CHECK-NEXT:   S_ENDPGM 0
335  fence syncscope("singlethread") seq_cst
336  ret void
337}
338
339define amdgpu_kernel void @agent_acquire() {
340  ; CHECK-LABEL: name: agent_acquire
341  ; CHECK: bb.1 (%ir-block.0):
342  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
343  ; CHECK-NEXT: {{  $}}
344  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
345  ; CHECK-NEXT:   G_FENCE 4, 7
346  ; CHECK-NEXT:   S_ENDPGM 0
347  fence syncscope("agent") acquire
348  ret void
349}
350
351define amdgpu_kernel void @agent_release() {
352  ; CHECK-LABEL: name: agent_release
353  ; CHECK: bb.1 (%ir-block.0):
354  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
355  ; CHECK-NEXT: {{  $}}
356  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
357  ; CHECK-NEXT:   G_FENCE 5, 7
358  ; CHECK-NEXT:   S_ENDPGM 0
359  fence syncscope("agent") release
360  ret void
361}
362
363define amdgpu_kernel void @agent_acq_rel() {
364  ; CHECK-LABEL: name: agent_acq_rel
365  ; CHECK: bb.1 (%ir-block.0):
366  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
367  ; CHECK-NEXT: {{  $}}
368  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
369  ; CHECK-NEXT:   G_FENCE 6, 7
370  ; CHECK-NEXT:   S_ENDPGM 0
371  fence syncscope("agent") acq_rel
372  ret void
373}
374
375define amdgpu_kernel void @agent_seq_cst() {
376  ; CHECK-LABEL: name: agent_seq_cst
377  ; CHECK: bb.1 (%ir-block.0):
378  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
379  ; CHECK-NEXT: {{  $}}
380  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
381  ; CHECK-NEXT:   G_FENCE 7, 7
382  ; CHECK-NEXT:   S_ENDPGM 0
383  fence syncscope("agent") seq_cst
384  ret void
385}
386
387define amdgpu_kernel void @workgroup_acquire() {
388  ; CHECK-LABEL: name: workgroup_acquire
389  ; CHECK: bb.1 (%ir-block.0):
390  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
391  ; CHECK-NEXT: {{  $}}
392  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
393  ; CHECK-NEXT:   G_FENCE 4, 8
394  ; CHECK-NEXT:   S_ENDPGM 0
395  fence syncscope("workgroup") acquire
396  ret void
397}
398
399define amdgpu_kernel void @workgroup_release() {
400  ; CHECK-LABEL: name: workgroup_release
401  ; CHECK: bb.1 (%ir-block.0):
402  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
403  ; CHECK-NEXT: {{  $}}
404  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
405  ; CHECK-NEXT:   G_FENCE 5, 8
406  ; CHECK-NEXT:   S_ENDPGM 0
407  fence syncscope("workgroup") release
408  ret void
409}
410
411define amdgpu_kernel void @workgroup_acq_rel() {
412  ; CHECK-LABEL: name: workgroup_acq_rel
413  ; CHECK: bb.1 (%ir-block.0):
414  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
415  ; CHECK-NEXT: {{  $}}
416  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
417  ; CHECK-NEXT:   G_FENCE 6, 8
418  ; CHECK-NEXT:   S_ENDPGM 0
419  fence syncscope("workgroup") acq_rel
420  ret void
421}
422
423define amdgpu_kernel void @workgroup_seq_cst() {
424  ; CHECK-LABEL: name: workgroup_seq_cst
425  ; CHECK: bb.1 (%ir-block.0):
426  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
427  ; CHECK-NEXT: {{  $}}
428  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
429  ; CHECK-NEXT:   G_FENCE 7, 8
430  ; CHECK-NEXT:   S_ENDPGM 0
431  fence syncscope("workgroup") seq_cst
432  ret void
433}
434
435define amdgpu_kernel void @wavefront_acquire() {
436  ; CHECK-LABEL: name: wavefront_acquire
437  ; CHECK: bb.1 (%ir-block.0):
438  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
439  ; CHECK-NEXT: {{  $}}
440  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
441  ; CHECK-NEXT:   G_FENCE 4, 9
442  ; CHECK-NEXT:   S_ENDPGM 0
443  fence syncscope("wavefront") acquire
444  ret void
445}
446
447define amdgpu_kernel void @wavefront_release() {
448  ; CHECK-LABEL: name: wavefront_release
449  ; CHECK: bb.1 (%ir-block.0):
450  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
451  ; CHECK-NEXT: {{  $}}
452  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
453  ; CHECK-NEXT:   G_FENCE 5, 9
454  ; CHECK-NEXT:   S_ENDPGM 0
455  fence syncscope("wavefront") release
456  ret void
457}
458
459define amdgpu_kernel void @wavefront_acq_rel() {
460  ; CHECK-LABEL: name: wavefront_acq_rel
461  ; CHECK: bb.1 (%ir-block.0):
462  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
463  ; CHECK-NEXT: {{  $}}
464  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
465  ; CHECK-NEXT:   G_FENCE 6, 9
466  ; CHECK-NEXT:   S_ENDPGM 0
467  fence syncscope("wavefront") acq_rel
468  ret void
469}
470
471define amdgpu_kernel void @wavefront_seq_cst() {
472  ; CHECK-LABEL: name: wavefront_seq_cst
473  ; CHECK: bb.1 (%ir-block.0):
474  ; CHECK-NEXT:   liveins: $sgpr8_sgpr9
475  ; CHECK-NEXT: {{  $}}
476  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
477  ; CHECK-NEXT:   G_FENCE 7, 9
478  ; CHECK-NEXT:   S_ENDPGM 0
479  fence syncscope("wavefront") seq_cst
480  ret void
481}
482