Displaying 20 results from an estimated 4000 matches similar to: "[LLVMdev] Illegal node introduced by DAGCombiner after legal phase"
2012 Aug 27
0
[LLVMdev] Illegal node introduced by DAGCombiner after legal phase
Borja,
In this situation, you need to find the place where shl is generated and add a check to see if shl is legal before allowing it to do the transform.
Micah
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Borja Ferrer
Sent: Sunday, August 26, 2012 11:49 AM
To: llvmdev at cs.uiuc.edu
Subject: [LLVMdev] Illegal node introduced by DAGCombiner after
2017 Sep 22
2
[Hexagon] Type Legalization
Is VT a legal type on Hexagon? It looks like Hexagon may be setting SHL as
Custom for every defined vector type. Try adding TLI.isTypeLegal(VT) too.
~Craig
On Thu, Sep 21, 2017 at 10:06 PM, Haidl, Michael <
michael.haidl at uni-muenster.de> wrote:
> Hi Sanjay,
>
> thanks for this information. I did get a little bit further with the
> patch. However, Hexagon gives me headaches.
2017 Sep 22
0
[Hexagon] Type Legalization
Hi Sanjay,
thanks for this information. I did get a little bit further with the
patch. However, Hexagon gives me headaches.
I tried to limit the scope of the patch to the BeforeLegalizeTypes phase
and Hexagon still reaches the unreachable. Hexagon tries to split or
widen a vector type for a node with custom lowering where the
unreachable arises from inside TargetLowering::ReplaceNodeResults
2017 Sep 20
3
Updating LLVM Tests for Patch
There are multiple problems/questions here:
1. Make sure you've updated trunk to the latest rev before running
update_llc_test_checks.py on lea-3.ll. Ie, I would only expect the output
you're seeing if you're running the script on a version of that test file
before r313631. After that commit, each RUN has its own check prefix, so
there should be no conflict opportunity.
2. I
2009 Mar 10
2
[LLVMdev] visitBIT_CONVERT (previous Shouldn't DAGCombine insert legal nodes?)
> Historically nodes marked "custom" were considered legal, so the
> DAGCombiner would have been correct to generate it. Not sure how
> that ever worked though. I think Dan split the isOperationLegal
> method into isOperationLegal and isOperationLegalOrCustom for reasons
> related to this kind of thing. I don't know whether the DAGCombiner
> is now only supposed
2009 Mar 05
0
[LLVMdev] visitBIT_CONVERT (previous Shouldn't DAGCombine insert legal nodes?)
Hi Gabriele,
> In the combine 2 step (after legalization), in the DAGCombiner::visitBIT_CONVERT() method, the DAG combiner is replacing an FABS followed by a BIT_CONVERT, to a BIT_CONVERT followed by an AND 0x7FFFFFFFFFFFFFFF. Everything is 64 bit.
> On my target, FABS and BIT_CONVERT are legal in 64 bit, but AND in not legal in 64 bit (is declared custom). So the dag combiner is
2017 Sep 22
0
[Hexagon] Type Legalization
Hi Craig,
protecting the transformation with:
if (TLI.isTypeLegal(VT)
&& TLI.isOperationLegal(ISD::SUB, VT)
&& TLI.isOperationLegal(ISD::ADD, VT)
&& TLI.isOperationLegal(ISD::SHL, VT)
&& TLI.isOperationLegal(ISD::SRA, VT)) {
shows the same result.
Michael
On 22.09.2017 07:19, Craig Topper wrote:
> Is VT a legal type on Hexagon?
2009 Mar 10
0
[LLVMdev] visitBIT_CONVERT (previous Shouldn't DAGCombine insert legal nodes?)
Hi Gabrielle,
> > Historically nodes marked "custom" were considered legal, so the
> > DAGCombiner would have been correct to generate it. Not sure how
> > that ever worked though. I think Dan split the isOperationLegal
> > method into isOperationLegal and isOperationLegalOrCustom for reasons
> > related to this kind of thing. I don't know whether
2009 Mar 05
2
[LLVMdev] visitBIT_CONVERT (previous Shouldn't DAGCombine insert legal nodes?)
Hello,
In the combine 2 step (after legalization), in the DAGCombiner::visitBIT_CONVERT() method, the DAG combiner is replacing an FABS followed by a BIT_CONVERT, to a BIT_CONVERT followed by an AND 0x7FFFFFFFFFFFFFFF. Everything is 64 bit.
On my target, FABS and BIT_CONVERT are legal in 64 bit, but AND in not legal in 64 bit (is declared custom). So the dag combiner is introducing illegal (not
2009 Jan 20
2
[LLVMdev] Shouldn't DAGCombine insert legal nodes?
Duncan:
DAGCombine is inserting an IllegalOperation after target-specific
instruction legalization has occurred. I'm inserting the fabs and the
bitconvert during instruction legalization; DAGCombine is converting
the fabs/bitconvert to an 'and' on its second (third?) pass.
-scooter
On Jan 20, 2009, at 12:24 AM, Duncan Sands wrote:
> On Tuesday 20 January 2009 07:52:37
2011 Aug 26
2
[LLVMdev] Dead node removal in DAGCombiner
Is this piece of code in DAGCombiner::visitLOAD removing a dead node?
06155 if (N->use_empty()) {
06156 removeFromWorkList(N);
06157 DAG.DeleteNode(N);
06158 }
If it is, is there a reason it doesn't push its operands to the work
list as done in line 974-975?
00970 // If N has no uses, it is dead. Make sure to revisit all
N's operands once
2007 Jun 19
2
[LLVMdev] DAGCombiner: (S|U)REM
On Mon, 18 Jun 2007, Chris Lattner wrote:
> On Thu, 14 Jun 2007, Dietmar Ebner wrote:
>> currently, the DAGCombiner unconditionally converts
>> (DAGCombiner::visit(U|S)REM) expressions of the form X % C for constants
>> C into X-X/C*C. this makes sense in certain cases where the div/mul
>> logic will simplify X/C*X but is counterproductive in general,
>>
2009 Jan 26
2
[LLVMdev] DAGCombiner rant
Yes, it was I who put that rant in the commit log and it's justified. Worse,
it's unreasonable to actually go through all of DAGCombiner's code and check
to see if certain kinds of constants, e.g., i64, are legal during a
particular phase of DAGCombiner. DAGCombiner does good work and the backends
are supposed to be good citizens. CellSPU is certainly trying to be a good
citizen, no
2009 Feb 19
3
[LLVMdev] Possible DAGCombiner or TargetData Bug
I got bit by this in LLVM 2.4 DagCombiner.cpp and it's still in trunk:
SDValue DAGCombiner::visitSTORE(SDNode *N) {
[...]
// If this is a store of a bit convert, store the input value if the
// resultant store does not need a higher alignment than the original.
if (Value.getOpcode() == ISD::BIT_CONVERT && !ST->isTruncatingStore() &&
ST->isUnindexed()) {
2018 Feb 25
3
Heap Exhaustion during 'DAGCombiner::Run'
Hi LLVM-Devs,
I am in the process of updating our out-of-tree implementation from v5.0 to
v6.0 RC3, and while it builds and mostly runs, I am having trouble with a
small number of tests where the 'WorklistMap' in 'DAGCombiner::Run' never
becomes empty. This is resulting in a runaway state of continuous heap
allocation until the process exhausts all system memory.
But I can't
2009 Jan 28
0
[LLVMdev] DAGCombiner rant
Hi Scott,
I'm not clear on what you're saying here; some of your
points below seem to be contradictory. The advice to
use target-independent nodes when feasible seems
sound to me, so I wrote up a comment about it in
SelectionDAGNodes.h. If you can formulate your
thoughts in the form of specific documentation changes,
that would be helpful.
In theory, DAGCombiner is supposed to check if
2018 Mar 01
0
Heap Exhaustion during 'DAGCombiner::Run'
Martin:
I suspect this is an issue with post-DAG legalization store merging in the
DAGCombiner. If you have a custom lowered type the DAGCombiner may end up
merging a set of stores and immediately splitting them up in legalization.
You should be able to disable this pass universally by overriding
mergeStoresAfterLegalization() or conditionally for cases that shouldn't
match with
2007 Jun 14
2
[LLVMdev] DAGCombiner: (S|U)REM
hi,
currently, the DAGCombiner unconditionally converts
(DAGCombiner::visit(U|S)REM) expressions of the form X % C for constants
C into X-X/C*C. this makes sense in certain cases where the div/mul
logic will simplify X/C*X but is counterproductive in general,
especially if the multiply is expensive. also, this doesn't allow
targets to custom lower rem operations. shouldn't this
2011 Aug 26
0
[LLVMdev] Dead node removal in DAGCombiner
Hi Akira,
> Is this piece of code in DAGCombiner::visitLOAD removing a dead node?
>
> 06155 if (N->use_empty()) {
> 06156 removeFromWorkList(N);
> 06157 DAG.DeleteNode(N);
> 06158 }
yes.
> If it is, is there a reason it doesn't push its operands to the work
> list as done in line 974-975?
>
> 00970 // If N has no uses,
2018 Mar 06
2
Heap Exhaustion during 'DAGCombiner::Run'
We discovered what is happening.
SDAGCombiner essentially looks at various combinations of nodes to do with vectors, and when it can, it creates a vector shuffle. The problem is, that our vector shuffle lowering builds new trees with vector element, or vector sub-vector insert sequences. The generic DAGCombiner, reconstructs these into a new shuffle, and so the loop continues - we reduce it,