Polly 19.0.0git
Classes | Functions
isl_scheduler.c File Reference
#include <isl_ctx_private.h>
#include <isl_map_private.h>
#include <isl_space_private.h>
#include <isl_aff_private.h>
#include <isl/hash.h>
#include <isl/id.h>
#include <isl/constraint.h>
#include <isl/schedule.h>
#include <isl_schedule_constraints.h>
#include <isl/schedule_node.h>
#include <isl_mat_private.h>
#include <isl_vec_private.h>
#include <isl/set.h>
#include <isl_union_set_private.h>
#include <isl_seq.h>
#include <isl_tab.h>
#include <isl_dim_map.h>
#include <isl/map_to_basic_set.h>
#include <isl_sort.h>
#include <isl_options_private.h>
#include <isl_tarjan.h>
#include <isl_morph.h>
#include <isl/ilp.h>
#include <isl_val_private.h>
#include "isl_scheduler.h"
#include "isl_scheduler_clustering.h"

Go to the source code of this file.

Classes

struct  isl_extract_edge_data
 
struct  isl_exploit_lineality_data
 
struct  isl_carry
 
struct  isl_add_all_constraints_data
 
struct  isl_sched_count
 
struct  isl_collect_bounds_data
 

Functions

static isl_bool node_has_tuples (const void *entry, const void *val)
 
int isl_sched_node_scc_exactly (struct isl_sched_node *node, int scc)
 
static int node_scc_at_most (struct isl_sched_node *node, int scc)
 
static int node_scc_at_least (struct isl_sched_node *node, int scc)
 
int isl_sched_edge_has_type (struct isl_sched_edge *edge, enum isl_edge_type type)
 
static void set_type (struct isl_sched_edge *edge, enum isl_edge_type type)
 
static void clear_type (struct isl_sched_edge *edge, enum isl_edge_type type)
 
static int is_validity (struct isl_sched_edge *edge)
 
static void set_validity (struct isl_sched_edge *edge)
 
int isl_sched_edge_is_proximity (struct isl_sched_edge *edge)
 
static int is_local (struct isl_sched_edge *edge)
 
static void set_local (struct isl_sched_edge *edge)
 
static void clear_local (struct isl_sched_edge *edge)
 
static int is_coincidence (struct isl_sched_edge *edge)
 
int isl_sched_edge_is_condition (struct isl_sched_edge *edge)
 
int isl_sched_edge_is_conditional_validity (struct isl_sched_edge *edge)
 
static int is_multi_edge_type (struct isl_sched_edge *edge)
 
static int graph_init_table (isl_ctx *ctx, struct isl_sched_graph *graph)
 
struct isl_sched_nodeisl_sched_graph_find_node (isl_ctx *ctx, struct isl_sched_graph *graph, __isl_keep isl_space *space)
 
int isl_sched_graph_is_node (struct isl_sched_graph *graph, struct isl_sched_node *node)
 
static isl_bool edge_has_src_and_dst (const void *entry, const void *val)
 
static isl_stat graph_edge_table_add (isl_ctx *ctx, struct isl_sched_graph *graph, enum isl_edge_type type, struct isl_sched_edge *edge)
 
static isl_stat graph_edge_tables_add (isl_ctx *ctx, struct isl_sched_graph *graph, struct isl_sched_edge *edge)
 
