llvm-project/llvm/test/Transforms/LoopVectorize/AArch64
Kerry McLaughlin 12fb133eba [LoopVectorize] Support conditional in-loop vector reductions
Extends getReductionOpChain to look through Phis which may be part of
the reduction chain. adjustRecipesForReductions will now also create a
CondOp for VPReductionRecipe if the block is predicated and not only if
foldTailByMasking is true.

Changes were required in tryToBlend to ensure that we don't attempt
to convert the reduction Phi into a select by returning a VPBlendRecipe.
The VPReductionRecipe will create a select between the Phi and the reduction.

Reviewed By: david-arm

Differential Revision: https://reviews.llvm.org/D117580
2022-02-22 12:04:35 +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-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 [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] Add real uses in some tests, to make them more robust. 2022-02-13 09:52:59 +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 [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 [LV] Add real uses in some tests, to make them more robust. 2022-02-13 09:52:59 +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