mirror of
https://review.haiku-os.org/buildtools
synced 2024-11-23 07:18:49 +01:00
c8db99d323
GCC had a horrible .gitignore, untracked files were not applied
119 lines
3.2 KiB
C
119 lines
3.2 KiB
C
/*
|
|
* Copyright 2013 Ecole Normale Superieure
|
|
*
|
|
* Use of this software is governed by the MIT license
|
|
*
|
|
* Written by Sven Verdoolaege,
|
|
* Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France
|
|
*/
|
|
|
|
#include <isl/space.h>
|
|
#include <isl/local_space.h>
|
|
#include <isl_reordering.h>
|
|
|
|
#include <isl_multi_macro.h>
|
|
|
|
/* The functions in this file are meant for base object types
|
|
* that do not have any associated space. They are only meant to be used
|
|
* in the generic isl_multi_* functions which have to deal with base objects
|
|
* that do have an associated space.
|
|
*/
|
|
|
|
|
|
/* Drop the "n" first dimensions of type "type" at position "first".
|
|
*
|
|
* For a base expression without an associated space, this function
|
|
* does not do anything.
|
|
*/
|
|
static __isl_give EL *FN(EL,drop_dims)(__isl_take EL *el,
|
|
enum isl_dim_type type, unsigned first, unsigned n)
|
|
{
|
|
return el;
|
|
}
|
|
|
|
/* Return the space of "el".
|
|
*
|
|
* For a base expression without an associated space,
|
|
* the conditions surrounding the call to this function make sure
|
|
* that this function will never actually get called. We return a valid
|
|
* space anyway, just in case.
|
|
*/
|
|
static __isl_give isl_space *FN(EL,get_space)(__isl_keep EL *el)
|
|
{
|
|
if (!el)
|
|
return NULL;
|
|
|
|
return isl_space_params_alloc(FN(EL,get_ctx)(el), 0);
|
|
}
|
|
|
|
/* Reset the domain space of "el" to "space".
|
|
*
|
|
* For a base expression without an associated space, this function
|
|
* does not do anything, apart from error handling and cleaning up memory.
|
|
*/
|
|
static __isl_give EL *FN(EL,reset_domain_space)(__isl_take EL *el,
|
|
__isl_take isl_space *space)
|
|
{
|
|
if (!space)
|
|
return FN(EL,free)(el);
|
|
isl_space_free(space);
|
|
return el;
|
|
}
|
|
|
|
/* Align the parameters of "el" to those of "space".
|
|
*
|
|
* For a base expression without an associated space, this function
|
|
* does not do anything, apart from error handling and cleaning up memory.
|
|
* Note that the conditions surrounding the call to this function make sure
|
|
* that this function will never actually get called.
|
|
*/
|
|
static __isl_give EL *FN(EL,align_params)(__isl_take EL *el,
|
|
__isl_take isl_space *space)
|
|
{
|
|
if (!space)
|
|
return FN(EL,free)(el);
|
|
isl_space_free(space);
|
|
return el;
|
|
}
|
|
|
|
/* Reorder the dimensions of the domain of "el" according
|
|
* to the given reordering.
|
|
*
|
|
* For a base expression without an associated space, this function
|
|
* does not do anything, apart from error handling and cleaning up memory.
|
|
*/
|
|
static __isl_give EL *FN(EL,realign_domain)(__isl_take EL *el,
|
|
__isl_take isl_reordering *r)
|
|
{
|
|
if (!r)
|
|
return FN(EL,free)(el);
|
|
isl_reordering_free(r);
|
|
return el;
|
|
}
|
|
|
|
/* Do the parameters of "el" match those of "space"?
|
|
*
|
|
* For a base expression without an associated space, this function
|
|
* simply returns true, except if "el" or "space" are NULL.
|
|
*/
|
|
static isl_bool FN(EL,matching_params)(__isl_keep EL *el,
|
|
__isl_keep isl_space *space)
|
|
{
|
|
if (!el || !space)
|
|
return isl_bool_error;
|
|
return isl_bool_true;
|
|
}
|
|
|
|
/* Check that the domain space of "el" matches "space".
|
|
*
|
|
* For a base expression without an associated space, this function
|
|
* simply returns isl_stat_ok, except if "el" or "space" are NULL.
|
|
*/
|
|
static isl_stat FN(EL,check_match_domain_space)(__isl_keep EL *el,
|
|
__isl_keep isl_space *space)
|
|
{
|
|
if (!el || !space)
|
|
return isl_stat_error;
|
|
return isl_stat_ok;
|
|
}
|