summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/InstrSched
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2002-10-13 00:40:37 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2002-10-13 00:40:37 +0000
commit9e5eb463624b2ba24771015f990084fe9ea5ff1f (patch)
treeef455273acbcc9b53e74bc512fbd6b3f8668ac66 /llvm/lib/CodeGen/InstrSched
parentf8c6e3db552bb27c1c5eaaab4b1a4ac306f05015 (diff)
downloadbcm5719-llvm-9e5eb463624b2ba24771015f990084fe9ea5ff1f.tar.gz
bcm5719-llvm-9e5eb463624b2ba24771015f990084fe9ea5ff1f.zip
Use vectors instead of hash_maps for issueGaps and conflictLists.
These hash lookups were a major sink of time because they happen so often! Also, add option to disable scheduling. llvm-svn: 4138
Diffstat (limited to 'llvm/lib/CodeGen/InstrSched')
-rw-r--r--llvm/lib/CodeGen/InstrSched/InstrScheduling.cpp24
1 files changed, 9 insertions, 15 deletions
diff --git a/llvm/lib/CodeGen/InstrSched/InstrScheduling.cpp b/llvm/lib/CodeGen/InstrSched/InstrScheduling.cpp
index 97360c3dd08..a985680da3d 100644
--- a/llvm/lib/CodeGen/InstrSched/InstrScheduling.cpp
+++ b/llvm/lib/CodeGen/InstrSched/InstrScheduling.cpp
@@ -25,7 +25,6 @@ SDL_opt("dsched", cl::Hidden, cl::location(SchedDebugLevel),
cl::desc("enable instruction scheduling debugging information"),
cl::values(
clEnumValN(Sched_NoDebugInfo, "n", "disable debug output"),
- clEnumValN(Sched_Disable, "off", "disable instruction scheduling"),
clEnumValN(Sched_PrintMachineCode, "y", "print machine code after scheduling"),
clEnumValN(Sched_PrintSchedTrace, "t", "print trace of scheduling actions"),
clEnumValN(Sched_PrintSchedGraphs, "g", "print scheduling graphs"),
@@ -549,19 +548,17 @@ SchedulingManager::updateEarliestStartTimes(const SchedGraphNode* node,
curTime + 1 + schedInfo.numBubblesAfter(node->getOpCode()));
}
- const vector<MachineOpCode>*
+ const std::vector<MachineOpCode>&
conflictVec = schedInfo.getConflictList(node->getOpCode());
- if (conflictVec != NULL)
- for (unsigned i=0; i < conflictVec->size(); i++)
- {
- MachineOpCode toOp = (*conflictVec)[i];
- cycles_t est = schedTime + schedInfo.getMinIssueGap(node->getOpCode(),
- toOp);
- assert(toOp < (int) nextEarliestStartTime.size());
- if (nextEarliestStartTime[toOp] < est)
- nextEarliestStartTime[toOp] = est;
- }
+ for (unsigned i=0; i < conflictVec.size(); i++)
+ {
+ MachineOpCode toOp = conflictVec[i];
+ cycles_t est=schedTime + schedInfo.getMinIssueGap(node->getOpCode(),toOp);
+ assert(toOp < (int) nextEarliestStartTime.size());
+ if (nextEarliestStartTime[toOp] < est)
+ nextEarliestStartTime[toOp] = est;
+ }
}
//************************* Internal Functions *****************************/
@@ -1511,9 +1508,6 @@ namespace {
bool InstructionSchedulingWithSSA::runOnFunction(Function &F)
{
- if (SchedDebugLevel == Sched_Disable)
- return false;
-
SchedGraphSet graphSet(&F, target);
if (SchedDebugLevel >= Sched_PrintSchedGraphs)
OpenPOWER on IntegriCloud