[LV] Return both fixed and scalable Max VF from computeMaxVF.
authorSander de Smalen <sander.desmalen@arm.com>
Tue, 18 May 2021 06:37:31 +0000 (07:37 +0100)
committerSander de Smalen <sander.desmalen@arm.com>
Tue, 18 May 2021 07:03:48 +0000 (08:03 +0100)
commit81fdc73e5dc74bfe7cda1e16f01f23836406d709
treeffbb5980b9a028061a8b3d0a78a61f2dcd5359f6
parent00a1007545ba8ad2105876a41364b35235749e2a
[LV] Return both fixed and scalable Max VF from computeMaxVF.

This patch introduces a new class, MaxVFCandidates, that holds the
maximum vectorization factors that have been computed for both scalable
and fixed-width vectors.

This patch is intended to be NFC for fixed-width vectors, although
considering a scalable max VF (which is disabled by default) pessimises
tail-loop elimination, since it can no longer determine if any chosen VF
(less than fixed/scalable MaxVFs) is guaranteed to handle all vector
iterations if the trip-count is known. This issue will be addressed in
a future patch.

Reviewed By: fhahn, david-arm

Differential Revision: https://reviews.llvm.org/D98721
llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/test/Transforms/LoopVectorize/AArch64/eliminate-tail-predication.ll [new file with mode: 0644]