mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
Move addPred and removePred out-of-line.
llvm-svn: 61067
This commit is contained in:
parent
23aae3bba9
commit
8ddcdef08a
@ -300,63 +300,12 @@ namespace llvm {
|
|||||||
/// addPred - This adds the specified edge as a pred of the current node if
|
/// addPred - This adds the specified edge as a pred of the current node if
|
||||||
/// not already. It also adds the current node as a successor of the
|
/// not already. It also adds the current node as a successor of the
|
||||||
/// specified node.
|
/// specified node.
|
||||||
void addPred(const SDep &D) {
|
void addPred(const SDep &D);
|
||||||
// If this node already has this depenence, don't add a redundant one.
|
|
||||||
for (unsigned i = 0, e = (unsigned)Preds.size(); i != e; ++i)
|
|
||||||
if (Preds[i] == D)
|
|
||||||
return;
|
|
||||||
// Add a pred to this SUnit.
|
|
||||||
Preds.push_back(D);
|
|
||||||
// Now add a corresponding succ to N.
|
|
||||||
SDep P = D;
|
|
||||||
P.setSUnit(this);
|
|
||||||
SUnit *N = D.getSUnit();
|
|
||||||
N->Succs.push_back(P);
|
|
||||||
// Update the bookkeeping.
|
|
||||||
if (D.getKind() == SDep::Data) {
|
|
||||||
++NumPreds;
|
|
||||||
++N->NumSuccs;
|
|
||||||
}
|
|
||||||
if (!N->isScheduled)
|
|
||||||
++NumPredsLeft;
|
|
||||||
if (!isScheduled)
|
|
||||||
++N->NumSuccsLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// removePred - This removes the specified edge as a pred of the current
|
/// removePred - This removes the specified edge as a pred of the current
|
||||||
/// node if it exists. It also removes the current node as a successor of
|
/// node if it exists. It also removes the current node as a successor of
|
||||||
/// the specified node.
|
/// the specified node.
|
||||||
void removePred(const SDep &D) {
|
void removePred(const SDep &D);
|
||||||
// Find the matching predecessor.
|
|
||||||
for (SmallVector<SDep, 4>::iterator I = Preds.begin(), E = Preds.end();
|
|
||||||
I != E; ++I)
|
|
||||||
if (*I == D) {
|
|
||||||
bool FoundSucc = false;
|
|
||||||
// Find the corresponding successor in N.
|
|
||||||
SDep P = D;
|
|
||||||
P.setSUnit(this);
|
|
||||||
SUnit *N = D.getSUnit();
|
|
||||||
for (SmallVector<SDep, 4>::iterator II = N->Succs.begin(),
|
|
||||||
EE = N->Succs.end(); II != EE; ++II)
|
|
||||||
if (*II == P) {
|
|
||||||
FoundSucc = true;
|
|
||||||
N->Succs.erase(II);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
assert(FoundSucc && "Mismatching preds / succs lists!");
|
|
||||||
Preds.erase(I);
|
|
||||||
// Update the bookkeeping;
|
|
||||||
if (D.getKind() == SDep::Data) {
|
|
||||||
--NumPreds;
|
|
||||||
--N->NumSuccs;
|
|
||||||
}
|
|
||||||
if (!N->isScheduled)
|
|
||||||
--NumPredsLeft;
|
|
||||||
if (!isScheduled)
|
|
||||||
--N->NumSuccsLeft;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isPred(SUnit *N) {
|
bool isPred(SUnit *N) {
|
||||||
for (unsigned i = 0, e = (unsigned)Preds.size(); i != e; ++i)
|
for (unsigned i = 0, e = (unsigned)Preds.size(); i != e; ++i)
|
||||||
|
@ -163,6 +163,67 @@ void ScheduleDAG::Run() {
|
|||||||
DOUT << "\n";
|
DOUT << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// addPred - This adds the specified edge as a pred of the current node if
|
||||||
|
/// not already. It also adds the current node as a successor of the
|
||||||
|
/// specified node.
|
||||||
|
void SUnit::addPred(const SDep &D) {
|
||||||
|
// If this node already has this depenence, don't add a redundant one.
|
||||||
|
for (unsigned i = 0, e = (unsigned)Preds.size(); i != e; ++i)
|
||||||
|
if (Preds[i] == D)
|
||||||
|
return;
|
||||||
|
// Add a pred to this SUnit.
|
||||||
|
Preds.push_back(D);
|
||||||
|
// Now add a corresponding succ to N.
|
||||||
|
SDep P = D;
|
||||||
|
P.setSUnit(this);
|
||||||
|
SUnit *N = D.getSUnit();
|
||||||
|
N->Succs.push_back(P);
|
||||||
|
// Update the bookkeeping.
|
||||||
|
if (D.getKind() == SDep::Data) {
|
||||||
|
++NumPreds;
|
||||||
|
++N->NumSuccs;
|
||||||
|
}
|
||||||
|
if (!N->isScheduled)
|
||||||
|
++NumPredsLeft;
|
||||||
|
if (!isScheduled)
|
||||||
|
++N->NumSuccsLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// removePred - This removes the specified edge as a pred of the current
|
||||||
|
/// node if it exists. It also removes the current node as a successor of
|
||||||
|
/// the specified node.
|
||||||
|
void SUnit::removePred(const SDep &D) {
|
||||||
|
// Find the matching predecessor.
|
||||||
|
for (SmallVector<SDep, 4>::iterator I = Preds.begin(), E = Preds.end();
|
||||||
|
I != E; ++I)
|
||||||
|
if (*I == D) {
|
||||||
|
bool FoundSucc = false;
|
||||||
|
// Find the corresponding successor in N.
|
||||||
|
SDep P = D;
|
||||||
|
P.setSUnit(this);
|
||||||
|
SUnit *N = D.getSUnit();
|
||||||
|
for (SmallVector<SDep, 4>::iterator II = N->Succs.begin(),
|
||||||
|
EE = N->Succs.end(); II != EE; ++II)
|
||||||
|
if (*II == P) {
|
||||||
|
FoundSucc = true;
|
||||||
|
N->Succs.erase(II);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
assert(FoundSucc && "Mismatching preds / succs lists!");
|
||||||
|
Preds.erase(I);
|
||||||
|
// Update the bookkeeping;
|
||||||
|
if (D.getKind() == SDep::Data) {
|
||||||
|
--NumPreds;
|
||||||
|
--N->NumSuccs;
|
||||||
|
}
|
||||||
|
if (!N->isScheduled)
|
||||||
|
--NumPredsLeft;
|
||||||
|
if (!isScheduled)
|
||||||
|
--N->NumSuccsLeft;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// SUnit - Scheduling unit. It's an wrapper around either a single SDNode or
|
/// SUnit - Scheduling unit. It's an wrapper around either a single SDNode or
|
||||||
/// a group of nodes flagged together.
|
/// a group of nodes flagged together.
|
||||||
void SUnit::dump(const ScheduleDAG *G) const {
|
void SUnit::dump(const ScheduleDAG *G) const {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user