aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
diff options
context:
space:
mode:
authorPengcheng Wang <wangpengcheng.pp@bytedance.com>2025-08-21 16:38:53 +0800
committerGitHub <noreply@github.com>2025-08-21 16:38:53 +0800
commit17a98f85c2f3b1906b5b7368cfe1d6927b1f388f (patch)
tree2631faa18a289301317e966f7bd2ea8fede06b0a /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
parent2e74cc6c04fc61b5524d3b17a4eff53bffa1b207 (diff)
downloadllvm-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