blob: ca178d28d66c6afc0159f0150dcfe5804dd81467 [file] [log] [blame]
; 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 = !{ !"" }