|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
References
tools/polly/lib/External/isl/isl_multi_dims.c 19 isl_bool FN(MULTI(BASE),involves_dims)(__isl_keep MULTI(BASE) *multi,
19 isl_bool FN(MULTI(BASE),involves_dims)(__isl_keep MULTI(BASE) *multi,
37 if (FN(MULTI(BASE),has_explicit_domain)(multi))
38 return FN(MULTI(BASE),involves_explicit_domain_dims)(multi,
44 __isl_give MULTI(BASE) *FN(MULTI(BASE),insert_dims)(
44 __isl_give MULTI(BASE) *FN(MULTI(BASE),insert_dims)(
45 __isl_take MULTI(BASE) *multi,
53 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
55 return FN(MULTI(BASE),free)(multi));
59 multi = FN(MULTI(BASE),cow)(multi);
65 return FN(MULTI(BASE),free)(multi);
66 if (FN(MULTI(BASE),has_explicit_domain)(multi))
67 multi = FN(MULTI(BASE),insert_explicit_domain_dims)(multi,
76 return FN(MULTI(BASE),free)(multi);
82 __isl_give MULTI(BASE) *FN(MULTI(BASE),add_dims)(__isl_take MULTI(BASE) *multi,
82 __isl_give MULTI(BASE) *FN(MULTI(BASE),add_dims)(__isl_take MULTI(BASE) *multi,
82 __isl_give MULTI(BASE) *FN(MULTI(BASE),add_dims)(__isl_take MULTI(BASE) *multi,
87 pos = FN(MULTI(BASE),dim)(multi, type);
89 return FN(MULTI(BASE),insert_dims)(multi, type, pos, n);
95 __isl_give MULTI(BASE) *FN(MULTI(BASE),project_domain_on_params)(
95 __isl_give MULTI(BASE) *FN(MULTI(BASE),project_domain_on_params)(
96 __isl_take MULTI(BASE) *multi)
102 n = FN(MULTI(BASE),dim)(multi, isl_dim_in);
103 involves = FN(MULTI(BASE),involves_dims)(multi, isl_dim_in, 0, n);
105 return FN(MULTI(BASE),free)(multi);
107 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
109 return FN(MULTI(BASE),free)(multi));
110 multi = FN(MULTI(BASE),drop_dims)(multi, isl_dim_in, 0, n);
111 space = FN(MULTI(BASE),get_domain_space)(multi);
113 multi = FN(MULTI(BASE),reset_domain_space)(multi, space);
tools/polly/lib/External/isl/isl_multi_no_explicit_domain.c 21 static int FN(MULTI(BASE),has_explicit_domain)(__isl_keep MULTI(BASE) *multi)
21 static int FN(MULTI(BASE),has_explicit_domain)(__isl_keep MULTI(BASE) *multi)
29 static __isl_give MULTI(BASE) *FN(MULTI(BASE),init_explicit_domain)(
29 static __isl_give MULTI(BASE) *FN(MULTI(BASE),init_explicit_domain)(
30 __isl_take MULTI(BASE) *multi)
38 static __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_explicit_domain)(
38 static __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_explicit_domain)(
39 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src)
39 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src)
48 static __isl_give MULTI(BASE) *FN(MULTI(BASE),copy_explicit_domain)(
48 static __isl_give MULTI(BASE) *FN(MULTI(BASE),copy_explicit_domain)(
49 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src)
49 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src)
61 static __isl_give MULTI(BASE) *
62 FN(MULTI(BASE),intersect_explicit_domain_product)(
63 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src1,
63 __isl_take MULTI(BASE) *dst, __isl_keep MULTI(BASE) *src1,
64 __isl_keep MULTI(BASE) *src2)
72 static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_explicit_domain_params)(
72 static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_explicit_domain_params)(
73 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space)
83 static __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_explicit_domain_space)(
83 static __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_explicit_domain_space)(
84 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space)
95 isl_bool FN(MULTI(BASE),involves_explicit_domain_dims)(
96 __isl_keep MULTI(BASE) *multi,
106 __isl_give MULTI(BASE) *FN(MULTI(BASE),insert_explicit_domain_dims)(
106 __isl_give MULTI(BASE) *FN(MULTI(BASE),insert_explicit_domain_dims)(
107 __isl_take MULTI(BASE) *multi,
117 __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_explicit_domain_dims)(
117 __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_explicit_domain_dims)(
118 __isl_take MULTI(BASE) *multi,
128 __isl_give MULTI(BASE) *FN(MULTI(BASE),move_explicit_domain_dims)(
128 __isl_give MULTI(BASE) *FN(MULTI(BASE),move_explicit_domain_dims)(
129 __isl_take MULTI(BASE) *multi,
139 static void FN(MULTI(BASE),free_explicit_domain)(__isl_keep MULTI(BASE) *multi)
139 static void FN(MULTI(BASE),free_explicit_domain)(__isl_keep MULTI(BASE) *multi)
147 static isl_bool FN(MULTI(BASE),equal_explicit_domain)(
148 __isl_keep MULTI(BASE) *multi1, __isl_keep MULTI(BASE) *multi2)
148 __isl_keep MULTI(BASE) *multi1, __isl_keep MULTI(BASE) *multi2)
153 static isl_stat FN(MULTI(BASE),check_explicit_domain)(
154 __isl_keep MULTI(BASE) *multi) __attribute__ ((unused));
161 static isl_stat FN(MULTI(BASE),check_explicit_domain)(
162 __isl_keep MULTI(BASE) *multi)
tools/polly/lib/External/isl/isl_multi_templ.c 23 isl_ctx *FN(MULTI(BASE),get_ctx)(__isl_keep MULTI(BASE) *multi)
23 isl_ctx *FN(MULTI(BASE),get_ctx)(__isl_keep MULTI(BASE) *multi)
30 __isl_keep isl_space *FN(MULTI(BASE),peek_space)(__isl_keep MULTI(BASE) *multi)
30 __isl_keep isl_space *FN(MULTI(BASE),peek_space)(__isl_keep MULTI(BASE) *multi)
35 __isl_give isl_space *FN(MULTI(BASE),get_space)(__isl_keep MULTI(BASE) *multi)
35 __isl_give isl_space *FN(MULTI(BASE),get_space)(__isl_keep MULTI(BASE) *multi)
37 return isl_space_copy(FN(MULTI(BASE),peek_space)(multi));
44 int FN(MULTI(BASE),find_dim_by_name)(__isl_keep MULTI(BASE) *multi,
44 int FN(MULTI(BASE),find_dim_by_name)(__isl_keep MULTI(BASE) *multi,
52 __isl_give isl_space *FN(MULTI(BASE),get_domain_space)(
53 __isl_keep MULTI(BASE) *multi)
64 __isl_give MULTI(BASE) *FN(MULTI(BASE),alloc)(__isl_take isl_space *space)
64 __isl_give MULTI(BASE) *FN(MULTI(BASE),alloc)(__isl_take isl_space *space)
68 MULTI(BASE) *multi;
76 multi = isl_calloc(ctx, MULTI(BASE),
77 sizeof(MULTI(BASE)) + (n - 1) * sizeof(struct EL *));
79 multi = isl_calloc(ctx, MULTI(BASE), sizeof(MULTI(BASE)));
79 multi = isl_calloc(ctx, MULTI(BASE), sizeof(MULTI(BASE)));
86 if (FN(MULTI(BASE),has_explicit_domain)(multi))
87 multi = FN(MULTI(BASE),init_explicit_domain)(multi);
94 __isl_give MULTI(BASE) *FN(MULTI(BASE),dup)(__isl_keep MULTI(BASE) *multi)
94 __isl_give MULTI(BASE) *FN(MULTI(BASE),dup)(__isl_keep MULTI(BASE) *multi)
94 __isl_give MULTI(BASE) *FN(MULTI(BASE),dup)(__isl_keep MULTI(BASE) *multi)
97 MULTI(BASE) *dup;
102 dup = FN(MULTI(BASE),alloc)(isl_space_copy(multi->space));
107 dup = FN(FN(MULTI(BASE),set),BASE)(dup, i,
107 dup = FN(FN(MULTI(BASE),set),BASE)(dup, i,
109 if (FN(MULTI(BASE),has_explicit_domain)(multi))
110 dup = FN(MULTI(BASE),copy_explicit_domain)(dup, multi);
115 __isl_give MULTI(BASE) *FN(MULTI(BASE),cow)(__isl_take MULTI(BASE) *multi)
115 __isl_give MULTI(BASE) *FN(MULTI(BASE),cow)(__isl_take MULTI(BASE) *multi)
115 __isl_give MULTI(BASE) *FN(MULTI(BASE),cow)(__isl_take MULTI(BASE) *multi)
124 return FN(MULTI(BASE),dup)(multi);
127 __isl_give MULTI(BASE) *FN(MULTI(BASE),copy)(__isl_keep MULTI(BASE) *multi)
127 __isl_give MULTI(BASE) *FN(MULTI(BASE),copy)(__isl_keep MULTI(BASE) *multi)
127 __isl_give MULTI(BASE) *FN(MULTI(BASE),copy)(__isl_keep MULTI(BASE) *multi)
136 __isl_null MULTI(BASE) *FN(MULTI(BASE),free)(__isl_take MULTI(BASE) *multi)
136 __isl_null MULTI(BASE) *FN(MULTI(BASE),free)(__isl_take MULTI(BASE) *multi)
136 __isl_null MULTI(BASE) *FN(MULTI(BASE),free)(__isl_take MULTI(BASE) *multi)
149 if (FN(MULTI(BASE),has_explicit_domain)(multi))
150 FN(MULTI(BASE),free_explicit_domain)(multi);
156 unsigned FN(MULTI(BASE),dim)(__isl_keep MULTI(BASE) *multi,
156 unsigned FN(MULTI(BASE),dim)(__isl_keep MULTI(BASE) *multi,
165 int FN(MULTI(BASE),find_dim_by_id)(__isl_keep MULTI(BASE) *multi,
165 int FN(MULTI(BASE),find_dim_by_id)(__isl_keep MULTI(BASE) *multi,
175 __isl_give isl_id *FN(MULTI(BASE),get_dim_id)(__isl_keep MULTI(BASE) *multi,
175 __isl_give isl_id *FN(MULTI(BASE),get_dim_id)(__isl_keep MULTI(BASE) *multi,
181 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_dim_name)(
181 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_dim_name)(
182 __isl_take MULTI(BASE) *multi,
187 multi = FN(MULTI(BASE),cow)(multi);
193 return FN(MULTI(BASE),free)(multi);
201 return FN(MULTI(BASE),free)(multi);
207 const char *FN(MULTI(BASE),get_tuple_name)(__isl_keep MULTI(BASE) *multi,
207 const char *FN(MULTI(BASE),get_tuple_name)(__isl_keep MULTI(BASE) *multi,
215 isl_bool FN(MULTI(BASE),has_tuple_id)(__isl_keep MULTI(BASE) *multi,
215 isl_bool FN(MULTI(BASE),has_tuple_id)(__isl_keep MULTI(BASE) *multi,
225 __isl_give isl_id *FN(MULTI(BASE),get_tuple_id)(__isl_keep MULTI(BASE) *multi,
225 __isl_give isl_id *FN(MULTI(BASE),get_tuple_id)(__isl_keep MULTI(BASE) *multi,
231 __isl_give EL *FN(FN(MULTI(BASE),get),BASE)(__isl_keep MULTI(BASE) *multi,
231 __isl_give EL *FN(FN(MULTI(BASE),get),BASE)(__isl_keep MULTI(BASE) *multi,
231 __isl_give EL *FN(FN(MULTI(BASE),get),BASE)(__isl_keep MULTI(BASE) *multi,
238 ctx = FN(MULTI(BASE),get_ctx)(multi);
248 static __isl_give MULTI(BASE) *FN(MULTI(BASE),restore)(
248 static __isl_give MULTI(BASE) *FN(MULTI(BASE),restore)(
249 __isl_take MULTI(BASE) *multi, int pos, __isl_take EL *el)
251 multi = FN(MULTI(BASE),cow)(multi);
256 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
264 FN(MULTI(BASE),free)(multi);
274 static __isl_give MULTI(BASE) *FN(MULTI(BASE),restore_check_space)(
274 static __isl_give MULTI(BASE) *FN(MULTI(BASE),restore_check_space)(
275 __isl_take MULTI(BASE) *multi, int pos, __isl_take EL *el)
279 space = FN(MULTI(BASE),peek_space)(multi);
281 multi = FN(MULTI(BASE),free)(multi);
282 return FN(MULTI(BASE),restore)(multi, pos, el);
285 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),set),BASE)(
285 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),set),BASE)(
285 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),set),BASE)(
286 __isl_take MULTI(BASE) *multi, int pos, __isl_take EL *el)
292 multi_space = FN(MULTI(BASE),get_space)(multi);
297 multi = FN(MULTI(BASE),align_params)(multi,
300 multi_space = FN(MULTI(BASE),get_space)(multi);
304 multi = FN(MULTI(BASE),restore_check_space)(multi, pos, el);
311 FN(MULTI(BASE),free)(multi);
328 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_space_and_domain)(
328 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_space_and_domain)(
329 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space,
334 multi = FN(MULTI(BASE),cow)(multi);
344 if (FN(MULTI(BASE),has_explicit_domain)(multi)) {
345 multi = FN(MULTI(BASE),reset_explicit_domain_space)(multi,
358 FN(MULTI(BASE),free)(multi);
362 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_domain_space)(
362 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_domain_space)(
363 __isl_take MULTI(BASE) *multi, __isl_take isl_space *domain)
369 return FN(MULTI(BASE),reset_space_and_domain)(multi, space, domain);
372 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_space)(
372 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_space)(
373 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space)
378 return FN(MULTI(BASE),reset_space_and_domain)(multi, space, domain);
383 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_dim_id)(
383 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_dim_id)(
384 __isl_take MULTI(BASE) *multi,
389 multi = FN(MULTI(BASE),cow)(multi);
393 space = FN(MULTI(BASE),get_space)(multi);
396 return FN(MULTI(BASE),reset_space)(multi, space);
399 FN(MULTI(BASE),free)(multi);
403 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_tuple_name)(
403 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_tuple_name)(
404 __isl_keep MULTI(BASE) *multi, enum isl_dim_type type,
409 multi = FN(MULTI(BASE),cow)(multi);
413 space = FN(MULTI(BASE),get_space)(multi);
416 return FN(MULTI(BASE),reset_space)(multi, space);
419 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_tuple_id)(
419 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_tuple_id)(
420 __isl_take MULTI(BASE) *multi, enum isl_dim_type type,
425 multi = FN(MULTI(BASE),cow)(multi);
429 space = FN(MULTI(BASE),get_space)(multi);
432 return FN(MULTI(BASE),reset_space)(multi, space);
440 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_tuple_id)(
440 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_tuple_id)(
441 __isl_take MULTI(BASE) *multi, enum isl_dim_type type)
447 if (!FN(MULTI(BASE),has_tuple_id)(multi, type))
450 multi = FN(MULTI(BASE),cow)(multi);
454 space = FN(MULTI(BASE),get_space)(multi);
457 return FN(MULTI(BASE),reset_space)(multi, space);
463 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_user)(
463 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_user)(
464 __isl_take MULTI(BASE) *multi)
468 space = FN(MULTI(BASE),get_space)(multi);
471 return FN(MULTI(BASE),reset_space)(multi, space);
474 __isl_give MULTI(BASE) *FN(MULTI(BASE),realign_domain)(
474 __isl_give MULTI(BASE) *FN(MULTI(BASE),realign_domain)(
475 __isl_take MULTI(BASE) *multi, __isl_take isl_reordering *exp)
480 multi = FN(MULTI(BASE),cow)(multi);
492 multi = FN(MULTI(BASE),reset_domain_space)(multi, space);
498 FN(MULTI(BASE),free)(multi);
507 __isl_give MULTI(BASE) *FN(MULTI(BASE),align_params)(
507 __isl_give MULTI(BASE) *FN(MULTI(BASE),align_params)(
508 __isl_take MULTI(BASE) *multi, __isl_take isl_space *model)
533 if (FN(MULTI(BASE),has_explicit_domain)(multi)) {
534 multi = FN(MULTI(BASE),align_explicit_domain_params)(multi,
541 FN(MULTI(BASE),get_domain_space)(multi));
542 multi = FN(MULTI(BASE),realign_domain)(multi, exp);
548 FN(MULTI(BASE),free)(multi);
559 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),from),LIST(BASE))(
559 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),from),LIST(BASE))(
559 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),from),LIST(BASE))(
565 MULTI(BASE) *multi;
571 n = FN(FN(LIST(EL),n),BASE)(list);
580 multi = FN(MULTI(BASE),alloc)(isl_space_copy(space));
582 EL *el = FN(FN(LIST(EL),get),BASE)(list, i);
584 multi = FN(MULTI(BASE),restore_check_space)(multi, i, el);
649 __isl_give MULTI(BASE) *FN(MULTI(BASE),zero)(__isl_take isl_space *space)
649 __isl_give MULTI(BASE) *FN(MULTI(BASE),zero)(__isl_take isl_space *space)
652 MULTI(BASE) *multi;
658 multi = FN(MULTI(BASE),alloc)(isl_space_copy(space));
672 multi = FN(FN(MULTI(BASE),set),BASE)(multi, i,
672 multi = FN(FN(MULTI(BASE),set),BASE)(multi, i,
709 __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_dims)(
709 __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_dims)(
710 __isl_take MULTI(BASE) *multi,
716 multi = FN(MULTI(BASE),cow)(multi);
720 dim = FN(MULTI(BASE),dim)(multi, type);
722 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
724 return FN(MULTI(BASE),free)(multi));
728 return FN(MULTI(BASE),free)(multi);
736 if (n > 0 && FN(MULTI(BASE),has_explicit_domain)(multi))
737 multi = FN(MULTI(BASE),init_explicit_domain)(multi);
742 if (FN(MULTI(BASE),has_explicit_domain)(multi))
743 multi = FN(MULTI(BASE),drop_explicit_domain_dims)(multi,
751 return FN(MULTI(BASE),free)(multi);
759 static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_params_multi_multi_and)(
759 static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_params_multi_multi_and)(
760 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2,
760 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2,
761 __isl_give MULTI(BASE) *(*fn)(__isl_take MULTI(BASE) *multi1,
761 __isl_give MULTI(BASE) *(*fn)(__isl_take MULTI(BASE) *multi1,
762 __isl_take MULTI(BASE) *multi2))
774 ctx = FN(MULTI(BASE),get_ctx)(multi1);
779 multi1 = FN(MULTI(BASE),align_params)(multi1,
780 FN(MULTI(BASE),get_space)(multi2));
781 multi2 = FN(MULTI(BASE),align_params)(multi2,
782 FN(MULTI(BASE),get_space)(multi1));
785 FN(MULTI(BASE),free)(multi1);
786 FN(MULTI(BASE),free)(multi2);
798 static __isl_give MULTI(BASE) *FN(MULTI(BASE),range_product_aligned)(
798 static __isl_give MULTI(BASE) *FN(MULTI(BASE),range_product_aligned)(
799 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
799 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
804 MULTI(BASE) *res;
809 space = isl_space_range_product(FN(MULTI(BASE),get_space)(multi1),
810 FN(MULTI(BASE),get_space)(multi2));
811 res = FN(MULTI(BASE),alloc)(space);
813 n1 = FN(MULTI(BASE),dim)(multi1, isl_dim_out);
814 n2 = FN(MULTI(BASE),dim)(multi2, isl_dim_out);
817 el = FN(FN(MULTI(BASE),get),BASE)(multi1, i);
817 el = FN(FN(MULTI(BASE),get),BASE)(multi1, i);
818 res = FN(FN(MULTI(BASE),set),BASE)(res, i, el);
818 res = FN(FN(MULTI(BASE),set),BASE)(res, i, el);
822 el = FN(FN(MULTI(BASE),get),BASE)(multi2, i);
822 el = FN(FN(MULTI(BASE),get),BASE)(multi2, i);
823 res = FN(FN(MULTI(BASE),set),BASE)(res, n1 + i, el);
823 res = FN(FN(MULTI(BASE),set),BASE)(res, n1 + i, el);
826 if (FN(MULTI(BASE),has_explicit_domain)(multi1))
827 res = FN(MULTI(BASE),intersect_explicit_domain)(res, multi1);
828 if (FN(MULTI(BASE),has_explicit_domain)(multi2))
829 res = FN(MULTI(BASE),intersect_explicit_domain)(res, multi2);
831 FN(MULTI(BASE),free)(multi1);
832 FN(MULTI(BASE),free)(multi2);
835 FN(MULTI(BASE),free)(multi1);
836 FN(MULTI(BASE),free)(multi2);
843 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_product)(
843 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_product)(
844 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
844 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
846 return FN(MULTI(BASE),align_params_multi_multi_and)(multi1, multi2,
847 &FN(MULTI(BASE),range_product_aligned));
852 isl_bool FN(MULTI(BASE),range_is_wrapping)(__isl_keep MULTI(BASE) *multi)
852 isl_bool FN(MULTI(BASE),range_is_wrapping)(__isl_keep MULTI(BASE) *multi)
861 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_factor_domain)(
861 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_factor_domain)(
862 __isl_take MULTI(BASE) *multi)
870 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
872 return FN(MULTI(BASE),free)(multi));
874 space = FN(MULTI(BASE),get_space)(multi);
878 multi = FN(MULTI(BASE),drop_dims)(multi,
880 multi = FN(MULTI(BASE),reset_space)(multi, space);
887 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_factor_range)(
887 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_factor_range)(
888 __isl_take MULTI(BASE) *multi)
896 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
898 return FN(MULTI(BASE),free)(multi));
900 space = FN(MULTI(BASE),get_space)(multi);
904 multi = FN(MULTI(BASE),drop_dims)(multi, isl_dim_out, 0, total - keep);
905 multi = FN(MULTI(BASE),reset_space)(multi, space);
912 __isl_give MULTI(BASE) *FN(MULTI(BASE),factor_range)(
912 __isl_give MULTI(BASE) *FN(MULTI(BASE),factor_range)(
913 __isl_take MULTI(BASE) *multi)
921 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
922 "not a product", return FN(MULTI(BASE),free)(multi));
924 space = FN(MULTI(BASE),get_space)(multi);
928 multi = FN(MULTI(BASE),drop_dims)(multi, isl_dim_out, 0, total - keep);
929 multi = FN(MULTI(BASE),reset_space)(multi, space);
943 __isl_give MULTI(BASE) *FN(MULTI(BASE),product_aligned)(
943 __isl_give MULTI(BASE) *FN(MULTI(BASE),product_aligned)(
944 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
944 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
949 MULTI(BASE) *res;
952 in1 = FN(MULTI(BASE),dim)(multi1, isl_dim_in);
953 in2 = FN(MULTI(BASE),dim)(multi2, isl_dim_in);
954 out1 = FN(MULTI(BASE),dim)(multi1, isl_dim_out);
955 out2 = FN(MULTI(BASE),dim)(multi2, isl_dim_out);
956 space = isl_space_product(FN(MULTI(BASE),get_space)(multi1),
957 FN(MULTI(BASE),get_space)(multi2));
958 res = FN(MULTI(BASE),alloc)(isl_space_copy(space));
962 el = FN(FN(MULTI(BASE),get),BASE)(multi1, i);
962 el = FN(FN(MULTI(BASE),get),BASE)(multi1, i);
965 res = FN(FN(MULTI(BASE),set),BASE)(res, i, el);
965 res = FN(FN(MULTI(BASE),set),BASE)(res, i, el);
969 el = FN(FN(MULTI(BASE),get),BASE)(multi2, i);
969 el = FN(FN(MULTI(BASE),get),BASE)(multi2, i);
972 res = FN(FN(MULTI(BASE),set),BASE)(res, out1 + i, el);
972 res = FN(FN(MULTI(BASE),set),BASE)(res, out1 + i, el);
975 if (FN(MULTI(BASE),has_explicit_domain)(multi1) ||
976 FN(MULTI(BASE),has_explicit_domain)(multi2))
977 res = FN(MULTI(BASE),intersect_explicit_domain_product)(res,
981 FN(MULTI(BASE),free)(multi1);
982 FN(MULTI(BASE),free)(multi2);
989 __isl_give MULTI(BASE) *FN(MULTI(BASE),product)(
989 __isl_give MULTI(BASE) *FN(MULTI(BASE),product)(
990 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
990 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
992 return FN(MULTI(BASE),align_params_multi_multi_and)(multi1, multi2,
993 &FN(MULTI(BASE),product_aligned));
997 __isl_give MULTI(BASE) *FN(MULTI(BASE),flatten_range)(
997 __isl_give MULTI(BASE) *FN(MULTI(BASE),flatten_range)(
998 __isl_take MULTI(BASE) *multi)
1006 multi = FN(MULTI(BASE),cow)(multi);
1012 return FN(MULTI(BASE),free)(multi);
1020 __isl_give MULTI(BASE) *FN(MULTI(BASE),flat_range_product)(
1020 __isl_give MULTI(BASE) *FN(MULTI(BASE),flat_range_product)(
1021 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
1021 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
1023 MULTI(BASE) *multi;
1025 multi = FN(MULTI(BASE),range_product)(multi1, multi2);
1026 multi = FN(MULTI(BASE),flatten_range)(multi);
1042 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_splice)(
1042 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_splice)(
1043 __isl_take MULTI(BASE) *multi1, unsigned pos,
1044 __isl_take MULTI(BASE) *multi2)
1046 MULTI(BASE) *res;
1052 dim = FN(MULTI(BASE),dim)(multi1, isl_dim_out);
1054 isl_die(FN(MULTI(BASE),get_ctx)(multi1), isl_error_invalid,
1057 res = FN(MULTI(BASE),copy)(multi1);
1058 res = FN(MULTI(BASE),drop_dims)(res, isl_dim_out, pos, dim - pos);
1059 multi1 = FN(MULTI(BASE),drop_dims)(multi1, isl_dim_out, 0, pos);
1061 res = FN(MULTI(BASE),flat_range_product)(res, multi2);
1062 res = FN(MULTI(BASE),flat_range_product)(res, multi1);
1066 FN(MULTI(BASE),free)(multi1);
1067 FN(MULTI(BASE),free)(multi2);
1095 __isl_give MULTI(BASE) *FN(MULTI(BASE),splice)(
1095 __isl_give MULTI(BASE) *FN(MULTI(BASE),splice)(
1096 __isl_take MULTI(BASE) *multi1, unsigned in_pos, unsigned out_pos,
1097 __isl_take MULTI(BASE) *multi2)
1105 n_in1 = FN(MULTI(BASE),dim)(multi1, isl_dim_in);
1107 isl_die(FN(MULTI(BASE),get_ctx)(multi1), isl_error_invalid,
1110 n_in2 = FN(MULTI(BASE),dim)(multi2, isl_dim_in);
1112 multi1 = FN(MULTI(BASE),insert_dims)(multi1, isl_dim_in, in_pos, n_in2);
1113 multi2 = FN(MULTI(BASE),insert_dims)(multi2, isl_dim_in, n_in2,
1115 multi2 = FN(MULTI(BASE),insert_dims)(multi2, isl_dim_in, 0, in_pos);
1117 return FN(MULTI(BASE),range_splice)(multi1, out_pos, multi2);
1119 FN(MULTI(BASE),free)(multi1);
1120 FN(MULTI(BASE),free)(multi2);
1128 static isl_stat FN(MULTI(BASE),check_equal_space)(
1129 __isl_keep MULTI(BASE) *multi1, __isl_keep MULTI(BASE) *multi2)
1129 __isl_keep MULTI(BASE) *multi1, __isl_keep MULTI(BASE) *multi2)
1140 isl_die(FN(MULTI(BASE),get_ctx)(multi1), isl_error_invalid,
1148 static __isl_give MULTI(BASE) *FN(MULTI(BASE),bin_op)(
1148 static __isl_give MULTI(BASE) *FN(MULTI(BASE),bin_op)(
1149 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2,
1149 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2,
1159 static __isl_give MULTI(BASE) *FN(MULTI(BASE),bin_op)(
1159 static __isl_give MULTI(BASE) *FN(MULTI(BASE),bin_op)(
1160 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2,
1160 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2,
1165 multi1 = FN(MULTI(BASE),cow)(multi1);
1166 if (FN(MULTI(BASE),check_equal_space)(multi1, multi2) < 0)
1176 if (FN(MULTI(BASE),has_explicit_domain)(multi2))
1177 multi1 = FN(MULTI(BASE),intersect_explicit_domain)(multi1,
1180 FN(MULTI(BASE),free)(multi2);
1183 FN(MULTI(BASE),free)(multi1);
1184 FN(MULTI(BASE),free)(multi2);
1192 static __isl_give MULTI(BASE) *FN(MULTI(BASE),add_aligned)(
1192 static __isl_give MULTI(BASE) *FN(MULTI(BASE),add_aligned)(
1193 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
1193 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
1195 return FN(MULTI(BASE),bin_op)(multi1, multi2, &FN(EL,add));
1200 __isl_give MULTI(BASE) *FN(MULTI(BASE),add)(__isl_take MULTI(BASE) *multi1,
1200 __isl_give MULTI(BASE) *FN(MULTI(BASE),add)(__isl_take MULTI(BASE) *multi1,
1200 __isl_give MULTI(BASE) *FN(MULTI(BASE),add)(__isl_take MULTI(BASE) *multi1,
1201 __isl_take MULTI(BASE) *multi2)
1203 return FN(MULTI(BASE),align_params_multi_multi_and)(multi1, multi2,
1204 &FN(MULTI(BASE),add_aligned));
1211 static __isl_give MULTI(BASE) *FN(MULTI(BASE),sub_aligned)(
1211 static __isl_give MULTI(BASE) *FN(MULTI(BASE),sub_aligned)(
1212 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
1212 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2)
1214 return FN(MULTI(BASE),bin_op)(multi1, multi2, &FN(EL,sub));
1219 __isl_give MULTI(BASE) *FN(MULTI(BASE),sub)(__isl_take MULTI(BASE) *multi1,
1219 __isl_give MULTI(BASE) *FN(MULTI(BASE),sub)(__isl_take MULTI(BASE) *multi1,
1219 __isl_give MULTI(BASE) *FN(MULTI(BASE),sub)(__isl_take MULTI(BASE) *multi1,
1220 __isl_take MULTI(BASE) *multi2)
1222 return FN(MULTI(BASE),align_params_multi_multi_and)(multi1, multi2,
1223 &FN(MULTI(BASE),sub_aligned));
1228 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_val)(__isl_take MULTI(BASE) *multi,
1228 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_val)(__isl_take MULTI(BASE) *multi,
1228 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_val)(__isl_take MULTI(BASE) *multi,
1245 multi = FN(MULTI(BASE),cow)(multi);
1260 return FN(MULTI(BASE),free)(multi);
1265 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_down_val)(
1265 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_down_val)(
1266 __isl_take MULTI(BASE) *multi, __isl_take isl_val *v)
1285 multi = FN(MULTI(BASE),cow)(multi);
1300 return FN(MULTI(BASE),free)(multi);
1306 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_multi_val)(
1306 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_multi_val)(
1307 __isl_take MULTI(BASE) *multi, __isl_take isl_multi_val *mv)
1319 multi = FN(MULTI(BASE),cow)(multi);
1336 return FN(MULTI(BASE),free)(multi);
1342 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_down_multi_val)(
1342 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_down_multi_val)(
1343 __isl_take MULTI(BASE) *multi, __isl_take isl_multi_val *mv)
1355 multi = FN(MULTI(BASE),cow)(multi);
1372 return FN(MULTI(BASE),free)(multi);
1378 __isl_give MULTI(BASE) *FN(MULTI(BASE),mod_multi_val)(
1378 __isl_give MULTI(BASE) *FN(MULTI(BASE),mod_multi_val)(
1379 __isl_take MULTI(BASE) *multi, __isl_take isl_multi_val *mv)
1391 multi = FN(MULTI(BASE),cow)(multi);
1408 return FN(MULTI(BASE),free)(multi);
1477 __isl_give MULTI(BASE) *FN(MULTI(BASE),from_range)(
1477 __isl_give MULTI(BASE) *FN(MULTI(BASE),from_range)(
1478 __isl_take MULTI(BASE) *multi)
1485 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
1487 return FN(MULTI(BASE),free)(multi));
1489 space = FN(MULTI(BASE),get_space)(multi);
1491 multi = FN(MULTI(BASE),reset_space)(multi, space);
1498 isl_bool FN(MULTI(BASE),plain_is_equal)(__isl_keep MULTI(BASE) *multi1,
1498 isl_bool FN(MULTI(BASE),plain_is_equal)(__isl_keep MULTI(BASE) *multi1,
1499 __isl_keep MULTI(BASE) *multi2)
1518 if (FN(MULTI(BASE),has_explicit_domain)(multi1) ||
1519 FN(MULTI(BASE),has_explicit_domain)(multi2)) {
1520 equal = FN(MULTI(BASE),equal_explicit_domain)(multi1, multi2);
1530 isl_bool FN(MULTI(BASE),involves_nan)(__isl_keep MULTI(BASE) *multi)
1530 isl_bool FN(MULTI(BASE),involves_nan)(__isl_keep MULTI(BASE) *multi)
1583 __isl_give MULTI(BASE) *FN(MULTI(BASE),neg)(__isl_take MULTI(BASE) *multi)
1583 __isl_give MULTI(BASE) *FN(MULTI(BASE),neg)(__isl_take MULTI(BASE) *multi)
1583 __isl_give MULTI(BASE) *FN(MULTI(BASE),neg)(__isl_take MULTI(BASE) *multi)
1587 multi = FN(MULTI(BASE),cow)(multi);
1594 return FN(MULTI(BASE),free)(multi);