llvm-project/llvm/test/Transforms/LoopVectorize/AArch64
David Green b4c6d1bb37 [LoopVectorizer] Don't perform interleaving of predicated scalar loops
The vectorizer will choose at times to "vectorize" loops with a scalar
factor (VF=1) with interleaving (IC > 1). This can occasionally produce
better code than the unroller (notable for reductions where it can
produce independent reduction chains that are combined after the loop).
At times this is not very beneficial though, for example when runtime
checks are needed or when the scalar code requires predication.

This addresses the second point, preventing the vectorizer from
interleaving when the scalar loop will require predication. This
prevents it from making a bit of a mess, that is worse than the original
and better left for the unroller to unroll if beneficial. It helps
reverse some of the regressions from D118090.

Differential Revision: https://reviews.llvm.org/D118566
2022-02-07 19:34:28 +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 [AArch64] Cost-model i8 vector loads/stores 2021-07-05 11:25:10 +01:00
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 [LV] Add test to store a first-order rec via interleave group. 2021-07-26 15:20:04 +01:00
interleaved-vs-scalar.ll [AArch64] Cost-model i8 vector loads/stores 2021-07-05 11:25:10 +01:00
interleaved_cost.ll [TTI] `BasicTTIImplBase::getInterleavedMemoryOpCost()`: fix load discounting 2021-10-22 14:08:58 +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 [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00: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-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 [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
scalable-vf-hint.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00: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 [LoopVectorize][CostModel] Choose smaller VFs for in-loop reductions without loads/stores 2022-01-04 10:12:57 +00: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 [NFC] Rename enable-strict-reductions to force-ordered-reductions 2021-08-03 09:33:01 +01:00
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 [LV] Use VScaleForTuning to allow wider epilogue VFs. 2022-02-03 15:40:17 +00: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 Fix buildbot failure caused by D115651 2021-12-20 17:18:59 +00:00
sve-gather-scatter.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +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] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +00:00
sve-inductions.ll [LV] Enable scalable vectorization by default for SVE cores. 2021-12-20 16:23:29 +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 [VPlan] Handle IV vector splat using VPWidenCanonicalIV. 2022-01-29 16:25:27 +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] Introduce and use BranchOnCount VPInstruction. 2022-01-12 13:42:13 +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 [LV] Remove `LoopVectorizationCostModel::useEmulatedMaskMemRefHack()` 2022-02-07 16:08:31 +03: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