TableGen: Enumerate Schedule Model too.
authorVincent Lejeune <vljn@ovi.com>
Wed, 31 Jul 2013 19:31:20 +0000 (19:31 +0000)
committerVincent Lejeune <vljn@ovi.com>
Wed, 31 Jul 2013 19:31:20 +0000 (19:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187511 91177308-0d34-0410-b5e6-96231b3b80d8

docs/WritingAnLLVMBackend.rst
utils/TableGen/InstrInfoEmitter.cpp

index 73381b545177be3a94236783ab26fa8e024fa09b..85d0de11e8227d665b91112b186f34a75d6842b0 100644 (file)
@@ -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
 ----------------------------
 
index c8304de7b16d9f4365e6bed1dfc1986de2f2ac83..b3fa08f852e99b6221b5bc017df3d4b9eb3af53b 100644 (file)
@@ -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";