static int graph_init_edge_tables (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static struct isl_hash_table_entrygraph_find_edge_entry (struct isl_sched_graph *graph, enum isl_edge_type type, struct isl_sched_node *src, struct isl_sched_node *dst)
 
static struct isl_sched_edgegraph_find_edge (struct isl_sched_graph *graph, enum isl_edge_type type, struct isl_sched_node *src, struct isl_sched_node *dst, struct isl_sched_edge *none)
 
static isl_bool graph_has_edge (struct isl_sched_graph *graph, enum isl_edge_type type, struct isl_sched_node *src, struct isl_sched_node *dst)
 
static struct isl_sched_edgegraph_find_matching_edge (struct isl_sched_graph *graph, struct isl_sched_edge *model)
 
static isl_stat graph_remove_edge (struct isl_sched_graph *graph, struct isl_sched_edge *edge)
 
static isl_bool graph_has_any_edge (struct isl_sched_graph *graph, struct isl_sched_node *src, struct isl_sched_node *dst)
 
isl_bool isl_sched_graph_has_validity_edge (struct isl_sched_graph *graph, struct isl_sched_node *src, struct isl_sched_node *dst)
 
static isl_stat graph_alloc (isl_ctx *ctx, struct isl_sched_graph *graph, int n_node, int n_edge)
 
static void clear_node (struct isl_sched_graph *graph, struct isl_sched_node *node)
 
void isl_sched_graph_free (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static isl_stat init_n_maxvar (__isl_take isl_set *set, void *user)
 
static isl_stat compute_max_row (struct isl_sched_graph *graph, __isl_keep isl_schedule_constraints *sc)
 
static isl_bool has_any_defining_equality (__isl_keep isl_basic_set *bset)
 
static isl_stat set_max_coefficient (isl_ctx *ctx, struct isl_sched_node *node)
 
static isl_stat compute_max_coefficient (isl_ctx *ctx, struct isl_sched_node *node)
 
static __isl_give isl_idconstruct_compressed_id (__isl_keep isl_set *set, struct isl_sched_node *node)
 
static __isl_give isl_mapisolate (__isl_take isl_set *set, int pos)
 
static __isl_give isl_valcompute_size (__isl_take isl_set *set, int dim)
 
static isl_stat compress_node (struct isl_sched_node *node, __isl_take isl_set *hull, __isl_take isl_multi_aff *compress, __isl_take isl_pw_multi_aff *decompress)
 
static isl_stat project_out_fixed (struct isl_sched_node *node, __isl_keep isl_set *uncompressed, __isl_take isl_set *set, int pos)
 
static isl_stat compute_sizes (struct isl_sched_node *node, __isl_keep isl_set *uncompressed)
 
static isl_stat compute_sizes_and_max (isl_ctx *ctx, struct isl_sched_node *node, __isl_take isl_set *set)
 
static isl_stat add_node (struct isl_sched_graph *graph, __isl_take isl_set *set, int nvar, int compressed, __isl_take isl_set *hull, __isl_take isl_multi_aff *compress, __isl_take isl_pw_multi_aff *decompress)
 
static isl_stat extract_node (__isl_take isl_set *set, void *user)
 
static int merge_edge (struct isl_sched_edge *edge1, struct isl_sched_edge *edge2)
 
static __isl_give isl_mapinsert_dummy_tags (__isl_take isl_map *map)
 
static __isl_give isl_mapextract_hull (struct isl_sched_node *src, struct isl_sched_node *dst)
 
static __isl_give isl_mapmap_intersect_domains (__isl_take isl_map *tagged, __isl_keep isl_map *map)
 
static struct isl_sched_nodefind_domain_node (isl_ctx *ctx, struct isl_sched_graph *graph, __isl_keep isl_map *map)
 
static struct isl_sched_nodefind_range_node (isl_ctx *ctx, struct isl_sched_graph *graph, __isl_keep isl_map *map)
 
static isl_stat skip_edge (__isl_take isl_map *map, __isl_take isl_map *tagged)
 
static isl_stat extract_edge (__isl_take isl_map *map, void *user)
 
isl_stat isl_sched_graph_init (struct isl_sched_graph *graph, __isl_keep isl_schedule_constraints *sc)
 
static isl_bool node_follows_weak (int i, int j, void *user)
 
static isl_bool node_follows_strong (int i, int j, void *user)
 
isl_stat isl_sched_graph_detect_ccs (isl_ctx *ctx, struct isl_sched_graph *graph, isl_bool(*follows)(int i, int j, void *user))
 
static isl_stat detect_sccs (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static isl_stat detect_wccs (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static int cmp_scc (const void *a, const void *b, void *data)
 
static int sort_sccs (struct isl_sched_graph *graph)
 
static __isl_give isl_basic_setget_size_bounds (struct isl_sched_node *node)
 
static __isl_give isl_mapcompress (__isl_take isl_map *map, struct isl_sched_node *src, struct isl_sched_node *dst)
 
static __isl_give isl_setdrop_coalescing_constraints (__isl_take isl_set *delta, struct isl_sched_node *node)
 
static __isl_give isl_basic_setintra_coefficients (struct isl_sched_graph *graph, struct isl_sched_node *node, __isl_take isl_map *map, int need_param)
 
static __isl_give isl_basic_setinter_coefficients (struct isl_sched_graph *graph, struct isl_sched_edge *edge, __isl_take isl_map *map)
 
static isl_size coef_var_offset (__isl_keep isl_basic_set *coef)
 
static int node_cst_coef_offset (struct isl_sched_node *node)
 
static int node_par_coef_offset (struct isl_sched_node *node)
 
static int node_var_coef_offset (struct isl_sched_node *node)
 
static int node_var_coef_pos (struct isl_sched_node *node, int i)
 
static __isl_give isl_dim_mapintra_dim_map (isl_ctx *ctx, struct isl_sched_graph *graph, struct isl_sched_node *node, int offset, int s)
 
static __isl_give isl_dim_mapinter_dim_map (isl_ctx *ctx, struct isl_sched_graph *graph, struct isl_sched_node *src, struct isl_sched_node *dst, int offset, int s)
 
static __isl_give isl_basic_setadd_constraints_dim_map (__isl_take isl_basic_set *dst, __isl_take isl_basic_set *src, __isl_take isl_dim_map *dim_map)
 
static isl_stat add_intra_validity_constraints (struct isl_sched_graph *graph, struct isl_sched_edge *edge)
 
static isl_stat add_inter_validity_constraints (struct isl_sched_graph *graph, struct isl_sched_edge *edge)
 
static isl_stat add_intra_proximity_constraints (struct isl_sched_graph *graph, struct isl_sched_edge *edge, int s, int local)
 
static isl_stat add_inter_proximity_constraints (struct isl_sched_graph *graph, struct isl_sched_edge *edge, int s, int local)
 
static int force_zero (struct isl_sched_edge *edge, int use_coincidence)
 
static int add_all_validity_constraints (struct isl_sched_graph *graph, int use_coincidence)
 
static int add_all_proximity_constraints (struct isl_sched_graph *graph, int use_coincidence)
 
static __isl_give isl_matnormalize_independent (__isl_take isl_mat *indep)
 
static __isl_give isl_matextract_linear_schedule (struct isl_sched_node *node)
 
isl_stat isl_sched_node_update_vmap (struct isl_sched_node *node)
 
static int is_any_validity (struct isl_sched_edge *edge)
 
static int edge_multiplicity (struct isl_sched_edge *edge, int use_coincidence)
 
static int parametric_intra_edge_multiplicity (struct isl_sched_edge *edge, int use_coincidence)
 
static isl_stat update_count (__isl_take isl_basic_set *bset, int f, int *n_eq, int *n_ineq)
 
static isl_stat count_map_constraints (struct isl_sched_graph *graph, struct isl_sched_edge *edge, __isl_take isl_map *map, int *n_eq, int *n_ineq, int use_coincidence)
 
static int count_constraints (struct isl_sched_graph *graph, int *n_eq, int *n_ineq, int use_coincidence)
 
static isl_stat count_bound_constant_constraints (isl_ctx *ctx, struct isl_sched_graph *graph, int *n_eq, int *n_ineq)
 
static isl_stat add_bound_constant_constraints (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static int count_bound_coefficient_constraints (isl_ctx *ctx, struct isl_sched_graph *graph, int *n_eq, int *n_ineq)
 
static isl_stat node_add_coefficient_constraints (isl_ctx *ctx, struct isl_sched_graph *graph, struct isl_sched_node *node, int max)
 
static isl_stat add_bound_coefficient_constraints (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static isl_stat add_sum_constraint (struct isl_sched_graph *graph, int sum_pos, int first, int n)
 
static isl_stat add_param_sum_constraint (struct isl_sched_graph *graph, int sum_pos)
 
static isl_stat add_var_sum_constraint (struct isl_sched_graph *graph, int sum_pos)
 
static isl_stat setup_lp (isl_ctx *ctx, struct isl_sched_graph *graph, int use_coincidence)
 
static int check_conflict (int con, void *user)
 
static int needs_row (struct isl_sched_graph *graph, struct isl_sched_node *node)
 
static __isl_give isl_matconstruct_trivial (__isl_keep isl_mat *indep)
 
static __isl_give isl_vecsolve_lp (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static __isl_give isl_vecextract_var_coef (struct isl_sched_node *node, __isl_keep isl_vec *sol)
 
static int update_schedule (struct isl_sched_graph *graph, __isl_take isl_vec *sol, int coincident)
 
static __isl_give isl_affextract_schedule_row (__isl_take isl_local_space *ls, struct isl_sched_node *node, int row)
 
__isl_give isl_multi_affisl_sched_node_extract_partial_schedule_multi_aff (struct isl_sched_node *node, int first, int n)
 
static __isl_give isl_multi_affnode_extract_schedule_multi_aff (struct isl_sched_node *node)
 
static __isl_give isl_mapnode_extract_schedule (struct isl_sched_node *node)
 
static __isl_give isl_mapspecializer (struct isl_sched_node *src, struct isl_sched_node *dst)
 
static __isl_give isl_union_mapintersect_domains (__isl_take isl_union_map *umap, __isl_keep isl_map *map)
 
static isl_stat update_edge (isl_ctx *ctx, struct isl_sched_graph *graph, struct isl_sched_edge *edge)
 
static int domain_intersects (__isl_keep isl_union_map *umap, __isl_keep isl_union_set *uset)
 
static int range_intersects (__isl_keep isl_union_map *umap, __isl_keep isl_union_set *uset)
 
static int is_condition_false (struct isl_sched_edge *edge)
 
static int unconditionalize_adjacent_validity (struct isl_sched_graph *graph, __isl_take isl_union_set *condition_source, __isl_take isl_union_set *condition_sink)
 
static int update_edges (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static void next_band (struct isl_sched_graph *graph)
 
static __isl_give isl_union_setisl_sched_graph_domain (isl_ctx *ctx, struct isl_sched_graph *graph, int(*pred)(struct isl_sched_node *node, int data), int data)
 
__isl_give isl_union_setisl_sched_graph_extract_scc (isl_ctx *ctx, struct isl_sched_graph *graph, int scc)
 
__isl_give isl_union_set_listisl_sched_graph_extract_sccs (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static __isl_give isl_union_set_listextract_split (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static isl_stat copy_nodes (struct isl_sched_graph *dst, struct isl_sched_graph *src, int(*node_pred)(struct isl_sched_node *node, int data), int data)
 
static isl_stat copy_edges (isl_ctx *ctx, struct isl_sched_graph *dst, struct isl_sched_graph *src, int(*edge_pred)(struct isl_sched_edge *edge, int data), int data)
 
isl_stat isl_sched_graph_compute_maxvar (struct isl_sched_graph *graph)
 
isl_stat isl_sched_graph_extract_sub_graph (isl_ctx *ctx, struct isl_sched_graph *graph, int(*node_pred)(struct isl_sched_node *node, int data), int(*edge_pred)(struct isl_sched_edge *edge, int data), int data, struct isl_sched_graph *sub)
 
static __isl_give isl_schedule_nodecompute_schedule (isl_schedule_node *node, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodecompute_schedule_wcc (isl_schedule_node *node, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodecompute_sub_schedule (__isl_take isl_schedule_node *node, isl_ctx *ctx, struct isl_sched_graph *graph, int(*node_pred)(struct isl_sched_node *node, int data), int(*edge_pred)(struct isl_sched_edge *edge, int data), int data, int wcc)
 
int isl_sched_edge_scc_exactly (struct isl_sched_edge *edge, int scc)
 
static int edge_dst_scc_at_most (struct isl_sched_edge *edge, int scc)
 
static int edge_src_scc_at_least (struct isl_sched_edge *edge, int scc)
 
static isl_stat reset_band (struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodecompute_split_schedule (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodeinsert_current_band (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph, int permutable)
 
static __isl_give isl_schedule_nodecompute_next_band (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph, int permutable)
 
static isl_stat add_intra_constraints (struct isl_sched_graph *graph, struct isl_sched_node *node, __isl_take isl_basic_set *coef, int pos)
 
static isl_stat add_inter_constraints (struct isl_sched_graph *graph, struct isl_sched_node *src, struct isl_sched_node *dst, __isl_take isl_basic_set *coef, int pos)
 
static void isl_carry_clear (struct isl_carry *carry)
 
static struct isl_sched_nodegraph_find_compressed_node (isl_ctx *ctx, struct isl_sched_graph *graph, __isl_keep isl_space *space)
 
static isl_stat lp_add_intra (__isl_take isl_basic_set *coef, void *user)
 
static isl_stat lp_add_inter (__isl_take isl_basic_set *coef, void *user)
 
static isl_stat add_all_constraints (isl_ctx *ctx, struct isl_sched_graph *graph, __isl_keep isl_basic_set_list *intra, __isl_keep isl_basic_set_list *inter, int carry_inter)
 
static isl_stat bset_update_count (__isl_take isl_basic_set *bset, void *user)
 
static isl_stat count_all_constraints (__isl_keep isl_basic_set_list *intra, __isl_keep isl_basic_set_list *inter, int *n_eq, int *n_ineq)
 
static isl_stat setup_carry_lp (isl_ctx *ctx, struct isl_sched_graph *graph, int n_edge, __isl_keep isl_basic_set_list *intra, __isl_keep isl_basic_set_list *inter, int carry_inter)
 
static __isl_give isl_schedule_nodecompute_component_schedule (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph, int wcc)
 
static __isl_give isl_schedule_nodesplit_scaled (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph)
 
static int is_trivial (struct isl_sched_node *node, __isl_keep isl_vec *sol)
 
static int is_any_trivial (struct isl_sched_graph *graph, __isl_keep isl_vec *sol)
 
static int find_node_coalescing (struct isl_sched_node *node, __isl_keep isl_vec *sol)
 
static __isl_give isl_tab_lexminzero_out_node_coef (__isl_take isl_tab_lexmin *tl, struct isl_sched_node *node, int pos)
 
static __isl_give isl_vecnon_empty_solution (__isl_keep isl_tab_lexmin *tl)
 
static int carries_dependences (__isl_keep isl_vec *sol, int n_edge)
 
static __isl_give isl_vecnon_neg_lexmin (struct isl_sched_graph *graph, __isl_take isl_basic_set *lp, int n_edge, int want_integral)
 
static __isl_give isl_union_mapadd_intra (__isl_take isl_union_map *umap, struct isl_sched_edge *edge)
 
static __isl_give isl_union_mapadd_inter (__isl_take isl_union_map *umap, struct isl_sched_edge *edge)
 
static isl_stat collect_bounds (__isl_take isl_set *set, void *user)
 
static __isl_give isl_union_setunion_drop_coalescing_constraints (isl_ctx *ctx, struct isl_sched_graph *graph, __isl_take isl_union_set *delta)
 
static isl_stat add_non_trivial_lineality (__isl_take isl_basic_set *lineality, struct isl_exploit_lineality_data *data)
 
static isl_stat add_lineality (__isl_take isl_set *set, void *user)
 
static __isl_give isl_union_setexploit_intra_lineality (__isl_take isl_union_set *intra, struct isl_exploit_lineality_data *data)
 
static __isl_give isl_union_mapexploit_inter_lineality (__isl_take isl_union_map *inter, struct isl_exploit_lineality_data *data)
 
static __isl_give isl_union_mapcollect_validity (struct isl_sched_graph *graph, __isl_give isl_union_map *(*add)(__isl_take isl_union_map *umap, struct isl_sched_edge *edge), int coincidence)
 
static __isl_give isl_basic_set_listcollect_intra_validity (isl_ctx *ctx, struct isl_sched_graph *graph, int coincidence, struct isl_exploit_lineality_data *data)
 
static __isl_give isl_basic_set_listcollect_inter_validity (struct isl_sched_graph *graph, int coincidence, struct isl_exploit_lineality_data *data)
 
static __isl_give isl_veccompute_carrying_sol_coef (isl_ctx *ctx, struct isl_sched_graph *graph, int n_edge, __isl_keep isl_basic_set_list *intra, __isl_keep isl_basic_set_list *inter, int want_integral, int carry_inter)
 
static __isl_give isl_veccompute_carrying_sol (isl_ctx *ctx, struct isl_sched_graph *graph, int fallback, int coincidence)
 
static __isl_give isl_schedule_nodecarry (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph, int fallback, int coincidence)
 
static __isl_give isl_schedule_nodecarry_fallback (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph, int coincidence)
 
static __isl_give isl_schedule_nodecarry_feautrier (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodecarry_dependences (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodecarry_coincidence (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodesort_statements (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph, int initialized)
 
static int has_validity_edges (struct isl_sched_graph *graph)
 
static int need_feautrier_step (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodecompute_schedule_wcc_feautrier (isl_schedule_node *node, struct isl_sched_graph *graph)
 
static void clear_local_edges (struct isl_sched_graph *graph)
 
static int need_condition_check (struct isl_sched_graph *graph)
 
static int has_any_coincidence (struct isl_sched_graph *graph)
 
static __isl_give isl_mapfinal_row (struct isl_sched_node *node)
 
static int is_violated (struct isl_sched_graph *graph, int edge_index)
 
static int has_adjacent_true_conditions (struct isl_sched_graph *graph, __isl_keep isl_union_set *conditional_source, __isl_keep isl_union_set *conditional_sink)
 
static int has_violated_conditional_constraint (isl_ctx *ctx, struct isl_sched_graph *graph)
 
__isl_give isl_schedule_nodeisl_schedule_node_compute_finish_band (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph, int initialized)
 
isl_stat isl_schedule_node_compute_wcc_band (isl_ctx *ctx, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodecompute_schedule_wcc_whole (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph)
 
static __isl_give isl_schedule_nodecompute_schedule_wcc (__isl_take isl_schedule_node *node, struct isl_sched_graph *graph)
 
__isl_give isl_scheduleisl_schedule_constraints_compute_schedule (__isl_take isl_schedule_constraints *sc)
 
__isl_give isl_scheduleisl_union_set_compute_schedule (__isl_take isl_union_set *domain, __isl_take isl_union_map *validity, __isl_take isl_union_map *proximity)
 

Function Documentation

◆ add_all_constraints()

static isl_stat add_all_constraints ( isl_ctx ctx,
struct isl_sched_graph graph,
__isl_keep isl_basic_set_list intra,
__isl_keep isl_basic_set_list inter,
int  carry_inter 
)
static

◆ add_all_proximity_constraints()

static int add_all_proximity_constraints ( struct isl_sched_graph graph,
int  use_coincidence 
)
static

◆ add_all_validity_constraints()

static int add_all_validity_constraints ( struct isl_sched_graph graph,
int  use_coincidence 
)
static

◆ add_bound_coefficient_constraints()

static isl_stat add_bound_coefficient_constraints ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ add_bound_constant_constraints()

static isl_stat add_bound_constant_constraints ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ add_constraints_dim_map()

static __isl_give isl_basic_set * add_constraints_dim_map ( __isl_take isl_basic_set dst,
__isl_take isl_basic_set src,
__isl_take isl_dim_map dim_map 
)
static

◆ add_inter()

static __isl_give isl_union_map * add_inter ( __isl_take isl_union_map umap,
struct isl_sched_edge edge 
)
static

◆ add_inter_constraints()

static isl_stat add_inter_constraints ( struct isl_sched_graph graph,
struct isl_sched_node src,
struct isl_sched_node dst,
__isl_take isl_basic_set coef,
int  pos 
)
static

◆ add_inter_proximity_constraints()

static isl_stat add_inter_proximity_constraints ( struct isl_sched_graph graph,
struct isl_sched_edge edge,
int  s,
int  local 
)
static

◆ add_inter_validity_constraints()

static isl_stat add_inter_validity_constraints ( struct isl_sched_graph graph,
struct isl_sched_edge edge 
)
static

◆ add_intra()

static __isl_give isl_union_map * add_intra ( __isl_take isl_union_map umap,
struct isl_sched_edge edge 
)
static

◆ add_intra_constraints()

static isl_stat add_intra_constraints ( struct isl_sched_graph graph,
struct isl_sched_node node,
__isl_take isl_basic_set coef,
int  pos 
)
static

◆ add_intra_proximity_constraints()

static isl_stat add_intra_proximity_constraints ( struct isl_sched_graph graph,
struct isl_sched_edge edge,
int  s,
int  local 
)
static

◆ add_intra_validity_constraints()

static isl_stat add_intra_validity_constraints ( struct isl_sched_graph graph,
struct isl_sched_edge edge 
)
static

◆ add_lineality()

static isl_stat add_lineality ( __isl_take isl_set set,
void *  user 
)
static

◆ add_node()

static isl_stat add_node ( struct isl_sched_graph graph,
__isl_take isl_set set,
int  nvar,
int  compressed,
__isl_take isl_set hull,
__isl_take isl_multi_aff compress,
__isl_take isl_pw_multi_aff decompress 
)
static

◆ add_non_trivial_lineality()

static isl_stat add_non_trivial_lineality ( __isl_take isl_basic_set lineality,
struct isl_exploit_lineality_data data 
)
static

◆ add_param_sum_constraint()

static isl_stat add_param_sum_constraint ( struct isl_sched_graph graph,
int  sum_pos 
)
static

◆ add_sum_constraint()

static isl_stat add_sum_constraint ( struct isl_sched_graph graph,
int  sum_pos,
int  first,
int  n 
)
static

◆ add_var_sum_constraint()

static isl_stat add_var_sum_constraint ( struct isl_sched_graph graph,
int  sum_pos 
)
static

◆ bset_update_count()

static isl_stat bset_update_count ( __isl_take isl_basic_set bset,
void *  user 
)
static

Definition at line 4135 of file isl_scheduler.c.

References isl_sched_count::n_eq, isl_sched_count::n_ineq, update_count(), and user.

Referenced by count_all_constraints().

◆ carries_dependences()

static int carries_dependences ( __isl_keep isl_vec sol,
int  n_edge 
)
static

Definition at line 4530 of file isl_scheduler.c.

References isl_int_cmp_si, isl_int_divexact, and isl_int_set_si.

Referenced by non_neg_lexmin().

◆ carry()

static __isl_give isl_schedule_node * carry ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph,
int  fallback,
int  coincidence 
)
static

◆ carry_coincidence()

static __isl_give isl_schedule_node * carry_coincidence ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph 
)
static

Definition at line 5246 of file isl_scheduler.c.

References carry_fallback().

Referenced by isl_schedule_node_compute_finish_band().

◆ carry_dependences()

static __isl_give isl_schedule_node * carry_dependences ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph 
)
static

Definition at line 5235 of file isl_scheduler.c.

References carry_fallback().

Referenced by isl_schedule_node_compute_finish_band(), and sort_statements().

◆ carry_fallback()

static __isl_give isl_schedule_node * carry_fallback ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph,
int  coincidence 
)
static

Definition at line 5213 of file isl_scheduler.c.

References carry().

Referenced by carry_coincidence(), and carry_dependences().

◆ carry_feautrier()

static __isl_give isl_schedule_node * carry_feautrier ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph 
)
static

Definition at line 5225 of file isl_scheduler.c.

References carry().

Referenced by compute_schedule_wcc_feautrier().

◆ check_conflict()

static int check_conflict ( int  con,
void *  user 
)
static

◆ clear_local()

static void clear_local ( struct isl_sched_edge edge)
static

Definition at line 138 of file isl_scheduler.c.

References clear_type(), and isl_edge_local.

Referenced by clear_local_edges().

◆ clear_local_edges()

static void clear_local_edges ( struct isl_sched_graph graph)
static

◆ clear_node()

static void clear_node ( struct isl_sched_graph graph,
struct isl_sched_node node 
)
static

◆ clear_type()

static void clear_type ( struct isl_sched_edge edge,
enum isl_edge_type  type 
)
static

Definition at line 96 of file isl_scheduler.c.

References ISL_FL_CLR, type, and isl_sched_edge::types.

Referenced by clear_local().

◆ cmp_scc()

static int cmp_scc ( const void *  a,
const void *  b,
void *  data 
)
static

Definition at line 1487 of file isl_scheduler.c.

References a(), b(), isl_sched_graph::node, and isl_sched_node::scc.

Referenced by sort_sccs().

◆ coef_var_offset()

static isl_size coef_var_offset ( __isl_keep isl_basic_set coef)
static

◆ collect_bounds()

static isl_stat collect_bounds ( __isl_take isl_set set,
void *  user 
)
static

◆ collect_inter_validity()

static __isl_give isl_basic_set_list * collect_inter_validity ( struct isl_sched_graph graph,
int  coincidence,
struct isl_exploit_lineality_data data 
)
static

◆ collect_intra_validity()

static __isl_give isl_basic_set_list * collect_intra_validity ( isl_ctx ctx,
struct isl_sched_graph graph,
int  coincidence,
struct isl_exploit_lineality_data data 
)
static

◆ collect_validity()

static __isl_give isl_union_map * collect_validity ( struct isl_sched_graph graph,
__isl_give isl_union_map *(*)(__isl_take isl_union_map *umap, struct isl_sched_edge *edge)  add,
int  coincidence 
)
static

◆ compress()

static __isl_give isl_map * compress ( __isl_take isl_map map,
struct isl_sched_node src,
struct isl_sched_node dst 
)
static

◆ compress_node()

static isl_stat compress_node ( struct isl_sched_node node,
__isl_take isl_set hull,
__isl_take isl_multi_aff compress,
__isl_take isl_pw_multi_aff decompress 
)
static

◆ compute_carrying_sol()

static __isl_give isl_vec * compute_carrying_sol ( isl_ctx ctx,
struct isl_sched_graph graph,
int  fallback,
int  coincidence 
)
static

◆ compute_carrying_sol_coef()

static __isl_give isl_vec * compute_carrying_sol_coef ( isl_ctx ctx,
struct isl_sched_graph graph,
int  n_edge,
__isl_keep isl_basic_set_list intra,
__isl_keep isl_basic_set_list inter,
int  want_integral,
int  carry_inter 
)
static

◆ compute_component_schedule()

static __isl_give isl_schedule_node * compute_component_schedule ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph,
int  wcc 
)
static

◆ compute_max_coefficient()

static isl_stat compute_max_coefficient ( isl_ctx ctx,
struct isl_sched_node node 
)
static

◆ compute_max_row()

static isl_stat compute_max_row ( struct isl_sched_graph graph,
__isl_keep isl_schedule_constraints sc 
)
static

◆ compute_next_band()

static __isl_give isl_schedule_node * compute_next_band ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph,
int  permutable 
)
static

◆ compute_schedule()

static __isl_give isl_schedule_node * compute_schedule ( isl_schedule_node node,
struct isl_sched_graph graph 
)
static

◆ compute_schedule_wcc() [1/2]

static __isl_give isl_schedule_node * compute_schedule_wcc ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph 
)
static

◆ compute_schedule_wcc() [2/2]

static __isl_give isl_schedule_node * compute_schedule_wcc ( isl_schedule_node node,
struct isl_sched_graph graph 
)
static

◆ compute_schedule_wcc_feautrier()

static __isl_give isl_schedule_node * compute_schedule_wcc_feautrier ( isl_schedule_node node,
struct isl_sched_graph graph 
)
static

Definition at line 5350 of file isl_scheduler.c.

References carry_feautrier().

Referenced by compute_schedule_wcc().

◆ compute_schedule_wcc_whole()

static __isl_give isl_schedule_node * compute_schedule_wcc_whole ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph 
)
static

◆ compute_size()

static __isl_give isl_val * compute_size ( __isl_take isl_set set,
int  dim 
)
static

◆ compute_sizes()

static isl_stat compute_sizes ( struct isl_sched_node node,
__isl_keep isl_set uncompressed 
)
static

◆ compute_sizes_and_max()

static isl_stat compute_sizes_and_max ( isl_ctx ctx,
struct isl_sched_node node,
__isl_take isl_set set 
)
static

◆ compute_split_schedule()

static __isl_give isl_schedule_node * compute_split_schedule ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph 
)
static

◆ compute_sub_schedule()

static __isl_give isl_schedule_node * compute_sub_schedule ( __isl_take isl_schedule_node node,
isl_ctx ctx,
struct isl_sched_graph graph,
int(*)(struct isl_sched_node *node, int data)  node_pred,
int(*)(struct isl_sched_edge *edge, int data)  edge_pred,
int  data,
int  wcc 
)
static

◆ construct_compressed_id()

static __isl_give isl_id * construct_compressed_id ( __isl_keep isl_set set,
struct isl_sched_node node 
)
static

◆ construct_trivial()

static __isl_give isl_mat * construct_trivial ( __isl_keep isl_mat indep)
static

◆ copy_edges()

static isl_stat copy_edges ( isl_ctx ctx,
struct isl_sched_graph dst,
struct isl_sched_graph src,
int(*)(struct isl_sched_edge *edge, int data)  edge_pred,
int  data 
)
static

◆ copy_nodes()

static isl_stat copy_nodes ( struct isl_sched_graph dst,
struct isl_sched_graph src,
int(*)(struct isl_sched_node *node, int data)  node_pred,
int  data 
)
static

◆ count_all_constraints()

static isl_stat count_all_constraints ( __isl_keep isl_basic_set_list intra,
__isl_keep isl_basic_set_list inter,
int *  n_eq,
int *  n_ineq 
)
static

◆ count_bound_coefficient_constraints()

static int count_bound_coefficient_constraints ( isl_ctx ctx,
struct isl_sched_graph graph,
int *  n_eq,
int *  n_ineq 
)
static

◆ count_bound_constant_constraints()

static isl_stat count_bound_constant_constraints ( isl_ctx ctx,
struct isl_sched_graph graph,
int *  n_eq,
int *  n_ineq 
)
static

Definition at line 2448 of file isl_scheduler.c.

References isl_options_get_schedule_max_constant_term(), isl_stat_ok, and isl_sched_graph::n.

Referenced by setup_lp().

◆ count_constraints()

static int count_constraints ( struct isl_sched_graph graph,
int *  n_eq,
int *  n_ineq,
int  use_coincidence 
)
static

◆ count_map_constraints()

static isl_stat count_map_constraints ( struct isl_sched_graph graph,
struct isl_sched_edge edge,
__isl_take isl_map map,
int *  n_eq,
int *  n_ineq,
int  use_coincidence 
)
static

◆ detect_sccs()

static isl_stat detect_sccs ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ detect_wccs()

static isl_stat detect_wccs ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ domain_intersects()

static int domain_intersects ( __isl_keep isl_union_map umap,
__isl_keep isl_union_set uset 
)
static

◆ drop_coalescing_constraints()

static __isl_give isl_set * drop_coalescing_constraints ( __isl_take isl_set delta,
struct isl_sched_node node 
)
static

◆ edge_dst_scc_at_most()

static int edge_dst_scc_at_most ( struct isl_sched_edge edge,
int  scc 
)
static

◆ edge_has_src_and_dst()

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

◆ edge_multiplicity()

static int edge_multiplicity ( struct isl_sched_edge edge,
int  use_coincidence 
)
static

Definition at line 2311 of file isl_scheduler.c.

References force_zero(), is_validity(), and isl_sched_edge_is_proximity().

Referenced by count_map_constraints().

◆ edge_src_scc_at_least()

static int edge_src_scc_at_least ( struct isl_sched_edge edge,
int  scc 
)
static

◆ exploit_inter_lineality()

static __isl_give isl_union_map * exploit_inter_lineality ( __isl_take isl_union_map inter,
struct isl_exploit_lineality_data data 
)
static

◆ exploit_intra_lineality()

static __isl_give isl_union_set * exploit_intra_lineality ( __isl_take isl_union_set intra,
struct isl_exploit_lineality_data data 
)
static

◆ extract_edge()

static isl_stat extract_edge ( __isl_take isl_map map,
void *  user 
)
static

◆ extract_hull()

static __isl_give isl_map * extract_hull ( struct isl_sched_node src,
struct isl_sched_node dst 
)
static

◆ extract_linear_schedule()

static __isl_give isl_mat * extract_linear_schedule ( struct isl_sched_node node)
static

◆ extract_node()

static isl_stat extract_node ( __isl_take isl_set set,
void *  user 
)
static

◆ extract_schedule_row()

static __isl_give isl_aff * extract_schedule_row ( __isl_take isl_local_space ls,
struct isl_sched_node node,
int  row 
)
static

◆ extract_split()

static __isl_give isl_union_set_list * extract_split ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ extract_var_coef()

static __isl_give isl_vec * extract_var_coef ( struct isl_sched_node node,
__isl_keep isl_vec sol 
)
static

◆ final_row()

static __isl_give isl_map * final_row ( struct isl_sched_node node)
static

◆ find_domain_node()

static struct isl_sched_node * find_domain_node ( isl_ctx ctx,
struct isl_sched_graph graph,
__isl_keep isl_map map 
)
static

◆ find_node_coalescing()

static int find_node_coalescing ( struct isl_sched_node node,
__isl_keep isl_vec sol 
)
static

◆ find_range_node()

static struct isl_sched_node * find_range_node ( isl_ctx ctx,
struct isl_sched_graph graph,
__isl_keep isl_map map 
)
static

◆ force_zero()

static int force_zero ( struct isl_sched_edge edge,
int  use_coincidence 
)
static

◆ get_size_bounds()

static __isl_give isl_basic_set * get_size_bounds ( struct isl_sched_node node)
static

◆ graph_alloc()

static isl_stat graph_alloc ( isl_ctx ctx,
struct isl_sched_graph graph,
int  n_node,
int  n_edge 
)
static

◆ graph_edge_table_add()

static isl_stat graph_edge_table_add ( isl_ctx ctx,
struct isl_sched_graph graph,
enum isl_edge_type  type,
struct isl_sched_edge edge 
)
static

◆ graph_edge_tables_add()

static isl_stat graph_edge_tables_add ( isl_ctx ctx,
struct isl_sched_graph graph,
struct isl_sched_edge edge 
)
static

◆ graph_find_compressed_node()

static struct isl_sched_node * graph_find_compressed_node ( isl_ctx ctx,
struct isl_sched_graph graph,
__isl_keep isl_space space 
)
static

◆ graph_find_edge()

static struct isl_sched_edge * graph_find_edge ( struct isl_sched_graph graph,
enum isl_edge_type  type,
struct isl_sched_node src,
struct isl_sched_node dst,
struct isl_sched_edge none 
)
static

◆ graph_find_edge_entry()

static struct isl_hash_table_entry * graph_find_edge_entry ( struct isl_sched_graph graph,
enum isl_edge_type  type,
struct isl_sched_node src,
struct isl_sched_node dst 
)
static

◆ graph_find_matching_edge()

static struct isl_sched_edge * graph_find_matching_edge ( struct isl_sched_graph graph,
struct isl_sched_edge model 
)
static

◆ graph_has_any_edge()

static isl_bool graph_has_any_edge ( struct isl_sched_graph graph,
struct isl_sched_node src,
struct isl_sched_node dst 
)
static

Definition at line 419 of file isl_scheduler.c.

References graph_has_edge(), isl_edge_first, and isl_edge_last.

Referenced by node_follows_weak().

◆ graph_has_edge()

static isl_bool graph_has_edge ( struct isl_sched_graph graph,
enum isl_edge_type  type,
struct isl_sched_node src,
struct isl_sched_node dst 
)
static

◆ graph_init_edge_tables()

static int graph_init_edge_tables ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ graph_init_table()

static int graph_init_table ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ graph_remove_edge()

static isl_stat graph_remove_edge ( struct isl_sched_graph graph,
struct isl_sched_edge edge 
)
static

◆ has_adjacent_true_conditions()

static int has_adjacent_true_conditions ( struct isl_sched_graph graph,
__isl_keep isl_union_set conditional_source,
__isl_keep isl_union_set conditional_sink 
)
static

◆ has_any_coincidence()

static int has_any_coincidence ( struct isl_sched_graph graph)
static

◆ has_any_defining_equality()

static isl_bool has_any_defining_equality ( __isl_keep isl_basic_set bset)
static

◆ has_validity_edges()

static int has_validity_edges ( struct isl_sched_graph graph)
static

◆ has_violated_conditional_constraint()

static int has_violated_conditional_constraint ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ init_n_maxvar()

static isl_stat init_n_maxvar ( __isl_take isl_set set,
void *  user 
)
static

◆ insert_current_band()

static __isl_give isl_schedule_node * insert_current_band ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph,
int  permutable 
)
static

◆ insert_dummy_tags()

static __isl_give isl_map * insert_dummy_tags ( __isl_take isl_map map)
static

◆ inter_coefficients()

static __isl_give isl_basic_set * inter_coefficients ( struct isl_sched_graph graph,
struct isl_sched_edge edge,
__isl_take isl_map map 
)
static

◆ inter_dim_map()

static __isl_give isl_dim_map * inter_dim_map ( isl_ctx ctx,
struct isl_sched_graph graph,
struct isl_sched_node src,
struct isl_sched_node dst,
int  offset,
int  s 
)
static

◆ intersect_domains()

static __isl_give isl_union_map * intersect_domains ( __isl_take isl_union_map umap,
__isl_keep isl_map map 
)
static

◆ intra_coefficients()

static __isl_give isl_basic_set * intra_coefficients ( struct isl_sched_graph graph,
struct isl_sched_node node,
__isl_take isl_map map,
int  need_param 
)
static

◆ intra_dim_map()

static __isl_give isl_dim_map * intra_dim_map ( isl_ctx ctx,
struct isl_sched_graph graph,
struct isl_sched_node node,
int  offset,
int  s 
)
static

◆ is_any_trivial()

static int is_any_trivial ( struct isl_sched_graph graph,
__isl_keep isl_vec sol 
)
static

Definition at line 4381 of file isl_scheduler.c.

References is_trivial(), isl_sched_graph::n, needs_row(), and isl_sched_graph::node.

Referenced by carry().

◆ is_any_validity()

static int is_any_validity ( struct isl_sched_edge edge)
static

◆ is_coincidence()

static int is_coincidence ( struct isl_sched_edge edge)
static

◆ is_condition_false()

static int is_condition_false ( struct isl_sched_edge edge)
static

◆ is_local()

static int is_local ( struct isl_sched_edge edge)
static

◆ is_multi_edge_type()

static int is_multi_edge_type ( struct isl_sched_edge edge)
static

◆ is_trivial()

static int is_trivial ( struct isl_sched_node node,
__isl_keep isl_vec sol 
)
static

◆ is_validity()

static int is_validity ( struct isl_sched_edge edge)
static

◆ is_violated()

static int is_violated ( struct isl_sched_graph graph,
int  edge_index 
)
static

◆ isl_carry_clear()

static void isl_carry_clear ( struct isl_carry carry)
static

Definition at line 3977 of file isl_scheduler.c.

References carry(), isl_union_map_free(), and isl_union_set_free().

Referenced by compute_carrying_sol().

◆ isl_sched_edge_has_type()

int isl_sched_edge_has_type ( struct isl_sched_edge edge,
enum isl_edge_type  type 
)

◆ isl_sched_edge_is_condition()

int isl_sched_edge_is_condition ( struct isl_sched_edge edge)

◆ isl_sched_edge_is_conditional_validity()

int isl_sched_edge_is_conditional_validity ( struct isl_sched_edge edge)

◆ isl_sched_edge_is_proximity()

int isl_sched_edge_is_proximity ( struct isl_sched_edge edge)

◆ isl_sched_edge_scc_exactly()

int isl_sched_edge_scc_exactly ( struct isl_sched_edge edge,
int  scc 
)

◆ isl_sched_graph_compute_maxvar()

isl_stat isl_sched_graph_compute_maxvar ( struct isl_sched_graph graph)

◆ isl_sched_graph_detect_ccs()

isl_stat isl_sched_graph_detect_ccs ( isl_ctx ctx,
struct isl_sched_graph graph,
isl_bool(*)(int i, int j, void *user follows 
)

◆ isl_sched_graph_domain()

static __isl_give isl_union_set * isl_sched_graph_domain ( isl_ctx ctx,
struct isl_sched_graph graph,
int(*)(struct isl_sched_node *node, int data)  pred,
int  data 
)
static

◆ isl_sched_graph_extract_scc()

__isl_give isl_union_set * isl_sched_graph_extract_scc ( isl_ctx ctx,
struct isl_sched_graph graph,
int  scc 
)

◆ isl_sched_graph_extract_sccs()

__isl_give isl_union_set_list * isl_sched_graph_extract_sccs ( isl_ctx ctx,
struct isl_sched_graph graph 
)

◆ isl_sched_graph_extract_sub_graph()

isl_stat isl_sched_graph_extract_sub_graph ( isl_ctx ctx,
struct isl_sched_graph graph,
int(*)(struct isl_sched_node *node, int data)  node_pred,
int(*)(struct isl_sched_edge *edge, int data)  edge_pred,
int  data,
struct isl_sched_graph sub 
)

◆ isl_sched_graph_find_node()

struct isl_sched_node * isl_sched_graph_find_node ( isl_ctx ctx,
struct isl_sched_graph graph,
__isl_keep isl_space space 
)

◆ isl_sched_graph_free()

void isl_sched_graph_free ( isl_ctx ctx,
struct isl_sched_graph graph 
)

◆ isl_sched_graph_has_validity_edge()

isl_bool isl_sched_graph_has_validity_edge ( struct isl_sched_graph graph,
struct isl_sched_node src,
struct isl_sched_node dst 
)

◆ isl_sched_graph_init()

isl_stat isl_sched_graph_init ( struct isl_sched_graph graph,
__isl_keep isl_schedule_constraints sc 
)

◆ isl_sched_graph_is_node()

int isl_sched_graph_is_node ( struct isl_sched_graph graph,
struct isl_sched_node node 
)

◆ isl_sched_node_extract_partial_schedule_multi_aff()

__isl_give isl_multi_aff * isl_sched_node_extract_partial_schedule_multi_aff ( struct isl_sched_node node,
int  first,
int  n 
)

◆ isl_sched_node_scc_exactly()

int isl_sched_node_scc_exactly ( struct isl_sched_node node,
int  scc 
)

◆ isl_sched_node_update_vmap()

isl_stat isl_sched_node_update_vmap ( struct isl_sched_node node)

◆ isl_schedule_constraints_compute_schedule()

__isl_give isl_schedule * isl_schedule_constraints_compute_schedule ( __isl_take isl_schedule_constraints sc)

◆ isl_schedule_node_compute_finish_band()

__isl_give isl_schedule_node * isl_schedule_node_compute_finish_band ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph,
int  initialized 
)

◆ isl_schedule_node_compute_wcc_band()

isl_stat isl_schedule_node_compute_wcc_band ( isl_ctx ctx,
struct isl_sched_graph graph 
)

◆ isl_union_set_compute_schedule()

__isl_give isl_schedule * isl_union_set_compute_schedule ( __isl_take isl_union_set domain,
__isl_take isl_union_map validity,
__isl_take isl_union_map proximity 
)

◆ isolate()

static __isl_give isl_map * isolate ( __isl_take isl_set set,
int  pos 
)
static

◆ lp_add_inter()

static isl_stat lp_add_inter ( __isl_take isl_basic_set coef,
void *  user 
)
static

◆ lp_add_intra()

static isl_stat lp_add_intra ( __isl_take isl_basic_set coef,
void *  user 
)
static

◆ map_intersect_domains()

static __isl_give isl_map * map_intersect_domains ( __isl_take isl_map tagged,
__isl_keep isl_map map 
)
static

Definition at line 1180 of file isl_scheduler.c.

References isl_map_copy(), isl_map_intersect_domain(), isl_map_wrap(), isl_map_zip(), map, and set.

Referenced by extract_edge().

◆ merge_edge()

static int merge_edge ( struct isl_sched_edge edge1,
struct isl_sched_edge edge2 
)
static

◆ need_condition_check()

static int need_condition_check ( struct isl_sched_graph graph)
static

◆ need_feautrier_step()

static int need_feautrier_step ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ needs_row()

static int needs_row ( struct isl_sched_graph graph,
struct isl_sched_node node 
)
static

◆ next_band()

static void next_band ( struct isl_sched_graph graph)
static

◆ node_add_coefficient_constraints()

static isl_stat node_add_coefficient_constraints ( isl_ctx ctx,
struct isl_sched_graph graph,
struct isl_sched_node node,
int  max 
)
static

◆ node_cst_coef_offset()

static int node_cst_coef_offset ( struct isl_sched_node node)
static

◆ node_extract_schedule()

static __isl_give isl_map * node_extract_schedule ( struct isl_sched_node node)
static

◆ node_extract_schedule_multi_aff()

static __isl_give isl_multi_aff * node_extract_schedule_multi_aff ( struct isl_sched_node node)
static

◆ node_follows_strong()

static isl_bool node_follows_strong ( int  i,
int  j,
void *  user 
)
static

Definition at line 1427 of file isl_scheduler.c.

References isl_sched_graph_has_validity_edge(), isl_sched_graph::node, and user.

Referenced by detect_sccs().

◆ node_follows_weak()

static isl_bool node_follows_weak ( int  i,
int  j,
void *  user 
)
static

Definition at line 1413 of file isl_scheduler.c.

References f, graph_has_any_edge(), isl_sched_graph::node, and user.

Referenced by detect_wccs().

◆ node_has_tuples()

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

◆ node_par_coef_offset()

static int node_par_coef_offset ( struct isl_sched_node node)
static

◆ node_scc_at_least()

static int node_scc_at_least ( struct isl_sched_node node,
int  scc 
)
static

Definition at line 74 of file isl_scheduler.c.

References isl_sched_node::scc.

Referenced by compute_split_schedule(), and extract_split().

◆ node_scc_at_most()

static int node_scc_at_most ( struct isl_sched_node node,
int  scc 
)
static

Definition at line 69 of file isl_scheduler.c.

References isl_sched_node::scc.

Referenced by compute_split_schedule(), and extract_split().

◆ node_var_coef_offset()

static int node_var_coef_offset ( struct isl_sched_node node)
static

◆ node_var_coef_pos()

static int node_var_coef_pos ( struct isl_sched_node node,
int  i 
)
static

◆ non_empty_solution()

static __isl_give isl_vec * non_empty_solution ( __isl_keep isl_tab_lexmin tl)
static

◆ non_neg_lexmin()

static __isl_give isl_vec * non_neg_lexmin ( struct isl_sched_graph graph,
__isl_take isl_basic_set lp,
int  n_edge,
int  want_integral 
)
static

◆ normalize_independent()

static __isl_give isl_mat * normalize_independent ( __isl_take isl_mat indep)
static

Definition at line 2221 of file isl_scheduler.c.

References isl_mat_lexnonneg_rows(), and isl_mat_reverse_gauss().

Referenced by isl_sched_node_update_vmap().

◆ parametric_intra_edge_multiplicity()

static int parametric_intra_edge_multiplicity ( struct isl_sched_edge edge,
int  use_coincidence 
)
static

◆ project_out_fixed()

static isl_stat project_out_fixed ( struct isl_sched_node node,
__isl_keep isl_set uncompressed,
__isl_take isl_set set,
int  pos 
)
static

◆ range_intersects()

static int range_intersects ( __isl_keep isl_union_map umap,
__isl_keep isl_union_set uset 
)
static

◆ reset_band()

static isl_stat reset_band ( struct isl_sched_graph graph)
static

◆ set_local()

static void set_local ( struct isl_sched_edge edge)
static

Definition at line 131 of file isl_scheduler.c.

References isl_edge_local, and set_type.

Referenced by has_adjacent_true_conditions().

◆ set_max_coefficient()

static isl_stat set_max_coefficient ( isl_ctx ctx,
struct isl_sched_node node 
)
static

◆ set_type()

static void set_type ( struct isl_sched_edge edge,
enum isl_edge_type  type 
)
static

Definition at line 89 of file isl_scheduler.c.

References ISL_FL_SET, type, and isl_sched_edge::types.

◆ set_validity()

static void set_validity ( struct isl_sched_edge edge)
static

Definition at line 110 of file isl_scheduler.c.

References isl_edge_validity, and set_type.

Referenced by unconditionalize_adjacent_validity().

◆ setup_carry_lp()

static isl_stat setup_carry_lp ( isl_ctx ctx,
struct isl_sched_graph graph,
int  n_edge,
__isl_keep isl_basic_set_list intra,
__isl_keep isl_basic_set_list inter,
int  carry_inter 
)
static

◆ setup_lp()

static isl_stat setup_lp ( isl_ctx ctx,
struct isl_sched_graph graph,
int  use_coincidence 
)
static

◆ skip_edge()

static isl_stat skip_edge ( __isl_take isl_map map,
__isl_take isl_map tagged 
)
static

Definition at line 1228 of file isl_scheduler.c.

References isl_map_free(), isl_stat_ok, and map.

Referenced by extract_edge().

◆ solve_lp()

static __isl_give isl_vec * solve_lp ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ sort_sccs()

static int sort_sccs ( struct isl_sched_graph graph)
static

◆ sort_statements()

static __isl_give isl_schedule_node * sort_statements ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph,
int  initialized 
)
static

◆ specializer()

static __isl_give isl_map * specializer ( struct isl_sched_node src,
struct isl_sched_node dst 
)
static

Definition at line 3137 of file isl_scheduler.c.

References isl_map_apply_range(), isl_map_reverse(), and node_extract_schedule().

Referenced by update_edge().

◆ split_scaled()

static __isl_give isl_schedule_node * split_scaled ( __isl_take isl_schedule_node node,
struct isl_sched_graph graph 
)
static

◆ unconditionalize_adjacent_validity()

static int unconditionalize_adjacent_validity ( struct isl_sched_graph graph,
__isl_take isl_union_set condition_source,
__isl_take isl_union_set condition_sink 
)
static

◆ union_drop_coalescing_constraints()

static __isl_give isl_union_set * union_drop_coalescing_constraints ( isl_ctx ctx,
struct isl_sched_graph graph,
__isl_take isl_union_set delta 
)
static

◆ update_count()

static isl_stat update_count ( __isl_take isl_basic_set bset,
int  f,
int *  n_eq,
int *  n_ineq 
)
static

◆ update_edge()

static isl_stat update_edge ( isl_ctx ctx,
struct isl_sched_graph graph,
struct isl_sched_edge edge 
)
static

◆ update_edges()

static int update_edges ( isl_ctx ctx,
struct isl_sched_graph graph 
)
static

◆ update_schedule()

static int update_schedule ( struct isl_sched_graph graph,
__isl_take isl_vec sol,
int  coincident 
)
static

◆ zero_out_node_coef()

static __isl_give isl_tab_lexmin * zero_out_node_coef ( __isl_take isl_tab_lexmin tl,
struct isl_sched_node node,
int  pos 
)
static