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

References

tools/polly/lib/External/isl/isl_union_eval.c
   16 static __isl_give isl_val *FN(UNION,eval_void)(__isl_take UNION *u,
   22 	FN(UNION,free)(u);
   29 static int FN(UNION,has_domain_space)(const void *entry, const void *val)
   41 __isl_give isl_val *FN(UNION,eval)(__isl_take UNION *u,
   56 		return FN(UNION,eval_void)(u, pnt);
   63 				    hash, &FN(UNION,has_domain_space),
   70 		v = FN(PART,eval)(FN(PART,copy)(entry->data), pnt);
   70 		v = FN(PART,eval)(FN(PART,copy)(entry->data), pnt);
   72 	FN(UNION,free)(u);
   75 	FN(UNION,free)(u);
tools/polly/lib/External/isl/isl_union_multi.c
   54 static isl_stat FN(UNION,call_on_group)(void **entry, void *user)
   65 static isl_stat FN(UNION,foreach_group)(__isl_keep UNION *u,
   75 				      &FN(UNION,call_on_group), &data);
   82 static isl_stat FN(UNION,count_part)(__isl_keep S(UNION,group) *group,
   96 int FN(FN(UNION,n),BASE)(__isl_keep UNION *u)
   96 int FN(FN(UNION,n),BASE)(__isl_keep UNION *u)
  101 	if (FN(UNION,foreach_group)(u, &FN(UNION,count_part), &n) < 0)
  101 	if (FN(UNION,foreach_group)(u, &FN(UNION,count_part), &n) < 0)
  109 static isl_stat FN(UNION,free_group_entry)(void **entry, void *user)
  113 	FN(PART,free)(part);
  119 static __isl_null S(UNION,group) *FN(UNION,group_free)(
  129 				&FN(UNION,free_group_entry), NULL);
  139 static __isl_give S(UNION,group) *FN(UNION,group_alloc)(
  153 		return FN(UNION,group_free)(group);
  163 static int FN(UNION,has_space)(const void *entry, const void *val)
  174 static __isl_give S(UNION,group) *FN(UNION,group_cow)(
  186 static isl_stat FN(UNION,call_on_copy)(void **entry, void *user)
  191 	part = FN(PART,copy)(part);
  199 static isl_stat FN(UNION,group_call_on_copy)(__isl_keep S(UNION,group) *group,
  209 				      &FN(UNION,call_on_copy), user);
  212 isl_stat FN(FN(UNION,foreach),BASE)(__isl_keep UNION *u,
  212 isl_stat FN(FN(UNION,foreach),BASE)(__isl_keep UNION *u,
  220 	return FN(UNION,foreach_group)(u, &FN(UNION,group_call_on_copy), &data);
  220 	return FN(UNION,foreach_group)(u, &FN(UNION,group_call_on_copy), &data);
  226 static int FN(UNION,group_has_domain_space)(const void *entry, const void *val)
  244 static struct isl_hash_table_entry *FN(UNION,find_part_entry)(
  255 	ctx = FN(UNION,get_ctx)(u);
  258 			    &FN(UNION,group_has_domain_space), space, reserve);
  263 		group = FN(UNION,group_alloc)(domain, 1);
  268 			group = FN(UNION,group_cow)(group);
  274 				&FN(UNION,has_space), space, reserve);
  286 static __isl_give UNION *FN(UNION,remove_part_entry)(__isl_take UNION *u,
  296 		return FN(UNION,free)(u);
  299 	ctx = FN(UNION,get_ctx)(u);
  302 			    &FN(UNION,group_has_domain_space), part->dim, 0);
  305 			return FN(UNION,free)(u));
  308 	FN(PART,free)(part);
  314 	FN(UNION,group_free)(group);
  321 static isl_bool FN(UNION,disjoint_domain)(__isl_keep PART *part1,
  329 	dom1 = FN(PART,domain)(FN(PART,copy)(part1));
  329 	dom1 = FN(PART,domain)(FN(PART,copy)(part1));
  330 	dom2 = FN(PART,domain)(FN(PART,copy)(part2));
  330 	dom2 = FN(PART,domain)(FN(PART,copy)(part2));
  341 static isl_stat FN(UNION,check_disjoint_domain_entry)(void **entry, void *user)
  354 	disjoint = FN(UNION,disjoint_domain)(part, other);
  358 		isl_die(FN(PART,get_ctx)(part), isl_error_invalid,
  371 static isl_stat FN(UNION,check_disjoint_domain_other)(__isl_keep UNION *u,
  381 	ctx = FN(UNION,get_ctx)(u);
  384 			    &FN(UNION,group_has_domain_space), part->dim, 0);
  389 			      &FN(UNION,check_disjoint_domain_entry), part);
  396 static isl_stat FN(UNION,check_disjoint_domain)(__isl_keep PART *part1,
  401 	disjoint = FN(UNION,disjoint_domain)(part1, part2);
  405 		isl_die(FN(PART,get_ctx)(part1), isl_error_invalid,
  423 static isl_stat FN(UNION,group_call_inplace)(__isl_keep S(UNION,group) *group,
  440 static isl_stat FN(UNION,foreach_inplace)(__isl_keep UNION *u,
  445 	return FN(UNION,foreach_group)(u, &FN(UNION,group_call_inplace), &data);
  445 	return FN(UNION,foreach_group)(u, &FN(UNION,group_call_inplace), &data);
  451 static isl_bool FN(UNION,has_single_reference)(__isl_keep UNION *u)
  458 static isl_stat FN(UNION,free_u_entry)(void **entry, void *user)
  461 	FN(UNION,group_free)(group);
tools/polly/lib/External/isl/isl_union_neg.c
   15 static __isl_give PART *FN(UNION,neg_entry)(__isl_take PART *part, void *user)
   17 	return FN(PART,neg)(part);
   22 __isl_give UNION *FN(UNION,neg)(__isl_take UNION *u)
   24 	return FN(UNION,transform_inplace)(u, &FN(UNION,neg_entry), NULL);
   24 	return FN(UNION,transform_inplace)(u, &FN(UNION,neg_entry), NULL);
tools/polly/lib/External/isl/isl_union_single.c
   32 int FN(FN(UNION,n),BASE)(__isl_keep UNION *u)
   32 int FN(FN(UNION,n),BASE)(__isl_keep UNION *u)
   43 static isl_stat FN(UNION,call_on_copy)(void **entry, void *user)
   48 	part = FN(PART,copy)(part);
   54 isl_stat FN(FN(UNION,foreach),BASE)(__isl_keep UNION *u,
   54 isl_stat FN(FN(UNION,foreach),BASE)(__isl_keep UNION *u,
   63 				      &FN(UNION,call_on_copy), &data);
   68 static int FN(UNION,has_same_domain_space)(const void *entry, const void *val)
   89 static struct isl_hash_table_entry *FN(UNION,find_part_entry)(
  101 	ctx = FN(UNION,get_ctx)(u);
  104 			&FN(UNION,has_same_domain_space), space, reserve);
  118 	isl_die(FN(UNION,get_ctx)(u), isl_error_invalid,
  125 static __isl_give UNION *FN(UNION,remove_part_entry)(__isl_take UNION *u,
  131 		return FN(UNION,free)(u);
  133 	ctx = FN(UNION,get_ctx)(u);
  135 	FN(PART,free)(part_entry->data);
  147 static isl_stat FN(UNION,check_disjoint_domain_other)(__isl_keep UNION *u,
  159 static isl_stat FN(UNION,check_disjoint_domain)(__isl_keep PART *part1,
  162 	isl_die(FN(PART,get_ctx)(part1), isl_error_invalid,
  169 static isl_stat FN(UNION,foreach_inplace)(__isl_keep UNION *u,
  176 	ctx = FN(UNION,get_ctx)(u);
  183 static isl_bool FN(UNION,has_single_reference)(__isl_keep UNION *u)
  190 static isl_stat FN(UNION,free_u_entry)(void **entry, void *user)
  193 	FN(PART,free)(part);
tools/polly/lib/External/isl/isl_union_templ.c
   13 __isl_give UNION *FN(UNION,cow)(__isl_take UNION *u);
   15 isl_ctx *FN(UNION,get_ctx)(__isl_keep UNION *u)
   22 static __isl_keep isl_space *FN(UNION,peek_space)(__isl_keep UNION *u)
   31 __isl_give isl_space *FN(UNION,get_space)(__isl_keep UNION *u)
   33 	return isl_space_copy(FN(UNION,peek_space)(u));
   39 unsigned FN(UNION,dim)(__isl_keep UNION *u, enum isl_dim_type type)
   45 		isl_die(FN(UNION,get_ctx)(u), isl_error_invalid,
   55 int FN(UNION,find_dim_by_name)(__isl_keep UNION *u, enum isl_dim_type type,
   64 static __isl_give UNION *FN(UNION,alloc)(__isl_take isl_space *dim,
   67 static __isl_give UNION *FN(UNION,alloc)(__isl_take isl_space *dim, int size)
   86 		return FN(UNION,free)(u);
   95 __isl_give UNION *FN(UNION,ZERO)(__isl_take isl_space *dim, enum isl_fold type)
   97 	return FN(UNION,alloc)(dim, type, 16);
  100 __isl_give UNION *FN(UNION,ZERO)(__isl_take isl_space *dim)
  102 	return FN(UNION,alloc)(dim, 16);
  106 __isl_give UNION *FN(UNION,copy)(__isl_keep UNION *u)
  120 __isl_give PART *FN(FN(UNION,extract),BASE)(__isl_keep UNION *u,
  120 __isl_give PART *FN(FN(UNION,extract),BASE)(__isl_keep UNION *u,
  125 	space = isl_space_replace_params(space, FN(UNION,peek_space)(u));
  127 	entry = FN(UNION,find_part_entry)(u, space, 0);
  132 		return FN(PART,ZERO)(space, u->type);
  134 		return FN(PART,ZERO)(space);
  137 	return FN(PART,copy)(entry->data);
  150 static __isl_give UNION *FN(UNION,add_part_generic)(__isl_take UNION *u,
  159 	empty = FN(PART,IS_ZERO)(part);
  163 		FN(PART,free)(part);
  167 	u = FN(UNION,align_params)(u, FN(PART,get_space)(part));
  167 	u = FN(UNION,align_params)(u, FN(PART,get_space)(part));
  168 	part = FN(PART,align_params)(part, FN(UNION,get_space)(u));
  168 	part = FN(PART,align_params)(part, FN(UNION,get_space)(u));
  170 	u = FN(UNION,cow)(u);
  175 	if (FN(UNION,check_disjoint_domain_other)(u, part) < 0)
  177 	entry = FN(UNION,find_part_entry)(u, part->dim, 1);
  185 		    FN(UNION,check_disjoint_domain)(entry->data, part) < 0)
  187 		entry->data = FN(PART,union_add_)(entry->data,
  188 						FN(PART,copy)(part));
  191 		empty = FN(PART,IS_ZERO)(part);
  195 			u = FN(UNION,remove_part_entry)(u, entry);
  196 		FN(PART,free)(part);
  201 	FN(PART,free)(part);
  202 	FN(UNION,free)(u);
  209 __isl_give UNION *FN(FN(UNION,add),BASE)(__isl_take UNION *u,
  209 __isl_give UNION *FN(FN(UNION,add),BASE)(__isl_take UNION *u,
  212 	return FN(UNION,add_part_generic)(u, part, 1);
  219 static __isl_give UNION *FN(UNION,alloc_same_size_on_space)(__isl_keep UNION *u,
  224 	return FN(UNION,alloc)(space, u->type, u->table.n);
  232 static __isl_give UNION *FN(UNION,alloc_same_size_on_space)(__isl_keep UNION *u,
  237 	return FN(UNION,alloc)(space, u->table.n);
  247 static __isl_give UNION *FN(UNION,alloc_same_size)(__isl_keep UNION *u)
  249 	return FN(UNION,alloc_same_size_on_space)(u, FN(UNION,get_space)(u));
  249 	return FN(UNION,alloc_same_size_on_space)(u, FN(UNION,get_space)(u));
  266 static isl_stat FN(UNION,transform_entry)(__isl_take PART *part, void *user)
  271 	data->res = FN(FN(UNION,add),BASE)(data->res, part);
  271 	data->res = FN(FN(UNION,add),BASE)(data->res, part);
  281 static __isl_give UNION *FN(UNION,transform_space)(__isl_take UNION *u,
  287 	data.res = FN(UNION,alloc_same_size_on_space)(u, space);
  288 	if (FN(FN(UNION,foreach),BASE)(u,
  288 	if (FN(FN(UNION,foreach),BASE)(u,
  289 					&FN(UNION,transform_entry), &data) < 0)
  290 		data.res = FN(UNION,free)(data.res);
  291 	FN(UNION,free)(u);
  298 static __isl_give UNION *FN(UNION,transform)(__isl_take UNION *u,
  301 	return FN(UNION,transform_space)(u, FN(UNION,get_space)(u), fn, user);
  301 	return FN(UNION,transform_space)(u, FN(UNION,get_space)(u), fn, user);
  306 static isl_stat FN(UNION,transform_inplace_entry)(void **part, void *user)
  323 static __isl_give UNION *FN(UNION,transform_inplace)(__isl_take UNION *u,
  328 	single_ref = FN(UNION,has_single_reference)(u);
  330 		return FN(UNION,free)(u);
  333 		if (FN(UNION,foreach_inplace)(u,
  334 				&FN(UNION,transform_inplace_entry), &data) < 0)
  335 			return FN(UNION,free)(u);
  338 	return FN(UNION,transform)(u, fn, user);
  344 static __isl_give PART *FN(UNION,copy_part)(__isl_take PART *part, void *user)
  349 __isl_give UNION *FN(UNION,dup)(__isl_keep UNION *u)
  351 	u = FN(UNION,copy)(u);
  352 	return FN(UNION,transform)(u, &FN(UNION,copy_part), NULL);
  352 	return FN(UNION,transform)(u, &FN(UNION,copy_part), NULL);
  355 __isl_give UNION *FN(UNION,cow)(__isl_take UNION *u)
  363 	return FN(UNION,dup)(u);
  366 __isl_null UNION *FN(UNION,free)(__isl_take UNION *u)
  375 				&FN(UNION,free_u_entry), NULL);
  382 static __isl_give PART *FN(UNION,align_entry)(__isl_take PART *part, void *user)
  387 				    FN(PART,get_domain_space)(part));
  388 	return FN(PART,realign_domain)(part, exp);
  393 static __isl_give UNION *FN(UNION,realign_domain)(__isl_take UNION *u,
  402 	u = FN(UNION,transform_space)(u, space, &FN(UNION,align_entry), r);
  402 	u = FN(UNION,transform_space)(u, space, &FN(UNION,align_entry), r);
  406 	FN(UNION,free)(u);
  413 __isl_give UNION *FN(UNION,align_params)(__isl_take UNION *u,
  433 	return FN(UNION,realign_domain)(u, r);
  436 	FN(UNION,free)(u);
  443 static isl_stat FN(UNION,union_add_part)(__isl_take PART *part, void *user)
  447 	*u = FN(UNION,add_part_generic)(*u, part, 0);
  462 static __isl_give UNION *FN(UNION,union_add_)(__isl_take UNION *u1,
  465 	u1 = FN(UNION,align_params)(u1, FN(UNION,get_space)(u2));
  465 	u1 = FN(UNION,align_params)(u1, FN(UNION,get_space)(u2));
  466 	u2 = FN(UNION,align_params)(u2, FN(UNION,get_space)(u1));
  466 	u2 = FN(UNION,align_params)(u2, FN(UNION,get_space)(u1));
  468 	u1 = FN(UNION,cow)(u1);
  473 	if (FN(FN(UNION,foreach),BASE)(u2, &FN(UNION,union_add_part), &u1) < 0)
  473 	if (FN(FN(UNION,foreach),BASE)(u2, &FN(UNION,union_add_part), &u1) < 0)
  473 	if (FN(FN(UNION,foreach),BASE)(u2, &FN(UNION,union_add_part), &u1) < 0)
  476 	FN(UNION,free)(u2);
  480 	FN(UNION,free)(u1);
  481 	FN(UNION,free)(u2);
  485 __isl_give UNION *FN(FN(UNION,from),BASE)(__isl_take PART *part)
  485 __isl_give UNION *FN(FN(UNION,from),BASE)(__isl_take PART *part)
  493 	dim = FN(PART,get_space)(part);
  497 	u = FN(UNION,ZERO)(dim, part->type);
  499 	u = FN(UNION,ZERO)(dim);
  501 	u = FN(FN(UNION,add),BASE)(u, part);
  501 	u = FN(FN(UNION,add),BASE)(u, part);
  516 static isl_stat FN(UNION,match_bin_entry)(__isl_take PART *part, void *user)
  523 	space = FN(PART,get_space)(part);
  524 	entry2 = FN(UNION,find_part_entry)(data->u2, space, 0);
  529 		FN(PART,free)(part);
  536 		isl_die(FN(UNION,get_ctx)(data->u2), isl_error_invalid,
  540 	part = data->fn(part, FN(PART, copy)(entry2->data));
  542 	data->res = FN(FN(UNION,add),BASE)(data->res, part);
  542 	data->res = FN(FN(UNION,add),BASE)(data->res, part);
  548 	FN(PART,free)(part);
  555 static __isl_give UNION *FN(UNION,match_bin_op)(__isl_take UNION *u1,
  562 static __isl_give UNION *FN(UNION,match_bin_op)(__isl_take UNION *u1,
  568 	u1 = FN(UNION,align_params)(u1, FN(UNION,get_space)(u2));
  568 	u1 = FN(UNION,align_params)(u1, FN(UNION,get_space)(u2));
  569 	u2 = FN(UNION,align_params)(u2, FN(UNION,get_space)(u1));
  569 	u2 = FN(UNION,align_params)(u2, FN(UNION,get_space)(u1));
  575 	data.res = FN(UNION,alloc_same_size)(u1);
  576 	if (FN(FN(UNION,foreach),BASE)(u1,
  576 	if (FN(FN(UNION,foreach),BASE)(u1,
  577 				    &FN(UNION,match_bin_entry), &data) < 0)
  580 	FN(UNION,free)(u1);
  581 	FN(UNION,free)(u2);
  584 	FN(UNION,free)(u1);
  585 	FN(UNION,free)(u2);
  586 	FN(UNION,free)(data.res);
  596 __isl_give UNION *FN(UNION,add)(__isl_take UNION *u1, __isl_take UNION *u2)
  599 	return FN(UNION,union_add_)(u1, u2);
  601 	return FN(UNION,match_bin_op)(u1, u2, &FN(PART,add));
  601 	return FN(UNION,match_bin_op)(u1, u2, &FN(PART,add));
  608 __isl_give UNION *FN(UNION,sub)(__isl_take UNION *u1, __isl_take UNION *u2)
  610 	return FN(UNION,match_bin_op)(u1, u2, &FN(PART,sub));
  610 	return FN(UNION,match_bin_op)(u1, u2, &FN(PART,sub));
  619 static __isl_give PART *FN(UNION,any_set_entry)(__isl_take PART *part,
  629 static __isl_give UNION *FN(UNION,any_set_op)(__isl_take UNION *u,
  635 	u = FN(UNION,align_params)(u, isl_set_get_space(set));
  636 	set = isl_set_align_params(set, FN(UNION,get_space)(u));
  642 	u = FN(UNION,transform)(u, &FN(UNION,any_set_entry), &data);
  642 	u = FN(UNION,transform)(u, &FN(UNION,any_set_entry), &data);
  646 	FN(UNION,free)(u);
  653 __isl_give UNION *FN(UNION,intersect_params)(__isl_take UNION *u,
  656 	return FN(UNION,any_set_op)(u, set, &FN(PW,intersect_params));
  656 	return FN(UNION,any_set_op)(u, set, &FN(PW,intersect_params));
  662 __isl_give UNION *FN(UNION,gist_params)(__isl_take UNION *u,
  665 	return FN(UNION,any_set_op)(u, set, &FN(PW,gist_params));
  665 	return FN(UNION,any_set_op)(u, set, &FN(PW,gist_params));
  674 static int FN(UNION,set_has_dim)(const void *entry, const void *val)
  686 static isl_stat FN(UNION,match_domain_entry)(__isl_take PART *part, void *user)
  693 	space = FN(PART,get_domain_space)(part);
  696 				     hash, &FN(UNION,set_has_dim), space, 0);
  699 		FN(PART,free)(part);
  705 	data->res = FN(FN(UNION,add),BASE)(data->res, part);
  705 	data->res = FN(FN(UNION,add),BASE)(data->res, part);
  716 static __isl_give UNION *FN(UNION,match_domain_op)(__isl_take UNION *u,
  722 	u = FN(UNION,align_params)(u, isl_union_set_get_space(uset));
  723 	uset = isl_union_set_align_params(uset, FN(UNION,get_space)(u));
  729 	data.res = FN(UNION,alloc_same_size)(u);
  730 	if (FN(FN(UNION,foreach),BASE)(u,
  730 	if (FN(FN(UNION,foreach),BASE)(u,
  731 				   &FN(UNION,match_domain_entry), &data) < 0)
  734 	FN(UNION,free)(u);
  738 	FN(UNION,free)(u);
  740 	FN(UNION,free)(data.res);
  748 __isl_give UNION *FN(UNION,intersect_domain)(__isl_take UNION *u,
  752 		return FN(UNION,intersect_params)(u,
  754 	return FN(UNION,match_domain_op)(u, uset, &FN(PW,intersect_domain));
  754 	return FN(UNION,match_domain_op)(u, uset, &FN(PW,intersect_domain));
  761 static __isl_give PART *FN(UNION,subtract_domain_entry)(__isl_take PART *part,
  768 	space = FN(PART,get_domain_space)(part);
  770 	return FN(PART,subtract_domain)(part, set);
  775 __isl_give UNION *FN(UNION,subtract_domain)(__isl_take UNION *u,
  778 	u = FN(UNION,transform)(u, &FN(UNION,subtract_domain_entry), uset);
  778 	u = FN(UNION,transform)(u, &FN(UNION,subtract_domain_entry), uset);
  783 __isl_give UNION *FN(UNION,gist)(__isl_take UNION *u,
  787 		return FN(UNION,gist_params)(u, isl_set_from_union_set(uset));
  788 	return FN(UNION,match_domain_op)(u, uset, &FN(PW,gist));
  788 	return FN(UNION,match_domain_op)(u, uset, &FN(PW,gist));
  795 static isl_stat FN(UNION,coalesce_entry)(void **entry, void *user)
  800 	part = FN(PART,copy)(*part_p);
  801 	part = FN(PW,coalesce)(part);
  804 	FN(PART,free)(*part_p);
  810 __isl_give UNION *FN(UNION,coalesce)(__isl_take UNION *u)
  812 	if (FN(UNION,foreach_inplace)(u, &FN(UNION,coalesce_entry), NULL) < 0)
  812 	if (FN(UNION,foreach_inplace)(u, &FN(UNION,coalesce_entry), NULL) < 0)
  817 	FN(UNION,free)(u);
  821 static isl_stat FN(UNION,domain_entry)(__isl_take PART *part, void *user)
  825 	*uset = isl_union_set_add_set(*uset, FN(PART,domain)(part));
  830 __isl_give isl_union_set *FN(UNION,domain)(__isl_take UNION *u)
  834 	uset = isl_union_set_empty(FN(UNION,get_space)(u));
  835 	if (FN(FN(UNION,foreach),BASE)(u, &FN(UNION,domain_entry), &uset) < 0)
  835 	if (FN(FN(UNION,foreach),BASE)(u, &FN(UNION,domain_entry), &uset) < 0)
  835 	if (FN(FN(UNION,foreach),BASE)(u, &FN(UNION,domain_entry), &uset) < 0)
  838 	FN(UNION,free)(u);
  843 	FN(UNION,free)(u);
  850 static __isl_give UNION *FN(UNION,negate_type)(__isl_take UNION *u)
  852 	u = FN(UNION,cow)(u);
  862 static __isl_give UNION *FN(UNION,negate_type)(__isl_take UNION *u)
  870 static __isl_give PART *FN(UNION,scale_val_entry)(__isl_take PART *part,
  875 	return FN(PART,scale_val)(part, isl_val_copy(v));
  880 __isl_give UNION *FN(UNION,scale_val)(__isl_take UNION *u,
  892 		isl_space *space = FN(UNION,get_space)(u);
  894 		zero = FN(UNION,ZERO)(space, u->type);
  896 		zero = FN(UNION,ZERO)(space);
  898 		FN(UNION,free)(u);
  907 	u = FN(UNION,transform_inplace)(u, &FN(UNION,scale_val_entry), v);
  907 	u = FN(UNION,transform_inplace)(u, &FN(UNION,scale_val_entry), v);
  909 		u = FN(UNION,negate_type)(u);
  915 	FN(UNION,free)(u);
  921 static __isl_give PART *FN(UNION,scale_down_val_entry)(__isl_take PART *part,
  926 	return FN(PART,scale_down_val)(part, isl_val_copy(v));
  931 __isl_give UNION *FN(UNION,scale_down_val)(__isl_take UNION *u,
  948 	u = FN(UNION,transform_inplace)(u, &FN(UNION,scale_down_val_entry), v);
  948 	u = FN(UNION,transform_inplace)(u, &FN(UNION,scale_down_val_entry), v);
  950 		u = FN(UNION,negate_type)(u);
  956 	FN(UNION,free)(u);
  966 static isl_stat FN(UNION,plain_is_equal_entry)(void **entry, void *user)
  972 	entry2 = FN(UNION,find_part_entry)(data->u2, pw->dim, 0);
  981 	data->is_equal = FN(PW,plain_is_equal)(pw, entry2->data);
  988 isl_bool FN(UNION,plain_is_equal)(__isl_keep UNION *u1, __isl_keep UNION *u2)
  999 	n1 = FN(FN(UNION,n),BASE)(u1);
  999 	n1 = FN(FN(UNION,n),BASE)(u1);
 1000 	n2 = FN(FN(UNION,n),BASE)(u2);
 1000 	n2 = FN(FN(UNION,n),BASE)(u2);
 1006 	u1 = FN(UNION,copy)(u1);
 1007 	u2 = FN(UNION,copy)(u2);
 1008 	u1 = FN(UNION,align_params)(u1, FN(UNION,get_space)(u2));
 1008 	u1 = FN(UNION,align_params)(u1, FN(UNION,get_space)(u2));
 1009 	u2 = FN(UNION,align_params)(u2, FN(UNION,get_space)(u1));
 1009 	u2 = FN(UNION,align_params)(u2, FN(UNION,get_space)(u1));
 1014 	if (FN(UNION,foreach_inplace)(u1,
 1015 			       &FN(UNION,plain_is_equal_entry), &data) < 0 &&
 1019 	FN(UNION,free)(u1);
 1020 	FN(UNION,free)(u2);
 1024 	FN(UNION,free)(u1);
 1025 	FN(UNION,free)(u2);
 1033 static isl_stat FN(UNION,involves_nan_entry)(void **entry, void *user)
 1038 	*nan = FN(PW,involves_nan)(pw);
 1047 isl_bool FN(UNION,involves_nan)(__isl_keep UNION *u)
 1054 	if (FN(UNION,foreach_inplace)(u,
 1055 				    &FN(UNION,involves_nan_entry), &nan) < 0 &&
 1073 static __isl_give PART *FN(UNION,drop_dims_entry)(__isl_take PART *part,
 1078 	return FN(PART,drop_dims)(part, data->type, data->first, data->n);
 1084 __isl_give UNION *FN(UNION,drop_dims)( __isl_take UNION *u,
 1094 		isl_die(FN(UNION,get_ctx)(u), isl_error_invalid,
 1096 			return FN(UNION,free)(u));
 1098 	space = FN(UNION,get_space)(u);
 1100 	return FN(UNION,transform_space)(u, space, &FN(UNION,drop_dims_entry),
 1100 	return FN(UNION,transform_space)(u, space, &FN(UNION,drop_dims_entry),
 1116 static __isl_give PART *FN(UNION,set_dim_name_entry)(__isl_take PART *part,
 1121 	return FN(PART,set_dim_name)(part, isl_dim_param, data->pos, data->s);
 1127 __isl_give UNION *FN(UNION,set_dim_name)(__isl_take UNION *u,
 1137 		isl_die(FN(UNION,get_ctx)(u), isl_error_invalid,
 1139 			return FN(UNION,free)(u));
 1141 	space = FN(UNION,get_space)(u);
 1143 	return FN(UNION,transform_space)(u, space,
 1144 					&FN(UNION,set_dim_name_entry), &data);
 1150 static __isl_give PART *FN(UNION,reset_user_entry)(__isl_take PART *part,
 1153 	return FN(PART,reset_user)(part);
 1159 __isl_give UNION *FN(UNION,reset_user)(__isl_take UNION *u)
 1163 	space = FN(UNION,get_space)(u);
 1165 	return FN(UNION,transform_space)(u, space, &FN(UNION,reset_user_entry),
 1165 	return FN(UNION,transform_space)(u, space, &FN(UNION,reset_user_entry),
 1171 static isl_stat FN(UNION,add_to_list)(void **entry, void *user)
 1176 	*list = FN(LIST(PART),add)(*list, FN(PART,copy)(pw));
 1176 	*list = FN(LIST(PART),add)(*list, FN(PART,copy)(pw));
 1188 __isl_give LIST(PART) *FN(FN(UNION,get),LIST(BASE))(__isl_keep UNION *u)
 1188 __isl_give LIST(PART) *FN(FN(UNION,get),LIST(BASE))(__isl_keep UNION *u)
 1195 	n = FN(FN(UNION,n),BASE)(u);
 1195 	n = FN(FN(UNION,n),BASE)(u);
 1198 	list = FN(LIST(PART),alloc)(FN(UNION,get_ctx(u)), n);
 1198 	list = FN(LIST(PART),alloc)(FN(UNION,get_ctx(u)), n);
 1199 	if (FN(UNION,foreach_inplace)(u, &FN(UNION,add_to_list), &list) < 0)
 1199 	if (FN(UNION,foreach_inplace)(u, &FN(UNION,add_to_list), &list) < 0)
 1200 		return FN(LIST(PART),free)(list);