Move to operand constraints for two-address instructions.
authorEvan Cheng <evan.cheng@apple.com>
Sat, 4 Nov 2006 09:42:53 +0000 (09:42 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sat, 4 Nov 2006 09:42:53 +0000 (09:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31452 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/ScheduleDAG.h

index 5d85d374338d79502db0b4bb28b7ec26072f898f..5b96f02a6cb7cb13ebf905c744fb8a3bd90161b4 100644 (file)
@@ -154,7 +154,8 @@ namespace llvm {
   public:
     virtual ~SchedulingPriorityQueue() {}
   
-    virtual void initNodes(std::vector<SUnit> &SUnits) = 0;
+    virtual void initNodes(std::map<SDNode*, SUnit*> &SUMap,
+                           std::vector<SUnit> &SUnits) = 0;
     virtual void releaseState() = 0;
   
     virtual bool empty() const = 0;
@@ -225,6 +226,16 @@ namespace llvm {
     void CalculateDepths();
     void CalculateHeights();
 
+    /// CountResults - The results of target nodes have register or immediate
+    /// operands first, then an optional chain, and optional flag operands
+    /// (which do not go into the machine instrs.)
+    static unsigned CountResults(SDNode *Node);
+
+    /// CountOperands  The inputs to target nodes have any actual inputs first,
+    /// followed by an optional chain operand, then flag operands.  Compute the
+    /// number of actual operands that  will go into the machine instr.
+    static unsigned CountOperands(SDNode *Node);
+
     /// EmitNode - Generate machine code for an node and needed dependencies.
     /// VRBaseMap contains, for each already emitted node, the first virtual
     /// register number for the results of the node.