forked from OSchip/llvm-project
54 lines
1.0 KiB
C
54 lines
1.0 KiB
C
/*
|
|
* Copyright 2012 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_multi_macro.h>
|
|
|
|
/* Construct a multi expression in the given space with value zero in
|
|
* each of the output dimensions.
|
|
*/
|
|
__isl_give MULTI(BASE) *FN(MULTI(BASE),zero)(__isl_take isl_space *space)
|
|
{
|
|
isl_size n;
|
|
MULTI(BASE) *multi;
|
|
|
|
n = isl_space_dim(space , isl_dim_out);
|
|
if (n < 0)
|
|
goto error;
|
|
|
|
multi = FN(MULTI(BASE),alloc)(isl_space_copy(space));
|
|
|
|
if (!n)
|
|
isl_space_free(space);
|
|
else {
|
|
int i;
|
|
isl_local_space *ls;
|
|
EL *el;
|
|
|
|
space = isl_space_domain(space);
|
|
ls = isl_local_space_from_space(space);
|
|
el = FN(EL,zero_on_domain)(ls);
|
|
|
|
for (i = 0; i < n; ++i)
|
|
multi = FN(FN(MULTI(BASE),set),BASE)(multi, i,
|
|
FN(EL,copy)(el));
|
|
|
|
FN(EL,free)(el);
|
|
}
|
|
|
|
return multi;
|
|
error:
|
|
isl_space_free(space);
|
|
return NULL;
|
|
}
|
|
|
|
#include "isl_multi_zero_space_templ.c"
|