1 | #ifndef ISL_REORDERING_H |
---|---|
2 | #define ISL_REORDERING_H |
3 | |
4 | #include <isl/space.h> |
5 | |
6 | /* "pos" has "src_len" entries and maps original dimensions to new dimensions. |
7 | * The final space is given by "space". |
8 | * The number of dimensions (i.e., the range of values) in the result |
9 | * may be larger than the number of dimensions in the input. |
10 | * In particular, the possible values of the entries in "pos" ranges from 0 to |
11 | * to "dst_len" - 1, where "dst_len" is equal to the total dimension of "space", |
12 | * unless isl_reordering_extend has been called. |
13 | */ |
14 | struct isl_reordering { |
15 | int ref; |
16 | isl_space *space; |
17 | unsigned src_len; |
18 | unsigned dst_len; |
19 | int pos[1]; |
20 | }; |
21 | typedef struct isl_reordering isl_reordering; |
22 | |
23 | isl_ctx *isl_reordering_get_ctx(__isl_keep isl_reordering *r); |
24 | __isl_keep isl_space *isl_reordering_peek_space(__isl_keep isl_reordering *r); |
25 | __isl_give isl_space *isl_reordering_get_space(__isl_keep isl_reordering *r); |
26 | __isl_give isl_reordering *isl_parameter_alignment_reordering( |
27 | __isl_keep isl_space *alignee, __isl_keep isl_space *aligner); |
28 | __isl_give isl_reordering *isl_reordering_unbind_params_insert_domain( |
29 | __isl_keep isl_space *space, __isl_keep isl_multi_id *tuple); |
30 | __isl_give isl_reordering *isl_reordering_copy(__isl_keep isl_reordering *exp); |
31 | __isl_null isl_reordering *isl_reordering_free(__isl_take isl_reordering *exp); |
32 | __isl_give isl_reordering *isl_reordering_extend_space( |
33 | __isl_take isl_reordering *exp, __isl_take isl_space *space); |
34 | __isl_give isl_reordering *isl_reordering_extend(__isl_take isl_reordering *exp, |
35 | unsigned extra); |
36 | |
37 | #endif |
38 |