aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorMin-Yih Hsu <min.hsu@sifive.com>2025-05-14 13:49:50 -0700
committerGitHub <noreply@github.com>2025-05-14 13:49:50 -0700
commit0ab67ec191673a148d84f3819f5c97aaa5b84364 (patch)
treeab74057c0d9837c39ca7389877dd191527e87a05 /clang/lib/Frontend/CompilerInvocation.cpp
parent0563186a76ddf51b8a7b6eaf0357c224f2625df8 (diff)
downloadllvm-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/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions