brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 1c98ac4 Raw
119 lines · c
1/*2 * Copyright 2013      Ecole Normale Superieure3 *4 * Use of this software is governed by the MIT license5 *6 * Written by Sven Verdoolaege,7 * Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France8 */9 10#include <isl/space.h>11#include <isl/local_space.h>12#include <isl_reordering.h>13 14#include <isl_multi_macro.h>15 16/* The functions in this file are meant for base object types17 * that do not have any associated space.  They are only meant to be used18 * in the generic isl_multi_* functions which have to deal with base objects19 * that do have an associated space.20 */21 22 23/* Drop the "n" first dimensions of type "type" at position "first".24 *25 * For a base expression without an associated space, this function26 * does not do anything.27 */28static __isl_give EL *FN(EL,drop_dims)(__isl_take EL *el,29	enum isl_dim_type type, unsigned first, unsigned n)30{31	return el;32}33 34/* Return the space of "el".35 *36 * For a base expression without an associated space,37 * the conditions surrounding the call to this function make sure38 * that this function will never actually get called.  We return a valid39 * space anyway, just in case.40 */41static __isl_give isl_space *FN(EL,get_space)(__isl_keep EL *el)42{43	if (!el)44		return NULL;45 46	return isl_space_params_alloc(FN(EL,get_ctx)(el), 0);47}48 49/* Reset the domain space of "el" to "space".50 *51 * For a base expression without an associated space, this function52 * does not do anything, apart from error handling and cleaning up memory.53 */54static __isl_give EL *FN(EL,reset_domain_space)(__isl_take EL *el,55	__isl_take isl_space *space)56{57	if (!space)58		return FN(EL,free)(el);59	isl_space_free(space);60	return el;61}62 63/* Align the parameters of "el" to those of "space".64 *65 * For a base expression without an associated space, this function66 * does not do anything, apart from error handling and cleaning up memory.67 * Note that the conditions surrounding the call to this function make sure68 * that this function will never actually get called.69 */70static __isl_give EL *FN(EL,align_params)(__isl_take EL *el,71	__isl_take isl_space *space)72{73	if (!space)74		return FN(EL,free)(el);75	isl_space_free(space);76	return el;77}78 79/* Reorder the dimensions of the domain of "el" according80 * to the given reordering.81 *82 * For a base expression without an associated space, this function83 * does not do anything, apart from error handling and cleaning up memory.84 */85static __isl_give EL *FN(EL,realign_domain)(__isl_take EL *el,86	__isl_take isl_reordering *r)87{88	if (!r)89		return FN(EL,free)(el);90	isl_reordering_free(r);91	return el;92}93 94/* Do the parameters of "el" match those of "space"?95 *96 * For a base expression without an associated space, this function97 * simply returns true, except if "el" or "space" are NULL.98 */99static isl_bool FN(EL,matching_params)(__isl_keep EL *el,100	__isl_keep isl_space *space)101{102	if (!el || !space)103		return isl_bool_error;104	return isl_bool_true;105}106 107/* Check that the domain space of "el" matches "space".108 *109 * For a base expression without an associated space, this function110 * simply returns isl_stat_ok, except if "el" or "space" are NULL.111 */112static isl_stat FN(EL,check_match_domain_space)(__isl_keep EL *el,113	__isl_keep isl_space *space)114{115	if (!el || !space)116		return isl_stat_error;117	return isl_stat_ok;118}119