1#ifndef ISL_AFF_PRIVATE_H 2#define ISL_AFF_PRIVATE_H 3 4#include <isl/aff.h> 5#include <isl/vec.h> 6#include <isl/mat.h> 7#include <isl/local_space.h> 8#include <isl_reordering.h> 9 10/* ls represents the domain space. 11 */ 12struct isl_aff { 13 int ref; 14 15 isl_local_space *ls; 16 isl_vec *v; 17}; 18 19#undef EL 20#define EL isl_aff 21 22#include <isl_list_templ.h> 23 24struct isl_pw_aff_piece { 25 struct isl_set *set; 26 struct isl_aff *aff; 27}; 28 29struct isl_pw_aff { 30 int ref; 31 32 isl_space *dim; 33 34 int n; 35 36 size_t size; 37 struct isl_pw_aff_piece p[1]; 38}; 39 40#undef EL 41#define EL isl_pw_aff 42 43#include <isl_list_templ.h> 44 45struct isl_pw_multi_aff_piece { 46 isl_set *set; 47 isl_multi_aff *maff; 48}; 49 50struct isl_pw_multi_aff { 51 int ref; 52 53 isl_space *dim; 54 55 int n; 56 57 size_t size; 58 struct isl_pw_multi_aff_piece p[1]; 59}; 60 61__isl_give isl_aff *isl_aff_alloc(__isl_take isl_local_space *ls); 62 63__isl_give isl_aff *isl_aff_reset_space_and_domain(__isl_take isl_aff *aff, 64 __isl_take isl_space *space, __isl_take isl_space *domain); 65__isl_give isl_aff *isl_aff_reset_domain_space(__isl_take isl_aff *aff, 66 __isl_take isl_space *dim); 67__isl_give isl_aff *isl_aff_realign_domain(__isl_take isl_aff *aff, 68 __isl_take isl_reordering *r); 69 70__isl_give isl_aff *isl_aff_normalize(__isl_take isl_aff *aff); 71 72__isl_give isl_aff *isl_aff_expand_divs( __isl_take isl_aff *aff, 73 __isl_take isl_mat *div, int *exp); 74 75__isl_give isl_pw_aff *isl_pw_aff_alloc_size(__isl_take isl_space *space, 76 int n); 77__isl_give isl_pw_aff *isl_pw_aff_reset_space(__isl_take isl_pw_aff *pwaff, 78 __isl_take isl_space *dim); 79__isl_give isl_pw_aff *isl_pw_aff_reset_domain_space( 80 __isl_take isl_pw_aff *pwaff, __isl_take isl_space *space); 81__isl_give isl_pw_aff *isl_pw_aff_add_disjoint( 82 __isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); 83 84__isl_give isl_pw_aff *isl_pw_aff_union_opt(__isl_take isl_pw_aff *pwaff1, 85 __isl_take isl_pw_aff *pwaff2, int max); 86 87__isl_give isl_pw_aff *isl_pw_aff_set_rational(__isl_take isl_pw_aff *pwaff); 88__isl_give isl_pw_aff_list *isl_pw_aff_list_set_rational( 89 __isl_take isl_pw_aff_list *list); 90 91int isl_aff_check_match_domain_space(__isl_keep isl_aff *aff, 92 __isl_keep isl_space *space); 93 94#undef BASE 95#define BASE aff 96 97#include <isl_multi_templ.h> 98 99__isl_give isl_multi_aff *isl_multi_aff_dup(__isl_keep isl_multi_aff *multi); 100 101__isl_give isl_multi_aff *isl_multi_aff_align_divs( 102 __isl_take isl_multi_aff *maff); 103 104__isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_domain_space( 105 __isl_take isl_pw_multi_aff *pwmaff, __isl_take isl_space *space); 106__isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_space( 107 __isl_take isl_pw_multi_aff *pwmaff, __isl_take isl_space *space); 108__isl_give isl_pw_multi_aff *isl_pw_multi_aff_add_disjoint( 109 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 110 111__isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_out( 112 __isl_take isl_pw_multi_aff *pma, 113 enum isl_dim_type type, unsigned first, unsigned n); 114 115void isl_seq_substitute(isl_int *p, int pos, isl_int *subs, 116 int p_len, int subs_len, isl_int v); 117void isl_seq_preimage(isl_int *dst, isl_int *src, 118 __isl_keep isl_multi_aff *ma, int n_before, int n_after, 119 int n_div_ma, int n_div_bmap, 120 isl_int f, isl_int c1, isl_int c2, isl_int g, int has_denom); 121 122__isl_give isl_pw_multi_aff *isl_pw_multi_aff_substitute( 123 __isl_take isl_pw_multi_aff *pma, enum isl_dim_type type, unsigned pos, 124 __isl_keep isl_pw_aff *subs); 125 126int isl_pw_aff_check_match_domain_space(__isl_keep isl_pw_aff *pa, 127 __isl_keep isl_space *space); 128 129#undef BASE 130#define BASE pw_aff 131 132#include <isl_multi_templ.h> 133 134#endif 135