Polly 19.0.0git
Classes | Macros | Enumerations | Functions | Variables
isl_tab_pip.c File Reference
#include <isl_ctx_private.h>
#include "isl_map_private.h"
#include <isl_seq.h>
#include "isl_tab.h"
#include "isl_sample.h"
#include <isl_mat_private.h>
#include <isl_vec_private.h>
#include <isl_aff_private.h>
#include <isl_constraint_private.h>
#include <isl_options_private.h>
#include <isl_config.h>
#include <bset_to_bmap.c>
#include "isl_tab_lexopt_templ.c"

Go to the source code of this file.

Classes

struct  isl_context_op
 
struct  isl_context
 
struct  isl_context_lex
 
struct  isl_partial_sol
 
struct  isl_sol_callback
 
struct  isl_sol
 
struct  isl_sol_map
 
struct  isl_context_gbr
 
struct  isl_gbr_tab_undo
 
struct  isl_constraint_equal_info
 
struct  isl_lexmin_data
 
struct  isl_local_region
 
struct  isl_tab_lexmin
 
struct  isl_sol_pma
 

Macros

#define I_CST   1 << 0
 
#define I_PAR   1 << 1
 
#define I_VAR   1 << 2
 
#define CUT_ALL   1
 
#define CUT_ONE   0
 
#define TYPE   isl_map
 
#define SUFFIX
 
#define TYPE   isl_pw_multi_aff
 
#define SUFFIX   _pw_multi_aff
 

Enumerations

enum  isl_next { isl_next_error = -1 , isl_next_done , isl_next_backtrack , isl_next_handle }
 

Functions

static void sol_free (struct isl_sol *sol)
 
static void sol_push_sol (struct isl_sol *sol, __isl_take isl_basic_set *dom, __isl_take isl_multi_aff *ma)
 
static isl_stat check_final_columns_are_zero (__isl_keep isl_mat *M, unsigned first)
 
static __isl_give isl_multi_affset_from_affine_matrix (__isl_take isl_multi_aff *ma, __isl_take isl_local_space *ls, __isl_take isl_mat *M)
 
static void sol_push_sol_mat (struct isl_sol *sol, __isl_take isl_basic_set *dom, __isl_take isl_mat *M)
 
static void sol_pop_one (struct isl_sol *sol)
 
static struct isl_basic_setsol_domain (struct isl_sol *sol)
 
static isl_bool same_solution (struct isl_partial_sol *s1, struct isl_partial_sol *s2)
 
static void swap_initial (struct isl_sol *sol)
 
static isl_stat combine_initial_into_second (struct isl_sol *sol)
 
static isl_bool equal_on_domain (__isl_keep isl_multi_aff *ma1, __isl_keep isl_multi_aff *ma2, __isl_keep isl_basic_set *dom)
 
static isl_stat combine_initial_if_equal (struct isl_sol *sol)
 
static void sol_pop (struct isl_sol *sol)
 
static void sol_dec_level (struct isl_sol *sol)
 
static isl_stat sol_dec_level_wrap (struct isl_tab_callback *cb)
 
static void sol_inc_level (struct isl_sol *sol)
 
static void scale_rows (struct isl_mat *mat, isl_int m, int n_row)
 
static void sol_add (struct isl_sol *sol, struct isl_tab *tab)
 
static void sol_map_free (struct isl_sol *sol)
 
static void sol_map_add_empty (struct isl_sol_map *sol, struct isl_basic_set *bset)
 
static void sol_map_add_empty_wrap (struct isl_sol *sol, struct isl_basic_set *bset)
 
static void sol_map_add (struct isl_sol_map *sol, __isl_take isl_basic_set *dom, __isl_take isl_multi_aff *ma)
 
static void sol_map_add_wrap (struct isl_sol *sol, __isl_take isl_basic_set *dom, __isl_take isl_multi_aff *ma)
 
static void get_row_parameter_line (struct isl_tab *tab, int row, isl_int *line)
 
static int identical_parameter_line (struct isl_tab *tab, int row1, int row2)
 
static struct isl_vecget_row_parameter_ineq (struct isl_tab *tab, int row)
 
static void normalize_div (__isl_keep isl_vec *div)
 
static struct isl_vecget_row_parameter_div (struct isl_tab *tab, int row)
 
static struct isl_vecget_row_split_div (struct isl_tab *tab, int row)
 
static __isl_give isl_vecineq_for_div (__isl_keep isl_basic_set *bset, unsigned div)
 
static struct isl_tabset_row_cst_to_div (struct isl_tab *tab, int row, int div)
 
static int is_obviously_neg (struct isl_tab *tab, int row)
 
static int is_obviously_nonneg (struct isl_tab *tab, int row)
 
static int lexmin_col_pair (struct isl_tab *tab, int row, int col1, int col2, isl_int tmp)
 
static int is_parameter_var (struct isl_tab *tab, int index)
 
static int col_is_parameter_var (struct isl_tab *tab, int col)
 
static int row_is_parameter_var (struct isl_tab *tab, int row)
 
static int lexmin_pivot_col (struct isl_tab *tab, int row)
 
static int first_neg (struct isl_tab *tab)
 
static void check_lexpos (struct isl_tab *tab) __attribute__((unused))
 
static int report_conflicting_constraint (struct isl_tab *tab, int con)
 
static int report_conflict (struct isl_tab *tab, int row)
 
static int restore_lexmin (struct isl_tab *tab) WARN_UNUSED
 
static int last_var_col_or_int_par_col (struct isl_tab *tab, int row)
 
static struct isl_tabadd_lexmin_valid_eq (struct isl_tab *tab, isl_int *eq)
 
static int is_constant (struct isl_tab *tab, int row)
 
static int is_parametric_constant (struct isl_tab *tab, int row)
 
static int add_lexmin_eq (struct isl_tab *tab, isl_int *eq) WARN_UNUSED
 
static struct isl_tabadd_lexmin_ineq (struct isl_tab *tab, isl_int *ineq)
 
static int integer_parameter (struct isl_tab *tab, int row)
 
static int integer_variable (struct isl_tab *tab, int row)
 
static int integer_constant (struct isl_tab *tab, int row)
 
static int next_non_integer_var (struct isl_tab *tab, int var, int *f)
 
static int first_non_integer_row (struct isl_tab *tab, int *f)
 
static int add_cut (struct isl_tab *tab, int row)
 
static struct isl_tabcut_to_integer_lexmin (struct isl_tab *tab, int cutting_strategy)
 
static struct isl_tabcheck_samples (struct isl_tab *tab, isl_int *ineq, int eq)
 
static int sample_is_finite (struct isl_tab *tab)
 
static struct isl_tabcheck_integer_feasible (struct isl_tab *tab)
 
static int tab_has_valid_sample (struct isl_tab *tab, isl_int *ineq, int eq)
 
static isl_bool context_tab_insert_div (struct isl_tab *tab, int pos, __isl_keep isl_vec *div, isl_stat(*add_ineq)(void *user, isl_int *), void *user)
 
static int add_div (struct isl_tab *tab, struct isl_context *context, __isl_keep isl_vec *div)
 
static int find_div (struct isl_tab *tab, isl_int *div, isl_int denom)
 
static int get_div (struct isl_tab *tab, struct isl_context *context, struct isl_vec *div)
 
static int add_parametric_cut (struct isl_tab *tab, int row, struct isl_context *context)
 
static __isl_give struct isl_tabtab_for_lexmin (__isl_keep isl_basic_map *bmap, __isl_keep isl_basic_set *dom, unsigned M, int max)
 
