llvm-project/llvm/test/Transforms/LoopVectorize/AArch64
David Green b65267ca7b [LV] Invalidate widening decisions after maximizing vector bandwidth
When MaximizeVectorBandwidth is enabled, we can end up (via calls to
collectUniformsAndScalars/setCostBasedWideningDecision through
calculateRegisterUsage) making widening decisions before we have decided
whether to fold the tail by masking. These decisions will be wrong if we
later decided to fold the tail, for example when the trip count is very
low. It will use incorrect costs for loads that should get masked, using
standard memory operation costs instead.

This still at the moment uses the EmulatedMaskMemRefHack costs (a bit
unfortunately), but the old costs without this change were 1, leading to
too optimistic vectorization.

This slightly changes the way that the MaximizeVectorBandwidth option
works to make it easier to test, always honouring the option if it is
set.

Differential Revision: https://reviews.llvm.org/D120215
2022-03-31 09:19:31 +01:00
..
Oz-and-forced-vectorize.ll
aarch64-predication.ll [instcombine] Canonicalize constant index type to i64 for extractelement/insertelement 2021-12-13 16:56:22 -08:00
aarch64-unroll.ll
arbitrary-induction-step.ll
arm64-unroll.ll
backedge-overflow.ll
deterministic-type-shrinkage.ll
eliminate-tail-predication.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
extend-vectorization-factor-for-unprofitable-memops.ll
extractvalue-no-scalarization-required.ll [LV] Consider ExtractValue as uniform. 2021-08-05 16:20:50 +01:00
first-order-recurrence.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
gather-cost.ll
induction-trunc.ll [LV] Make some tests more robust by adding missing users. 2022-01-24 13:04:09 +00:00
interleaved-store-of-first-order-recurrence.ll [VPlan] Remove dead header-phi recipes. 2022-02-26 16:26:39 +00:00
interleaved-vs-scalar.ll
interleaved_cost.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
intrinsiccost.ll [AArch64] Update addo and subo costs 2022-01-07 16:20:23 +00:00
lit.local.cfg
loop-vectorization-factors.ll
loopvectorize_pr33804_double.ll
masked-op-cost.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
max-vf-for-interleaved.ll
maximize-bandwidth-invalidate.ll [LV] Invalidate widening decisions after maximizing vector bandwidth 2022-03-31 09:19:31 +01:00
no_vector_instructions.ll
nontemporal-load-store.ll
outer_loop_test1_no_explicit_vect_width.ll
pr31900.ll [LV] Make some tests more robust by adding missing users. 2022-01-24 13:04:09 +00:00
pr33053.ll
pr36032.ll
pr46950-load-cast-context-crash.ll
predication_costs.ll [LV] Fix incorrectly marking a pointer indvar as 'scalar'. 2021-11-28 09:49:28 +00:00
reduction-small-size.ll
runtime-check-size-based-threshold.ll [LV] Add tests where rt checks may make vectorization unprofitable. 2021-09-27 10:32:28 +01:00
scalable-alloca.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
scalable-avoid-scalarization.ll [VPlan] Avoid collecting scalars for SVE 2022-03-16 16:33:34 +00:00
scalable-call.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
scalable-predicate-instruction.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
scalable-reduction-inloop-cond.ll [LoopVectorize] Support conditional in-loop vector reductions 2022-02-22 12:04:35 +00:00
scalable-reductions.ll [LoopVectorize] Add tests with reductions that are stored in invariant address 2022-01-24 21:26:38 +00:00
scalable-strict-fadd.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
scalable-vectorization-cost-tuning.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
scalable-vectorization.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
scalable-vf-hint.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
scalar_interleave.ll [LoopVectorizer] Don't perform interleaving of predicated scalar loops 2022-02-07 19:34:28 +00:00
scalarize-store-with-predication.ll Revert "[IR] `IRBuilderBase::CreateAdd()`: short-circuit `x + 0` --> `x`" 2021-10-27 22:21:37 +03:00
sdiv-pow2.ll
select-costs.ll [LV] Pass compare predicate to getCmpSelInstrCost. 2021-12-06 11:41:27 +00:00
smallest-and-widest-types.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
strict-fadd-cost.ll [LoopVectorize][CostModel] Update cost model for fmuladd intrinsic 2021-11-24 08:50:05 +00:00
strict-fadd-vf1.ll
strict-fadd.ll [IVDescriptor] Get the exact FP instruction that does not allow reordering 2022-01-27 00:33:46 -05:00
sve-basic-vec.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-cond-inv-loads.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-epilog-vect-inloop-reductions.ll [LoopVectorize] Support epilogue vectorisation of loops with reductions 2022-01-24 12:03:31 +00:00
sve-epilog-vect-reductions.ll [LoopVectorize] Support epilogue vectorisation of loops with reductions 2022-01-24 12:03:31 +00:00
sve-epilog-vect-strict-reductions.ll [LoopVectorize] Support epilogue vectorisation of loops with reductions 2022-01-24 12:03:31 +00:00
sve-epilog-vect.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
sve-extract-last-veclane.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-gather-scatter-cost.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
sve-gather-scatter.ll [LV] Create & use VPScalarIVSteps for all scalar users. 2022-03-13 17:15:24 +00:00
sve-illegal-type.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-inductions-unusual-types.ll [LV] Add real uses in some tests, to make them more robust. 2022-02-13 09:52:59 +00:00
sve-inductions.ll [LV] Create & use VPScalarIVSteps for all scalar users. 2022-03-13 17:15:24 +00:00
sve-inv-loads.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-inv-store.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-large-strides.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-masked-loadstore.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-scalable-load-in-loop.ll
sve-select-cmp.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-strict-fadd-cost.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-tail-folding-forced.ll [VPlan] Handle IV vector splat using VPWidenCanonicalIV. 2022-01-29 16:25:27 +00:00
sve-tail-folding.ll [LoopVectorize] Support conditional in-loop vector reductions 2022-02-22 12:04:35 +00:00
sve-type-conv.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-vector-reverse-mask4.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-vector-reverse.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-widen-extractvalue.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-widen-gep.ll [VPlan] Add VPWidenPointerInductionRecipe. 2022-03-24 14:58:45 +00:00
sve-widen-phi.ll [VPlan] Add VPCanonicalIVPHIRecipe, partly retire createInductionVariable. 2022-01-05 10:46:06 +00:00
tail-fold-uniform-memops.ll Revert "[LV] Remove `LoopVectorizationCostModel::useEmulatedMaskMemRefHack()`" 2022-02-09 20:02:54 +00:00
type-shrinkage-insertelt.ll
unsafe-vf-hint-remark.ll
veclib-calls-libsystem-darwin.ll
vector-reverse-mask4.ll [LoopVectorize] Pass a vector type to isLegalMaskedGather/Scatter 2022-01-12 13:34:12 +00:00
vector-reverse.ll