From 2ca1e4a39c7e0d7a00e66ff5437c6d7ace2404a0 Mon Sep 17 00:00:00 2001 From: Vincent Lejeune Date: Wed, 31 Jul 2013 19:31:20 +0000 Subject: [PATCH] TableGen: Enumerate Schedule Model too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187511 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/WritingAnLLVMBackend.rst | 5 +++++ utils/TableGen/InstrInfoEmitter.cpp | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/docs/WritingAnLLVMBackend.rst b/docs/WritingAnLLVMBackend.rst index 73381b54517..85d0de11e82 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 c8304de7b16..b3fa08f852e 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";