This is an archive of the discontinued LLVM Phabricator instance.

[Polly] Add dumpPw() and dumpExpanded() functions. NFC.
ClosedPublic

Authored by Meinersbur on Sep 28 2017, 2:49 AM.

Details

Summary

These functions print a multi-line and sorted representation of unions of polyhedra. Each polyhedron has its own line.

Example output:
[p_0, p_1, p_2] -> {

Stmt0[0] -> [0, 0];
Stmt0[i0] -> [i0, 0] : 0 < i0 <= 5 - p_2;
Stmt1[0] -> [0, 2] : p_1 = 1 and p_0 = -1;
Stmt2[0] -> [0, 1] : p_1 >= 3 + p_0;
Stmt3[0] -> [0, 3];

}

dumpExpanded() prints each point in the sets, except if the dimension is unbounded.

Example output of { [MemRef_A[i0] -> [i1]] : (exists (e0 = floor((1 + i1)/3): i0 = 1 and 3e0 <= i1 and 3e0 >= -1 + i1 and i1 >= 15 and i1 <= 25)) or (exists (e0 = floor((i1)/3): i0 = 0 and 3e0 < i1 and 3e0 >= -2 + i1 and i1 > 0 and i1 <= 11)) }:

{

[MemRef_A[0] ->[1]];
[MemRef_A[0] ->[2]];
[MemRef_A[0] ->[4]];
[MemRef_A[0] ->[5]];
[MemRef_A[0] ->[7]];
[MemRef_A[0] ->[8]];
[MemRef_A[0] ->[10]];
[MemRef_A[0] ->[11]];
[MemRef_A[1] ->[15]];
[MemRef_A[1] ->[16]];
[MemRef_A[1] ->[18]];
[MemRef_A[1] ->[19]];
[MemRef_A[1] ->[21]];
[MemRef_A[1] ->[22]];
[MemRef_A[1] ->[24]];
[MemRef_A[1] ->[25]]

}

These functions help to understand the isl's sets while debugging Polly.

Diff Detail

Repository
rL LLVM

Event Timeline

Meinersbur created this revision.Sep 28 2017, 2:49 AM
grosser accepted this revision.Sep 28 2017, 3:30 AM

LGTM.

This revision is now accepted and ready to land.Sep 28 2017, 3:30 AM
This revision was automatically updated to reflect the committed changes.