Polly 20.0.0git
|
#include <isl/aff_type.h>
#include <isl/hash.h>
#include <isl/id_type.h>
#include <isl/map_type.h>
#include <isl/map_to_basic_set.h>
#include <isl/mat.h>
#include <isl/space_type.h>
#include <isl/set_type.h>
#include <isl/val_type.h>
#include <isl/vec.h>
#include <isl/union_map_type.h>
#include "isl_schedule_constraints.h"
#include "isl_tab.h"
Go to the source code of this file.
Classes | |
struct | isl_sched_node |
struct | isl_sched_edge |
struct | isl_sched_graph |
int isl_sched_edge_has_type | ( | struct isl_sched_edge * | edge, |
enum isl_edge_type | type | ||
) |
Definition at line 81 of file isl_scheduler.c.
References ISL_FL_ISSET, type, and isl_sched_edge::types.
Referenced by add_conditional_constraints(), add_non_conditional_constraints(), graph_edge_tables_add(), is_coincidence(), is_local(), is_validity(), isl_sched_edge_is_condition(), isl_sched_edge_is_conditional_validity(), and isl_sched_edge_is_proximity().
int isl_sched_edge_is_condition | ( | struct isl_sched_edge * | edge | ) |
Definition at line 152 of file isl_scheduler.c.
References isl_edge_condition, and isl_sched_edge_has_type().
Referenced by clear_local_edges(), collect_edge_constraints(), has_adjacent_true_conditions(), is_multi_edge_type(), merge_edge(), need_condition_check(), and update_edges().
int isl_sched_edge_is_conditional_validity | ( | struct isl_sched_edge * | edge | ) |
Definition at line 159 of file isl_scheduler.c.
References isl_edge_conditional_validity, and isl_sched_edge_has_type().
Referenced by collect_edge_constraints(), copy_edges(), has_violated_conditional_constraint(), is_any_validity(), is_multi_edge_type(), merge_edge(), need_condition_check(), and unconditionalize_adjacent_validity().
int isl_sched_edge_is_proximity | ( | struct isl_sched_edge * | edge | ) |
Definition at line 117 of file isl_scheduler.c.
References isl_edge_proximity, and isl_sched_edge_has_type().
Referenced by add_all_proximity_constraints(), edge_multiplicity(), is_non_empty_proximity(), ok_to_merge_proximity(), and parametric_intra_edge_multiplicity().
int isl_sched_edge_scc_exactly | ( | struct isl_sched_edge * | edge, |
int | scc | ||
) |
Definition at line 3694 of file isl_scheduler.c.
References isl_sched_edge::dst, isl_sched_graph::edge, isl_sched_node::scc, isl_sched_graph::scc, and isl_sched_edge::src.
Referenced by clustering_init(), and compute_component_schedule().
isl_stat isl_sched_graph_compute_maxvar | ( | struct isl_sched_graph * | graph | ) |
Definition at line 3594 of file isl_scheduler.c.
References isl_sched_node_update_vmap(), isl_stat_error, isl_stat_ok, isl_sched_graph::maxvar, isl_sched_graph::n, isl_sched_graph::n_row, isl_sched_graph::node, isl_sched_node::nvar, and isl_sched_node::rank.
Referenced by clustering_init(), compute_component_schedule(), compute_schedule_wcc(), isl_schedule_node_compute_finish_band(), sort_statements(), and try_merge().
isl_stat isl_sched_graph_detect_ccs | ( | isl_ctx * | ctx, |
struct isl_sched_graph * | graph, | ||
isl_bool(*)(int i, int j, void *user) | follows | ||
) |
Definition at line 1438 of file isl_scheduler.c.
References isl_stat_error, isl_stat_ok, isl_tarjan_graph_free(), isl_tarjan_graph_init(), isl_sched_graph::n, n, isl_sched_graph::node, isl_tarjan_graph::order, isl_sched_node::scc, and isl_sched_graph::scc.
Referenced by detect_sccs(), detect_wccs(), and extract_clusters().
__isl_give isl_union_set * isl_sched_graph_extract_scc | ( | isl_ctx * | ctx, |
struct isl_sched_graph * | graph, | ||
int | scc | ||
) |
Definition at line 3430 of file isl_scheduler.c.
References isl_sched_graph_domain(), isl_sched_node_scc_exactly(), and isl_sched_node::scc.
Referenced by isl_scc_graph_extract_local_scc(), and isl_sched_graph_extract_sccs().
__isl_give isl_union_set_list * isl_sched_graph_extract_sccs | ( | isl_ctx * | ctx, |
struct isl_sched_graph * | graph | ||
) |
Definition at line 3440 of file isl_scheduler.c.
References isl_sched_graph_extract_scc(), isl_union_set_list, and isl_sched_graph::scc.
Referenced by compute_component_schedule(), finish_bands_clustering(), and sort_statements().
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 | ||
) |
Definition at line 3617 of file isl_scheduler.c.
References isl_sched_graph::band_start, copy_edges(), copy_nodes(), isl_sched_graph::edge, graph_alloc(), graph_init_edge_tables(), graph_init_table(), if(), isl_edge_last, isl_stat_error, isl_stat_ok, isl_sched_graph::max_edge, isl_sched_graph::max_row, isl_sched_graph::n, n, isl_sched_graph::n_edge, isl_sched_graph::n_row, isl_sched_graph::n_total_row, isl_sched_graph::node, isl_sched_graph::root, sub(), and t.
Referenced by clustering_init(), compute_sub_schedule(), and extract_clusters().
struct isl_sched_node * isl_sched_graph_find_node | ( | isl_ctx * | ctx, |
struct isl_sched_graph * | graph, | ||
__isl_keep isl_space * | space | ||
) |
Definition at line 206 of file isl_scheduler.c.
References isl_hash_table_entry::data, isl_hash_table_entry::hash, isl_hash_table_entry_none, isl_hash_table_find(), isl_space_get_tuple_hash(), isl_sched_graph::n, isl_sched_graph::node, node_has_tuples(), and isl_sched_graph::node_table.
Referenced by copy_edges(), extract_node_transformation(), find_domain_node(), find_range_node(), graph_find_compressed_node(), and merge().
void isl_sched_graph_free | ( | isl_ctx * | ctx, |
struct isl_sched_graph * | graph | ||
) |
Definition at line 512 of file isl_scheduler.c.
References clear_node(), isl_sched_graph::edge, isl_sched_graph::edge_table, isl_sched_graph::inter_hmap, isl_sched_graph::intra_hmap, isl_sched_graph::intra_hmap_param, isl_basic_set_free(), isl_edge_last, isl_hash_table_free(), isl_map_free(), isl_union_map_free(), isl_sched_graph::lp, isl_sched_edge::map, isl_sched_graph::n, isl_sched_graph::n_edge, isl_sched_graph::node, isl_sched_graph::node_table, isl_sched_graph::region, isl_sched_graph::sorted, isl_sched_edge::tagged_condition, and isl_sched_edge::tagged_validity.
Referenced by clustering_free(), compute_sub_schedule(), isl_schedule_constraints_compute_schedule(), and try_merge().
isl_bool isl_sched_graph_has_validity_edge | ( | struct isl_sched_graph * | graph, |
struct isl_sched_node * | src, | ||
struct isl_sched_node * | dst | ||
) |
Definition at line 445 of file isl_scheduler.c.
References graph_has_edge(), isl_edge_conditional_validity, and isl_edge_validity.
Referenced by cluster_follows(), node_follows_strong(), and node_follows_strong_or_same_cluster().
isl_stat isl_sched_graph_init | ( | struct isl_sched_graph * | graph, |
__isl_keep isl_schedule_constraints * | sc | ||
) |
Definition at line 1342 of file isl_scheduler.c.
References compute_max_row(), domain, extract_edge(), extract_node(), isl_extract_edge_data::graph, graph_alloc(), graph_init_edge_tables(), graph_init_table(), isl_edge_first, isl_edge_last, isl_schedule_constraints_get(), isl_schedule_constraints_get_context(), isl_schedule_constraints_get_ctx(), isl_schedule_constraints_get_domain(), isl_schedule_constraints_n_map(), isl_stat_error, isl_stat_ok, isl_union_map_foreach_map(), isl_union_map_free(), isl_union_map_n_map(), isl_union_set_foreach_set(), isl_union_set_free(), isl_union_set_intersect_params(), isl_union_set_n_set(), isl_sched_graph::max_edge, isl_sched_graph::n, n, isl_sched_graph::n_edge, isl_sched_graph::root, and isl_extract_edge_data::type.
Referenced by init_merge_graph(), and isl_schedule_constraints_compute_schedule().
int isl_sched_graph_is_node | ( | struct isl_sched_graph * | graph, |
struct isl_sched_node * | node | ||
) |
Definition at line 228 of file isl_scheduler.c.
References isl_sched_graph::n, and isl_sched_graph::node.
Referenced by copy_edges(), extract_edge(), extract_node_transformation(), graph_find_compressed_node(), and merge().
__isl_give isl_multi_aff * isl_sched_node_extract_partial_schedule_multi_aff | ( | struct isl_sched_node * | node, |
int | first, | ||
int | n | ||
) |
Definition at line 3058 of file isl_scheduler.c.
References aff, isl_sched_node::compress, isl_sched_node::compressed, isl_sched_node::decompress, extract_schedule_row(), isl_dim_out, isl_local_space_copy(), isl_local_space_free(), isl_local_space_from_space(), isl_mat_rows(), isl_multi_aff_pullback_multi_aff(), isl_pw_multi_aff_get_domain_space(), isl_space_add_dims(), isl_space_copy(), isl_space_from_domain(), ma, n, isl_sched_node::sched, and isl_sched_node::space.
Referenced by collect_cluster_map(), extract_node_transformation(), final_row(), insert_current_band(), and node_extract_schedule_multi_aff().
int isl_sched_node_scc_exactly | ( | struct isl_sched_node * | node, |
int | scc | ||
) |
Definition at line 64 of file isl_scheduler.c.
References isl_sched_node::scc.
Referenced by clustering_init(), compute_component_schedule(), and isl_sched_graph_extract_scc().
isl_stat isl_sched_node_update_vmap | ( | struct isl_sched_node * | node | ) |
Definition at line 2268 of file isl_scheduler.c.
References extract_linear_schedule(), isl_sched_node::indep, isl_mat_drop_rows(), isl_mat_free(), isl_mat_initial_non_zero_cols(), isl_mat_left_hermite(), isl_mat_transpose(), isl_stat_error, isl_stat_ok, normalize_independent(), isl_sched_node::rank, and isl_sched_node::vmap.
Referenced by compute_maxvar_max_slack(), isl_sched_graph_compute_maxvar(), limit_maxvar_to_slack(), and setup_lp().
__isl_give isl_schedule_node * isl_schedule_node_compute_finish_band | ( | __isl_take isl_schedule_node * | node, |
struct isl_sched_graph * | graph, | ||
int | initialized | ||
) |
Definition at line 5583 of file isl_scheduler.c.
References isl_sched_graph::band_start, carry_coincidence(), carry_dependences(), compute_component_schedule(), compute_next_band(), compute_split_schedule(), isl_options_get_schedule_outer_coincidence(), isl_sched_graph_compute_maxvar(), isl_schedule_node_free(), isl_schedule_node_get_ctx(), isl_sched_graph::maxvar, isl_sched_graph::n_row, isl_sched_graph::n_total_row, isl_ctx::opt, isl_sched_graph::scc, isl_options::schedule_maximize_band_depth, sort_statements(), and isl_sched_graph::src_scc.
Referenced by compute_schedule_wcc_whole(), finish_bands_clustering(), and isl_scc_graph_finish_band().
isl_stat isl_schedule_node_compute_wcc_band | ( | isl_ctx * | ctx, |
struct isl_sched_graph * | graph | ||
) |
Definition at line 5649 of file isl_scheduler.c.
References isl_sched_graph::band_start, clear_local_edges(), isl_sched_graph::dst_scc, has_any_coincidence(), has_violated_conditional_constraint(), isl_stat_error, isl_stat_ok, isl_vec_free(), isl_sched_graph::maxvar, isl_sched_graph::n_row, isl_sched_graph::n_total_row, need_condition_check(), isl_ctx::opt, reset_band(), isl_options::schedule_outer_coincidence, setup_lp(), isl_vec::size, solve_lp(), sort_sccs(), isl_sched_graph::src_scc, and update_schedule().
Referenced by clustering_init(), compute_schedule_wcc_whole(), and try_merge().