@@ -26,19 +26,19 @@ __global__ void ffp1(float *p) {
26
26
// SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 4{{$}}
27
27
// SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 4{{$}}
28
28
// SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 4{{$}}
29
- // SAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent-one-as ") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE:[0-9]+]]{{$}}
30
- // SAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
31
- // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as ") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
32
- // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
29
+ // SAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE:[0-9]+]]{{$}}
30
+ // SAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
31
+ // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
32
+ // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
33
33
34
34
// UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+}}, !amdgpu.ignore.denormal.mode !{{[0-9]+$}}
35
35
// UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
36
36
// UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
37
37
// UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
38
38
// UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE:[0-9]+]], !amdgpu.no.fine.grained.memory !{{[0-9]+}}, !amdgpu.ignore.denormal.mode !{{[0-9]+$}}
39
39
// UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
40
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as ") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
41
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
40
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
41
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup") monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
42
42
43
43
// SAFE: _Z4ffp1Pf
44
44
// SAFE: global_atomic_cmpswap
@@ -73,19 +73,19 @@ __global__ void ffp2(double *p) {
73
73
// SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8{{$}}
74
74
// SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8{{$}}
75
75
// SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8{{$}}
76
- // SAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
77
- // SAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
78
- // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
79
- // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
76
+ // SAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
77
+ // SAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
78
+ // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
79
+ // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
80
80
81
81
// UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
82
82
// UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
83
83
// UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
84
84
// UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
85
- // UNSAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
86
- // UNSAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
87
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
88
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
85
+ // UNSAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
86
+ // UNSAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
87
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
88
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
89
89
90
90
// SAFE-LABEL: @_Z4ffp2Pd
91
91
// SAFE: global_atomic_cmpswap_b64
@@ -119,19 +119,19 @@ __global__ void ffp3(long double *p) {
119
119
// SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8{{$}}
120
120
// SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8{{$}}
121
121
// SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8{{$}}
122
- // SAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
123
- // SAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
124
- // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
125
- // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
122
+ // SAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
123
+ // SAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
124
+ // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
125
+ // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
126
126
127
127
// UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
128
128
// UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
129
129
// UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
130
130
// UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
131
- // UNSAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
132
- // UNSAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
133
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
134
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
131
+ // UNSAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
132
+ // UNSAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
133
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
134
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup") monotonic, align 8, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
135
135
136
136
// SAFE-LABEL: @_Z4ffp3Pe
137
137
// SAFE: global_atomic_cmpswap_b64
@@ -185,19 +185,19 @@ __global__ void ffp6(_Float16 *p) {
185
185
// SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 2{{$}}
186
186
// SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 2{{$}}
187
187
// SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 2{{$}}
188
- // SAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent-one-as ") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
189
- // SAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
190
- // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as ") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
191
- // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
188
+ // SAFEIR: atomicrmw fadd ptr {{.*}} syncscope("agent") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
189
+ // SAFEIR: atomicrmw fsub ptr {{.*}} syncscope("workgroup") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
190
+ // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
191
+ // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
192
192
193
193
// UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
194
194
// UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
195
195
// UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
196
196
// UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
197
197
// UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
198
198
// UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
199
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as ") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
200
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as ") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
199
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
200
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup") monotonic, align 2, !noalias.addrspace ![[$NO_PRIVATE]], !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
201
201
202
202
// SAFE: _Z4ffp6PDF16
203
203
// SAFE: global_atomic_cmpswap
@@ -228,8 +228,8 @@ __global__ void ffp6(_Float16 *p) {
228
228
// CHECK-LABEL: @_Z12test_cmpxchgPiii
229
229
// CHECK: cmpxchg ptr %{{.+}}, i32 %{{.+}}, i32 %{{.+}} acquire acquire, align 4{{$}}
230
230
// CHECK: cmpxchg weak ptr %{{.+}}, i32 %{{.+}}, i32 %{{.+}} acquire acquire, align 4{{$}}
231
- // CHECK: cmpxchg ptr %{{.+}}, i32 %{{.+}}, i32 %{{.+}} syncscope("workgroup-one-as ") monotonic monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
232
- // CHECK: cmpxchg weak ptr %{{.+}}, i32 %{{.+}}, i32 %{{.+}} syncscope("workgroup-one-as ") monotonic monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
231
+ // CHECK: cmpxchg ptr %{{.+}}, i32 %{{.+}}, i32 %{{.+}} syncscope("workgroup") monotonic monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
232
+ // CHECK: cmpxchg weak ptr %{{.+}}, i32 %{{.+}}, i32 %{{.+}} syncscope("workgroup") monotonic monotonic, align 4, !noalias.addrspace ![[$NO_PRIVATE]]{{$}}
233
233
__device__ int test_cmpxchg (int *ptr, int cmp, int desired) {
234
234
bool flag = __atomic_compare_exchange (ptr, &cmp, &desired, 0 , memory_order_acquire, memory_order_acquire);
235
235
flag = __atomic_compare_exchange_n (ptr, &cmp, desired, 1 , memory_order_acquire, memory_order_acquire);
0 commit comments