X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_tab.h;h=688804400bcbc40b21255f045990bab813ca5c71;hb=fe8f991cf09ecb1aed45cd2599f23a490ac46501;hp=efe1cac86d462f405c7c1350d1819b1abbd17f4e;hpb=c9aadb2cefbcf40dd19f4b7c463ab096b269d194;p=platform%2Fupstream%2Fisl.git diff --git a/isl_tab.h b/isl_tab.h index efe1cac..6888044 100644 --- a/isl_tab.h +++ b/isl_tab.h @@ -10,10 +10,10 @@ #ifndef ISL_TAB_H #define ISL_TAB_H -#include "isl_lp.h" -#include "isl_map.h" -#include "isl_mat.h" -#include "isl_set.h" +#include +#include +#include +#include struct isl_tab_var { int index; @@ -161,6 +161,10 @@ struct isl_tab { int n_unbounded; struct isl_mat *basis; + int (*conflict)(int con, void *user); + void *conflict_user; + + unsigned strict_redundant : 1; unsigned need_undo : 1; unsigned rational : 1; unsigned empty : 1; @@ -182,7 +186,7 @@ struct isl_basic_map *isl_basic_map_update_from_tab(struct isl_basic_map *bmap, struct isl_tab *tab); struct isl_basic_set *isl_basic_set_update_from_tab(struct isl_basic_set *bset, struct isl_tab *tab); -struct isl_tab *isl_tab_detect_implicit_equalities(struct isl_tab *tab) WARN_UNUSED; +int isl_tab_detect_implicit_equalities(struct isl_tab *tab) WARN_UNUSED; int isl_tab_detect_redundant(struct isl_tab *tab) WARN_UNUSED; #define ISL_TAB_SAVE_DUAL (1 << 0) enum isl_lp_result isl_tab_min(struct isl_tab *tab, @@ -191,8 +195,8 @@ enum isl_lp_result isl_tab_min(struct isl_tab *tab, struct isl_tab *isl_tab_extend(struct isl_tab *tab, unsigned n_new) WARN_UNUSED; int isl_tab_add_ineq(struct isl_tab *tab, isl_int *ineq) WARN_UNUSED; -struct isl_tab *isl_tab_add_eq(struct isl_tab *tab, isl_int *eq) WARN_UNUSED; -struct isl_tab *isl_tab_add_valid_eq(struct isl_tab *tab, isl_int *eq) WARN_UNUSED; +int isl_tab_add_eq(struct isl_tab *tab, isl_int *eq) WARN_UNUSED; +int isl_tab_add_valid_eq(struct isl_tab *tab, isl_int *eq) WARN_UNUSED; int isl_tab_freeze_constraint(struct isl_tab *tab, int con) WARN_UNUSED; @@ -223,12 +227,27 @@ int isl_tab_rollback(struct isl_tab *tab, struct isl_tab_undo *snap) WARN_UNUSED struct isl_tab *isl_tab_relax(struct isl_tab *tab, int con) WARN_UNUSED; int isl_tab_select_facet(struct isl_tab *tab, int con) WARN_UNUSED; -void isl_tab_dump(struct isl_tab *tab, FILE *out, int indent); +void isl_tab_dump(__isl_keep struct isl_tab *tab); struct isl_map *isl_tab_basic_map_partial_lexopt( struct isl_basic_map *bmap, struct isl_basic_set *dom, struct isl_set **empty, int max); +/* An isl_region represents a sequence of consecutive variables. + * pos is the location (starting at 0) of the first variable in the sequence. + */ +struct isl_region { + int pos; + int len; +}; + +__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_region *region, + int (*conflict)(int con, void *user), void *user); +__isl_give isl_vec *isl_tab_basic_set_non_neg_lexmin( + __isl_take isl_basic_set *bset); + /* private */ struct isl_tab_var *isl_tab_var_from_row(struct isl_tab *tab, int i);