1 #ifndef ISL_SCHEDLUE_PRIVATE_H
2 #define ISL_SCHEDLUE_PRIVATE_H
5 #include <isl/schedule.h>
9 isl_edge_first
= isl_edge_validity
,
11 isl_edge_conditional_validity
,
13 isl_edge_last
= isl_edge_proximity
16 /* The constraints that need to be satisfied by a schedule on "domain".
18 * "validity" constraints map domain elements i to domain elements
19 * that should be scheduled after i. (Hard constraint)
20 * "proximity" constraints map domain elements i to domains elements
21 * that should be scheduled as early as possible after i (or before i).
24 * "condition" and "conditional_validity" constraints map possibly "tagged"
25 * domain elements i -> s to "tagged" domain elements j -> t.
26 * The elements of the "conditional_validity" constraints, but without the
27 * tags (i.e., the elements i -> j) are treated as validity constraints,
28 * except that during the construction of a tilable band,
29 * the elements of the "conditional_validity" constraints may be violated
30 * provided that all adjacent elements of the "condition" constraints
31 * are local within the band.
32 * A dependence is local within a band if domain and range are mapped
33 * to the same schedule point by the band.
35 struct isl_schedule_constraints
{
36 isl_union_set
*domain
;
38 isl_union_map
*constraint
[isl_edge_last
+ 1];
41 /* The schedule for an individual domain, plus information about the bands
42 * and scheduling dimensions.
43 * In particular, we keep track of the number of bands and for each
44 * band, the starting position of the next band. The first band starts at
46 * For each scheduling dimension, we keep track of whether it result
47 * in zero dependence distances (within its band) with respect
48 * to the proximity edges.
50 struct isl_schedule_node
{
58 /* Information about the computed schedule.
59 * n is the number of nodes/domains/statements.
60 * n_band is the maximal number of bands.
61 * n_total_row is the number of coordinates of the schedule.
62 * dim contains a description of the parameters.
63 * band_forest points to a band forest representation of the schedule
64 * and may be NULL if the forest hasn't been created yet.
74 isl_band_list
*band_forest
;
76 struct isl_schedule_node node
[1];