summaryrefslogtreecommitdiffstats
path: root/llvm/support/tools/TableGen/InstrSelectorEmitter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-08-12 05:19:49 +0000
committerChris Lattner <sabre@nondot.org>2003-08-12 05:19:49 +0000
commite5b8234685261d5f26a450669a9a5e1ca88c1490 (patch)
tree8fcd584f17ad9cdfd503b3ede02a98886a29004a /llvm/support/tools/TableGen/InstrSelectorEmitter.cpp
parent9f09954df9cd0ef68f311a1bc3363cd82dad524b (diff)
downloadbcm5719-llvm-e5b8234685261d5f26a450669a9a5e1ca88c1490.tar.gz
bcm5719-llvm-e5b8234685261d5f26a450669a9a5e1ca88c1490.zip
Fix emission of instructions that directly reference MBBs
llvm-svn: 7771
Diffstat (limited to 'llvm/support/tools/TableGen/InstrSelectorEmitter.cpp')
-rw-r--r--llvm/support/tools/TableGen/InstrSelectorEmitter.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/support/tools/TableGen/InstrSelectorEmitter.cpp b/llvm/support/tools/TableGen/InstrSelectorEmitter.cpp
index 9bc50cee715..28c7de11403 100644
--- a/llvm/support/tools/TableGen/InstrSelectorEmitter.cpp
+++ b/llvm/support/tools/TableGen/InstrSelectorEmitter.cpp
@@ -1205,15 +1205,21 @@ void InstrSelectorEmitter::run(std::ostream &OS) {
if (P->getResult()) OS << ", NewReg";
OS << ")";
- for (unsigned i = 0, e = Operands.size(); i != e; ++i)
- if (Operands[i].first->isLeaf()) {
- Record *RV = Operands[i].first->getValueRecord();
+ for (unsigned i = 0, e = Operands.size(); i != e; ++i) {
+ TreePatternNode *Op = Operands[i].first;
+ if (Op->isLeaf()) {
+ Record *RV = Op->getValueRecord();
assert(RV->isSubClassOf("RegisterClass") &&
"Only handles registers here so far!");
OS << ".addReg(" << Operands[i].second << "->Val)";
- } else {
+ } else if (Op->getOperator()->getName() == "imm") {
OS << ".addZImm(" << Operands[i].second << "->Val)";
+ } else if (Op->getOperator()->getName() == "basicblock") {
+ OS << ".addMBB(" << Operands[i].second << "->Val)";
+ } else {
+ assert(0 && "Unknown value type!");
}
+ }
OS << ";\n";
break;
case Pattern::Expander: {
OpenPOWER on IntegriCloud