isl_stream: support compound tokens
[platform/upstream/isl.git] / isl_aff_private.h
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
9 struct isl_aff {
10         int ref;
11
12         isl_local_space *ls;
13         isl_vec         *v;
14 };
15
16 struct isl_pw_aff_piece {
17         struct isl_set *set;
18         struct isl_aff *aff;
19 };
20
21 struct isl_pw_aff {
22         int ref;
23
24         isl_dim *dim;
25
26         int n;
27
28         size_t size;
29         struct isl_pw_aff_piece p[1];
30 };
31
32 __isl_give isl_aff *isl_aff_alloc(__isl_take isl_local_space *ls);
33
34 __isl_give isl_aff *isl_aff_reset_dim(__isl_take isl_aff *aff,
35         __isl_take isl_dim *dim);
36 __isl_give isl_aff *isl_aff_realign(__isl_take isl_aff *aff,
37         __isl_take isl_reordering *r);
38
39 __isl_give isl_aff *isl_aff_expand_divs( __isl_take isl_aff *aff,
40         __isl_take isl_mat *div, int *exp);
41
42 __isl_give isl_pw_aff *isl_pw_aff_reset_dim(__isl_take isl_pw_aff *pwaff,
43         __isl_take isl_dim *dim);
44 __isl_give isl_pw_aff *isl_pw_aff_add_disjoint(
45         __isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2);
46
47 #endif