Polly 20.0.0git
Classes | Macros | Functions
isl_vertices.c File Reference
#include <isl_map_private.h>
#include <isl_aff_private.h>
#include <isl/set.h>
#include <isl_seq.h>
#include <isl_tab.h>
#include <isl_space_private.h>
#include <isl_morph.h>
#include <isl_vertices_private.h>
#include <isl_mat_private.h>
#include <isl_vec_private.h>

Go to the source code of this file.

Classes

struct  isl_vertex_list
 
struct  isl_chamber_list
 
struct  isl_facet_todo
 

Macros

#define SELECTED   1
 
#define DESELECTED   -1
 
#define UNSELECTED   0
 

Functions

static __isl_give isl_verticescompute_chambers (__isl_take isl_basic_set *bset, __isl_take isl_vertices *vertices)
 
__isl_give isl_verticesisl_vertices_copy (__isl_keep isl_vertices *vertices)
 
__isl_null isl_verticesisl_vertices_free (__isl_take isl_vertices *vertices)
 
static struct isl_vertex_listfree_vertex_list (struct isl_vertex_list *list)
 
static __isl_give isl_verticesvertices_from_list (__isl_keep isl_basic_set *bset, int n_vertices, struct isl_vertex_list *list)
 
static isl_bool add_vertex (struct isl_vertex_list **list, __isl_keep isl_basic_set *bset, struct isl_tab *tab)
 
static __isl_give isl_verticesvertices_empty (__isl_keep isl_basic_set *bset)
 
static __isl_give isl_verticesvertices_0D (__isl_keep isl_basic_set *bset)
 
static isl_bool is_independent (__isl_keep isl_mat *facets, int n, isl_int *f)
 
static isl_bool can_select (__isl_keep isl_basic_set *bset, int level, struct isl_tab *tab, __isl_keep isl_mat *facets, int selected, int *selection)
 
static __isl_give isl_verticeslower_dim_vertices (__isl_take isl_basic_set *bset)
 
static __isl_give isl_verticeslower_dim_vertices_free (__isl_take isl_basic_set *bset, __isl_take isl_basic_set *copy, struct isl_tab *tab)
 
static __isl_give isl_basic_setdetect_implicit_equality_constraints (__isl_keep isl_basic_set *bset, struct isl_tab *tab)
 
__isl_give isl_verticesisl_basic_set_compute_vertices (__isl_keep isl_basic_set *bset)
 
static void free_chamber_list (struct isl_chamber_list *list)
 
static isl_bool bset_covers_tab (__isl_keep isl_basic_set *bset, struct isl_tab *tab)
 
static __isl_give isl_verticesvertices_add_chambers (__isl_take isl_vertices *vertices, int n_chambers, struct isl_chamber_list *list)
 
static isl_bool can_intersect (struct isl_tab *tab, __isl_keep isl_basic_set *bset)
 
static int add_chamber (struct isl_chamber_list **list, __isl_keep isl_vertices *vertices, struct isl_tab *tab, int *selection)
 
static void free_todo (struct isl_facet_todo *todo)
 
static struct isl_facet_todocreate_todo (struct isl_tab *tab, int con)
 
static int init_todo (struct isl_facet_todo **next, struct isl_tab *tab)
 
static int has_opposite (struct isl_facet_todo *todo, struct isl_facet_todo **list)
 
static int update_todo (struct isl_facet_todo *first, struct isl_tab *tab)
 
isl_ctxisl_vertex_get_ctx (__isl_keep isl_vertex *vertex)
 
isl_size isl_vertex_get_id (__isl_keep isl_vertex *vertex)
 
__isl_give isl_basic_setisl_vertex_get_domain (__isl_keep isl_vertex *vertex)
 
__isl_give isl_multi_affisl_vertex_get_expr (__isl_keep isl_vertex *vertex)
 
static __isl_give isl_vertexisl_vertex_alloc (__isl_take isl_vertices *vertices, int id)
 
