diff options
Diffstat (limited to 'polly/lib/External/isl/isl_schedule_tree.h')
-rw-r--r-- | polly/lib/External/isl/isl_schedule_tree.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/polly/lib/External/isl/isl_schedule_tree.h b/polly/lib/External/isl/isl_schedule_tree.h index a5c5486c511..fff89fad672 100644 --- a/polly/lib/External/isl/isl_schedule_tree.h +++ b/polly/lib/External/isl/isl_schedule_tree.h @@ -21,6 +21,9 @@ ISL_DECLARE_LIST(schedule_tree) * In this case, ref has a negative value. * * The "band" field is valid when type is isl_schedule_node_band. + * The "context" field is valid when type is isl_schedule_node_context + * and represents constraints on the flat product of the outer band nodes, + * possibly introducing additional parameters. * The "domain" field is valid when type is isl_schedule_node_domain * and introduces the statement instances scheduled by the tree. * The "filter" field is valid when type is isl_schedule_node_filter @@ -29,13 +32,18 @@ ISL_DECLARE_LIST(schedule_tree) * The "children" field is valid for all types except * isl_schedule_node_leaf. This field is NULL if there are * no children (except for the implicit leaves). + * + * anchored is set if the node or any of its descendants depends + * on its position in the schedule tree. */ struct isl_schedule_tree { int ref; isl_ctx *ctx; + int anchored; enum isl_schedule_node_type type; union { isl_schedule_band *band; + isl_set *context; isl_union_set *domain; isl_union_set *filter; }; @@ -59,6 +67,8 @@ __isl_null isl_schedule_tree *isl_schedule_tree_free( __isl_give isl_schedule_tree *isl_schedule_tree_from_band( __isl_take isl_schedule_band *band); +__isl_give isl_schedule_tree *isl_schedule_tree_from_context( + __isl_take isl_set *context); __isl_give isl_schedule_tree *isl_schedule_tree_from_domain( __isl_take isl_union_set *domain); __isl_give isl_schedule_tree *isl_schedule_tree_from_filter( @@ -70,10 +80,29 @@ __isl_give isl_schedule_tree *isl_schedule_tree_from_pair( enum isl_schedule_node_type type, __isl_take isl_schedule_tree *tree1, __isl_take isl_schedule_tree *tree2); +int isl_schedule_tree_is_subtree_anchored(__isl_keep isl_schedule_tree *tree); + __isl_give isl_space *isl_schedule_tree_band_get_space( __isl_keep isl_schedule_tree *tree); __isl_give isl_multi_union_pw_aff *isl_schedule_tree_band_get_partial_schedule( __isl_keep isl_schedule_tree *tree); +enum isl_ast_loop_type isl_schedule_tree_band_member_get_ast_loop_type( + __isl_keep isl_schedule_tree *tree, int pos); +__isl_give isl_schedule_tree *isl_schedule_tree_band_member_set_ast_loop_type( + __isl_take isl_schedule_tree *tree, int pos, + enum isl_ast_loop_type type); +enum isl_ast_loop_type isl_schedule_tree_band_member_get_isolate_ast_loop_type( + __isl_keep isl_schedule_tree *tree, int pos); +__isl_give isl_schedule_tree * +isl_schedule_tree_band_member_set_isolate_ast_loop_type( + __isl_take isl_schedule_tree *tree, int pos, + enum isl_ast_loop_type type); +__isl_give isl_union_set *isl_schedule_tree_band_get_ast_build_options( + __isl_keep isl_schedule_tree *tree); +__isl_give isl_schedule_tree *isl_schedule_tree_band_set_ast_build_options( + __isl_take isl_schedule_tree *tree, __isl_take isl_union_set *options); +__isl_give isl_set *isl_schedule_tree_context_get_context( + __isl_keep isl_schedule_tree *tree); __isl_give isl_union_set *isl_schedule_tree_domain_get_domain( __isl_keep isl_schedule_tree *tree); __isl_give isl_schedule_tree *isl_schedule_tree_domain_set_domain( @@ -105,6 +134,8 @@ __isl_give isl_schedule_tree *isl_schedule_tree_get_child( __isl_give isl_schedule_tree *isl_schedule_tree_insert_band( __isl_take isl_schedule_tree *tree, __isl_take isl_schedule_band *band); +__isl_give isl_schedule_tree *isl_schedule_tree_insert_context( + __isl_take isl_schedule_tree *tree, __isl_take isl_set *context); __isl_give isl_schedule_tree *isl_schedule_tree_insert_domain( __isl_take isl_schedule_tree *tree, __isl_take isl_union_set *domain); __isl_give isl_schedule_tree *isl_schedule_tree_insert_filter( |