llvm-project/llvm/test/Transforms/LoopVectorize/AArch64
Florian Hahn 95f76bff1c
[LV] Create & use VPScalarIVSteps for all scalar users.
This patch is a follow-up to D115953. It updates optimizeInductions
to also introduce new VPScalarIVStepsRecipes if an IV has both vector
and scalar uses.

It updates all uses that only need scalar values to use the newly
created recipe for the scalar steps.

This completes untangling of VPWidenIntOrFpInductionRecipe
code-generation. Now the recipe *only* creates the widened vector
values, as it says on the tin.

The code to genereate IR has been moved directly to
VPWidenIntOrFpInductionRecipe::execute.

Note that the recipe has been updated to hold a reference to
ScalarEvolution, which is needed to expand the step, until we can place
the corresponding SCEV expansion in the pre-header.

Depends on D120827.

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D120828
2022-03-13 17:15:24 +00: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
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-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 [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03: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