llvm-project/llvm/lib/Transforms/Vectorize
Kerry McLaughlin f99672568f [LoopVectorize] Fix strict reductions where VF = 1
Currently we will allow loops with a fixed width VF of 1 to vectorize
if the -enable-strict-reductions flag is set. However, the loop vectorizer
will not use ordered reductions if `VF.isScalar()` and the resulting
vectorized loop will be out of order.

This patch removes `VF.isVector()` when checking if ordered reductions
should be used. Also, instead of converting the FAdds to reductions if the
VF = 1, operands of the FAdds are changed such that the order is preserved.

Reviewed By: david-arm

Differential Revision: https://reviews.llvm.org/D104533
2021-06-28 11:27:10 +01:00
..
CMakeLists.txt llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
LoadStoreVectorizer.cpp [LoadStoreVectorizer] Support opaque pointers 2021-06-27 15:42:16 +02:00
LoopVectorizationLegality.cpp [Analysis] Pass RecurrenceDescriptor as const reference. NFCI. 2021-06-11 10:24:14 +01:00
LoopVectorizationPlanner.h [LoopVectorize] Fix strict reductions where VF = 1 2021-06-28 11:27:10 +01:00
LoopVectorize.cpp [LoopVectorize] Fix strict reductions where VF = 1 2021-06-28 11:27:10 +01:00
SLPVectorizer.cpp [LAA] Make getPointersDiff() API compatible with opaque pointers 2021-06-23 18:44:34 +02:00
VPRecipeBuilder.h [VPlan] Track both incoming values for first-order recurrence phis. 2021-06-27 14:29:35 +01:00
VPlan.cpp [VPlan] Print successors of VPRegionBlocks. 2021-06-07 17:57:21 +01:00
VPlan.h [VPlan] Track both incoming values for first-order recurrence phis. 2021-06-27 14:29:35 +01:00
VPlanDominatorTree.h Revert multiple patches based on "Introduce CfgTraits abstraction" 2020-10-27 20:33:30 +01:00
VPlanHCFGBuilder.cpp [VPlan] Manage pairs of incoming (VPValue, VPBB) in VPWidenPHIRecipe. 2021-02-22 09:44:25 +00:00
VPlanHCFGBuilder.h
VPlanLoopInfo.h
VPlanPredicator.cpp [llvm] Drop unnecessary make_range (NFC) 2021-01-09 09:25:00 -08:00
VPlanPredicator.h
VPlanSLP.cpp VPlanSLP.cpp - tidy implicit header dependencies. NFCI. 2021-06-13 12:37:17 +01:00
VPlanTransforms.cpp [VPlan] Merge predicated-triangle regions, after sinking. 2021-06-28 11:10:38 +01:00
VPlanTransforms.h [VPlan] Merge predicated-triangle regions, after sinking. 2021-06-28 11:10:38 +01:00
VPlanValue.h [VPlan] Add VPUserID to distinguish between recipes and others. 2021-05-18 09:17:28 +01:00
VPlanVerifier.cpp Use llvm::is_contained where appropriate (NFC) 2020-07-27 10:20:44 -07:00
VPlanVerifier.h
VectorCombine.cpp [VectorCombine] Limit scalarization to non-poison indices for now. 2021-06-14 16:40:14 +01:00
Vectorize.cpp