__isl_give isl_map *isl_map_lex_lt(
__isl_take isl_dim *set_dim);
+ __isl_give isl_map *isl_map_lex_le(
+ __isl_take isl_dim *set_dim);
__isl_give isl_map *isl_map_lex_gt(
__isl_take isl_dim *set_dim);
+ __isl_give isl_map *isl_map_lex_ge(
+ __isl_take isl_dim *set_dim);
These functions take a dimension specification for a B<set>
and return maps that map elements of a set of the given dimension
to elements that are lexicograhically less
-(C<isl_map_lex_lt>) or lexicograhically greater (C<isl_map_lex_gt>).
+(C<isl_map_lex_lt>), less or equal (C<isl_map_lex_le>),
+greater (C<isl_map_lex_gt>) or greater or equal (C<isl_map_lex_ge>).
=back
struct isl_map *isl_map_identity_like(struct isl_map *model);
struct isl_map *isl_map_identity_like_basic_map(struct isl_basic_map *model);
__isl_give isl_map *isl_map_lex_lt(__isl_take isl_dim *set_dim);
+__isl_give isl_map *isl_map_lex_le(__isl_take isl_dim *set_dim);
__isl_give isl_map *isl_map_lex_gt(__isl_take isl_dim *set_dim);
+__isl_give isl_map *isl_map_lex_ge(__isl_take isl_dim *set_dim);
struct isl_map *isl_map_finalize(struct isl_map *map);
void isl_map_free(__isl_take isl_map *map);
__isl_give isl_map *isl_map_copy(__isl_keep isl_map *map);
return isl_basic_map_finalize(bmap);
}
-static __isl_give isl_map *map_lex_lt(__isl_take isl_dim *dims)
+static __isl_give isl_map *map_lex_lte(__isl_take isl_dim *dims, int equal)
{
struct isl_map *map;
unsigned dim;
if (!dims)
return NULL;
dim = dims->n_out;
- map = isl_map_alloc_dim(isl_dim_copy(dims), dim, ISL_MAP_DISJOINT);
+ map = isl_map_alloc_dim(isl_dim_copy(dims), dim + equal, ISL_MAP_DISJOINT);
for (i = 0; i < dim; ++i)
map = isl_map_add(map,
isl_basic_map_less_at(isl_dim_copy(dims), i));
+ if (equal)
+ map = isl_map_add(map,
+ isl_basic_map_equal(isl_dim_copy(dims), dim));
isl_dim_free(dims);
return map;
__isl_give isl_map *isl_map_lex_lt(__isl_take isl_dim *set_dim)
{
- return map_lex_lt(isl_dim_map(set_dim));
+ return map_lex_lte(isl_dim_map(set_dim), 0);
+}
+
+__isl_give isl_map *isl_map_lex_le(__isl_take isl_dim *set_dim)
+{
+ return map_lex_lte(isl_dim_map(set_dim), 1);
}
-static __isl_give isl_map *map_lex_gt(__isl_take isl_dim *dims)
+static __isl_give isl_map *map_lex_gte(__isl_take isl_dim *dims, int equal)
{
struct isl_map *map;
unsigned dim;
if (!dims)
return NULL;
dim = dims->n_out;
- map = isl_map_alloc_dim(isl_dim_copy(dims), dim, ISL_MAP_DISJOINT);
+ map = isl_map_alloc_dim(isl_dim_copy(dims), dim + equal, ISL_MAP_DISJOINT);
for (i = 0; i < dim; ++i)
map = isl_map_add(map,
isl_basic_map_more_at(isl_dim_copy(dims), i));
+ if (equal)
+ map = isl_map_add(map,
+ isl_basic_map_equal(isl_dim_copy(dims), dim));
isl_dim_free(dims);
return map;
__isl_give isl_map *isl_map_lex_gt(__isl_take isl_dim *set_dim)
{
- return map_lex_gt(isl_dim_map(set_dim));
+ return map_lex_gte(isl_dim_map(set_dim), 0);
+}
+
+__isl_give isl_map *isl_map_lex_ge(__isl_take isl_dim *set_dim)
+{
+ return map_lex_gte(isl_dim_map(set_dim), 1);
}
struct isl_basic_map *isl_basic_map_from_basic_set(