[PATCH] D129747: [LoopVectorize][NFC] Add and use new InterleaveAccessInfo::hasGroups function
David Sherwood via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 14 03:05:36 PDT 2022
david-arm created this revision.
david-arm added reviewers: sdesmalen, fhahn, kmclaughlin.
Herald added subscribers: shiva0217, hiraditya.
Herald added a project: All.
david-arm requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D129747
Files:
llvm/include/llvm/Analysis/VectorUtils.h
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
Index: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -5051,7 +5051,7 @@
// Invalidate interleave groups that require an epilogue if we can't mask
// the interleave-group.
- if (!useMaskedInterleavedAccesses(TTI)) {
+ if (InterleaveInfo.hasGroups() && !useMaskedInterleavedAccesses(TTI)) {
assert(WideningDecisions.empty() && Uniforms.empty() && Scalars.empty() &&
"No decisions should have been taken at this point");
// Note: There is no need to invalidate any cost modeling decisions here, as
@@ -7448,7 +7448,8 @@
return None;
// Invalidate interleave groups if all blocks of loop will be predicated.
- if (CM.blockNeedsPredicationForAnyReason(OrigLoop->getHeader()) &&
+ if (CM.InterleaveInfo.hasGroups() &&
+ CM.blockNeedsPredicationForAnyReason(OrigLoop->getHeader()) &&
!useMaskedInterleavedAccesses(*TTI)) {
LLVM_DEBUG(
dbgs()
Index: llvm/include/llvm/Analysis/VectorUtils.h
===================================================================
--- llvm/include/llvm/Analysis/VectorUtils.h
+++ llvm/include/llvm/Analysis/VectorUtils.h
@@ -811,6 +811,9 @@
/// cannot be filtered by masking the load/store.
void invalidateGroupsRequiringScalarEpilogue();
+ /// Returns true if we have any interleave groups.
+ bool hasGroups() const { return !InterleaveGroups.empty(); }
+
private:
/// A wrapper around ScalarEvolution, used to add runtime SCEV checks.
/// Simplifies SCEV expressions in the context of existing SCEV assumptions.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D129747.444574.patch
Type: text/x-patch
Size: 1698 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220714/6771d467/attachment.bin>
More information about the llvm-commits
mailing list