summaryrefslogtreecommitdiffstats
path: root/polly/lib/External/isl/isl_schedule_tree.h
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/External/isl/isl_schedule_tree.h')
-rw-r--r--polly/lib/External/isl/isl_schedule_tree.h31
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(
OpenPOWER on IntegriCloud