2
2
3
3
4
4
define void @atomic_inc (ptr %ptr0 , ptr addrspace (1 ) %ptr1 , ptr addrspace (3 ) %ptr3 ) {
5
- ; CHECK: atomicrmw uinc_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
5
+ ; CHECK: atomicrmw uinc_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
6
6
%result0 = call i32 @llvm.amdgcn.atomic.inc.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 0 , i1 false )
7
7
8
- ; CHECK: atomicrmw uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
8
+ ; CHECK: atomicrmw uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !1
9
9
%result1 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 0 , i32 0 , i1 false )
10
10
11
11
; CHECK: atomicrmw uinc_wrap ptr addrspace(3) %ptr3, i32 46 syncscope("agent") seq_cst, align 4{{$}}
@@ -26,10 +26,10 @@ define void @atomic_inc(ptr %ptr0, ptr addrspace(1) %ptr1, ptr addrspace(3) %ptr
26
26
}
27
27
28
28
define void @atomic_dec (ptr %ptr0 , ptr addrspace (1 ) %ptr1 , ptr addrspace (3 ) %ptr3 ) {
29
- ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
29
+ ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
30
30
%result0 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 0 , i1 false )
31
31
32
- ; CHECK: atomicrmw udec_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
32
+ ; CHECK: atomicrmw udec_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !1
33
33
%result1 = call i32 @llvm.amdgcn.atomic.dec.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 0 , i32 0 , i1 false )
34
34
35
35
; CHECK: atomicrmw udec_wrap ptr addrspace(3) %ptr3, i32 46 syncscope("agent") seq_cst, align 4{{$}}
@@ -51,49 +51,49 @@ define void @atomic_dec(ptr %ptr0, ptr addrspace(1) %ptr1, ptr addrspace(3) %ptr
51
51
52
52
; Test some invalid ordering handling
53
53
define void @ordering (ptr %ptr0 , ptr addrspace (1 ) %ptr1 , ptr addrspace (3 ) %ptr3 ) {
54
- ; CHECK: atomicrmw volatile uinc_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
54
+ ; CHECK: atomicrmw volatile uinc_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
55
55
%result0 = call i32 @llvm.amdgcn.atomic.inc.i32.p0 (ptr %ptr0 , i32 42 , i32 -1 , i32 0 , i1 true )
56
56
57
- ; CHECK: atomicrmw volatile uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
57
+ ; CHECK: atomicrmw volatile uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !1
58
58
%result1 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 0 , i32 0 , i1 true )
59
59
60
- ; CHECK: atomicrmw uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
60
+ ; CHECK: atomicrmw uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !1
61
61
%result2 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 1 , i32 0 , i1 false )
62
62
63
- ; CHECK: atomicrmw volatile uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !0
63
+ ; CHECK: atomicrmw volatile uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !1
64
64
%result3 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 2 , i32 0 , i1 true )
65
65
66
- ; CHECK: atomicrmw uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
66
+ ; CHECK: atomicrmw uinc_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !1
67
67
%result4 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 3 , i32 0 , i1 false )
68
68
69
- ; CHECK: atomicrmw volatile udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
69
+ ; CHECK: atomicrmw volatile udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
70
70
%result5 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 4 , i1 true )
71
71
72
- ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
72
+ ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
73
73
%result6 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 5 , i1 false )
74
74
75
- ; CHECK: atomicrmw volatile udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
75
+ ; CHECK: atomicrmw volatile udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
76
76
%result7 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 6 , i1 true )
77
77
78
- ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
78
+ ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
79
79
%result8 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 7 , i1 false )
80
80
81
- ; CHECK:= atomicrmw volatile udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
81
+ ; CHECK:= atomicrmw volatile udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
82
82
%result9 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 8 , i1 true )
83
83
84
- ; CHECK:= atomicrmw volatile udec_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
84
+ ; CHECK:= atomicrmw volatile udec_wrap ptr addrspace(1) %ptr1, i32 43 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !1
85
85
%result10 = call i32 @llvm.amdgcn.atomic.dec.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 3 , i32 0 , i1 true )
86
86
ret void
87
87
}
88
88
89
89
define void @immarg_violations (ptr %ptr0 , i32 %val32 , i1 %val1 ) {
90
- ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !0
90
+ ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
91
91
%result0 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 %val32 , i32 0 , i1 false )
92
92
93
- ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !0
93
+ ; CHECK: atomicrmw udec_wrap ptr %ptr0, i32 42 syncscope("agent") monotonic, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
94
94
%result1 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 2 , i32 %val32 , i1 false )
95
95
96
- ; CHECK: atomicrmw volatile udec_wrap ptr %ptr0, i32 42 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !0
96
+ ; CHECK: atomicrmw volatile udec_wrap ptr %ptr0, i32 42 syncscope("agent") monotonic, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !1{{$}}
97
97
%result2 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 2 , i32 0 , i1 %val1 )
98
98
ret void
99
99
}
@@ -304,7 +304,7 @@ declare <2 x i16> @llvm.amdgcn.flat.atomic.fadd.v2bf16.p0(ptr, <2 x i16>)
304
304
305
305
define <2 x i16 > @upgrade_amdgcn_flat_atomic_fadd_v2bf16_p0 (ptr %ptr , <2 x i16 > %data ) {
306
306
; CHECK: [[BC0:%.+]] = bitcast <2 x i16> %data to <2 x bfloat>
307
- ; CHECK-NEXT: [[ATOMIC:%.+]] = atomicrmw fadd ptr %ptr, <2 x bfloat> [[BC0]] syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
307
+ ; CHECK-NEXT: [[ATOMIC:%.+]] = atomicrmw fadd ptr %ptr, <2 x bfloat> [[BC0]] syncscope("agent") seq_cst, align 4, !noalias.addrspace !0, ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
308
308
; CHECK-NEXT: [[BC1:%.+]] = bitcast <2 x bfloat> [[ATOMIC]] to <2 x i16>
309
309
; CHECK-NEXT: ret <2 x i16> [[BC1]]
310
310
%result = call <2 x i16 > @llvm.amdgcn.flat.atomic.fadd.v2bf16.p0 (ptr %ptr , <2 x i16 > %data )
@@ -325,7 +325,7 @@ define <2 x i16> @upgrade_amdgcn_global_atomic_fadd_v2bf16_p1(ptr addrspace(1) %
325
325
declare <2 x half > @llvm.amdgcn.flat.atomic.fadd.v2f16.p0.v2f16 (ptr nocapture , <2 x half >) #0
326
326
327
327
define <2 x half > @upgrade_amdgcn_flat_atomic_fadd_v2f16_p0_v2f16 (ptr %ptr , <2 x half > %data ) {
328
- ; CHECK: %{{.+}} = atomicrmw fadd ptr %ptr, <2 x half> %data syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
328
+ ; CHECK: %{{.+}} = atomicrmw fadd ptr %ptr, <2 x half> %data syncscope("agent") seq_cst, align 4, !noalias.addrspace !{{[0-9]+}}, ! amdgpu.no.fine.grained.memory !{{[0-9]+$}}
329
329
%result = call <2 x half > @llvm.amdgcn.flat.atomic.fadd.v2f16.p0.v2f16 (ptr %ptr , <2 x half > %data )
330
330
ret <2 x half > %result
331
331
}
@@ -341,7 +341,7 @@ define <2 x half> @upgrade_amdgcn_global_atomic_fadd_v2f16_p1_v2f16(ptr addrspac
341
341
declare float @llvm.amdgcn.flat.atomic.fadd.f32.p0.f32 (ptr nocapture , float ) #0
342
342
343
343
define float @upgrade_amdgcn_flat_atomic_fadd_f32_p0_f32 (ptr %ptr , float %data ) {
344
- ; CHECK: %{{.+}} = atomicrmw fadd ptr %ptr, float %data syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+}}, !amdgpu.ignore.denormal.mode !{{[0-9]+$}}
344
+ ; CHECK: %{{.+}} = atomicrmw fadd ptr %ptr, float %data syncscope("agent") seq_cst, align 4, !noalias.addrspace !{{[0-9]+}}, ! amdgpu.no.fine.grained.memory !{{[0-9]+}}, !amdgpu.ignore.denormal.mode !{{[0-9]+$}}
345
345
%result = call float @llvm.amdgcn.flat.atomic.fadd.f32.p0.f32 (ptr %ptr , float %data )
346
346
ret float %result
347
347
}
@@ -355,3 +355,6 @@ define float @upgrade_amdgcn_global_atomic_fadd_f32_p1_f32(ptr addrspace(1) %ptr
355
355
}
356
356
357
357
attributes #0 = { argmemonly nounwind willreturn }
358
+
359
+ ; CHECK: !0 = !{i32 5, i32 6}
360
+ ; CHECK: !1 = !{}
0 commit comments