Fixes: #177527 Updated test cases: * CodeGen/OpenMP/matmul-parallel.ll, ScheduleOptimizer/pattern-matching-based-opts.ll Before the update, ISL bailed out the dependency computation due to hitting the max operation limit. The commit https://repo.or.cz/isl.git/commit/4bdfe2567715c5d1a8287c07d8685eb3db281e32 seems to have reduced the complexity needed of the dependency computation, thus now being able to recognize some loops as parallel. The tests were checking that the outer loop is not parallel, but some inner loops can be parallized, particularly the array packing loops. * DeLICM/reduction_looprotate_hoisted.ll changes in how isl generates expressions * ScheduleOptimizer/pattern-matching-based-opts_5.ll changes in how isl generates expressions, and AST node changes
28 lines
757 B
C
28 lines
757 B
C
for (int c0 = 0; c0 < n - 31; c0 += 32)
|
|
for (int c1 = 0; c1 <= n; c1 += 32) {
|
|
if (n >= c1 + 32) {
|
|
for (int c2 = 0; c2 <= 31; c2 += 1)
|
|
for (int c3 = 0; c3 <= 31; c3 += 1)
|
|
S_1(c0 + c2, c1 + c3);
|
|
} else {
|
|
for (int c2 = 0; c2 <= 31; c2 += 1) {
|
|
for (int c3 = 0; c3 < n - c1; c3 += 1)
|
|
S_1(c0 + c2, c1 + c3);
|
|
S_2(c0 + c2);
|
|
}
|
|
}
|
|
}
|
|
for (int c1 = 0; c1 < n; c1 += 32) {
|
|
if (n >= c1 + 32) {
|
|
for (int c2 = 0; c2 < n % 32; c2 += 1)
|
|
for (int c3 = 0; c3 <= 31; c3 += 1)
|
|
S_1(-((n + 32) % 32) + n + c2, c1 + c3);
|
|
} else {
|
|
for (int c2 = 0; c2 < n - c1; c2 += 1) {
|
|
for (int c3 = 0; c3 < n - c1; c3 += 1)
|
|
S_1(c1 + c2, c1 + c3);
|
|
S_2(c1 + c2);
|
|
}
|
|
}
|
|
}
|