static int best_split (struct isl_tab *tab, struct isl_tab *context_tab)
 
static struct isl_basic_setcontext_lex_peek_basic_set (struct isl_context *context)
 
static struct isl_tabcontext_lex_peek_tab (struct isl_context *context)
 
static void context_lex_add_eq (struct isl_context *context, isl_int *eq, int check, int update)
 
static void context_lex_add_ineq (struct isl_context *context, isl_int *ineq, int check, int update)
 
static isl_stat context_lex_add_ineq_wrap (void *user, isl_int *ineq)
 
static enum isl_tab_row_sign tab_ineq_sign (struct isl_tab *tab, isl_int *ineq, int strict)
 
static enum isl_tab_row_sign context_lex_ineq_sign (struct isl_context *context, isl_int *ineq, int strict)
 
static int context_lex_test_ineq (struct isl_context *context, isl_int *ineq)
 
static int context_lex_get_div (struct isl_context *context, struct isl_tab *tab, struct isl_vec *div)
 
static isl_bool context_lex_insert_div (struct isl_context *context, int pos, __isl_keep isl_vec *div)
 
static int context_lex_detect_equalities (struct isl_context *context, struct isl_tab *tab)
 
static int context_lex_best_split (struct isl_context *context, struct isl_tab *tab)
 
static int context_lex_is_empty (struct isl_context *context)
 
static void * context_lex_save (struct isl_context *context)
 
static void context_lex_restore (struct isl_context *context, void *save)
 
static void context_lex_discard (void *save)
 
static int context_lex_is_ok (struct isl_context *context)
 
static struct isl_tabtab_detect_nonnegative_parameters (struct isl_tab *tab, struct isl_tab *context_tab)
 
static struct isl_tabcontext_lex_detect_nonnegative_parameters (struct isl_context *context, struct isl_tab *tab)
 
static void context_lex_invalidate (struct isl_context *context)
 
static __isl_null struct isl_contextcontext_lex_free (struct isl_context *context)
 
static struct isl_tabcontext_tab_for_lexmin (__isl_take isl_basic_set *bset)
 
static struct isl_contextisl_context_lex_alloc (struct isl_basic_set *dom)
 
static struct isl_tabcontext_gbr_detect_nonnegative_parameters (struct isl_context *context, struct isl_tab *tab)
 
static struct isl_basic_setcontext_gbr_peek_basic_set (struct isl_context *context)
 
static struct isl_tabcontext_gbr_peek_tab (struct isl_context *context)
 
static void gbr_init_shifted (struct isl_context_gbr *cgbr)
 
static struct isl_vecgbr_get_shifted_sample (struct isl_context_gbr *cgbr)
 
static __isl_give isl_basic_setdrop_constant_terms (__isl_take isl_basic_set *bset)
 
static int use_shifted (struct isl_context_gbr *cgbr)
 
static struct isl_vecgbr_get_sample (struct isl_context_gbr *cgbr)
 
static void check_gbr_integer_feasible (struct isl_context_gbr *cgbr)
 
static struct isl_tabadd_gbr_eq (struct isl_tab *tab, isl_int *eq)
 
static void context_gbr_add_eq (struct isl_context *context, isl_int *eq, int check, int update)
 
static void add_gbr_ineq (struct isl_context_gbr *cgbr, isl_int *ineq)
 
static void context_gbr_add_ineq (struct isl_context *context, isl_int *ineq, int check, int update)
 
static isl_stat context_gbr_add_ineq_wrap (void *user, isl_int *ineq)
 
static enum isl_tab_row_sign context_gbr_ineq_sign (struct isl_context *context, isl_int *ineq, int strict)
 
static int context_gbr_test_ineq (struct isl_context *context, isl_int *ineq)
 
static int last_non_zero_var_col (struct isl_tab *tab, isl_int *p)
 
static int propagate_equalities (struct isl_context_gbr *cgbr, struct isl_tab *tab, unsigned first)
 
static int context_gbr_detect_equalities (struct isl_context *context, struct isl_tab *tab)
 
static int context_gbr_get_div (struct isl_context *context, struct isl_tab *tab, struct isl_vec *div)
 
static isl_bool context_gbr_insert_div (struct isl_context *context, int pos, __isl_keep isl_vec *div)
 
static int context_gbr_best_split (struct isl_context *context, struct isl_tab *tab)
 
static int context_gbr_is_empty (struct isl_context *context)
 
static void * context_gbr_save (struct isl_context *context)
 
static void context_gbr_restore (struct isl_context *context, void *save)
 
static void context_gbr_discard (void *save)
 
static int context_gbr_is_ok (struct isl_context *context)
 
static void context_gbr_invalidate (struct isl_context *context)
 
static __isl_null struct isl_contextcontext_gbr_free (struct isl_context *context)
 
static struct isl_contextisl_context_gbr_alloc (__isl_keep isl_basic_set *dom)
 
static struct isl_contextisl_context_alloc (__isl_keep isl_basic_set *dom)
 
static isl_stat sol_init (struct isl_sol *sol, __isl_keep isl_basic_map *bmap, __isl_keep isl_basic_set *dom, int max)
 
static struct isl_solsol_map_init (__isl_keep isl_basic_map *bmap, __isl_take isl_basic_set *dom, int track_empty, int max)
 
static int is_critical (struct isl_tab *tab, int row)
 
static int is_strict (struct isl_vec *vec)
 
static enum isl_tab_row_sign row_sign (struct isl_tab *tab, struct isl_sol *sol, int row)
 
static void find_solutions (struct isl_sol *sol, struct isl_tab *tab)
 
static void find_in_pos (struct isl_sol *sol, struct isl_tab *tab, isl_int *ineq)
 
static void no_sol_in_strict (struct isl_sol *sol, struct isl_tab *tab, struct isl_vec *ineq)
 
static void reset_any_to_unknown (struct isl_tab *tab)
 
static int sol_has_mergeable_solutions (struct isl_sol *sol)
 
static void find_solutions_main (struct isl_sol *sol, struct isl_tab *tab)
 
static int find_context_div (__isl_keep isl_basic_map *bmap, __isl_keep isl_basic_set *dom, unsigned div)
 
static __isl_give isl_basic_mapalign_context_divs (__isl_take isl_basic_map *bmap, __isl_keep isl_basic_set *dom)
 
static struct isl_solbasic_map_partial_lexopt_base_sol (__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max, struct isl_sol *(*init)(__isl_keep isl_basic_map *bmap, __isl_take isl_basic_set *dom, int track_empty, int max))
 
static __isl_give isl_mapbasic_map_partial_lexopt_base (__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max)
 
static __isl_give int * count_occurrences (__isl_keep isl_basic_map *bmap, int n)
 
static int single_occurrence (int n, isl_int *c, int *occurrences)
 
static int all_single_occurrence (__isl_keep isl_basic_map *bmap, int ineq, int n)
 
static isl_bool constraint_equal (const void *entry, const void *val)
 
static isl_bool parallel_constraints (__isl_keep isl_basic_map *bmap, int *first, int *second)
 
static __isl_give isl_basic_setselect_minimum (__isl_take isl_basic_set *bset, __isl_keep isl_mat *var, int i)
 
static __isl_give isl_setset_minimum (__isl_take isl_space *space, __isl_take isl_mat *var)
 
static isl_bool need_split_basic_map (__isl_keep isl_basic_map *bmap, __isl_keep isl_mat *cst)
 
static isl_bool need_split_basic_set (__isl_keep isl_basic_set *bset, __isl_keep isl_mat *cst)
 
