From: Evan Cheng Date: Sat, 4 Nov 2006 09:42:53 +0000 (+0000) Subject: Move to operand constraints for two-address instructions. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=fe0b81759d207072ae468f5154f6a513c3a1be72;p=oota-llvm.git Move to operand constraints for two-address instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31452 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/ScheduleDAG.h b/include/llvm/CodeGen/ScheduleDAG.h index 5d85d374338..5b96f02a6cb 100644 --- a/include/llvm/CodeGen/ScheduleDAG.h +++ b/include/llvm/CodeGen/ScheduleDAG.h @@ -154,7 +154,8 @@ namespace llvm { public: virtual ~SchedulingPriorityQueue() {} - virtual void initNodes(std::vector &SUnits) = 0; + virtual void initNodes(std::map &SUMap, + std::vector &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.