[all-commits] [llvm/llvm-project] e3c84f: [LoopVectorize] Add support for tail folding using...
david-arm via All-commits
all-commits at lists.llvm.org
Mon Jan 10 02:55:55 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: e3c84fb9481894efad345b91ff97a8898a52e841
https://github.com/llvm/llvm-project/commit/e3c84fb9481894efad345b91ff97a8898a52e841
Author: David Sherwood <david.sherwood at arm.com>
Date: 2022-01-10 (Mon, 10 Jan 2022)
Changed paths:
M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
A llvm/test/Transforms/LoopVectorize/AArch64/sve-tail-folding-forced.ll
M llvm/test/Transforms/LoopVectorize/AArch64/sve-tail-folding.ll
Log Message:
-----------
[LoopVectorize] Add support for tail folding using scalable vectors
This patch fixes up an issue with InnerLoopVectorizer::getOrCreateVectorTripCount
whereby we weren't correctly generating the runtime trip count
for scalable vectors when tail-folding.
It also removes some asserts in the tail-folding path for cases when
the VF is not scalable.
In this patch I have only permitted tail-folding to be enabled
explicitly for scalable vectors when the user has specified one
of the following flags:
-prefer-predicate-over-epilogue=predicate-dont-vectorize
-prefer-predicate-over-epilogue=predicate-else-scalar-epilogue
For now it's best not to enable tail-folding with scalable vectors for
low trip counts or when optimising for code size, since there has been
no analysis on whether this is worth it.
Various tests have been added here:
Transforms/LoopVectorize/AArch64/sve-tail-folding.ll
Transforms/LoopVectorize/AArch64/sve-tail-folding-forced.ll
The tests cannot be target independent because they require masked
load/store support, i.e. TTI.isLegalMaskedLoad and TTI.isLegalMaskedStore
need to return true.
Differential Revision: https://reviews.llvm.org/D113003
More information about the All-commits
mailing list