| 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 |
