Updating my versions of ModuloScheduling in cvs. Still not complete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13424 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/ModuloScheduling/MSchedGraph.cpp b/lib/CodeGen/ModuloScheduling/MSchedGraph.cpp
index b76a97f..6db0994 100644
--- a/lib/CodeGen/ModuloScheduling/MSchedGraph.cpp
+++ b/lib/CodeGen/ModuloScheduling/MSchedGraph.cpp
@@ -29,7 +29,7 @@
 }
 
 void MSchedGraphNode::print(std::ostream &os) const {
-  os << "MSehedGraphNode: Inst=" << *Inst << ", latency= " << latency << "\n"; 
+  os << "MSchedGraphNode: Inst=" << *Inst << ", latency= " << latency << "\n"; 
 }
 
 MSchedGraphEdge MSchedGraphNode::getInEdge(MSchedGraphNode *pred) {
@@ -41,9 +41,38 @@
       return I.getEdge();
   }
   assert(0 && "Should have found edge between this node and its predecessor!");
-  
+ 
 }
 
+unsigned MSchedGraphNode::getInEdgeNum(MSchedGraphNode *pred) {
+  //Loop over all the successors of our predecessor
+  //return the edge the corresponds to this in edge
+  int count = 0;
+  for(MSchedGraphNode::succ_iterator I = pred->succ_begin(), E = pred->succ_end();
+      I != E; ++I) {
+    if(*I == this)
+      return count;
+    count++;
+  }
+  assert(0 && "Should have found edge between this node and its predecessor!");
+  abort();
+}
+bool MSchedGraphNode::isSuccessor(MSchedGraphNode *succ) {
+  for(succ_iterator I = succ_begin(), E = succ_end(); I != E; ++I)
+    if(*I == succ)
+      return true;
+  return false;
+}
+
+
+bool MSchedGraphNode::isPredecessor(MSchedGraphNode *pred) {
+  if(find( Predecessors.begin(),  Predecessors.end(), pred) !=   Predecessors.end())
+    return true;
+  else
+    return false;
+}
+
+
 void MSchedGraph::addNode(const MachineInstr *MI,
 			  MSchedGraphNode *node) {
   
@@ -92,12 +121,15 @@
     MachineOpCode MIopCode = MI->getOpcode();
     int delay;
 
+#if 0  // FIXME: LOOK INTO THIS
     //Check if subsequent instructions can be issued before
     //the result is ready, if so use min delay.
     if(MTI.hasResultInterlock(MIopCode))
       delay = MTI.minLatency(MIopCode);
     else
-      delay = MTI.maxLatency(MIopCode);
+#endif
+      /// FIxME: get this from the sched class.
+      delay = 7; //MTI.maxLatency(MIopCode);
     
     //Create new node for this machine instruction and add to the graph.
     //Create only if not a nop