forked from OSchip/llvm-project
[TableGen] Make CodeGenMapTable understand the namespace field of an instruction
Do not force the backends to use target name as namespace. Original patch by Mattias Eriksson Reviewers: stoklund, craig.topper Reviewed By: stoklund Subscribers: materi, llvm-commits Differential Revision: https://reviews.llvm.org/D31322 llvm-svn: 298834
This commit is contained in:
parent
1dcec25487
commit
bb6cf7378f
|
@ -367,7 +367,7 @@ unsigned MapTableEmitter::emitBinSearchTable(raw_ostream &OS) {
|
|||
|
||||
ArrayRef<const CodeGenInstruction*> NumberedInstructions =
|
||||
Target.getInstructionsByEnumValue();
|
||||
std::string TargetName = Target.getName();
|
||||
std::string Namespace = Target.getInstNamespace();
|
||||
const std::vector<ListInit*> &ValueCols = InstrMapDesc.getValueCols();
|
||||
unsigned NumCol = ValueCols.size();
|
||||
unsigned TotalNumInstr = NumberedInstructions.size();
|
||||
|
@ -387,22 +387,22 @@ unsigned MapTableEmitter::emitBinSearchTable(raw_ostream &OS) {
|
|||
if (ColInstrs[j] != nullptr) {
|
||||
RelExists = 1;
|
||||
OutStr += ", ";
|
||||
OutStr += TargetName;
|
||||
OutStr += Namespace;
|
||||
OutStr += "::";
|
||||
OutStr += ColInstrs[j]->getName();
|
||||
} else { OutStr += ", (uint16_t)-1U";}
|
||||
}
|
||||
|
||||
if (RelExists) {
|
||||
OS << " { " << TargetName << "::" << CurInstr->getName();
|
||||
OS << " { " << Namespace << "::" << CurInstr->getName();
|
||||
OS << OutStr <<" },\n";
|
||||
TableSize++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!TableSize) {
|
||||
OS << " { " << TargetName << "::" << "INSTRUCTION_LIST_END, ";
|
||||
OS << TargetName << "::" << "INSTRUCTION_LIST_END }";
|
||||
OS << " { " << Namespace << "::" << "INSTRUCTION_LIST_END, ";
|
||||
OS << Namespace << "::" << "INSTRUCTION_LIST_END }";
|
||||
}
|
||||
OS << "}; // End of " << InstrMapDesc.getName() << "Table\n\n";
|
||||
return TableSize;
|
||||
|
@ -567,7 +567,7 @@ namespace llvm {
|
|||
//===----------------------------------------------------------------------===//
|
||||
void EmitMapTable(RecordKeeper &Records, raw_ostream &OS) {
|
||||
CodeGenTarget Target(Records);
|
||||
std::string TargetName = Target.getName();
|
||||
std::string NameSpace = Target.getInstNamespace();
|
||||
std::vector<Record*> InstrMapVec;
|
||||
InstrMapVec = Records.getAllDerivedDefinitions("InstrMapping");
|
||||
|
||||
|
@ -577,7 +577,7 @@ void EmitMapTable(RecordKeeper &Records, raw_ostream &OS) {
|
|||
OS << "#ifdef GET_INSTRMAP_INFO\n";
|
||||
OS << "#undef GET_INSTRMAP_INFO\n";
|
||||
OS << "namespace llvm {\n\n";
|
||||
OS << "namespace " << TargetName << " {\n\n";
|
||||
OS << "namespace " << NameSpace << " {\n\n";
|
||||
|
||||
// Emit coulumn field names and their values as enums.
|
||||
emitEnums(OS, Records);
|
||||
|
@ -600,7 +600,7 @@ void EmitMapTable(RecordKeeper &Records, raw_ostream &OS) {
|
|||
// Emit map tables and the functions to query them.
|
||||
IMap.emitTablesWithFunc(OS);
|
||||
}
|
||||
OS << "} // End " << TargetName << " namespace\n";
|
||||
OS << "} // End " << NameSpace << " namespace\n";
|
||||
OS << "} // End llvm namespace\n";
|
||||
OS << "#endif // GET_INSTRMAP_INFO\n\n";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue