*** empty log message ***
[oota-llvm.git] / lib / CodeGen / InstrSched / SchedGraph.h
index 82e5dd619b3ea84af363f62a1ae24c4ed3691d97..4e67f40d5722cb463c1a756a732c626bc622762e 100644 (file)
 #ifndef LLVM_CODEGEN_SCHEDGRAPH_H
 #define LLVM_CODEGEN_SCHEDGRAPH_H
 
+#include "llvm/CodeGen/SchedGraphCommon.h"
 #include "llvm/CodeGen/MachineInstr.h"
-#include "Support/GraphTraits.h"
-#include "Support/hash_map"
 #include "llvm/Transforms/Scalar.h"
-#include "llvm/CodeGen/SchedGraphCommon.h"
+#include "Support/hash_map"
+#include "Support/GraphTraits.h"
+
 
 class RegToRefVecMap;
 class ValueToDefVecMap;
@@ -31,21 +32,23 @@ class SchedGraphNode : public SchedGraphNodeCommon {
   const MachineInstr *MI;
 
 
-  SchedGraphNode (unsigned nodeId, MachineBasicBlock *mbb,
-                 int   indexInBB, const TargetMachine& Target);
-  ~SchedGraphNode      ();
+  SchedGraphNode(unsigned nodeId, MachineBasicBlock *mbb, int indexInBB, 
+                const TargetMachine& Target);
+  ~SchedGraphNode();
 
   friend class SchedGraph;             // give access for ctor and dtor
   friend class SchedGraphEdge;         // give access for adding edges
 
 public:
+
   // Accessor methods
-  const MachineInstr*   getMachineInstr        () const { return MI; }
-  const MachineOpCode   getOpCode      () const { return MI->getOpCode(); }
-  bool                 isDummyNode     () const { return (MI == NULL); }
-  MachineBasicBlock    &getMachineBasicBlock() const { return *MBB; }
+  const MachineInstr* getMachineInstr() const { return MI; }
+  const MachineOpCode getOpCode() const { return MI->getOpCode(); }
+  bool isDummyNode() const { return (MI == NULL); }
+  MachineBasicBlock &getMachineBasicBlock() const { return *MBB; }
 
-  int               getOrigIndexInBB() const { return origIndexInBB; }
+  int getOrigIndexInBB() const { return origIndexInBB; }
+  void print(std::ostream &os) const;
 };
 
 class SchedGraph : public SchedGraphCommon {
@@ -56,15 +59,15 @@ public:
   typedef hash_map<const MachineInstr*, SchedGraphNode*>::const_iterator iterator;
   typedef hash_map<const MachineInstr*, SchedGraphNode*>::const_iterator const_iterator;
     
-  MachineBasicBlock&               getBasicBlock() const{return MBB;}
-  const unsigned int              getNumNodes()    const { return GraphMap.size()+2; }
+  MachineBasicBlock& getBasicBlock() const{return MBB;}
+  const unsigned int getNumNodes() const { return GraphMap.size()+2; }
   SchedGraphNode* getGraphNodeForInstr(const MachineInstr* MI) const {
     const_iterator onePair = find(MI);
     return (onePair != end())? onePair->second : NULL;
   }
   
   // Debugging support
-  void         dump    () const;
+  void dump() const;
   
 protected:
   SchedGraph(MachineBasicBlock& mbb, const TargetMachine& TM);
@@ -89,12 +92,9 @@ protected:
   
 private:
   friend class SchedGraphSet;          // give access to ctor
-  
-  
+    
   inline void  noteGraphNodeForInstr   (const MachineInstr* minstr,
-                                        SchedGraphNode* node)
-  {
+                                        SchedGraphNode* node) {
     assert((*this)[minstr] == NULL);
     (*this)[minstr] = node;
   }
@@ -102,50 +102,46 @@ private:
   //
   // Graph builder
   //
-  void         buildGraph              (const TargetMachine& target);
+  void buildGraph(const TargetMachine& target);
   
-   void          buildNodesForBB         (const TargetMachine& target,
-                                         MachineBasicBlock &MBB,
-                                         std::vector<SchedGraphNode*>& memNV,
-                                         std::vector<SchedGraphNode*>& callNV,
-                                         RegToRefVecMap& regToRefVecMap,
-                                         ValueToDefVecMap& valueToDefVecMap);
+  void  buildNodesForBB(const TargetMachine& target,MachineBasicBlock &MBB,
+                       std::vector<SchedGraphNode*>& memNV,
+                       std::vector<SchedGraphNode*>& callNV,
+                       RegToRefVecMap& regToRefVecMap,
+                       ValueToDefVecMap& valueToDefVecMap);
 
   
-  void          findDefUseInfoAtInstr   (const TargetMachine& target,
-                                         SchedGraphNode* node,
-                                         std::vector<SchedGraphNode*>& memNV,
-                                         std::vector<SchedGraphNode*>& callNV,
-                                         RegToRefVecMap& regToRefVecMap,
-                                         ValueToDefVecMap& valueToDefVecMap);
-
+  void findDefUseInfoAtInstr(const TargetMachine& target, SchedGraphNode* node,
+                            std::vector<SchedGraphNode*>& memNV,
+                            std::vector<SchedGraphNode*>& callNV,
+                            RegToRefVecMap& regToRefVecMap,
+                            ValueToDefVecMap& valueToDefVecMap);
                                          
-  void         addEdgesForInstruction(const MachineInstr& minstr,
-                                     const ValueToDefVecMap& valueToDefVecMap,
-                                     const TargetMachine& target);
+  void addEdgesForInstruction(const MachineInstr& minstr,
+                             const ValueToDefVecMap& valueToDefVecMap,
+                             const TargetMachine& target);
   
-  void         addCDEdges              (const TerminatorInst* term,
-                                        const TargetMachine& target);
+  void addCDEdges(const TerminatorInst* term, const TargetMachine& target);
   
-  void         addMemEdges         (const std::vector<SchedGraphNode*>& memNod,
-                                     const TargetMachine& target);
+  void addMemEdges(const std::vector<SchedGraphNode*>& memNod,
+                  const TargetMachine& target);
   
-  void          addCallCCEdges      (const std::vector<SchedGraphNode*>& memNod,
-                                     MachineBasicBlock& bbMvec,
-                                     const TargetMachine& target);
-  void          addCallDepEdges     (const std::vector<SchedGraphNode*>& callNV,
-                                     const TargetMachine& target);
+  void addCallCCEdges(const std::vector<SchedGraphNode*>& memNod,
+                     MachineBasicBlock& bbMvec,
+                     const TargetMachine& target);
+
+  void addCallDepEdges(const std::vector<SchedGraphNode*>& callNV,
+                      const TargetMachine& target);
   
-  void         addMachineRegEdges      (RegToRefVecMap& regToRefVecMap,
-                                        const TargetMachine& target);
+  void addMachineRegEdges(RegToRefVecMap& regToRefVecMap,
+                         const TargetMachine& target);
   
-  void         addEdgesForValue        (SchedGraphNode* refNode,
-                                         const RefVec& defVec,
-                                         const Value* defValue,
-                                         bool  refNodeIsDef,
-                                         bool  refNodeIsDefAndUse,
-                                        const TargetMachine& target);
-  void          addDummyEdges();
+  void addEdgesForValue(SchedGraphNode* refNode, const RefVec& defVec,
+                       const Value* defValue, bool  refNodeIsDef,
+                       bool  refNodeIsDefAndUse,
+                       const TargetMachine& target);
+
+  void addDummyEdges();
 
 };
 