static isl_bool need_split_set (__isl_keep isl_set *set, __isl_keep isl_mat *cst)
 
static __isl_give isl_mapsplit_domain (__isl_take isl_map *opt, __isl_take isl_set *min_expr, __isl_take isl_mat *cst)
 
static __isl_give isl_setsplit (__isl_take isl_set *empty, __isl_take isl_set *min_expr, __isl_take isl_mat *cst)
 
static __isl_give isl_mapbasic_map_partial_lexopt (__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max)
 
static __isl_give isl_mapbasic_map_partial_lexopt_symm_core (__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max, __isl_take isl_mat *cst, __isl_take isl_space *map_space, __isl_take isl_space *set_space)
 
static __isl_give isl_basic_setextract_domain (__isl_keep isl_basic_map *bmap, unsigned flags)
 
static __isl_give isl_vecextract_sample_sequence (struct isl_tab *tab, int pos, int len)
 
static isl_bool region_is_trivial (struct isl_tab *tab, int pos, __isl_keep isl_mat *trivial)
 
static int first_trivial_region (struct isl_lexmin_data *data)
 
static int is_optimal (__isl_keep isl_vec *sol, int n_op)
 
static int force_better_solution (struct isl_tab *tab, __isl_keep isl_vec *sol, int n_op, int n_zero)
 
static isl_stat fix_zero (struct isl_tab *tab, struct isl_trivial_region *region, int dir, struct isl_lexmin_data *data)
 
static struct isl_tabpos_neg (struct isl_tab *tab, struct isl_trivial_region *region, int side, struct isl_lexmin_data *data)
 
static isl_stat init_lexmin_data (struct isl_lexmin_data *data, __isl_keep isl_basic_set *bset)
 
static void update_outer_levels (struct isl_lexmin_data *data, int level)
 
static isl_stat init_local_region (struct isl_local_region *local, int region, struct isl_lexmin_data *data)
 
static int finished_all_cases (struct isl_local_region *local, struct isl_lexmin_data *data)
 
static enum isl_next enter_level (int level, int init, struct isl_lexmin_data *data)
 
static isl_stat better_next_side (struct isl_local_region *local, struct isl_lexmin_data *data)
 
static isl_stat pick_side (struct isl_local_region *local, struct isl_lexmin_data *data)
 
static void clear_lexmin_data (struct isl_lexmin_data *data)
 
__isl_give isl_vecisl_tab_basic_set_non_trivial_lexmin (__isl_take isl_basic_set *bset, int n_op, int n_region, struct isl_trivial_region *region, int(*conflict)(int con, void *user), void *user)
 
__isl_null isl_tab_lexminisl_tab_lexmin_free (__isl_take isl_tab_lexmin *tl)
 
__isl_give isl_tab_lexminisl_tab_lexmin_from_basic_set (__isl_take isl_basic_set *bset)
 
int isl_tab_lexmin_dim (__isl_keep isl_tab_lexmin *tl)
 
__isl_give isl_tab_lexminisl_tab_lexmin_add_eq (__isl_take isl_tab_lexmin *tl, isl_int *eq)
 
__isl_give isl_tab_lexminisl_tab_lexmin_cut_to_integer (__isl_take isl_tab_lexmin *tl)
 
__isl_give isl_vecisl_tab_lexmin_get_solution (__isl_keep isl_tab_lexmin *tl)
 
static void sol_pma_free (struct isl_sol *sol)
 
static void sol_pma_add_empty (struct isl_sol_pma *sol, __isl_take isl_basic_set *bset)
 
static void sol_pma_add (struct isl_sol_pma *sol, __isl_take isl_basic_set *dom, __isl_take isl_multi_aff *maff)
 
static void sol_pma_add_empty_wrap (struct isl_sol *sol, __isl_take isl_basic_set *bset)
 
static void sol_pma_add_wrap (struct isl_sol *sol, __isl_take isl_basic_set *dom, __isl_take isl_multi_aff *ma)
 
static struct isl_solsol_pma_init (__isl_keep isl_basic_map *bmap, __isl_take isl_basic_set *dom, int track_empty, int max)
 
static __isl_give isl_pw_multi_affbasic_map_partial_lexopt_base_pw_multi_aff (__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max)
 
static isl_bool need_substitution (__isl_keep isl_multi_aff *maff)
 
static __isl_give isl_pw_affset_minimum_pa (__isl_take isl_space *space, __isl_take isl_mat *var)
 
static __isl_give isl_pw_multi_affsplit_domain_pma (__isl_take isl_pw_multi_aff *opt, __isl_take isl_pw_aff *min_expr_pa, __isl_take isl_set *min_expr, __isl_take isl_mat *cst)
 
static __isl_give isl_pw_multi_affbasic_map_partial_lexopt_pw_multi_aff (__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max)
 
static __isl_give isl_pw_multi_affbasic_map_partial_lexopt_symm_core_pw_multi_aff (__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, __isl_give isl_set **empty, int max, __isl_take isl_mat *cst, __isl_take isl_space *map_space, __isl_take isl_space *set_space)
 

Variables

struct isl_context_op isl_context_lex_op
 
struct isl_context_op isl_context_gbr_op
 

Macro Definition Documentation

◆ CUT_ALL

#define CUT_ALL   1

Definition at line 1858 of file isl_tab_pip.c.

◆ CUT_ONE

#define CUT_ONE   0

Definition at line 1859 of file isl_tab_pip.c.

◆ I_CST

#define I_CST   1 << 0

Definition at line 1747 of file isl_tab_pip.c.

◆ I_PAR

#define I_PAR   1 << 1

Definition at line 1748 of file isl_tab_pip.c.

◆ I_VAR

#define I_VAR   1 << 2

Definition at line 1749 of file isl_tab_pip.c.

◆ SUFFIX [1/2]

#define SUFFIX

Definition at line 6010 of file isl_tab_pip.c.

◆ SUFFIX [2/2]

#define SUFFIX   _pw_multi_aff

Definition at line 6010 of file isl_tab_pip.c.

◆ TYPE [1/2]

#define TYPE   isl_map

Definition at line 6008 of file isl_tab_pip.c.

◆ TYPE [2/2]

#define TYPE   isl_pw_multi_aff

Definition at line 6008 of file isl_tab_pip.c.

Enumeration Type Documentation

◆ isl_next

enum isl_next
Enumerator
isl_next_error 
isl_next_done 
isl_next_backtrack 
isl_next_handle 

Definition at line 5298 of file isl_tab_pip.c.

Function Documentation

◆ add_cut()

static int add_cut ( struct isl_tab tab,
int  row 
)
static

◆ add_div()

static int add_div ( struct isl_tab tab,
struct isl_context context,
__isl_keep isl_vec div 
)
static

◆ add_gbr_eq()

static struct isl_tab * add_gbr_eq ( struct isl_tab tab,
isl_int eq 
)
static

Definition at line 3092 of file isl_tab_pip.c.

References isl_tab_add_eq(), isl_tab_extend_cons(), and isl_tab_free().

Referenced by context_gbr_add_eq().

◆ add_gbr_ineq()

static void add_gbr_ineq ( struct isl_context_gbr cgbr,
isl_int ineq 
)
static

◆ add_lexmin_eq()

static int add_lexmin_eq ( struct isl_tab tab,
isl_int eq 
)
static

◆ add_lexmin_ineq()

static struct isl_tab * add_lexmin_ineq ( struct isl_tab tab,
isl_int ineq 
)
static

◆ add_lexmin_valid_eq()

static struct isl_tab * add_lexmin_valid_eq ( struct isl_tab tab,
isl_int eq 
)
static

