[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