summaryrefslogtreecommitdiff
path: root/utils/TableGen/InstrInfoEmitter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-05-01 23:46:16 +0000
committerChris Lattner <sabre@nondot.org>2006-05-01 23:46:16 +0000
commiteff5c3623848152b60457318af8e23df25496449 (patch)
treed5bf713019a997595aab7ccd62bfee63381e9983 /utils/TableGen/InstrInfoEmitter.cpp
parent1c174c62b87ea2403b7b6cee2e0128a69db58c88 (diff)
downloadllvm-eff5c3623848152b60457318af8e23df25496449.tar.gz
llvm-eff5c3623848152b60457318af8e23df25496449.tar.bz2
llvm-eff5c3623848152b60457318af8e23df25496449.tar.xz
Put instruction names into the first non TargetInstrInfo namespace found.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28043 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/InstrInfoEmitter.cpp')
-rw-r--r--utils/TableGen/InstrInfoEmitter.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp
index 35fbed3793..d39a51f5e9 100644
--- a/utils/TableGen/InstrInfoEmitter.cpp
+++ b/utils/TableGen/InstrInfoEmitter.cpp
@@ -28,23 +28,31 @@ void InstrInfoEmitter::runEnums(std::ostream &OS) {
// We must emit the PHI opcode first...
Record *InstrInfo = Target.getInstructionSet();
- std::string Namespace = Target.inst_begin()->second.Namespace;
-
- if (!Namespace.empty())
- OS << "namespace " << Namespace << " {\n";
- OS << " enum {\n";
+ std::string Namespace;
+ for (CodeGenTarget::inst_iterator II = Target.inst_begin(),
+ E = Target.inst_end(); II != E; ++II) {
+ if (II->second.Namespace != "TargetInstrInfo") {
+ Namespace = II->second.Namespace;
+ break;
+ }
+ }
+
+ if (Namespace.empty()) {
+ std::cerr << "No instructions defined!\n";
+ exit(1);
+ }
std::vector<const CodeGenInstruction*> NumberedInstructions;
Target.getInstructionsByEnumValue(NumberedInstructions);
+ OS << "namespace " << Namespace << " {\n";
+ OS << " enum {\n";
for (unsigned i = 0, e = NumberedInstructions.size(); i != e; ++i) {
OS << " " << NumberedInstructions[i]->TheDef->getName()
- << ", \t// " << i << "\n";
+ << "\t= " << i << ",\n";
}
- OS << " INSTRUCTION_LIST_END\n";
- OS << " };\n";
- if (!Namespace.empty())
- OS << "}\n";
+ OS << " INSTRUCTION_LIST_END = " << NumberedInstructions.size() << "\n";
+ OS << " };\n}\n";
OS << "} // End llvm namespace \n";
}