mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-25 05:34:59 +00:00
SelectionDAG compile time improvement.
One of the phases of SelectionDAG is LegalizeVectors. We don't need to sort the DAG and copy nodes around if there are no vector ops. Speeds up the compilation time of SelectionDAG on a big scalar workload by ~8%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175929 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6068932940
commit
d99a5a3ab4
@ -85,6 +85,25 @@ class VectorLegalizer {
|
||||
};
|
||||
|
||||
bool VectorLegalizer::Run() {
|
||||
// Before we start legalizing vector nodes, check if there are any vectors.
|
||||
bool HasVectors = false;
|
||||
for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(),
|
||||
E = prior(DAG.allnodes_end()); I != llvm::next(E); ++I) {
|
||||
// Check if the values of the nodes contain vectors. We don't need to check
|
||||
// the operands because we are going to check their values at some point.
|
||||
for (SDNode::value_iterator J = I->value_begin(), E = I->value_end();
|
||||
J != E; ++J)
|
||||
HasVectors |= J->isVector();
|
||||
|
||||
// If we found a vector node we can start the legalization.
|
||||
if (HasVectors)
|
||||
break;
|
||||
}
|
||||
|
||||
// If this basic block has no vectors then no need to legalize vectors.
|
||||
if (!HasVectors)
|
||||
return false;
|
||||
|
||||
// The legalize process is inherently a bottom-up recursive process (users
|
||||
// legalize their uses before themselves). Given infinite stack space, we
|
||||
// could just start legalizing on the root and traverse the whole graph. In
|
||||
|
Loading…
x
Reference in New Issue
Block a user