1 #ifndef ISL_LOCAL_SPACE_PRIVATE_H 2 #define ISL_LOCAL_SPACE_PRIVATE_H 3 4 #include <isl/mat.h> 5 #include <isl/set.h> 6 #include <isl/local_space.h> 7 8 struct isl_local_space { 9 int ref; 10 11 isl_space *dim; 12 isl_mat *div; 13 }; 14 15 isl_stat isl_local_space_check_range(__isl_keep isl_local_space *ls, 16 enum isl_dim_type type, unsigned first, unsigned n); 17 18 uint32_t isl_local_space_get_hash(__isl_keep isl_local_space *ls); 19 20 __isl_give isl_local_space *isl_local_space_alloc(__isl_take isl_space *space, 21 unsigned n_div); 22 __isl_give isl_local_space *isl_local_space_alloc_div( 23 __isl_take isl_space *space, __isl_take isl_mat *div); 24 25 __isl_keep isl_space *isl_local_space_peek_space( 26 __isl_keep isl_local_space *ls); 27 28 __isl_give isl_local_space *isl_local_space_swap_div( 29 __isl_take isl_local_space *ls, int a, int b); 30 __isl_give isl_local_space *isl_local_space_add_div( 31 __isl_take isl_local_space *ls, __isl_take isl_vec *div); 32 33 int isl_mat_cmp_div(__isl_keep isl_mat *div, int i, int j); 34 __isl_give isl_mat *isl_merge_divs(__isl_keep isl_mat *div1, 35 __isl_keep isl_mat *div2, int *exp1, int *exp2); 36 37 unsigned isl_local_space_offset(__isl_keep isl_local_space *ls, 38 enum isl_dim_type type); 39 40 __isl_give isl_local_space *isl_local_space_replace_divs( 41 __isl_take isl_local_space *ls, __isl_take isl_mat *div); 42 isl_bool isl_local_space_div_is_marked_unknown(__isl_keep isl_local_space *ls, 43 int div); 44 isl_bool isl_local_space_div_is_known(__isl_keep isl_local_space *ls, int div); 45 isl_bool isl_local_space_divs_known(__isl_keep isl_local_space *ls); 46 47 __isl_give isl_basic_set *isl_local_space_lift_basic_set( 48 __isl_take isl_local_space *ls, __isl_take isl_basic_set *bset); 49 __isl_give isl_set *isl_local_space_lift_set(__isl_take isl_local_space *ls, 50 __isl_take isl_set *set); 51 __isl_give isl_local_space *isl_local_space_substitute_equalities( 52 __isl_take isl_local_space *ls, __isl_take isl_basic_set *eq); 53 54 isl_bool isl_local_space_is_named_or_nested(__isl_keep isl_local_space *ls, 55 enum isl_dim_type type); 56 57 isl_bool isl_local_space_has_equal_space(__isl_keep isl_local_space *ls1, 58 __isl_keep isl_local_space *ls2); 59 60 __isl_give isl_local_space *isl_local_space_reset_space( 61 __isl_take isl_local_space *ls, __isl_take isl_space *space); 62 __isl_give isl_local_space *isl_local_space_realign( 63 __isl_take isl_local_space *ls, __isl_take isl_reordering *r); 64 65 isl_bool isl_local_space_is_div_constraint(__isl_keep isl_local_space *ls, 66 isl_int *constraint, unsigned div); 67 isl_bool isl_local_space_is_div_equality(__isl_keep isl_local_space *ls, 68 isl_int *constraint, unsigned div); 69 70 int *isl_local_space_get_active(__isl_keep isl_local_space *ls, isl_int *l); 71 72 __isl_give isl_local_space *isl_local_space_substitute_seq( 73 __isl_take isl_local_space *ls, 74 enum isl_dim_type type, unsigned pos, isl_int *subs, int subs_len, 75 int first, int n); 76 __isl_give isl_local_space *isl_local_space_substitute( 77 __isl_take isl_local_space *ls, 78 enum isl_dim_type type, unsigned pos, __isl_keep isl_aff *subs); 79 80 __isl_give isl_local_space *isl_local_space_lift( 81 __isl_take isl_local_space *ls); 82 83 __isl_give isl_local_space *isl_local_space_preimage_multi_aff( 84 __isl_take isl_local_space *ls, __isl_take isl_multi_aff *ma); 85 86 __isl_give isl_local_space *isl_local_space_move_dims( 87 __isl_take isl_local_space *ls, 88 enum isl_dim_type dst_type, unsigned dst_pos, 89 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 90 91 int isl_local_space_cmp(__isl_keep isl_local_space *ls1, 92 __isl_keep isl_local_space *ls2); 93 94 __isl_give isl_point *isl_local_space_lift_point(__isl_take isl_local_space *ls, 95 __isl_take isl_point *pnt); 96 97 isl_bool isl_local_space_has_space(__isl_keep isl_local_space *ls, 98 __isl_keep isl_space *space); 99 100 #endif 101