@@ -156,7 +152,7 @@ class SchedGraphSet {
   std::vector<SchedGraph*> Graphs;
 
   // Graph builder
-  void buildGraphsForMethod (const Function *F, const TargetMachine& target);
+  void buildGraphsForMethod(const Function *F, const TargetMachine& target);
 
   inline void addGraph(SchedGraph* graph) {
     assert(graph != NULL);
@@ -164,7 +160,7 @@ class SchedGraphSet {
   }  
 
 public:
-  SchedGraphSet(const Function * function, const TargetMachine& target);
+  SchedGraphSet(const Function *function, const TargetMachine& target);
   ~SchedGraphSet();
   
   //iterators
@@ -200,7 +196,7 @@ public:
   
   // operator*() differs for pred or succ iterator
   inline _NodeType* operator*() const { return (_NodeType*)(*oi)->getSrc(); }
-  inline        _NodeType* operator->() const { return operator*(); }
+  inline _NodeType* operator->() const { return operator*(); }
   
   inline _EdgeType* getEdge() const { return *(oi); }
   
@@ -228,7 +224,7 @@ public:
   inline bool operator!=(const _Self& x) const { return !operator==(x); }
   
   inline _NodeType* operator*() const { return (_NodeType*)(*oi)->getSink(); }
-  inline        _NodeType* operator->() const { return operator*(); }
+  inline _NodeType* operator->() const { return operator*(); }
   
   inline _EdgeType* getEdge() const { return *(oi); }
   
@@ -252,16 +248,16 @@ typedef SGPredIterator<SchedGraphNode, SchedGraphEdge, SchedGraphNode::iterator>
 typedef SGPredIterator<const SchedGraphNode, const SchedGraphEdge,SchedGraphNode::const_iterator>
     sg_pred_const_iterator;
 
-inline sg_pred_iterator       pred_begin(      SchedGraphNode *N) {
+inline sg_pred_iterator pred_begin(SchedGraphNode *N) {
   return sg_pred_iterator(N->beginInEdges());
 }
-inline sg_pred_iterator       pred_end(        SchedGraphNode *N) {
+inline sg_pred_iterator pred_end(SchedGraphNode *N) {
   return sg_pred_iterator(N->endInEdges());
 }
 inline sg_pred_const_iterator pred_begin(const SchedGraphNode *N) {
   return sg_pred_const_iterator(N->beginInEdges());
 }
-inline sg_pred_const_iterator pred_end(  const SchedGraphNode *N) {
+inline sg_pred_const_iterator pred_end(const SchedGraphNode *N) {
   return sg_pred_const_iterator(N->endInEdges());
 }
 
@@ -275,16 +271,16 @@ typedef SGSuccIterator<SchedGraphNode, SchedGraphEdge, SchedGraphNode::iterator>
 typedef SGSuccIterator<const SchedGraphNode, const SchedGraphEdge,SchedGraphNode::const_iterator>
     sg_succ_const_iterator;
 
-inline sg_succ_iterator       succ_begin(      SchedGraphNode *N) {
+inline sg_succ_iterator succ_begin(SchedGraphNode *N) {
   return sg_succ_iterator(N->beginOutEdges());
 }
-inline sg_succ_iterator       succ_end(        SchedGraphNode *N) {
+inline sg_succ_iterator succ_end(SchedGraphNode *N) {
   return sg_succ_iterator(N->endOutEdges());
 }
 inline sg_succ_const_iterator succ_begin(const SchedGraphNode *N) {
   return sg_succ_const_iterator(N->beginOutEdges());
 }
-inline sg_succ_const_iterator succ_end(  const SchedGraphNode *N) {
+inline sg_succ_const_iterator succ_end(const SchedGraphNode *N) {
   return sg_succ_const_iterator(N->endOutEdges());
 }
 
@@ -319,8 +315,4 @@ template <> struct GraphTraits<const SchedGraph*> {
   }
 };
 
-
-std::ostream &operator<<(std::ostream& os, const SchedGraphEdge& edge);
-std::ostream &operator<<(std::ostream &os, const SchedGraphNode& node);
-
 #endif