◆ add_parametric_cut()

static int add_parametric_cut ( struct isl_tab tab,
int  row,
struct isl_context context 
)
static

◆ align_context_divs()

static __isl_give isl_basic_map * align_context_divs ( __isl_take isl_basic_map bmap,
__isl_keep isl_basic_set dom 
)
static

◆ all_single_occurrence()

static int all_single_occurrence ( __isl_keep isl_basic_map bmap,
int  ineq,
int  n 
)
static

Definition at line 4536 of file isl_tab_pip.c.

References isl_int_is_zero, and n.

Referenced by SF().

◆ basic_map_partial_lexopt()

static __isl_give isl_map * basic_map_partial_lexopt ( __isl_take isl_basic_map bmap,
__isl_take isl_basic_set dom,
__isl_give isl_set **  empty,
int  max 
)
static

◆ basic_map_partial_lexopt_base()

static __isl_give isl_map * basic_map_partial_lexopt_base ( __isl_take isl_basic_map bmap,
__isl_take isl_basic_set dom,
__isl_give isl_set **  empty,
int  max 
)
static

◆ basic_map_partial_lexopt_base_pw_multi_aff()

static __isl_give isl_pw_multi_aff * basic_map_partial_lexopt_base_pw_multi_aff ( __isl_take isl_basic_map bmap,
__isl_take isl_basic_set dom,
__isl_give isl_set **  empty,
int  max 
)
static

◆ basic_map_partial_lexopt_base_sol()

static struct isl_sol * basic_map_partial_lexopt_base_sol ( __isl_take isl_basic_map bmap,
__isl_take isl_basic_set dom,
__isl_give isl_set **  empty,
int  max,
struct isl_sol *(*)(__isl_keep isl_basic_map *bmap, __isl_take isl_basic_set *dom, int track_empty, int max)  init 
)
static

◆ basic_map_partial_lexopt_pw_multi_aff()

static __isl_give isl_pw_multi_aff * basic_map_partial_lexopt_pw_multi_aff ( __isl_take isl_basic_map bmap,
__isl_take isl_basic_set dom,
__isl_give isl_set **  empty,
int  max 
)
static

◆ basic_map_partial_lexopt_symm_core()

static __isl_give isl_map * basic_map_partial_lexopt_symm_core ( __isl_take isl_basic_map bmap,
__isl_take isl_basic_set dom,
__isl_give isl_set **  empty,
int  max,
__isl_take isl_mat cst,
__isl_take isl_space map_space,
__isl_take isl_space set_space 
)
static

◆ basic_map_partial_lexopt_symm_core_pw_multi_aff()

static __isl_give isl_pw_multi_aff * basic_map_partial_lexopt_symm_core_pw_multi_aff ( __isl_take isl_basic_map bmap,
__isl_take isl_basic_set dom,
__isl_give isl_set **  empty,
int  max,
__isl_take isl_mat cst,
__isl_take isl_space map_space,
__isl_take isl_space set_space 
)
static

Definition at line 5980 of file isl_tab_pip.c.

◆ best_split()

static int best_split ( struct isl_tab tab,
struct isl_tab context_tab 
)
static

◆ better_next_side()

static isl_stat better_next_side ( struct isl_local_region local,
struct isl_lexmin_data data 
)
static

◆ check_final_columns_are_zero()

static isl_stat check_final_columns_are_zero ( __isl_keep isl_mat M,
unsigned  first 
)
static

◆ check_gbr_integer_feasible()

static void check_gbr_integer_feasible ( struct isl_context_gbr cgbr)
static

◆ check_integer_feasible()

static struct isl_tab * check_integer_feasible ( struct isl_tab tab)
static

◆ check_lexpos()

static void check_lexpos ( struct isl_tab tab)
static

◆ check_samples()

static struct isl_tab * check_samples ( struct isl_tab tab,
isl_int ineq,
int  eq 
)
static

◆ clear_lexmin_data()

static void clear_lexmin_data ( struct isl_lexmin_data data)
static

◆ col_is_parameter_var()

static int col_is_parameter_var ( struct isl_tab tab,
int  col 
)
static

◆ combine_initial_if_equal()

static isl_stat combine_initial_if_equal ( struct isl_sol sol)
static

◆ combine_initial_into_second()

static isl_stat combine_initial_into_second ( struct isl_sol sol)
static

◆ constraint_equal()

static isl_bool constraint_equal ( const void *  entry,
const void *  val 
)
static

◆ context_gbr_add_eq()

static void context_gbr_add_eq ( struct isl_context context,
isl_int eq,
int  check,
int  update 
)
static

◆ context_gbr_add_ineq()

static void context_gbr_add_ineq ( struct isl_context context,
isl_int ineq,
int  check,
int  update 
)
static

◆ context_gbr_add_ineq_wrap()

static isl_stat context_gbr_add_ineq_wrap ( void *  user,
isl_int ineq 
)
static

Definition at line 3226 of file isl_tab_pip.c.

References context, context_gbr_add_ineq(), isl_stat_error, isl_stat_ok, and user.

Referenced by context_gbr_insert_div().

◆ context_gbr_best_split()

static int context_gbr_best_split ( struct isl_context context,
struct isl_tab tab 
)
static

◆ context_gbr_detect_equalities()

static int context_gbr_detect_equalities ( struct isl_context context,
struct isl_tab tab 
)
static

◆ context_gbr_detect_nonnegative_parameters()

static struct isl_tab * context_gbr_detect_nonnegative_parameters ( struct isl_context context,
struct isl_tab tab 
)
static

◆ context_gbr_discard()

static void context_gbr_discard ( void *  save)
static

Definition at line 3561 of file isl_tab_pip.c.

◆ context_gbr_free()

static __isl_null struct isl_context * context_gbr_free ( struct isl_context context)
static

◆ context_gbr_get_div()

static int context_gbr_get_div ( struct isl_context context,
struct isl_tab tab,
struct isl_vec div 
)
static

Definition at line 3427 of file isl_tab_pip.c.

References context, and get_div().

◆ context_gbr_ineq_sign()

static enum isl_tab_row_sign context_gbr_ineq_sign ( struct isl_context context,
isl_int ineq,
int  strict 
)
static

Definition at line 3233 of file isl_tab_pip.c.

References context, isl_context_gbr::tab, and tab_ineq_sign().

◆ context_gbr_insert_div()

static isl_bool context_gbr_insert_div ( struct isl_context context,
int  pos,
__isl_keep isl_vec div 
)
static

◆ context_gbr_invalidate()

static void context_gbr_invalidate ( struct isl_context context)
static

Definition at line 3573 of file isl_tab_pip.c.

References context, isl_tab_free(), and isl_context_gbr::tab.

◆ context_gbr_is_empty()

static int context_gbr_is_empty ( struct isl_context context)
static

Definition at line 3481 of file isl_tab_pip.c.

References context, isl_tab::empty, and isl_context_gbr::tab.

◆ context_gbr_is_ok()

static int context_gbr_is_ok ( struct isl_context context)
static

Definition at line 3567 of file isl_tab_pip.c.

References context, and isl_context_gbr::tab.

◆ context_gbr_peek_basic_set()

static struct isl_basic_set * context_gbr_peek_basic_set ( struct isl_context context)
static

Definition at line 2896 of file isl_tab_pip.c.

References context, isl_tab_peek_bset(), and isl_context_gbr::tab.

◆ context_gbr_peek_tab()

static struct isl_tab * context_gbr_peek_tab ( struct isl_context context)
static

Definition at line 2905 of file isl_tab_pip.c.

