diff options
author | Min-Yih Hsu <min.hsu@sifive.com> | 2025-05-14 13:49:50 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-14 13:49:50 -0700 |
commit | 0ab67ec191673a148d84f3819f5c97aaa5b84364 (patch) | |
tree | ab74057c0d9837c39ca7389877dd191527e87a05 /clang/lib/Frontend/CreateInvocationFromCommandLine.cpp | |
parent | 0563186a76ddf51b8a7b6eaf0357c224f2625df8 (diff) | |
download | llvm-0ab67ec191673a148d84f3819f5c97aaa5b84364.zip llvm-0ab67ec191673a148d84f3819f5c97aaa5b84364.tar.gz llvm-0ab67ec191673a148d84f3819f5c97aaa5b84364.tar.bz2 |
[LV][EVL] Introduce the EVLIndVarSimplify Pass for EVL-vectorized loops (#131005)
When we enable EVL-based loop vectorization w/ predicated tail-folding,
each vectorized loop has effectively two induction variables: one
calculates the step using (VF x vscale) and the other one increases the
IV by values returned from experiment.get.vector.length. The former,
also known as canonical IV, is more favorable for analyses as it's
"countable" in the sense of SCEV; the latter (EVL-based IV), however, is
more favorable to codegen, at least for those that support scalable
vectors like AArch64 SVE and RISC-V.
The idea is that we use canonical IV all the way until the end of all
vectorizers, where we replace it with EVL-based IV using EVLIVSimplify
introduced here. Such that we can have the best from both worlds.
This Pass is enabled by default in RISC-V. However, since we haven't
really vectorize loops with predicate tail-folding by default, this Pass
is no-op at this moment.
Diffstat (limited to 'clang/lib/Frontend/CreateInvocationFromCommandLine.cpp')
0 files changed, 0 insertions, 0 deletions