diff options
author | Pengcheng Wang <wangpengcheng.pp@bytedance.com> | 2025-08-21 16:38:53 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-21 16:38:53 +0800 |
commit | 17a98f85c2f3b1906b5b7368cfe1d6927b1f388f (patch) | |
tree | 2631faa18a289301317e966f7bd2ea8fede06b0a /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp | |
parent | 2e74cc6c04fc61b5524d3b17a4eff53bffa1b207 (diff) | |
download | llvm-17a98f85c2f3b1906b5b7368cfe1d6927b1f388f.zip llvm-17a98f85c2f3b1906b5b7368cfe1d6927b1f388f.tar.gz llvm-17a98f85c2f3b1906b5b7368cfe1d6927b1f388f.tar.bz2 |
[RISCV] Optimize the spill/reload of segment registers (#153184)
The simplest way is:
1. Save `vtype` to a scalar register.
2. Insert a `vsetvli`.
3. Use segment load/store.
4. Restore `vtype` via `vsetvl`.
But `vsetvl` is usually slow, so this PR is not in this way.
Instead, we use wider whole load/store instructions if the register
encoding is aligned. We have done the same optimization for COPY in
https://github.com/llvm/llvm-project/pull/84455.
We found this suboptimal implementation when porting some video codec
kernels via RVV intrinsics.
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions