Files
clang-p2996/polly/lib/External/isl/test_inputs/codegen/lu.c
Tobias Grosser 07b2095234 Update isl to isl-0.17.1-57-g1879898
With this update the isl AST generation extracts disjunctive constraints early
on. As a result, code that previously resulted in two branches with (close-to)
identical code within them:

  if (P <= -1) {
    for (int c0 = 0; c0 < N; c0 += 1)
      Stmt_store(c0);
  } else if (P >= 1)
    for (int c0 = 0; c0 < N; c0 += 1)
       Stmt_store(c0);

results now in only a single branch body:

  if (P <= -1 || P >= 1)
    for (int c0 = 0; c0 < N; c0 += 1)
       Stmt_store(c0);

This resolves http://llvm.org/PR27559

Besides the above change, this isl update brings better simplification of
sets/maps containing existentially quantified dimensions and fixes a bug in
isl's coalescing.

llvm-svn: 272500
2016-06-12 04:30:40 +00:00

19 lines
781 B
C

for (int c0 = 0; c0 < n - 1; c0 += 32)
for (int c1 = c0; c1 < n; c1 += 32)
for (int c2 = c0; c2 < n; c2 += 32) {
if (c1 >= c0 + 32) {
for (int c3 = c0; c3 <= min(c0 + 31, c2 + 30); c3 += 1)
for (int c4 = c1; c4 <= min(n - 1, c1 + 31); c4 += 1)
for (int c5 = max(c2, c3 + 1); c5 <= min(n - 1, c2 + 31); c5 += 1)
S_6(c3, c4, c5);
} else {
for (int c3 = c0; c3 <= min(min(n - 2, c0 + 31), c2 + 30); c3 += 1) {
for (int c5 = max(c2, c3 + 1); c5 <= min(n - 1, c2 + 31); c5 += 1)
S_2(c3, c5);
for (int c4 = c3 + 1; c4 <= min(n - 1, c0 + 31); c4 += 1)
for (int c5 = max(c2, c3 + 1); c5 <= min(n - 1, c2 + 31); c5 += 1)
S_6(c3, c4, c5);
}
}
}