[llvm] [GISel][RISCV]Implement indirect parameter passing for large scalars (PR #95429)
Michael Maitland via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 13 10:17:36 PDT 2024
================
@@ -866,11 +898,16 @@ bool CallLowering::handleAssignments(ValueHandler &Handler,
}
}
- // Now that all pieces have been assigned, re-pack the register typed values
- // into the original value typed registers.
- if (Handler.isIncomingArgumentHandler() && OrigVT != LocVT) {
- // Merge the split registers into the expected larger result vregs of
- // the original call.
+ // In case of indirect parameter passing load the value referred to by
----------------
michaelmaitland wrote:
nit: simplify `if` statements due to common conditions?
```
if (Handler.isIncomingArgumentHandler() && OrigVT != LocVT) {
// In case of indirect parameter passing load the value referred to by the argument
if (VA.getLocInfo() == CCValAssign::Indirect)
Handler.assignValueToAddress(Args[i].OrigRegs[0], Args[i].Regs[0], OrigTy,
MachinePointerInfo{}, VA);
else
// Now that all pieces have been assigned, re-pack the register typed values
// into the original value typed registers.
buildCopyFromRegs(MIRBuilder, Args[i].OrigRegs, Args[i].Regs, OrigTy,
LocTy, Args[i].Flags[0]);
}
https://github.com/llvm/llvm-project/pull/95429
More information about the llvm-commits
mailing list