[llvm] [AMDGPU][GlobalISel] Support lowering preloaded kernel arguments (PR #205049)
Keshav Vinayak Jha via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 3 04:51:36 PDT 2026
================
@@ -592,33 +751,89 @@ bool AMDGPUCallLowering::lowerFormalArgumentsKernel(
uint64_t ArgOffset = alignTo(ExplicitArgOffset, ABIAlign) + BaseOffset;
ExplicitArgOffset = alignTo(ExplicitArgOffset, ABIAlign) + AllocSize;
+ Align ArgBaseAlign = commonAlignment(Align(16), ArgOffset);
+
+ ArgInfo OrigArg(VRegs[VRegIdx], Arg, Arg.getArgNo());
+ const unsigned OrigArgIdx = Arg.getArgNo() + AttributeList::FirstArgIndex;
+ setArgFlags(OrigArg, OrigArgIdx, DL, F);
+
+ SmallVector<ArgInfo, 32> ArgSplitArgs;
+ SmallVector<TypeSize> FieldOffsets;
+ splitToValueTypes(OrigArg, ArgSplitArgs, DL, F.getCallingConv(),
+ &FieldOffsets);
+
+ for (unsigned SplitIdx = 0, NumSplitArgs = ArgSplitArgs.size();
----------------
keshavvinayak01 wrote:
The code now records the split argument offset/alignment directly and passes those through to `allocatePreloadKernArgSGPRs` / `lowerParameter`. `CCState` is still used for SGPR allocation state, but we no longer need to create `CCValAssign` entries just to carry offsets.
https://github.com/llvm/llvm-project/pull/205049
More information about the llvm-commits
mailing list