| ; RUN: opt -S -mtriple=amdgpu9.50 -passes=amdgpu-attributor %s | FileCheck %s |
| |
| ; The async marker intrinsics only set/await a marker in the stream of async |
| ; requests; they cannot transfer control out of the module. Make sure they do |
| ; not defeat the AGPR allocation inference, which conservatively gives up on |
| ; any call that is not nocallback. |
| |
| ; CHECK: define amdgpu_kernel void @asyncmark_kernel({{.*}}) #[[ATTR:[0-9]+]] |
| define amdgpu_kernel void @asyncmark_kernel(ptr addrspace(1) %out) { |
| call void @llvm.amdgcn.asyncmark() |
| call void @llvm.amdgcn.wait.asyncmark(i16 0) |
| store i32 0, ptr addrspace(1) %out |
| ret void |
| } |
| |
| ; CHECK: attributes #[[ATTR]] = {{{.*}}"amdgpu-agpr-alloc"="0" |