[LLVMdev] PIC16 backend for llvm 2.5

Sanjiv.Gupta at microchip.com
Fri, 16 Jan 2009 04:35:12 -0000

> -----Original Message-----
> From: Duncan Sands [mailto:baldrick at free.fr]
> Sent: Friday, January 09, 2009 5:23 PM
> To: Sanjiv Kumar Gupta - I00171
> Cc: llvmdev at cs.uiuc.edu
> Subject: Re: PIC16 backend for llvm 2.5
>
> Hi Sanjiv,
>
> > Well, the first email is here.
> >
> > http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-
> 20081013/068667.html
>
> thanks, I remember now (more or less).  So would something like
> ReplaceNodeResults
> solve the problem?
>

Well the magnitude of the task is not small.
ExpandIntegerOperand() calls LowerOperation() to allow targets to handle
illegal operands. So we will need to change the interface of
LowerOperation() to pass an extra argument called Results, which is an
array of SDValue. Targets will push the result values in this array and
then we can replace values in ExpandIntegerOperand(). Very much like
what CustomLowerResults() and ReplaceNodeResults() are doing currently.

The problem is that do we want to change calls to LowerOperation() in
LegalizeDAG as well? I think probably that is the right approach to go
in the longer term. But currently I suggest that "Results" be the last
argument to LowerOperation() which is defaulted to NULL. That way
LegalizeDAG and all targets will continue to work the current way, plus
targets like ours that want to use the last argument (i.e. "Results")
can use them in ExapndIntegerOperand().

Let me know if that sounds okay.

Regards,
Sanjiv

> Ciao,
>
> Duncan.