scheduling: optionally create schedules with outermost parallelism
[isl.git] / isl_schedule_private.h
blobe45decef189c4456fd17a65fc3f6b0455d6f6bbf
1 #ifndef ISL_SCHEDLUE_PRIVATE_H
2 #define ISL_SCHEDLUE_PRIVATE_H
4 #include <isl/schedule.h>
6 /* The schedule for an individual domain, plus information about the bands
7 * and scheduling dimensions.
8 * In particular, we keep track of the number of bands and for each
9 * band, the starting position of the next band. The first band starts at
10 * position 0.
11 * For each scheduling dimension, we keep track of whether it is parallel
12 * (within its band) with respect to the proximity edges.
14 struct isl_schedule_node {
15 isl_map *sched;
16 int n_band;
17 int *band_end;
18 int *band_id;
19 int *parallel;
22 /* Information about the computed schedule.
23 * n is the number of nodes/domains/statements.
24 * n_band is the maximal number of bands.
25 * n_total_row is the number of coordinates of the schedule.
26 * dim contains a description of the parameters.
27 * band_forest points to a band forest representation of the schedule
28 * and may be NULL if the forest hasn't been created yet.
30 struct isl_schedule {
31 int ref;
33 int n;
34 int n_band;
35 int n_total_row;
36 isl_dim *dim;
38 isl_band_list *band_forest;
40 struct isl_schedule_node node[1];
43 #endif