llvm-6502/test/Transforms/LoopVectorize/X86
Chandler Carruth 5f61e70eac [vectorize] Initial version of respecting PGO in the vectorizer: treat
cold loops as-if they were being optimized for size.

Nothing fancy here. Simply test case included. The nice thing is that we
can now incrementally build on top of this to drive other heuristics.
All of the infrastructure work is done to get the profile information
into this layer.

The remaining work necessary to make this a fully general purpose loop
unroller for very hot loops is to make it a fully general purpose loop
unroller. Things I know of but am not going to have time to benchmark
and fix in the immediate future:

1) Don't disable the entire pass when the target is lacking vector
   registers. This really doesn't make any sense any more.
2) Teach the unroller at least and the vectorizer potentially to handle
   non-if-converted loops. This is trivial for the unroller but hard for
   the vectorizer.
3) Compute the relative hotness of the loop and thread that down to the
   various places that make cost tradeoffs (very likely only the
   unroller makes sense here, and then only when dealing with loops that
   are small enough for unrolling to not completely blow out the LSD).

I'm still dubious how useful hotness information will be. So far, my
experiments show that if we can get the correct logic for determining
when unrolling actually helps performance, the code size impact is
completely unimportant and we can unroll in all cases. But at least
we'll no longer burn code size on cold code.

One somewhat unrelated idea that I've had forever but not had time to
implement: mark all functions which are only reachable via the global
constructors rigging in the module as optsize. This would also decrease
the impact of any more aggressive heuristics here on code size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200219 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-27 13:11:50 +00:00
..
already-vectorized.ll Fix broken builds by moving test to x86 dir 2013-10-24 15:11:03 +00:00
avx1.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
constant-vector-operand.ll LoopVectorizer: Bail out if we don't have datalayout we need it 2013-04-24 16:15:58 +00:00
conversion-cost.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
cost-model.ll Fix missing CHECK-LABELs 2013-10-02 20:29:00 +00:00
gather-cost.ll X86 cost model: Add cost for vectorized gather/scather 2013-07-12 19:16:07 +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
illegal-parallel-loop-uniform-write.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
lit.local.cfg [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
metadata-enable.ll force vector width via cpu on vectorizer metadata enable 2013-12-07 21:46:08 +00:00
min-trip-count-switch.ll TBAA: remove !tbaa from testing cases if not used. 2013-04-30 17:52:57 +00:00
no-vector.ll Make TargetLowering::getTypeConversion more resilient against odd illegal MVTs. 2012-12-19 14:34:28 +00:00
parallel-loops-after-reg2mem.ll Add support for llvm.vectorizer metadata 2013-05-28 20:00:34 +00:00
parallel-loops.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
rauw-bug.ll SLPVectorizer: Fix stale for Value pointer array 2013-11-19 22:20:20 +00:00
reduction-crash.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
small-size.ll [vectorize] Initial version of respecting PGO in the vectorizer: treat 2014-01-27 13:11:50 +00:00
struct-store.ll Fix typo "Makre" -> "Make". 2012-12-24 19:55:47 +00:00
tripcount.ll LoopVectorizer: Truncate i64 trip counts of i32 phis if necessary 2013-11-26 22:11:23 +00:00
unroll_selection.ll LoopVectorizer: Implement a new heuristics for selecting the unroll factor. 2013-01-20 05:24:29 +00:00
unroll-pm.ll Disable unrolling in the loop vectorizer when disabled in the pass manager 2013-08-28 18:33:10 +00:00
unroll-small-loops.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
vector_ptr_load_store.ll Formatting. 2013-02-05 15:32:16 +00:00
vector-scalar-select-cost.ll LoopVectorizer: Insert some white space to make test case more readable 2013-03-14 21:31:09 +00:00
x86_fp80-vector-store.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00