llvm-project/llvm/docs/CommandGuide
Michael Maitland 98e342dca2 [RISCV][llvm-mca] Use LMUL Instruments to provide more accurate reports on RISCV
On x86 and AArch, SIMD instructions encode all of the scheduling information in the instruction
itself. For example, VADD.I16 q0, q1, q2 is a neon instruction that operates on 16-bit integer
elements stored in 128-bit Q registers, which leads to eight 16-bit lanes in parallel. This kind
of information impacts how the instruction takes to execute and what dependencies this may cause.

On RISCV however, the data that impacts scheduling is encoded in CSR registers such as vtype or
vl, in addition with the instruction itself. But MCA does not track or use the data in these
registers. This patch fixes this problem by introducing Instruments into MCA.

* Replace `CodeRegions` with `AnalysisRegions`
* Add `Instrument` and `InstrumentManager`
* Add `InstrumentRegions`
* Add RISCV Instrument and `InstrumentManager`
* Parse `Instruments` in driver
* Use instruments to override schedule class
* RISCV use lmul instrument to override schedule class
* Fix unit tests to pass empty instruments
* Add -ignore-im clopt to disable this change

A prior version of this patch was commited in 5e82ee5373. 2323a4ee61 reverted
that change because the unit test files caused build errors. The change with fixes
were committed in b88b8307bf but reverted once again e8e92c8313 due to more
build errors.

This commit adds the prior changes and fixes the build error.

Differential Revision: https://reviews.llvm.org/D137440
2022-11-18 09:55:15 -08:00
..
FileCheck.rst Update FileCheck docs after D95849. NFCI 2022-06-16 08:18:12 +00:00
bugpoint.rst
clang-tblgen.rst
dsymutil.rst [dsymutil] Automatically generate a reproducer when dsymutil crashes 2022-06-14 16:00:08 -07:00
index.rst Recommit [llvm-debuginfo-analyzer] (02/09) - Driver and documentation 2022-10-18 08:39:26 +01:00
lit.rst [lit] Implement DEFINE and REDEFINE directives 2022-09-21 11:32:05 -04:00
llc.rst Add missing word in llc docs 2022-04-14 22:29:03 -04:00
lldb-tblgen.rst
lli.rst
llvm-addr2line.rst
llvm-ar.rst [AIX][NFC] modify the llvm-ar help information for big archive. 2022-07-22 13:52:18 -04:00
llvm-as.rst
llvm-bcanalyzer.rst [docs][tools] Remove old llvm-bcanalyzer options 2022-05-19 11:07:03 -07:00
llvm-config.rst [llvm-config] Remove --src-root option 2022-11-02 18:45:15 +01:00
llvm-cov.rst [llvm-cov] Remove deprecated -name-whitelist after D112816 2022-08-01 18:53:20 -07:00
llvm-cxxfilt.rst
llvm-cxxmap.rst
llvm-debuginfo-analyzer.rst Recommit [llvm-debuginfo-analyzer] (02/09) - Driver and documentation 2022-10-18 08:39:26 +01:00
llvm-diff.rst
llvm-dis.rst
llvm-dwarfdump.rst [llvm-dwarfdump] --show-sources option to show all sources 2022-06-30 09:53:08 -07:00
llvm-dwarfutil.rst [Reland][Debuginfo][llvm-dwarfutil] llvm-dwarfutil dsymutil-like tool for ELF. 2022-07-19 15:11:36 +03:00
llvm-exegesis-analysis.png
llvm-exegesis.rst
llvm-extract.rst
llvm-ifs.rst [ifs] Add --strip-size flag 2022-05-14 18:50:20 +00:00
llvm-install-name-tool.rst
llvm-lib.rst
llvm-libtool-darwin.rst
llvm-link.rst
llvm-lipo.rst
llvm-locstats.rst
llvm-mca.rst [RISCV][llvm-mca] Use LMUL Instruments to provide more accurate reports on RISCV 2022-11-18 09:55:15 -08:00
llvm-nm.rst Fixed llvm-nm.rst:145:Block quote ends without a blank line; unexpected unindent. 2022-09-19 13:00:25 -04:00
llvm-objcopy.rst [llvm-objcopy] Support --{,de}compress-debug-sections for zstd 2022-09-08 00:59:14 -07:00
llvm-objdump.rst [llvm-objdump] Set --print-imm-hex by default. 2022-10-30 13:36:18 -07:00
llvm-otool.rst [llvm-objdump --macho] Rename --dyld_info to --dyld-info 2022-08-17 12:58:29 -04:00
llvm-pdbutil.rst
llvm-profdata.rst [llvm-profdata] Rename show flag to --show-format 2022-10-07 11:35:07 -07:00
llvm-profgen.rst
llvm-ranlib.rst [llvm-ranlib] Support more than one input file 2022-08-08 10:15:39 -07:00
llvm-readelf.rst
llvm-readobj.rst [XCOFF] llvvm-readobj support display symbol table of loader section of xcoff object file. 2022-11-18 12:11:13 -05:00
llvm-remark-size-diff.rst Recommit "[Docs] Add documentation for llvm-remark-size-diff" 2022-03-30 13:37:49 -07:00
llvm-remarkutil.rst [llvm-remarkutil] Add an option to print out function sizes 2022-09-28 15:45:55 -07:00
llvm-size.rst
llvm-stress.rst
llvm-strings.rst
llvm-strip.rst Fix llvm-strip --only-keep-debug documentation for ELF 2022-03-18 06:49:05 +00:00
llvm-symbolizer.rst [llvm-objdump] Find debug information with Build ID/debuginfod. 2022-10-03 16:17:45 -07:00
llvm-tblgen.rst
llvm-tli-checker.rst
locstats-compare.png
locstats-draw-plot.png
mlir-tblgen.rst
opt.rst [docs] Replace `opt -analyze` with better alternatives. 2022-02-10 15:38:31 -08:00
tblgen.rst