diff options
author | Evan Cheng <evan.cheng@apple.com> | 2005-12-08 02:00:36 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2005-12-08 02:00:36 +0000 |
commit | 0fc71988900e600f3ef5b13d9682e2bbab92811d (patch) | |
tree | da55a15927c1eb9a0fb2e8007e0697a08a32e9f3 /utils/TableGen/CodeGenTarget.cpp | |
parent | cc827e60b67b2cbcf08a37b119e68081e4171b8a (diff) |
Added support for ComplexPattern. These are patterns that require C++ pattern
matching code that is not currently auto-generated by tblgen, e.g. X86
addressing mode. Selection routines for complex patterns can return multiple operands, e.g. X86 addressing mode returns 4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24634 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenTarget.cpp')
-rw-r--r-- | utils/TableGen/CodeGenTarget.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index fceb61f44c..d4d4187924 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -330,3 +330,12 @@ unsigned CodeGenInstruction::getOperandNamed(const std::string &Name) const { throw "Instruction '" + TheDef->getName() + "' does not have an operand named '$" + Name + "'!"; } + +//===----------------------------------------------------------------------===// +// ComplexPattern implementation +// +ComplexPattern::ComplexPattern(Record *R) { + NumOperands = R->getValueAsInt("NumOperands"); + SelectFunc = R->getValueAsString("SelectFunc"); + MatchingNodes = R->getValueAsListOfDefs("MatchingNodes"); +} |