llvm-project/llvm/test/Transforms/LoopVectorize/X86
Florian Hahn ecb4171dcb
[LV] Handle zero cost loops in selectInterleaveCount.
In some case, like in the added test case, we can reach
selectInterleaveCount with loops that actually have a cost of 0.

Unfortunately a loop cost of 0 is also used to communicate that the cost
has not been computed yet. To resolve the crash, bail out if the cost
remains zero after computing it.

This seems like the best option, as there are multiple code paths that
return a cost of 0 to force a computation in selectInterleaveCount.
Computing the cost at multiple places up front there would unnecessarily
complicate the logic.

Fixes #54413.
2022-03-29 22:52:43 +01: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] Sink instructions with multiple users in a successor block. 2022-03-18 11:53:45 +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
pr54413-select-interleave-count-loop-with-cost-zero.ll [LV] Handle zero cost loops in selectInterleaveCount. 2022-03-29 22:52:43 +01: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 [InstCombine] Sink instructions with multiple users in a successor block. 2022-03-18 11:53:45 +08: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] Sink instructions with multiple users in a successor block. 2022-03-18 11:53:45 +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