summaryrefslogtreecommitdiff
path: root/utils/TableGen/FastISelEmitter.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-08-19 20:30:54 +0000
committerDan Gohman <gohman@apple.com>2008-08-19 20:30:54 +0000
commitf4137b5f409525b41ec4d4bff56c54fd2a9db274 (patch)
tree223308dc1e201168bd02ce2c41ec5c27267c69be /utils/TableGen/FastISelEmitter.cpp
parentd0743982e62294b92d60e841b18c979a0dea98ed (diff)
downloadllvm-f4137b5f409525b41ec4d4bff56c54fd2a9db274.tar.gz
llvm-f4137b5f409525b41ec4d4bff56c54fd2a9db274.tar.bz2
llvm-f4137b5f409525b41ec4d4bff56c54fd2a9db274.tar.xz
Add more checking to filter out more kinds of things that
FastISel doesn't support yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55002 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/FastISelEmitter.cpp')
-rw-r--r--utils/TableGen/FastISelEmitter.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/utils/TableGen/FastISelEmitter.cpp b/utils/TableGen/FastISelEmitter.cpp
index 67dde85a37..437383ba8b 100644
--- a/utils/TableGen/FastISelEmitter.cpp
+++ b/utils/TableGen/FastISelEmitter.cpp
@@ -180,9 +180,16 @@ void FastISelEmitter::run(std::ostream &OS) {
MVT::SimpleValueType VT = InstPatNode->getTypeNum(0);
// For now, filter out instructions which just set a register to
- // an Operand, like MOV32ri.
+ // an Operand or an immediate, like MOV32ri.
if (InstPatOp->isSubClassOf("Operand"))
continue;
+ if (InstPatOp->getName() == "imm" ||
+ InstPatOp->getName() == "fpimm")
+ continue;
+
+ // For now, filter out any instructions with predicates.
+ if (!InstPatNode->getPredicateFn().empty())
+ continue;
// Check all the operands. For now only accept register operands.
OperandsSignature Operands;
@@ -190,6 +197,9 @@ void FastISelEmitter::run(std::ostream &OS) {
TreePatternNode *Op = InstPatNode->getChild(i);
if (!Op->isLeaf())
goto continue_label;
+ // For now, filter out any operand with a predicate.
+ if (!Op->getPredicateFn().empty())
+ goto continue_label;
DefInit *OpDI = dynamic_cast<DefInit*>(Op->getLeafValue());
if (!OpDI)
goto continue_label;