llvm/test
Sebastian Pop 5026b2cc8b split delinearization pass in 3 steps
To compute the dimensions of the array in a unique way, we split the
delinearization analysis in three steps:

- find parametric terms in all memory access functions
- compute the array dimensions from the set of terms
- compute the delinearized access functions for each dimension

The first step is executed on all the memory access functions such that we
gather all the patterns in which an array is accessed. The second step reduces
all this information in a unique description of the sizes of the array. The
third step is delinearizing each memory access function following the common
description of the shape of the array computed in step 2.

This rewrite of the delinearization pass also solves a problem we had with the
previous implementation: because the previous algorithm was by induction on the
structure of the SCEV, it would not correctly recognize the shape of the array
when the memory access was not following the nesting of the loops: for example,
see polly/test/ScopInfo/multidim_only_ivs_3d_reverse.ll

; void foo(long n, long m, long o, double A[n][m][o]) {
;
;   for (long i = 0; i < n; i++)
;     for (long j = 0; j < m; j++)
;       for (long k = 0; k < o; k++)
;         A[i][k][j] = 1.0;

Starting with this patch we no longer delinearize access functions that do not
contain parameters, for example in test/Analysis/DependenceAnalysis/GCD.ll

;;  for (long int i = 0; i < 100; i++)
;;    for (long int j = 0; j < 100; j++) {
;;      A[2*i - 4*j] = i;
;;      *B++ = A[6*i + 8*j];

these accesses will not be delinearized as the upper bound of the loops are
constants, and their access functions do not contain SCEVUnknown parameters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208232 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-07 18:01:20 +00:00
..
Analysis split delinearization pass in 3 steps 2014-05-07 18:01:20 +00:00
Assembler
Bindings
Bitcode Add 'musttail' marker to call instructions 2014-04-24 20:14:34 +00:00
BugPoint Revert r206989, "Mark llvm/test/BugPoint/compile-custom.ll as XFAIL:vg_leak." It has been fixed since r207265. 2014-04-27 11:59:33 +00:00
CodeGen [ARM64][fast-isel] Disable target specific optimizations at -O0. Functionally, 2014-05-07 16:41:55 +00:00
DebugInfo DebugInfo: Correct the attribute type kind. 2014-05-01 18:31:21 +00:00
ExecutionEngine [ARM64] Disable regression tests for the old JIT. 2014-04-29 15:02:40 +00:00
Feature [IR] Make {extract,insert}element accept an index of any integer type. 2014-05-01 22:12:39 +00:00
FileCheck
Instrumentation [msan] Fix -fsanitize=memory -fno-integrated-as. 2014-05-07 14:10:51 +00:00
Integer
JitListener
Linker
LTO Add an -mattr option to the gold plugin to support subtarget features in LTO 2014-04-25 21:46:51 +00:00
MC [mips] Add highly experimental support for MIPS-I, MIPS-II, MIPS-III, and MIPS-V 2014-05-07 16:25:22 +00:00
Object [yaml2obj] Support ELF x86 relocations. 2014-05-07 17:06:38 +00:00
Other Do not make -pass-remarks additive. 2014-05-06 19:14:00 +00:00
TableGen [tablegen] Add !listconcat operator with the similar semantics as !strconcat 2014-05-07 10:13:19 +00:00
tools llvm-cov: Handle missing source files as GCOV does 2014-05-07 02:11:23 +00:00
Transforms [InstCombine] Add optimization of redundant insertvalue instructions. 2014-05-07 14:30:18 +00:00
Unit
Verifier IR: Conservatively verify inalloca arguments 2014-04-30 17:22:00 +00:00
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg [Test] Remove substitution for clang 2014-05-05 17:17:27 +00:00
lit.site.cfg.in
Makefile
Makefile.tests
TestRunner.sh