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 isl_size isl_local_space_var_offset(__isl_keep isl_local_space *ls, 38 enum isl_dim_type type); 39 unsigned isl_local_space_offset(__isl_keep isl_local_space *ls, 40 enum isl_dim_type type); 41 42 __isl_give isl_local_space *isl_local_space_replace_divs( 43 __isl_take isl_local_space *ls, __isl_take isl_mat *div); 44 isl_bool isl_local_space_div_is_marked_unknown(__isl_keep isl_local_space *ls, 45 int div); 46 isl_bool isl_local_space_div_is_known(__isl_keep isl_local_space *ls, int div); 47 isl_bool isl_local_space_divs_known(__isl_keep isl_local_space *ls); 48 49 __isl_give isl_basic_set *isl_local_space_lift_basic_set( 50 __isl_take isl_local_space *ls, __isl_take isl_basic_set *bset); 51 __isl_give isl_set *isl_local_space_lift_set(__isl_take isl_local_space *ls, 52 __isl_take isl_set *set); 53 __isl_give isl_local_space *isl_local_space_substitute_equalities( 54 __isl_take isl_local_space *ls, __isl_take isl_basic_set *eq); 55 56 isl_bool isl_local_space_is_named_or_nested(__isl_keep isl_local_space *ls, 57 enum isl_dim_type type); 58 59 isl_bool isl_local_space_has_equal_space(__isl_keep isl_local_space *ls1, 60 __isl_keep isl_local_space *ls2); 61 62 __isl_give isl_local_space *isl_local_space_reset_space( 63 __isl_take isl_local_space *ls, __isl_take isl_space *space); 64 __isl_give isl_local_space *isl_local_space_realign( 65 __isl_take isl_local_space *ls, __isl_take isl_reordering *r); 66 67 isl_bool isl_local_space_is_div_constraint(__isl_keep isl_local_space *ls, 68 isl_int *constraint, unsigned div); 69 isl_bool isl_local_space_is_div_equality(__isl_keep isl_local_space *ls, 70 isl_int *constraint, unsigned div); 71 72 int *isl_local_space_get_active(__isl_keep isl_local_space *ls, isl_int *l); 73 74 __isl_give isl_local_space *isl_local_space_substitute_seq( 75 __isl_take isl_local_space *ls, 76 enum isl_dim_type type, unsigned pos, isl_int *subs, int subs_len, 77 int first, int n); 78 __isl_give isl_local_space *isl_local_space_substitute( 79 __isl_take isl_local_space *ls, 80 enum isl_dim_type type, unsigned pos, __isl_keep isl_aff *subs); 81 82 __isl_give isl_local_space *isl_local_space_lift( 83 __isl_take isl_local_space *ls); 84 85 __isl_give isl_local_space *isl_local_space_preimage_multi_aff( 86 __isl_take isl_local_space *ls, __isl_take isl_multi_aff *ma); 87 88 __isl_give isl_local_space *isl_local_space_move_dims( 89 __isl_take isl_local_space *ls, 90 enum isl_dim_type dst_type, unsigned dst_pos, 91 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 92 93 int isl_local_space_cmp(__isl_keep isl_local_space *ls1, 94 __isl_keep isl_local_space *ls2); 95 96 __isl_give isl_point *isl_local_space_lift_point(__isl_take isl_local_space *ls, 97 __isl_take isl_point *pnt); 98 99 isl_bool isl_local_space_has_space(__isl_keep isl_local_space *ls, 100 __isl_keep isl_space *space); 101 102 #endif 103