References context, and isl_context_gbr::tab.

◆ context_gbr_restore()

static void context_gbr_restore ( struct isl_context context,
void *  save 
)
static

◆ context_gbr_save()

static void * context_gbr_save ( struct isl_context context)
static

◆ context_gbr_test_ineq()

static int context_gbr_test_ineq ( struct isl_context context,
isl_int ineq 
)
static

◆ context_lex_add_eq()

static void context_lex_add_eq ( struct isl_context context,
isl_int eq,
int  check,
int  update 
)
static

◆ context_lex_add_ineq()

static void context_lex_add_ineq ( struct isl_context context,
isl_int ineq,
int  check,
int  update 
)
static

◆ context_lex_add_ineq_wrap()

static isl_stat context_lex_add_ineq_wrap ( void *  user,
isl_int ineq 
)
static

Definition at line 2533 of file isl_tab_pip.c.

References context, context_lex_add_ineq(), isl_stat_error, isl_stat_ok, and user.

Referenced by context_lex_insert_div().

◆ context_lex_best_split()

static int context_lex_best_split ( struct isl_context context,
struct isl_tab tab 
)
static

◆ context_lex_detect_equalities()

static int context_lex_detect_equalities ( struct isl_context context,
struct isl_tab tab 
)
static

Definition at line 2644 of file isl_tab_pip.c.

◆ context_lex_detect_nonnegative_parameters()

static struct isl_tab * context_lex_detect_nonnegative_parameters ( struct isl_context context,
struct isl_tab tab 
)
static

◆ context_lex_discard()

static void context_lex_discard ( void *  save)
static

Definition at line 2699 of file isl_tab_pip.c.

◆ context_lex_free()

static __isl_null struct isl_context * context_lex_free ( struct isl_context context)
static

Definition at line 2799 of file isl_tab_pip.c.

References context, isl_tab_free(), and isl_context_lex::tab.

◆ context_lex_get_div()

static int context_lex_get_div ( struct isl_context context,
struct isl_tab tab,
struct isl_vec div 
)
static

Definition at line 2616 of file isl_tab_pip.c.

References context, and get_div().

◆ context_lex_ineq_sign()

static enum isl_tab_row_sign context_lex_ineq_sign ( struct isl_context context,
isl_int ineq,
int  strict 
)
static

Definition at line 2580 of file isl_tab_pip.c.

References context, isl_context_lex::tab, and tab_ineq_sign().

◆ context_lex_insert_div()

static isl_bool context_lex_insert_div ( struct isl_context context,
int  pos,
__isl_keep isl_vec div 
)
static

◆ context_lex_invalidate()

static void context_lex_invalidate ( struct isl_context context)
static

Definition at line 2792 of file isl_tab_pip.c.

References context, isl_tab_free(), and isl_context_lex::tab.

◆ context_lex_is_empty()

static int context_lex_is_empty ( struct isl_context context)
static

Definition at line 2668 of file isl_tab_pip.c.

References context, isl_tab::empty, and isl_context_lex::tab.

◆ context_lex_is_ok()

static int context_lex_is_ok ( struct isl_context context)
static

Definition at line 2703 of file isl_tab_pip.c.

References context, and isl_context_lex::tab.

◆ context_lex_peek_basic_set()

static struct isl_basic_set * context_lex_peek_basic_set ( struct isl_context context)
static

Definition at line 2473 of file isl_tab_pip.c.

References context, isl_tab_peek_bset(), and isl_context_lex::tab.

◆ context_lex_peek_tab()

static struct isl_tab * context_lex_peek_tab ( struct isl_context context)
static

Definition at line 2482 of file isl_tab_pip.c.

References context, and isl_context_lex::tab.

◆ context_lex_restore()

static void context_lex_restore ( struct isl_context context,
void *  save 
)
static

Definition at line 2690 of file isl_tab_pip.c.

References context, isl_tab_free(), isl_tab_rollback(), and isl_context_lex::tab.

◆ context_lex_save()

static void * context_lex_save ( struct isl_context context)
static

◆ context_lex_test_ineq()

static int context_lex_test_ineq ( struct isl_context context,
isl_int ineq 
)
static

◆ context_tab_for_lexmin()

static struct isl_tab * context_tab_for_lexmin ( __isl_take isl_basic_set bset)
static

◆ context_tab_insert_div()

static isl_bool context_tab_insert_div ( struct isl_tab tab,
int  pos,
__isl_keep isl_vec div,
isl_stat(*)(void *user, isl_int *)  add_ineq,
void *  user 
)
static

◆ count_occurrences()

static __isl_give int * count_occurrences ( __isl_keep isl_basic_map bmap,
int  n 
)
static

Definition at line 4490 of file isl_tab_pip.c.

References isl_basic_map_get_ctx(), isl_calloc_array, isl_int_is_zero, and n.

Referenced by parallel_constraints().

◆ cut_to_integer_lexmin()

static struct isl_tab * cut_to_integer_lexmin ( struct isl_tab tab,
int  cutting_strategy 
)
static

◆ drop_constant_terms()

static __isl_give isl_basic_set * drop_constant_terms ( __isl_take isl_basic_set bset)
static

Definition at line 2969 of file isl_tab_pip.c.

References isl_int_set_si.

Referenced by gbr_get_sample().

◆ enter_level()

static enum isl_next enter_level ( int  level,
int  init,
struct isl_lexmin_data data 
)
static

◆ equal_on_domain()

static isl_bool equal_on_domain ( __isl_keep isl_multi_aff ma1,
__isl_keep isl_multi_aff ma2,
__isl_keep isl_basic_set dom 
)
static

◆ extract_domain()

static __isl_give isl_basic_set * extract_domain ( __isl_keep isl_basic_map bmap,
unsigned  flags 
)
static

◆ extract_sample_sequence()

static __isl_give isl_vec * extract_sample_sequence ( struct isl_tab tab,
int  pos,
int  len 
)
static

◆ find_context_div()

static int find_context_div ( __isl_keep isl_basic_map bmap,
__isl_keep isl_basic_set dom,
unsigned  div 
)
static

◆ find_div()

static int find_div ( struct isl_tab tab,
isl_int div,
isl_int  denom 
)
static

◆ find_in_pos()

static void find_in_pos ( struct isl_sol sol,
struct isl_tab tab,
isl_int ineq 
)
static

◆ find_solutions()

static void find_solutions ( struct isl_sol sol,
struct isl_tab tab 
)
static

◆ find_solutions_main()

static void find_solutions_main ( struct isl_sol sol,
struct isl_tab tab 
)
static

◆ finished_all_cases()

static int finished_all_cases ( struct isl_local_region local,
struct isl_lexmin_data data 
)
static

Definition at line 5313 of file isl_tab_pip.c.

References isl_tab::empty, isl_local_region::n, isl_local_region::side, and isl_lexmin_data::tab.

Referenced by enter_level().

◆ first_neg()

static int first_neg ( struct isl_tab tab)
static

◆ first_non_integer_row()

static int first_non_integer_row ( struct isl_tab tab,
int *  f 
)
static

Definition at line 1796 of file isl_tab_pip.c.

References f, isl_tab_var::index, next_non_integer_var(), var(), and isl_tab::var.

Referenced by find_solutions().

◆ first_trivial_region()

static int first_trivial_region ( struct isl_lexmin_data data)
static

◆ fix_zero()

static isl_stat fix_zero ( struct isl_tab tab,
struct isl_trivial_region region,
int  dir,
struct isl_lexmin_data data 
)
static

◆ force_better_solution()

