forked from OSchip/llvm-project
230acc4445
Even though we previously correctly detected the multi-dimensional access pattern for accesses with a certain base address, we only delinearized non-affine accesses to this address. Affine accesses have not been touched and remained as single dimensional accesses. The result was an inconsistent description of accesses to the same array, with some being one dimensional and some being multi-dimensional. This patch ensures that all accesses are delinearized with the same dimensionality as soon as a single one of them has been detected as non-affine. While writing this patch, it became evident that the options -polly-allow-nonaffine and -polly-detect-keep-going have not been properly supported in case delinearization has been turned on. This patch adds relevant test coverage and addresses these issues as well. We also added some more documentation to the functions that are modified in this patch. This fixes llvm.org/PR20123 Differential Revision: http://reviews.llvm.org/D5329 llvm-svn: 217728 |
||
---|---|---|
.. | ||
autoconf | ||
cmake | ||
docs | ||
include | ||
lib | ||
test | ||
tools | ||
utils | ||
www | ||
.arcconfig | ||
.arclint | ||
.gitattributes | ||
.gitignore | ||
CMakeLists.txt | ||
CREDITS.txt | ||
LICENSE.txt | ||
Makefile | ||
Makefile.common.in | ||
Makefile.config.in | ||
README | ||
configure |
README
Polly - Polyhedral optimizations for LLVM ----------------------------------------- http://polly.llvm.org/ Polly uses a mathematical representation, the polyhedral model, to represent and transform loops and other control flow structures. Using an abstract representation it is possible to reason about transformations in a more general way and to use highly optimized linear programming libraries to figure out the optimal loop structure. These transformations can be used to do constant propagation through arrays, remove dead loop iterations, optimize loops for cache locality, optimize arrays, apply advanced automatic parallelization, drive vectorization, or they can be used to do software pipelining.