[LV] Support widened induction variables in epilogue vectorization.
authorFlorian Hahn <flo@fhahn.com>
Wed, 21 Dec 2022 13:58:50 +0000 (13:58 +0000)
committerFlorian Hahn <flo@fhahn.com>
Wed, 21 Dec 2022 13:58:50 +0000 (13:58 +0000)
commitf69ac9a22dca54feaa1234dd12a4604a68c979de
tree58c744431cbef147a9187a5097ad279fc53f4ff8
parent84733b0f179ecf3fc2c2fa051bf97c7c2ec8f0f9
[LV] Support widened induction variables in epilogue vectorization.

Code generation now uses the start VPValue of induction recipes.

This makes it possible to adjust the start value of the epilogue
vector loop to use the 'resume' value of the main vector loop.

Fixes #59459.

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D92132
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/lib/Transforms/Vectorize/VPlan.h
llvm/test/Transforms/LoopVectorize/AArch64/epilog-vectorization-widen-inductions.ll
llvm/test/Transforms/LoopVectorize/AArch64/sve-epilog-vect.ll
llvm/test/Transforms/LoopVectorize/X86/conversion-cost.ll
llvm/test/Transforms/LoopVectorize/X86/epilog-vectorization-inductions.ll
llvm/test/Transforms/LoopVectorize/X86/gather_scatter.ll
llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization-limitations.ll
llvm/test/Transforms/LoopVectorize/optimal-epilog-vectorization.ll