[llvm] [LV] Reuse VPReplicateRecipe to handle scalar stores in exit block. (PR #106342)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 3 13:18:25 PDT 2024
================
@@ -9406,11 +9385,14 @@ void LoopVectorizationPlanner::adjustRecipesForReductions(
auto *FinalReductionResult = new VPInstruction(
VPInstruction::ComputeReductionResult, {PhiR, NewExitingVPV}, ExitDL);
FinalReductionResult->insertBefore(*MiddleVPBB, IP);
- OrigExitingVPV->replaceUsesWithIf(FinalReductionResult, [](VPUser &User,
- unsigned) {
- return match(&User, m_Binary<VPInstruction::ExtractFromEnd>(m_VPValue(),
- m_VPValue()));
- });
+ OrigExitingVPV->replaceUsesWithIf(
+ FinalReductionResult, [IntermediateStore](VPUser &User, unsigned) {
+ return match(&User, m_Binary<VPInstruction::ExtractFromEnd>(
+ m_VPValue(), m_VPValue())) ||
+ (isa<VPReplicateRecipe>(&User) &&
----------------
fhahn wrote:
sufficient to check the the users are not defined in the vector region?
https://github.com/llvm/llvm-project/pull/106342
More information about the llvm-commits
mailing list