summaryrefslogtreecommitdiffstats
path: root/polly/lib/External/isl/isl_schedule_band.h
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/External/isl/isl_schedule_band.h')
-rw-r--r--polly/lib/External/isl/isl_schedule_band.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/polly/lib/External/isl/isl_schedule_band.h b/polly/lib/External/isl/isl_schedule_band.h
index 5cf30d41971..8ac5e7da982 100644
--- a/polly/lib/External/isl/isl_schedule_band.h
+++ b/polly/lib/External/isl/isl_schedule_band.h
@@ -2,6 +2,7 @@
#define ISL_SCHEDULE_BAND_H
#include <isl/aff.h>
+#include <isl/ast_type.h>
#include <isl/union_map.h>
/* Information about a band within a schedule.
@@ -13,6 +14,17 @@
* permutable is set if the band is permutable.
* mupa is the partial schedule corresponding to this band. The dimension
* of mupa is equal to n.
+ * loop_type contains the loop AST generation types for the members
+ * in the band. It may be NULL, if all members are
+ * of type isl_ast_loop_default.
+ * isolate_loop_type contains the loop AST generation types for the members
+ * in the band for the isolated part. It may be NULL, if all members are
+ * of type isl_ast_loop_default.
+ * ast_build_options are the remaining AST build options associated
+ * to the band.
+ * anchored is set if the node depends on its position in the schedule tree.
+ * In particular, it is set if the AST build options include
+ * an isolate option.
*/
struct isl_schedule_band {
int ref;
@@ -22,6 +34,11 @@ struct isl_schedule_band {
int permutable;
isl_multi_union_pw_aff *mupa;
+
+ int anchored;
+ isl_union_set *ast_build_options;
+ enum isl_ast_loop_type *loop_type;
+ enum isl_ast_loop_type *isolate_loop_type;
};
typedef struct isl_schedule_band isl_schedule_band;
@@ -37,10 +54,27 @@ isl_ctx *isl_schedule_band_get_ctx(__isl_keep isl_schedule_band *band);
int isl_schedule_band_plain_is_equal(__isl_keep isl_schedule_band *band1,
__isl_keep isl_schedule_band *band2);
+int isl_schedule_band_is_anchored(__isl_keep isl_schedule_band *band);
+
__isl_give isl_space *isl_schedule_band_get_space(
__isl_keep isl_schedule_band *band);
__isl_give isl_multi_union_pw_aff *isl_schedule_band_get_partial_schedule(
__isl_keep isl_schedule_band *band);
+enum isl_ast_loop_type isl_schedule_band_member_get_ast_loop_type(
+ __isl_keep isl_schedule_band *band, int pos);
+__isl_give isl_schedule_band *isl_schedule_band_member_set_ast_loop_type(
+ __isl_take isl_schedule_band *band, int pos,
+ enum isl_ast_loop_type type);
+enum isl_ast_loop_type isl_schedule_band_member_get_isolate_ast_loop_type(
+ __isl_keep isl_schedule_band *band, int pos);
+__isl_give isl_schedule_band *
+isl_schedule_band_member_set_isolate_ast_loop_type(
+ __isl_take isl_schedule_band *band, int pos,
+ enum isl_ast_loop_type type);
+__isl_give isl_union_set *isl_schedule_band_get_ast_build_options(
+ __isl_keep isl_schedule_band *band);
+__isl_give isl_schedule_band *isl_schedule_band_set_ast_build_options(
+ __isl_take isl_schedule_band *band, __isl_take isl_union_set *options);
int isl_schedule_band_n_member(__isl_keep isl_schedule_band *band);
int isl_schedule_band_member_get_coincident(
OpenPOWER on IntegriCloud