summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h
diff options
context:
space:
mode:
authorTanya Lattner <tonic@nondot.org>2005-04-22 06:32:48 +0000
committerTanya Lattner <tonic@nondot.org>2005-04-22 06:32:48 +0000
commit42ed14860b3df9a0d57e9c04eab459c58d0894ad (patch)
tree4a3b33a4cb10b46519216f2691742701ea13f676 /llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h
parente25cfaee55be90ee167204b65a35e56721cef2b5 (diff)
downloadbcm5719-llvm-42ed14860b3df9a0d57e9c04eab459c58d0894ad.tar.gz
bcm5719-llvm-42ed14860b3df9a0d57e9c04eab459c58d0894ad.zip
Updated dependence analyzer. Fixed numerous bugs. Same stage scheduling, etc.
llvm-svn: 21444
Diffstat (limited to 'llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h')
-rw-r--r--llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h b/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h
index 9a7bfe78019..e68948479e1 100644
--- a/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h
+++ b/llvm/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h
@@ -19,6 +19,8 @@
#include "llvm/Pass.h"
#include "DependenceAnalyzer.h"
#include "llvm/Target/TargetData.h"
+#include "llvm/Analysis/LoopInfo.h"
+#include "llvm/Analysis/ScalarEvolution.h"
#include <set>
namespace llvm {
@@ -107,7 +109,9 @@ namespace llvm {
void unblock(MSchedGraphNode *u, std::set<MSchedGraphNode*> &blocked,
std::map<MSchedGraphNode*, std::set<MSchedGraphNode*> > &B);
- void searchPath(MSchedGraphNode *node,
+ void addRecc(std::vector<MSchedGraphNode*> &stack, std::map<MSchedGraphNode*, MSchedGraphNode*> &newNodes);
+
+ void searchPath(MSchedGraphNode *node,
std::vector<MSchedGraphNode*> &path,
std::set<MSchedGraphNode*> &nodesToAdd);
@@ -117,8 +121,8 @@ namespace llvm {
void computePartialOrder();
- bool computeSchedule(const MachineBasicBlock *BB);
- bool scheduleNode(MSchedGraphNode *node,
+ bool computeSchedule(const MachineBasicBlock *BB, MSchedGraph *MSG);
+ bool scheduleNode(MSchedGraphNode *node,
int start, int end);
void predIntersect(std::set<MSchedGraphNode*> &CurrentSet, std::set<MSchedGraphNode*> &IntersectResult);
@@ -148,6 +152,12 @@ namespace llvm {
// getAnalysisUsage
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
+ /// HACK: We don't actually need loopinfo or scev, but we have
+ /// to say we do so that the pass manager does not delete it
+ /// before we run.
+ AU.addRequired<LoopInfo>();
+ AU.addRequired<ScalarEvolution>();
+
AU.addRequired<DependenceAnalyzer>();
}
OpenPOWER on IntegriCloud