1#ifndef ISL_UNION_MAP_H
2#define ISL_UNION_MAP_H
3
4#include <isl/stdint.h>
5#include <isl/space_type.h>
6#include <isl/aff_type.h>
7#include <isl/map_type.h>
8#include <isl/union_map_type.h>
9#include <isl/printer.h>
10#include <isl/val_type.h>
11
12#if defined(__cplusplus)
13extern "C" {
14#endif
15
16isl_size isl_union_map_dim(__isl_keep isl_union_map *umap,
17 enum isl_dim_type type);
18isl_bool isl_union_map_involves_dims(__isl_keep isl_union_map *umap,
19 enum isl_dim_type type, unsigned first, unsigned n);
20__isl_give isl_id *isl_union_map_get_dim_id(__isl_keep isl_union_map *umap,
21 enum isl_dim_type type, unsigned pos);
22
23__isl_constructor
24__isl_give isl_union_map *isl_union_map_from_basic_map(
25 __isl_take isl_basic_map *bmap);
26__isl_export
27__isl_give isl_union_map *isl_map_to_union_map(__isl_take isl_map *map);
28__isl_constructor
29__isl_give isl_union_map *isl_union_map_from_map(__isl_take isl_map *map);
30__isl_overload
31__isl_give isl_union_map *isl_union_map_empty_ctx(isl_ctx *ctx);
32__isl_give isl_union_map *isl_union_map_empty_space(
33 __isl_take isl_space *space);
34__isl_give isl_union_map *isl_union_map_empty(__isl_take isl_space *space);
35__isl_give isl_union_map *isl_union_map_copy(__isl_keep isl_union_map *umap);
36__isl_null isl_union_map *isl_union_map_free(__isl_take isl_union_map *umap);
37
38isl_ctx *isl_union_map_get_ctx(__isl_keep isl_union_map *umap);
39__isl_export
40__isl_give isl_space *isl_union_map_get_space(__isl_keep isl_union_map *umap);
41
42__isl_give isl_union_map *isl_union_map_reset_user(
43 __isl_take isl_union_map *umap);
44
45int isl_union_map_find_dim_by_name(__isl_keep isl_union_map *umap,
46 enum isl_dim_type type, const char *name);
47
48__isl_export
49__isl_give isl_union_map *isl_union_map_universe(
50 __isl_take isl_union_map *umap);
51__isl_give isl_set *isl_union_map_params(__isl_take isl_union_map *umap);
52__isl_export
53__isl_give isl_union_set *isl_union_map_domain(__isl_take isl_union_map *umap);
54__isl_export
55__isl_give isl_union_set *isl_union_map_range(__isl_take isl_union_map *umap);
56__isl_export
57__isl_give isl_union_map *isl_union_map_domain_map(
58 __isl_take isl_union_map *umap);
59__isl_export
60__isl_give isl_union_pw_multi_aff *isl_union_map_domain_map_union_pw_multi_aff(
61 __isl_take isl_union_map *umap);
62__isl_export
63__isl_give isl_union_map *isl_union_map_range_map(
64 __isl_take isl_union_map *umap);
65__isl_give isl_union_map *isl_union_set_wrapped_domain_map(
66 __isl_take isl_union_set *uset);
67__isl_export
68__isl_give isl_union_map *isl_union_map_from_domain(
69 __isl_take isl_union_set *uset);
70__isl_export
71__isl_give isl_union_map *isl_union_map_from_range(
72 __isl_take isl_union_set *uset);
73
74__isl_export
75__isl_give isl_union_map *isl_union_map_affine_hull(
76 __isl_take isl_union_map *umap);
77__isl_export
78__isl_give isl_union_map *isl_union_map_polyhedral_hull(
79 __isl_take isl_union_map *umap);
80__isl_give isl_union_map *isl_union_map_remove_redundancies(
81 __isl_take isl_union_map *umap);
82__isl_give isl_union_map *isl_union_map_simple_hull(
83 __isl_take isl_union_map *umap);
84__isl_export
85__isl_give isl_union_map *isl_union_map_coalesce(
86 __isl_take isl_union_map *umap);
87__isl_export
88__isl_give isl_union_map *isl_union_map_compute_divs(
89 __isl_take isl_union_map *umap);
90__isl_export
91__isl_give isl_union_map *isl_union_map_lexmin(__isl_take isl_union_map *umap);
92__isl_export
93__isl_give isl_union_map *isl_union_map_lexmax(__isl_take isl_union_map *umap);
94
95__isl_give isl_union_map *isl_union_map_add_map(__isl_take isl_union_map *umap,
96 __isl_take isl_map *map);
97__isl_export
98__isl_give isl_union_map *isl_union_map_union(__isl_take isl_union_map *umap1,
99 __isl_take isl_union_map *umap2);
100__isl_export
101__isl_give isl_union_map *isl_union_map_subtract(
102 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
103__isl_export
104__isl_give isl_union_map *isl_union_map_intersect(
105 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
106__isl_export
107__isl_give isl_union_map *isl_union_map_intersect_params(
108 __isl_take isl_union_map *umap, __isl_take isl_set *set);
109__isl_export
110__isl_give isl_union_map *isl_union_map_product(__isl_take isl_union_map *umap1,
111 __isl_take isl_union_map *umap2);
112__isl_export
113__isl_give isl_union_map *isl_union_map_domain_product(
114 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
115__isl_give isl_union_map *isl_union_map_flat_domain_product(
116 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
117__isl_export
118__isl_give isl_union_map *isl_union_map_range_product(
119 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
120__isl_give isl_union_map *isl_union_map_flat_range_product(
121 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
122__isl_export
123__isl_give isl_union_map *isl_union_map_domain_factor_domain(
124 __isl_take isl_union_map *umap);
125__isl_export
126__isl_give isl_union_map *isl_union_map_domain_factor_range(
127 __isl_take isl_union_map *umap);
128__isl_export
129__isl_give isl_union_map *isl_union_map_range_factor_domain(
130 __isl_take isl_union_map *umap);
131__isl_export
132__isl_give isl_union_map *isl_union_map_range_factor_range(
133 __isl_take isl_union_map *umap);
134__isl_export
135__isl_give isl_union_map *isl_union_map_factor_domain(
136 __isl_take isl_union_map *umap);
137__isl_export
138__isl_give isl_union_map *isl_union_map_factor_range(
139 __isl_take isl_union_map *umap);
140__isl_export
141__isl_give isl_union_map *isl_union_map_gist(__isl_take isl_union_map *umap,
142 __isl_take isl_union_map *context);
143__isl_export
144__isl_give isl_union_map *isl_union_map_gist_params(
145 __isl_take isl_union_map *umap, __isl_take isl_set *set);
146__isl_export
147__isl_give isl_union_map *isl_union_map_gist_domain(
148 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset);
149__isl_export
150__isl_give isl_union_map *isl_union_map_gist_range(
151 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset);
152
153__isl_overload
154__isl_give isl_union_map *isl_union_map_intersect_domain_union_set(
155 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset);
156__isl_overload
157__isl_give isl_union_map *isl_union_map_intersect_domain_space(
158 __isl_take isl_union_map *umap, __isl_take isl_space *space);
159__isl_give isl_union_map *isl_union_map_intersect_domain(
160 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset);
161__isl_overload
162__isl_give isl_union_map *isl_union_map_intersect_range_union_set(
163 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset);
164__isl_overload
165__isl_give isl_union_map *isl_union_map_intersect_range_space(
166 __isl_take isl_union_map *umap, __isl_take isl_space *space);
167__isl_give isl_union_map *isl_union_map_intersect_range(
168 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset);
169__isl_export
170__isl_give isl_union_map *isl_union_map_intersect_domain_factor_domain(
171 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor);
172__isl_export
173__isl_give isl_union_map *isl_union_map_intersect_domain_factor_range(
174 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor);
175__isl_export
176__isl_give isl_union_map *isl_union_map_intersect_range_factor_domain(
177 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor);
178__isl_export
179__isl_give isl_union_map *isl_union_map_intersect_range_factor_range(
180 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor);
181__isl_overload
182__isl_give isl_union_map *
183isl_union_map_intersect_domain_wrapped_domain_union_set(
184 __isl_take isl_union_map *umap, __isl_take isl_union_set *domain);
185__isl_overload
186__isl_give isl_union_map *
187isl_union_map_intersect_range_wrapped_domain_union_set(
188 __isl_take isl_union_map *umap, __isl_take isl_union_set *domain);
189
190__isl_export
191__isl_give isl_union_map *isl_union_map_subtract_domain(
192 __isl_take isl_union_map *umap, __isl_take isl_union_set *dom);
193__isl_export
194__isl_give isl_union_map *isl_union_map_subtract_range(
195 __isl_take isl_union_map *umap, __isl_take isl_union_set *dom);
196
197__isl_export
198__isl_give isl_union_map *isl_union_map_apply_domain(
199 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
200__isl_export
201__isl_give isl_union_map *isl_union_map_apply_range(
202 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
203__isl_overload
204__isl_give isl_union_map *isl_union_map_preimage_domain_multi_aff(
205 __isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma);
206__isl_overload
207__isl_give isl_union_map *isl_union_map_preimage_range_multi_aff(
208 __isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma);
209__isl_overload
210__isl_give isl_union_map *isl_union_map_preimage_domain_pw_multi_aff(
211 __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma);
212__isl_overload
213__isl_give isl_union_map *isl_union_map_preimage_range_pw_multi_aff(
214 __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma);
215__isl_overload
216__isl_give isl_union_map *isl_union_map_preimage_domain_multi_pw_aff(
217 __isl_take isl_union_map *umap, __isl_take isl_multi_pw_aff *mpa);
218__isl_overload
219__isl_give isl_union_map *isl_union_map_preimage_domain_union_pw_multi_aff(
220 __isl_take isl_union_map *umap,
221 __isl_take isl_union_pw_multi_aff *upma);
222__isl_overload
223__isl_give isl_union_map *isl_union_map_preimage_range_union_pw_multi_aff(
224 __isl_take isl_union_map *umap,
225 __isl_take isl_union_pw_multi_aff *upma);
226__isl_export
227__isl_give isl_union_map *isl_union_map_reverse(__isl_take isl_union_map *umap);
228__isl_export
229__isl_give isl_union_map *isl_union_map_range_reverse(
230 __isl_take isl_union_map *umap);
231__isl_export
232__isl_give isl_union_map *isl_union_map_from_domain_and_range(
233 __isl_take isl_union_set *domain, __isl_take isl_union_set *range);
234
235__isl_export
236__isl_give isl_union_map *isl_union_map_detect_equalities(
237 __isl_take isl_union_map *umap);
238__isl_export
239__isl_give isl_union_set *isl_union_map_deltas(__isl_take isl_union_map *umap);
240__isl_give isl_union_map *isl_union_map_deltas_map(
241 __isl_take isl_union_map *umap);
242__isl_export
243__isl_give isl_union_map *isl_union_set_identity(__isl_take isl_union_set *uset);
244
245__isl_overload
246__isl_give isl_union_map *isl_union_map_project_out_param_id(
247 __isl_take isl_union_map *umap, __isl_take isl_id *id);
248__isl_overload
249__isl_give isl_union_map *isl_union_map_project_out_param_id_list(
250 __isl_take isl_union_map *umap, __isl_take isl_id_list *list);
251__isl_give isl_union_map *isl_union_map_project_out(
252 __isl_take isl_union_map *umap,
253 enum isl_dim_type type, unsigned first, unsigned n);
254__isl_export
255__isl_give isl_union_map *isl_union_map_project_out_all_params(
256 __isl_take isl_union_map *umap);
257__isl_give isl_union_map *isl_union_map_remove_divs(
258 __isl_take isl_union_map *bmap);
259
260__isl_export
261__isl_give isl_union_set *isl_union_map_bind_range(
262 __isl_take isl_union_map *umap, __isl_take isl_multi_id *tuple);
263
264isl_bool isl_union_map_plain_is_empty(__isl_keep isl_union_map *umap);
265__isl_export
266isl_bool isl_union_map_is_empty(__isl_keep isl_union_map *umap);
267__isl_export
268isl_bool isl_union_map_is_single_valued(__isl_keep isl_union_map *umap);
269isl_bool isl_union_map_plain_is_injective(__isl_keep isl_union_map *umap);
270__isl_export
271isl_bool isl_union_map_is_injective(__isl_keep isl_union_map *umap);
272__isl_export
273isl_bool isl_union_map_is_bijective(__isl_keep isl_union_map *umap);
274isl_bool isl_union_map_is_identity(__isl_keep isl_union_map *umap);
275
276__isl_export
277isl_bool isl_union_map_is_subset(__isl_keep isl_union_map *umap1,
278 __isl_keep isl_union_map *umap2);
279__isl_export
280isl_bool isl_union_map_is_equal(__isl_keep isl_union_map *umap1,
281 __isl_keep isl_union_map *umap2);
282__isl_export
283isl_bool isl_union_map_is_disjoint(__isl_keep isl_union_map *umap1,
284 __isl_keep isl_union_map *umap2);
285__isl_export
286isl_bool isl_union_map_is_strict_subset(__isl_keep isl_union_map *umap1,
287 __isl_keep isl_union_map *umap2);
288
289uint32_t isl_union_map_get_hash(__isl_keep isl_union_map *umap);
290
291isl_size isl_union_map_n_map(__isl_keep isl_union_map *umap);
292__isl_export
293isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap,
294 isl_stat (*fn)(__isl_take isl_map *map, void *user), void *user);
295__isl_export
296__isl_give isl_map_list *isl_union_map_get_map_list(
297 __isl_keep isl_union_map *umap);
298__isl_export
299isl_bool isl_union_map_every_map(__isl_keep isl_union_map *umap,
300 isl_bool (*test)(__isl_keep isl_map *map, void *user), void *user);
301__isl_give isl_union_map *isl_union_map_remove_map_if(
302 __isl_take isl_union_map *umap,
303 isl_bool (*fn)(__isl_keep isl_map *map, void *user), void *user);
304isl_bool isl_union_map_contains(__isl_keep isl_union_map *umap,
305 __isl_keep isl_space *space);
306__isl_export
307__isl_give isl_map *isl_union_map_extract_map(__isl_keep isl_union_map *umap,
308 __isl_take isl_space *space);
309__isl_export
310isl_bool isl_union_map_isa_map(__isl_keep isl_union_map *umap);
311__isl_export
312__isl_give isl_map *isl_union_map_as_map(__isl_take isl_union_map *umap);
313__isl_give isl_map *isl_map_from_union_map(__isl_take isl_union_map *umap);
314
315__isl_give isl_basic_map *isl_union_map_sample(__isl_take isl_union_map *umap);
316
317__isl_overload
318__isl_give isl_union_map *isl_union_map_fixed_power_val(
319 __isl_take isl_union_map *umap, __isl_take isl_val *exp);
320__isl_give isl_union_map *isl_union_map_power(__isl_take isl_union_map *umap,
321 isl_bool *exact);
322__isl_give isl_union_map *isl_union_map_transitive_closure(
323 __isl_take isl_union_map *umap, isl_bool *exact);
324
325__isl_give isl_union_map *isl_union_map_lex_lt_union_map(
326 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
327__isl_give isl_union_map *isl_union_map_lex_le_union_map(
328 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
329__isl_give isl_union_map *isl_union_map_lex_gt_union_map(
330 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
331__isl_give isl_union_map *isl_union_map_lex_ge_union_map(
332 __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2);
333
334__isl_overload
335__isl_give isl_union_map *isl_union_map_eq_at_multi_union_pw_aff(
336 __isl_take isl_union_map *umap,
337 __isl_take isl_multi_union_pw_aff *mupa);
338__isl_give isl_union_map *isl_union_map_lex_le_at_multi_union_pw_aff(
339 __isl_take isl_union_map *umap,
340 __isl_take isl_multi_union_pw_aff *mupa);
341__isl_give isl_union_map *isl_union_map_lex_lt_at_multi_union_pw_aff(
342 __isl_take isl_union_map *umap,
343 __isl_take isl_multi_union_pw_aff *mupa);
344__isl_give isl_union_map *isl_union_map_lex_ge_at_multi_union_pw_aff(
345 __isl_take isl_union_map *umap,
346 __isl_take isl_multi_union_pw_aff *mupa);
347__isl_give isl_union_map *isl_union_map_lex_gt_at_multi_union_pw_aff(
348 __isl_take isl_union_map *umap,
349 __isl_take isl_multi_union_pw_aff *mupa);
350
351__isl_give isl_union_map *isl_union_map_read_from_file(isl_ctx *ctx,
352 FILE *input);
353__isl_constructor
354__isl_give isl_union_map *isl_union_map_read_from_str(isl_ctx *ctx,
355 const char *str);
356__isl_give char *isl_union_map_to_str(__isl_keep isl_union_map *umap);
357__isl_give isl_printer *isl_printer_print_union_map(__isl_take isl_printer *p,
358 __isl_keep isl_union_map *umap);
359void isl_union_map_dump(__isl_keep isl_union_map *umap);
360
361__isl_export
362__isl_give isl_union_set *isl_union_map_wrap(__isl_take isl_union_map *umap);
363__isl_export
364__isl_give isl_union_map *isl_union_set_unwrap(__isl_take isl_union_set *uset);
365
366__isl_export
367__isl_give isl_union_map *isl_union_map_zip(__isl_take isl_union_map *umap);
368__isl_export
369__isl_give isl_union_map *isl_union_map_curry(__isl_take isl_union_map *umap);
370__isl_give isl_union_map *isl_union_map_range_curry(
371 __isl_take isl_union_map *umap);
372__isl_export
373__isl_give isl_union_map *isl_union_map_uncurry(__isl_take isl_union_map *umap);
374
375__isl_give isl_union_map *isl_union_map_align_params(
376 __isl_take isl_union_map *umap, __isl_take isl_space *model);
377__isl_give isl_union_set *isl_union_set_align_params(
378 __isl_take isl_union_set *uset, __isl_take isl_space *model);
379
380ISL_DECLARE_LIST_FN(union_map)
381
382#if defined(__cplusplus)
383}
384#endif
385
386#endif
387

source code of polly/lib/External/isl/include/isl/union_map.h