llvm-project/llvm/test/Transforms/LoopVectorize
Michael Kuperstein 3277a05fcf Recommit [LV] Enable vectorization of loops where the IV has an external use
r272715 broke libcxx because it did not correctly handle cases where the
last iteration of one IV is the second-to-last iteration of another.

Original commit message:
Vectorizing loops with "escaping" IVs has been disabled since r190790, due to
PR17179. This re-enables it, with support for external use of both
"post-increment" (last iteration) and "pre-increment" (second-to-last iteration)
IVs.

llvm-svn: 272742
2016-06-15 00:35:26 +00:00
..
AArch64 Reapply "[TTI] Refine default cost for interleaved load groups with gaps" 2016-06-10 14:33:30 +00:00
ARM [ARM] AArch32 v8 NEON is still not IEEE-754 compliant 2016-04-18 12:06:47 +00:00
PowerPC [InstCombine] scalarizePHI should not assume the code it sees has been CSE'd 2016-06-06 23:38:33 +00:00
X86 [LV] For some IVs, use vector phis instead of widening in the loop body 2016-06-01 17:16:46 +00:00
XCore [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
12-12-11-if-conv.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2012-10-20-infloop.ll Rename getMaximumUnrollFactor -> getMaxInterleaveFactor; also rename option names controlling this variable. 2014-09-10 17:58:16 +00:00
2012-10-22-isconsec.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
align.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
bsd_regex.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
bzip_reverse_loops.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
calloc.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
cast-induction.ll [LV] For some IVs, use vector phis instead of widening in the loop body 2016-06-01 17:16:46 +00:00
conditional-assignment.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
control-flow.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
cpp-new-array.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
dbg.value.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
debugloc.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
duplicated-metadata.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
ee-crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
exact.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
flags.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
float-reduction.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
funcall.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
gcc-examples.ll [LV] For some IVs, use vector phis instead of widening in the loop body 2016-06-01 17:16:46 +00:00
gep_with_bitcast.ll [LV] For some IVs, use vector phis instead of widening in the loop body 2016-06-01 17:16:46 +00:00
global_alias.ll Revert "Claim NoAlias if two GEPs index different fields of the same struct" 2016-06-01 18:55:32 +00:00
hints-trans.ll [LoopVectorize] Keep hints from original loop on the vector loop 2016-04-29 01:27:40 +00:00
hoist-loads.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
i8-induction.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
if-conv-crash.ll Rename getMaximumUnrollFactor -> getMaxInterleaveFactor; also rename option names controlling this variable. 2014-09-10 17:58:16 +00:00
if-conversion-edgemasks.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
if-conversion-nest.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
if-conversion-reduction.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
if-conversion.ll [InstCombine] canonicalize* LE/GE vector integer comparisons to LT/GT (PR26701, PR26819) 2016-05-13 15:10:46 +00:00
if-pred-stores.ll [LV] Preserve LoopInfo when store predication is used 2016-03-15 18:06:20 +00:00
incorrect-dom-info.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
increment.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
induction-step.ll [LoopVectorize] Handling induction variable with non-constant step. 2016-05-10 07:33:35 +00:00
induction.ll [LV] Use vector phis for some secondary induction variables 2016-06-09 18:03:15 +00:00
induction_plus.ll [LV] For some IVs, use vector phis instead of widening in the loop body 2016-06-01 17:16:46 +00:00
infiniteloop.ll
interleaved-accesses.ll [LV] Reallow positive-stride interleaved load groups with gaps 2016-04-27 18:21:36 +00:00
intrinsic.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
iv_outside_user.ll Recommit [LV] Enable vectorization of loops where the IV has an external use 2016-06-15 00:35:26 +00:00
lcssa-crash.ll Rename getMaximumUnrollFactor -> getMaxInterleaveFactor; also rename option names controlling this variable. 2014-09-10 17:58:16 +00:00
lifetime.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
loop-form.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
loop-vect-memdep.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
memdep.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
metadata-unroll.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
metadata-width.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
metadata.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
miniters.ll The patch replace the overflow check in loop vectorization with the minimum loop iterations check. 2015-08-25 16:43:47 +00:00
minmax_reduction.ll [LoopUtils,LV] Propagate fast-math flags on generated FCmp instructions 2015-09-21 19:41:19 +00:00
multi-use-reduction-bug.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
multiple-address-spaces.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
multiple-strides-vectorization.ll Quick fix for the test from rL272014 "[LAA] Improve non-wrapping pointer 2016-06-07 15:52:35 +00:00
no_array_bounds.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
no_idiv_reduction.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
no_int_induction.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
no_outside_user.ll Recommit [LV] Enable vectorization of loops where the IV has an external use 2016-06-15 00:35:26 +00:00
no_switch.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
noalias-md-licm.ll [LoopVectorize] Annotate versioned loop with noalias metadata 2016-03-17 20:32:37 +00:00
noalias-md.ll [LoopVectorize] Annotate versioned loop with noalias metadata 2016-03-17 20:32:37 +00:00
nofloat.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
non-const-n.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
nontemporal.ll [LoopVectorize] Propagate 'nontemporal' attribute into vectorized instructions. 2015-08-20 22:27:38 +00:00
nsw-crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
opt.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
optsize.ll fix minsize detection: minsize attribute implies optimizing for size 2015-08-11 15:56:31 +00:00
phi-hang.ll [Verifier] Reject PHIs using defs from own block. 2016-03-26 23:32:57 +00:00
pr25281.ll [PR25281] Remove AAResultsWrapper from preserved analyses of loop vectorizer. 2016-04-29 03:31:25 +00:00
ptr-induction.ll Add newline to test. NFC. 2015-09-02 14:06:16 +00:00
ptr_loops.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
read-only.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
reduction.ll [LV] Don't bail to MiddleBlock if a runtime check fails, bail to ScalarPH instead 2015-09-02 10:15:39 +00:00
reverse_induction.ll [LV] Use vector phis for some secondary induction variables 2016-06-09 18:03:15 +00:00
reverse_iter.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
runtime-check-address-space.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
runtime-check-readonly-address-space.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
runtime-check-readonly.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
runtime-check.ll [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
runtime-limit.ll Fix test introduced in r246187 that failed on some systems. 2015-08-27 20:43:29 +00:00
safegep.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
same-base-access.ll [SCEV][LAA] Re-commit r260085 and r260086, this time with a fix for the memory 2016-02-08 17:02:45 +00:00
scalar-select.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
scev-exitlim-crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
simple-unroll.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
small-loop.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
start-non-zero.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
store-shuffle-bug.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
struct_access.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
tbaa-nodep.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
undef-inst-bug.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
unroll.ll [X86] Disable loop unrolling in loop vectorization pass when VF is 1. 2015-05-06 17:12:25 +00:00
unroll_novec.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
unsafe-dep-remark.ll [LV] Hint at the new loop distribution pragma in optimization remark 2016-05-09 23:03:44 +00:00
unsized-pointee-crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
value-ptr-bug.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
vect.omp.persistence.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
vect.stats.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
vectorize-once.ll Introduce runtime unrolling disable matadata and use it to mark the scalar loop from vectorization. 2015-03-09 06:14:18 +00:00
version-mem-access.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
write-only.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
zero-sized-pointee-crash.ll [LoopVectorize] Don't crash on zero-sized types in isInductionPHI 2015-06-05 10:52:40 +00:00