llvm-project/polly/lib
Tobias Grosser ca7f5bb767 Full/partial tile separation for vectorization
We isolate full tiles from partial tiles to be able to, for example, vectorize
loops with parametric lower and/or upper bounds.

If we use -polly-vectorizer=stripmine, we can see execution-time improvements:
correlation from 1m7361s to 0m5720s (-67.05 %), covariance from 1m5561s to
0m5680s (-63.50 %), ary3 from 2m3201s to 1m2361s (-46.72 %), CrystalMk from
8m5565s to 7m4285s (-13.18 %).

The current full/partial tile separation increases compile-time more than
necessary. As a result, we see in compile time regressions, for example, for 3mm
from 0m6320s to 0m9881s (56.34%). Some of this compile time increase is expected
as we generate more IR and consequently more time is spent in the LLVM backends.
However, a first investiagation has shown that a larger portion of compile time
is unnecessarily spent inside Polly's parallelism detection and could be
eliminated by propagating existing knowledge about vector loop parallelism.
Before enabling -polly-vectorizer=stripmine by default, it is necessary to
address this compile-time issue.

Contributed-by: Roman Gareev <gareevroman@gmail.com>

Reviewers: jdoerfert, grosser

Subscribers: grosser, #polly

Differential Revision: http://reviews.llvm.org/D13779

llvm-svn: 250809
2015-10-20 09:12:21 +00:00
..
Analysis [FIX] Only constant integer branch conditions are always affine 2015-10-18 22:56:42 +00:00
CodeGen Synthesize phi arguments in incoming block 2015-10-19 09:19:25 +00:00
Exchange [NFC] Consistenly use commented and annotated ScopPass functions 2015-09-27 15:43:29 +00:00
External Fix configure checks when applied by the latest clang 2015-10-06 21:45:06 +00:00
JSON Added arcanist linters and cleaned errors and warnings 2014-08-18 00:40:13 +00:00
Support Remove independent blocks pass 2015-10-18 12:28:00 +00:00
Transform Full/partial tile separation for vectorization 2015-10-20 09:12:21 +00:00
CMakeLists.txt Remove independent blocks pass 2015-10-18 12:28:00 +00:00
Makefile Remove independent blocks pass 2015-10-18 12:28:00 +00:00
Polly.cpp Move Pass registration into polly library 2014-03-19 17:54:23 +00:00