From 1bc4e8a26a96a9a7a821a5d92430b39039ca0d69 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Sat, 4 Nov 2006 09:42:53 +0000 Subject: [PATCH] Move to operand constraints for two-address instructions. llvm-svn: 31452 --- llvm/include/llvm/CodeGen/ScheduleDAG.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/llvm/include/llvm/CodeGen/ScheduleDAG.h b/llvm/include/llvm/CodeGen/ScheduleDAG.h index 5d85d374338d..5b96f02a6cb7 100644 --- a/llvm/include/llvm/CodeGen/ScheduleDAG.h +++ b/llvm/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.