Lines Matching refs:bset
26 static __isl_give isl_vertices *compute_chambers(__isl_take isl_basic_set *bset,
60 isl_basic_set_free(vertices->bset); in isl_vertices_free()
85 static __isl_give isl_vertices *vertices_from_list(__isl_keep isl_basic_set *bset, in vertices_from_list() argument
92 vertices = isl_calloc_type(bset->ctx, isl_vertices); in vertices_from_list()
96 vertices->bset = isl_basic_set_copy(bset); in vertices_from_list()
97 vertices->v = isl_alloc_array(bset->ctx, struct isl_vertex, n_vertices); in vertices_from_list()
123 __isl_keep isl_basic_set *bset, struct isl_tab *tab) in add_vertex() argument
131 nvar = isl_basic_set_dim(bset, isl_dim_set); in add_vertex()
139 v->v.vertex = isl_basic_set_copy(bset); in add_vertex()
146 isl_assert(bset->ctx, v->v.vertex->n_eq >= nvar, goto error); in add_vertex()
169 static __isl_give isl_vertices *vertices_empty(__isl_keep isl_basic_set *bset) in vertices_empty() argument
173 if (!bset) in vertices_empty()
176 vertices = isl_calloc_type(bset->ctx, isl_vertices); in vertices_empty()
179 vertices->bset = isl_basic_set_copy(bset); in vertices_empty()
194 static __isl_give isl_vertices *vertices_0D(__isl_keep isl_basic_set *bset) in vertices_0D() argument
198 if (!bset) in vertices_0D()
201 vertices = isl_calloc_type(bset->ctx, isl_vertices); in vertices_0D()
205 vertices->bset = isl_basic_set_copy(bset); in vertices_0D()
207 vertices->v = isl_calloc_array(bset->ctx, struct isl_vertex, 1); in vertices_0D()
211 vertices->v[0].vertex = isl_basic_set_copy(bset); in vertices_0D()
212 vertices->v[0].dom = isl_basic_set_params(isl_basic_set_copy(bset)); in vertices_0D()
216 vertices->c = isl_calloc_array(bset->ctx, struct isl_chamber, 1); in vertices_0D()
221 vertices->c[0].vertices = isl_calloc_array(bset->ctx, int, 1); in vertices_0D()
268 static isl_bool can_select(__isl_keep isl_basic_set *bset, int level, in can_select() argument
280 ovar = isl_space_offset(bset->dim, isl_dim_set); in can_select()
282 indep = is_independent(facets, selected, bset->ineq[level] + 1 + ovar); in can_select()
327 __isl_keep isl_basic_set *bset) in lower_dim_vertices() argument
332 bset = isl_basic_set_copy(bset); in lower_dim_vertices()
333 morph = isl_basic_set_full_compression(bset); in lower_dim_vertices()
334 bset = isl_morph_basic_set(isl_morph_copy(morph), bset); in lower_dim_vertices()
336 vertices = isl_basic_set_compute_vertices(bset); in lower_dim_vertices()
337 isl_basic_set_free(bset); in lower_dim_vertices()
376 __isl_keep isl_basic_set *bset) in isl_basic_set_compute_vertices() argument
390 if (!bset) in isl_basic_set_compute_vertices()
393 if (isl_basic_set_plain_is_empty(bset)) in isl_basic_set_compute_vertices()
394 return vertices_empty(bset); in isl_basic_set_compute_vertices()
396 if (bset->n_eq != 0) in isl_basic_set_compute_vertices()
397 return lower_dim_vertices(bset); in isl_basic_set_compute_vertices()
399 if (isl_basic_set_check_no_locals(bset) < 0) in isl_basic_set_compute_vertices()
402 nvar = isl_basic_set_dim(bset, isl_dim_set); in isl_basic_set_compute_vertices()
406 return vertices_0D(bset); in isl_basic_set_compute_vertices()
408 bset = isl_basic_set_copy(bset); in isl_basic_set_compute_vertices()
409 bset = isl_basic_set_set_rational(bset); in isl_basic_set_compute_vertices()
410 if (!bset) in isl_basic_set_compute_vertices()
413 tab = isl_tab_from_basic_set(bset, 0); in isl_basic_set_compute_vertices()
419 vertices = vertices_empty(bset); in isl_basic_set_compute_vertices()
420 isl_basic_set_free(bset); in isl_basic_set_compute_vertices()
425 selection = isl_alloc_array(bset->ctx, int, bset->n_ineq); in isl_basic_set_compute_vertices()
426 snap = isl_alloc_array(bset->ctx, struct isl_tab_undo *, bset->n_ineq); in isl_basic_set_compute_vertices()
427 facets = isl_mat_alloc(bset->ctx, nvar, nvar); in isl_basic_set_compute_vertices()
428 if ((bset->n_ineq && (!selection || !snap)) || !facets) in isl_basic_set_compute_vertices()
436 if (level >= bset->n_ineq || in isl_basic_set_compute_vertices()
445 ok = can_select(bset, level, tab, facets, selected, in isl_basic_set_compute_vertices()
462 isl_bool added = add_vertex(&list, bset, tab); in isl_basic_set_compute_vertices()
481 vertices = vertices_from_list(bset, n_vertices, list); in isl_basic_set_compute_vertices()
483 vertices = compute_chambers(bset, vertices); in isl_basic_set_compute_vertices()
492 isl_basic_set_free(bset); in isl_basic_set_compute_vertices()
516 static isl_bool bset_covers_tab(__isl_keep isl_basic_set *bset, in bset_covers_tab() argument
521 if (!bset || !tab) in bset_covers_tab()
524 for (i = 0; i < bset->n_ineq; ++i) { in bset_covers_tab()
525 enum isl_ineq_type type = isl_tab_ineq_type(tab, bset->ineq[i]); in bset_covers_tab()
568 __isl_keep isl_basic_set *bset) in can_intersect() argument
573 if (bset->n_eq > 0) in can_intersect()
574 isl_die(isl_basic_set_get_ctx(bset), isl_error_internal, in can_intersect()
578 if (isl_tab_extend_cons(tab, bset->n_ineq) < 0) in can_intersect()
583 for (i = 0; i < bset->n_ineq; ++i) { in can_intersect()
586 type = isl_tab_ineq_type(tab, bset->ineq[i]); in can_intersect()
591 if (isl_tab_add_ineq(tab, bset->ineq[i]) < 0) in can_intersect()
668 isl_basic_set *bset; /* A normalized basic set representation */ member
679 isl_basic_set_free(todo->bset); in free_todo()
711 todo->bset = isl_basic_set_copy(isl_tab_peek_bset(tab)); in create_todo()
712 todo->bset = isl_basic_set_set_rational(todo->bset); in create_todo()
713 todo->bset = isl_basic_set_cow(todo->bset); in create_todo()
714 todo->bset = isl_basic_set_update_from_tab(todo->bset, tab); in create_todo()
715 todo->bset = isl_basic_set_simplify(todo->bset); in create_todo()
716 todo->bset = isl_basic_set_sort_constraints(todo->bset); in create_todo()
717 if (!todo->bset) in create_todo()
719 ISL_F_SET(todo->bset, ISL_BASIC_SET_NO_REDUNDANT); in create_todo()
778 eq = isl_basic_set_plain_is_equal(todo->bset, (*list)->bset); in has_opposite()
860 static __isl_give isl_vertices *compute_chambers(__isl_take isl_basic_set *bset, in compute_chambers() argument
873 if (!bset || !vertices) in compute_chambers()
881 bset = isl_basic_set_params(bset); in compute_chambers()
883 tab = isl_tab_from_basic_set(bset, 1); in compute_chambers()
886 for (i = 0; i < bset->n_ineq; ++i) in compute_chambers()
889 isl_basic_set_free(bset); in compute_chambers()
975 isl_basic_set_free(bset); in compute_chambers()
1015 isl_basic_set *bset; in isl_vertex_get_expr() local
1022 bset = isl_basic_set_copy(v->vertex); in isl_vertex_get_expr()
1023 return isl_multi_aff_from_basic_set_equalities(bset); in isl_vertex_get_expr()
1116 static struct isl_tab *tab_for_shifted_cone(__isl_keep isl_basic_set *bset) in tab_for_shifted_cone() argument
1123 total = isl_basic_set_dim(bset, isl_dim_all); in tab_for_shifted_cone()
1126 tab = isl_tab_alloc(bset->ctx, bset->n_eq + bset->n_ineq + 1, in tab_for_shifted_cone()
1130 tab->rational = ISL_F_ISSET(bset, ISL_BASIC_SET_RATIONAL); in tab_for_shifted_cone()
1131 if (ISL_F_ISSET(bset, ISL_BASIC_MAP_EMPTY)) { in tab_for_shifted_cone()
1137 c = isl_vec_alloc(bset->ctx, 1 + 1 + total); in tab_for_shifted_cone()
1142 for (i = 0; i < bset->n_eq; ++i) { in tab_for_shifted_cone()
1143 isl_seq_cpy(c->el + 1, bset->eq[i], c->size - 1); in tab_for_shifted_cone()
1149 for (i = 0; i < bset->n_ineq; ++i) { in tab_for_shifted_cone()
1150 isl_seq_cpy(c->el + 1, bset->ineq[i], c->size - 1); in tab_for_shifted_cone()
1176 __isl_keep isl_basic_set *bset) in isl_basic_set_interior_point() argument
1181 tab = tab_for_shifted_cone(bset); in isl_basic_set_interior_point()
1335 return vertices ? vertices->bset->ctx : NULL; in isl_vertices_get_ctx()
1352 isl_assert(vertices->bset->ctx, vertices->ref == 1, goto error); in isl_morph_vertices()
1435 __isl_keep isl_basic_set *bset, int facet, __isl_keep isl_vec *v) in vertex_on_facet() argument
1440 isl_seq_cpy(v->el, bset->ineq[facet], v->size); in vertex_on_facet()
1471 isl_basic_set *bset; in triangulate() local
1474 d = isl_basic_set_dim(cell->vertices->bset, isl_dim_set); in triangulate()
1475 nparam = isl_basic_set_dim(cell->vertices->bset, isl_dim_param); in triangulate()
1485 bset = cell->vertices->bset; in triangulate()
1490 for (i = 0; i < bset->n_ineq; ++i) { in triangulate()
1491 if (isl_seq_first_non_zero(bset->ineq[i] + 1 + nparam, d) == -1) in triangulate()
1493 if (vertex_on_facet(vertex, bset, i, v)) in triangulate()
1499 if (vertex_on_facet(ov, bset, i, v)) in triangulate()
1532 d = isl_basic_set_dim(cell->vertices->bset, isl_dim_set); in isl_cell_foreach_simplex()
1533 total = isl_basic_set_dim(cell->vertices->bset, isl_dim_all); in isl_cell_foreach_simplex()