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_last
= isl_edge_proximity
14 /* The constraints that need to be satisfied by a schedule on "domain".
16 * "validity" constraints map domain elements i to domain elements
17 * that should be scheduled after i. (Hard constraint)
18 * "proximity" constraints map domain elements i to domains elements
19 * that should be scheduled as early as possible after i (or before i).
22 struct isl_schedule_constraints
{
23 isl_union_set
*domain
;
25 isl_union_map
*constraint
[isl_edge_last
+ 1];
28 /* The schedule for an individual domain, plus information about the bands
29 * and scheduling dimensions.
30 * In particular, we keep track of the number of bands and for each
31 * band, the starting position of the next band. The first band starts at
33 * For each scheduling dimension, we keep track of whether it result
34 * in zero dependence distances (within its band) with respect
35 * to the proximity edges.
37 struct isl_schedule_node
{
45 /* Information about the computed schedule.
46 * n is the number of nodes/domains/statements.
47 * n_band is the maximal number of bands.
48 * n_total_row is the number of coordinates of the schedule.
49 * dim contains a description of the parameters.
50 * band_forest points to a band forest representation of the schedule
51 * and may be NULL if the forest hasn't been created yet.
61 isl_band_list
*band_forest
;
63 struct isl_schedule_node node
[1];