aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
diff options
context:
space:
mode:
authorMichael Maitland <michaeltmaitland@gmail.com>2022-11-04 08:51:39 -0700
committerMichael Maitland <michaeltmaitland@gmail.com>2022-11-15 07:54:06 -0800
commit5e82ee5373211db8522181054800ccd49461d9d8 (patch)
tree0e9f4c46e229e5f853de8e536e9a2de2971d03b4 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
parent2fb3e3c46d57db51459160801f17f6f3b0f83300 (diff)
downloadllvm-5e82ee5373211db8522181054800ccd49461d9d8.zip
llvm-5e82ee5373211db8522181054800ccd49461d9d8.tar.gz
llvm-5e82ee5373211db8522181054800ccd49461d9d8.tar.bz2
[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 Differential Revision: https://reviews.llvm.org/D137440
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions