Lines Matching refs:node

31 	isl_schedule_node *node;  in isl_schedule_node_alloc()  local
41 node = isl_calloc_type(ctx, isl_schedule_node); in isl_schedule_node_alloc()
42 if (!node) in isl_schedule_node_alloc()
44 node->ref = 1; in isl_schedule_node_alloc()
45 node->schedule = schedule; in isl_schedule_node_alloc()
46 node->tree = tree; in isl_schedule_node_alloc()
47 node->ancestors = ancestors; in isl_schedule_node_alloc()
48 node->child_pos = isl_alloc_array(ctx, int, n); in isl_schedule_node_alloc()
49 if (n && !node->child_pos) in isl_schedule_node_alloc()
50 return isl_schedule_node_free(node); in isl_schedule_node_alloc()
52 node->child_pos[i] = child_pos[i]; in isl_schedule_node_alloc()
54 return node; in isl_schedule_node_alloc()
69 isl_schedule_node *node; in isl_schedule_node_from_domain() local
72 node = isl_schedule_get_root(schedule); in isl_schedule_node_from_domain()
75 return node; in isl_schedule_node_from_domain()
87 isl_schedule_node *node; in isl_schedule_node_from_extension() local
95 node = isl_schedule_get_root(schedule); in isl_schedule_node_from_extension()
98 return node; in isl_schedule_node_from_extension()
103 isl_ctx *isl_schedule_node_get_ctx(__isl_keep isl_schedule_node *node) in isl_schedule_node_get_ctx() argument
105 return node ? isl_schedule_get_ctx(node->schedule) : NULL; in isl_schedule_node_get_ctx()
111 __isl_keep isl_schedule_node *node) in isl_schedule_node_peek_leaf() argument
113 return node ? isl_schedule_peek_leaf(node->schedule) : NULL; in isl_schedule_node_peek_leaf()
119 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_leaf() argument
121 return isl_schedule_tree_copy(isl_schedule_node_peek_leaf(node)); in isl_schedule_node_get_leaf()
127 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_type() argument
129 return node ? isl_schedule_tree_get_type(node->tree) in isl_schedule_node_get_type()
136 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_parent_type() argument
144 if (!node) in isl_schedule_node_get_parent_type()
146 has_parent = isl_schedule_node_has_parent(node); in isl_schedule_node_get_parent_type()
150 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_get_parent_type()
152 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_parent_type()
157 parent = isl_schedule_tree_list_get_schedule_tree(node->ancestors, pos); in isl_schedule_node_get_parent_type()
167 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_tree() argument
169 if (!node) in isl_schedule_node_get_tree()
172 return isl_schedule_tree_copy(node->tree); in isl_schedule_node_get_tree()
178 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_schedule() argument
180 if (!node) in isl_schedule_node_get_schedule()
182 return isl_schedule_copy(node->schedule); in isl_schedule_node_get_schedule()
188 __isl_keep isl_schedule_node *node) in isl_schedule_node_dup() argument
190 if (!node) in isl_schedule_node_dup()
193 return isl_schedule_node_alloc(isl_schedule_copy(node->schedule), in isl_schedule_node_dup()
194 isl_schedule_tree_copy(node->tree), in isl_schedule_node_dup()
195 isl_schedule_tree_list_copy(node->ancestors), in isl_schedule_node_dup()
196 node->child_pos); in isl_schedule_node_dup()
203 __isl_take isl_schedule_node *node) in isl_schedule_node_cow() argument
205 if (!node) in isl_schedule_node_cow()
208 if (node->ref == 1) in isl_schedule_node_cow()
209 return node; in isl_schedule_node_cow()
210 node->ref--; in isl_schedule_node_cow()
211 return isl_schedule_node_dup(node); in isl_schedule_node_cow()
217 __isl_keep isl_schedule_node *node) in isl_schedule_node_copy() argument
219 if (!node) in isl_schedule_node_copy()
222 node->ref++; in isl_schedule_node_copy()
223 return node; in isl_schedule_node_copy()
229 __isl_take isl_schedule_node *node) in isl_schedule_node_free() argument
231 if (!node) in isl_schedule_node_free()
233 if (--node->ref > 0) in isl_schedule_node_free()
236 isl_schedule_tree_list_free(node->ancestors); in isl_schedule_node_free()
237 free(node->child_pos); in isl_schedule_node_free()
238 isl_schedule_tree_free(node->tree); in isl_schedule_node_free()
239 isl_schedule_free(node->schedule); in isl_schedule_node_free()
240 free(node); in isl_schedule_node_free()
280 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_schedule_depth() argument
286 if (!node) in isl_schedule_node_get_schedule_depth()
289 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_schedule_depth()
297 node->ancestors, i); in isl_schedule_node_get_schedule_depth()
684 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_prefix_schedule_multi_union_pw_aff() argument
690 if (!node) in isl_schedule_node_get_prefix_schedule_multi_union_pw_aff()
693 space = isl_schedule_get_space(node->schedule); in isl_schedule_node_get_prefix_schedule_multi_union_pw_aff()
695 if (node->tree == node->schedule->root) in isl_schedule_node_get_prefix_schedule_multi_union_pw_aff()
705 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_prefix_schedule_multi_union_pw_aff()
706 if (n < 0 || collect_filter_prefix(node->ancestors, n, &data) < 0) in isl_schedule_node_get_prefix_schedule_multi_union_pw_aff()
736 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_prefix_schedule_union_pw_multi_aff() argument
743 if (!node) in isl_schedule_node_get_prefix_schedule_union_pw_multi_aff()
746 space = isl_schedule_get_space(node->schedule); in isl_schedule_node_get_prefix_schedule_union_pw_multi_aff()
747 if (node->tree == node->schedule->root) in isl_schedule_node_get_prefix_schedule_union_pw_multi_aff()
758 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_prefix_schedule_union_pw_multi_aff()
759 if (n < 0 || collect_filter_prefix(node->ancestors, n, &data) < 0) in isl_schedule_node_get_prefix_schedule_union_pw_multi_aff()
783 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_prefix_schedule_union_map() argument
787 upma = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(node); in isl_schedule_node_get_prefix_schedule_union_map()
803 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_prefix_schedule_relation() argument
810 if (!node) in isl_schedule_node_get_prefix_schedule_relation()
813 space = isl_schedule_get_space(node->schedule); in isl_schedule_node_get_prefix_schedule_relation()
814 if (node->tree == node->schedule->root) in isl_schedule_node_get_prefix_schedule_relation()
825 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_prefix_schedule_relation()
826 if (n < 0 || collect_filter_prefix(node->ancestors, n, &data) < 0) in isl_schedule_node_get_prefix_schedule_relation()
856 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_domain() argument
861 if (!node) in isl_schedule_node_get_domain()
864 if (node->tree == node->schedule->root) { in isl_schedule_node_get_domain()
867 space = isl_schedule_get_space(node->schedule); in isl_schedule_node_get_domain()
878 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_domain()
879 if (n < 0 || collect_filter_prefix(node->ancestors, n, &data) < 0) in isl_schedule_node_get_domain()
895 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_universe_domain() argument
900 if (!node) in isl_schedule_node_get_universe_domain()
903 if (node->tree == node->schedule->root) { in isl_schedule_node_get_universe_domain()
906 space = isl_schedule_get_space(node->schedule); in isl_schedule_node_get_universe_domain()
917 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_universe_domain()
918 if (n < 0 || collect_filter_prefix(node->ancestors, n, &data) < 0) in isl_schedule_node_get_universe_domain()
936 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_subtree_schedule_union_map() argument
941 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_get_subtree_schedule_union_map()
942 leaf = isl_schedule_node_peek_leaf(node); in isl_schedule_node_get_subtree_schedule_union_map()
948 domain = isl_schedule_node_get_universe_domain(node); in isl_schedule_node_get_subtree_schedule_union_map()
960 isl_size isl_schedule_node_get_tree_depth(__isl_keep isl_schedule_node *node) in isl_schedule_node_get_tree_depth() argument
962 if (!node) in isl_schedule_node_get_tree_depth()
964 return isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_tree_depth()
971 isl_bool isl_schedule_node_has_parent(__isl_keep isl_schedule_node *node) in isl_schedule_node_has_parent() argument
975 depth = isl_schedule_node_get_tree_depth(node); in isl_schedule_node_has_parent()
984 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_child_position() argument
989 if (!node) in isl_schedule_node_get_child_position()
991 has_parent = isl_schedule_node_has_parent(node); in isl_schedule_node_get_child_position()
995 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_get_child_position()
998 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_get_child_position()
999 return n < 0 ? isl_size_error : node->child_pos[n - 1]; in isl_schedule_node_get_child_position()
1006 __isl_keep isl_schedule_node *node) in isl_schedule_node_has_previous_sibling() argument
1011 if (!node) in isl_schedule_node_has_previous_sibling()
1013 has_parent = isl_schedule_node_has_parent(node); in isl_schedule_node_has_previous_sibling()
1017 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_has_previous_sibling()
1021 return isl_bool_ok(node->child_pos[n - 1] > 0); in isl_schedule_node_has_previous_sibling()
1027 isl_bool isl_schedule_node_has_next_sibling(__isl_keep isl_schedule_node *node) in isl_schedule_node_has_next_sibling() argument
1033 if (!node) in isl_schedule_node_has_next_sibling()
1035 has_parent = isl_schedule_node_has_parent(node); in isl_schedule_node_has_next_sibling()
1039 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_has_next_sibling()
1042 tree = isl_schedule_tree_list_get_schedule_tree(node->ancestors, n - 1); in isl_schedule_node_has_next_sibling()
1048 return isl_bool_ok(node->child_pos[n - 1] + 1 < n_child); in isl_schedule_node_has_next_sibling()
1057 isl_bool isl_schedule_node_has_children(__isl_keep isl_schedule_node *node) in isl_schedule_node_has_children() argument
1059 if (!node) in isl_schedule_node_has_children()
1061 return isl_bool_ok(!isl_schedule_tree_is_leaf(node->tree)); in isl_schedule_node_has_children()
1074 isl_size isl_schedule_node_n_children(__isl_keep isl_schedule_node *node) in isl_schedule_node_n_children() argument
1078 if (!node) in isl_schedule_node_n_children()
1081 if (isl_schedule_tree_is_leaf(node->tree)) in isl_schedule_node_n_children()
1084 n = isl_schedule_tree_n_children(node->tree); in isl_schedule_node_n_children()
1098 __isl_take isl_schedule_node *node, int generation) in isl_schedule_node_ancestor() argument
1103 if (!node) in isl_schedule_node_ancestor()
1106 return node; in isl_schedule_node_ancestor()
1107 n = isl_schedule_node_get_tree_depth(node); in isl_schedule_node_ancestor()
1109 return isl_schedule_node_free(node); in isl_schedule_node_ancestor()
1111 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_ancestor()
1113 return isl_schedule_node_free(node)); in isl_schedule_node_ancestor()
1114 node = isl_schedule_node_cow(node); in isl_schedule_node_ancestor()
1115 if (!node) in isl_schedule_node_ancestor()
1118 tree = isl_schedule_tree_list_get_schedule_tree(node->ancestors, in isl_schedule_node_ancestor()
1120 isl_schedule_tree_free(node->tree); in isl_schedule_node_ancestor()
1121 node->tree = tree; in isl_schedule_node_ancestor()
1122 node->ancestors = isl_schedule_tree_list_drop(node->ancestors, in isl_schedule_node_ancestor()
1124 if (!node->ancestors || !node->tree) in isl_schedule_node_ancestor()
1125 return isl_schedule_node_free(node); in isl_schedule_node_ancestor()
1127 return node; in isl_schedule_node_ancestor()
1133 __isl_take isl_schedule_node *node) in isl_schedule_node_parent() argument
1135 if (!node) in isl_schedule_node_parent()
1137 if (!isl_schedule_node_has_parent(node)) in isl_schedule_node_parent()
1138 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_parent()
1140 return isl_schedule_node_free(node)); in isl_schedule_node_parent()
1141 return isl_schedule_node_ancestor(node, 1); in isl_schedule_node_parent()
1147 __isl_take isl_schedule_node *node) in isl_schedule_node_grandparent() argument
1149 return isl_schedule_node_ancestor(node, 2); in isl_schedule_node_grandparent()
1155 __isl_take isl_schedule_node *node) in isl_schedule_node_root() argument
1159 if (!node) in isl_schedule_node_root()
1161 n = isl_schedule_node_get_tree_depth(node); in isl_schedule_node_root()
1163 return isl_schedule_node_free(node); in isl_schedule_node_root()
1164 return isl_schedule_node_ancestor(node, n); in isl_schedule_node_root()
1171 __isl_take isl_schedule_node *node, int pos) in isl_schedule_node_child() argument
1178 node = isl_schedule_node_cow(node); in isl_schedule_node_child()
1179 if (!node) in isl_schedule_node_child()
1181 if (!isl_schedule_node_has_children(node)) in isl_schedule_node_child()
1182 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_child()
1184 return isl_schedule_node_free(node)); in isl_schedule_node_child()
1186 ctx = isl_schedule_node_get_ctx(node); in isl_schedule_node_child()
1187 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_child()
1189 return isl_schedule_node_free(node); in isl_schedule_node_child()
1190 child_pos = isl_realloc_array(ctx, node->child_pos, int, n + 1); in isl_schedule_node_child()
1192 return isl_schedule_node_free(node); in isl_schedule_node_child()
1193 node->child_pos = child_pos; in isl_schedule_node_child()
1194 node->child_pos[n] = pos; in isl_schedule_node_child()
1196 node->ancestors = isl_schedule_tree_list_add(node->ancestors, in isl_schedule_node_child()
1197 isl_schedule_tree_copy(node->tree)); in isl_schedule_node_child()
1198 tree = node->tree; in isl_schedule_node_child()
1202 tree = isl_schedule_node_get_leaf(node); in isl_schedule_node_child()
1203 isl_schedule_tree_free(node->tree); in isl_schedule_node_child()
1204 node->tree = tree; in isl_schedule_node_child()
1206 if (!node->tree || !node->ancestors) in isl_schedule_node_child()
1207 return isl_schedule_node_free(node); in isl_schedule_node_child()
1209 return node; in isl_schedule_node_child()
1216 __isl_take isl_schedule_node *node, int pos1, int pos2) in isl_schedule_node_grandchild() argument
1218 node = isl_schedule_node_child(node, pos1); in isl_schedule_node_grandchild()
1219 node = isl_schedule_node_child(node, pos2); in isl_schedule_node_grandchild()
1220 return node; in isl_schedule_node_grandchild()
1227 __isl_take isl_schedule_node *node) in isl_schedule_node_first_child() argument
1229 return isl_schedule_node_child(node, 0); in isl_schedule_node_first_child()
1236 __isl_take isl_schedule_node *node) in isl_schedule_node_previous_sibling() argument
1241 node = isl_schedule_node_cow(node); in isl_schedule_node_previous_sibling()
1242 if (!node) in isl_schedule_node_previous_sibling()
1244 if (!isl_schedule_node_has_previous_sibling(node)) in isl_schedule_node_previous_sibling()
1245 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_previous_sibling()
1247 return isl_schedule_node_free(node)); in isl_schedule_node_previous_sibling()
1249 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_previous_sibling()
1251 return isl_schedule_node_free(node); in isl_schedule_node_previous_sibling()
1252 parent = isl_schedule_tree_list_get_schedule_tree(node->ancestors, in isl_schedule_node_previous_sibling()
1255 return isl_schedule_node_free(node); in isl_schedule_node_previous_sibling()
1256 node->child_pos[n - 1]--; in isl_schedule_node_previous_sibling()
1258 node->child_pos[n - 1]); in isl_schedule_node_previous_sibling()
1261 return isl_schedule_node_free(node); in isl_schedule_node_previous_sibling()
1262 isl_schedule_tree_free(node->tree); in isl_schedule_node_previous_sibling()
1263 node->tree = tree; in isl_schedule_node_previous_sibling()
1265 return node; in isl_schedule_node_previous_sibling()
1272 __isl_take isl_schedule_node *node) in isl_schedule_node_next_sibling() argument
1277 node = isl_schedule_node_cow(node); in isl_schedule_node_next_sibling()
1278 if (!node) in isl_schedule_node_next_sibling()
1280 if (!isl_schedule_node_has_next_sibling(node)) in isl_schedule_node_next_sibling()
1281 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_next_sibling()
1283 return isl_schedule_node_free(node)); in isl_schedule_node_next_sibling()
1285 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_schedule_node_next_sibling()
1287 return isl_schedule_node_free(node); in isl_schedule_node_next_sibling()
1288 parent = isl_schedule_tree_list_get_schedule_tree(node->ancestors, in isl_schedule_node_next_sibling()
1291 return isl_schedule_node_free(node); in isl_schedule_node_next_sibling()
1292 node->child_pos[n - 1]++; in isl_schedule_node_next_sibling()
1294 node->child_pos[n - 1]); in isl_schedule_node_next_sibling()
1297 return isl_schedule_node_free(node); in isl_schedule_node_next_sibling()
1298 isl_schedule_tree_free(node->tree); in isl_schedule_node_next_sibling()
1299 node->tree = tree; in isl_schedule_node_next_sibling()
1301 return node; in isl_schedule_node_next_sibling()
1307 __isl_keep isl_schedule_node *node, int pos) in isl_schedule_node_get_child() argument
1309 return isl_schedule_node_child(isl_schedule_node_copy(node), pos); in isl_schedule_node_get_child()
1319 __isl_take isl_schedule_node *node, in traverse() argument
1321 __isl_take isl_schedule_node *node, void *user), in traverse()
1323 __isl_take isl_schedule_node *node, void *user), in traverse()
1329 depth = isl_schedule_node_get_tree_depth(node); in traverse()
1331 return isl_schedule_node_free(node); in traverse()
1334 node = enter(node, user); in traverse()
1335 node = leave(node, user); in traverse()
1336 while ((node_depth = isl_schedule_node_get_tree_depth(node)) > in traverse()
1338 !isl_schedule_node_has_next_sibling(node)) { in traverse()
1339 node = isl_schedule_node_parent(node); in traverse()
1340 node = leave(node, user); in traverse()
1343 return isl_schedule_node_free(node); in traverse()
1345 node = isl_schedule_node_next_sibling(node); in traverse()
1348 return node; in traverse()
1357 isl_bool (*fn)(__isl_keep isl_schedule_node *node, void *user);
1372 __isl_take isl_schedule_node *node, void *user) in preorder_enter() argument
1376 if (!node) in preorder_enter()
1382 r = data->fn(node, data->user); in preorder_enter()
1384 return isl_schedule_node_free(node); in preorder_enter()
1386 return node; in preorder_enter()
1387 } while (isl_schedule_node_has_children(node) && in preorder_enter()
1388 (node = isl_schedule_node_first_child(node)) != NULL); in preorder_enter()
1390 return node; in preorder_enter()
1399 __isl_take isl_schedule_node *node, void *user) in preorder_leave() argument
1401 return node; in preorder_leave()
1415 __isl_keep isl_schedule_node *node, in isl_schedule_node_foreach_descendant_top_down() argument
1416 isl_bool (*fn)(__isl_keep isl_schedule_node *node, void *user), in isl_schedule_node_foreach_descendant_top_down() argument
1421 node = isl_schedule_node_copy(node); in isl_schedule_node_foreach_descendant_top_down()
1422 node = traverse(node, &preorder_enter, &preorder_leave, &data); in isl_schedule_node_foreach_descendant_top_down()
1423 isl_schedule_node_free(node); in isl_schedule_node_foreach_descendant_top_down()
1425 return node ? isl_stat_ok : isl_stat_error; in isl_schedule_node_foreach_descendant_top_down()
1437 isl_bool (*test)(__isl_keep isl_schedule_node *node, void *user);
1446 static isl_bool call_every(__isl_keep isl_schedule_node *node, void *user) in call_every() argument
1451 r = data->test(node, data->user); in call_every()
1462 isl_bool isl_schedule_node_every_descendant(__isl_keep isl_schedule_node *node, in isl_schedule_node_every_descendant() argument
1463 isl_bool (*test)(__isl_keep isl_schedule_node *node, void *user), in isl_schedule_node_every_descendant() argument
1469 r = isl_schedule_node_foreach_descendant_top_down(node, &call_every, in isl_schedule_node_every_descendant()
1484 __isl_give isl_schedule_node *(*fn)(__isl_take isl_schedule_node *node,
1497 __isl_take isl_schedule_node *node, void *user) in postorder_enter() argument
1499 while (node && isl_schedule_node_has_children(node)) in postorder_enter()
1500 node = isl_schedule_node_first_child(node); in postorder_enter()
1502 return node; in postorder_enter()
1512 __isl_take isl_schedule_node *node, void *user) in postorder_leave() argument
1516 return data->fn(node, data->user); in postorder_leave()
1527 __isl_take isl_schedule_node *node, in isl_schedule_node_map_descendant_bottom_up() argument
1528 __isl_give isl_schedule_node *(*fn)(__isl_take isl_schedule_node *node, in isl_schedule_node_map_descendant_bottom_up() argument
1533 return traverse(node, &postorder_enter, &postorder_leave, &data); in isl_schedule_node_map_descendant_bottom_up()
1544 __isl_keep isl_schedule_node *node, in isl_schedule_node_foreach_ancestor_top_down() argument
1545 isl_stat (*fn)(__isl_keep isl_schedule_node *node, void *user), in isl_schedule_node_foreach_ancestor_top_down() argument
1551 n = isl_schedule_node_get_tree_depth(node); in isl_schedule_node_foreach_ancestor_top_down()
1559 ancestor = isl_schedule_node_copy(node); in isl_schedule_node_foreach_ancestor_top_down()
1574 __isl_keep isl_schedule_node *node) in isl_schedule_node_is_subtree_anchored() argument
1576 if (!node) in isl_schedule_node_is_subtree_anchored()
1578 return isl_schedule_tree_is_subtree_anchored(node->tree); in isl_schedule_node_is_subtree_anchored()
1583 isl_size isl_schedule_node_band_n_member(__isl_keep isl_schedule_node *node) in isl_schedule_node_band_n_member() argument
1585 if (!node) in isl_schedule_node_band_n_member()
1587 return isl_schedule_tree_band_n_member(node->tree); in isl_schedule_node_band_n_member()
1594 __isl_keep isl_schedule_node *node, int pos) in isl_schedule_node_band_member_get_coincident() argument
1596 if (!node) in isl_schedule_node_band_member_get_coincident()
1598 return isl_schedule_tree_band_member_get_coincident(node->tree, pos); in isl_schedule_node_band_member_get_coincident()
1605 __isl_take isl_schedule_node *node, int pos, int coincident) in isl_schedule_node_band_member_set_coincident() argument
1610 if (!node) in isl_schedule_node_band_member_set_coincident()
1612 c = isl_schedule_node_band_member_get_coincident(node, pos); in isl_schedule_node_band_member_set_coincident()
1614 return node; in isl_schedule_node_band_member_set_coincident()
1616 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_band_member_set_coincident()
1619 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_member_set_coincident()
1621 return node; in isl_schedule_node_band_member_set_coincident()
1627 __isl_keep isl_schedule_node *node) in isl_schedule_node_band_get_permutable() argument
1629 if (!node) in isl_schedule_node_band_get_permutable()
1632 return isl_schedule_tree_band_get_permutable(node->tree); in isl_schedule_node_band_get_permutable()
1638 __isl_take isl_schedule_node *node, int permutable) in isl_schedule_node_band_set_permutable() argument
1642 if (!node) in isl_schedule_node_band_set_permutable()
1644 if (isl_schedule_node_band_get_permutable(node) == permutable) in isl_schedule_node_band_set_permutable()
1645 return node; in isl_schedule_node_band_set_permutable()
1647 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_band_set_permutable()
1649 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_set_permutable()
1651 return node; in isl_schedule_node_band_set_permutable()
1657 __isl_keep isl_schedule_node *node) in isl_schedule_node_band_get_space() argument
1659 if (!node) in isl_schedule_node_band_get_space()
1662 return isl_schedule_tree_band_get_space(node->tree); in isl_schedule_node_band_get_space()
1668 __isl_keep isl_schedule_node *node) in isl_schedule_node_band_get_partial_schedule() argument
1670 if (!node) in isl_schedule_node_band_get_partial_schedule()
1673 return isl_schedule_tree_band_get_partial_schedule(node->tree); in isl_schedule_node_band_get_partial_schedule()
1685 __isl_keep isl_schedule_node *node) in isl_schedule_node_band_get_partial_schedule_union_map() argument
1690 if (!node) in isl_schedule_node_band_get_partial_schedule_union_map()
1693 if (isl_schedule_node_get_type(node) != isl_schedule_node_band) in isl_schedule_node_band_get_partial_schedule_union_map()
1694 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_band_get_partial_schedule_union_map()
1696 n = isl_schedule_node_band_n_member(node); in isl_schedule_node_band_get_partial_schedule_union_map()
1702 domain = isl_schedule_node_get_universe_domain(node); in isl_schedule_node_band_get_partial_schedule_union_map()
1706 mupa = isl_schedule_node_band_get_partial_schedule(node); in isl_schedule_node_band_get_partial_schedule_union_map()
1714 __isl_keep isl_schedule_node *node, int pos) in isl_schedule_node_band_member_get_ast_loop_type() argument
1716 if (!node) in isl_schedule_node_band_member_get_ast_loop_type()
1719 return isl_schedule_tree_band_member_get_ast_loop_type(node->tree, pos); in isl_schedule_node_band_member_get_ast_loop_type()
1726 __isl_take isl_schedule_node *node, int pos, in isl_schedule_node_band_member_set_ast_loop_type() argument
1731 if (!node) in isl_schedule_node_band_member_set_ast_loop_type()
1734 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_band_member_set_ast_loop_type()
1736 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_member_set_ast_loop_type()
1743 __isl_keep isl_schedule_node *node, int pos) in isl_schedule_node_band_member_get_isolate_ast_loop_type() argument
1745 if (!node) in isl_schedule_node_band_member_get_isolate_ast_loop_type()
1749 node->tree, pos); in isl_schedule_node_band_member_get_isolate_ast_loop_type()
1757 __isl_take isl_schedule_node *node, int pos, in isl_schedule_node_band_member_set_isolate_ast_loop_type() argument
1762 if (!node) in isl_schedule_node_band_member_set_isolate_ast_loop_type()
1765 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_band_member_set_isolate_ast_loop_type()
1768 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_member_set_isolate_ast_loop_type()
1774 __isl_keep isl_schedule_node *node) in isl_schedule_node_band_get_ast_build_options() argument
1776 if (!node) in isl_schedule_node_band_get_ast_build_options()
1779 return isl_schedule_tree_band_get_ast_build_options(node->tree); in isl_schedule_node_band_get_ast_build_options()
1785 __isl_take isl_schedule_node *node, __isl_take isl_union_set *options) in isl_schedule_node_band_set_ast_build_options() argument
1789 if (!node || !options) in isl_schedule_node_band_set_ast_build_options()
1792 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_band_set_ast_build_options()
1794 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_set_ast_build_options()
1796 isl_schedule_node_free(node); in isl_schedule_node_band_set_ast_build_options()
1804 __isl_keep isl_schedule_node *node) in isl_schedule_node_band_get_ast_isolate_option() argument
1808 depth = isl_schedule_node_get_schedule_depth(node); in isl_schedule_node_band_get_ast_isolate_option()
1812 return isl_schedule_tree_band_get_ast_isolate_option(node->tree, depth); in isl_schedule_node_band_get_ast_isolate_option()
1818 static int check_space_multi_val(__isl_keep isl_schedule_node *node, in check_space_multi_val() argument
1824 node_space = isl_schedule_node_band_get_space(node); in check_space_multi_val()
1833 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in check_space_multi_val()
1843 __isl_take isl_schedule_node *node, __isl_take isl_multi_val *mv) in isl_schedule_node_band_scale() argument
1848 if (!node || !mv) in isl_schedule_node_band_scale()
1850 if (check_space_multi_val(node, mv) < 0) in isl_schedule_node_band_scale()
1852 anchored = isl_schedule_node_is_subtree_anchored(node); in isl_schedule_node_band_scale()
1856 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_band_scale()
1860 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_band_scale()
1862 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_scale()
1865 isl_schedule_node_free(node); in isl_schedule_node_band_scale()
1873 __isl_take isl_schedule_node *node, __isl_take isl_multi_val *mv) in isl_schedule_node_band_scale_down() argument
1878 if (!node || !mv) in isl_schedule_node_band_scale_down()
1880 if (check_space_multi_val(node, mv) < 0) in isl_schedule_node_band_scale_down()
1882 anchored = isl_schedule_node_is_subtree_anchored(node); in isl_schedule_node_band_scale_down()
1886 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_band_scale_down()
1890 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_band_scale_down()
1892 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_scale_down()
1895 isl_schedule_node_free(node); in isl_schedule_node_band_scale_down()
1903 __isl_take isl_schedule_node *node, __isl_take isl_multi_val *mv) in isl_schedule_node_band_mod() argument
1908 if (!node || !mv) in isl_schedule_node_band_mod()
1910 if (check_space_multi_val(node, mv) < 0) in isl_schedule_node_band_mod()
1912 anchored = isl_schedule_node_is_subtree_anchored(node); in isl_schedule_node_band_mod()
1916 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_band_mod()
1920 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_band_mod()
1922 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_mod()
1925 isl_schedule_node_free(node); in isl_schedule_node_band_mod()
1933 __isl_keep isl_schedule_node *node, in check_space_multi_union_pw_aff() argument
1939 node_space = isl_schedule_node_band_get_space(node); in check_space_multi_union_pw_aff()
1948 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in check_space_multi_union_pw_aff()
1957 __isl_take isl_schedule_node *node, in isl_schedule_node_band_shift() argument
1963 if (!node || !shift) in isl_schedule_node_band_shift()
1965 if (check_space_multi_union_pw_aff(node, shift) < 0) in isl_schedule_node_band_shift()
1967 anchored = isl_schedule_node_is_subtree_anchored(node); in isl_schedule_node_band_shift()
1971 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_band_shift()
1975 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_band_shift()
1977 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_shift()
1980 isl_schedule_node_free(node); in isl_schedule_node_band_shift()
2008 __isl_take isl_schedule_node *node, __isl_take isl_multi_val *sizes) in isl_schedule_node_band_tile() argument
2013 if (!node || !sizes) in isl_schedule_node_band_tile()
2015 anchored = isl_schedule_node_is_subtree_anchored(node); in isl_schedule_node_band_tile()
2019 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_band_tile()
2023 if (check_space_multi_val(node, sizes) < 0) in isl_schedule_node_band_tile()
2026 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_band_tile()
2028 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_tile()
2031 isl_schedule_node_free(node); in isl_schedule_node_band_tile()
2052 __isl_take isl_schedule_node *node) in isl_schedule_node_band_sink() argument
2060 if (!node) in isl_schedule_node_band_sink()
2063 type = isl_schedule_node_get_type(node); in isl_schedule_node_band_sink()
2065 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_band_sink()
2066 "not a band node", return isl_schedule_node_free(node)); in isl_schedule_node_band_sink()
2067 anchored = isl_schedule_node_is_subtree_anchored(node); in isl_schedule_node_band_sink()
2069 return isl_schedule_node_free(node); in isl_schedule_node_band_sink()
2071 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_band_sink()
2073 return isl_schedule_node_free(node)); in isl_schedule_node_band_sink()
2074 n = isl_schedule_tree_n_children(node->tree); in isl_schedule_node_band_sink()
2076 return isl_schedule_node_free(node); in isl_schedule_node_band_sink()
2078 return node; in isl_schedule_node_band_sink()
2080 contraction = isl_schedule_node_get_subtree_contraction(node); in isl_schedule_node_band_sink()
2082 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_band_sink()
2088 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_sink()
2098 __isl_take isl_schedule_node *node, int pos) in isl_schedule_node_band_split() argument
2103 depth = isl_schedule_node_get_schedule_depth(node); in isl_schedule_node_band_split()
2105 return isl_schedule_node_free(node); in isl_schedule_node_band_split()
2106 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_band_split()
2108 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_split()
2114 __isl_keep isl_schedule_node *node) in isl_schedule_node_context_get_context() argument
2116 if (!node) in isl_schedule_node_context_get_context()
2119 return isl_schedule_tree_context_get_context(node->tree); in isl_schedule_node_context_get_context()
2125 __isl_keep isl_schedule_node *node) in isl_schedule_node_domain_get_domain() argument
2127 if (!node) in isl_schedule_node_domain_get_domain()
2130 return isl_schedule_tree_domain_get_domain(node->tree); in isl_schedule_node_domain_get_domain()
2136 __isl_keep isl_schedule_node *node) in isl_schedule_node_expansion_get_expansion() argument
2138 if (!node) in isl_schedule_node_expansion_get_expansion()
2141 return isl_schedule_tree_expansion_get_expansion(node->tree); in isl_schedule_node_expansion_get_expansion()
2147 __isl_keep isl_schedule_node *node) in isl_schedule_node_expansion_get_contraction() argument
2149 if (!node) in isl_schedule_node_expansion_get_contraction()
2152 return isl_schedule_tree_expansion_get_contraction(node->tree); in isl_schedule_node_expansion_get_contraction()
2160 __isl_take isl_schedule_node *node, in isl_schedule_node_expansion_set_contraction_and_expansion() argument
2166 if (!node || !contraction || !expansion) in isl_schedule_node_expansion_set_contraction_and_expansion()
2169 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_expansion_set_contraction_and_expansion()
2172 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_expansion_set_contraction_and_expansion()
2174 isl_schedule_node_free(node); in isl_schedule_node_expansion_set_contraction_and_expansion()
2183 __isl_keep isl_schedule_node *node) in isl_schedule_node_extension_get_extension() argument
2185 if (!node) in isl_schedule_node_extension_get_extension()
2188 return isl_schedule_tree_extension_get_extension(node->tree); in isl_schedule_node_extension_get_extension()
2194 __isl_take isl_schedule_node *node, __isl_take isl_union_map *extension) in isl_schedule_node_extension_set_extension() argument
2198 if (!node || !extension) in isl_schedule_node_extension_set_extension()
2201 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_extension_set_extension()
2203 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_extension_set_extension()
2205 isl_schedule_node_free(node); in isl_schedule_node_extension_set_extension()
2213 __isl_keep isl_schedule_node *node) in isl_schedule_node_filter_get_filter() argument
2215 if (!node) in isl_schedule_node_filter_get_filter()
2218 return isl_schedule_tree_filter_get_filter(node->tree); in isl_schedule_node_filter_get_filter()
2224 __isl_take isl_schedule_node *node, __isl_take isl_union_set *filter) in isl_schedule_node_filter_set_filter() argument
2228 if (!node || !filter) in isl_schedule_node_filter_set_filter()
2231 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_filter_set_filter()
2233 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_filter_set_filter()
2235 isl_schedule_node_free(node); in isl_schedule_node_filter_set_filter()
2246 __isl_take isl_schedule_node *node, __isl_take isl_union_set *filter) in isl_schedule_node_filter_intersect_filter() argument
2251 if (!node || !filter) in isl_schedule_node_filter_intersect_filter()
2254 node_filter = isl_schedule_node_filter_get_filter(node); in isl_schedule_node_filter_intersect_filter()
2261 return node; in isl_schedule_node_filter_intersect_filter()
2264 node = isl_schedule_node_filter_set_filter(node, node_filter); in isl_schedule_node_filter_intersect_filter()
2265 return node; in isl_schedule_node_filter_intersect_filter()
2267 isl_schedule_node_free(node); in isl_schedule_node_filter_intersect_filter()
2276 __isl_keep isl_schedule_node *node) in isl_schedule_node_guard_get_guard() argument
2278 if (!node) in isl_schedule_node_guard_get_guard()
2281 return isl_schedule_tree_guard_get_guard(node->tree); in isl_schedule_node_guard_get_guard()
2287 __isl_keep isl_schedule_node *node) in isl_schedule_node_mark_get_id() argument
2289 if (!node) in isl_schedule_node_mark_get_id()
2292 return isl_schedule_tree_mark_get_id(node->tree); in isl_schedule_node_mark_get_id()
2297 static isl_stat check_is_sequence(__isl_keep isl_schedule_node *node) in check_is_sequence() argument
2299 if (!node) in check_is_sequence()
2302 if (isl_schedule_node_get_type(node) != isl_schedule_node_sequence) in check_is_sequence()
2303 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in check_is_sequence()
2313 __isl_take isl_schedule_node *node, int pos, in isl_schedule_node_sequence_splice() argument
2318 if (check_is_sequence(node) < 0 || !tree) in isl_schedule_node_sequence_splice()
2321 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_sequence_splice()
2323 node_tree = isl_schedule_node_get_tree(node); in isl_schedule_node_sequence_splice()
2325 node = isl_schedule_node_graft_tree(node, node_tree); in isl_schedule_node_sequence_splice()
2327 return node; in isl_schedule_node_sequence_splice()
2329 isl_schedule_node_free(node); in isl_schedule_node_sequence_splice()
2342 __isl_take isl_schedule_node *node, int pos) in isl_schedule_node_sequence_splice_child() argument
2350 if (check_is_sequence(node) < 0) in isl_schedule_node_sequence_splice_child()
2351 return isl_schedule_node_free(node); in isl_schedule_node_sequence_splice_child()
2352 node = isl_schedule_node_grandchild(node, pos, 0); in isl_schedule_node_sequence_splice_child()
2353 if (check_is_sequence(node) < 0) in isl_schedule_node_sequence_splice_child()
2354 return isl_schedule_node_free(node); in isl_schedule_node_sequence_splice_child()
2355 n = isl_schedule_node_n_children(node); in isl_schedule_node_sequence_splice_child()
2357 return isl_schedule_node_free(node); in isl_schedule_node_sequence_splice_child()
2358 child = isl_schedule_node_copy(node); in isl_schedule_node_sequence_splice_child()
2359 node = isl_schedule_node_parent(node); in isl_schedule_node_sequence_splice_child()
2360 filter = isl_schedule_node_filter_get_filter(node); in isl_schedule_node_sequence_splice_child()
2370 node = isl_schedule_node_parent(node); in isl_schedule_node_sequence_splice_child()
2371 node = isl_schedule_node_sequence_splice(node, pos, tree); in isl_schedule_node_sequence_splice_child()
2373 return node; in isl_schedule_node_sequence_splice_child()
2385 __isl_take isl_schedule_node *node) in isl_schedule_node_sequence_splice_children() argument
2390 if (check_is_sequence(node) < 0) in isl_schedule_node_sequence_splice_children()
2391 return isl_schedule_node_free(node); in isl_schedule_node_sequence_splice_children()
2392 n = isl_schedule_node_n_children(node); in isl_schedule_node_sequence_splice_children()
2394 return isl_schedule_node_free(node); in isl_schedule_node_sequence_splice_children()
2400 node = isl_schedule_node_grandchild(node, i, 0); in isl_schedule_node_sequence_splice_children()
2401 type = isl_schedule_node_get_type(node); in isl_schedule_node_sequence_splice_children()
2403 return isl_schedule_node_free(node); in isl_schedule_node_sequence_splice_children()
2405 node = isl_schedule_node_grandparent(node); in isl_schedule_node_sequence_splice_children()
2410 node = isl_schedule_node_sequence_splice_child(node, i); in isl_schedule_node_sequence_splice_children()
2413 return node; in isl_schedule_node_sequence_splice_children()
2432 __isl_take isl_schedule_node *node, in update_ancestors() argument
2443 pos = isl_schedule_node_copy(node); in update_ancestors()
2445 node = isl_schedule_node_cow(node); in update_ancestors()
2446 if (!node) in update_ancestors()
2449 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in update_ancestors()
2452 tree = isl_schedule_tree_copy(node->tree); in update_ancestors()
2458 node->ancestors, i); in update_ancestors()
2460 node->child_pos[i], tree); in update_ancestors()
2465 node->ancestors = isl_schedule_tree_list_set_schedule_tree( in update_ancestors()
2466 node->ancestors, i, isl_schedule_tree_copy(parent)); in update_ancestors()
2474 is_leaf = isl_schedule_tree_is_leaf(node->tree); in update_ancestors()
2475 node->schedule = isl_schedule_set_root(node->schedule, tree); in update_ancestors()
2477 isl_schedule_tree_free(node->tree); in update_ancestors()
2478 node->tree = isl_schedule_node_get_leaf(node); in update_ancestors()
2481 if (!node->schedule || !node->ancestors) in update_ancestors()
2482 return isl_schedule_node_free(node); in update_ancestors()
2484 return node; in update_ancestors()
2517 static int check_insert(__isl_keep isl_schedule_node *node) in check_insert() argument
2522 has_parent = isl_schedule_node_has_parent(node); in check_insert()
2526 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in check_insert()
2529 type = isl_schedule_node_get_parent_type(node); in check_insert()
2533 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in check_insert()
2548 __isl_take isl_schedule_node *node, in isl_schedule_node_insert_partial_schedule() argument
2555 if (check_insert(node) < 0) in isl_schedule_node_insert_partial_schedule()
2556 node = isl_schedule_node_free(node); in isl_schedule_node_insert_partial_schedule()
2557 anchored = isl_schedule_node_is_subtree_anchored(node); in isl_schedule_node_insert_partial_schedule()
2561 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_insert_partial_schedule()
2565 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_insert_partial_schedule()
2568 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_insert_partial_schedule()
2570 return node; in isl_schedule_node_insert_partial_schedule()
2572 isl_schedule_node_free(node); in isl_schedule_node_insert_partial_schedule()
2581 __isl_take isl_schedule_node *node, __isl_take isl_set *context) in isl_schedule_node_insert_context() argument
2585 if (check_insert(node) < 0) in isl_schedule_node_insert_context()
2586 node = isl_schedule_node_free(node); in isl_schedule_node_insert_context()
2588 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_insert_context()
2590 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_insert_context()
2592 return node; in isl_schedule_node_insert_context()
2605 __isl_take isl_schedule_node *node, in isl_schedule_node_insert_expansion() argument
2611 if (check_insert(node) < 0) in isl_schedule_node_insert_expansion()
2612 node = isl_schedule_node_free(node); in isl_schedule_node_insert_expansion()
2614 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_insert_expansion()
2616 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_insert_expansion()
2618 return node; in isl_schedule_node_insert_expansion()
2626 __isl_take isl_schedule_node *node, in isl_schedule_node_insert_extension() argument
2631 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_insert_extension()
2633 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_insert_extension()
2635 return node; in isl_schedule_node_insert_extension()
2642 __isl_take isl_schedule_node *node, __isl_take isl_union_set *filter) in isl_schedule_node_insert_filter() argument
2646 if (check_insert(node) < 0) in isl_schedule_node_insert_filter()
2647 node = isl_schedule_node_free(node); in isl_schedule_node_insert_filter()
2649 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_insert_filter()
2651 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_insert_filter()
2653 return node; in isl_schedule_node_insert_filter()
2660 __isl_take isl_schedule_node *node, __isl_take isl_set *guard) in isl_schedule_node_insert_guard() argument
2664 if (check_insert(node) < 0) in isl_schedule_node_insert_guard()
2665 node = isl_schedule_node_free(node); in isl_schedule_node_insert_guard()
2667 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_insert_guard()
2669 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_insert_guard()
2671 return node; in isl_schedule_node_insert_guard()
2679 __isl_take isl_schedule_node *node, __isl_take isl_id *mark) in isl_schedule_node_insert_mark() argument
2683 if (check_insert(node) < 0) in isl_schedule_node_insert_mark()
2684 node = isl_schedule_node_free(node); in isl_schedule_node_insert_mark()
2686 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_insert_mark()
2688 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_insert_mark()
2690 return node; in isl_schedule_node_insert_mark()
2701 __isl_take isl_schedule_node *node, in isl_schedule_node_insert_children() argument
2711 if (check_insert(node) < 0) in isl_schedule_node_insert_children()
2712 node = isl_schedule_node_free(node); in isl_schedule_node_insert_children()
2715 if (!node || n < 0) in isl_schedule_node_insert_children()
2718 ctx = isl_schedule_node_get_ctx(node); in isl_schedule_node_insert_children()
2726 node_i = isl_schedule_node_copy(node); in isl_schedule_node_insert_children()
2735 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_insert_children()
2738 return node; in isl_schedule_node_insert_children()
2741 isl_schedule_node_free(node); in isl_schedule_node_insert_children()
2751 __isl_take isl_schedule_node *node, in isl_schedule_node_insert_sequence() argument
2754 return isl_schedule_node_insert_children(node, in isl_schedule_node_insert_sequence()
2764 __isl_take isl_schedule_node *node, in isl_schedule_node_insert_set() argument
2767 return isl_schedule_node_insert_children(node, in isl_schedule_node_insert_set()
2778 __isl_take isl_schedule_node *node) in isl_schedule_node_cut() argument
2783 if (!node) in isl_schedule_node_cut()
2785 if (!isl_schedule_node_has_parent(node)) in isl_schedule_node_cut()
2786 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_cut()
2787 "cannot cut root", return isl_schedule_node_free(node)); in isl_schedule_node_cut()
2789 parent_type = isl_schedule_node_get_parent_type(node); in isl_schedule_node_cut()
2792 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_cut()
2794 return isl_schedule_node_free(node)); in isl_schedule_node_cut()
2796 leaf = isl_schedule_node_get_leaf(node); in isl_schedule_node_cut()
2797 return isl_schedule_node_graft_tree(node, leaf); in isl_schedule_node_cut()
2809 __isl_take isl_schedule_node *node) in isl_schedule_node_delete() argument
2815 depth = isl_schedule_node_get_tree_depth(node); in isl_schedule_node_delete()
2816 n = isl_schedule_node_n_children(node); in isl_schedule_node_delete()
2818 return isl_schedule_node_free(node); in isl_schedule_node_delete()
2821 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_delete()
2823 return isl_schedule_node_free(node)); in isl_schedule_node_delete()
2825 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_delete()
2827 return isl_schedule_node_free(node)); in isl_schedule_node_delete()
2828 type = isl_schedule_node_get_parent_type(node); in isl_schedule_node_delete()
2830 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_delete()
2832 return isl_schedule_node_free(node)); in isl_schedule_node_delete()
2833 if (isl_schedule_node_get_type(node) == isl_schedule_node_band) { in isl_schedule_node_delete()
2836 anchored = isl_schedule_node_is_subtree_anchored(node); in isl_schedule_node_delete()
2838 return isl_schedule_node_free(node); in isl_schedule_node_delete()
2840 isl_die(isl_schedule_node_get_ctx(node), in isl_schedule_node_delete()
2843 return isl_schedule_node_free(node)); in isl_schedule_node_delete()
2846 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_delete()
2851 tree = isl_schedule_node_get_leaf(node); in isl_schedule_node_delete()
2853 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_delete()
2855 return node; in isl_schedule_node_delete()
3256 __isl_take isl_schedule_node *node, __isl_take isl_id *group_id) in isl_schedule_node_group() argument
3266 depth = isl_schedule_node_get_schedule_depth(node); in isl_schedule_node_group()
3269 if (check_insert(node) < 0) in isl_schedule_node_group()
3272 domain = isl_schedule_node_get_domain(node); in isl_schedule_node_group()
3284 ctx = isl_schedule_node_get_ctx(node); in isl_schedule_node_group()
3298 isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(node); in isl_schedule_node_group()
3320 node = isl_schedule_node_insert_expansion(node, contraction, expansion); in isl_schedule_node_group()
3325 node = update_ancestors(node, &group_ancestor, &data); in isl_schedule_node_group()
3335 node = isl_schedule_node_child(node, 0); in isl_schedule_node_group()
3337 if (!node || disjoint < 0) in isl_schedule_node_group()
3338 return isl_schedule_node_free(node); in isl_schedule_node_group()
3340 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_group()
3342 return isl_schedule_node_free(node)); in isl_schedule_node_group()
3344 return node; in isl_schedule_node_group()
3346 isl_schedule_node_free(node); in isl_schedule_node_group()
3354 __isl_take isl_schedule_node *node, __isl_take isl_union_set *context) in isl_schedule_node_band_gist() argument
3358 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_band_gist()
3360 return isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_band_gist()
3385 __isl_take isl_schedule_node *node, struct isl_node_gist_data *data) in gist_enter_expansion() argument
3396 return isl_schedule_node_free(node); in gist_enter_expansion()
3398 expansion = isl_schedule_node_expansion_get_expansion(node); in gist_enter_expansion()
3401 contraction = isl_schedule_node_expansion_get_contraction(node); in gist_enter_expansion()
3408 expansion = isl_schedule_node_expansion_get_expansion(node); in gist_enter_expansion()
3410 node = isl_schedule_node_expansion_set_contraction_and_expansion(node, in gist_enter_expansion()
3413 return node; in gist_enter_expansion()
3426 __isl_take isl_schedule_node *node, struct isl_node_gist_data *data) in gist_leave_expansion() argument
3432 expansion = isl_schedule_node_expansion_get_expansion(node); in gist_leave_expansion()
3437 node = isl_schedule_node_free(node); in gist_leave_expansion()
3439 node = isl_schedule_node_delete(node); in gist_leave_expansion()
3443 return isl_schedule_node_free(node); in gist_leave_expansion()
3448 return node; in gist_leave_expansion()
3458 __isl_take isl_schedule_node *node, struct isl_node_gist_data *data) in gist_enter_extension() argument
3466 return isl_schedule_node_free(node); in gist_enter_extension()
3468 extension = isl_schedule_node_extension_get_extension(node); in gist_enter_extension()
3474 return node; in gist_enter_extension()
3484 static isl_bool gist_done(__isl_keep isl_schedule_node *node, in gist_done() argument
3493 filter = isl_schedule_node_filter_get_filter(node); in gist_done()
3532 __isl_take isl_schedule_node *node, void *user) in gist_enter() argument
3541 switch (isl_schedule_node_get_type(node)) { in gist_enter()
3543 return isl_schedule_node_free(node); in gist_enter()
3545 node = gist_enter_expansion(node, data); in gist_enter()
3548 node = gist_enter_extension(node, data); in gist_enter()
3562 done = gist_done(node, data); in gist_enter()
3563 filter = isl_schedule_node_filter_get_filter(node); in gist_enter()
3569 return isl_schedule_node_free(node); in gist_enter()
3570 return node; in gist_enter()
3574 node = isl_schedule_node_filter_set_filter(node, in gist_enter()
3580 return isl_schedule_node_free(node); in gist_enter()
3583 node = isl_schedule_node_child(node, 0); in gist_enter()
3584 node = isl_schedule_node_cut(node); in gist_enter()
3585 node = isl_schedule_node_parent(node); in gist_enter()
3586 return node; in gist_enter()
3587 } while (isl_schedule_node_has_children(node) && in gist_enter()
3588 (node = isl_schedule_node_first_child(node)) != NULL); in gist_enter()
3590 return node; in gist_enter()
3620 __isl_take isl_schedule_node *node, void *user) in gist_leave() argument
3628 switch (isl_schedule_node_get_type(node)) { in gist_leave()
3630 return isl_schedule_node_free(node); in gist_leave()
3632 node = gist_leave_expansion(node, data); in gist_leave()
3638 return isl_schedule_node_free(node); in gist_leave()
3645 return isl_schedule_node_free(node); in gist_leave()
3647 node = isl_schedule_node_band_gist(node, filter); in gist_leave()
3651 tree = isl_schedule_node_get_tree(node); in gist_leave()
3673 node = isl_schedule_node_graft_tree(node, tree); in gist_leave()
3675 node = isl_schedule_node_delete(node); in gist_leave()
3676 node = isl_schedule_node_delete(node); in gist_leave()
3685 node = isl_schedule_node_cut(node); in gist_leave()
3686 node = isl_schedule_node_insert_filter(node, filter); in gist_leave()
3697 return node; in gist_leave()
3712 __isl_take isl_schedule_node *node, __isl_take isl_union_set *context) in isl_schedule_node_gist() argument
3718 node = traverse(node, &gist_enter, &gist_leave, &data); in isl_schedule_node_gist()
3720 return node; in isl_schedule_node_gist()
3732 __isl_take isl_schedule_node *node, __isl_take isl_union_set *domain) in isl_schedule_node_domain_intersect_domain() argument
3738 if (!node || !domain) in isl_schedule_node_domain_intersect_domain()
3741 uset = isl_schedule_tree_domain_get_domain(node->tree); in isl_schedule_node_domain_intersect_domain()
3748 return node; in isl_schedule_node_domain_intersect_domain()
3751 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_domain_intersect_domain()
3756 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_domain_intersect_domain()
3758 node = isl_schedule_node_child(node, 0); in isl_schedule_node_domain_intersect_domain()
3759 node = isl_schedule_node_gist(node, uset); in isl_schedule_node_domain_intersect_domain()
3760 node = isl_schedule_node_parent(node); in isl_schedule_node_domain_intersect_domain()
3762 return node; in isl_schedule_node_domain_intersect_domain()
3764 isl_schedule_node_free(node); in isl_schedule_node_domain_intersect_domain()
3773 __isl_take isl_schedule_node *node, __isl_take isl_set *context) in isl_schedule_node_domain_gist_params() argument
3778 if (!node || !context) in isl_schedule_node_domain_gist_params()
3781 tree = isl_schedule_tree_copy(node->tree); in isl_schedule_node_domain_gist_params()
3782 domain = isl_schedule_tree_domain_get_domain(node->tree); in isl_schedule_node_domain_gist_params()
3785 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_domain_gist_params()
3787 return node; in isl_schedule_node_domain_gist_params()
3789 isl_schedule_node_free(node); in isl_schedule_node_domain_gist_params()
3820 __isl_take isl_schedule_node *node, void *user) in subtree_expansion_enter() argument
3830 switch (isl_schedule_node_get_type(node)) { in subtree_expansion_enter()
3832 return isl_schedule_node_free(node); in subtree_expansion_enter()
3834 type = isl_schedule_node_get_parent_type(node); in subtree_expansion_enter()
3838 filter = isl_schedule_node_filter_get_filter(node); in subtree_expansion_enter()
3856 isl_schedule_node_expansion_get_expansion(node); in subtree_expansion_enter()
3876 } while (isl_schedule_node_has_children(node) && in subtree_expansion_enter()
3877 (node = isl_schedule_node_first_child(node)) != NULL); in subtree_expansion_enter()
3879 return node; in subtree_expansion_enter()
3893 __isl_take isl_schedule_node *node, void *user) in subtree_expansion_leave() argument
3900 switch (isl_schedule_node_get_type(node)) { in subtree_expansion_leave()
3902 return isl_schedule_node_free(node); in subtree_expansion_leave()
3904 type = isl_schedule_node_get_parent_type(node); in subtree_expansion_leave()
3936 return node; in subtree_expansion_leave()
3951 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_subtree_expansion() argument
3958 if (!node) in isl_schedule_node_get_subtree_expansion()
3961 domain = isl_schedule_node_get_universe_domain(node); in isl_schedule_node_get_subtree_expansion()
3967 node = isl_schedule_node_copy(node); in isl_schedule_node_get_subtree_expansion()
3968 node = traverse(node, &subtree_expansion_enter, in isl_schedule_node_get_subtree_expansion()
3970 if (!node) in isl_schedule_node_get_subtree_expansion()
3972 isl_schedule_node_free(node); in isl_schedule_node_get_subtree_expansion()
4005 __isl_take isl_schedule_node *node, void *user) in subtree_contraction_enter() argument
4015 switch (isl_schedule_node_get_type(node)) { in subtree_contraction_enter()
4017 return isl_schedule_node_free(node); in subtree_contraction_enter()
4019 type = isl_schedule_node_get_parent_type(node); in subtree_contraction_enter()
4023 filter = isl_schedule_node_filter_get_filter(node); in subtree_contraction_enter()
4047 isl_schedule_node_expansion_get_contraction(node); in subtree_contraction_enter()
4069 } while (isl_schedule_node_has_children(node) && in subtree_contraction_enter()
4070 (node = isl_schedule_node_first_child(node)) != NULL); in subtree_contraction_enter()
4072 return node; in subtree_contraction_enter()
4086 __isl_take isl_schedule_node *node, void *user) in subtree_contraction_leave() argument
4093 switch (isl_schedule_node_get_type(node)) { in subtree_contraction_leave()
4095 return isl_schedule_node_free(node); in subtree_contraction_leave()
4097 type = isl_schedule_node_get_parent_type(node); in subtree_contraction_leave()
4132 return node; in subtree_contraction_leave()
4147 __isl_keep isl_schedule_node *node) in isl_schedule_node_get_subtree_contraction() argument
4154 if (!node) in isl_schedule_node_get_subtree_contraction()
4157 domain = isl_schedule_node_get_universe_domain(node); in isl_schedule_node_get_subtree_contraction()
4164 node = isl_schedule_node_copy(node); in isl_schedule_node_get_subtree_contraction()
4165 node = traverse(node, &subtree_contraction_enter, in isl_schedule_node_get_subtree_contraction()
4167 if (!node) in isl_schedule_node_get_subtree_contraction()
4169 isl_schedule_node_free(node); in isl_schedule_node_get_subtree_contraction()
4179 static isl_bool has_ancestors(__isl_keep isl_schedule_node *node, in has_ancestors() argument
4185 if (!node) in has_ancestors()
4188 n_ancestor = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in has_ancestors()
4198 tree = isl_schedule_tree_list_get_schedule_tree(node->ancestors, in has_ancestors()
4217 static isl_bool is_disjoint_extension(__isl_keep isl_schedule_node *node, in is_disjoint_extension() argument
4224 node = isl_schedule_node_copy(node); in is_disjoint_extension()
4225 node = isl_schedule_node_ancestor(node, 3); in is_disjoint_extension()
4226 old = isl_schedule_node_extension_get_extension(node); in is_disjoint_extension()
4227 domain = isl_schedule_node_get_universe_domain(node); in is_disjoint_extension()
4228 isl_schedule_node_free(node); in is_disjoint_extension()
4249 __isl_take isl_schedule_node *node, __isl_take isl_union_map *extension) in extend_extension() argument
4255 node = isl_schedule_node_parent(node); in extend_extension()
4256 pos = isl_schedule_node_get_child_position(node); in extend_extension()
4258 node = isl_schedule_node_free(node); in extend_extension()
4259 node = isl_schedule_node_grandparent(node); in extend_extension()
4260 node_extension = isl_schedule_node_extension_get_extension(node); in extend_extension()
4263 node = isl_schedule_node_extension_set_extension(node, extension); in extend_extension()
4264 node = isl_schedule_node_grandchild(node, 0, pos); in extend_extension()
4267 return isl_schedule_node_free(node); in extend_extension()
4268 if (!node) in extend_extension()
4271 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in extend_extension()
4273 "extensions", return isl_schedule_node_free(node)); in extend_extension()
4275 return node; in extend_extension()
4328 __isl_take isl_schedule_node *node, __isl_take isl_union_map *extension) in insert_extension() argument
4337 in_ext = has_ancestors(node, 3, ancestors); in insert_extension()
4343 disjoint = is_disjoint_extension(node, extension); in insert_extension()
4347 return extend_extension(node, extension); in insert_extension()
4350 filter = isl_schedule_node_get_domain(node); in insert_extension()
4355 node = isl_schedule_node_insert_filter(node, filter); in insert_extension()
4356 node = isl_schedule_node_insert_extension(node, extension); in insert_extension()
4357 node = isl_schedule_node_child(node, 0); in insert_extension()
4358 return node; in insert_extension()
4360 isl_schedule_node_free(node); in insert_extension()
4373 __isl_take isl_schedule_node *node, __isl_take isl_schedule_tree *tree, in graft_or_splice() argument
4378 if (isl_schedule_node_get_parent_type(node) == in graft_or_splice()
4380 pos = isl_schedule_node_get_child_position(node); in graft_or_splice()
4382 node = isl_schedule_node_free(node); in graft_or_splice()
4383 node = isl_schedule_node_parent(node); in graft_or_splice()
4384 node = isl_schedule_node_sequence_splice(node, pos, tree); in graft_or_splice()
4387 node = isl_schedule_node_graft_tree(node, tree); in graft_or_splice()
4389 node = isl_schedule_node_grandchild(node, pos + tree_pos, 0); in graft_or_splice()
4391 return node; in graft_or_splice()
4411 __isl_take isl_schedule_node *node, __isl_take isl_schedule_node *graft, in graft_extension() argument
4421 node_domain = isl_schedule_node_get_universe_domain(node); in graft_extension()
4422 node = insert_extension(node, extension); in graft_extension()
4428 tree = isl_schedule_node_get_tree(node); in graft_extension()
4441 node = graft_or_splice(node, tree, before); in graft_extension()
4445 return node; in graft_extension()
4455 __isl_take isl_schedule_node *node, __isl_keep isl_schedule_node *pos) in extension_from_domain() argument
4467 anchored = isl_schedule_node_is_subtree_anchored(node); in extension_from_domain()
4469 return isl_schedule_node_free(node); in extension_from_domain()
4471 isl_die(isl_schedule_node_get_ctx(node), isl_error_unsupported, in extension_from_domain()
4473 return isl_schedule_node_free(node)); in extension_from_domain()
4475 domain = isl_schedule_node_domain_get_domain(node); in extension_from_domain()
4482 node = isl_schedule_node_child(node, 0); in extension_from_domain()
4483 if (!node) in extension_from_domain()
4485 if (!isl_schedule_tree_is_leaf(node->tree)) { in extension_from_domain()
4486 tree = isl_schedule_node_get_tree(node); in extension_from_domain()
4491 isl_schedule_node_free(node); in extension_from_domain()
4523 __isl_take isl_schedule_node *node, __isl_take isl_schedule_node *graft, in isl_schedule_node_graft_before_or_after() argument
4526 if (!node || !graft) in isl_schedule_node_graft_before_or_after()
4528 if (check_insert(node) < 0) in isl_schedule_node_graft_before_or_after()
4532 graft = extension_from_domain(graft, node); in isl_schedule_node_graft_before_or_after()
4537 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_graft_before_or_after()
4541 return graft_extension(node, graft, before); in isl_schedule_node_graft_before_or_after()
4543 isl_schedule_node_free(node); in isl_schedule_node_graft_before_or_after()
4561 __isl_take isl_schedule_node *node, __isl_take isl_schedule_node *graft) in isl_schedule_node_graft_before() argument
4563 return isl_schedule_node_graft_before_or_after(node, graft, 1); in isl_schedule_node_graft_before()
4579 __isl_take isl_schedule_node *node, in isl_schedule_node_graft_after() argument
4582 return isl_schedule_node_graft_before_or_after(node, graft, 0); in isl_schedule_node_graft_after()
4600 __isl_take isl_schedule_node *node, __isl_take isl_union_set *filter, in isl_schedule_node_order_before_or_after() argument
4611 if (!node || !filter) in isl_schedule_node_order_before_or_after()
4613 if (check_insert(node) < 0) in isl_schedule_node_order_before_or_after()
4616 in_seq = has_ancestors(node, 2, ancestors); in isl_schedule_node_order_before_or_after()
4619 node_domain = isl_schedule_node_get_domain(node); in isl_schedule_node_order_before_or_after()
4632 return node; in isl_schedule_node_order_before_or_after()
4636 node = isl_schedule_node_parent(node); in isl_schedule_node_order_before_or_after()
4637 parent_filter = isl_schedule_node_filter_get_filter(node); in isl_schedule_node_order_before_or_after()
4643 node2 = isl_schedule_node_copy(node); in isl_schedule_node_order_before_or_after()
4644 node = isl_schedule_node_gist(node, isl_union_set_copy(node_filter)); in isl_schedule_node_order_before_or_after()
4646 tree1 = isl_schedule_node_get_tree(node); in isl_schedule_node_order_before_or_after()
4654 node = graft_or_splice(node, tree1, 1); in isl_schedule_node_order_before_or_after()
4657 node = graft_or_splice(node, tree1, 0); in isl_schedule_node_order_before_or_after()
4660 return node; in isl_schedule_node_order_before_or_after()
4662 isl_schedule_node_free(node); in isl_schedule_node_order_before_or_after()
4676 __isl_take isl_schedule_node *node, __isl_take isl_union_set *filter) in isl_schedule_node_order_before() argument
4678 return isl_schedule_node_order_before_or_after(node, filter, 1); in isl_schedule_node_order_before()
4689 __isl_take isl_schedule_node *node, __isl_take isl_union_set *filter) in isl_schedule_node_order_after() argument
4691 return isl_schedule_node_order_before_or_after(node, filter, 0); in isl_schedule_node_order_after()
4698 __isl_take isl_schedule_node *node) in isl_schedule_node_reset_user() argument
4702 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_reset_user()
4704 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_reset_user()
4706 return node; in isl_schedule_node_reset_user()
4712 __isl_take isl_schedule_node *node, __isl_take isl_space *space) in isl_schedule_node_align_params() argument
4716 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_align_params()
4718 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_align_params()
4720 return node; in isl_schedule_node_align_params()
4735 __isl_take isl_schedule_node *node, in isl_schedule_node_pullback_union_pw_multi_aff() argument
4740 tree = isl_schedule_node_get_tree(node); in isl_schedule_node_pullback_union_pw_multi_aff()
4742 node = isl_schedule_node_graft_tree(node, tree); in isl_schedule_node_pullback_union_pw_multi_aff()
4744 return node; in isl_schedule_node_pullback_union_pw_multi_aff()
4766 static __isl_give isl_schedule_node *expand(__isl_take isl_schedule_node *node, in expand() argument
4774 if (isl_schedule_node_get_type(node) != isl_schedule_node_leaf) in expand()
4775 return node; in expand()
4777 domain = isl_schedule_node_get_domain(node); in expand()
4784 leaf = isl_schedule_node_get_leaf(node); in expand()
4791 node = isl_schedule_node_free(node); in expand()
4795 node = isl_schedule_node_graft_tree(node, tree); in expand()
4796 node = isl_schedule_node_gist(node, domain); in expand()
4798 return node; in expand()
4812 __isl_take isl_schedule_node *node, in isl_schedule_node_expand() argument
4821 if (!node || !contraction || !tree) in isl_schedule_node_expand()
4822 node = isl_schedule_node_free(node); in isl_schedule_node_expand()
4833 node = isl_schedule_node_map_descendant_bottom_up(node, &expand, &data); in isl_schedule_node_expand()
4836 return node; in isl_schedule_node_expand()
4846 __isl_keep isl_schedule_node *node, in isl_schedule_node_get_ancestor_child_position() argument
4853 n2 = isl_schedule_node_get_tree_depth(node); in isl_schedule_node_get_ancestor_child_position()
4857 if (node->schedule != ancestor->schedule) in isl_schedule_node_get_ancestor_child_position()
4858 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_get_ancestor_child_position()
4862 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_get_ancestor_child_position()
4864 tree = isl_schedule_tree_list_get_schedule_tree(node->ancestors, n1); in isl_schedule_node_get_ancestor_child_position()
4867 isl_die(isl_schedule_node_get_ctx(node), isl_error_invalid, in isl_schedule_node_get_ancestor_child_position()
4870 return node->child_pos[n1]; in isl_schedule_node_get_ancestor_child_position()
4916 __isl_take isl_printer *p, __isl_keep isl_schedule_node *node) in isl_printer_print_schedule_node() argument
4920 if (!node) in isl_printer_print_schedule_node()
4922 n = isl_schedule_tree_list_n_schedule_tree(node->ancestors); in isl_printer_print_schedule_node()
4925 return isl_printer_print_schedule_tree_mark(p, node->schedule->root, n, in isl_printer_print_schedule_node()
4926 node->child_pos); in isl_printer_print_schedule_node()
4929 void isl_schedule_node_dump(__isl_keep isl_schedule_node *node) in isl_schedule_node_dump() argument
4934 if (!node) in isl_schedule_node_dump()
4937 ctx = isl_schedule_node_get_ctx(node); in isl_schedule_node_dump()
4940 printer = isl_printer_print_schedule_node(printer, node); in isl_schedule_node_dump()
4949 __isl_give char *isl_schedule_node_to_str(__isl_keep isl_schedule_node *node) in isl_schedule_node_to_str() argument
4954 if (!node) in isl_schedule_node_to_str()
4957 printer = isl_printer_to_str(isl_schedule_node_get_ctx(node)); in isl_schedule_node_to_str()
4959 printer = isl_printer_print_schedule_node(printer, node); in isl_schedule_node_to_str()