; RUN: not opt -mtriple=amdgcn -mcpu=gfx1250 -passes=verify -disable-output <%s 2>&1 | FileCheck %s ; RUN: not opt -mtriple=amdgcn -mcpu=gfx1251 -passes=verify -disable-output <%s 2>&1 | FileCheck %s ; CHECK: cooperative atomic intrinsics require a generic or global pointer define i32 @load_local_as(ptr addrspace(3) noundef %addr) { entry: %res = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p3(ptr addrspace(3) %addr, i32 0, metadata !0) ret i32 %res } ; CHECK: cooperative atomic intrinsics require a generic or global pointer define i32 @load_private_as(ptr addrspace(5) noundef %addr) { entry: %res = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p5(ptr addrspace(5) %addr, i32 0, metadata !0) ret i32 %res } ; CHECK: cooperative atomic intrinsics require a generic or global pointer define void @store_local_as(ptr addrspace(3) noundef %addr, i32 noundef %val) { entry: tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p3(ptr addrspace(3) %addr, i32 %val, i32 0, metadata !0) ret void } ; CHECK: cooperative atomic intrinsics require a generic or global pointer define void @store_private_as(ptr addrspace(5) noundef %addr, i32 noundef %val) { entry: tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p5(ptr addrspace(5) %addr, i32 %val, i32 0, metadata !0) ret void } ; CHECK: cooperative atomic intrinsics require that the last argument is a metadata string define i32 @test_empty_md(ptr noundef readonly %addr) { entry: %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 1, metadata !{}) ret i32 %0 } ; CHECK: cooperative atomic intrinsics require that the last argument is a metadata string define i32 @test_no_md_str(ptr noundef readonly %addr) { entry: %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 1, metadata !{!{}}) ret i32 %0 } !0 = !{ !"" }