Displaying 6 results from an estimated 6 matches for "assigntopologicalorder".
2010 May 14
3
[LLVMdev] selection dag speedups / llc speedups
...- LegalizeVectors might not make a single change over an entire input bc
file, yet it can take about 6% of the ISel time. Identifying that this can
be skipped ahead of time may help?
- We can take the Changed flag returned by LegalizeVectors, and pass it on
to Legalize so that it can decide not to AssignTopologicalOrder again, since
it was already done in the LegalizeVectors pass. However, this is a
negligible reduction: 0.2 seconds shaved off a 30+ second compile =).
- BuildSchedGraph() can take around 30% of the X% of time taken by
Instruction Scheduling. How different is the scheduler graph from the
selection...
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...I(dag.getTargetLoweringInfo()) {}
+};
+
+bool VectorLegalizer::Run() {
+ bool Changed = false;
+
+ // The vector legalizer is a relatively simple process because it doesn't
+ // need to legalize everything: it just needs to catch vector operations
+ // which might expand to libcalls.
+ DAG.AssignTopologicalOrder();
+ for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
+ E = prior(DAG.allnodes_end()); I != next(E); ++I) {
+ bool HasVectorValue = false;
+ for (SDNode::value_iterator J = I->value_begin(); J != I->value_end(); ++J)
+ HasVectorValue |= J->isVector();
+ i...
2009 May 20
0
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...(dag.getTargetLoweringInfo()) {}
+};
+
+bool VectorLegalizer::Run() {
+ bool Changed = false;
+
+ // The vector legalizer is a relatively simple process because it doesn't
+ // need to legalize everything: it just needs to catch vector operations
+ // which might need to be unrolled.
+ DAG.AssignTopologicalOrder();
+ for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
+ E = prior(DAG.allnodes_end()); I != next(E); ++I) {
+ bool HasVectorValue = false;
+ for (SDNode::value_iterator J = I->value_begin(); J != I->value_end(); ++J)
+ HasVectorValue |= J->isVector();
+ i...
2009 May 21
0
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On Wed, May 20, 2009 at 4:55 PM, Dan Gohman <gohman at apple.com> wrote:
> Can you explain why you chose the approach of using a new pass?
> I pictured removing LegalizeDAG's type legalization code would
> mostly consist of finding all the places that use TLI.getTypeAction
> and just deleting code for handling its Expand and Promote. Are you
> anticipating something more
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On May 20, 2009, at 1:34 PM, Eli Friedman wrote:
> On Wed, May 20, 2009 at 1:19 PM, Eli Friedman
> <eli.friedman at gmail.com> wrote:
>
>> Per subject, this patch adding an additional pass to handle vector
>>
>> operations; the idea is that this allows removing the code from
>>
>> LegalizeDAG that handles illegal types, which should be a significant
2009 May 21
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...(dag.getTargetLoweringInfo()) {}
+};
+
+bool VectorLegalizer::Run() {
+ bool Changed = false;
+
+ // The vector legalizer is a relatively simple process because it doesn't
+ // need to legalize everything: it just needs to catch vector operations
+ // which might need to be unrolled.
+ DAG.AssignTopologicalOrder();
+ for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
+ E = prior(DAG.allnodes_end()); I != next(E); ++I) {
+ bool HasVectorValue = false;
+ for (SDNode::value_iterator J = I->value_begin(); J != I->value_end(); ++J)
+ HasVectorValue |= J->isVector();
+ i...