llvm-project/llvm/lib/Transforms/Vectorize
David Sherwood f4122398e7 [LoopVectorize][AArch64] Enable ordered reductions by default for AArch64
I have added a new TTI interface called enableOrderedReductions() that
controls whether or not ordered reductions should be enabled for a
given target. By default this returns false, whereas for AArch64 it
returns true and we rely upon the cost model to make sensible
vectorisation choices. It is still possible to override the new TTI
interface by setting the command line flag:

  -force-ordered-reductions=true|false

I have added a new RUN line to show that we use ordered reductions by
default for SVE and Neon:

  Transforms/LoopVectorize/AArch64/strict-fadd.ll
  Transforms/LoopVectorize/AArch64/scalable-strict-fadd.ll

Differential Revision: https://reviews.llvm.org/D106653
2021-08-19 09:29:40 +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 [LV] Enable vectorization of multiple exit loops w/computable exit counts 2021-07-15 08:53:51 -07:00
LoopVectorizationPlanner.h [VPlan] Iterate over phi recipes to detect reductions to fix. 2021-08-07 14:06:50 +01:00
LoopVectorize.cpp [LoopVectorize][AArch64] Enable ordered reductions by default for AArch64 2021-08-19 09:29:40 +01:00
SLPVectorizer.cpp [SLP]Do not emit extra shuffle for insertelements vectorization. 2021-08-05 08:41:24 -07:00
VPRecipeBuilder.h [VPlan] Track both incoming values for first-order recurrence phis. 2021-06-27 14:29:35 +01:00
VPlan.cpp [LV] Move reduction PHI node fixup to VPlan::execute (NFC). 2021-08-06 08:29:20 +01:00
VPlan.h [Transforms] Drop unnecessary const from return types (NFC) 2021-08-05 08:53:17 -07: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 Recommit "[VPlan] Add recipe for first-order rec phis, make splicing explicit." 2021-07-26 15:50:30 +01:00
VPlanTransforms.h [VPlan] Merge predicated-triangle regions, after sinking. 2021-06-28 11:10:38 +01:00
VPlanValue.h Recommit "[VPlan] Add recipe for first-order rec phis, make splicing explicit." 2021-07-26 15:50:30 +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 known non-poison indices. 2021-08-05 15:36:31 +01:00
Vectorize.cpp