Added new circuit finding alogrithm.
Fixed bug in graph so that phi ite diff edges are added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20108 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h b/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h
index fa523d1..a8215d6 100644
--- a/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h
+++ b/lib/Target/SparcV9/ModuloScheduling/ModuloScheduling.h
@@ -67,7 +67,7 @@
int II;
//Internal functions
- void CreateDefMap(MachineBasicBlock *BI);
+ bool CreateDefMap(MachineBasicBlock *BI);
bool MachineBBisValid(const MachineBasicBlock *BI);
int calculateResMII(const MachineBasicBlock *BI);
int calculateRecMII(MSchedGraph *graph, int MII);
@@ -87,6 +87,16 @@
std::vector<MSchedGraphNode*> &visitedNodes, int II);
void addReccurrence(std::vector<MSchedGraphNode*> &recurrence, int II, MSchedGraphNode*, MSchedGraphNode*);
+ void findAllCircuits(MSchedGraph *MSG, int II);
+ bool circuit(MSchedGraphNode *v, std::vector<MSchedGraphNode*> &stack,
+ std::set<MSchedGraphNode*> &blocked,
+ std::vector<MSchedGraphNode*> &SCC, MSchedGraphNode *s,
+ std::map<MSchedGraphNode*, std::set<MSchedGraphNode*> > &B, int II,
+ std::map<MSchedGraphNode*, MSchedGraphNode*> &newNodes);
+
+ void unblock(MSchedGraphNode *u, std::set<MSchedGraphNode*> &blocked,
+ std::map<MSchedGraphNode*, std::set<MSchedGraphNode*> > &B);
+
void computePartialOrder();
bool computeSchedule();
bool scheduleNode(MSchedGraphNode *node,