22
22
23
23
__global__ void ffp1 (float *p) {
24
24
// CHECK-LABEL: @_Z4ffp1Pf
25
- // SAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 4{{$}}
26
- // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 4{{$}}
27
- // SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 4{{$}}
28
- // SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 4{{$}}
29
- // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 4{{$}}
30
- // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 4{{$}}
31
-
32
- // UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+}}, !amdgpu.ignore.denormal.mode !{{[0-9]+$}}
33
- // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
34
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
35
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
36
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
37
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
25
+ // SAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE:[0-9]+]] {{$}}
26
+ // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
27
+ // SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
28
+ // SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
29
+ // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
30
+ // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
31
+
32
+ // 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]+$}}
33
+ // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
34
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
35
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
36
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
37
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 4, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
38
38
39
39
// SAFE: _Z4ffp1Pf
40
40
// SAFE: global_atomic_cmpswap
@@ -62,19 +62,19 @@ __global__ void ffp1(float *p) {
62
62
63
63
__global__ void ffp2 (double *p) {
64
64
// CHECK-LABEL: @_Z4ffp2Pd
65
- // SAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8{{$}}
66
- // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8{{$}}
67
- // SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8{{$}}
68
- // SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8{{$}}
69
- // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 8{{$}}
70
- // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 8{{$}}
71
-
72
- // UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
73
- // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
74
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
75
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
76
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
77
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
65
+ // SAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
66
+ // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
67
+ // SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
68
+ // SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
69
+ // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
70
+ // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
71
+
72
+ // UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
73
+ // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
74
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
75
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
76
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
77
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
78
78
79
79
// SAFE-LABEL: @_Z4ffp2Pd
80
80
// SAFE: global_atomic_cmpswap_b64
@@ -102,19 +102,19 @@ __global__ void ffp2(double *p) {
102
102
// long double is the same as double for amdgcn.
103
103
__global__ void ffp3 (long double *p) {
104
104
// CHECK-LABEL: @_Z4ffp3Pe
105
- // SAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8{{$}}
106
- // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8{{$}}
107
- // SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8{{$}}
108
- // SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8{{$}}
109
- // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 8{{$}}
110
- // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 8{{$}}
111
-
112
- // UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
113
- // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
114
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
115
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
116
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
117
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
105
+ // SAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
106
+ // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
107
+ // SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
108
+ // SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
109
+ // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
110
+ // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
111
+
112
+ // UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
113
+ // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
114
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
115
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
116
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
117
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
118
118
119
119
// SAFE-LABEL: @_Z4ffp3Pe
120
120
// SAFE: global_atomic_cmpswap_b64
@@ -139,34 +139,34 @@ __global__ void ffp3(long double *p) {
139
139
__device__ double ffp4 (double *p, float f) {
140
140
// CHECK-LABEL: @_Z4ffp4Pdf
141
141
// CHECK: fpext float {{.*}} to double
142
- // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8{{$}}
143
- // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
142
+ // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
143
+ // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
144
144
return __atomic_fetch_sub (p, f, memory_order_relaxed);
145
145
}
146
146
147
147
__device__ double ffp5 (double *p, int i) {
148
148
// CHECK-LABEL: @_Z4ffp5Pdi
149
149
// CHECK: sitofp i32 {{.*}} to double
150
- // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8{{$}}
151
- // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
150
+ // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
151
+ // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 8, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
152
152
return __atomic_fetch_sub (p, i, memory_order_relaxed);
153
153
}
154
154
155
155
__global__ void ffp6 (_Float16 *p) {
156
156
// CHECK-LABEL: @_Z4ffp6PDF16
157
- // SAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 2{{$}}
158
- // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 2{{$}}
159
- // SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 2{{$}}
160
- // SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 2{{$}}
161
- // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 2{{$}}
162
- // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 2{{$}}
163
-
164
- // UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
165
- // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
166
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
167
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
168
- // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
169
- // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 2, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
157
+ // SAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
158
+ // SAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
159
+ // SAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
160
+ // SAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
161
+ // SAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
162
+ // SAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]] {{$}}
163
+
164
+ // UNSAFEIR: atomicrmw fadd ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
165
+ // UNSAFEIR: atomicrmw fsub ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
166
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
167
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
168
+ // UNSAFEIR: atomicrmw fmax ptr {{.*}} syncscope("agent-one-as") monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
169
+ // UNSAFEIR: atomicrmw fmin ptr {{.*}} syncscope("workgroup-one-as") monotonic, align 2, !noalias.addrspace ![[NO_PRIVATE]], ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
170
170
171
171
// SAFE: _Z4ffp6PDF16
172
172
// SAFE: global_atomic_cmpswap
@@ -190,3 +190,6 @@ __global__ void ffp6(_Float16 *p) {
190
190
__hip_atomic_fetch_max (p, 1 .0f , memory_order_relaxed, __HIP_MEMORY_SCOPE_AGENT);
191
191
__hip_atomic_fetch_min (p, 1 .0f , memory_order_relaxed, __HIP_MEMORY_SCOPE_WORKGROUP);
192
192
}
193
+
194
+ // SAFEIR: ![[NO_PRIVATE]] = !{i32 5, i32 6}
195
+ // UNSAFEIR: ![[NO_PRIVATE]] = !{i32 5, i32 6}
0 commit comments