Polly 22.0.0git
isl_map_simplify.c File Reference
#include <isl_ctx_private.h>
#include <isl_map_private.h>
#include "isl_equalities.h"
#include <isl/map.h>
#include <isl_seq.h>
#include "isl_tab.h"
#include <isl_space_private.h>
#include <isl_mat_private.h>
#include <isl_vec_private.h>
#include <bset_to_bmap.c>
#include <bset_from_bmap.c>
#include <set_to_map.c>
#include <set_from_map.c>

Go to the source code of this file.

Classes

struct  isl_constraint_index
struct  test_ineq_data

Functions

static void swap_equality (__isl_keep isl_basic_map *bmap, int a, int b)
static void swap_inequality (__isl_keep isl_basic_map *bmap, int a, int b)
__isl_give isl_basic_mapisl_basic_map_normalize_constraints (__isl_take isl_basic_map *bmap)
__isl_give isl_basic_setisl_basic_set_normalize_constraints (__isl_take isl_basic_set *bset)
static __isl_give isl_basic_mapreduce_coefficient_in_div (__isl_take isl_basic_map *bmap, int div, int pos)
static isl_bool needs_reduction (__isl_keep isl_basic_map *bmap, int div, int pos)
static __isl_give isl_basic_mapreduce_div_coefficients_of_div (__isl_take isl_basic_map *bmap, int div)
static __isl_give isl_basic_mapreduce_div_coefficients (__isl_take isl_basic_map *bmap)
static __isl_give isl_basic_mapnormalize_div_expression (__isl_take isl_basic_map *bmap, int div)
static __isl_give isl_basic_mapnormalize_div_expressions (__isl_take isl_basic_map *bmap)
static __isl_give isl_basic_mapeliminate_var_using_equality (__isl_take isl_basic_map *bmap, unsigned pos, isl_int *eq, int keep_divs, int *progress)
static __isl_give isl_basic_mapeliminate_div (__isl_take isl_basic_map *bmap, isl_int *eq, unsigned div, int keep_divs)
static isl_bool ok_to_eliminate_div (__isl_keep isl_basic_map *bmap, isl_int *eq, unsigned div)
static __isl_give isl_basic_mapeliminate_divs_eq (__isl_take isl_basic_map *bmap, int *progress)
static __isl_give isl_basic_mapeliminate_divs_ineq (__isl_take isl_basic_map *bmap, int *progress)
static isl_bool bmap_eq_involves_unknown_divs (__isl_keep isl_basic_map *bmap, int eq, unsigned first, unsigned n)
static __isl_give isl_basic_mapset_div_from_eq (__isl_take isl_basic_map *bmap, int div, int eq, int *progress)
__isl_give isl_basic_mapisl_basic_map_gauss5 (__isl_take isl_basic_map *bmap, int *progress, isl_stat(*swap)(unsigned a, unsigned b, void *user), isl_stat(*drop)(unsigned n, void *user), void *user)
__isl_give isl_basic_mapisl_basic_map_gauss (__isl_take isl_basic_map *bmap, int *progress)
__isl_give isl_basic_setisl_basic_set_gauss (__isl_take isl_basic_set *bset, int *progress)
static unsigned int round_up (unsigned int v)
static isl_stat create_constraint_index (struct isl_constraint_index *ci, __isl_keep isl_basic_map *bmap)
static void constraint_index_free (struct isl_constraint_index *ci)
static int hash_index_ineq (struct isl_constraint_index *ci, isl_int **ineq)
static int hash_index (struct isl_constraint_index *ci, __isl_keep isl_basic_map *bmap, int k)
static int set_hash_index (struct isl_constraint_index *ci, __isl_keep isl_basic_set *bset, int k)
static isl_stat setup_constraint_index (struct isl_constraint_index *ci, __isl_keep isl_basic_set *bset)
static isl_bool constraint_index_is_redundant (struct isl_constraint_index *ci, isl_int *ineq)
static __isl_give isl_basic_mapremove_duplicate_divs (__isl_take isl_basic_map *bmap, int *progress)
static int n_pure_div_eq (__isl_keep isl_basic_map *bmap)
static __isl_give isl_basic_mapnormalize_divs (__isl_take isl_basic_map *bmap, int *progress)
static __isl_give isl_basic_mapset_div_from_lower_bound (__isl_take isl_basic_map *bmap, int div, int ineq)
static isl_bool ok_to_set_div_from_bound (__isl_keep isl_basic_map *bmap, int div, int ineq)
static isl_bool better_div_constraint (__isl_keep isl_basic_map *bmap, int div, int ineq)
static __isl_give isl_basic_mapcheck_for_div_constraints (__isl_take isl_basic_map *bmap, int k, int l, isl_int sum, int *progress)
__isl_give isl_basic_mapisl_basic_map_remove_duplicate_constraints (__isl_take isl_basic_map *bmap, int *progress, int detect_divs)
__isl_give isl_basic_mapisl_basic_map_detect_inequality_pairs (__isl_take isl_basic_map *bmap, int *progress)
static __isl_give isl_basic_mapeliminate_unit_div (__isl_take isl_basic_map *bmap, int div, int *progress)
static __isl_give isl_basic_mapeliminate_selected_unit_divs (__isl_take isl_basic_map *bmap, isl_bool(*select)(__isl_keep isl_basic_map *bmap, int div), int *progress)
static isl_bool is_any_div (__isl_keep isl_basic_map *bmap, int div)
static __isl_give isl_basic_mapeliminate_unit_divs (__isl_take isl_basic_map *bmap, int *progress)
static isl_bool is_pure_unit_div (__isl_keep isl_basic_map *bmap, int div)
__isl_give isl_basic_mapisl_basic_map_eliminate_pure_unit_divs (__isl_take isl_basic_map *bmap)
__isl_give isl_basic_mapisl_basic_map_simplify (__isl_take isl_basic_map *bmap)
__isl_give isl_basic_setisl_basic_set_simplify (__isl_take isl_basic_set *bset)
isl_bool isl_basic_map_is_div_constraint (__isl_keep isl_basic_map *bmap, isl_int *constraint, unsigned div)
static isl_bool div_is_redundant (__isl_keep isl_basic_map *bmap, int div)
static __isl_give isl_basic_mapremove_redundant_divs (__isl_take isl_basic_map *bmap)
__isl_give isl_basic_mapisl_basic_map_mark_final (__isl_take isl_basic_map *bmap)
__isl_give isl_basic_mapisl_basic_map_finalize (__isl_take isl_basic_map *bmap)
__isl_give isl_basic_setisl_basic_set_finalize (__isl_take isl_basic_set *bset)
static __isl_give isl_basic_mapremove_dependent_vars (__isl_take isl_basic_map *bmap, int pos)
__isl_give isl_basic_mapisl_basic_map_eliminate_vars (__isl_take isl_basic_map *bmap, unsigned pos, unsigned n)
__isl_give isl_basic_setisl_basic_set_eliminate_vars (__isl_take isl_basic_set *bset, unsigned pos, unsigned n)
__isl_give isl_basic_mapisl_basic_map_eliminate (__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_setisl_basic_set_eliminate (__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_basic_mapisl_basic_map_drop_constraints_involving_unknown_divs (__isl_take isl_basic_map *bmap)
__isl_give isl_basic_setisl_basic_set_drop_constraints_involving_unknown_divs (__isl_take isl_basic_set *bset)
__isl_give isl_mapisl_map_drop_constraints_involving_unknown_divs (__isl_take isl_map *map)
static void compute_elimination_index (__isl_keep isl_basic_map *bmap, int *elim, unsigned len)
static void set_compute_elimination_index (__isl_keep isl_basic_set *bset, int *elim, unsigned len)
static int reduced_using_equalities (isl_int *dst, isl_int *src, __isl_keep isl_basic_map *bmap, int *elim, unsigned total)
static int set_reduced_using_equalities (isl_int *dst, isl_int *src, __isl_keep isl_basic_set *bset, int *elim, unsigned total)
static __isl_give isl_basic_setisl_basic_set_reduce_using_equalities (__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
static isl_stat mark_shifted_constraints (__isl_keep isl_mat *ineq, __isl_keep isl_basic_set *context, int *row)
static __isl_give isl_basic_setremove_shifted_constraints (__isl_take isl_basic_set *bset, __isl_keep isl_basic_set *context)
static __isl_give isl_basic_mapisl_basic_map_remove_shifted_constraints (__isl_take isl_basic_map *bmap, __isl_take isl_basic_map *context)
static int is_related (isl_int *c, int len, int *relevant)
static __isl_give isl_basic_mapdrop_unrelated_constraints (__isl_take isl_basic_map *bmap, int *relevant)
static void update_groups (int dim, int *group, isl_int *c)
static int * alloc_groups (__isl_keep isl_basic_set *context)
__isl_give isl_basic_mapisl_basic_map_drop_unrelated_constraints (__isl_take isl_basic_map *bmap, __isl_take int *group)
static __isl_give isl_basic_setdrop_irrelevant_constraints (__isl_take isl_basic_set *context, __isl_keep isl_basic_set *bset)
static __isl_give isl_basic_setdrop_irrelevant_constraints_marked (__isl_take isl_basic_set *context, __isl_keep isl_mat *ineq, int *row)
static int all_neg (int *row, int n)
static __isl_give isl_basic_setupdate_ineq (__isl_take isl_basic_set *bset, __isl_keep int *row, struct isl_tab *tab)
static __isl_give isl_basic_setupdate_ineq_free (__isl_take isl_basic_set *bset, __isl_take isl_mat *ineq, __isl_take isl_basic_set *context, __isl_take int *row, struct isl_tab *tab)
static __isl_give isl_basic_setuset_gist_full (__isl_take isl_basic_set *bset, __isl_take isl_mat *ineq, __isl_take isl_basic_set *context)
static __isl_give isl_matextract_ineq (__isl_keep isl_basic_set *bset)
static __isl_give isl_basic_setuset_gist_uncompressed (__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
static __isl_give isl_basic_setreplace_by_empty (__isl_take isl_basic_set *bset)
static __isl_give isl_basic_setuset_gist_compressed (__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context, __isl_take isl_mat *T)
static __isl_give isl_basic_setproject_onto_involved (__isl_take isl_basic_set *bset, __isl_keep isl_basic_set *template)
static __isl_give isl_basic_setuset_gist (__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
static int n_div_eq (__isl_keep isl_basic_map *bmap)
static __isl_give isl_basic_mapbasic_map_from_equalities (__isl_take isl_space *space, __isl_take isl_mat *eq)
static __isl_give isl_matcombined_variable_compression (__isl_keep isl_basic_map *bmap1, int n1, __isl_keep isl_basic_map *bmap2, int n2, int total)
static __isl_give isl_matextract_compressed_stride_constraints (__isl_keep isl_basic_map *bmap, int bmap_n_eq, __isl_keep isl_basic_map *context, int context_n_eq)
static void remove_incomplete_powers (isl_int *g, isl_int c)
static __isl_give isl_basic_mapreduce_stride_constraints (__isl_take isl_basic_map *bmap, int n, __isl_keep isl_mat *A)
static __isl_give isl_basic_mapgist_strides (__isl_take isl_basic_map *bmap, __isl_keep isl_basic_map *context)
__isl_give isl_basic_mapisl_basic_map_gist (__isl_take isl_basic_map *bmap, __isl_take isl_basic_map *context)
__isl_give isl_mapisl_map_gist_basic_map (__isl_take isl_map *map, __isl_take isl_basic_map *context)
static __isl_give isl_basic_mapdrop_inequalities (__isl_take isl_basic_map *bmap, __isl_keep isl_basic_map *context)
static __isl_give isl_basic_mapdrop_equalities (__isl_take isl_basic_map *bmap, __isl_keep isl_basic_map *context)
__isl_give isl_basic_mapisl_basic_map_plain_gist (__isl_take isl_basic_map *bmap, __isl_take isl_basic_map *context)
static __isl_give isl_mapreplace_by_disjunct (__isl_take isl_map *map, int pos, __isl_take isl_basic_map *context)
__isl_give isl_mapisl_map_plain_gist_basic_map (__isl_take isl_map *map, __isl_take isl_basic_map *context)
__isl_give isl_setisl_set_plain_gist_basic_set (__isl_take isl_set *set, __isl_take isl_basic_set *context)
__isl_give isl_mapisl_map_plain_gist (__isl_take isl_map *map, __isl_take isl_map *context)
static __isl_give isl_mapreplace_by_universe (__isl_take isl_map *map, __isl_take isl_map *drop)
__isl_give isl_mapisl_map_gist (__isl_take isl_map *map, __isl_take isl_map *context)
__isl_give isl_basic_setisl_basic_set_gist (__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
__isl_give isl_setisl_set_gist_basic_set (__isl_take isl_set *set, __isl_take isl_basic_set *context)
__isl_give isl_setisl_set_gist_params_basic_set (__isl_take isl_set *set, __isl_take isl_basic_set *context)
__isl_give isl_setisl_set_gist (__isl_take isl_set *set, __isl_take isl_set *context)
__isl_give isl_basic_mapisl_basic_map_gist_domain (__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *context)
__isl_give isl_mapisl_map_gist_domain (__isl_take isl_map *map, __isl_take isl_set *context)
__isl_give isl_mapisl_map_gist_range (__isl_take isl_map *map, __isl_take isl_set *context)
__isl_give isl_mapisl_map_gist_params (__isl_take isl_map *map, __isl_take isl_set *context)
__isl_give isl_setisl_set_gist_params (__isl_take isl_set *set, __isl_take isl_set *context)
isl_bool isl_basic_map_plain_is_disjoint (__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
int isl_basic_set_plain_is_disjoint (__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
static isl_bool all_pairs (__isl_keep isl_map *map1, __isl_keep isl_map *map2, isl_bool(*test)(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2))
static isl_bool isl_map_plain_is_disjoint_global (__isl_keep isl_map *map1, __isl_keep isl_map *map2)
isl_bool isl_map_plain_is_disjoint (__isl_keep isl_map *map1, __isl_keep isl_map *map2)
static isl_bool isl_map_is_disjoint_aligned (__isl_keep isl_map *map1, __isl_keep isl_map *map2)
isl_bool isl_map_is_disjoint (__isl_keep isl_map *map1, __isl_keep isl_map *map2)
isl_bool isl_basic_map_is_disjoint (__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
isl_bool isl_basic_set_is_disjoint (__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
isl_bool isl_set_plain_is_disjoint (__isl_keep isl_set *set1, __isl_keep isl_set *set2)
isl_bool isl_set_is_disjoint (__isl_keep isl_set *set1, __isl_keep isl_set *set2)
static int is_zero_or_one (isl_int v)
static int is_opposite_part (__isl_keep isl_basic_map *bmap, int i, int j, int first, int n)
static isl_bool is_opposite (__isl_keep isl_basic_map *bmap, int i, int j)
static int div_find_coalesce (__isl_keep isl_basic_map *bmap, int *pairs, unsigned div, unsigned l, unsigned u)
static void test_ineq_data_clear (struct test_ineq_data *data)
static isl_bool test_ineq_is_satisfied (__isl_keep isl_basic_map *bmap, struct test_ineq_data *data)
static isl_bool int_between_bounds (__isl_keep isl_basic_map *bmap, int i, int l, int u, struct test_ineq_data *data)
static __isl_give isl_basic_mapdrop_more_redundant_divs (__isl_take isl_basic_map *bmap, __isl_take int *pairs, int n)
static __isl_give isl_basic_mapcoalesce_divs (__isl_take isl_basic_map *bmap, unsigned div1, unsigned div2, unsigned l, unsigned u)
static __isl_give isl_basic_mapcoalesce_or_drop_more_redundant_divs (__isl_take isl_basic_map *bmap, int *pairs, int n)
static int is_parallel_part (__isl_keep isl_basic_map *bmap, int i, int j, int first, int n)
static isl_bool is_parallel_except (__isl_keep isl_basic_map *bmap, int i, int j, int pos)
static isl_bool is_opposite_except (__isl_keep isl_basic_map *bmap, int i, int j, int pos)
static __isl_give isl_basic_mapdrop_redundant_divs_again (__isl_take isl_basic_map *bmap, __isl_take int *pairs, int simplify)
static isl_bool single_unknown (__isl_keep isl_basic_map *bmap, int ineq, int div)
static isl_bool has_coef_one (__isl_keep isl_basic_map *bmap, int div, int ineq)
static __isl_give isl_basic_mapset_eq_and_try_again (__isl_take isl_basic_map *bmap, int ineq, __isl_take int *pairs)
static __isl_give isl_basic_mapdrop_div_and_try_again (__isl_take isl_basic_map *bmap, int div, int ineq1, int ineq2, __isl_take int *pairs)
static void lower_bound_from_parallel (__isl_keep isl_basic_map *bmap, int ineq, int lower, int pos, isl_int *l)
static void lower_bound_from_opposite (__isl_keep isl_basic_map *bmap, int ineq, int upper, int pos, isl_int *u)
static int lower_bound_is_cst (__isl_keep isl_basic_map *bmap, int div, int ineq)
static __isl_give isl_basic_mapfix_cst_lower (__isl_take isl_basic_map *bmap, int div, int ineq, int lower, int *pairs)
static isl_bool any_div_involves_div (__isl_keep isl_basic_map *bmap, int div)
static __isl_give isl_basic_mapisl_basic_map_drop_redundant_divs_ineq (__isl_take isl_basic_map *bmap)
static isl_stat preimage (isl_int *c, __isl_keep isl_mat *T)
static __isl_give isl_basic_mapisl_basic_map_preimage_vars (__isl_take isl_basic_map *bmap, unsigned pos, __isl_take isl_mat *T)
__isl_give isl_basic_mapisl_basic_map_drop_redundant_divs (__isl_take isl_basic_map *bmap)
static isl_bool has_multiple_var_equality (__isl_keep isl_basic_map *bmap)
static __isl_give isl_vecnormalize_constraint (__isl_take isl_vec *v, int *tightened)
__isl_give isl_basic_mapisl_basic_map_reduce_coefficients (__isl_take isl_basic_map *bmap)
__isl_give isl_basic_mapisl_basic_map_shift_div (__isl_take isl_basic_map *bmap, int div, int pos, isl_int shift)

Function Documentation

◆ all_neg()

int all_neg ( int * row,
int n )
static

Definition at line 2418 of file isl_map_simplify.c.

References n.

Referenced by extract_stride_constraint(), and uset_gist_full().

◆ all_pairs()

isl_bool all_pairs ( __isl_keep isl_map * map1,
__isl_keep isl_map * map2,
isl_bool(* test )(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2) )
static

◆ alloc_groups()

◆ any_div_involves_div()

◆ basic_map_from_equalities()

◆ better_div_constraint()

isl_bool better_div_constraint ( __isl_keep isl_basic_map * bmap,
int div,
int ineq )
static

◆ bmap_eq_involves_unknown_divs()

isl_bool bmap_eq_involves_unknown_divs ( __isl_keep isl_basic_map * bmap,
int eq,
unsigned first,
unsigned n )
static

◆ check_for_div_constraints()

◆ coalesce_divs()

◆ coalesce_or_drop_more_redundant_divs()

◆ combined_variable_compression()

◆ compute_elimination_index()

void compute_elimination_index ( __isl_keep isl_basic_map * bmap,
int * elim,
unsigned len )
static

◆ constraint_index_free()

void constraint_index_free ( struct isl_constraint_index * ci)
static

◆ constraint_index_is_redundant()

isl_bool constraint_index_is_redundant ( struct isl_constraint_index * ci,
isl_int * ineq )
static

◆ create_constraint_index()

◆ div_find_coalesce()

◆ div_is_redundant()

◆ drop_div_and_try_again()

__isl_give isl_basic_map * drop_div_and_try_again ( __isl_take isl_basic_map * bmap,
int div,
int ineq1,
int ineq2,
__isl_take int * pairs )
static

◆ drop_equalities()

◆ drop_inequalities()

◆ drop_irrelevant_constraints()

◆ drop_irrelevant_constraints_marked()

◆ drop_more_redundant_divs()

◆ drop_redundant_divs_again()

◆ drop_unrelated_constraints()

◆ eliminate_div()

◆ eliminate_divs_eq()

◆ eliminate_divs_ineq()

◆ eliminate_selected_unit_divs()

__isl_give isl_basic_map * eliminate_selected_unit_divs ( __isl_take isl_basic_map * bmap,
isl_bool(* select )(__isl_keep isl_basic_map *bmap, int div),
int * progress )
static

◆ eliminate_unit_div()

◆ eliminate_unit_divs()

__isl_give isl_basic_map * eliminate_unit_divs ( __isl_take isl_basic_map * bmap,
int * progress )
static

◆ eliminate_var_using_equality()

◆ extract_compressed_stride_constraints()

◆ extract_ineq()

◆ fix_cst_lower()

◆ gist_strides()

◆ has_coef_one()

isl_bool has_coef_one ( __isl_keep isl_basic_map * bmap,
int div,
int ineq )
static

◆ has_multiple_var_equality()

◆ hash_index()

int hash_index ( struct isl_constraint_index * ci,
__isl_keep isl_basic_map * bmap,
int k )
static

Definition at line 757 of file isl_map_simplify.c.

References __isl_keep, and hash_index_ineq().

Referenced by isl_basic_map_remove_duplicate_constraints(), and set_hash_index().

◆ hash_index_ineq()

◆ int_between_bounds()

◆ is_any_div()

isl_bool is_any_div ( __isl_keep isl_basic_map * bmap,
int div )
static

Definition at line 1455 of file isl_map_simplify.c.

References __isl_keep, and isl_bool_true.

Referenced by eliminate_unit_divs().

◆ is_opposite()

isl_bool is_opposite ( __isl_keep isl_basic_map * bmap,
int i,
int j )
static

◆ is_opposite_except()

isl_bool is_opposite_except ( __isl_keep isl_basic_map * bmap,
int i,
int j,
int pos )
static

◆ is_opposite_part()

int is_opposite_part ( __isl_keep isl_basic_map * bmap,
int i,
int j,
int first,
int n )
static

Definition at line 4100 of file isl_map_simplify.c.

References __isl_keep, isl_seq_is_neg(), and n.

Referenced by is_opposite(), and is_opposite_except().

◆ is_parallel_except()

isl_bool is_parallel_except ( __isl_keep isl_basic_map * bmap,
int i,
int j,
int pos )
static

◆ is_parallel_part()

int is_parallel_part ( __isl_keep isl_basic_map * bmap,
int i,
int j,
int first,
int n )
static

Definition at line 4636 of file isl_map_simplify.c.

References __isl_keep, isl_seq_eq(), and n.

Referenced by is_parallel_except().

◆ is_pure_unit_div()

◆ is_related()

int is_related ( isl_int * c,
int len,
int * relevant )
static

Definition at line 2173 of file isl_map_simplify.c.

References isl_int_is_zero.

Referenced by drop_unrelated_constraints().

◆ is_zero_or_one()

int is_zero_or_one ( isl_int v)
static

Definition at line 4092 of file isl_map_simplify.c.

References isl_int_is_negone, isl_int_is_one, and isl_int_is_zero.

Referenced by div_find_coalesce().

◆ isl_basic_map_detect_inequality_pairs()

__isl_give isl_basic_map * isl_basic_map_detect_inequality_pairs ( __isl_take isl_basic_map * bmap,
int * progress )

◆ isl_basic_map_drop_constraints_involving_unknown_divs()

◆ isl_basic_map_drop_redundant_divs()

◆ isl_basic_map_drop_redundant_divs_ineq()

◆ isl_basic_map_drop_unrelated_constraints()

◆ isl_basic_map_eliminate()

◆ isl_basic_map_eliminate_pure_unit_divs()

__isl_give isl_basic_map * isl_basic_map_eliminate_pure_unit_divs ( __isl_take isl_basic_map * bmap)

Definition at line 1510 of file isl_map_simplify.c.

References __isl_give, __isl_take, eliminate_selected_unit_divs(), and is_pure_unit_div().

Referenced by fuse().

◆ isl_basic_map_eliminate_vars()

◆ isl_basic_map_finalize()

__isl_give isl_basic_map * isl_basic_map_finalize ( __isl_take isl_basic_map * bmap)

Definition at line 1678 of file isl_map_simplify.c.

References __isl_give, __isl_take, isl_basic_map_mark_final(), and remove_redundant_divs().

Referenced by basic_map_bound(), basic_map_bound_si(), basic_map_collect_diff(), basic_map_read_polylib(), basic_replace_space_by_local_space(), box_closure_on_domain(), equate_parameter_to_length(), equator(), fuse(), get_aff(), greator(), isl_basic_map_add_known_div_constraints(), isl_basic_map_apply_range(), isl_basic_map_deltas_map(), isl_basic_map_detect_equalities(), isl_basic_map_domain_map(), isl_basic_map_domain_product(), isl_basic_map_drop(), isl_basic_map_eliminate(), isl_basic_map_equal(), isl_basic_map_fix_pos(), isl_basic_map_fix_pos_si(), isl_basic_map_floordiv(), isl_basic_map_from_aff2(), isl_basic_map_from_constraint_matrices(), isl_basic_map_from_qpolynomial(), isl_basic_map_insert_dims(), isl_basic_map_intersect(), isl_basic_map_intersect_domain(), isl_basic_map_intersect_range(), isl_basic_map_less_at(), isl_basic_map_less_or_equal_at(), isl_basic_map_more_at(), isl_basic_map_more_or_equal_at(), isl_basic_map_move_dims(), isl_basic_map_neg(), isl_basic_map_overlying_set(), isl_basic_map_plain_affine_hull(), isl_basic_map_plain_gist(), isl_basic_map_plain_unshifted_simple_hull(), isl_basic_map_preimage_multi_aff(), isl_basic_map_product(), isl_basic_map_project_out(), isl_basic_map_range_map(), isl_basic_map_range_product(), isl_basic_map_realign(), isl_basic_map_remove_divs(), isl_basic_map_reset_space(), isl_basic_map_set_dim_name(), isl_basic_map_set_rational(), isl_basic_map_set_to_empty(), isl_basic_map_set_tuple_id(), isl_basic_map_set_tuple_name(), isl_basic_map_sum(), isl_basic_map_swap_vars(), isl_basic_map_underlying_set(), isl_basic_map_universe(), isl_basic_map_wrap(), isl_basic_set_finalize(), isl_map_affine_hull(), isl_map_oppose(), map_intersect_add_constraint(), map_simple_hull(), path_along_delta(), path_along_steps(), set_path_length(), SF(), update_basic_maps(), var_equal(), var_less(), var_less_or_equal(), var_more(), and var_more_or_equal().

◆ isl_basic_map_gauss()

◆ isl_basic_map_gauss5()

◆ isl_basic_map_gist()

◆ isl_basic_map_gist_domain()

◆ isl_basic_map_is_disjoint()

◆ isl_basic_map_is_div_constraint()

◆ isl_basic_map_mark_final()

◆ isl_basic_map_normalize_constraints()

◆ isl_basic_map_plain_gist()

◆ isl_basic_map_plain_is_disjoint()

◆ isl_basic_map_preimage_vars()

◆ isl_basic_map_reduce_coefficients()

◆ isl_basic_map_remove_duplicate_constraints()

◆ isl_basic_map_remove_shifted_constraints()

◆ isl_basic_map_shift_div()

◆ isl_basic_map_simplify()

◆ isl_basic_set_drop_constraints_involving_unknown_divs()

__isl_give isl_basic_set * isl_basic_set_drop_constraints_involving_unknown_divs ( __isl_take isl_basic_set * bset)

◆ isl_basic_set_eliminate()

__isl_give isl_basic_set * isl_basic_set_eliminate ( __isl_take isl_basic_set * bset,
enum isl_dim_type type,
unsigned first,
unsigned n )

Definition at line 1852 of file isl_map_simplify.c.

References __isl_give, __isl_take, isl_basic_map_eliminate(), isl_basic_set, n, and type.

Referenced by update_enforced().

◆ isl_basic_set_eliminate_vars()

__isl_give isl_basic_set * isl_basic_set_eliminate_vars ( __isl_take isl_basic_set * bset,
unsigned pos,
unsigned n )

◆ isl_basic_set_finalize()

◆ isl_basic_set_gauss()

◆ isl_basic_set_gist()

◆ isl_basic_set_is_disjoint()

isl_bool isl_basic_set_is_disjoint ( __isl_keep isl_basic_set * bset1,
__isl_keep isl_basic_set * bset2 )

Definition at line 4071 of file isl_map_simplify.c.

References __isl_keep, isl_basic_map_is_disjoint(), and isl_basic_set.

Referenced by add_nodes(), and check_pairwise_disjoint().

◆ isl_basic_set_normalize_constraints()

__isl_give isl_basic_set * isl_basic_set_normalize_constraints ( __isl_take isl_basic_set * bset)

◆ isl_basic_set_plain_is_disjoint()

int isl_basic_set_plain_is_disjoint ( __isl_keep isl_basic_set * bset1,
__isl_keep isl_basic_set * bset2 )

◆ isl_basic_set_reduce_using_equalities()

◆ isl_basic_set_simplify()

◆ isl_map_drop_constraints_involving_unknown_divs()

◆ isl_map_gist()

◆ isl_map_gist_basic_map()

◆ isl_map_gist_domain()

◆ isl_map_gist_params()

◆ isl_map_gist_range()

◆ isl_map_is_disjoint()

◆ isl_map_is_disjoint_aligned()

isl_bool isl_map_is_disjoint_aligned ( __isl_keep isl_map * map1,
__isl_keep isl_map * map2 )
static

Definition at line 3979 of file isl_map_simplify.c.

References __isl_keep, all_pairs(), isl_basic_map_is_disjoint(), map1, and map2.

Referenced by isl_map_is_disjoint().

◆ isl_map_plain_gist()

◆ isl_map_plain_gist_basic_map()

◆ isl_map_plain_is_disjoint()

◆ isl_map_plain_is_disjoint_global()

◆ isl_set_gist()

◆ isl_set_gist_basic_set()

◆ isl_set_gist_params()

◆ isl_set_gist_params_basic_set()

◆ isl_set_is_disjoint()

◆ isl_set_plain_gist_basic_set()

◆ isl_set_plain_is_disjoint()

isl_bool isl_set_plain_is_disjoint ( __isl_keep isl_set * set1,
__isl_keep isl_set * set2 )

Definition at line 4077 of file isl_map_simplify.c.

References __isl_keep, isl_map_plain_is_disjoint(), isl_set, set1, set2, and set_to_map.

Referenced by compute_class_domains().

◆ lower_bound_from_opposite()

void lower_bound_from_opposite ( __isl_keep isl_basic_map * bmap,
int ineq,
int upper,
int pos,
isl_int * u )
static

Definition at line 4810 of file isl_map_simplify.c.

References __isl_keep, isl_int_cdiv_q, isl_int_neg, isl_int_sub, and pos().

Referenced by lower_bound_is_cst().

◆ lower_bound_from_parallel()

void lower_bound_from_parallel ( __isl_keep isl_basic_map * bmap,
int ineq,
int lower,
int pos,
isl_int * l )
static

Definition at line 4786 of file isl_map_simplify.c.

References __isl_keep, isl_int_add, isl_int_cdiv_q, isl_int_neg, and pos().

Referenced by fix_cst_lower(), and lower_bound_is_cst().

◆ lower_bound_is_cst()

◆ mark_shifted_constraints()

◆ n_div_eq()

◆ n_pure_div_eq()

int n_pure_div_eq ( __isl_keep isl_basic_map * bmap)
static

◆ needs_reduction()

isl_bool needs_reduction ( __isl_keep isl_basic_map * bmap,
int div,
int pos )
static

◆ normalize_constraint()

◆ normalize_div_expression()

◆ normalize_div_expressions()

__isl_give isl_basic_map * normalize_div_expressions ( __isl_take isl_basic_map * bmap)
static

Definition at line 283 of file isl_map_simplify.c.

References __isl_give, __isl_take, and normalize_div_expression().

Referenced by isl_basic_map_simplify().

◆ normalize_divs()

◆ ok_to_eliminate_div()

isl_bool ok_to_eliminate_div ( __isl_keep isl_basic_map * bmap,
isl_int * eq,
unsigned div )
static

◆ ok_to_set_div_from_bound()

isl_bool ok_to_set_div_from_bound ( __isl_keep isl_basic_map * bmap,
int div,
int ineq )
static

◆ preimage()

◆ project_onto_involved()

◆ reduce_coefficient_in_div()

◆ reduce_div_coefficients()

__isl_give isl_basic_map * reduce_div_coefficients ( __isl_take isl_basic_map * bmap)
static

◆ reduce_div_coefficients_of_div()

__isl_give isl_basic_map * reduce_div_coefficients_of_div ( __isl_take isl_basic_map * bmap,
int div )
static

◆ reduce_stride_constraints()

◆ reduced_using_equalities()

int reduced_using_equalities ( isl_int * dst,
isl_int * src,
__isl_keep isl_basic_map * bmap,
int * elim,
unsigned total )
static

◆ remove_dependent_vars()

◆ remove_duplicate_divs()

◆ remove_incomplete_powers()

void remove_incomplete_powers ( isl_int * g,
isl_int c )
static

◆ remove_redundant_divs()

◆ remove_shifted_constraints()

◆ replace_by_disjunct()

◆ replace_by_empty()

◆ replace_by_universe()

__isl_give isl_map * replace_by_universe ( __isl_take isl_map * map,
__isl_take isl_map * drop )
static

◆ round_up()

unsigned int round_up ( unsigned int v)
static

Definition at line 675 of file isl_map_simplify.c.

Referenced by create_constraint_index(), and remove_duplicate_divs().

◆ set_compute_elimination_index()

void set_compute_elimination_index ( __isl_keep isl_basic_set * bset,
int * elim,
unsigned len )
static

◆ set_div_from_eq()

◆ set_div_from_lower_bound()

◆ set_eq_and_try_again()

◆ set_hash_index()

int set_hash_index ( struct isl_constraint_index * ci,
__isl_keep isl_basic_set * bset,
int k )
static

Definition at line 763 of file isl_map_simplify.c.

References __isl_keep, hash_index(), and isl_basic_set.

Referenced by setup_constraint_index().

◆ set_reduced_using_equalities()

int set_reduced_using_equalities ( isl_int * dst,
isl_int * src,
__isl_keep isl_basic_set * bset,
int * elim,
unsigned total )
static

◆ setup_constraint_index()

◆ single_unknown()

◆ swap_equality()

void swap_equality ( __isl_keep isl_basic_map * bmap,
int a,
int b )
static

Definition at line 31 of file isl_map_simplify.c.

References __isl_keep, a(), b(), and t.

Referenced by isl_basic_map_gauss5().

◆ swap_inequality()

void swap_inequality ( __isl_keep isl_basic_map * bmap,
int a,
int b )
static

Definition at line 38 of file isl_map_simplify.c.

References __isl_keep, a(), b(), and t.

Referenced by isl_basic_map_remove_duplicate_constraints().

◆ test_ineq_data_clear()

void test_ineq_data_clear ( struct test_ineq_data * data)
static

◆ test_ineq_is_satisfied()

◆ update_groups()

void update_groups ( int dim,
int * group,
isl_int * c )
static

Definition at line 2234 of file isl_map_simplify.c.

References isl_int_is_zero.

Referenced by isl_basic_map_drop_unrelated_constraints().

◆ update_ineq()

◆ update_ineq_free()

__isl_give isl_basic_set * update_ineq_free ( __isl_take isl_basic_set * bset,
__isl_take isl_mat * ineq,
__isl_take isl_basic_set * context,
__isl_take int * row,
struct isl_tab * tab )
static

◆ uset_gist()

◆ uset_gist_compressed()

◆ uset_gist_full()

◆ uset_gist_uncompressed()

__isl_give isl_basic_set * uset_gist_uncompressed ( __isl_take isl_basic_set * bset,
__isl_take isl_basic_set * context )
static

Definition at line 2648 of file isl_map_simplify.c.

References __isl_give, __isl_take, context, extract_ineq(), isl_basic_set, and uset_gist_full().

Referenced by uset_gist().