llvm-6502/test/Transforms/LoopVectorize
Hal Finkel 081e6fcd17 [LoopVectorizer] Count dependencies of consecutive pointers as uniforms
For the purpose of calculating the cost of the loop at various vectorization
factors, we need to count dependencies of consecutive pointers as uniforms
(which means that the VF = 1 cost is used for all overall VF values).

For example, the TSVC benchmark function s173 has:
  ...
  %3 = add nsw i64 %indvars.iv, 16000
  %arrayidx8 = getelementptr inbounds %struct.GlobalData* @global_data, i64 0, i32 0, i64 %3
  ...
and we must realize that the add will be a scalar in order to correctly deduce
it to be profitable to vectorize this on PowerPC with VSX enabled. In fact, all
dependencies of a consecutive pointer must be a scalar (uniform), and so we
simply need to add all consecutive pointers to the worklist that currently
detects collects uniforms.

Fixes PR19296.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205387 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-02 02:34:49 +00:00
..
ARM LoopVectorizer: Enable unrolling of conditional stores and the load/store 2014-02-02 03:12:34 +00:00
ARM64 ARM64: initial backend import 2014-03-29 10:18:08 +00:00
PowerPC [LoopVectorizer] Count dependencies of consecutive pointers as uniforms 2014-04-02 02:34:49 +00:00
X86 Implement X86TTI::getUnrollingPreferences 2014-04-01 18:50:34 +00:00
XCore Name the XCore target-specific subdirectories canonically. 2013-09-18 14:08:30 +00:00
12-12-11-if-conv.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +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
align.ll LoopVectorizer: Use abi alignment for accesses with no alignment 2013-11-15 23:09:33 +00:00
bsd_regex.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +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 Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
cpp-new-array.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
dbg.value.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
debugloc.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
ee-crash.ll LoopVectorizer: Don't attempt to vectorize extractelement instructions 2013-10-25 20:40:15 +00:00
flags.ll LoopVectorizer: Preserve fast-math flags 2014-03-05 21:10:47 +00:00
float-reduction.ll LoopVectorizer: Preserve fast-math flags 2014-03-05 21:10:47 +00:00
funcall.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
gcc-examples.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
global_alias.ll InstCombine: Teach most integer add/sub/mul/div combines how to deal with vectors. 2014-01-19 15:24:22 +00:00
hoist-loads.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +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 Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
if-conversion-reduction.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
if-conversion.ll LoopVectorizer: Don't if-convert constant expressions that can trap 2013-12-17 01:11:01 +00:00
if-pred-stores.ll LoopVectorizer: Keep track of conditional store basic blocks 2014-02-08 20:41:13 +00:00
increment.ll Correct word hyphenations 2013-12-05 05:44:44 +00:00
induction_plus.ll LoopVectorizer: Perform redundancy elimination on induction variables 2013-11-01 22:18:19 +00:00
induction.ll Fix broken CHECK lines. 2014-01-11 21:06:00 +00:00
infiniteloop.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
intrinsic.ll Revert "LoopVectorizer: Only allow vectorization of intrinsics." 2013-09-23 14:54:39 +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
lifetime.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
memdep.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
metadata-unroll.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
metadata-width.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
minmax_reduction.ll Scalarize select vector arguments when extracted. 2013-11-04 20:36:06 +00:00
multi-use-reduction-bug.ll LoopVectorizer: A reduction that has multiple uses of the reduction value is not 2014-01-19 03:18:31 +00:00
multiple-address-spaces.ll TBAA: remove !tbaa from testing cases when they are not needed. 2013-09-30 18:17:35 +00:00
no_idiv_reduction.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
no_int_induction.ll Teach LoopVectorize about address space sizes 2013-08-22 02:42:55 +00:00
no_outside_user.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
nofloat.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
non-const-n.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +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
opt.ll opt: Mirror vectorization presets of clang 2013-12-03 16:33:06 +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 Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
read-only.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
reduction.ll LoopVectorize: External uses must use the last value in a reduction cycle 2013-10-07 21:05:43 +00:00
reverse_induction.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
reverse_iter.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
runtime-check-address-space.ll Don't use runtime bounds check between address spaces. 2013-10-02 22:38:17 +00:00
runtime-check-readonly-address-space.ll Don't use runtime bounds check between address spaces. 2013-10-02 22:38:17 +00:00
runtime-check-readonly.ll LoopVectorizer: Handle strided memory accesses by versioning 2014-01-10 18:20:32 +00:00
runtime-check.ll LoopVectorizer: If dependency checks fail try runtime checks 2013-11-01 03:05:07 +00:00
runtime-limit.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
safegep.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
same-base-access.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
scalar-select.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
scev-exitlim-crash.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
simple-unroll.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
small-loop.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
start-non-zero.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
store-shuffle-bug.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
struct_access.ll LoopVectorize: Look for consecutive acces in GEPs with trailing zero indices 2013-11-01 14:09:50 +00:00
undef-inst-bug.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
unroll_novec.ll [vectorizer] Add an override for the target instruction cost and use it 2014-01-27 11:41:50 +00:00
value-ptr-bug.ll Fix known typos 2014-01-24 17:20:08 +00:00
vectorize-once.ll Mark vector loops as already vectorized 2013-10-24 14:50:51 +00:00
version-mem-access.ll LoopVectorize: Only strip casts from integer types when replacing symbolic 2014-01-15 03:35:46 +00:00
write-only.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00