mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-27 06:54:30 +00:00
[docs] Document how to debug instruction scheduling model generation
Describe: + Exact tablegen command and how to get it + tablegen command debug option for subtarget generation + Use of schedcover.py on the debug output to determine coverage Differential Revision: https://reviews.llvm.org/D35058 llvm-svn: 308476
This commit is contained in:
parent
5f3fdb3f16
commit
407a00e12b
@ -1012,6 +1012,46 @@ value can be named by an enumemation in llvm::XXX::Sched namespace generated
|
||||
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
|
||||
|
||||
$ <src>/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
|
||||
|
||||
$ <build>/bin/llvm-tblgen -debug-only=subtarget-emitter -gen-subtarget \
|
||||
-I <src>/lib/Target/<target> -I <src>/include \
|
||||
-I <src>/lib/Target <src>/lib/Target/<target>/<target>.td \
|
||||
-o <build>/lib/Target/<target>/<target>GenSubtargetInfo.inc.tmp \
|
||||
> tblGenSubtarget.dbg 2>&1
|
||||
|
||||
Where ``<build>`` is the build directory, ``src`` is the source directory,
|
||||
and ``<target>`` 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
|
||||
----------------------------
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user