1 # CLooG example file #2.
2 # Please read the first example which is fully documented to understand the
3 # six first parts of the input file. This example explains the seventh one.
5 ################################################################################
6 # The problem here is to impose a scanning order for the polyhedron of the #
7 # first example : the points are ordered by i+j values (a well known skewing). #
10 # | i>=2 | | c1>=4 / c1<=2*n | #
11 # | | i<=n | | | / | i>=c1-n | #
12 # | | | | | | / |/ | #
13 # n-+-*****--j<=n | n-+---+---*****--i<=n | for (c1=4;c1<=2*n;c1++){ #
14 # | ***** | | | *****| | for (i=max(c1-n,2); #
15 # | ***** ==> | | ***** | ==> i<=min(c1-2,n);i++){ #
16 # | ***** | | |***** | | j = c1-i ; #
17 # 2-+-*****--j>=2 | 2-+---*****---+--i>=2 | S1 ; #
18 # | | | | | /| / | | } #
19 # 0-+-+---+--->i | 0-+---+-------+--->c1 | } #
23 # Context : n>=2 | Scattering function: | #
24 # System : 2<=i<=n | c1=i+j | #
27 ################################################################################
32 # 2. Parameters {n | n>= 2}
37 # 3. We set manually the parameter name: n
41 # 4. Number of polyhedra:
44 # 5. The polyhedron description:
46 # {j, j | 2<=i<=n 2<=j<=n}
55 # 6. We let CLooG choose the iterator names
58 # 7. Seventh, we define the scanning order. In CLooG speaking, we talk about
59 # scattering functions (a shortcut for scheduling, allocation etc.). It may
60 # be useful to read the CLooG documentation about this point since it is
61 # not trivial if you are not comfortable with transformations in the polytope
62 # model. We describe them in three parts:
63 # 7.1 The number of scattering functions. It must be either 0 (in this case
64 # there is no particular scanning order and CLooG will do what it wants)
65 # or the number of polyhedra (set in part 4.).
66 # 7.2 The list of scattering functions. Each scattering function is a
67 # constraint matrix (as those that describe context or polyhedra) but
68 # made exclusively of equalities. They equate each new scattering
69 # dimension with an affine expression of the original polyhedron
70 # dimensions, the parameters and the scalar. CLooG will only respect the
71 # ordering given by the scattering dimensions. If there are several
72 # scattering dimensions, CLooG will use the lexicographic ordering (the
73 # first dimension leads, then the second one and so on). Every scattering
74 # functions must have the same number of scattering dimensions.
75 # Here we have c1=i+j, a one-dimensional scattering. It means that the
76 # points of the original polyhedron with the same i+j value will be
77 # scanned during the same iteration of the outer loop.
78 # 7.3 We set the scattering dimension names. We just put 0 if we want to let
79 # CLooG decide names, 1 otherwise. If we put 1, at the next line we give
80 # the space-separated parameter list.
81 1 # One scattering function (since there is only one polyhedron)
82 1 6 # The scattering function is a matrix of one row and six columns
84 0 1 -1 -1 0 0 # c1 = i+j
85 0 # We let CLooG choose the scattering dimension names