static int force_better_solution ( struct isl_tab tab,
__isl_keep isl_vec sol,
int  n_op,
int  n_zero 
)
static

◆ gbr_get_sample()

static struct isl_vec * gbr_get_sample ( struct isl_context_gbr cgbr)
static

◆ gbr_get_shifted_sample()

static struct isl_vec * gbr_get_shifted_sample ( struct isl_context_gbr cgbr)
static

◆ gbr_init_shifted()

static void gbr_init_shifted ( struct isl_context_gbr cgbr)
static

◆ get_div()

static int get_div ( struct isl_tab tab,
struct isl_context context,
struct isl_vec div 
)
static

◆ get_row_parameter_div()

static struct isl_vec * get_row_parameter_div ( struct isl_tab tab,
int  row 
)
static

◆ get_row_parameter_ineq()

static struct isl_vec * get_row_parameter_ineq ( struct isl_tab tab,
int  row 
)
static

◆ get_row_parameter_line()

static void get_row_parameter_line ( struct isl_tab tab,
int  row,
isl_int line 
)
static

◆ get_row_split_div()

static struct isl_vec * get_row_split_div ( struct isl_tab tab,
int  row 
)
static

◆ identical_parameter_line()

static int identical_parameter_line ( struct isl_tab tab,
int  row1,
int  row2 
)
static

◆ ineq_for_div()

static __isl_give isl_vec * ineq_for_div ( __isl_keep isl_basic_set bset,
unsigned  div 
)
static

◆ init_lexmin_data()

static isl_stat init_lexmin_data ( struct isl_lexmin_data data,
__isl_keep isl_basic_set bset 
)
static

◆ init_local_region()

static isl_stat init_local_region ( struct isl_local_region local,
int  region,
struct isl_lexmin_data data 
)
static

◆ integer_constant()

static int integer_constant ( struct isl_tab tab,
int  row 
)
static

Definition at line 1741 of file isl_tab_pip.c.

References isl_int_is_divisible_by, isl_tab::mat, and isl_mat::row.

Referenced by next_non_integer_var().

◆ integer_parameter()

static int integer_parameter ( struct isl_tab tab,
int  row 
)
static

◆ integer_variable()

static int integer_variable ( struct isl_tab tab,
int  row 
)
static

◆ is_constant()

static int is_constant ( struct isl_tab tab,
int  row 
)
static

◆ is_critical()

static int is_critical ( struct isl_tab tab,
int  row 
)
static

◆ is_obviously_neg()

static int is_obviously_neg ( struct isl_tab tab,
int  row 
)
static

◆ is_obviously_nonneg()

static int is_obviously_nonneg ( struct isl_tab tab,
int  row 
)
static

◆ is_optimal()

static int is_optimal ( __isl_keep isl_vec sol,
int  n_op 
)
static

Definition at line 5089 of file isl_tab_pip.c.

References isl_int_is_zero.

Referenced by enter_level().

◆ is_parameter_var()

static int is_parameter_var ( struct isl_tab tab,
int  index 
)
static

Definition at line 1236 of file isl_tab_pip.c.

References isl_tab::n_div, isl_tab::n_param, and isl_tab::n_var.

Referenced by col_is_parameter_var(), and row_is_parameter_var().

◆ is_parametric_constant()

static int is_parametric_constant ( struct isl_tab tab,
int  row 
)
static

◆ is_strict()

static int is_strict ( struct isl_vec vec)
static

◆ isl_context_alloc()

static struct isl_context * isl_context_alloc ( __isl_keep isl_basic_set dom)
static

◆ isl_context_gbr_alloc()

static struct isl_context * isl_context_gbr_alloc ( __isl_keep isl_basic_set dom)
static

◆ isl_context_lex_alloc()

static struct isl_context * isl_context_lex_alloc ( struct isl_basic_set dom)
static

◆ isl_tab_basic_set_non_trivial_lexmin()

