reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/polly/lib/External/isl/isl_multi_align_templ.c
   12 static __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),align_params),ALIGN_DOMBASE)(
   12 static __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),align_params),ALIGN_DOMBASE)(
   21 	aligned = FN(ALIGN_DOM,space_has_equal_params)(domain, multi->space);
   27 	dom_space = FN(ALIGN_DOM,peek_space)(domain);
   34 		isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
   36 	multi = FN(MULTI(BASE),align_params)(multi,
   37 					    FN(ALIGN_DOM,get_space)(domain));
   38 	domain = FN(ALIGN_DOM,align_params)(domain,
   39 					    FN(MULTI(BASE),get_space)(multi));
   42 	FN(MULTI(BASE),free)(multi);
   43 	FN(ALIGN_DOM,free)(domain);
tools/polly/lib/External/isl/isl_multi_apply_templ.c
   18 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),apply_aligned),APPLY_DOMBASE)(
   18 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),apply_aligned),APPLY_DOMBASE)(
   28 		FN(APPLY_DOM,free)(set);
   32 	multi = FN(MULTI(BASE),cow)(multi);
   37 		multi->u.p[i] = fn(multi->u.p[i], FN(APPLY_DOM,copy)(set));
   42 	FN(APPLY_DOM,free)(set);
   45 	FN(APPLY_DOM,free)(set);
   46 	FN(MULTI(BASE),free)(multi);
   55 static __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),apply),APPLY_DOMBASE)(
   55 static __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),apply),APPLY_DOMBASE)(
   65 	aligned = FN(APPLY_DOM,space_has_equal_params)(set, multi->space);
   69 		return FN(FN(MULTI(BASE),apply_aligned),APPLY_DOMBASE)(multi,
   69 		return FN(FN(MULTI(BASE),apply_aligned),APPLY_DOMBASE)(multi,
   71 	ctx = FN(MULTI(BASE),get_ctx)(multi);
   76 	multi = FN(MULTI(BASE),align_params)(multi,
   77 						FN(APPLY_DOM,get_space)(set));
   78 	set = FN(APPLY_DOM,align_params)(set, FN(MULTI(BASE),get_space)(multi));
   78 	set = FN(APPLY_DOM,align_params)(set, FN(MULTI(BASE),get_space)(multi));
   79 	return FN(FN(MULTI(BASE),apply_aligned),APPLY_DOMBASE)(multi, set, fn);
   79 	return FN(FN(MULTI(BASE),apply_aligned),APPLY_DOMBASE)(multi, set, fn);
   81 	FN(MULTI(BASE),free)(multi);
   82 	FN(APPLY_DOM,free)(set);
tools/polly/lib/External/isl/isl_multi_cmp.c
   16 int FN(MULTI(BASE),plain_cmp)(__isl_keep MULTI(BASE) *multi1,
   34 		cmp = FN(EL,plain_cmp)(multi1->u.p[i], multi2->u.p[i]);
tools/polly/lib/External/isl/isl_multi_coalesce.c
   18 __isl_give MULTI(BASE) *FN(MULTI(BASE),coalesce)(__isl_take MULTI(BASE) *multi)
   26 		EL *el = FN(EL,copy)(multi->u.p[i]);
   27 		el = FN(EL,coalesce)(el);
   29 			return FN(MULTI(BASE),free)(multi);
   30 		FN(EL,free)(multi->u.p[i]);
tools/polly/lib/External/isl/isl_multi_dims.c
   19 isl_bool FN(MULTI(BASE),involves_dims)(__isl_keep MULTI(BASE) *multi,
   32 		involves = FN(EL,involves_dims)(multi->u.p[i], type, first, n);
   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)(
   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,
   73 		multi->u.p[i] = FN(EL,insert_dims)(multi->u.p[i],
   76 			return FN(MULTI(BASE),free)(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)(
  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_explicit_domain.c
   15 __isl_give MULTI(BASE) *FN(MULTI(BASE),cow)(__isl_take MULTI(BASE) *multi);
   21 static int FN(MULTI(BASE),has_explicit_domain)(__isl_keep MULTI(BASE) *multi)
   28 static isl_stat FN(MULTI(BASE),check_has_explicit_domain)(
   33 	if (!FN(MULTI(BASE),has_explicit_domain)(multi))
   34 		isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_internal,
   42 static __isl_keep DOM *FN(MULTI(BASE),peek_explicit_domain)(
   45 	if (FN(MULTI(BASE),check_has_explicit_domain)(multi) < 0)
   52 static __isl_give DOM *FN(MULTI(BASE),get_explicit_domain)(
   55 	return FN(DOM,copy)(FN(MULTI(BASE),peek_explicit_domain)(multi));
   55 	return FN(DOM,copy)(FN(MULTI(BASE),peek_explicit_domain)(multi));
   60 static __isl_give MULTI(BASE) *FN(MULTI(BASE),set_explicit_domain)(
   63 	if (FN(MULTI(BASE),check_has_explicit_domain)(multi) < 0)
   65 	multi = FN(MULTI(BASE),cow)(multi);
   68 	FN(DOM,free)(multi->u.dom);
   71 		return FN(MULTI(BASE),free)(multi);
   74 	FN(MULTI(BASE),free)(multi);
   75 	FN(DOM,free)(dom);
   86 static __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_explicit_domain)(
   92 	dom = FN(MULTI(BASE),peek_explicit_domain)(src);
   93 	is_params = FN(DOM,is_params)(dom);
   95 		return FN(MULTI(BASE),free)(dst);
   97 	dom = FN(DOM,copy)(dom);
   99 		dst = FN(MULTI(BASE),intersect_domain)(dst, dom);
  103 		params = FN(DOM,params)(dom);
  104 		dst = FN(MULTI(BASE),intersect_params)(dst, params);
  112 static __isl_give MULTI(BASE) *FN(MULTI(BASE),copy_explicit_domain)(
  117 	dom = FN(MULTI(BASE),get_explicit_domain)(src);
  118 	dst = FN(MULTI(BASE),set_explicit_domain)(dst, dom);
  125 static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_explicit_domain_params)(
  130 	dom = FN(MULTI(BASE),get_explicit_domain)(multi);
  131 	dom = FN(DOM,align_params)(dom, space);
  132 	multi = FN(MULTI(BASE),set_explicit_domain)(multi, dom);
  140 static __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_explicit_domain_space)(
  145 	dom = FN(MULTI(BASE),get_explicit_domain)(multi);
  146 	dom = FN(DOM,reset_equal_dim_space)(dom, space);
  147 	multi = FN(MULTI(BASE),set_explicit_domain)(multi, dom);
  154 static void FN(MULTI(BASE),free_explicit_domain)(__isl_keep MULTI(BASE) *multi)
  156 	if (FN(MULTI(BASE),check_has_explicit_domain)(multi) < 0)
  158 	FN(DOM,free)(multi->u.dom);
  163 static isl_bool FN(MULTI(BASE),equal_explicit_domain)(
  169 	if (FN(MULTI(BASE),check_has_explicit_domain)(multi1) < 0 ||
  170 	    FN(MULTI(BASE),check_has_explicit_domain)(multi2) < 0)
  172 	dom1 = FN(MULTI(BASE),get_explicit_domain)(multi1);
  173 	dom2 = FN(MULTI(BASE),get_explicit_domain)(multi2);
  174 	equal = FN(DOM,is_equal)(dom1, dom2);
  175 	FN(DOM,free)(dom1);
  176 	FN(DOM,free)(dom2);
  181 static isl_stat FN(MULTI(BASE),check_explicit_domain)(
  187 isl_stat FN(MULTI(BASE),check_explicit_domain)(__isl_keep MULTI(BASE) *multi)
  192 	if (FN(MULTI(BASE),check_has_explicit_domain)(multi) < 0)
  195 	space2 = FN(DOM,get_space)(multi->u.dom);
  202 		isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_internal,
tools/polly/lib/External/isl/isl_multi_floor.c
   14 __isl_give MULTI(BASE) *FN(MULTI(BASE),floor)(__isl_take MULTI(BASE) *multi)
   18 	multi = FN(MULTI(BASE),cow)(multi);
   23 		multi->u.p[i] = FN(EL,floor)(multi->u.p[i]);
   25 			return FN(MULTI(BASE),free)(multi);
tools/polly/lib/External/isl/isl_multi_gist.c
   16 __isl_give MULTI(BASE) *FN(MULTI(BASE),gist)(__isl_take MULTI(BASE) *multi,
   19 	return FN(FN(MULTI(BASE),apply),DOMBASE)(multi, context, &FN(EL,gist));
   19 	return FN(FN(MULTI(BASE),apply),DOMBASE)(multi, context, &FN(EL,gist));
   19 	return FN(FN(MULTI(BASE),apply),DOMBASE)(multi, context, &FN(EL,gist));
   25 __isl_give MULTI(BASE) *FN(MULTI(BASE),gist_params)(
   28 	return FN(MULTI(BASE),apply_set)(multi, context, &FN(EL,gist_params));
   28 	return FN(MULTI(BASE),apply_set)(multi, context, &FN(EL,gist_params));
tools/polly/lib/External/isl/isl_multi_hash.c
   14 uint32_t FN(MULTI(BASE),get_hash)(__isl_keep MULTI(BASE) *multi)
   25 		el_hash = FN(EL,get_hash)(multi->u.p[i]);
tools/polly/lib/External/isl/isl_multi_intersect.c
   16 static isl_bool FN(MULTI(BASE),compatible_domain)(
   22 	domain_space = FN(DOM,get_space)(domain);
   23 	space = FN(MULTI(BASE),get_space)(multi);
   34 static isl_stat FN(MULTI(BASE),check_compatible_domain)(
   39 	ok = FN(MULTI(BASE),compatible_domain)(multi, domain);
   43 		isl_die(FN(DOM,get_ctx)(domain), isl_error_invalid,
   59 static __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_intersect_aligned)(
   65 	if (FN(MULTI(BASE),check_compatible_domain)(multi, domain) < 0)
   67 	if (FN(MULTI(BASE),check_has_explicit_domain)(multi) < 0)
   69 	is_params = FN(DOM,is_params)(multi->u.dom);
   72 	multi_dom = FN(MULTI(BASE),get_explicit_domain)(multi);
   74 		domain = FN(DOM,intersect)(multi_dom, domain);
   78 		params = FN(DOM,params)(multi_dom);
   79 		domain = FN(DOM,intersect_params)(domain, params);
   81 	multi = FN(MULTI(BASE),set_explicit_domain)(multi, domain);
   84 	FN(MULTI(BASE),free)(multi);
   85 	FN(DOM,free)(domain);
   92 static __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_intersect)(
   95 	return FN(FN(MULTI(BASE),align_params),DOMBASE)(multi, domain,
   95 	return FN(FN(MULTI(BASE),align_params),DOMBASE)(multi, domain,
   96 				    FN(MULTI(BASE),domain_intersect_aligned));
  104 __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_domain)(
  107 	if (FN(MULTI(BASE),has_explicit_domain)(multi))
  108 		return FN(MULTI(BASE),domain_intersect)(multi, domain);
  109 	return FN(FN(MULTI(BASE),apply),DOMBASE)(multi, domain,
  109 	return FN(FN(MULTI(BASE),apply),DOMBASE)(multi, domain,
  110 					&FN(EL,intersect_domain));
  116 static __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_intersect_params_aligned)(
  121 	multi_dom = FN(MULTI(BASE),get_explicit_domain)(multi);
  122 	multi_dom = FN(DOM,intersect_params)(multi_dom, domain);
  123 	multi = FN(MULTI(BASE),set_explicit_domain)(multi, multi_dom);
  132 static __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_intersect_params)(
  135 	return FN(FN(MULTI(BASE),align_params),set)(multi, domain,
  135 	return FN(FN(MULTI(BASE),align_params),set)(multi, domain,
  136 			    FN(MULTI(BASE),domain_intersect_params_aligned));
  144 __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_params)(
  147 	if (FN(MULTI(BASE),has_explicit_domain)(multi))
  148 		return FN(MULTI(BASE),domain_intersect_params)(multi, domain);
  149 	return FN(MULTI(BASE),apply_set)(multi, domain,
  150 					&FN(EL,intersect_params));
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)
   29 static __isl_give MULTI(BASE) *FN(MULTI(BASE),init_explicit_domain)(
   38 static __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_explicit_domain)(
   48 static __isl_give MULTI(BASE) *FN(MULTI(BASE),copy_explicit_domain)(
   62 FN(MULTI(BASE),intersect_explicit_domain_product)(
   72 static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_explicit_domain_params)(
   83 static __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_explicit_domain_space)(
   95 isl_bool FN(MULTI(BASE),involves_explicit_domain_dims)(
  106 __isl_give MULTI(BASE) *FN(MULTI(BASE),insert_explicit_domain_dims)(
  117 __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_explicit_domain_dims)(
  128 __isl_give MULTI(BASE) *FN(MULTI(BASE),move_explicit_domain_dims)(
  139 static void FN(MULTI(BASE),free_explicit_domain)(__isl_keep MULTI(BASE) *multi)
  147 static isl_bool FN(MULTI(BASE),equal_explicit_domain)(
  153 static isl_stat FN(MULTI(BASE),check_explicit_domain)(
  161 static isl_stat FN(MULTI(BASE),check_explicit_domain)(
tools/polly/lib/External/isl/isl_multi_pw_aff_explicit_domain.c
   40 		return FN(isl_multi_pw_aff,free)(dst);
tools/polly/lib/External/isl/isl_multi_templ.c
   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)
   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,
   52 __isl_give isl_space *FN(MULTI(BASE),get_domain_space)(
   64 __isl_give MULTI(BASE) *FN(MULTI(BASE),alloc)(__isl_take isl_space *space)
   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)
  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,
  108 						    FN(EL,copy)(multi->u.p[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)
  124 	return FN(MULTI(BASE),dup)(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)
  148 		FN(EL,free)(multi->u.p[i]);
  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,
  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,
  181 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_dim_name)(
  187 	multi = FN(MULTI(BASE),cow)(multi);
  193 		return FN(MULTI(BASE),free)(multi);
  198 		multi->u.p[i] = FN(EL,set_dim_name)(multi->u.p[i],
  201 			return FN(MULTI(BASE),free)(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,
  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,
  238 	ctx = FN(MULTI(BASE),get_ctx)(multi);
  242 	return FN(EL,copy)(multi->u.p[pos]);
  248 static __isl_give MULTI(BASE) *FN(MULTI(BASE),restore)(
  251 	multi = FN(MULTI(BASE),cow)(multi);
  256 		isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
  259 	FN(EL,free)(multi->u.p[pos]);
  264 	FN(MULTI(BASE),free)(multi);
  265 	FN(EL,free)(el);
  274 static __isl_give MULTI(BASE) *FN(MULTI(BASE),restore_check_space)(
  279 	space = FN(MULTI(BASE),peek_space)(multi);
  280 	if (FN(EL,check_match_domain_space)(el, space) < 0)
  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)(
  292 	multi_space = FN(MULTI(BASE),get_space)(multi);
  293 	match = FN(EL,matching_params)(el, multi_space);
  297 		multi = FN(MULTI(BASE),align_params)(multi,
  298 						    FN(EL,get_space)(el));
  300 		multi_space = FN(MULTI(BASE),get_space)(multi);
  301 		el = FN(EL,align_params)(el, isl_space_copy(multi_space));
  304 	multi = FN(MULTI(BASE),restore_check_space)(multi, pos, el);
  311 	FN(MULTI(BASE),free)(multi);
  312 	FN(EL,free)(el);
  328 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_space_and_domain)(
  334 	multi = FN(MULTI(BASE),cow)(multi);
  339 		multi->u.p[i] = FN(EL,reset_domain_space)(multi->u.p[i],
  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)(
  369 	return FN(MULTI(BASE),reset_space_and_domain)(multi, space, domain);
  372 __isl_give MULTI(BASE) *FN(MULTI(BASE),reset_space)(
  378 	return FN(MULTI(BASE),reset_space_and_domain)(multi, space, domain);
  383 __isl_give MULTI(BASE) *FN(MULTI(BASE),set_dim_id)(
  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)(
  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)(
  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)(
  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)(
  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)(
  480 	multi = FN(MULTI(BASE),cow)(multi);
  485 		multi->u.p[i] = FN(EL,realign_domain)(multi->u.p[i],
  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)(
  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))(
  571 	n = FN(FN(LIST(EL),n),BASE)(list);
  571 	n = FN(FN(LIST(EL),n),BASE)(list);
  577 		EL *el = FN(LIST(EL),peek)(list, i);
  578 		space = isl_space_align_params(space, FN(EL,get_space)(el));
  580 	multi = FN(MULTI(BASE),alloc)(isl_space_copy(space));
  582 		EL *el = FN(FN(LIST(EL),get),BASE)(list, i);
  582 		EL *el = FN(FN(LIST(EL),get),BASE)(list, i);
  583 		el = FN(EL,align_params)(el, isl_space_copy(space));
  584 		multi = FN(MULTI(BASE),restore_check_space)(multi, i, el);
  588 	FN(LIST(EL),free)(list);
  592 	FN(LIST(EL),free)(list);
  600 __isl_give MULTI(BASE) *FN(MULTI(BASE),identity)(__isl_take isl_space *space)
  619 	multi = FN(MULTI(BASE),alloc)(isl_space_copy(space));
  631 		el = FN(EL,var_on_domain)(isl_local_space_copy(ls),
  633 		multi = FN(FN(MULTI(BASE),set),BASE)(multi, i, el);
  633 		multi = FN(FN(MULTI(BASE),set),BASE)(multi, i, el);
  649 __isl_give MULTI(BASE) *FN(MULTI(BASE),zero)(__isl_take isl_space *space)
  658 	multi = FN(MULTI(BASE),alloc)(isl_space_copy(space));
  669 		el = FN(EL,zero_on_domain)(ls);
  672 			multi = FN(FN(MULTI(BASE),set),BASE)(multi, i,
  672 			multi = FN(FN(MULTI(BASE),set),BASE)(multi, i,
  673 							    FN(EL,copy)(el));
  675 		FN(EL,free)(el);
  692 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),from),BASE)(__isl_take EL *el)
  692 __isl_give MULTI(BASE) *FN(FN(MULTI(BASE),from),BASE)(__isl_take EL *el)
  697 	space = FN(EL,get_space(el));
  702 	multi = FN(MULTI(BASE),alloc)(space);
  703 	multi = FN(FN(MULTI(BASE),set),BASE)(multi, 0, el);
  703 	multi = FN(FN(MULTI(BASE),set),BASE)(multi, 0, el);
  709 __isl_give MULTI(BASE) *FN(MULTI(BASE),drop_dims)(
  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);
  732 			FN(EL,free)(multi->u.p[first + i]);
  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,
  749 		multi->u.p[i] = FN(EL,drop_dims)(multi->u.p[i], type, first, n);
  751 			return FN(MULTI(BASE),free)(multi);
  759 static __isl_give MULTI(BASE) *FN(MULTI(BASE),align_params_multi_multi_and)(
  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)(
  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)(
  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)
  861 __isl_give MULTI(BASE) *FN(MULTI(BASE),range_factor_domain)(
  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)(
  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)(
  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)(
  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);
  963 		el = FN(EL,insert_dims)(el, isl_dim_in, in1, in2);
  964 		el = FN(EL,reset_domain_space)(el, isl_space_copy(space));
  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);
  970 		el = FN(EL,insert_dims)(el, isl_dim_in, 0, in1);
  971 		el = FN(EL,reset_domain_space)(el, isl_space_copy(space));
  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)(
  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)(
 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)(
 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)(
 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)(
 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)(
 1140 		isl_die(FN(MULTI(BASE),get_ctx)(multi1), isl_error_invalid,
 1148 static __isl_give MULTI(BASE) *FN(MULTI(BASE),bin_op)(
 1159 static __isl_give MULTI(BASE) *FN(MULTI(BASE),bin_op)(
 1165 	multi1 = FN(MULTI(BASE),cow)(multi1);
 1166 	if (FN(MULTI(BASE),check_equal_space)(multi1, multi2) < 0)
 1171 						FN(EL,copy)(multi2->u.p[i]));
 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)(
 1195 	return FN(MULTI(BASE),bin_op)(multi1, multi2, &FN(EL,add));
 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,
 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)(
 1214 	return FN(MULTI(BASE),bin_op)(multi1, multi2, &FN(EL,sub));
 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,
 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,
 1245 	multi = FN(MULTI(BASE),cow)(multi);
 1250 		multi->u.p[i] = FN(EL,scale_val)(multi->u.p[i],
 1260 	return FN(MULTI(BASE),free)(multi);
 1265 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_down_val)(
 1285 	multi = FN(MULTI(BASE),cow)(multi);
 1290 		multi->u.p[i] = FN(EL,scale_down_val)(multi->u.p[i],
 1300 	return FN(MULTI(BASE),free)(multi);
 1306 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_multi_val)(
 1319 	multi = FN(MULTI(BASE),cow)(multi);
 1327 		multi->u.p[i] = FN(EL,scale_val)(multi->u.p[i], v);
 1336 	return FN(MULTI(BASE),free)(multi);
 1342 __isl_give MULTI(BASE) *FN(MULTI(BASE),scale_down_multi_val)(
 1355 	multi = FN(MULTI(BASE),cow)(multi);
 1363 		multi->u.p[i] = FN(EL,scale_down_val)(multi->u.p[i], v);
 1372 	return FN(MULTI(BASE),free)(multi);
 1378 __isl_give MULTI(BASE) *FN(MULTI(BASE),mod_multi_val)(
 1391 	multi = FN(MULTI(BASE),cow)(multi);
 1399 		multi->u.p[i] = FN(EL,mod_val)(multi->u.p[i], v);
 1408 	return FN(MULTI(BASE),free)(multi);
 1417 __isl_give MULTI(BASE) *FN(MULTI(BASE),move_dims)(__isl_take MULTI(BASE) *multi,
 1432 		isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
 1434 			return FN(MULTI(BASE),free)(multi));
 1436 		isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
 1438 			return FN(MULTI(BASE),free)(multi));
 1440 		isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_invalid,
 1442 			return FN(MULTI(BASE),free)(multi));
 1444 		isl_die(FN(MULTI(BASE),get_ctx)(multi), isl_error_unsupported,
 1446 			return FN(MULTI(BASE),free)(multi));
 1448 	multi = FN(MULTI(BASE),cow)(multi);
 1455 		return FN(MULTI(BASE),free)(multi);
 1456 	if (FN(MULTI(BASE),has_explicit_domain)(multi))
 1457 		multi = FN(MULTI(BASE),move_explicit_domain_dims)(multi,
 1463 		multi->u.p[i] = FN(EL,move_dims)(multi->u.p[i],
 1467 			return FN(MULTI(BASE),free)(multi);
 1477 __isl_give MULTI(BASE) *FN(MULTI(BASE),from_range)(
 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,
 1513 		equal = FN(EL,plain_is_equal)(multi1->u.p[i], multi2->u.p[i]);
 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)
 1540 		isl_bool has_nan = FN(EL,involves_nan)(multi->u.p[i]);
 1553 __isl_give isl_set *FN(MULTI(BASE),domain)(__isl_take MULTI(BASE) *multi)
 1561 	if (FN(MULTI(BASE),has_explicit_domain)(multi)) {
 1562 		dom = FN(MULTI(BASE),get_explicit_domain)(multi);
 1563 		FN(MULTI(BASE),free)(multi);
 1567 	dom = isl_set_universe(FN(MULTI(BASE),get_domain_space)(multi));
 1571 		dom_i = FN(EL,domain)(FN(FN(MULTI(BASE),get),BASE)(multi, i));
 1571 		dom_i = FN(EL,domain)(FN(FN(MULTI(BASE),get),BASE)(multi, i));
 1571 		dom_i = FN(EL,domain)(FN(FN(MULTI(BASE),get),BASE)(multi, i));
 1575 	FN(MULTI(BASE),free)(multi);
 1583 __isl_give MULTI(BASE) *FN(MULTI(BASE),neg)(__isl_take MULTI(BASE) *multi)
 1587 	multi = FN(MULTI(BASE),cow)(multi);
 1592 		multi->u.p[i] = FN(EL,neg)(multi->u.p[i]);
 1594 			return FN(MULTI(BASE),free)(multi);
tools/polly/lib/External/isl/isl_multi_templ.h
   29 __isl_keep isl_space *FN(MULTI(BASE),peek_space)(__isl_keep MULTI(BASE) *multi);