Matt, Thanks for the response. Is there an example in the code somewhere of doing the intrinsic ID method? I don't need to put it a lot of places so I'm not sure it warrants adding a node. Thanks. On Tue, Feb 2, 2016 at 12:35 PM, Matt Arsenault <arsenm2 at gmail.com> wrote:> > > On Feb 2, 2016, at 09:29, Ryan Taylor via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > > > > I'm trying to 'lower' an operation that needs to create a node in the SD > that is an intrinsic call.... what is the best way to do this? > > > > I see in the DAGBuilder it calls 'setValue' which adds to the map > NodeMap[V] where V is the key and the passed in SDValue is the value but > I'm not sure this is a good way to do it since these are local to > SelectionDAGBuilder and the lowering needs to happen in XXXISelLowering.cpp. > > > > Thanks. > > _______________________________________________ > > LLVM Developers mailing list > > llvm-dev at lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > SelectionDAGBuilder creates INTRINSIC_W_CHAIN, INTRINSIC_WO_CHAIN, or > INTRINSIC_VOID nodes. You want to emit those with the intrinsic ID as a > TargetConstant the first operand (or second with chains). I would recommend > though for these cases, if you want to emit emit them in the backend, it’s > a bit nicer to lower these to a custom node, and select on that. It’s a bit > nicer than having to add the intrinsic ID everywhere. Most of the AMDGPU > intrinsics are handled this way. > > -Matt-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160202/50109d1a/attachment.html>
> On Feb 2, 2016, at 09:44, Ryan Taylor <ryta1203 at gmail.com> wrote: > > Matt, > > Thanks for the response. Is there an example in the code somewhere of doing the intrinsic ID method? I don't need to put it a lot of places so I'm not sure it warrants adding a node. > > Thanks.Just do a git grep “getNode(ISD::INTRINSIC_WO_CHAIN”. It looks like there are a bunch in AArch64ISelLowering
Matt,
Is this an example you are talking about:
LoadedVect = DAG.getNode
<http://llvm.org/docs/doxygen/html/classllvm_1_1SelectionDAG.html#ab02868bea897db34232413f1929ade1d>
(ISD::INTRINSIC_WO_CHAIN
<http://llvm.org/docs/doxygen/html/namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110ac771b9cda3b889242d457cc4d9b2159c>,
dl, MVT::v4f64,
DAG.getConstant
<http://llvm.org/docs/doxygen/html/classllvm_1_1SelectionDAG.html#adf7343dcb7fff67cf516abca4c1d6793>(Intrinsic::ppc_qpx_qvfcfidu,
dl, MVT::i32),
LoadedVect);
Something like this?
On Tue, Feb 2, 2016 at 12:55 PM, Matt Arsenault <arsenm2 at gmail.com>
wrote:
>
> > On Feb 2, 2016, at 09:44, Ryan Taylor <ryta1203 at gmail.com>
wrote:
> >
> > Matt,
> >
> > Thanks for the response. Is there an example in the code somewhere of
> doing the intrinsic ID method? I don't need to put it a lot of places
so
> I'm not sure it warrants adding a node.
> >
> > Thanks.
>
> Just do a git grep “getNode(ISD::INTRINSIC_WO_CHAIN”. It looks like there
> are a bunch in AArch64ISelLowering
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20160202/555b3dde/attachment.html>