search for: loweroperationwrapp

Displaying 14 results from an estimated 14 matches for "loweroperationwrapp".

Did you mean: loweroperationwrapper
2016 Jan 25
1
Return value from TargetLowering::LowerOperation?
...For loads and stores it tells the legalizer to treat the node as if > it were marked Promote. > >> * The same SDValue as LowerOperation was called on. > > This tells the legalizer that the input node is legal. > >> >> However in some places, e.g. in TargetLowering::LowerOperationWrapper, >> it seems like it is assumed only the first two of the above cases can >> happen because there we do: >> >> SDValue Res = LowerOperation(SDValue(N, 0), DAG); >> if (Res.getNode()) >> Results.push_back(Res); >> >> So, when LowerOpera...
2016 Jan 22
3
Return value from TargetLowering::LowerOperation?
...lers of this function assumes about the returned value. In several places it seems like it is assumed that LowerOperation can return three kinds of values: * Something completely new. * SDValue() * The same SDValue as LowerOperation was called on. However in some places, e.g. in TargetLowering::LowerOperationWrapper, it seems like it is assumed only the first two of the above cases can happen because there we do: SDValue Res = LowerOperation(SDValue(N, 0), DAG); if (Res.getNode()) Results.push_back(Res); So, when LowerOperationWrapper is called from DAGTypeLegalizer::CustomLowerNode, and my t...
2020 Jan 28
2
Handling node through TargetLowering::LowerOperation vs TargetLowering::ReplaceNodeResults
...ał: > 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 Lo...
2020 Jan 28
2
Handling node through TargetLowering::LowerOperation vs TargetLowering::ReplaceNodeResults
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
2012 Sep 02
2
[LLVMdev] Question regarding ReplaceValueWith and ReplaceNodeResults
...see ReplaceNodeResults being called from functions such as CustomWidenLowerNode and CustomLowerNode. In the former, we are clearly expecting a change in type, aren't we? Even in the latter, ReplaceNodeResults is called only when the type of the result is not legal. Otherwise, the latter calls LowerOperationWrapper. Thanks, Pranav Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation
2012 Jun 01
0
[LLVMdev] Predicate registers/condition codes question
...ogical ops. I think there is also another (and cleaner) workaround, a kind of operation-based type promotion of __illegal__ types. This can be done by simply setting the operation with illegal type result to have a custom expander, for example: setOperationAction(ISD::AND, MVT::i1, Custom) See LowerOperationWrapper() & ReplaceNodeResults() hooks in TargetLowering. If you make this work only on logical ops, the rest will get automatically promoted by setting the promotion of i1 to be i32 by default. The latter will require a little hack though... I hope this helps. Ivan > > Sebastian > -- &...
2010 Sep 22
2
[LLVMdev] r114523 (convert the last 4 X86ISD...) breaks clang
...BuildFILD(llvm::SDValue, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SelectionDAG&) const + 1380 9 clang 0x0000000100722759 llvm::X86TargetLowering::LowerSINT_TO_FP(llvm::SDValue, llvm::SelectionDAG&) const + 1017 10 clang 0x0000000100978b9b llvm::TargetLowering::LowerOperationWrapper(llvm::SDNode*, llvm::SmallVectorImpl<llvm::SDValue>&, llvm::SelectionDAG&) const + 27 11 clang 0x00000001008d63e4 llvm::DAGTypeLegalizer::CustomLowerNode(llvm::SDNode*, llvm::EVT, bool) + 164 12 clang 0x00000001008cd718 llvm::DAGTypeLegalizer::ExpandIntegerOp...
2010 Sep 22
0
[LLVMdev] r114523 (convert the last 4 X86ISD...) breaks clang
...llvm::SDValue, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SelectionDAG&) const + 1380 > 9 clang 0x0000000100722759 llvm::X86TargetLowering::LowerSINT_TO_FP(llvm::SDValue, llvm::SelectionDAG&) const + 1017 > 10 clang 0x0000000100978b9b llvm::TargetLowering::LowerOperationWrapper(llvm::SDNode*, llvm::SmallVectorImpl<llvm::SDValue>&, llvm::SelectionDAG&) const + 27 > 11 clang 0x00000001008d63e4 llvm::DAGTypeLegalizer::CustomLowerNode(llvm::SDNode*, llvm::EVT, bool) + 164 > 12 clang 0x00000001008cd718 llvm::DAGTypeLegalizer::Expan...
2012 May 25
3
[LLVMdev] Predicate registers/condition codes question
On Thu, May 24, 2012 at 5:40 PM, Sebastian Pop <spop at codeaurora.org> wrote: > On Thu, May 24, 2012 at 5:06 PM, Hal Finkel <hfinkel at anl.gov> wrote: >> Sebastian, >> >> First, it might be useful to look at what is done in the PowerPC >> backend. PPC also has condition registers that are larger than the >> 1-bit conditional results, and it defines
2012 Jun 01
3
[LLVMdev] Predicate registers/condition codes question
...sed type promotion of __illegal__ types. > This can be done by simply setting the operation with illegal type > result to have a custom expander, for example: > > setOperationAction(ISD::AND, MVT::i1, Custom) > I was exploring something similar using exactly this function. > See LowerOperationWrapper() & ReplaceNodeResults() hooks in > TargetLowering. If you make this work only on logical ops, the rest will > get automatically promoted by setting the promotion of i1 to be i32 by I think I was not clear enough in my past emails, so let me try again: As I am specifying that predicat...
2017 Jan 23
2
returning from LowerOperation()
Hi Eli, I would like to clarify generally what the difference is between returning SDValue() and Op (input argument unchanged) from LowerOperation()? My understanding is that returning SDValue() means that Target gives up, and the common code is supposed to handle it. Returning Op, the unchanged argument, means that the Target is happy with the node as it is, and the common code can move on
2012 Sep 02
0
[LLVMdev] Question regarding ReplaceValueWith and ReplaceNodeResults
...pe of the result > is not legal. Yes, and? If the result type is i1 then the target code gets the opportunity to replace it with some other node with type i1, which probably means a target specific node with type i8 followed by a truncate to i1. Ciao, Duncan. > Otherwise, the latter calls LowerOperationWrapper. > > Thanks, > Pranav > Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > hosted by The Linux Foundation >
2017 Jan 23
2
returning from LowerOperation()
> On Jan 23, 2017, at 12:36, Friedman, Eli via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > On 1/23/2017 5:21 AM, Jonas Paulsson wrote: >> Hi Eli, >> >> I would like to clarify generally what the difference is between returning SDValue() and Op (input argument unchanged) from LowerOperation()? >> >> My understanding is that returning SDValue()
2012 Jun 03
0
[LLVMdev] Predicate registers/condition codes question
...es. >> This can be done by simply setting the operation with illegal type >> result to have a custom expander, for example: >> >> setOperationAction(ISD::AND, MVT::i1, Custom) >> > > I was exploring something similar using exactly this function. > >> See LowerOperationWrapper()& ReplaceNodeResults() hooks in >> TargetLowering. If you make this work only on logical ops, the rest will >> get automatically promoted by setting the promotion of i1 to be i32 by > > I think I was not clear enough in my past emails, so let me try again: > > As I a...