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