struct isl_map *isl_map_fix_input_si(struct isl_map *map,
unsigned input, int value);
struct isl_basic_set *isl_basic_map_deltas(struct isl_basic_map *bmap);
+struct isl_set *isl_map_deltas(struct isl_map *map);
struct isl_set *isl_map_range(struct isl_map *map);
struct isl_basic_map *isl_map_affine_hull(struct isl_map *map);
return NULL;
}
+/*
+ * returns range - domain
+ */
+struct isl_set *isl_map_deltas(struct isl_map *map)
+{
+ int i;
+ struct isl_set *result;
+
+ if (!map)
+ return NULL;
+
+ isl_assert(map->ctx, map->n_in == map->n_out, goto error);
+ result = isl_set_alloc(map->ctx, map->nparam, map->n_in, map->n, map->flags);
+ if (!result)
+ goto error;
+ for (i = 0; i < map->n; ++i)
+ result = isl_set_add(result,
+ isl_basic_map_deltas(isl_basic_map_copy(map->p[i])));
+ isl_map_free(map);
+ return result;
+error:
+ isl_map_free(map);
+ return NULL;
+}
+
/* If the only constraints a div d=floor(f/m)
* appears in are its two defining constraints
*