[llvm-dev] Handling node through TargetLowering::LowerOperation vs TargetLowering::ReplaceNodeResults

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 28 09:47:51 PST 2020


ReplaceNodeResults is called by the type legalizer for custom legalizing
any of the results of a node that have an illegal type.

LowerOperation is called by the type legalizer to custom legalize node
inputs that have an illegal type. I believe technically it calls
LowerOperationWrapper, but that forwards to LowerOperation by default.

LowerOperation is also called for custom legalizing nodes with legal types
after type legalization by both the vector op legalizer and the DAG
legalizer. In those cases LowerOperation is called directly and does not
call LowerOperationWrapper.

On Tue, Jan 28, 2020 at 9:10 AM Przemyslaw Ossowski via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi,
>
> I see that for different targets in classes which inherits from
> TargetLowering there are implemented both methods:
>
> LowerOperation and ReplaceNodeResults
>
>
>
> What decides that for one given ISD we have to add handling in
> LowerOperation and for other in ReplaceNodeResults, when for both
> SetOperationAction is configured to be Custom?
>
>
> Is it related with number of results of given operation and LowerOperation
> is called when there is only one SDValue?
>
>
>
> Thanks,
>
> Przemek
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-- 
~Craig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200128/5d76a2f8/attachment.html>


More information about the llvm-dev mailing list