1*5971e316Smrg #ifndef ISL_SCHEDLUE_PRIVATE_H 2*5971e316Smrg #define ISL_SCHEDLUE_PRIVATE_H 3*5971e316Smrg 4*5971e316Smrg #include <isl/aff.h> 5*5971e316Smrg #include <isl/schedule.h> 6*5971e316Smrg #include <isl_schedule_tree.h> 7*5971e316Smrg 8*5971e316Smrg /* A complete schedule tree. 9*5971e316Smrg * 10*5971e316Smrg * "root" is the root of the schedule tree. 11*5971e316Smrg * 12*5971e316Smrg * "leaf" may be used to represent a leaf of the schedule. 13*5971e316Smrg * It should not appear as a child to any other isl_schedule_tree objects, 14*5971e316Smrg * but an isl_schedule_node may have "leaf" as its tree if it refers to 15*5971e316Smrg * a leaf of this schedule tree. 16*5971e316Smrg */ 17*5971e316Smrg struct isl_schedule { 18*5971e316Smrg int ref; 19*5971e316Smrg 20*5971e316Smrg isl_schedule_tree *root; 21*5971e316Smrg 22*5971e316Smrg struct isl_schedule_tree *leaf; 23*5971e316Smrg }; 24*5971e316Smrg 25*5971e316Smrg __isl_give isl_schedule *isl_schedule_from_schedule_tree(isl_ctx *ctx, 26*5971e316Smrg __isl_take isl_schedule_tree *tree); 27*5971e316Smrg __isl_give isl_schedule *isl_schedule_set_root( 28*5971e316Smrg __isl_take isl_schedule *schedule, __isl_take isl_schedule_tree *tree); 29*5971e316Smrg __isl_give isl_space *isl_schedule_get_space( 30*5971e316Smrg __isl_keep isl_schedule *schedule); 31*5971e316Smrg __isl_give isl_union_set *isl_schedule_get_domain( 32*5971e316Smrg __isl_keep isl_schedule *schedule); 33*5971e316Smrg __isl_keep isl_schedule_tree *isl_schedule_peek_leaf( 34*5971e316Smrg __isl_keep isl_schedule *schedule); 35*5971e316Smrg 36*5971e316Smrg #endif 37