[llvm] [AMDGPU] Update code object metadata for kernarg preload (PR #134666)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 1 19:53:26 PDT 2025


================
@@ -745,5 +782,51 @@ void MetadataStreamerMsgPackV6::emitVersion() {
   getRootMetadata("amdhsa.version") = Version;
 }
 
+void MetadataStreamerMsgPackV6::emitHiddenKernelArg(
+    const DataLayout &DL, Type *ArgTy, Align Alignment, StringRef ArgName,
+    unsigned &Offset, msgpack::ArrayDocNode Args,
+    KernArgPreload::HiddenArg HiddenArg, const AMDGPUFunctionArgInfo *ArgInfo) {
+  assert(ArgInfo && HiddenArg != KernArgPreload::END_HIDDEN_ARGS);
+
+  SmallString<32> PreloadStr;
+  const KernArgPreload::KernArgPreloadDescriptor *PreloadDesc =
+      ArgInfo->getHiddenArgPreloadDescriptor(HiddenArg);
+  if (PreloadDesc) {
+    const SmallVectorImpl<MCRegister> &Regs = PreloadDesc->Regs;
+    for (const auto &Reg : Regs) {
+      if (!PreloadStr.empty())
+        PreloadStr.push_back(' ');
+      PreloadStr += AMDGPUInstPrinter::getRegisterName(Reg);
+    }
+  }
+  emitKernelArgImpl(DL, ArgTy, Alignment, ArgName, Offset, Args, PreloadStr);
+}
+
+void MetadataStreamerMsgPackV6::emitKernelArg(const Argument &Arg,
+                                              unsigned &Offset,
+                                              msgpack::ArrayDocNode Args,
+                                              const MachineFunction &MF) {
+  const SIMachineFunctionInfo *MFI = MF.getInfo<SIMachineFunctionInfo>();
+  SmallString<32> PreloadRegisters;
+  if (MFI->getNumKernargPreloadedSGPRs()) {
+    assert(MF.getSubtarget<GCNSubtarget>().hasKernargPreload());
+    const SmallVectorImpl<const KernArgPreload::KernArgPreloadDescriptor *>
+        &PreloadDescs =
+            MFI->getArgInfo().getPreloadDescriptorsForArgIdx(Arg.getArgNo());
+    for (auto &Desc : PreloadDescs) {
+      if (!PreloadRegisters.empty())
+        PreloadRegisters.push_back(' ');
+
+      for (const auto &Reg : Desc->Regs) {
+        if (!PreloadRegisters.empty())
+          PreloadRegisters.push_back(' ');
----------------
arsenm wrote:

Could do this with ListSeparator 

https://github.com/llvm/llvm-project/pull/134666


More information about the llvm-commits mailing list