Home | History | Annotate | Download | only in dist

Lines Matching defs:schedule

19 #include <isl/schedule.h>
27 /* Return a schedule encapsulating the given schedule tree.
29 * We currently only allow schedule trees with a domain or extension as root.
32 * used to represent leaves in the constructed schedule.
35 * these leaves to ensure that they are only used while the schedule
42 isl_schedule *schedule;
50 "root of schedule tree should be a domain or extension",
53 schedule = isl_calloc_type(ctx, isl_schedule);
54 if (!schedule)
57 schedule->ref = 1;
58 schedule->root = tree;
59 schedule->leaf = isl_schedule_tree_leaf(ctx);
61 if (!schedule->leaf)
62 return isl_schedule_free(schedule);
63 return schedule;
69 /* Return a pointer to a schedule with as single node
83 /* Return a pointer to a schedule with as single node
102 /* Return an isl_schedule that is equal to "schedule" and that has only
105 __isl_give isl_schedule *isl_schedule_cow(__isl_take isl_schedule *schedule)
110 if (!schedule)
112 if (schedule->ref == 1)
113 return schedule;
115 ctx = isl_schedule_get_ctx(schedule);
116 schedule->ref--;
117 tree = isl_schedule_tree_copy(schedule->root);
135 /* Replace the root of "schedule" by "tree".
138 __isl_take isl_schedule *schedule, __isl_take isl_schedule_tree *tree)
140 if (!schedule || !tree)
142 if (schedule->root == tree) {
144 return schedule;
147 schedule = isl_schedule_cow(schedule);
148 if (!schedule)
150 isl_schedule_tree_free(schedule->root);
151 schedule->root = tree;
153 return schedule;
155 isl_schedule_free(schedule);
160 isl_ctx *isl_schedule_get_ctx(__isl_keep isl_schedule *schedule)
162 return schedule ? isl_schedule_tree_get_ctx(schedule->leaf) : NULL;
165 /* Return a pointer to the leaf of "schedule".
168 __isl_keep isl_schedule *schedule)
170 return schedule ? schedule->leaf : NULL;
186 /* Return the (parameter) space of the schedule, i.e., the space
190 __isl_keep isl_schedule *schedule)
196 if (!schedule)
198 type = isl_schedule_tree_get_type(schedule->root);
200 isl_die(isl_schedule_get_ctx(schedule), isl_error_internal,
203 domain = isl_schedule_tree_domain_get_domain(schedule->root);
210 /* Return a pointer to the root of "schedule".
213 __isl_keep isl_schedule *schedule)
219 if (!schedule)
222 ctx = isl_schedule_get_ctx(schedule);
223 tree = isl_schedule_tree_copy(schedule->root);
224 schedule = isl_schedule_copy(schedule);
226 return isl_schedule_node_alloc(schedule, tree, ancestors, NULL);
229 /* Return the domain of the root domain node of "schedule".
232 __isl_keep isl_schedule *schedule)
234 if (!schedule)
236 return isl_schedule_tree_domain_get_domain(schedule->root);
273 __isl_take isl_schedule *schedule,
279 node = isl_schedule_get_root(schedule);
280 isl_schedule_free(schedule);
283 schedule = isl_schedule_node_get_schedule(node);
286 return schedule;
299 * in the schedule "schedule".
302 __isl_take isl_schedule *schedule)
304 return isl_schedule_map_schedule_node_bottom_up(schedule, &reset_user,
319 /* Align the parameters of all nodes in schedule "schedule"
323 __isl_take isl_schedule *schedule, __isl_take isl_space *space)
325 schedule = isl_schedule_map_schedule_node_bottom_up(schedule,
328 return schedule;
343 /* Compute the pullback of "schedule" by the function represented by "upma".
344 * In other words, plug in "upma" in the iteration domains of "schedule".
346 * The schedule tree is not allowed to contain any expansion nodes.
349 __isl_take isl_schedule *schedule,
352 schedule = isl_schedule_map_schedule_node_bottom_up(schedule,
355 return schedule;
358 /* Expand the schedule "schedule" by extending all leaves
367 __isl_give isl_schedule *isl_schedule_expand(__isl_take isl_schedule *schedule,
383 node = isl_schedule_get_root(schedule);
384 isl_schedule_free(schedule);
386 schedule = isl_schedule_node_get_schedule(node);
389 return schedule;
392 /* Intersect the domain of the schedule "schedule" with "domain".
393 * The root of "schedule" is required to be a domain node.
396 __isl_take isl_schedule *schedule, __isl_take isl_union_set *domain)
401 if (!schedule || !domain)
404 root_type = isl_schedule_tree_get_type(schedule->root);
406 isl_die(isl_schedule_get_ctx(schedule), isl_error_invalid,
409 node = isl_schedule_get_root(schedule);
410 isl_schedule_free(schedule);
412 schedule = isl_schedule_node_get_schedule(node);
415 return schedule;
417 isl_schedule_free(schedule);
422 /* Replace the domain of the schedule "schedule" with the gist
426 __isl_take isl_schedule *schedule, __isl_take isl_set *context)
431 if (!schedule || !context)
434 root_type = isl_schedule_tree_get_type(schedule->root);
436 isl_die(isl_schedule_get_ctx(schedule), isl_error_invalid,
439 node = isl_schedule_get_root(schedule);
440 isl_schedule_free(schedule);
442 schedule = isl_schedule_node_get_schedule(node);
445 return schedule;
447 isl_schedule_free(schedule);
452 /* Return an isl_union_map representation of the schedule. In particular,
453 * return an isl_union_map corresponding to the subtree schedule of the child
478 /* Insert a band node with partial schedule "partial" between the domain
479 * root node of "schedule" and its single child.
480 * Return a pointer to the updated schedule.
486 __isl_take isl_schedule *schedule,
492 node = isl_schedule_get_root(schedule);
493 isl_schedule_free(schedule);
510 schedule = isl_schedule_node_get_schedule(node);
513 return schedule;
521 * root node of "schedule" and its single child.
522 * Return a pointer to the updated schedule.
525 __isl_take isl_schedule *schedule, __isl_take isl_set *context)
529 node = isl_schedule_get_root(schedule);
530 isl_schedule_free(schedule);
533 schedule = isl_schedule_node_get_schedule(node);
536 return schedule;
540 * root node of "schedule" and its single child.
541 * Return a pointer to the updated schedule.
544 __isl_take isl_schedule *schedule, __isl_take isl_set *guard)
548 node = isl_schedule_get_root(schedule);
549 isl_schedule_free(schedule);
552 schedule = isl_schedule_node_get_schedule(node);
555 return schedule;
582 /* Construct a schedule that combines the schedules "schedule1" and "schedule2"
587 * The new schedule has as domain the union of the domains of the two
629 "schedule domains not disjoint",
650 /* Construct a schedule that combines the schedules "schedule1" and "schedule2"
661 /* Construct a schedule that combines the schedules "schedule1" and "schedule2"
671 /* Print "schedule" to "p".
674 __isl_keep isl_schedule *schedule)
676 if (!schedule)
679 return isl_printer_print_schedule_tree(p, schedule->root);
683 #define BASE schedule