[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