22
33
44define 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{{$}}
66 %result0 = call i32 @llvm.amdgcn.atomic.inc.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 0 , i1 false )
77
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
99 %result1 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 0 , i32 0 , i1 false )
1010
1111 ; 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
2626}
2727
2828define 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{{$}}
3030 %result0 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 0 , i1 false )
3131
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
3333 %result1 = call i32 @llvm.amdgcn.atomic.dec.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 0 , i32 0 , i1 false )
3434
3535 ; 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
5151
5252; Test some invalid ordering handling
5353define 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{{$}}
5555 %result0 = call i32 @llvm.amdgcn.atomic.inc.i32.p0 (ptr %ptr0 , i32 42 , i32 -1 , i32 0 , i1 true )
5656
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
5858 %result1 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 0 , i32 0 , i1 true )
5959
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
6161 %result2 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 1 , i32 0 , i1 false )
6262
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
6464 %result3 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 2 , i32 0 , i1 true )
6565
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
6767 %result4 = call i32 @llvm.amdgcn.atomic.inc.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 3 , i32 0 , i1 false )
6868
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{{$}}
7070 %result5 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 4 , i1 true )
7171
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{{$}}
7373 %result6 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 5 , i1 false )
7474
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{{$}}
7676 %result7 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 6 , i1 true )
7777
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{{$}}
7979 %result8 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 7 , i1 false )
8080
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{{$}}
8282 %result9 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 0 , i32 8 , i1 true )
8383
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
8585 %result10 = call i32 @llvm.amdgcn.atomic.dec.i32.p1 (ptr addrspace (1 ) %ptr1 , i32 43 , i32 3 , i32 0 , i1 true )
8686 ret void
8787}
8888
8989define 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{{$}}
9191 %result0 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 %val32 , i32 0 , i1 false )
9292
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{{$}}
9494 %result1 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 2 , i32 %val32 , i1 false )
9595
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{{$}}
9797 %result2 = call i32 @llvm.amdgcn.atomic.dec.i32.p0 (ptr %ptr0 , i32 42 , i32 2 , i32 0 , i1 %val1 )
9898 ret void
9999}
@@ -304,7 +304,7 @@ declare <2 x i16> @llvm.amdgcn.flat.atomic.fadd.v2bf16.p0(ptr, <2 x i16>)
304304
305305define <2 x i16 > @upgrade_amdgcn_flat_atomic_fadd_v2bf16_p0 (ptr %ptr , <2 x i16 > %data ) {
306306 ; 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]+$}}
308308 ; CHECK-NEXT: [[BC1:%.+]] = bitcast <2 x bfloat> [[ATOMIC]] to <2 x i16>
309309 ; CHECK-NEXT: ret <2 x i16> [[BC1]]
310310 %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) %
325325declare <2 x half > @llvm.amdgcn.flat.atomic.fadd.v2f16.p0.v2f16 (ptr nocapture , <2 x half >) #0
326326
327327define <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]+$}}
329329 %result = call <2 x half > @llvm.amdgcn.flat.atomic.fadd.v2f16.p0.v2f16 (ptr %ptr , <2 x half > %data )
330330 ret <2 x half > %result
331331}
@@ -341,7 +341,7 @@ define <2 x half> @upgrade_amdgcn_global_atomic_fadd_v2f16_p1_v2f16(ptr addrspac
341341declare float @llvm.amdgcn.flat.atomic.fadd.f32.p0.f32 (ptr nocapture , float ) #0
342342
343343define 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]+$}}
345345 %result = call float @llvm.amdgcn.flat.atomic.fadd.f32.p0.f32 (ptr %ptr , float %data )
346346 ret float %result
347347}
@@ -355,3 +355,6 @@ define float @upgrade_amdgcn_global_atomic_fadd_f32_p1_f32(ptr addrspace(1) %ptr
355355}
356356
357357attributes #0 = { argmemonly nounwind willreturn }
358+
359+ ; CHECK: !0 = !{i32 5, i32 6}
360+ ; CHECK: !1 = !{}
0 commit comments