[llvm-dev] Custom call lowering - where?

Jon Chesterfield via llvm-dev llvm-dev at lists.llvm.org
Thu Aug 10 01:49:05 PDT 2017


The CallingConv.td file can specify CCCustom and ISelLowering has
LowerFormalArguments. The existing uses of CCCustom pick a register to pass
an unmodified argument in and LowerFormalArguments is mostly concerned with
marking registers as live, though I think provides enough information that
I can munge the DAG there.

I would like to pass a scalar type (marked as a register class) in a vector
register. I essentially want to wrap the argument in a SCALAR_TO_VECTOR ISD
node before calling a function and unwrap it using EXTRACT_VECTOR_ELT or
similar within the function.

Where should I introduce these additional nodes, or should it be possible
to achieve this via CCCustom?

Cheers!

Jon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170810/24172886/attachment.html>


More information about the llvm-dev mailing list