Index: docs/WritingAnLLVMBackend.rst =================================================================== --- docs/WritingAnLLVMBackend.rst +++ docs/WritingAnLLVMBackend.rst @@ -1012,6 +1012,46 @@ by TableGen in XXXGenInstrInfo.inc. The name of the schedule classes are the same as provided in XXXSchedule.td plus a default NoItinerary class. +The schedule models are generated by TableGen by the SubtargetEmitter, +using the ``CodeGenSchedModels`` class. This is distinct from the itinerary +method of specifying machine resource use. The tool ``utils/schedcover.py`` +can be used to determine which instructions have been covered by the +schedule model description and which haven't. The first step is to use the +instructions below to create an output file. Then run ``schedcover.py`` on the +output file: + +.. code-block:: shell + + $ utils/schedcover.py build/lib/Target/AArch64/tblGenSubtarget.with + instruction, default, CortexA53Model, CortexA57Model, CycloneModel, ExynosM1Model, FalkorModel, KryoModel, ThunderX2T99Model, ThunderXT8XModel + ABSv16i8, WriteV, , , CyWriteV3, M1WriteNMISC1, FalkorWr_2VXVY_2cyc, KryoWrite_2cyc_XY_XY_150ln, , + ABSv1i64, WriteV, , , CyWriteV3, M1WriteNMISC1, FalkorWr_1VXVY_2cyc, KryoWrite_2cyc_XY_noRSV_67ln, , + ... + +To capture the debug output from generating a schedule model, change to the +appropriate target directory and use the following command: +command with the ``subtarget-emitter`` debug option: + +.. code-block:: shell + + $ /bin/llvm-tblgen -debug-only=subtarget-emitter -gen-subtarget \ + -I /../lib/Target/AArch64 -I /../include \ + -I /../lib/Target /../lib/Target//.td \ + -o /lib/Target//GenSubtargetInfo.inc.tmp \ + > tblGenSubtarget.dbg 2>&1 + +Where ```` is the build directory and ```` is the name of the +target. +To double check that the above command is what is needed, one can capture the +exact TableGen command from a build by using: + +.. code-block:: shell + + $ VERBOSE=1 make ... + +and search for ``llvm-tblgen`` commands in the output. + + Instruction Relation Mapping ----------------------------