__isl_give isl_vec * isl_tab_basic_set_non_trivial_lexmin ( __isl_take isl_basic_set bset,
int  n_op,
int  n_region,
struct isl_trivial_region region,
int(*)(int con, void *user conflict,
void *  user 
)

◆ isl_tab_lexmin_add_eq()

__isl_give isl_tab_lexmin * isl_tab_lexmin_add_eq ( __isl_take isl_tab_lexmin tl,
isl_int eq 
)

◆ isl_tab_lexmin_cut_to_integer()

__isl_give isl_tab_lexmin * isl_tab_lexmin_cut_to_integer ( __isl_take isl_tab_lexmin tl)

Definition at line 5638 of file isl_tab_pip.c.

References CUT_ONE, cut_to_integer_lexmin(), isl_tab_lexmin_free(), and isl_tab_lexmin::tab.

Referenced by non_neg_lexmin().

◆ isl_tab_lexmin_dim()

int isl_tab_lexmin_dim ( __isl_keep isl_tab_lexmin tl)

Definition at line 5604 of file isl_tab_pip.c.

Referenced by zero_out_node_coef().

◆ isl_tab_lexmin_free()

__isl_null isl_tab_lexmin * isl_tab_lexmin_free ( __isl_take isl_tab_lexmin tl)

◆ isl_tab_lexmin_from_basic_set()

__isl_give isl_tab_lexmin * isl_tab_lexmin_from_basic_set ( __isl_take isl_basic_set bset)

◆ isl_tab_lexmin_get_solution()

__isl_give isl_vec * isl_tab_lexmin_get_solution ( __isl_keep isl_tab_lexmin tl)

Definition at line 5653 of file isl_tab_pip.c.

References isl_tab_get_sample_value(), and isl_vec_alloc().

Referenced by non_empty_solution().

◆ last_non_zero_var_col()

static int last_non_zero_var_col ( struct isl_tab tab,
isl_int p 
)
static

◆ last_var_col_or_int_par_col()

static int last_var_col_or_int_par_col ( struct isl_tab tab,
int  row 
)
static

◆ lexmin_col_pair()

static int lexmin_col_pair ( struct isl_tab tab,
int  row,
int  col1,
int  col2,
isl_int  tmp 
)
static

◆ lexmin_pivot_col()

static int lexmin_pivot_col ( struct isl_tab tab,
int  row 
)
static

◆ need_split_basic_map()

static isl_bool need_split_basic_map ( __isl_keep isl_basic_map bmap,
__isl_keep isl_mat cst 
)
static

◆ need_split_basic_set()

static isl_bool need_split_basic_set ( __isl_keep isl_basic_set bset,
__isl_keep isl_mat cst 
)
static

Definition at line 4794 of file isl_tab_pip.c.

References bset_to_bmap(), and need_split_basic_map().

Referenced by need_split_set().

◆ need_split_set()

static isl_bool need_split_set ( __isl_keep isl_set set,
__isl_keep isl_mat cst 
)
static

Definition at line 4804 of file isl_tab_pip.c.

References isl_bool_false, need_split_basic_set(), set, and split().

Referenced by split_domain_pma().

◆ need_substitution()

static isl_bool need_substitution ( __isl_keep isl_multi_aff maff)
static

Definition at line 5806 of file isl_tab_pip.c.

References isl_aff_involves_dims(), isl_bool_error, isl_bool_false, isl_dim_in, and pos().

Referenced by split_domain_pma().

◆ next_non_integer_var()

static int next_non_integer_var ( struct isl_tab tab,
int  var,
int *  f 
)
static

◆ no_sol_in_strict()

static void no_sol_in_strict ( struct isl_sol sol,
struct isl_tab tab,
struct isl_vec ineq 
)
static

◆ normalize_div()

static void normalize_div ( __isl_keep isl_vec div)
static

◆ parallel_constraints()

static isl_bool parallel_constraints ( __isl_keep isl_basic_map bmap,
int *  first,
int *  second 
)
static

◆ pick_side()

static isl_stat pick_side ( struct isl_local_region local,
struct isl_lexmin_data data 
)
static

◆ pos_neg()

static struct isl_tab * pos_neg ( struct isl_tab tab,
struct isl_trivial_region region,
int  side,
struct isl_lexmin_data data 
)
static

◆ propagate_equalities()

static int propagate_equalities ( struct isl_context_gbr cgbr,
struct isl_tab tab,
unsigned  first 
)
static

◆ region_is_trivial()

static isl_bool region_is_trivial ( struct isl_tab tab,
int  pos,
__isl_keep isl_mat trivial 
)
static

◆ report_conflict()

static int report_conflict ( struct isl_tab tab,
int  row 
)
static

◆ report_conflicting_constraint()

static int report_conflicting_constraint ( struct isl_tab tab,
int  con 
)
static

Definition at line 1374 of file isl_tab_pip.c.

References isl_tab::con, isl_tab::conflict, and isl_tab::conflict_user.

Referenced by report_conflict().

◆ reset_any_to_unknown()

static void reset_any_to_unknown ( struct isl_tab tab)
static

◆ restore_lexmin()

static int restore_lexmin ( struct isl_tab tab)
static

◆ row_is_parameter_var()

static int row_is_parameter_var ( struct isl_tab tab,
int  row 
)
static

Definition at line 1256 of file isl_tab_pip.c.

References is_parameter_var(), and isl_tab::row_var.

Referenced by find_solutions_main().

◆ row_sign()

static enum isl_tab_row_sign row_sign ( struct isl_tab tab,
struct isl_sol sol,
int  row 
)
static

◆ same_solution()

static isl_bool same_solution ( struct isl_partial_sol s1,
struct isl_partial_sol s2 
)
static

Definition at line 392 of file isl_tab_pip.c.

References isl_bool_false, isl_bool_true, and isl_partial_sol::ma.

Referenced by combine_initial_if_equal().

◆ sample_is_finite()

static int sample_is_finite ( struct isl_tab tab)
static

◆ scale_rows()

static void scale_rows ( struct isl_mat mat,
isl_int  m,
int  n_row 
)
static

Definition at line 612 of file isl_tab_pip.c.

References isl_int_is_one, isl_seq_scale(), m, isl_tab::mat, isl_mat::n_col, isl_tab::n_row, and isl_mat::row.

Referenced by sol_add().

◆ select_minimum()

static __isl_give isl_basic_set * select_minimum ( __isl_take isl_basic_set bset,
__isl_keep isl_mat var,
int  i 
)
static

◆ set_from_affine_matrix()

static __isl_give isl_multi_aff * set_from_affine_matrix ( __isl_take isl_multi_aff ma,
__isl_take isl_local_space ls,
__isl_take isl_mat M 
)
static

◆ set_minimum()

static __isl_give isl_set * set_minimum ( __isl_take isl_space space,
__isl_take isl_mat var 
)
static

◆ set_minimum_pa()

static __isl_give isl_pw_aff * set_minimum_pa ( __isl_take isl_space space,
__isl_take isl_mat var 
)
static

◆ set_row_cst_to_div()

static struct isl_tab * set_row_cst_to_div ( struct isl_tab tab,
int  row,
int  div 
)
static

◆ single_occurrence()

static int single_occurrence ( int  n,
isl_int c,
int *  occurrences 
)
static

Definition at line 4519 of file isl_tab_pip.c.

References isl_int_is_zero, and n.

Referenced by parallel_constraints().

◆ sol_add()

static void sol_add ( struct isl_sol sol,
struct isl_tab tab 
)
static

◆ sol_dec_level()

static void sol_dec_level ( struct isl_sol sol)
static

Definition at line 574 of file isl_tab_pip.c.

References isl_sol::error, isl_sol::level, and sol_pop().

Referenced by sol_dec_level_wrap().

◆ sol_dec_level_wrap()

static isl_stat sol_dec_level_wrap ( struct isl_tab_callback cb)
static

Definition at line 584 of file isl_tab_pip.c.

References isl_sol_callback::callback, isl_stat_error, isl_stat_ok, and sol_dec_level().

Referenced by sol_init().

◆ sol_domain()

static struct isl_basic_set * sol_domain ( struct isl_sol sol)
static

◆ sol_free()

static void sol_free ( struct isl_sol sol)
static

◆ sol_has_mergeable_solutions()

static int sol_has_mergeable_solutions ( struct isl_sol sol)
static

◆ sol_inc_level()

static void sol_inc_level ( struct isl_sol sol)
static

◆ sol_init()

static isl_stat sol_init ( struct isl_sol sol,
__isl_keep isl_basic_map bmap,
__isl_keep isl_basic_set dom,
int  max 
)
static

◆ sol_map_add()

static void sol_map_add ( struct isl_sol_map sol,
__isl_take isl_basic_set dom,
__isl_take isl_multi_aff ma 
)
static

◆ sol_map_add_empty()

static void sol_map_add_empty ( struct isl_sol_map sol,
struct isl_basic_set bset 
)
static

◆ sol_map_add_empty_wrap()

static void sol_map_add_empty_wrap ( struct isl_sol sol,
struct isl_basic_set bset 
)
static

Definition at line 797 of file isl_tab_pip.c.

References isl_sol_map::sol, and sol_map_add_empty().

Referenced by sol_map_init().

◆ sol_map_add_wrap()

static void sol_map_add_wrap ( struct isl_sol sol,
__isl_take isl_basic_set dom,
__isl_take isl_multi_aff ma 
)
static

Definition at line 828 of file isl_tab_pip.c.

References ma, isl_sol_map::sol, and sol_map_add().

Referenced by sol_map_init().

◆ sol_map_free()

static void sol_map_free ( struct isl_sol sol)
static

Definition at line 767 of file isl_tab_pip.c.

References isl_sol_map::empty, isl_map_free(), isl_set_free(), isl_sol_map::map, and isl_sol_map::sol.

Referenced by sol_map_init().

◆ sol_map_init()

static struct isl_sol * sol_map_init ( __isl_keep isl_basic_map bmap,
__isl_take isl_basic_set dom,
int  track_empty,
int  max 
)
static

◆ sol_pma_add()

static void sol_pma_add ( struct isl_sol_pma sol,
__isl_take isl_basic_set dom,
__isl_take isl_multi_aff maff 
)
static

◆ sol_pma_add_empty()

static void sol_pma_add_empty ( struct isl_sol_pma sol,
__isl_take isl_basic_set bset 
)
static

◆ sol_pma_add_empty_wrap()

static void sol_pma_add_empty_wrap ( struct isl_sol sol,
__isl_take isl_basic_set bset 
)
static

Definition at line 5716 of file isl_tab_pip.c.

References isl_sol_pma::sol, and sol_pma_add_empty().

Referenced by sol_pma_init().

◆ sol_pma_add_wrap()

static void sol_pma_add_wrap ( struct isl_sol sol,
__isl_take isl_basic_set dom,
__isl_take isl_multi_aff ma 
)
static

Definition at line 5722 of file isl_tab_pip.c.

References ma, isl_sol_pma::sol, and sol_pma_add().

Referenced by sol_pma_init().

◆ sol_pma_free()

static void sol_pma_free ( struct isl_sol sol)
static

◆ sol_pma_init()

static struct isl_sol * sol_pma_init ( __isl_keep isl_basic_map bmap,
__isl_take isl_basic_set dom,
int  track_empty,
int  max 
)
static

◆ sol_pop()

static void sol_pop ( struct isl_sol sol)
static

◆ sol_pop_one()

static void sol_pop_one ( struct isl_sol sol)
static

◆ sol_push_sol()

static void sol_push_sol ( struct isl_sol sol,
__isl_take isl_basic_set dom,
__isl_take isl_multi_aff ma 
)
static

◆ sol_push_sol_mat()

static void sol_push_sol_mat ( struct isl_sol sol,
__isl_take isl_basic_set dom,
__isl_take isl_mat M 
)
static

◆ split()

static __isl_give isl_set * split ( __isl_take isl_set empty,
__isl_take isl_set min_expr,
__isl_take isl_mat cst 
)
static

◆ split_domain()

static __isl_give isl_map * split_domain ( __isl_take isl_map opt,
__isl_take isl_set min_expr,
__isl_take isl_mat cst 
)
static

◆ split_domain_pma()

static __isl_give isl_pw_multi_aff * split_domain_pma ( __isl_take isl_pw_multi_aff opt,
__isl_take isl_pw_aff min_expr_pa,
__isl_take isl_set min_expr,
__isl_take isl_mat cst 
)
static

◆ swap_initial()

static void swap_initial ( struct isl_sol sol)
static

Definition at line 413 of file isl_tab_pip.c.

References isl_partial_sol::next, and isl_sol::partial.

Referenced by combine_initial_if_equal().

◆ tab_detect_nonnegative_parameters()

static struct isl_tab * tab_detect_nonnegative_parameters ( struct isl_tab tab,
struct isl_tab context_tab 
)
static

◆ tab_for_lexmin()

static __isl_give struct isl_tab * tab_for_lexmin ( __isl_keep isl_basic_map bmap,
__isl_keep isl_basic_set dom,
unsigned  M,
int  max 
)
static

◆ tab_has_valid_sample()

static int tab_has_valid_sample ( struct isl_tab tab,
isl_int ineq,
int  eq 
)
static

◆ tab_ineq_sign()

static enum isl_tab_row_sign tab_ineq_sign ( struct isl_tab tab,
isl_int ineq,
int  strict 
)
static

◆ update_outer_levels()

static void update_outer_levels ( struct isl_lexmin_data data,
int  level 
)
static

Definition at line 5263 of file isl_tab_pip.c.

References isl_lexmin_data::local, and isl_local_region::update.

Referenced by enter_level().

◆ use_shifted()

static int use_shifted ( struct isl_context_gbr cgbr)
static

Variable Documentation

◆ isl_context_gbr_op

struct isl_context_op isl_context_gbr_op
Initial value:
= {
}
static struct isl_tab * context_gbr_peek_tab(struct isl_context *context)
Definition: isl_tab_pip.c:2905
static int context_gbr_test_ineq(struct isl_context *context, isl_int *ineq)
Definition: isl_tab_pip.c:3243
static int context_gbr_detect_equalities(struct isl_context *context, struct isl_tab *tab)
Definition: isl_tab_pip.c:3394
static int context_gbr_is_empty(struct isl_context *context)
Definition: isl_tab_pip.c:3481
static int context_gbr_best_split(struct isl_context *context, struct isl_tab *tab)
Definition: isl_tab_pip.c:3465
static void context_gbr_discard(void *save)
Definition: isl_tab_pip.c:3561
static void * context_gbr_save(struct isl_context *context)
Definition: isl_tab_pip.c:3495
static int context_gbr_get_div(struct isl_context *context, struct isl_tab *tab, struct isl_vec *div)
Definition: isl_tab_pip.c:3427
static struct isl_tab * context_gbr_detect_nonnegative_parameters(struct isl_context *context, struct isl_tab *tab)
Definition: isl_tab_pip.c:2887
static __isl_null struct isl_context * context_gbr_free(struct isl_context *context)
Definition: isl_tab_pip.c:3580
static struct isl_basic_set * context_gbr_peek_basic_set(struct isl_context *context)
Definition: isl_tab_pip.c:2896
static void context_gbr_invalidate(struct isl_context *context)
Definition: isl_tab_pip.c:3573
static int context_gbr_is_ok(struct isl_context *context)
Definition: isl_tab_pip.c:3567
static enum isl_tab_row_sign context_gbr_ineq_sign(struct isl_context *context, isl_int *ineq, int strict)
Definition: isl_tab_pip.c:3233
static void context_gbr_restore(struct isl_context *context, void *save)
Definition: isl_tab_pip.c:3527
static isl_bool context_gbr_insert_div(struct isl_context *context, int pos, __isl_keep isl_vec *div)
Definition: isl_tab_pip.c:3433
static void context_gbr_add_eq(struct isl_context *context, isl_int *eq, int check, int update)
Definition: isl_tab_pip.c:3118
static void context_gbr_add_ineq(struct isl_context *context, isl_int *ineq, int check, int update)
Definition: isl_tab_pip.c:3202

Definition at line 3592 of file isl_tab_pip.c.

Referenced by isl_context_gbr_alloc().

◆ isl_context_lex_op

struct isl_context_op isl_context_lex_op
Initial value:
= {
}
static void context_lex_add_ineq(struct isl_context *context, isl_int *ineq, int check, int update)
Definition: isl_tab_pip.c:2511
static int context_lex_is_ok(struct isl_context *context)
Definition: isl_tab_pip.c:2703
static struct isl_tab * context_lex_detect_nonnegative_parameters(struct isl_context *context, struct isl_tab *tab)
Definition: isl_tab_pip.c:2768
static int context_lex_get_div(struct isl_context *context, struct isl_tab *tab, struct isl_vec *div)
Definition: isl_tab_pip.c:2616
static isl_bool context_lex_insert_div(struct isl_context *context, int pos, __isl_keep isl_vec *div)
Definition: isl_tab_pip.c:2630
static int context_lex_best_split(struct isl_context *context, struct isl_tab *tab)
Definition: isl_tab_pip.c:2650
static struct isl_tab * context_lex_peek_tab(struct isl_context *context)
Definition: isl_tab_pip.c:2482
static void context_lex_discard(void *save)
Definition: isl_tab_pip.c:2699
static void context_lex_restore(struct isl_context *context, void *save)
Definition: isl_tab_pip.c:2690
static int context_lex_detect_equalities(struct isl_context *context, struct isl_tab *tab)
Definition: isl_tab_pip.c:2644
static void context_lex_invalidate(struct isl_context *context)
Definition: isl_tab_pip.c:2792
static void context_lex_add_eq(struct isl_context *context, isl_int *eq, int check, int update)
Definition: isl_tab_pip.c:2488
static struct isl_basic_set * context_lex_peek_basic_set(struct isl_context *context)
Definition: isl_tab_pip.c:2473
static enum isl_tab_row_sign context_lex_ineq_sign(struct isl_context *context, isl_int *ineq, int strict)
Definition: isl_tab_pip.c:2580
static __isl_null struct isl_context * context_lex_free(struct isl_context *context)
Definition: isl_tab_pip.c:2799
static int context_lex_test_ineq(struct isl_context *context, isl_int *ineq)
Definition: isl_tab_pip.c:2590
static int context_lex_is_empty(struct isl_context *context)
Definition: isl_tab_pip.c:2668
static void * context_lex_save(struct isl_context *context)
Definition: isl_tab_pip.c:2676

Definition at line 2809 of file isl_tab_pip.c.

Referenced by isl_context_lex_alloc().