__isl_null isl_vertexisl_vertex_free (__isl_take isl_vertex *vertex)
 
isl_ctxisl_cell_get_ctx (__isl_keep isl_cell *cell)
 
__isl_give isl_basic_setisl_cell_get_domain (__isl_keep isl_cell *cell)
 
static __isl_give isl_cellisl_cell_alloc (__isl_take isl_vertices *vertices, __isl_take isl_basic_set *dom, int id)
 
__isl_null isl_cellisl_cell_free (__isl_take isl_cell *cell)
 
static struct isl_tabtab_for_shifted_cone (__isl_keep isl_basic_set *bset)
 
static __isl_give isl_vecisl_basic_set_interior_point (__isl_keep isl_basic_set *bset)
 
isl_stat isl_vertices_foreach_disjoint_cell (__isl_keep isl_vertices *vertices, isl_stat(*fn)(__isl_take isl_cell *cell, void *user), void *user)
 
isl_stat isl_vertices_foreach_cell (__isl_keep isl_vertices *vertices, isl_stat(*fn)(__isl_take isl_cell *cell, void *user), void *user)
 
isl_stat isl_vertices_foreach_vertex (__isl_keep isl_vertices *vertices, isl_stat(*fn)(__isl_take isl_vertex *vertex, void *user), void *user)
 
isl_stat isl_cell_foreach_vertex (__isl_keep isl_cell *cell, isl_stat(*fn)(__isl_take isl_vertex *vertex, void *user), void *user)
 
isl_ctxisl_vertices_get_ctx (__isl_keep isl_vertices *vertices)
 
isl_size isl_vertices_get_n_vertices (__isl_keep isl_vertices *vertices)
 
__isl_give isl_verticesisl_morph_vertices (__isl_take isl_morph *morph, __isl_take isl_vertices *vertices)
 
static isl_stat call_on_simplex (__isl_keep isl_cell *cell, int *simplex_ids, int n_simplex, int *other_ids, int n_other, isl_stat(*fn)(__isl_take isl_cell *simplex, void *user), void *user)
 
static int vertex_on_facet (__isl_keep isl_basic_set *vertex, __isl_keep isl_basic_set *bset, int facet, __isl_keep isl_vec *v)
 
static isl_stat triangulate (__isl_keep isl_cell *cell, __isl_keep isl_vec *v, int *simplex_ids, int n_simplex, int *other_ids, int n_other, isl_stat(*fn)(__isl_take isl_cell *simplex, void *user), void *user)
 
isl_stat isl_cell_foreach_simplex (__isl_take isl_cell *cell, isl_stat(*fn)(__isl_take isl_cell *simplex, void *user), void *user)
 

Macro Definition Documentation

◆ DESELECTED

#define DESELECTED   -1

Definition at line 23 of file isl_vertices.c.

◆ SELECTED

#define SELECTED   1

Definition at line 22 of file isl_vertices.c.

◆ UNSELECTED

#define UNSELECTED   0

Definition at line 24 of file isl_vertices.c.

Function Documentation

◆ add_chamber()

static int add_chamber ( struct isl_chamber_list **  list,
__isl_keep isl_vertices vertices,
struct isl_tab tab,
int *  selection 
)
static

◆ add_vertex()

static isl_bool add_vertex ( struct isl_vertex_list **  list,
__isl_keep isl_basic_set bset,
struct isl_tab tab 
)
static

◆ bset_covers_tab()

static isl_bool bset_covers_tab ( __isl_keep isl_basic_set bset,
struct isl_tab tab 
)
static

◆ call_on_simplex()

