| ; RUN: llc -mtriple=amdgpu12.00-amd-amdhsa < %s | FileCheck %s --check-prefixes=CHECK,PACKED | |
| ; RUN: llc -mtriple=amdgpu10.30-amd-amdhsa < %s | FileCheck %s --check-prefixes=CHECK,NOTPACKED | |
| @global = addrspace(1) global i32 poison, align 4 | |
| ; Carefully crafted kernel that uses v0 but never writes a VGPR or reads another VGPR. | |
| ; Only hardware-initialized VGPRs (v0) are read in this kernel. | |
| ; CHECK-LABEL: amdhsa.kernels: | |
| ; CHECK-LABEL: kernel_x | |
| ; CHECK: .vgpr_count: 1 | |
| define amdgpu_kernel void @kernel_x(ptr addrspace(8) %rsrc) #0 { | |
| entry: | |
| %id = call i32 @llvm.amdgcn.workitem.id.x() | |
| call void @llvm.amdgcn.raw.ptr.buffer.store.i32(i32 %id, ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0) | |
| ret void | |
| } | |
| ; CHECK-LABEL: kernel_z | |
| ; PACKED: .vgpr_count: 1 | |
| ; NOTPACKED: .vgpr_count: 3 | |
| define amdgpu_kernel void @kernel_z(ptr addrspace(8) %rsrc) { | |
| entry: | |
| %id = call i32 @llvm.amdgcn.workitem.id.z() | |
| call void @llvm.amdgcn.raw.ptr.buffer.store.i32(i32 %id, ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0) | |
| ret void | |
| } | |
| attributes #0 = { "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" } |