aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/ModuloSchedule.cpp
diff options
context:
space:
mode:
authorLuke Lau <luke@igalia.com>2024-04-24 16:31:40 +0800
committerGitHub <noreply@github.com>2024-04-24 16:31:40 +0800
commit603ba4c59635ff5f8a54d1106719124aee20271d (patch)
tree8b0acc9fee52eef94a8cb370f2fc16fa812eb8af /llvm/lib/CodeGen/ModuloSchedule.cpp
parentc071c1d3abfedaf081d77308a24bb38c061ff999 (diff)
downloadllvm-603ba4c59635ff5f8a54d1106719124aee20271d.zip
llvm-603ba4c59635ff5f8a54d1106719124aee20271d.tar.gz
llvm-603ba4c59635ff5f8a54d1106719124aee20271d.tar.bz2
[RISCV] Separate doLocalPostpass into new pass and move to post vector regalloc (#88295)
This patch splits off part of the work to move vsetvli insertion to post regalloc in #70549. The doLocalPostpass operates outside of RISCVInsertVSETVLI's dataflow, so we can move it to its own pass. We can then move it to post vector regalloc which should be a smaller change. A couple of things that are different from #70549: - This manually fixes up the LiveIntervals rather than recomputing it via createAndComputeVirtRegInterval. I'm not sure if there's much of a difference with either. - For the postpass it's sufficient enough to just check isUndef() in hasUndefinedMergeOp, i.e. we don't need to lookup the def in VNInfo. Running on llvm-test-suite and SPEC CPU 2017 there aren't any changes in the number of vsetvlis removed. There are some minor scheduling diffs as well as extra spills and less spills in some cases (caused by transient vsetvlis existing between RISCVInsertVSETVLI and RISCVCoalesceVSETVLI when vec regalloc happens), but they are minor and should go away once we finish moving the rest of RISCVInsertVSETVLI. We could also potentially turn off this pass for unoptimised builds.
Diffstat (limited to 'llvm/lib/CodeGen/ModuloSchedule.cpp')
0 files changed, 0 insertions, 0 deletions