llvm-project/llvm/test/Transforms/LoopVectorize
Anna Thomas dcdb325fee [LV] Fix the vector code generation for first order recurrence
Summary:
In first order recurrences where phi's are used outside the loop,
we should generate an additional vector.extract of the second last element from
the vectorized phi update.
This is because we require the phi itself (which is the value at the second last
iteration of the vector loop) and not the phi's update within the loop.
Also fix the code gen when we just unroll, but don't vectorize.
Fixes PR32396.

Reviewers: mssimpso, mkuper, anemet

Subscribers: llvm-commits, mzolotukhin

Differential Revision: https://reviews.llvm.org/D31979

llvm-svn: 300238
2017-04-13 18:59:25 +00:00
..
AArch64 [LV] Fix the vector code generation for first order recurrence 2017-04-13 18:59:25 +00:00
AMDGPU AMDGPU: Mark all unspecified CC functions in tests as amdgpu_kernel 2017-03-21 21:39:51 +00:00
ARM [TargetTransformInfo] getIntrinsicInstrCost() scalarization estimation improved 2017-03-14 06:35:36 +00:00
PowerPC [ppc] Correctly compute the cost of loading 32/64 bit memory into VSR 2016-12-03 00:41:43 +00:00
SystemZ [SystemZ] Fix more target specific tests 2017-04-12 18:03:09 +00:00
X86 Reapply r298620: [LV] Vectorize GEPs 2017-04-07 14:15:34 +00:00
XCore
12-12-11-if-conv.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
2012-10-20-infloop.ll
2012-10-22-isconsec.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +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 [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
bsd_regex.ll
bzip_reverse_loops.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
calloc.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
cast-induction.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
conditional-assignment.ll Reapply "[LV] Enable vectorization of loops with conditional stores by default" 2016-12-16 19:12:02 +00:00
consec_no_gep.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
consecutive-ptr-uniforms.ll [LV] Consider users that are memory accesses in uniforms expansion step 2017-03-07 18:47:30 +00:00
control-flow.ll [LV] Stop saying "use -Rpass-analysis=loop-vectorize" 2016-11-11 22:51:46 +00:00
cpp-new-array.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
dbg.value.ll Renumber testcase metadata nodes after r290153. 2016-12-22 00:45:21 +00:00
dead_instructions.ll [LV] Avoid emitting trivially dead instructions 2016-10-19 19:22:02 +00:00
debugloc.ll Update vectorization debug info unittest. 2016-11-09 22:25:19 +00:00
diag-missing-instr-debug-loc.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
diag-with-hotness-info-2.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
diag-with-hotness-info.ll [LoopVersioning] Require loop-simplify form for loop versioning. 2016-12-19 17:13:37 +00:00
discriminator.ll Encode duplication factor from loop vectorization and loop unrolling to discriminator. 2017-02-10 21:09:07 +00:00
duplicated-metadata.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
ee-crash.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
exact.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
first-order-recurrence.ll [LV] Fix the vector code generation for first order recurrence 2017-04-13 18:59:25 +00:00
flags.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
float-induction.ll [LV] Delete unneeded scalar GEP creation code 2017-03-23 16:07:21 +00:00
float-reduction.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
funcall.ll
gcc-examples.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
gep_with_bitcast.ll [LV] Don't widen trivial induction variables 2016-07-06 14:26:59 +00:00
global_alias.ll [LV] Scalarize instructions marked scalar after vectorization 2016-09-26 17:08:37 +00:00
hints-trans.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
hoist-loads.ll
i8-induction.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
icmp-uniforms.ll [LV] Don't mark multi-use branch conditions uniform 2016-10-07 15:20:13 +00:00
if-conv-crash.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
if-conversion-edgemasks.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
if-conversion-nest.ll
if-conversion-reduction.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
if-conversion.ll [InstCombine] morph an existing instruction instead of creating a new one 2017-04-12 15:11:33 +00:00
if-pred-non-void.ll [LV] Scalarize operands of predicated instructions 2016-12-07 15:03:32 +00:00
if-pred-not-when-safe.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
if-pred-stores.ll [LV] Delete unneeded scalar GEP creation code 2017-03-23 16:07:21 +00:00
incorrect-dom-info.ll
increment.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
induction-step.ll [LV] Remove constant restriction for vector phi creation 2017-02-17 16:09:07 +00:00
induction.ll [LV] Transform truncations of non-primary induction variables 2017-03-27 20:07:38 +00:00
induction_plus.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
infiniteloop.ll
interleaved-accesses-1.ll Second attempt at r285517. 2016-10-31 13:17:31 +00:00
interleaved-accesses-2.ll Second attempt at r285517. 2016-10-31 13:17:31 +00:00
interleaved-accesses-3.ll Second attempt at r285517. 2016-10-31 13:17:31 +00:00
interleaved-accesses-pred-stores.ll Reapply "[LV] Enable vectorization of loops with conditional stores by default" 2016-12-16 19:12:02 +00:00
interleaved-accesses.ll [LV] Ensure reverse interleaved group GEPs remain uniform 2016-09-02 16:19:22 +00:00
intrinsic.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
iv_outside_user.ll [LV] Fix-up external IV users after updating dominator tree 2017-01-09 19:05:29 +00:00
lcssa-crash.ll [LV] Fix an issue where forming LCSSA in the place that we did would 2017-01-26 10:41:09 +00:00
lifetime.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
loop-form.ll
loop-scalars.ll Reapply r298620: [LV] Vectorize GEPs 2017-04-07 14:15:34 +00:00
loop-vect-memdep.ll
memdep.ll
metadata-unroll.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
metadata-width.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
metadata.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
miniters.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
minmax_reduction.ll
multi-use-reduction-bug.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
multiple-address-spaces.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
multiple-strides-vectorization.ll [LV/LoopAccess] Check statically if an unknown dependence distance can be 2017-02-12 09:32:53 +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
no_int_induction.ll
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 [LV] Stop saying "use -Rpass-analysis=loop-vectorize" 2016-11-11 22:51:46 +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 [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
non-const-n.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
nontemporal.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
nsw-crash.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
opt.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
optsize.ll
partial-lcssa.ll [LV] Run loop-simplify and LCSSA explicitly instead of "requiring" them 2017-01-19 00:42:28 +00:00
phi-hang.ll [Verifier] Reject PHIs using defs from own block. 2016-03-26 23:32:57 +00:00
pr25281.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
pr28541.ll [LoopVectorize] Detect loops in the innermost loop before creating InnerLoopVectorizer 2016-08-12 22:47:13 +00:00
pr31098.ll [LV/LoopAccess] Check statically if an unknown dependence distance can be 2017-02-12 09:32:53 +00:00
pr31190.ll [LV] Run loop-simplify and LCSSA explicitly instead of "requiring" them 2017-01-19 00:42:28 +00:00
ptr-induction.ll Reverted patch 273864 2016-06-29 10:01:06 +00:00
ptr_loops.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
read-only.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
reduction.ll [LV] Allow reductions that have several uses outside the loop 2017-01-18 19:02:52 +00:00
reverse_induction.ll [LV] Don't emit unused scalars for uniform instructions 2016-09-21 16:50:24 +00:00
reverse_iter.ll Reapply "[LV] Extend trunc optimization to all IVs with constant integer steps" 2017-02-14 16:28:32 +00:00
runtime-check-address-space.ll
runtime-check-readonly-address-space.ll
runtime-check-readonly.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
runtime-check.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
runtime-limit.ll
safegep.ll
same-base-access.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
scalar-select.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
scalar_after_vectorization.ll [LV] Scalarize instructions marked scalar after vectorization 2016-09-26 17:08:37 +00:00
scev-exitlim-crash.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
simple-unroll.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
small-loop.ll [LV] Don't vectorize when we have a small static bound on trip count 2016-12-13 20:38:18 +00:00
start-non-zero.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
store-shuffle-bug.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
struct_access.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
tbaa-nodep.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
undef-inst-bug.ll
unroll-novec-memcheck-metadata.ll [LV] Add regression test for r297610 2017-03-23 20:02:23 +00:00
unroll.ll
unroll_novec.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
unsafe-dep-remark.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
unsized-pointee-crash.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
value-ptr-bug.ll
vect.omp.persistence.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
vect.stats.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
vector-geps.ll Reapply r298620: [LV] Vectorize GEPs 2017-04-07 14:15:34 +00:00
vectorize-once.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
version-mem-access.ll
write-only.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00
zero-sized-pointee-crash.ll [LV] Remove triples from target-independent vectorizer tests. NFC. 2016-10-06 23:57:25 +00:00