From 7b05bd58149f7984257d7881aaa2bd9407628754 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Fri, 23 Dec 2005 22:11:47 +0000 Subject: * Support for hasInFlag and hasOutFlag (on instructions). Remove nameless FLAG support which is fragile. * Fixed a number of bugs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24996 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/DAGISelEmitter.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'utils/TableGen/DAGISelEmitter.h') diff --git a/utils/TableGen/DAGISelEmitter.h b/utils/TableGen/DAGISelEmitter.h index b53ec7d..5b3aa63 100644 --- a/utils/TableGen/DAGISelEmitter.h +++ b/utils/TableGen/DAGISelEmitter.h @@ -328,19 +328,23 @@ namespace llvm { std::vector Results; std::vector Operands; std::vector ImpResults; + std::vector ImpOperands; TreePatternNode *ResultPattern; public: DAGInstruction(TreePattern *TP, const std::vector &results, const std::vector &operands, - const std::vector &impresults) + const std::vector &impresults, + const std::vector &impoperands) : Pattern(TP), Results(results), Operands(operands), - ImpResults(impresults), ResultPattern(0) {} + ImpResults(impresults), ImpOperands(impoperands), + ResultPattern(0) {} TreePattern *getPattern() const { return Pattern; } unsigned getNumResults() const { return Results.size(); } unsigned getNumOperands() const { return Operands.size(); } unsigned getNumImpResults() const { return ImpResults.size(); } + unsigned getNumImpOperands() const { return ImpOperands.size(); } void setResultPattern(TreePatternNode *R) { ResultPattern = R; } @@ -359,6 +363,11 @@ namespace llvm { return ImpResults[RN]; } + Record *getImpOperand(unsigned ON) const { + assert(ON < ImpOperands.size()); + return ImpOperands[ON]; + } + TreePatternNode *getResultPattern() const { return ResultPattern; } }; @@ -444,6 +453,7 @@ private: std::map &InstInputs, std::map &InstResults, + std::vector &InstImpInputs, std::vector &InstImpResults); void EmitCodeForPattern(PatternToMatch &Pattern, std::ostream &OS); void EmitInstructionSelector(std::ostream &OS); -- cgit v1.1