propagate updated lower bounds on strided loops to outer levels
commitcbd62cd512b6483e4c161066b2c4bb3ba76ae66c
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 18 Feb 2011 14:46:14 +0000 (18 15:46 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Mon, 21 Feb 2011 10:53:54 +0000 (21 11:53 +0100)
treedbf6a39d0975553674ada6abe31b45ca1738579d
parent1222bead3490c21cdde0a74f067199d78d33c31d
propagate updated lower bounds on strided loops to outer levels

When a loop has a non-trivial stride and stride detection is turned on,
the lower bound of the loop will get updated according to the stride.
This updated lower bound can sometimes be used to simplify bounds
or conditions in outer levels.

Without this patch, CLooG would generate the following code
for the new test case:

if (g4%4 == 0) {
  if ((N >= g0+t1+1) && (t1 <= 7) && (16*floord(N+15*g1+15*t0+15,16) >= 16*g1+15*t0+16)) {
    for (c0=t0;c0<=min(127,N-g1-1);c0+=16) {
      S1(g0+t1,c0+g1);
    }
  }
}

while it now generates

if (g4%4 == 0) {
  if ((N >= g0+t1+1) && (N >= g1+t0+1) && (t1 <= 7)) {
    for (c0=t0;c0<=min(127,N-g1-1);c0+=16) {
      S1(g0+t1,c0+g1);
    }
  }
}

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
source/loop.c
test/Makefile.am
test/isl/mxm-shared.c [new file with mode: 0644]
test/isl/mxm-shared.cloog [new file with mode: 0644]
test/reservoir/stride2.c