summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/WritingAnLLVMBackend.rst5
-rw-r--r--utils/TableGen/InstrInfoEmitter.cpp7
2 files changed, 12 insertions, 0 deletions
diff --git a/docs/WritingAnLLVMBackend.rst b/docs/WritingAnLLVMBackend.rst
index 73381b5451..85d0de11e8 100644
--- a/docs/WritingAnLLVMBackend.rst
+++ b/docs/WritingAnLLVMBackend.rst
@@ -952,6 +952,11 @@ XXXInstrInfo.h:
int16_t getNamedOperandIdx(uint16_t Opcode, uint16_t NamedIndex);
} // End namespace XXX
+Instruction itineraries can be queried using MCDesc::getSchedClass(). The
+value can be named by an enum generated by TableGen in XXXGenInstrInfo.inc.
+The name of the schedule classes are the same as provided in XXXSchedule.td plus
+a default NoIntinerary class.
+
Instruction Relation Mapping
----------------------------
diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp
index c8304de7b1..b3fa08f852 100644
--- a/utils/TableGen/InstrInfoEmitter.cpp
+++ b/utils/TableGen/InstrInfoEmitter.cpp
@@ -545,6 +545,13 @@ void InstrInfoEmitter::emitEnums(raw_ostream &OS) {
<< "\t= " << i << ",\n";
}
OS << " INSTRUCTION_LIST_END = " << NumberedInstructions.size() << "\n";
+ OS << " };\n";
+ OS << " enum {\n";
+ for (unsigned i = 0, e = SchedModels.numInstrSchedClasses(); i != e; ++i) {
+ OS << " " << SchedModels.getSchedClass(i).Name
+ << "\t= " << i << ",\n";
+ }
+ OS << " SCHED_LIST_END = " << SchedModels.numInstrSchedClasses() << "\n";
OS << " };\n}\n";
OS << "} // End llvm namespace \n";