llvm-project/llvm/test/Transforms/LoopVectorize/AArch64
David Sherwood b7a11274f9 [LoopVectorize] Fix scalarisation crash in widenPHIInstruction for scalable vectors
In InnerLoopVectorizer::widenPHIInstruction there are cases where we have
to scalarise a pointer induction variable after vectorisation. For scalable
vectors we already deal with the case where the pointer induction variable
is uniform, but we currently crash if not uniform. For fixed width vectors
we calculate every lane of the scalarised pointer induction variable for a
given VF, however this cannot work for scalable vectors. In this case I
have added support for caching the whole vector value for each unrolled
part so that we can always extract an arbitrary element. Additionally, we
still continue to cache the known minimum number of lanes too in order
to improve code quality by avoiding an extractelement operation.

I have adapted an existing test `pointer_iv_mixed` from the file:

  Transforms/LoopVectorize/consecutive-ptr-uniforms.ll

and added it here for scalable vectors instead:

  Transforms/LoopVectorize/AArch64/sve-widen-phi.ll

Differential Revision: https://reviews.llvm.org/D101294
2021-05-12 11:02:11 +01:00
..
Oz-and-forced-vectorize.ll
aarch64-predication.ll [SLP,LV] Use poison constant vector for shufflevector/initial insertelement 2021-01-06 11:22:50 +09:00
aarch64-unroll.ll
arbitrary-induction-step.ll
arm64-unroll.ll
backedge-overflow.ll
deterministic-type-shrinkage.ll
extend-vectorization-factor-for-unprofitable-memops.ll [LV] Add tests showing suboptimal vectorization for narrow types. 2021-02-11 17:24:28 +00:00
extractvalue-no-scalarization-required.ll [SLP,LV] Use poison constant vector for shufflevector/initial insertelement 2021-01-06 11:22:50 +09:00
first-order-recurrence.ll [SVE][LoopVectorize] Add support for scalable vectorization of first-order recurrences 2021-05-06 11:35:39 +01:00
gather-cost.ll
induction-trunc.ll
interleaved-vs-scalar.ll
interleaved_cost.ll
intrinsiccost.ll [CostModel] Remove VF from IntrinsicCostAttributes 2021-02-23 13:03:26 +00:00
lit.local.cfg
loop-vectorization-factors.ll
loopvectorize_pr33804_double.ll
masked-op-cost.ll [AArch64] Add AArch64TTIImpl::getMaskedMemoryOpCost function 2021-04-26 11:00:03 +01:00
max-vf-for-interleaved.ll
no_vector_instructions.ll [LoopVectorize] Simplify scalar cost calculation in getInstructionCost 2021-04-28 13:41:07 +01:00
nontemporal-load-store.ll
outer_loop_test1_no_explicit_vect_width.ll [VPlan] Manage pairs of incoming (VPValue, VPBB) in VPWidenPHIRecipe. 2021-02-22 09:44:25 +00:00
pr31900.ll
pr33053.ll [Vectorizers][TTI] remove option to bypass creation of vector reduction intrinsics 2021-02-12 08:13:50 -05:00
pr36032.ll
pr46950-load-cast-context-crash.ll
predication_costs.ll [LoopVectorize] Simplify scalar cost calculation in getInstructionCost 2021-04-28 13:41:07 +01:00
reduction-small-size.ll
runtime-check-size-based-threshold.ll [LV] Add test cases that require a larger number of RT checks. 2021-03-02 10:49:38 +00:00
scalable-call.ll [SVE] Fix LoopVectorizer test scalalable-call.ll 2021-03-31 14:52:49 +01:00
scalable-reductions.ll Reland "[LV] Calculate max feasible scalable VF." 2021-05-04 15:44:41 +01:00
scalable-strict-fadd.ll [LoopVectorize] Prevent multiple Phis being generated with in-order reductions 2021-04-28 11:29:01 +01:00
scalable-vf-analysis.ll Reland "[LV] Calculate max feasible scalable VF." 2021-05-04 15:44:41 +01:00
scalable-vf-hint.ll Reland "[LV] Calculate max feasible scalable VF." 2021-05-04 15:44:41 +01:00
scalarize-store-with-predication.ll [LoopVectorize] Fix bug where predicated loads/stores were dropped 2021-04-22 15:05:54 +00:00
sdiv-pow2.ll
select-costs.ll
smallest-and-widest-types.ll
strict-fadd.ll [LoopVectorize] Prevent multiple Phis being generated with in-order reductions 2021-04-28 11:29:01 +01:00
sve-basic-vec.ll [LoopVectorize][SVE] Fix crash when vectorising FP negation 2021-04-28 15:22:35 +01:00
sve-cond-inv-loads.ll [SVE][LoopVectorize] Verify support for vectorizing loops with invariant loads 2021-03-25 14:10:21 +00:00
sve-extract-last-veclane.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00
sve-gather-scatter.ll [SVE][LoopVectorize] Add masked load/store and gather/scatter support for SVE 2021-02-02 09:52:39 +00:00
sve-inductions.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00
sve-inv-loads.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00
sve-large-strides.ll [NFC] Add tests for scalable vectorization of loops with large stride acesses 2021-04-01 10:25:06 +01:00
sve-masked-loadstore.ll [SVE][LoopVectorize] Add masked load/store and gather/scatter support for SVE 2021-02-02 09:52:39 +00:00
sve-scalable-load-in-loop.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00
sve-type-conv.ll [NFC] Add scalable vectorisation tests for int/FP <> int/FP conversions 2021-04-26 11:01:14 +01:00
sve-vector-reverse-mask4.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00
sve-vector-reverse.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00
sve-widen-phi.ll [LoopVectorize] Fix scalarisation crash in widenPHIInstruction for scalable vectors 2021-05-12 11:02:11 +01:00
type-shrinkage-insertelt.ll
unsafe-vf-hint-remark.ll
veclib-calls-libsystem-darwin.ll [VecLib] Add support for vector fns from Darwin's libsystem. 2021-05-10 21:19:58 +01:00
vector-reverse-mask4.ll [AArch64] Add AArch64TTIImpl::getMaskedMemoryOpCost function 2021-04-26 11:00:03 +01:00
vector-reverse.ll [SVE] Remove checks for warnings in scalable-vector tests. 2021-04-07 15:59:32 +01:00