[PATCH] D123262: AMDGPU: Set implicit kernarg size to be of 256 bytes for code object version 5

Changpeng Fang via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 6 15:31:39 PDT 2022


cfang created this revision.
cfang added reviewers: arsenm, b-sumner.
Herald added subscribers: hsmhsm, foad, kerbowa, hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, jvesely, kzhuravl.
Herald added a project: All.
cfang requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.

If implicitarg_ptr intrinsic is not used, set implicit kernarg size to 0, otherwise
set it to 256 bytes for code object version 5  (and beyond).


https://reviews.llvm.org/D123262

Files:
  llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
  llvm/test/CodeGen/AMDGPU/amdhsa-kernarg-size.ll


Index: llvm/test/CodeGen/AMDGPU/amdhsa-kernarg-size.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/AMDGPU/amdhsa-kernarg-size.ll
@@ -0,0 +1,20 @@
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 --amdhsa-code-object-version=3 < %s | FileCheck --check-prefixes=CHECK,COV3 %s
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 --amdhsa-code-object-version=5 < %s | FileCheck --check-prefixes=CHECK,COV5 %s
+
+; CHECK-LABEL: kernel_with_implicitarg_ptr:
+; COV3:	.amdhsa_kernarg_size 64
+; COV5:	.amdhsa_kernarg_size 264
+define amdgpu_kernel void @kernel_with_implicitarg_ptr(i8 addrspace(4)* addrspace(1)* %ptr)  {
+  %implicitarg.ptr = call i8 addrspace(4)* @llvm.amdgcn.implicitarg.ptr()
+  store volatile i8 addrspace(4)* %implicitarg.ptr, i8 addrspace(4)* addrspace(1)* %ptr
+  ret void
+}
+
+; CHECK-LABEL: kernel_without_implicitarg_ptr:
+; CHECK:	.amdhsa_kernarg_size 8
+define amdgpu_kernel void @kernel_without_implicitarg_ptr(i8 addrspace(4)* addrspace(1)* %ptr)  {
+  store volatile i8 addrspace(4)* undef, i8 addrspace(4)* addrspace(1)* %ptr
+  ret void
+}
+
+declare i8 addrspace(4)* @llvm.amdgcn.implicitarg.ptr()
Index: llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
@@ -652,7 +652,8 @@
     return 16;
 
   // Assume all implicit inputs are used by default
-  return AMDGPU::getIntegerAttribute(F, "amdgpu-implicitarg-num-bytes", 56);
+  unsigned NBytes = (AMDGPU::getAmdhsaCodeObjectVersion() >= 5) ? 256 : 56;
+  return AMDGPU::getIntegerAttribute(F, "amdgpu-implicitarg-num-bytes", NBytes);
 }
 
 uint64_t AMDGPUSubtarget::getExplicitKernArgSize(const Function &F,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D123262.421025.patch
Type: text/x-patch
Size: 1805 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220406/fb0671b6/attachment.bin>


More information about the llvm-commits mailing list