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 8struct isl_local_space { 9 int ref; 10 11 isl_space *dim; 12 isl_mat *div; 13}; 14 15isl_stat isl_local_space_check_range(__isl_keep isl_local_space *ls, 16 enum isl_dim_type type, unsigned first, unsigned n); 17 18uint32_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 33int 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 37isl_size isl_local_space_var_offset(__isl_keep isl_local_space *ls, 38 enum isl_dim_type type); 39unsigned isl_local_space_offset(__isl_keep isl_local_space *ls, 40 enum isl_dim_type type); 41isl_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); 46isl_bool isl_local_space_div_is_marked_unknown(__isl_keep isl_local_space *ls, 47 int div); 48isl_bool isl_local_space_div_is_known(__isl_keep isl_local_space *ls, int div); 49isl_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 58isl_bool isl_local_space_is_named_or_nested(__isl_keep isl_local_space *ls, 59 enum isl_dim_type type); 60 61isl_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 69isl_bool isl_local_space_is_div_constraint(__isl_keep isl_local_space *ls, 70 isl_int *constraint, unsigned div); 71isl_bool isl_local_space_is_div_equality(__isl_keep isl_local_space *ls, 72 isl_int *constraint, unsigned div); 73 74int *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 97int 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 103isl_bool isl_local_space_has_space(__isl_keep isl_local_space *ls, 104 __isl_keep isl_space *space); 105 106#endif 107