Home | History | Annotate | Download | only in dist

Lines Matching defs:vertices

27 	__isl_take isl_vertices *vertices);
29 __isl_give isl_vertices *isl_vertices_copy(__isl_keep isl_vertices *vertices)
31 if (!vertices)
34 vertices->ref++;
35 return vertices;
38 __isl_null isl_vertices *isl_vertices_free(__isl_take isl_vertices *vertices)
42 if (!vertices)
45 if (--vertices->ref > 0)
48 for (i = 0; i < vertices->n_vertices; ++i) {
49 isl_basic_set_free(vertices->v[i].vertex);
50 isl_basic_set_free(vertices->v[i].dom);
52 free(vertices->v);
54 for (i = 0; i < vertices->n_chambers; ++i) {
55 free(vertices->c[i].vertices);
56 isl_basic_set_free(vertices->c[i].dom);
58 free(vertices->c);
60 isl_basic_set_free(vertices->bset);
61 free(vertices);
90 isl_vertices *vertices;
92 vertices = isl_calloc_type(bset->ctx, isl_vertices);
93 if (!vertices)
95 vertices->ref = 1;
96 vertices->bset = isl_basic_set_copy(bset);
97 vertices->v = isl_alloc_array(bset->ctx, struct isl_vertex, n_vertices);
98 if (n_vertices && !vertices->v)
100 vertices->n_vertices = n_vertices;
104 vertices->v[i] = list->v;
108 return vertices;
110 isl_vertices_free(vertices);
118 * In particular, vertices with a lower-dimensional activity domain are
166 /* Compute the parametric vertices and the chamber decomposition
171 isl_vertices *vertices;
176 vertices = isl_calloc_type(bset->ctx, isl_vertices);
177 if (!vertices)
179 vertices->bset = isl_basic_set_copy(bset);
180 vertices->ref = 1;
182 vertices->n_vertices = 0;
183 vertices->n_chambers = 0;
185 return vertices;
188 /* Compute the parametric vertices and the chamber decomposition
196 isl_vertices *vertices;
201 vertices = isl_calloc_type(bset->ctx, isl_vertices);
202 if (!vertices)
204 vertices->ref = 1;
205 vertices->bset = isl_basic_set_copy(bset);
207 vertices->v = isl_calloc_array(bset->ctx, struct isl_vertex, 1);
208 if (!vertices->v)
210 vertices->n_vertices = 1;
211 vertices->v[0].vertex = isl_basic_set_copy(bset);
212 vertices->v[0].dom = isl_basic_set_params(isl_basic_set_copy(bset));
213 if (!vertices->v[0].vertex || !vertices->v[0].dom)
216 vertices->c = isl_calloc_array(bset->ctx, struct isl_chamber, 1);
217 if (!vertices->c)
219 vertices->n_chambers = 1;
220 vertices->c[0].n_vertices = 1;
221 vertices->c[0].vertices = isl_calloc_array(bset->ctx, int, 1);
222 if (!vertices->c[0].vertices)
224 vertices->c[0].dom = isl_basic_set_copy(vertices->v[0].dom);
225 if (!vertices->c[0].dom)
228 return vertices;
230 isl_vertices_free(vertices);
266 * vertices have already been generated, so the constraint cannot be selected.
322 /* Compute the parametric vertices and the chamber decomposition
326 * and map the resulting vertices back.
332 isl_vertices *vertices;
337 vertices = isl_basic_set_compute_vertices(bset);
342 vertices = isl_morph_vertices(morph, vertices);
344 return vertices;
347 /* Compute the parametric vertices and the chamber decomposition
378 /* Compute the parametric vertices and the chamber decomposition
383 * The vertices themselves are computed in a fairly simplistic way.
386 * define a vertex. To avoid the generation of duplicate vertices,
391 * Only potential vertices with a full-dimensional activity domain
434 isl_vertices *vertices;
467 vertices = vertices_empty(copy);
470 return vertices;
537 vertices = vertices_from_list(copy, n_vertices, list);
539 vertices = compute_chambers(copy, vertices);
541 return vertices;
564 free(list->c.vertices);
593 __isl_take isl_vertices *vertices, int n_chambers,
600 ctx = isl_vertices_get_ctx(vertices);
601 vertices->c = isl_alloc_array(ctx, struct isl_chamber, n_chambers);
602 if (!vertices->c)
604 vertices->n_chambers = n_chambers;
608 vertices->c[i] = list->c;
612 return vertices;
614 isl_vertices_free(vertices);
663 __isl_keep isl_vertices *vertices, struct isl_tab *tab, int *selection)
671 for (i = 0; i < vertices->n_vertices; ++i)
687 c->c.vertices = isl_alloc_array(tab->mat->ctx, int, n_vertices);
688 if (n_vertices && !c->c.vertices)
701 for (i = 0, j = 0; i < vertices->n_vertices; ++i)
703 c->c.vertices[j] = i;
895 * by "bset" given the parametric vertices and their activity domains.
899 * one or more vertices and the union of all chambers is equal to the
917 __isl_take isl_vertices *vertices)
930 if (!bset || !vertices)
933 ctx = isl_vertices_get_ctx(vertices);
934 selection = isl_alloc_array(ctx, int, vertices->n_vertices);
935 if (vertices->n_vertices && !selection)
958 for (i = 0; i < vertices->n_vertices; ++i) {
959 selection[i] = isl_basic_set_contains(vertices->v[i].dom, sample);
964 selection[i] = can_intersect(tab, vertices->v[i].dom);
972 if (add_chamber(&list, vertices, tab, selection) < 0)
990 for (i = 0; i < vertices->n_vertices; ++i) {
991 selection[i] = bset_covers_tab(vertices->v[i].dom,
997 selection[i] = can_intersect(tab, vertices->v[i].dom);
1005 if (add_chamber(&list, vertices, tab, selection) < 0)
1023 vertices = vertices_add_chambers(vertices, n_chambers, list);
1025 for (i = 0; vertices && i < vertices->n_vertices; ++i) {
1026 isl_basic_set_free(vertices->v[i].dom);
1027 vertices->v[i].dom = NULL;
1030 return vertices;
1039 isl_vertices_free(vertices);
1045 return vertex ? isl_vertices_get_ctx(vertex->vertices) : NULL;
1062 v = &vertex->vertices->v[vertex->id];
1083 v = &vertex->vertices->v[vertex->id];
1089 static __isl_give isl_vertex *isl_vertex_alloc(__isl_take isl_vertices *vertices,
1095 if (!vertices)
1098 ctx = isl_vertices_get_ctx(vertices);
1103 vertex->vertices = vertices;
1108 isl_vertices_free(vertices);
1116 isl_vertices_free(vertex->vertices);
1132 static __isl_give isl_cell *isl_cell_alloc(__isl_take isl_vertices *vertices,
1138 if (!vertices || !dom)
1145 cell->n_vertices = vertices->c[id].n_vertices;
1150 cell->ids[i] = vertices->c[id].vertices[i];
1151 cell->vertices = vertices;
1157 isl_vertices_free(vertices);
1167 isl_vertices_free(cell->vertices);
1265 isl_stat isl_vertices_foreach_disjoint_cell(__isl_keep isl_vertices *vertices,
1272 if (!vertices)
1275 if (vertices->n_chambers == 0)
1278 if (vertices->n_chambers == 1) {
1279 isl_basic_set *dom = isl_basic_set_copy(vertices->c[0].dom);
1281 cell = isl_cell_alloc(isl_vertices_copy(vertices), dom, 0);
1287 vec = isl_basic_set_interior_point(vertices->c[0].dom);
1291 for (i = 0; i < vertices->n_chambers; ++i) {
1293 isl_basic_set *dom = isl_basic_set_copy(vertices->c[i].dom);
1297 cell = isl_cell_alloc(isl_vertices_copy(vertices), dom, i);
1313 isl_stat isl_vertices_foreach_cell(__isl_keep isl_vertices *vertices,
1319 if (!vertices)
1322 if (vertices
1325 for (i = 0; i < vertices->n_chambers; ++i) {
1327 isl_basic_set *dom = isl_basic_set_copy(vertices->c[i].dom);
1329 cell = isl_cell_alloc(isl_vertices_copy(vertices), dom, i);
1341 isl_stat isl_vertices_foreach_vertex(__isl_keep isl_vertices *vertices,
1347 if (!vertices)
1350 if (vertices->n_vertices == 0)
1353 for (i = 0; i < vertices->n_vertices; ++i) {
1356 vertex = isl_vertex_alloc(isl_vertices_copy(vertices), i);
1383 vertex = isl_vertex_alloc(isl_vertices_copy(cell->vertices),
1396 isl_ctx *isl_vertices_get_ctx(__isl_keep isl_vertices *vertices)
1398 return vertices ? vertices->bset->ctx : NULL;
1401 isl_size isl_vertices_get_n_vertices(__isl_keep isl_vertices *vertices)
1403 return vertices ? vertices->n_vertices : isl_size_error;
1407 __isl_take isl_vertices *vertices)
1412 if (!morph || !vertices)
1415 isl_assert(vertices->bset->ctx, vertices->ref == 1, goto error);
1421 for (i = 0; i < vertices->n_vertices; ++i) {
1422 vertices->v[i].dom = isl_morph_basic_set(
1423 isl_morph_copy(param_morph), vertices->v[i].dom);
1424 vertices->v[i].vertex = isl_morph_basic_set(
1425 isl_morph_copy(morph), vertices->v[i].vertex);
1426 if (!vertices->v[i].vertex)
1430 for (i = 0; i < vertices->n_chambers; ++i) {
1431 vertices->c[i].dom = isl_morph_basic_set(
1432 isl_morph_copy(param_morph), vertices->c[i].dom);
1433 if (!vertices->c[i].dom)
1439 return vertices;
1443 isl_vertices_free(vertices);
1447 /* Construct a simplex isl_cell spanned by the vertices with indices in
1463 simplex->vertices = isl_vertices_copy(cell->vertices);
1464 if (!simplex->vertices)
1515 /* Triangulate the polytope spanned by the vertices with ids
1537 d = isl_basic_set_dim(cell->vertices->bset, isl_dim_set);
1538 nparam = isl_basic_set_dim(cell->vertices->bset, isl_dim_param);
1547 vertex = cell->vertices->v[other_ids[0]].vertex;
1548 bset = cell->vertices->bset;
1561 ov = cell->vertices->v[other_ids[j]].vertex;
1595 d = isl_basic_set_dim(cell->vertices->bset, isl_dim_set);
1596 total = isl_basic_set_dim(cell->vertices->bset, isl_dim_all);