std::vector<SUnit> &sunits) {}
virtual void releaseState() {}
- virtual unsigned getSethiUllmanNumber(const SUnit *SU) const {
+ virtual unsigned getNodePriority(const SUnit *SU) const {
return 0;
}
// Add pseudo dependency edges for two-address nodes.
AddPseudoTwoAddrDeps();
// Calculate node priorities.
- CalculatePriorities();
+ CalculateSethiUllmanNumbers();
}
void releaseState() {
SethiUllmanNumbers.clear();
}
- unsigned getSethiUllmanNumber(const SUnit *SU) const {
+ unsigned getNodePriority(const SUnit *SU) const {
assert(SU->NodeNum < SethiUllmanNumbers.size());
unsigned Opc = SU->Node->getOpcode();
if (Opc == ISD::CopyFromReg && !isCopyFromLiveIn(SU))
private:
bool canClobber(SUnit *SU, SUnit *Op);
void AddPseudoTwoAddrDeps();
- void CalculatePriorities();
- unsigned CalcNodePriority(const SUnit *SU);
+ void CalculateSethiUllmanNumbers();
+ unsigned CalcNodeSethiUllmanNumber(const SUnit *SU);
};
SUnitMap = &sumap;
SUnits = &sunits;
// Calculate node priorities.
- CalculatePriorities();
+ CalculateSethiUllmanNumbers();
}
void releaseState() {
SethiUllmanNumbers.clear();
}
- unsigned getSethiUllmanNumber(const SUnit *SU) const {
+ unsigned getNodePriority(const SUnit *SU) const {
assert(SU->NodeNum < SethiUllmanNumbers.size());
return SethiUllmanNumbers[SU->NodeNum];
}
private:
- void CalculatePriorities();
- unsigned CalcNodePriority(const SUnit *SU);
+ void CalculateSethiUllmanNumbers();
+ unsigned CalcNodeSethiUllmanNumber(const SUnit *SU);
};
}
bool bu_ls_rr_sort::operator()(const SUnit *left, const SUnit *right) const {
bool LIsTarget = left->Node->isTargetOpcode();
bool RIsTarget = right->Node->isTargetOpcode();
- unsigned LPriority = SPQ->getSethiUllmanNumber(left);
- unsigned RPriority = SPQ->getSethiUllmanNumber(right);
// Special tie breaker: if two nodes share a operand, the one that use it
// as a def&use operand is preferred.
return true;
}
+ unsigned LPriority = SPQ->getNodePriority(left);
+ unsigned RPriority = SPQ->getNodePriority(right);
if (LPriority > RPriority)
return true;
else if (LPriority == RPriority)
}
}
-/// CalcNodePriority - Priority is the Sethi Ullman number.
+/// CalcNodeSethiUllmanNumber - Priority is the Sethi Ullman number.
/// Smaller number is the higher priority.
template<class SF>
-unsigned BURegReductionPriorityQueue<SF>::CalcNodePriority(const SUnit *SU) {
+unsigned BURegReductionPriorityQueue<SF>::CalcNodeSethiUllmanNumber(const SUnit *SU) {
unsigned &SethiUllmanNumber = SethiUllmanNumbers[SU->NodeNum];
if (SethiUllmanNumber != 0)
return SethiUllmanNumber;
I != E; ++I) {
if (I->second) continue; // ignore chain preds
SUnit *PredSU = I->first;
- unsigned PredSethiUllman = CalcNodePriority(PredSU);
+ unsigned PredSethiUllman = CalcNodeSethiUllmanNumber(PredSU);
if (PredSethiUllman > SethiUllmanNumber) {
SethiUllmanNumber = PredSethiUllman;
Extra = 0;
return SethiUllmanNumber;
}
-/// CalculatePriorities - Calculate priorities of all scheduling units.
+/// CalculateSethiUllmanNumbers - Calculate Sethi-Ullman numbers of all
+/// scheduling units.
template<class SF>
-void BURegReductionPriorityQueue<SF>::CalculatePriorities() {
+void BURegReductionPriorityQueue<SF>::CalculateSethiUllmanNumbers() {
SethiUllmanNumbers.assign(SUnits->size(), 0);
for (unsigned i = 0, e = SUnits->size(); i != e; ++i)
- CalcNodePriority(&(*SUnits)[i]);
+ CalcNodeSethiUllmanNumber(&(*SUnits)[i]);
}
static unsigned SumOfUnscheduledPredsOfSuccs(const SUnit *SU) {
// Top down
bool td_ls_rr_sort::operator()(const SUnit *left, const SUnit *right) const {
- unsigned LPriority = SPQ->getSethiUllmanNumber(left);
- unsigned RPriority = SPQ->getSethiUllmanNumber(right);
+ unsigned LPriority = SPQ->getNodePriority(left);
+ unsigned RPriority = SPQ->getNodePriority(right);
bool LIsTarget = left->Node->isTargetOpcode();
bool RIsTarget = right->Node->isTargetOpcode();
bool LIsFloater = LIsTarget && left->NumPreds == 0;
return false;
}
-/// CalcNodePriority - Priority is the Sethi Ullman number.
+/// CalcNodeSethiUllmanNumber - Priority is the Sethi Ullman number.
/// Smaller number is the higher priority.
template<class SF>
-unsigned TDRegReductionPriorityQueue<SF>::CalcNodePriority(const SUnit *SU) {
+unsigned TDRegReductionPriorityQueue<SF>::CalcNodeSethiUllmanNumber(const SUnit *SU) {
unsigned &SethiUllmanNumber = SethiUllmanNumbers[SU->NodeNum];
if (SethiUllmanNumber != 0)
return SethiUllmanNumber;
I != E; ++I) {
if (I->second) continue; // ignore chain preds
SUnit *PredSU = I->first;
- unsigned PredSethiUllman = CalcNodePriority(PredSU);
+ unsigned PredSethiUllman = CalcNodeSethiUllmanNumber(PredSU);
if (PredSethiUllman > SethiUllmanNumber) {
SethiUllmanNumber = PredSethiUllman;
Extra = 0;
return SethiUllmanNumber;
}
-/// CalculatePriorities - Calculate priorities of all scheduling units.
+/// CalculateSethiUllmanNumbers - Calculate Sethi-Ullman numbers of all
+/// scheduling units.
template<class SF>
-void TDRegReductionPriorityQueue<SF>::CalculatePriorities() {
+void TDRegReductionPriorityQueue<SF>::CalculateSethiUllmanNumbers() {
SethiUllmanNumbers.assign(SUnits->size(), 0);
for (unsigned i = 0, e = SUnits->size(); i != e; ++i)
- CalcNodePriority(&(*SUnits)[i]);
+ CalcNodeSethiUllmanNumber(&(*SUnits)[i]);
}
//===----------------------------------------------------------------------===//