llvm-project/llvm/test/Transforms/LoopVectorize/X86
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
..
already-vectorized.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
avx1.ll
avx512.ll [LV] Let selectVectorizationFactor reason directly on VectorizationFactor. 2021-04-20 09:54:45 +01:00
consecutive-ptr-cg-bug.ll
consecutive-ptr-uniforms.ll [instcombine] Canonicalize constant index type to i64 for extractelement/insertelement 2021-12-13 16:56:22 -08:00
constant-fold.ll [VPlan] Handle IV vector splat using VPWidenCanonicalIV. 2022-01-29 16:25:27 +00:00
constant-vector-operand.ll
conversion-cost.ll [LV] Create & use VPScalarIVSteps for all scalar users. 2022-03-13 17:15:24 +00:00
cost-model-assert.ll [VPlan] Remove dead header-phi recipes. 2022-02-26 16:26:39 +00:00
cost-model.ll [X86][LV] X86 does *not* prefer vectorized addressing 2021-10-16 12:32:18 +03:00
drop-poison-generating-flags.ll [LV] Drop integer poison-generating flags from instructions that need predication 2021-11-22 10:57:29 +00:00
float-induction-x86.ll [runtime-unroll] Use incrementing IVs instead of decrementing ones 2021-11-12 15:44:58 -08:00
fneg-cost.ll [CostModel][X86] Improve fneg costs 2021-05-21 17:23:45 +01:00
fp32_to_uint32-cost-model.ll
fp64_to_uint32-cost-model.ll
fp80-widest-type.ll
fp_to_sint8-cost-model.ll [CostModel][X86] Adjust fptosi/fptoui SSE/AVX legalized costs based on llvm-mca reports. 2021-07-12 20:38:25 +01:00
funclet.ll [LoopVectorize][CostModel] Choose smaller VFs for in-loop reductions without loads/stores 2022-01-04 10:12:57 +00:00
gather-cost.ll [NFC][X86][LoopVectorize] Autogenerate check lines in a few tests for ease of updating 2021-10-06 22:54:15 +03:00
gather-vs-interleave.ll
gather_scatter.ll [LV] Create & use VPScalarIVSteps for all scalar users. 2022-03-13 17:15:24 +00:00
gcc-examples.ll
illegal-parallel-loop-uniform-write.ll [SCEVExpand] Only create required predicate checks. 2022-01-07 14:49:02 +00:00
imprecise-through-phis.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
int128_no_gather.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
interleave_short_tc.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
interleaved-accesses-large-gap.ll
interleaved-accesses-waw-dependency.ll
interleaving.ll [TTI][X86] Add SSE2 sub-128bit vXi16/32 and v2i64 stride 2 interleaved load costs 2021-10-16 16:21:45 +01:00
intrinsiccost.ll [instcombine] Canonicalize constant index type to i64 for extractelement/insertelement 2021-12-13 16:56:22 -08:00
invariant-load-gather.ll [instcombine] Canonicalize constant index type to i64 for extractelement/insertelement 2021-12-13 16:56:22 -08:00
invariant-store-vectorization.ll [LoopVectorize] Support epilogue vectorisation of loops with reductions 2022-01-24 12:03:31 +00:00
libm-vector-calls-VF2-VF8.ll
libm-vector-calls-finite.ll
libm-vector-calls.ll
limit-vf-by-tripcount.ll [LV] Make sure VF doesn't exceed compile time known TC 2021-12-13 13:48:46 +07:00
lit.local.cfg
load-deref-pred.ll [LV] Create & use VPScalarIVSteps for all scalar users. 2022-03-13 17:15:24 +00:00
masked_load_store.ll [LV] Restore metadata to disable runtime unrolling for epilogue loop. 2022-01-16 13:14:16 +00:00
max-mstore.ll
metadata-enable.ll [instcombine] Canonicalize constant index type to i64 for extractelement/insertelement 2021-12-13 16:56:22 -08:00
min-trip-count-switch.ll
mul_slm_16bit.ll [CostModel][X86] Adjust vXi32 multiply costs if it can be performed using PMADDWD 2021-09-25 16:28:48 +01:00
no-vector.ll
no_fpmath.ll [LV] Consider Loop Unroll Hints When Making Interleave Decisions 2021-04-28 17:27:52 -04:00
no_fpmath_with_hotness.ll
nontemporal.ll
optsize.ll [LV] Create & use VPScalarIVSteps for all scalar users. 2022-03-13 17:15:24 +00:00
outer_loop_test1_no_explicit_vect_width.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
parallel-loops-after-reg2mem.ll
parallel-loops.ll [instcombine] Canonicalize constant index type to i64 for extractelement/insertelement 2021-12-13 16:56:22 -08:00
pointer-runtime-checks-unprofitable.ll [LV] Add tests where rt checks may make vectorization unprofitable. 2021-09-27 10:32:28 +01:00
powof2div.ll
pr23997.ll Regen some autogen tests to account for format change 2021-10-28 09:22:20 -07:00
pr34438.ll [VPlan] Handle IV vector splat using VPWidenCanonicalIV. 2022-01-29 16:25:27 +00:00
pr35432.ll [VPlan] Remove dead header-phi recipes. 2022-02-26 16:26:39 +00:00
pr36524.ll [LV] Create & use VPScalarIVSteps for all scalar users. 2022-03-13 17:15:24 +00:00
pr39160.ll
pr42674.ll [LoopVectorize] Support epilogue vectorisation of loops with reductions 2022-01-24 12:03:31 +00:00
pr47437.ll [VPlan] Remove dead header-phi recipes. 2022-02-26 16:26:39 +00:00
pr48340.ll [NFC] Re-harden test/Transforms/LoopVectorize/X86/pr48340.ll 2021-10-22 15:07:53 +03:00
propagate-metadata.ll
ptr-indvar-crash.ll
rauw-bug.ll
reduction-crash.ll
reduction-fastmath.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
reduction-small-size.ll
redundant-vf2-cost.ll
reg-usage-debug.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
reg-usage.ll
register-assumption.ll
runtime-limit.ll Recommit "[LV] Move runtime pointer size check to LVP::plan()." 2021-03-29 16:14:27 +01:00
scatter_crash.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
slm-no-vectorize.ll
small-size.ll [VPlan] Remove dead header-phi recipes. 2022-02-26 16:26:39 +00:00
strided_load_cost.ll [NFC][X86][LoopVectorize] Autogenerate check lines in a few tests for ease of updating 2021-10-06 22:54:15 +03:00
struct-store.ll
svml-calls-finite.ll
svml-calls.ll
tail_folding_and_assume_safety.ll [LV] Parallel annotated loop does not imply all loads can be hoisted. 2021-06-10 23:37:57 +02:00
tail_loop_folding.ll [VPlan] Handle IV vector splat using VPWidenCanonicalIV. 2022-01-29 16:25:27 +00:00
tripcount.ll
uint64_to_fp64-cost-model.ll [CostModel][X86] Adjust uitofp(vXi64) SSE/AVX legalized costs based on llvm-mca reports. 2021-07-02 13:09:00 +01:00
uniform-phi.ll
uniform_load.ll
uniform_mem_op.ll [VPlan] Remove dead header-phi recipes. 2022-02-26 16:26:39 +00:00
uniformshift.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
unroll-pm.ll
unroll-small-loops.ll
unroll_selection.ll
veclib-calls.ll
vect.omp.force.ll
vect.omp.force.small-tc.ll [VPlan] Handle IV vector splat using VPWidenCanonicalIV. 2022-01-29 16:25:27 +00:00
vector-scalar-select-cost.ll [NFC][LV] Use different braces in debug output 2022-03-07 19:32:37 +03:00
vector_max_bandwidth.ll
vector_ptr_load_store.ll [LV] Remove what seems like stale code in collectElementTypesForWidening. 2022-01-05 12:20:59 +00:00
vectorization-remarks-loopid-dbg.ll
vectorization-remarks-missed.ll [LAA] Add remarks for unbounded array access 2022-02-23 15:57:39 +00:00
vectorization-remarks-profitable.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
vectorization-remarks.ll
vectorize-only-for-real.ll
x86-interleaved-accesses-masked-group.ll [InstCombine] Canonicalize SPF to min/max intrinsics 2022-02-24 09:01:20 +01:00
x86-interleaved-store-accesses-with-gaps.ll [instcombine] Canonicalize constant index type to i64 for extractelement/insertelement 2021-12-13 16:56:22 -08:00
x86-pr39099.ll [LV] Drop integer poison-generating flags from instructions that need predication 2021-11-22 10:57:29 +00:00
x86-predication.ll [VPlan] Merge predicated-triangle regions, after sinking. 2021-06-28 11:10:38 +01:00
x86_fp80-interleaved-access.ll
x86_fp80-vector-store.ll [opt] Directly translate -O# to -passes='default<O#>' 2021-10-18 16:48:10 -07:00