[llvm-commits] CVS: llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp ModuloSchedGraph.h ModuloScheduling.h

Guochun Shi gshi1 at cs.uiuc.edu
Mon Jun 2 12:50:01 PDT 2003


Changes in directory llvm/lib/CodeGen/ModuloScheduling:

ModuloSchedGraph.cpp updated: 1.5 -> 1.6
ModuloSchedGraph.h updated: 1.5 -> 1.6
ModuloScheduling.h updated: 1.5 -> 1.6

---
Log message:

compiled with the new SchedGraphCommon


---
Diffs of the changes:

Index: llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp
diff -u llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp:1.5 llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp:1.6
--- llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp:1.5	Tue Apr 22 18:00:08 2003
+++ llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.cpp	Mon Jun  2 12:48:56 2003
@@ -50,12 +50,12 @@
 
 // class Modulo SchedGraphNode
 
-ModuloSchedGraphNode::ModuloSchedGraphNode(unsigned int _nodeId,
-                                           const BasicBlock * _bb,
-                                           const Instruction * _inst,
+ModuloSchedGraphNode::ModuloSchedGraphNode(unsigned int in_nodeId,
+                                           const BasicBlock * in_bb,
+                                           const Instruction * in_inst,
                                            int indexInBB,
                                            const TargetMachine & target)
-:SchedGraphNodeCommon(_nodeId, _bb, indexInBB), inst(_inst)
+:SchedGraphNodeCommon(in_nodeId, indexInBB), inst(in_inst)
 {
   if (inst) {
     //FIXME: find the latency 
@@ -298,8 +298,7 @@
   //only if the last instruction in the basicblock is branch instruction and 
   //there is at least an option to branch itself
 
-  assert(bbVec.size() == 1 && "only 1 basicblock in a graph");
-  const BasicBlock *bb = bbVec[0];
+  assert(this->bb&& "the basicblock is not empty");
   const Instruction *inst = &(bb->back());
   if (BranchInst::classof(inst))
     for (unsigned i = 0; i < ((BranchInst *) inst)->getNumSuccessors();
@@ -308,7 +307,7 @@
       if (sb == bb)
         return true;
     }
-
+  
   return false;
 
 }
@@ -674,7 +673,6 @@
   oNodes.clear();
 
   std::vector < ModuloSchedGraphNode * >set;
-  const BasicBlock *bb = bbVec[0];
   unsigned numNodes = bb->size();
 
   // first order all the sets
@@ -873,9 +871,8 @@
 
 void ModuloSchedGraph::buildGraph(const TargetMachine & target)
 {
-  const BasicBlock *bb = bbVec[0];
 
-  assert(bbVec.size() == 1 && "only handling a single basic block here");
+  assert(this->bb && "The basicBlock is NULL?");
 
   // Use this data structure to note all machine operands that compute
   // ordinary LLVM values.  These must be computed defs (i.e., instructions). 
@@ -1277,10 +1274,9 @@
 void ModuloSchedGraph::dump() const
 {
   DEBUG(std::cerr << " ModuloSchedGraph for basic Blocks:");
-  for (unsigned i = 0, N = bbVec.size(); i < N; i++) {
-    DEBUG(std::cerr << (bbVec[i]->hasName()? bbVec[i]->getName() : "block")
-          << " (" << bbVec[i] << ")" << ((i == N - 1) ? "" : ", "));
-  }
+
+  DEBUG(std::cerr << (bb->hasName()? bb->getName() : "block")
+	<< " (" << bb << ")" <<  "");
 
   DEBUG(std::cerr << "\n\n    Actual Root nodes : ");
   for (unsigned i = 0, N = graphRoot->outEdges.size(); i < N; i++)
@@ -1290,7 +1286,7 @@
   DEBUG(std::cerr << "\n    Graph Nodes:\n");
   //for (const_iterator I=begin(); I != end(); ++I)
   //DEBUG(std::cerr << "\n" << *I->second;
-  unsigned numNodes = bbVec[0]->size();
+  unsigned numNodes = bb->size();
   for (unsigned i = 2; i < numNodes + 2; i++) {
     ModuloSchedGraphNode *node = getNode(i);
     DEBUG(std::cerr << "\n" << *node);
@@ -1301,7 +1297,7 @@
 
 void ModuloSchedGraph::dumpNodeProperty() const
 {
-  const BasicBlock *bb = bbVec[0];
+
   unsigned numNodes = bb->size();
   for (unsigned i = 2; i < numNodes + 2; i++) {
     ModuloSchedGraphNode *node = getNode(i);
@@ -1317,8 +1313,11 @@
 void ModuloSchedGraphSet::buildGraphsForMethod(const Function *F,
                                                const TargetMachine &target)
 {
-  for (Function::const_iterator BI = F->begin(); BI != F->end(); ++BI)
-    addGraph(new ModuloSchedGraph(BI, target));
+  for (Function::const_iterator BI = F->begin(); BI != F->end(); ++BI){
+    const BasicBlock* local_bb;
+    local_bb=BI;
+    addGraph(new ModuloSchedGraph((BasicBlock*)local_bb, target));
+  }
 }
 
 std::ostream& operator<<(std::ostream &os,


Index: llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h
diff -u llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h:1.5 llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h:1.6
--- llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h:1.5	Tue Apr 22 18:00:08 2003
+++ llvm/lib/CodeGen/ModuloScheduling/ModuloSchedGraph.h	Mon Jun  2 12:48:56 2003
@@ -56,6 +56,7 @@
   const unsigned getInstOpcode() const {
     return inst->getOpcode();
   }
+
   //return whether the node is NULL
   bool isNullNode() const {
     return (inst == NULL);
@@ -138,6 +139,9 @@
   protected hash_map<const Instruction*,ModuloSchedGraphNode*> {
 
 private:
+
+  BasicBlock* bb;
+  
   //iteration Interval
   int MII;
 
@@ -153,14 +157,14 @@
   typedef std::vector<ModuloSchedGraphNode*> NodeVec;
 
   //the function to compute properties
-  void computeNodeASAP(const BasicBlock *bb);
-  void computeNodeALAP(const BasicBlock *bb);
-  void computeNodeMov(const BasicBlock *bb);
-  void computeNodeDepth(const BasicBlock *bb);
-  void computeNodeHeight(const BasicBlock *bb);
+  void computeNodeASAP(const BasicBlock * in_bb);
+  void computeNodeALAP(const BasicBlock * in_bb);
+  void computeNodeMov(const BasicBlock *  in_bb);
+  void computeNodeDepth(const BasicBlock * in_bb);
+  void computeNodeHeight(const BasicBlock * in_bb);
 
   //the function to compute node property
-  void computeNodeProperty(const BasicBlock *bb);
+  void computeNodeProperty(const BasicBlock * in_bb);
 
   //the function to sort nodes
   void orderNodes();
@@ -220,6 +224,13 @@
   const TargetMachine & getTarget() {
     return target;
   }
+
+  //get the basic block
+  BasicBlock* getBasicBlock() const {
+    return bb;
+  }
+
+
   //get the iteration interval
   const int getMII() {
     return MII;
@@ -265,8 +276,9 @@
   friend class ModuloSchedGraphSet;     //give access to ctor
 
 public:
-  ModuloSchedGraph(const BasicBlock *bb, const TargetMachine &_target)
-    :SchedGraphCommon(bb), target(_target)
+  ModuloSchedGraph(BasicBlock * in_bb, 
+		   const TargetMachine & in_target)
+    :SchedGraphCommon(), bb(in_bb),target(in_target)
   {
     buildGraph(target);
   }


Index: llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h
diff -u llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h:1.5 llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h:1.6
--- llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h:1.5	Thu May 29 19:17:09 2003
+++ llvm/lib/CodeGen/ModuloScheduling/ModuloScheduling.h	Mon Jun  2 12:48:56 2003
@@ -65,7 +65,7 @@
     graph(_graph), target(graph.getTarget()), oNodes(graph.getONodes())
   {
     II = graph.getMII();
-    bb = (BasicBlock *) graph.getBasicBlocks()[0];
+    bb = graph.getBasicBlock();
     instrScheduling();
   };
 





More information about the llvm-commits mailing list