static isl_stat call_on_simplex ( __isl_keep isl_cell cell,
int *  simplex_ids,
int  n_simplex,
int *  other_ids,
int  n_other,
isl_stat(*)(__isl_take isl_cell *simplex, void *user fn,
void *  user 
)
static

◆ can_intersect()

static isl_bool can_intersect ( struct isl_tab tab,
__isl_keep isl_basic_set bset 
)
static

◆ can_select()

static isl_bool can_select ( __isl_keep isl_basic_set bset,
int  level,
struct isl_tab tab,
__isl_keep isl_mat facets,
int  selected,
int *  selection 
)
static

◆ compute_chambers()

static __isl_give isl_vertices * compute_chambers ( __isl_take isl_basic_set bset,
__isl_take isl_vertices vertices 
)
static

◆ create_todo()

static struct isl_facet_todo * create_todo ( struct isl_tab tab,
int  con 
)
static

◆ detect_implicit_equality_constraints()

static __isl_give isl_basic_set * detect_implicit_equality_constraints ( __isl_keep isl_basic_set bset,
struct isl_tab tab 
)
static

◆ free_chamber_list()

static void free_chamber_list ( struct isl_chamber_list list)
static

◆ free_todo()

static void free_todo ( struct isl_facet_todo todo)
static

◆ free_vertex_list()

static struct isl_vertex_list * free_vertex_list ( struct isl_vertex_list list)
static

◆ has_opposite()

static int has_opposite ( struct isl_facet_todo todo,
struct isl_facet_todo **  list 
)
static

◆ init_todo()

static int init_todo ( struct isl_facet_todo **  next,
struct isl_tab tab 
)
static

◆ is_independent()

static isl_bool is_independent ( __isl_keep isl_mat facets,
int  n,
isl_int f 
)
static

◆ isl_basic_set_compute_vertices()

__isl_give isl_vertices * isl_basic_set_compute_vertices ( __isl_keep isl_basic_set bset)

◆ isl_basic_set_interior_point()

static __isl_give isl_vec * isl_basic_set_interior_point ( __isl_keep isl_basic_set bset)
static

◆ isl_cell_alloc()

static __isl_give isl_cell * isl_cell_alloc ( __isl_take isl_vertices vertices,
__isl_take isl_basic_set dom,
int  id 
)
static

◆ isl_cell_foreach_simplex()

isl_stat isl_cell_foreach_simplex ( __isl_take isl_cell cell,
isl_stat(*)(__isl_take isl_cell *simplex, void *user fn,
void *  user 
)

◆ isl_cell_foreach_vertex()

isl_stat isl_cell_foreach_vertex ( __isl_keep isl_cell cell,
isl_stat(*)(__isl_take isl_vertex *vertex, void *user fn,
void *  user 
)

Definition at line 1366 of file isl_vertices.c.

References fn, isl_stat_error, isl_stat_ok, isl_vertex_alloc(), isl_vertices_copy(), and user.

◆ isl_cell_free()

__isl_null isl_cell * isl_cell_free ( __isl_take isl_cell cell)

◆ isl_cell_get_ctx()

isl_ctx * isl_cell_get_ctx ( __isl_keep isl_cell cell)

Definition at line 1120 of file isl_vertices.c.

Referenced by call_on_simplex(), isl_cell_foreach_simplex(), and triangulate().

◆ isl_cell_get_domain()

__isl_give isl_basic_set * isl_cell_get_domain ( __isl_keep isl_cell cell)

Definition at line 1125 of file isl_vertices.c.

References isl_basic_set_copy().

Referenced by add_cell().

◆ isl_morph_vertices()

__isl_give isl_vertices * isl_morph_vertices ( __isl_take isl_morph morph,
__isl_take isl_vertices vertices 
)

◆ isl_vertex_alloc()

static __isl_give isl_vertex * isl_vertex_alloc ( __isl_take isl_vertices vertices,
int  id 
)
static

◆ isl_vertex_free()

__isl_null isl_vertex * isl_vertex_free ( __isl_take isl_vertex vertex)

Definition at line 1110 of file isl_vertices.c.

References isl_vertices_free(), and isl_vertex::vertex.

Referenced by find_vertex().

◆ isl_vertex_get_ctx()

isl_ctx * isl_vertex_get_ctx ( __isl_keep isl_vertex vertex)

Definition at line 1041 of file isl_vertices.c.

References isl_vertices_get_ctx().

Referenced by find_vertex().

◆ isl_vertex_get_domain()

__isl_give isl_basic_set * isl_vertex_get_domain ( __isl_keep isl_vertex vertex)

◆ isl_vertex_get_expr()

__isl_give isl_multi_aff * isl_vertex_get_expr ( __isl_keep isl_vertex vertex)

◆ isl_vertex_get_id()

isl_size isl_vertex_get_id ( __isl_keep isl_vertex vertex)

Definition at line 1046 of file isl_vertices.c.

References isl_size_error.

◆ isl_vertices_copy()

__isl_give isl_vertices * isl_vertices_copy ( __isl_keep isl_vertices vertices)

◆ isl_vertices_foreach_cell()

isl_stat isl_vertices_foreach_cell ( __isl_keep isl_vertices vertices,
isl_stat(*)(__isl_take isl_cell *cell, void *user fn,
void *  user 
)

◆ isl_vertices_foreach_disjoint_cell()

isl_stat isl_vertices_foreach_disjoint_cell ( __isl_keep isl_vertices vertices,
isl_stat(*)(__isl_take isl_cell *cell, void *user fn,
void *  user 
)

◆ isl_vertices_foreach_vertex()

isl_stat isl_vertices_foreach_vertex ( __isl_keep isl_vertices vertices,
isl_stat(*)(__isl_take isl_vertex *vertex, void *user fn,
void *  user 
)

Definition at line 1339 of file isl_vertices.c.

References fn, isl_stat_error, isl_stat_ok, isl_vertex_alloc(), isl_vertices_copy(), and user.

Referenced by test_vertices().

◆ isl_vertices_free()

__isl_null isl_vertices * isl_vertices_free ( __isl_take isl_vertices vertices)

◆ isl_vertices_get_ctx()

isl_ctx * isl_vertices_get_ctx ( __isl_keep isl_vertices vertices)

◆ isl_vertices_get_n_vertices()

isl_size isl_vertices_get_n_vertices ( __isl_keep isl_vertices vertices)

Definition at line 1399 of file isl_vertices.c.

References isl_size_error.

Referenced by test_vertices().

◆ lower_dim_vertices()

static __isl_give isl_vertices * lower_dim_vertices ( __isl_take isl_basic_set bset)
static

◆ lower_dim_vertices_free()

static __isl_give isl_vertices * lower_dim_vertices_free ( __isl_take isl_basic_set bset,
__isl_take isl_basic_set copy,
struct isl_tab tab 
)
static

◆ tab_for_shifted_cone()

static struct isl_tab * tab_for_shifted_cone ( __isl_keep isl_basic_set bset)
static

◆ triangulate()

static isl_stat triangulate ( __isl_keep isl_cell cell,
__isl_keep isl_vec v,
int *  simplex_ids,
int  n_simplex,
int *  other_ids,
int  n_other,
isl_stat(*)(__isl_take isl_cell *simplex, void *user fn,
void *  user 
)
static

◆ update_todo()

static int update_todo ( struct isl_facet_todo first,
struct isl_tab tab 
)
static

◆ vertex_on_facet()

static int vertex_on_facet ( __isl_keep isl_basic_set vertex,
__isl_keep isl_basic_set bset,
int  facet,
__isl_keep isl_vec v 
)
static

◆ vertices_0D()

static __isl_give isl_vertices * vertices_0D ( __isl_keep isl_basic_set bset)
static

◆ vertices_add_chambers()

static __isl_give isl_vertices * vertices_add_chambers ( __isl_take isl_vertices vertices,
int  n_chambers,
struct isl_chamber_list list 
)
static

◆ vertices_empty()

static __isl_give isl_vertices * vertices_empty ( __isl_keep isl_basic_set bset)
static

◆ vertices_from_list()

static __isl_give isl_vertices * vertices_from_list ( __isl_keep isl_basic_set bset,
int  n_vertices,
struct isl_vertex_list list 
)
static