diff options
author | Evan Cheng <evan.cheng@apple.com> | 2005-12-08 02:14:08 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2005-12-08 02:14:08 +0000 |
commit | 3aa39f439a0971a2502b2c728a8006becaf96601 (patch) | |
tree | e6801bc85862c41d7505df78b05077ec97056802 | |
parent | ec693f77c03f5511001bfcac8180de6b551f7b1d (diff) | |
download | llvm-3aa39f439a0971a2502b2c728a8006becaf96601.tar.gz llvm-3aa39f439a0971a2502b2c728a8006becaf96601.tar.bz2 llvm-3aa39f439a0971a2502b2c728a8006becaf96601.tar.xz |
* Added an explicit type field to ComplexPattern.
* Renamed MatchingNodes to RootNodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24636 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | utils/TableGen/CodeGenTarget.cpp | 8 | ||||
-rw-r--r-- | utils/TableGen/CodeGenTarget.h | 8 | ||||
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 5 |
3 files changed, 12 insertions, 9 deletions
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index d4d4187924..b16bc8831d 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -335,7 +335,9 @@ unsigned CodeGenInstruction::getOperandNamed(const std::string &Name) const { // ComplexPattern implementation // ComplexPattern::ComplexPattern(Record *R) { - NumOperands = R->getValueAsInt("NumOperands"); - SelectFunc = R->getValueAsString("SelectFunc"); - MatchingNodes = R->getValueAsListOfDefs("MatchingNodes"); + Ty = ::getValueType(R->getValueAsDef("Ty")); + NumOperands = R->getValueAsInt("NumOperands"); + SelectFunc = R->getValueAsString("SelectFunc"); + RootNodes = R->getValueAsListOfDefs("RootNodes"); } + diff --git a/utils/TableGen/CodeGenTarget.h b/utils/TableGen/CodeGenTarget.h index 36b8759932..c7958d5a47 100644 --- a/utils/TableGen/CodeGenTarget.h +++ b/utils/TableGen/CodeGenTarget.h @@ -160,17 +160,19 @@ public: /// ComplexPattern - ComplexPattern info, corresponding to the ComplexPattern /// tablegen class in TargetSelectionDAG.td class ComplexPattern { + MVT::ValueType Ty; unsigned NumOperands; std::string SelectFunc; - std::vector<Record*> MatchingNodes; + std::vector<Record*> RootNodes; public: ComplexPattern() : NumOperands(0) {}; ComplexPattern(Record *R); + MVT::ValueType getValueType() const { return Ty; } unsigned getNumOperands() const { return NumOperands; } const std::string &getSelectFunc() const { return SelectFunc; } - const std::vector<Record*> &getMatchingNodes() const { - return MatchingNodes; + const std::vector<Record*> &getRootNodes() const { + return RootNodes; } }; diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index cf5abc2de0..3379f4695a 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -478,8 +478,7 @@ static unsigned char getIntrinsicType(Record *R, bool NotRegisters, // Using a VTSDNode or CondCodeSDNode. return MVT::Other; } else if (R->isSubClassOf("ComplexPattern")) { - const CodeGenTarget &T = TP.getDAGISelEmitter().getTargetInfo(); - return T.getPointerType(); + return TP.getDAGISelEmitter().getComplexPattern(R).getValueType(); } else if (R->getName() == "node") { // Placeholder. return MVT::isUnknown; @@ -2256,7 +2255,7 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) { dynamic_cast<IntInit*>(Node->getLeafValue())) { PatternsByOpcode[getSDNodeNamed("imm")].push_back(&PatternsToMatch[i]); } else if ((CP = NodeGetComplexPattern(Node, *this))) { - std::vector<Record*> OpNodes = CP->getMatchingNodes(); + std::vector<Record*> OpNodes = CP->getRootNodes(); for (unsigned j = 0, e = OpNodes.size(); j != e; j++) { PatternsByOpcode[OpNodes[j]].insert(PatternsByOpcode[OpNodes[j]].begin(), &PatternsToMatch[i]); |