llvm-mirror/test/Transforms/LoopVectorize
Matthew Simpson 5aacf5b410 [LV] Move insertelement sequence after scalar definitions
After r279649 when getting a vector value from VectorLoopValueMap, we create an
insertelement sequence on-demand if the value has been scalarized instead of
vectorized. We previously inserted this insertelement sequence before the
value's first vector user. However, this insert location is problematic if that
user is the phi node of a first-order recurrence. With this patch, we move the
insertelement sequence after the last scalar instruction we created when
scalarizing the value. Thus, the value's vector definition in the new loop will
immediately follow its scalar definitions. This should fix PR30183.

Reference: https://llvm.org/bugs/show_bug.cgi?id=30183
llvm-svn: 280001
2016-08-29 20:14:04 +00:00
..
AArch64 [LV] Move insertelement sequence after scalar definitions 2016-08-29 20:14:04 +00:00
ARM [ARM] AArch32 v8 NEON is still not IEEE-754 compliant 2016-04-18 12:06:47 +00:00
PowerPC Recommit the patch "Use uniforms set to populate VecValuesToIgnore". 2016-07-19 00:50:43 +00:00
X86 [LV] Move insertelement sequence after scalar definitions 2016-08-29 20:14:04 +00:00
XCore
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
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
2016-07-27-loop-vec.ll Fix the assertion error in collectLoopUniforms caused by empty Worklist before expanding. 2016-07-27 23:53:58 +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
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 [PM] Port LoopVectorize to the new PM. 2016-07-09 22:56:50 +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
diag-with-hotness-info-2.ll [OptDiag,LV] Add hotness attribute to analysis remarks 2016-07-20 21:44:26 +00:00
diag-with-hotness-info.ll [LV] Add hotness attribute to missed-optimization remarks 2016-07-20 04:03:43 +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-induction.ll [Loop Vectorizer] Handling loops FP induction variables. 2016-07-24 07:24:54 +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] Don't widen trivial induction variables 2016-07-06 14:26:59 +00:00
global_alias.ll Recommit the patch "Use uniforms set to populate VecValuesToIgnore". 2016-07-19 00:50:43 +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
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-non-void.ll [LV] Unify vector and scalar maps 2016-08-24 18:23:17 +00:00
if-pred-not-when-safe.ll [Loop Vectorizer] Support predication of div/rem 2016-08-24 11:37:57 +00:00
if-pred-stores.ll [LV] Unify vector and scalar maps 2016-08-24 18:23:17 +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_plus.ll [LV] Move vector int induction update to end of latch 2016-07-21 21:20:15 +00:00
induction-step.ll [LoopVectorize] Handling induction variable with non-constant step. 2016-05-10 07:33:35 +00:00
induction.ll [LV] Generate both scalar and vector integer induction variables 2016-08-02 15:25:16 +00:00
infiniteloop.ll
interleaved-accesses-pred-stores.ll [ValueTracking] Teach computeKnownBits about [su]min/max 2016-08-06 08:16:00 +00:00
interleaved-accesses.ll [ValueTracking] Teach computeKnownBits about [su]min/max 2016-08-06 08:16:00 +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 [LV] Remove wrong assumption about LCSSA 2016-07-12 21:24:06 +00:00
lcssa-crash.ll
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
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
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
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
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
pr28541.ll [LoopVectorize] Detect loops in the innermost loop before creating InnerLoopVectorizer 2016-08-12 22:47:13 +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
ptr-induction.ll Reverted patch 273864 2016-06-29 10:01:06 +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 Recommit the patch "Use uniforms set to populate VecValuesToIgnore". 2016-07-19 00:50:43 +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 [Loop Vectorizer] Fixed memory confilict checks. 2016-08-28 08:53:53 +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 [Loop Vectorizer] Fixed memory confilict checks. 2016-08-28 08:53:53 +00:00
undef-inst-bug.ll
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
unroll.ll [X86] Disable loop unrolling in loop vectorization pass when VF is 1. 2015-05-06 17:12:25 +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
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