brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · f277b7c Raw
60 lines · c
1/*2 * Copyright 2019      Cerebras Systems3 *4 * Use of this software is governed by the MIT license5 *6 * Written by Sven Verdoolaege,7 * Cerebras Systems, 175 S San Antonio Rd, Los Altos, CA, USA8 */9 10#define xFN(TYPE,NAME) TYPE ## _ ## NAME11#define FN(TYPE,NAME) xFN(TYPE,NAME)12 13/* If "obj" involves a parameter with identifier "id",14 * then turn it into an existentially quantified variable.15 */16__isl_give TYPE *FN(TYPE,project_out_param_id)(__isl_take TYPE *obj,17	__isl_take isl_id *id)18{19	int pos;20 21	if (!obj || !id)22		goto error;23	pos = FN(TYPE,find_dim_by_id)(obj, isl_dim_param, id);24	isl_id_free(id);25	if (pos < 0)26		return obj;27	return FN(TYPE,project_out)(obj, isl_dim_param, pos, 1);28error:29	FN(TYPE,free)(obj);30	isl_id_free(id);31	return NULL;32}33 34/* If "obj" involves any of the parameters with identifiers in "list",35 * then turn them into existentially quantified variables.36 */37__isl_give TYPE *FN(TYPE,project_out_param_id_list)(__isl_take TYPE *obj,38	__isl_take isl_id_list *list)39{40	int i;41	isl_size n;42 43	n = isl_id_list_size(list);44	if (n < 0)45		goto error;46	for (i = 0; i < n; ++i) {47		isl_id *id;48 49		id = isl_id_list_get_at(list, i);50		obj = FN(TYPE,project_out_param_id)(obj, id);51	}52 53	isl_id_list_free(list);54	return obj;55error:56	isl_id_list_free(list);57	FN(TYPE,free)(obj);58	return NULL;59}60