1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
llvm-mirror/test/Transforms/LoopVectorize
Arnold Schwaighofer 970f54281c LoopVectorizer: Disallow reductions whose header phi is used outside the loop
If an outside loop user of the reduction value uses the header phi node we
cannot just reduce the vectorized phi value in the vector code epilog because
we would loose VF-1 reductions.

lp:
  p = phi (0, lv)
  lv = lv + 1
  ...
  brcond , lp, outside

outside:
  usr = add 0, p

(Say the loop iterates two times, the value of p coming out of the loop is one).

We cannot just transform this to:

vlp:
  p = phi (<0,0>, lv)
  lv = lv + <1,1>
  ..
  brcond , lp, outside

outside:
  p_reduced = p[0] + [1];
  usr = add 0, p_reduced

(Because the original loop iterated two times the vectorized loop would iterate
one time, but p_reduced ends up being zero instead of one).

We would have to execute VF-1 iterations in the scalar remainder loop in such
cases. For now, just disable vectorization.

PR16522

llvm-svn: 186256
2013-07-13 19:09:29 +00:00
..
ARM ARM cost model: Add cost for gather/scather 2013-07-12 19:16:04 +00:00
X86 X86 cost model: Add cost for vectorized gather/scather 2013-07-12 19:16:07 +00:00
12-12-11-if-conv.ll Reapply 184685 after the SetVector iteration order fix. 2013-06-24 12:09:15 +00:00
2012-10-20-infloop.ll Force a fixed unroll count on the target independent tests. 2013-01-05 00:58:48 +00:00
2012-10-22-isconsec.ll TBAA: remove !tbaa from testing cases if not used. 2013-05-02 18:11:35 +00:00
bsd_regex.ll LoopVectorizer: Bail out if we don't have datalayout we need it 2013-04-24 16:15:58 +00:00
bzip_reverse_loops.ll TBAA: remove !tbaa from testing cases if not used. 2013-05-02 18:11:35 +00:00
calloc.ll TBAA: remove !tbaa from testing cases if not used. 2013-04-30 17:52:57 +00:00
cast-induction.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
cpp-new-array.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
dbg.value.ll TBAA: remove !tbaa from testing cases if not used. 2013-04-30 17:52:57 +00:00
debugloc.ll LoopVectorize: Preserve debug location info 2013-06-28 00:38:54 +00:00
flags.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
float-reduction.ll TBAA: remove !tbaa from testing cases if not used. 2013-04-30 17:52:57 +00:00
funcall.ll LoopVectorize: Math functions only read rounding mode 2013-07-01 00:54:44 +00:00
gcc-examples.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
global_alias.ll Test case hygiene. 2013-03-09 18:25:40 +00:00
hoist-loads.ll LoopVectorize: Hoist conditional loads if possible 2013-05-15 01:44:30 +00:00
i8-induction.ll TBAA: remove !tbaa from testing cases if not used. 2013-04-30 17:52:57 +00:00
if-conv-crash.ll LoopVectorize: Handle single edge PHIs 2013-05-18 18:38:34 +00:00
if-conversion-edgemasks.ll LoopVectorize: Cache edge masks created during if-conversion 2013-06-27 20:31:06 +00:00
if-conversion-nest.ll LoopVectorizer: Add support for if-conversion of PHINodes with 3+ incoming values. 2013-05-03 17:42:55 +00:00
if-conversion-reduction.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
if-conversion.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
increment.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
induction_plus.ll Force a fixed unroll count on the target independent tests. 2013-01-05 00:58:48 +00:00
induction.ll LoopVectorize: Handle loops with multiple forward inductions 2013-05-14 00:21:18 +00:00
infiniteloop.ll LoopVectorizer: Don't assert on the absence of induction variables 2013-05-09 00:32:18 +00:00
intrinsic.ll TBAA: remove !tbaa from testing cases if not used. 2013-05-02 18:11:35 +00:00
lcssa-crash.ll LoopVectorize: LoopSimplify can't canonicalize loops with an indirectbr in it, don't assert on those cases. 2013-05-24 18:05:35 +00:00
lit.local.cfg
memdep.ll Reapply 184685 after the SetVector iteration order fix. 2013-06-24 12:09:15 +00:00
metadata-unroll.ll Add support for llvm.vectorizer metadata 2013-05-28 20:00:34 +00:00
metadata-width.ll Add support for llvm.vectorizer metadata 2013-05-28 20:00:34 +00:00
minmax_reduction.ll LoopVectorize: Add support for floating point min/max reductions 2013-05-05 01:54:48 +00:00
multiple-address-spaces.ll Fix for a regression caused by the LoopVectorizer when 2013-06-17 18:49:06 +00:00
no_idiv_reduction.ll LoopVectorizer: integer division is not a reduction operation 2013-04-12 15:15:19 +00:00
no_int_induction.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
no_outside_user.ll LoopVectorize: PHIs with only outside users should prevent vectorization 2013-05-31 19:53:50 +00:00
nofloat.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
non-const-n.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
nsw-crash.ll LoopVectorizer: Fix a bug in the vectorization of BinaryOperators. The BinaryOperator can be folded to an Undef, and we don't want to set NSW flags to undef vals. 2013-01-10 17:34:39 +00:00
phi-hang.ll LoopVectorize: Use a set to avoid longer cycles in the reduction chain too. 2013-04-18 14:29:13 +00:00
ptr_loops.ll Add support for reverse pointer induction variables. These are loops that contain pointers that count backwards. 2013-01-23 01:35:00 +00:00
read-only.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
reduction.ll LoopVectorizer: Disallow reductions whose header phi is used outside the loop 2013-07-13 19:09:29 +00:00
reverse_induction.ll LoopVectorize: Use the widest induction variable type 2013-05-11 23:04:28 +00:00
reverse_iter.ll Add an additional testcase for PR15882. 2013-05-10 22:55:44 +00:00
runtime-check-readonly.ll LoopVectorizer: No need to generate pointer disambiguation checks between readonly pointers. 2013-04-25 19:55:03 +00:00
runtime-check.ll Reapply 184685 after the SetVector iteration order fix. 2013-06-24 12:09:15 +00:00
runtime-limit.ll LoopVectorizer: Calculate the number of pointers to disambiguate at runtime based on the numbers of reads and writes. 2013-04-26 05:08:59 +00:00
safegep.ll LoopVectorize: Vectorize all accesses in address space zero with unit stride 2013-07-11 15:21:55 +00:00
same-base-access.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
scalar-select.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
scev-exitlim-crash.ll Make the new vectorizer test immune to TTI 2013-07-13 06:40:33 +00:00
simple-unroll.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
small-loop.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00
start-non-zero.ll TBAA: remove !tbaa from testing cases if not used. 2013-04-30 17:52:57 +00:00
store-shuffle-bug.ll Fix spelling. 2013-06-27 01:01:11 +00:00
struct_access.ll TBAA: remove !tbaa from testing cases if not used. 2013-04-30 17:52:57 +00:00
undef-inst-bug.ll LoopVectorize: Use vectorized loop invariant gep index anchored in loop 2013-06-27 15:11:55 +00:00
value-ptr-bug.ll LoopVectorize: Make Value pointers that could be RAUW'ed a VH 2013-05-22 16:54:56 +00:00
vectorize-once.ll Add support for llvm.vectorizer metadata 2013-05-28 20:00:34 +00:00
write-only.ll Remove the -licm pass from the loop vectorizer test because the loop vectorizer does it now. 2013-01-09 01:20:59 +00:00