llvm-project/polly/lib
Roman Gareev 925ce50f1b Unroll and separate the remaining parts of isolation
The remaining parts produced by the full partial tile isolation can contain
hot spots that are worth to be optimized. Currently, we rely on the simple
loop unrolling pass, LiCM and the SLP vectorizer to optimize such parts.
However, the approach can suffer from the lack of the information about
aliasing that Polly provides using additional alias metadata or/and the lack
of the information required by simple loop unrolling pass.

This patch is the first step to optimize the remaining parts. To do it, we
unroll and separate them. In case of, for instance, Intel Kaby Lake, it helps
to increase the performance of the generated code from 39.87 GFlop/s to
49.23 GFlop/s.

The next possible step is to avoid unrolling performed by Polly in case of
isolated and remaining parts and rely only on simple loop unrolling pass and
the Loop vectorizer.

Reviewed-by: Tobias Grosser <tobias@grosser.es>

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

llvm-svn: 312929
2017-09-11 17:46:47 +00:00
..
Analysis Revert "[ScopDetect/Info] Look through PHIs that follow an error block" 2017-09-06 19:05:40 +00:00
CodeGen [CodegenCleanup] Update cleanup passes according (old) PassManagerBuilder. 2017-09-09 21:43:49 +00:00
Exchange [PM] Properly require and preserve OptimizationRemarkEmitter. NFCI. 2017-08-28 14:07:33 +00:00
External Move include/isl-noexceptions.h to include/isl/isl-noexceptions.h 2017-08-22 22:04:22 +00:00
Support Revert "[ScopDetect/Info] Look through PHIs that follow an error block" 2017-09-06 19:05:40 +00:00
Transform Unroll and separate the remaining parts of isolation 2017-09-11 17:46:47 +00:00
CMakeLists.txt [ScopInliner] Add a simple Scop-based inliner to polly. 2017-08-17 21:57:23 +00:00
Polly.cpp Drop '@brief' from doxygen comments 2016-09-02 06:33:33 +00:00