Reformatted code to match the prevalent LLVM style; fit code into 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7586 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Misha Brukman 2003-08-05 00:02:06 +00:00
parent 3683d9e842
commit b10cea86a9

View File

@ -23,15 +23,14 @@ RUConflict(const std::vector<resourceId_t>& fromRVec,
unsigned fN = fromRVec.size(), tN = toRVec.size(); unsigned fN = fromRVec.size(), tN = toRVec.size();
unsigned fi = 0, ti = 0; unsigned fi = 0, ti = 0;
while (fi < fN && ti < tN) while (fi < fN && ti < tN) {
{ if (fromRVec[fi] < toRVec[ti])
if (fromRVec[fi] < toRVec[ti]) ++fi;
++fi; else if (toRVec[ti] < fromRVec[fi])
else if (toRVec[ti] < fromRVec[fi]) ++ti;
++ti; else
else return true;
return true; }
}
return false; return false;
} }
@ -45,24 +44,21 @@ ComputeMinGap(const InstrRUsage &fromRU,
if (fromRU.numBubbles > 0) if (fromRU.numBubbles > 0)
minGap = fromRU.numBubbles; minGap = fromRU.numBubbles;
if (minGap < fromRU.numCycles) if (minGap < fromRU.numCycles) {
{ // only need to check from cycle `minGap' onwards
// only need to check from cycle `minGap' onwards for (cycles_t gap=minGap; gap <= fromRU.numCycles-1; gap++) {
for (cycles_t gap=minGap; gap <= fromRU.numCycles-1; gap++) // check if instr. #2 can start executing `gap' cycles after #1
{ // by checking for resource conflicts in each overlapping cycle
// check if instr. #2 can start executing `gap' cycles after #1 cycles_t numOverlap =std::min(fromRU.numCycles - gap, toRU.numCycles);
// by checking for resource conflicts in each overlapping cycle for (cycles_t c = 0; c <= numOverlap-1; c++)
cycles_t numOverlap =std::min(fromRU.numCycles - gap, toRU.numCycles); if (RUConflict(fromRU.resourcesByCycle[gap + c],
for (cycles_t c = 0; c <= numOverlap-1; c++) toRU.resourcesByCycle[c])) {
if (RUConflict(fromRU.resourcesByCycle[gap + c], // conflict found so minGap must be more than `gap'
toRU.resourcesByCycle[c])) minGap = gap+1;
{ break;
// conflict found so minGap must be more than `gap' }
minGap = gap+1;
break;
}
}
} }
}
return minGap; return minGap;
} }
@ -157,12 +153,11 @@ TargetSchedInfo::computeIssueGaps(const std::vector<InstrRUsage>&
// //
int classPairGaps[numSchedClasses][numSchedClasses]; int classPairGaps[numSchedClasses][numSchedClasses];
for (InstrSchedClass fromSC=0; fromSC < numSchedClasses; fromSC++) for (InstrSchedClass fromSC=0; fromSC < numSchedClasses; fromSC++)
for (InstrSchedClass toSC=0; toSC < numSchedClasses; toSC++) for (InstrSchedClass toSC=0; toSC < numSchedClasses; toSC++) {
{ int classPairGap = ComputeMinGap(instrRUForClasses[fromSC],
int classPairGap = ComputeMinGap(instrRUForClasses[fromSC], instrRUForClasses[toSC]);
instrRUForClasses[toSC]); classPairGaps[fromSC][toSC] = classPairGap;
classPairGaps[fromSC][toSC] = classPairGap; }
}
// Now, for each pair of instructions, use the class pair gap if both // Now, for each pair of instructions, use the class pair gap if both
// instructions have identical resource usage as their respective classes. // instructions have identical resource usage as their respective classes.
@ -171,20 +166,18 @@ TargetSchedInfo::computeIssueGaps(const std::vector<InstrRUsage>&
longestIssueConflict = 0; longestIssueConflict = 0;
for (MachineOpCode fromOp=0; fromOp < numOpCodes; fromOp++) for (MachineOpCode fromOp=0; fromOp < numOpCodes; fromOp++)
for (MachineOpCode toOp=0; toOp < numOpCodes; toOp++) for (MachineOpCode toOp=0; toOp < numOpCodes; toOp++) {
{ int instrPairGap =
int instrPairGap = (instrRUsages[fromOp].sameAsClass && instrRUsages[toOp].sameAsClass)
(instrRUsages[fromOp].sameAsClass && instrRUsages[toOp].sameAsClass) ? classPairGaps[getSchedClass(fromOp)][getSchedClass(toOp)]
? classPairGaps[getSchedClass(fromOp)][getSchedClass(toOp)] : ComputeMinGap(instrRUsages[fromOp], instrRUsages[toOp]);
: ComputeMinGap(instrRUsages[fromOp], instrRUsages[toOp]);
if (instrPairGap > 0) if (instrPairGap > 0) {
{ this->setGap(instrPairGap, fromOp, toOp);
this->setGap(instrPairGap, fromOp, toOp); conflictLists[fromOp].push_back(toOp);
conflictLists[fromOp].push_back(toOp); longestIssueConflict=std::max(longestIssueConflict, instrPairGap);
longestIssueConflict=std::max(longestIssueConflict, instrPairGap);
}
} }
}
} }
@ -194,12 +187,11 @@ void InstrRUsage::setTo(const InstrClassRUsage& classRU) {
breaksGroup = classRU.breaksGroup; breaksGroup = classRU.breaksGroup;
numBubbles = classRU.numBubbles; numBubbles = classRU.numBubbles;
for (unsigned i=0; i < classRU.numSlots; i++) for (unsigned i=0; i < classRU.numSlots; i++) {
{ unsigned slot = classRU.feasibleSlots[i];
unsigned slot = classRU.feasibleSlots[i]; assert(slot < feasibleSlots.size() && "Invalid slot specified!");
assert(slot < feasibleSlots.size() && "Invalid slot specified!"); this->feasibleSlots[slot] = true;
this->feasibleSlots[slot] = true; }
}
numCycles = classRU.totCycles; numCycles = classRU.totCycles;
resourcesByCycle.resize(this->numCycles); resourcesByCycle.resize(this->numCycles);
@ -209,10 +201,10 @@ void InstrRUsage::setTo(const InstrClassRUsage& classRU) {
c < NC; c++) c < NC; c++)
this->resourcesByCycle[c].push_back(classRU.V[i].resourceId); this->resourcesByCycle[c].push_back(classRU.V[i].resourceId);
// Sort each resource usage vector by resourceId_t to speed up conflict checking // Sort each resource usage vector by resourceId_t to speed up conflict
// checking
for (unsigned i=0; i < this->resourcesByCycle.size(); i++) for (unsigned i=0; i < this->resourcesByCycle.size(); i++)
sort(resourcesByCycle[i].begin(), resourcesByCycle[i].end()); sort(resourcesByCycle[i].begin(), resourcesByCycle[i].end());
} }
// Add the extra resource usage requirements specified in the delta. // Add the extra resource usage requirements specified in the delta.
@ -226,29 +218,27 @@ void InstrRUsage::addUsageDelta(const InstrRUsageDelta &delta) {
// resize the resources vector if more cycles are specified // resize the resources vector if more cycles are specified
unsigned maxCycles = this->numCycles; unsigned maxCycles = this->numCycles;
maxCycles = std::max(maxCycles, delta.startCycle + abs(NC) - 1); maxCycles = std::max(maxCycles, delta.startCycle + abs(NC) - 1);
if (maxCycles > this->numCycles) if (maxCycles > this->numCycles) {
{ this->resourcesByCycle.resize(maxCycles);
this->resourcesByCycle.resize(maxCycles); this->numCycles = maxCycles;
this->numCycles = maxCycles; }
}
if (NC >= 0) if (NC >= 0)
for (unsigned c=delta.startCycle, last=c+NC-1; c <= last; c++) for (unsigned c=delta.startCycle, last=c+NC-1; c <= last; c++)
this->resourcesByCycle[c].push_back(delta.resourceId); this->resourcesByCycle[c].push_back(delta.resourceId);
else else
// Remove the resource from all NC cycles. // Remove the resource from all NC cycles.
for (unsigned c=delta.startCycle, last=(c-NC)-1; c <= last; c++) for (unsigned c=delta.startCycle, last=(c-NC)-1; c <= last; c++) {
{ // Look for the resource backwards so we remove the last entry
// Look for the resource backwards so we remove the last entry // for that resource in each cycle.
// for that resource in each cycle. std::vector<resourceId_t>& rvec = this->resourcesByCycle[c];
std::vector<resourceId_t>& rvec = this->resourcesByCycle[c]; int r;
int r; for (r = rvec.size() - 1; r >= 0; r--)
for (r = rvec.size() - 1; r >= 0; r--) if (rvec[r] == delta.resourceId) {
if (rvec[r] == delta.resourceId) // found last entry for the resource
{// found last entry for the resource rvec.erase(rvec.begin() + r);
rvec.erase(rvec.begin() + r); break;
break; }
} assert(r >= 0 && "Resource to remove was unused in cycle c!");
assert(r >= 0 && "Resource to remove was unused in cycle c!"); }
}
} }