forked from OSchip/llvm-project
dc31c61b18
The TableGen-based calling convention definitions are inflexible, while writing a function to implement the calling convention is very straight-forward, and allows difficult cases to be handled more easily. With this patch adds support for: * Passing large scalars according to the RV32I calling convention * Byval arguments * Passing values on the stack when the argument registers are exhausted The custom CC_RISCV calling convention is also used for returns. This patch also documents the ABI lowering that a language frontend is expected to perform. I would like to work to simplify these requirements over time, but this will require further discussion within the LLVM community. We add PendingArgFlags CCState, as a companion to PendingLocs. The PendingLocs vector is used by a number of backends to handle arguments that are split during legalisation. However CCValAssign doesn't keep track of the original argument alignment. Therefore, add a PendingArgFlags vector which can be used to keep track of the ISD::ArgFlagsTy for every value added to PendingLocs. Differential Revision: https://reviews.llvm.org/D39898 llvm-svn: 320359 |
||
---|---|---|
.. | ||
addc-adde-sube-subc.ll | ||
alloca.ll | ||
alu32.ll | ||
bare-select.ll | ||
blockaddress.ll | ||
branch.ll | ||
bswap-ctlz-cttz-ctpop.ll | ||
byval.ll | ||
calling-conv-sext-zext.ll | ||
calling-conv.ll | ||
calls.ll | ||
div.ll | ||
fp128.ll | ||
frame.ll | ||
i32-icmp.ll | ||
imm.ll | ||
indirectbr.ll | ||
jumptable.ll | ||
lit.local.cfg | ||
mem.ll | ||
mul.ll | ||
rem.ll | ||
rotl-rotr.ll | ||
select-cc.ll | ||
sext-zext-trunc.ll | ||
shifts.ll | ||
wide-mem.ll |