Lines Matching full:base

18 #define MULTI_NAME(BASE) "isl_multi_" #BASE  argument
20 isl_ctx *FN(MULTI(BASE),get_ctx)(__isl_keep MULTI(BASE) *multi) in FN() argument
27 __isl_keep isl_space *FN(MULTI(BASE),peek_space)(__isl_keep MULTI(BASE) *multi) in FN() argument
32 __isl_give isl_space *FN(MULTI(BASE),get_space)(__isl_keep MULTI(BASE) *multi) in FN() argument
34 return isl_space_copy(FN(MULTI(BASE),peek_space)(multi)); in FN()
37 __isl_give isl_space *FN(MULTI(BASE),get_domain_space)( in FN() argument
38 __isl_keep MULTI(BASE) *multi) in FN()
45 * If the number of base expressions is zero, then make sure
49 __isl_give MULTI(BASE) *FN(MULTI(BASE),alloc)(__isl_take isl_space *space) in MULTI() argument
53 MULTI(BASE) *multi; in MULTI()
61 multi = isl_calloc(ctx, MULTI(BASE), in MULTI()
62 sizeof(MULTI(BASE)) + (n - 1) * sizeof(struct EL *)); in MULTI()
64 multi = isl_calloc(ctx, MULTI(BASE), sizeof(MULTI(BASE))); in MULTI()
71 if (FN(MULTI(BASE),has_explicit_domain)(multi)) in MULTI()
72 multi = FN(MULTI(BASE),init_explicit_domain)(multi); in MULTI()
79 __isl_give MULTI(BASE) *FN(MULTI(BASE),dup)(__isl_keep MULTI(BASE) *multi) in MULTI() argument
82 MULTI(BASE) *dup; in MULTI()
87 dup = FN(MULTI(BASE),alloc)(isl_space_copy(multi->space)); in MULTI()
92 dup = FN(FN(MULTI(BASE),set),BASE)(dup, i, in MULTI()
94 if (FN(MULTI(BASE),has_explicit_domain)(multi)) in MULTI()
95 dup = FN(MULTI(BASE),copy_explicit_domain)(dup, multi); in MULTI()
100 __isl_give MULTI(BASE) *FN(MULTI(BASE),cow)(__isl_take MULTI(BASE) *multi) in MULTI() argument
109 return FN(MULTI(BASE),dup)(multi); in MULTI()
112 __isl_give MULTI(BASE) *FN(MULTI(BASE),copy)(__isl_keep MULTI(BASE) *multi) in MULTI() argument
121 __isl_null MULTI(BASE) *FN(MULTI(BASE),free)(__isl_take MULTI(BASE) *multi) in MULTI() argument
134 if (FN(MULTI(BASE),has_explicit_domain)(multi)) in MULTI()
135 FN(MULTI(BASE),free_explicit_domain)(multi); in MULTI()
149 __isl_give isl_space *FN(MULTI(BASE),take_space)(__isl_keep MULTI(BASE) *multi) in FN() argument
156 return FN(MULTI(BASE),get_space)(multi); in FN()
167 __isl_give MULTI(BASE) *FN(MULTI(BASE),restore_space)( in MULTI() argument
168 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space) in MULTI()
178 multi = FN(MULTI(BASE),cow)(multi); in MULTI()
186 FN(MULTI(BASE),free)(multi); in MULTI()
191 isl_size FN(MULTI(BASE),dim)(__isl_keep MULTI(BASE) *multi, in FN() argument
194 return isl_space_dim(FN(MULTI(BASE),peek_space)(multi), type); in FN()
197 /* Return the number of base expressions in "multi".
199 isl_size FN(MULTI(BASE),size)(__isl_keep MULTI(BASE) *multi) in FN() argument
205 #define TYPE MULTI(BASE)
209 /* Return the base expression at position "pos" in "multi".
211 static __isl_give EL *FN(MULTI(BASE),peek_at)(__isl_keep MULTI(BASE) *multi, in FN() argument
214 if (FN(MULTI(BASE),check_range)(multi, isl_dim_out, pos, 1) < 0) in FN()
219 /* Return a copy of the base expression at position "pos" in "multi".
221 __isl_give EL *FN(MULTI(BASE),get_at)(__isl_keep MULTI(BASE) *multi, int pos) in FN() argument
223 return FN(EL,copy)(FN(MULTI(BASE),peek_at)(multi, pos)); in FN()
228 __isl_give EL *FN(FN(MULTI(BASE),get),BASE)(__isl_keep MULTI(BASE) *multi, in FN() argument
231 return FN(MULTI(BASE),get_at)(multi, pos); in FN()
234 /* Return the base expression at position "pos" in "multi".
235 * This may be either a copy or the base expression itself
237 * This allows the base expression to be modified inplace
238 * if both the multi expression and this base expression
244 static __isl_give EL *FN(MULTI(BASE),take_at)(__isl_keep MULTI(BASE) *multi, in FN() argument
252 return FN(MULTI(BASE),get_at)(multi, pos); in FN()
253 if (FN(MULTI(BASE),check_range)(multi, isl_dim_out, pos, 1) < 0) in FN()
263 static __isl_give MULTI(BASE) *FN(MULTI(BASE),restore_at)( in MULTI() argument
264 __isl_take MULTI(BASE) *multi, int pos, __isl_take EL *el) in MULTI()
266 if (FN(MULTI(BASE),check_range)(multi, isl_dim_out, pos, 1) < 0 || !el) in MULTI()
274 multi = FN(MULTI(BASE),cow)(multi); in MULTI()
283 FN(MULTI(BASE),free)(multi); in MULTI()
293 static __isl_give MULTI(BASE) *FN(MULTI(BASE),restore_check_space)( in MULTI() argument
294 __isl_take MULTI(BASE) *multi, int pos, __isl_take EL *el) in MULTI()
298 space = FN(MULTI(BASE),peek_space)(multi); in MULTI()
300 multi = FN(MULTI(BASE),free)(multi); in MULTI()
301 return FN(MULTI(BASE),restore_at)(multi, pos, el); in MULTI()
304 /* Replace the base expression at position "pos" in "multi" with "el".
306 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_at)( in MULTI() argument
307 __isl_take MULTI(BASE) *multi, int pos, __isl_take EL *el) in MULTI()
313 multi_space = FN(MULTI(BASE),get_space)(multi); in MULTI()
318 multi = FN(MULTI(BASE),align_params)(multi, in MULTI()
321 multi_space = FN(MULTI(BASE),get_space)(multi); in MULTI()
325 multi = FN(MULTI(BASE),restore_check_space)(multi, pos, el); in MULTI()
332 FN(MULTI(BASE),free)(multi); in MULTI()
341 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),set),BASE)( in MULTI() argument
342 __isl_take MULTI(BASE) *multi, int pos, __isl_take EL *el) in MULTI()
344 return FN(MULTI(BASE),set_at)(multi, pos, el); in MULTI()
347 /* Return the base expressions of "multi" as a list.
349 __isl_give LIST(EL) *FN(MULTI(BASE),get_list)( in LIST()
350 __isl_keep MULTI(BASE) *multi) in LIST()
356 n = FN(MULTI(BASE),size)(multi); in LIST()
359 list = FN(LIST(EL),alloc)(FN(MULTI(BASE),get_ctx(multi)), n); in LIST()
361 EL *el = FN(MULTI(BASE),get_at)(multi, i); in LIST()
378 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_space_and_domain)( in MULTI() argument
379 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space, in MULTI()
385 n = FN(MULTI(BASE),size)(multi); in MULTI()
392 el = FN(MULTI(BASE),take_at)(multi, i); in MULTI()
394 multi = FN(MULTI(BASE),restore_at)(multi, i, el); in MULTI()
396 if (FN(MULTI(BASE),has_explicit_domain)(multi)) in MULTI()
397 multi = FN(MULTI(BASE),reset_explicit_domain_space)(multi, in MULTI()
401 multi = FN(MULTI(BASE),restore_space)(multi, space); in MULTI()
407 FN(MULTI(BASE),free)(multi); in MULTI()
411 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_domain_space)( in MULTI() argument
412 __isl_take MULTI(BASE) *multi, __isl_take isl_space *domain) in MULTI()
416 multi_space = FN(MULTI(BASE),get_space)(multi); in MULTI()
419 return FN(MULTI(BASE),reset_space_and_domain)(multi, space, domain); in MULTI()
422 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_space)( in MULTI() argument
423 __isl_take MULTI(BASE) *multi, __isl_take isl_space *space) in MULTI()
428 return FN(MULTI(BASE),reset_space_and_domain)(multi, space, domain); in MULTI()
434 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_user)( in MULTI() argument
435 __isl_take MULTI(BASE) *multi) in MULTI()
439 space = FN(MULTI(BASE),get_space)(multi); in MULTI()
442 return FN(MULTI(BASE),reset_space)(multi, space); in MULTI()
445 __isl_give MULTI(BASE) *FN(MULTI(BASE),realign_domain)( in MULTI() argument
446 __isl_take MULTI(BASE) *multi, __isl_take isl_reordering *exp) in MULTI()
452 n = FN(MULTI(BASE),size)(multi); in MULTI()
459 el = FN(MULTI(BASE),take_at)(multi, i); in MULTI()
461 multi = FN(MULTI(BASE),restore_at)(multi, i, el); in MULTI()
465 multi = FN(MULTI(BASE),reset_domain_space)(multi, space); in MULTI()
471 FN(MULTI(BASE),free)(multi); in MULTI()
480 __isl_give MULTI(BASE) *FN(MULTI(BASE),align_params)( in MULTI() argument
481 __isl_take MULTI(BASE) *multi, __isl_take isl_space *model) in MULTI()
507 if (FN(MULTI(BASE),has_explicit_domain)(multi)) { in MULTI()
508 multi = FN(MULTI(BASE),align_explicit_domain_params)(multi, in MULTI()
513 domain_space = FN(MULTI(BASE),get_domain_space)(multi); in MULTI()
516 multi = FN(MULTI(BASE),realign_domain)(multi, exp); in MULTI()
522 FN(MULTI(BASE),free)(multi); in MULTI()
527 * as base expressions.
533 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),from),LIST(BASE))( in MULTI() argument
539 MULTI(BASE) *multi; in MULTI()
542 n = FN(FN(LIST(EL),n),BASE)(list); in MULTI()
555 multi = FN(MULTI(BASE),alloc)(isl_space_copy(space)); in MULTI()
557 EL *el = FN(FN(LIST(EL),get),BASE)(list, i); in MULTI()
559 multi = FN(MULTI(BASE),restore_check_space)(multi, i, el); in MULTI()
574 __isl_give MULTI(BASE) *FN(isl_space_multi,BASE)(__isl_take isl_space *space, in MULTI() argument
577 return FN(FN(MULTI(BASE),from),LIST(BASE))(space, list); in MULTI()
583 static __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_output_dims)( in MULTI() argument
584 __isl_take MULTI(BASE) *multi, unsigned first, unsigned n) in MULTI()
588 multi = FN(MULTI(BASE),cow)(multi); in MULTI()
597 if (n > 0 && FN(MULTI(BASE),has_explicit_domain)(multi)) in MULTI()
598 multi = FN(MULTI(BASE),init_explicit_domain)(multi); in MULTI()
603 __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_dims)( in MULTI() argument
604 __isl_take MULTI(BASE) *multi, in MULTI()
611 if (FN(MULTI(BASE),check_range)(multi, type, first, n) < 0) in MULTI()
612 return FN(MULTI(BASE),free)(multi); in MULTI()
614 space = FN(MULTI(BASE),take_space)(multi); in MULTI()
616 multi = FN(MULTI(BASE),restore_space)(multi, space); in MULTI()
619 return FN(MULTI(BASE),drop_output_dims)(multi, first, n); in MULTI()
621 if (FN(MULTI(BASE),has_explicit_domain)(multi)) in MULTI()
622 multi = FN(MULTI(BASE),drop_explicit_domain_dims)(multi, in MULTI()
625 size = FN(MULTI(BASE),size)(multi); in MULTI()
627 return FN(MULTI(BASE),free)(multi); in MULTI()
631 el = FN(MULTI(BASE),take_at)(multi, i); in MULTI()
633 multi = FN(MULTI(BASE),restore_at)(multi, i, el); in MULTI()
640 #define TYPE MULTI(BASE)
646 /* Given two MULTI(BASE)s A -> B and C -> D,
647 * construct a MULTI(BASE) (A * C) -> [B -> D].
652 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_product)( in MULTI() argument
653 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2) in MULTI()
659 MULTI(BASE) *res; in MULTI()
661 FN(MULTI(BASE),align_params_bin)(&multi1, &multi2); in MULTI()
662 n1 = FN(MULTI(BASE),size)(multi1); in MULTI()
663 n2 = FN(MULTI(BASE),size)(multi2); in MULTI()
667 space = isl_space_range_product(FN(MULTI(BASE),get_space)(multi1), in MULTI()
668 FN(MULTI(BASE),get_space)(multi2)); in MULTI()
669 res = FN(MULTI(BASE),alloc)(space); in MULTI()
672 el = FN(FN(MULTI(BASE),get),BASE)(multi1, i); in MULTI()
673 res = FN(FN(MULTI(BASE),set),BASE)(res, i, el); in MULTI()
677 el = FN(FN(MULTI(BASE),get),BASE)(multi2, i); in MULTI()
678 res = FN(FN(MULTI(BASE),set),BASE)(res, n1 + i, el); in MULTI()
681 if (FN(MULTI(BASE),has_explicit_domain)(multi1)) in MULTI()
682 res = FN(MULTI(BASE),intersect_explicit_domain)(res, multi1); in MULTI()
683 if (FN(MULTI(BASE),has_explicit_domain)(multi2)) in MULTI()
684 res = FN(MULTI(BASE),intersect_explicit_domain)(res, multi2); in MULTI()
686 FN(MULTI(BASE),free)(multi1); in MULTI()
687 FN(MULTI(BASE),free)(multi2); in MULTI()
690 FN(MULTI(BASE),free)(multi1); in MULTI()
691 FN(MULTI(BASE),free)(multi2); in MULTI()
697 isl_bool FN(MULTI(BASE),range_is_wrapping)(__isl_keep MULTI(BASE) *multi) in FN() argument
706 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_factor_domain)( in MULTI() argument
707 __isl_take MULTI(BASE) *multi) in MULTI()
712 total = FN(MULTI(BASE),dim)(multi, isl_dim_out); in MULTI()
714 return FN(MULTI(BASE),free)(multi); in MULTI()
716 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid, in MULTI()
718 return FN(MULTI(BASE),free)(multi)); in MULTI()
720 space = FN(MULTI(BASE),get_space)(multi); in MULTI()
724 multi = FN(MULTI(BASE),free)(multi); in MULTI()
725 multi = FN(MULTI(BASE),drop_dims)(multi, in MULTI()
727 multi = FN(MULTI(BASE),reset_space)(multi, space); in MULTI()
734 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_factor_range)( in MULTI() argument
735 __isl_take MULTI(BASE) *multi) in MULTI()
740 total = FN(MULTI(BASE),dim)(multi, isl_dim_out); in MULTI()
742 return FN(MULTI(BASE),free)(multi); in MULTI()
744 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid, in MULTI()
746 return FN(MULTI(BASE),free)(multi)); in MULTI()
748 space = FN(MULTI(BASE),get_space)(multi); in MULTI()
752 multi = FN(MULTI(BASE),free)(multi); in MULTI()
753 multi = FN(MULTI(BASE),drop_dims)(multi, isl_dim_out, 0, total - keep); in MULTI()
754 multi = FN(MULTI(BASE),reset_space)(multi, space); in MULTI()
761 __isl_give MULTI(BASE) *FN(MULTI(BASE),factor_range)( in MULTI() argument
762 __isl_take MULTI(BASE) *multi) in MULTI()
767 total = FN(MULTI(BASE),dim)(multi, isl_dim_set); in MULTI()
769 return FN(MULTI(BASE),free)(multi); in MULTI()
771 isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid, in MULTI()
772 "not a product", return FN(MULTI(BASE),free)(multi)); in MULTI()
774 space = FN(MULTI(BASE),get_space)(multi); in MULTI()
778 multi = FN(MULTI(BASE),free)(multi); in MULTI()
779 multi = FN(MULTI(BASE),drop_dims)(multi, isl_dim_set, 0, total - keep); in MULTI()
780 multi = FN(MULTI(BASE),reset_space)(multi, space); in MULTI()
785 __isl_give MULTI(BASE) *FN(MULTI(BASE),flatten_range)( in MULTI() argument
786 __isl_take MULTI(BASE) *multi) in MULTI()
790 space = FN(MULTI(BASE),take_space)(multi); in MULTI()
792 multi = FN(MULTI(BASE),restore_space)(multi, space); in MULTI()
797 /* Given two MULTI(BASE)s A -> B and C -> D,
798 * construct a MULTI(BASE) (A * C) -> (B, D).
800 __isl_give MULTI(BASE) *FN(MULTI(BASE),flat_range_product)( in MULTI() argument
801 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2) in MULTI()
803 MULTI(BASE) *multi; in MULTI()
805 multi = FN(MULTI(BASE),range_product)(multi1, multi2); in MULTI()
806 multi = FN(MULTI(BASE),flatten_range)(multi); in MULTI()
822 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_splice)( in MULTI() argument
823 __isl_take MULTI(BASE) *multi1, unsigned pos, in MULTI()
824 __isl_take MULTI(BASE) *multi2) in MULTI()
826 MULTI(BASE) *res; in MULTI()
829 dim = FN(MULTI(BASE),size)(multi1); in MULTI()
833 if (FN(MULTI(BASE),check_range)(multi1, isl_dim_out, pos, 0) < 0) in MULTI()
836 res = FN(MULTI(BASE),copy)(multi1); in MULTI()
837 res = FN(MULTI(BASE),drop_dims)(res, isl_dim_out, pos, dim - pos); in MULTI()
838 multi1 = FN(MULTI(BASE),drop_dims)(multi1, isl_dim_out, 0, pos); in MULTI()
840 res = FN(MULTI(BASE),flat_range_product)(res, multi2); in MULTI()
841 res = FN(MULTI(BASE),flat_range_product)(res, multi1); in MULTI()
845 FN(MULTI(BASE),free)(multi1); in MULTI()
846 FN(MULTI(BASE),free)(multi2); in MULTI()
851 #define TYPE MULTI(BASE)
860 static __isl_give MULTI(BASE) *FN(MULTI(BASE),bin_op)(
861 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2,
871 static __isl_give MULTI(BASE) *FN(MULTI(BASE),bin_op)( in MULTI() argument
872 __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2, in MULTI()
878 FN(MULTI(BASE),align_params_bin)(&multi1, &multi2); in MULTI()
879 n = FN(MULTI(BASE),size)(multi1); in MULTI()
880 if (n < 0 || FN(MULTI(BASE),check_equal_space)(multi1, multi2) < 0) in MULTI()
886 el2 = FN(MULTI(BASE),get_at)(multi2, i); in MULTI()
887 el1 = FN(MULTI(BASE),take_at)(multi1, i); in MULTI()
889 multi1 = FN(MULTI(BASE),restore_at)(multi1, i, el1); in MULTI()
892 if (FN(MULTI(BASE),has_explicit_domain)(multi2)) in MULTI()
893 multi1 = FN(MULTI(BASE),intersect_explicit_domain)(multi1, in MULTI()
896 FN(MULTI(BASE),free)(multi2); in MULTI()
899 FN(MULTI(BASE),free)(multi1); in MULTI()
900 FN(MULTI(BASE),free)(multi2); in MULTI()
906 static isl_bool FN(MULTI(BASE),any)(__isl_keep MULTI(BASE) *multi,
909 /* Does "test" succeed on any base expression of "multi"?
911 static isl_bool FN(MULTI(BASE),any)(__isl_keep MULTI(BASE) *multi, in FN() argument
917 n = FN(MULTI(BASE),size)(multi); in FN()
932 static isl_bool FN(MULTI(BASE),every)(__isl_keep MULTI(BASE) *multi,
935 /* Does "test" succeed on every base expression of "multi"?
937 static isl_bool FN(MULTI(BASE),every)(__isl_keep MULTI(BASE) *multi, in FN() argument
943 n = FN(MULTI(BASE),size)(multi); in FN()
957 #define TYPE MULTI(BASE)
962 isl_bool FN(MULTI(BASE),plain_is_equal)(__isl_keep MULTI(BASE) *multi1, in FN() argument
963 __isl_keep MULTI(BASE) *multi2) in FN()
982 if (FN(MULTI(BASE),has_explicit_domain)(multi1) || in FN()
983 FN(MULTI(BASE),has_explicit_domain)(multi2)) { in FN()
984 equal = FN(MULTI(BASE),equal_explicit_domain)(multi1, multi2); in FN()