xref: /llvm-project/llvm/test/CodeGen/AMDGPU/expand-atomicrmw-syncscope.ll (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1; RUN: llc -mtriple=amdgcn -mcpu=gfx90a -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
2
3; GCN-LABEL: {{^}}expand_atomicrmw_agent:
4; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
5define void @expand_atomicrmw_agent(ptr addrspace(1) nocapture %arg) {
6entry:
7  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 syncscope("agent") monotonic, align 4
8  ret void
9}
10
11; GCN-LABEL: {{^}}expand_atomicrmw_workgroup:
12; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
13define void @expand_atomicrmw_workgroup(ptr addrspace(1) nocapture %arg) {
14entry:
15  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 syncscope("workgroup") monotonic, align 4
16  ret void
17}
18
19; GCN-LABEL: {{^}}expand_atomicrmw_wavefront:
20; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
21define void @expand_atomicrmw_wavefront(ptr addrspace(1) nocapture %arg) {
22entry:
23  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 syncscope("wavefront") monotonic, align 4
24  ret void
25}
26
27; GCN-LABEL: {{^}}expand_atomicrmw_agent_one_as:
28; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
29define void @expand_atomicrmw_agent_one_as(ptr addrspace(1) nocapture %arg) {
30entry:
31  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 syncscope("agent-one-as") monotonic, align 4
32  ret void
33}
34
35; GCN-LABEL: {{^}}expand_atomicrmw_workgroup_one_as:
36; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
37define void @expand_atomicrmw_workgroup_one_as(ptr addrspace(1) nocapture %arg) {
38entry:
39  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 syncscope("workgroup-one-as") monotonic, align 4
40  ret void
41}
42
43; GCN-LABEL: {{^}}expand_atomicrmw_wavefront_one_as:
44; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
45define void @expand_atomicrmw_wavefront_one_as(ptr addrspace(1) nocapture %arg) {
46entry:
47  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 syncscope("wavefront-one-as") monotonic, align 4
48  ret void
49}
50
51; GCN-LABEL: {{^}}expand_atomicrmw_singlethread_one_as:
52; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
53define void @expand_atomicrmw_singlethread_one_as(ptr addrspace(1) nocapture %arg) {
54entry:
55  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 syncscope("singlethread-one-as") monotonic, align 4
56  ret void
57}
58
59; GCN-LABEL: {{^}}expand_atomicrmw_one_as:
60; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
61define void @expand_atomicrmw_one_as(ptr addrspace(1) nocapture %arg) {
62entry:
63  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 syncscope("one-as") monotonic, align 4
64  ret void
65}
66
67; GCN-LABEL: {{^}}expand_atomicrmw_system:
68; GCN: global_atomic_cmpswap v{{[0-9]+}}, v[{{[0-9:]+}}], v[{{[0-9:]+}}], off glc{{$}}
69define void @expand_atomicrmw_system(ptr addrspace(1) nocapture %arg) {
70entry:
71  %ret = atomicrmw fadd ptr addrspace(1) %arg, float 1.000000e+00 monotonic, align 4
72  ret void
73}
74