Polly 20.0.0git
|
#include "isl_map_private.h"
#include <isl/id.h>
#include <isl/schedule_node.h>
#include <isl/union_set.h>
#include "isl_mat_private.h"
#include "isl_scheduler_clustering.h"
#include "isl_scheduler_scc.h"
#include "isl_seq.h"
#include "isl_tarjan.h"
Go to the source code of this file.
Classes | |
struct | isl_mark_merge_sccs_data |
|
static |
Definition at line 389 of file isl_scheduler_clustering.c.
References isl_edge_condition, isl_edge_conditional_validity, isl_sched_edge_has_type(), isl_schedule_constraints_add(), isl_union_map_apply_domain(), isl_union_map_copy(), isl_union_map_zip(), t, isl_sched_edge::tagged_condition, and isl_sched_edge::tagged_validity.
Referenced by collect_edge_constraints().
|
static |
Definition at line 362 of file isl_scheduler_clustering.c.
References isl_edge_condition, isl_edge_conditional_validity, isl_edge_first, isl_edge_last, isl_sched_edge_has_type(), isl_schedule_constraints_add(), isl_union_map_copy(), and t.
Referenced by collect_edge_constraints().
|
static |
Definition at line 627 of file isl_scheduler_clustering.c.
References compute_maxvar_max_slack(), isl_options_get_schedule_maximize_band_depth(), isl_stat_error, isl_stat_ok, limit_maxvar_to_slack(), and isl_sched_graph::maxvar.
Referenced by try_merge().
|
static |
Definition at line 1169 of file isl_scheduler_clustering.c.
References isl_sched_edge::dst, isl_sched_graph::edge, isl_sched_graph::max_weight, merge_edge(), isl_sched_graph::n_edge, isl_sched_edge::no_merge, isl_sched_node::scc, isl_sched_edge::src, and isl_sched_edge::weight.
Referenced by merge_clusters_along_edge().
|
static |
Definition at line 84 of file isl_scheduler_clustering.c.
References isl_sched_graph::band_start, isl_sched_graph::maxvar, isl_sched_graph::n_row, and isl_sched_graph::n_total_row.
Referenced by compute_weights(), and find_proximity().
|
static |
Definition at line 176 of file isl_scheduler_clustering.c.
References isl_mark_merge_sccs_data::dst, isl_mark_merge_sccs_data::graph, isl_bool_true, isl_sched_graph_has_validity_edge(), isl_sched_graph::node, isl_sched_node::scc, isl_mark_merge_sccs_data::scc_cluster, isl_mark_merge_sccs_data::src, and user.
Referenced by mark_merge_sccs().
|
static |
Definition at line 258 of file isl_scheduler_clustering.c.
References isl_id_alloc(), and name.
Referenced by cluster_space(), and collect_cluster_map().
|
static |
Definition at line 272 of file isl_scheduler_clustering.c.
References isl_sched_graph::band_start, cluster_id(), id, isl_dim_set, isl_space_add_dims(), isl_space_copy(), isl_space_get_ctx(), isl_space_params(), isl_space_set_from_params(), isl_space_set_tuple_id(), isl_sched_graph::n_total_row, isl_sched_graph::node, and isl_sched_node::space.
Referenced by collect_domain(), extract_node_transformation(), and merge().
|
static |
Definition at line 63 of file isl_scheduler_clustering.c.
References isl_clustering::cluster, isl_sched_graph_free(), isl_clustering::n, isl_clustering::scc, isl_clustering::scc_cluster, isl_clustering::scc_in_merge, and isl_clustering::scc_node.
Referenced by isl_schedule_node_compute_wcc_clustering().
|
static |
Definition at line 29 of file isl_scheduler_clustering.c.
References isl_clustering::cluster, isl_calloc_array, isl_sched_edge_scc_exactly(), isl_sched_graph_compute_maxvar(), isl_sched_graph_extract_sub_graph(), isl_sched_node_scc_exactly(), isl_schedule_node_compute_wcc_band(), isl_stat_error, isl_stat_ok, isl_clustering::n, isl_sched_graph::scc, isl_clustering::scc, isl_clustering::scc_cluster, isl_clustering::scc_in_merge, and isl_clustering::scc_node.
Referenced by isl_schedule_node_compute_wcc_clustering().
|
static |
Definition at line 322 of file isl_scheduler_clustering.c.
References isl_sched_graph::band_start, cluster_id(), id, isl_dim_out, isl_id_copy(), isl_id_free(), isl_map_from_multi_aff(), isl_sched_node_extract_partial_schedule_multi_aff(), isl_space_params_alloc(), isl_union_map_add_map(), isl_union_map_empty(), ma, map, isl_sched_graph::n, n, isl_sched_graph::n_total_row, isl_sched_graph::node, isl_sched_graph::scc, isl_clustering::scc, isl_clustering::scc_cluster, isl_clustering::scc_in_merge, and isl_sched_node::start.
Referenced by init_merge_graph().
|
static |
Definition at line 474 of file isl_scheduler_clustering.c.
References collect_edge_constraints(), isl_sched_edge::dst, isl_sched_graph::edge, isl_sched_graph::n_edge, isl_sched_node::scc, and isl_sched_edge::src.
Referenced by init_merge_graph().
|
static |
Definition at line 295 of file isl_scheduler_clustering.c.
References cluster_space(), domain, isl_set_universe(), isl_space_params_alloc(), isl_union_set_add_set(), isl_union_set_empty(), isl_sched_graph::scc, isl_clustering::scc, isl_clustering::scc_cluster, and isl_clustering::scc_in_merge.
Referenced by init_merge_graph().
|
static |
Definition at line 428 of file isl_scheduler_clustering.c.
References add_conditional_constraints(), add_non_conditional_constraints(), isl_map_copy(), isl_map_get_space(), isl_sched_edge_is_condition(), isl_sched_edge_is_conditional_validity(), isl_set_universe(), isl_space_domain(), isl_space_range(), isl_union_map_apply_domain(), isl_union_map_apply_range(), isl_union_map_copy(), isl_union_map_free(), isl_union_map_from_map(), isl_union_map_intersect_domain(), isl_union_map_product(), isl_union_set_from_set(), isl_sched_edge::map, and isl_sched_node::space.
Referenced by collect_constraints().
|
static |
Definition at line 538 of file isl_scheduler_clustering.c.
References isl_sched_node_update_vmap(), isl_size_error, isl_sched_graph::maxvar, isl_clustering::n, isl_sched_node::nvar, isl_sched_node::rank, isl_sched_node::scc, isl_sched_graph::scc, isl_clustering::scc, and isl_clustering::scc_in_merge.
Referenced by adjust_maxvar_to_slack().
|
static |
Definition at line 1378 of file isl_scheduler_clustering.c.
References bad_cluster(), isl_sched_edge::dst, isl_sched_graph::edge, hull, is_non_empty_proximity(), isl_basic_map_dim(), isl_basic_map_drop_constraints_not_involving_dims(), isl_basic_map_free(), isl_basic_map_n_equality(), isl_basic_map_project_out(), isl_basic_map_remove_divs(), isl_basic_map_transform_dims(), isl_dim_in, isl_dim_out, isl_map_affine_hull(), isl_map_copy(), isl_mat_copy(), isl_stat_error, isl_stat_ok, isl_sched_edge::map, isl_sched_graph::max_weight, n, isl_sched_graph::n_edge, isl_sched_node::rank, isl_sched_node::scc, isl_clustering::scc, isl_clustering::scc_cluster, isl_sched_edge::src, isl_sched_node::vmap, and isl_sched_edge::weight.
Referenced by isl_schedule_node_compute_wcc_clustering().
|
static |
Definition at line 1277 of file isl_scheduler_clustering.c.
References isl_sched_node::cluster, isl_clustering::cluster, isl_stat_ok, isl_sched_graph::maxvar, isl_sched_graph::n, isl_sched_graph::n_row, isl_sched_graph::n_total_row, isl_sched_graph::node, pos(), isl_sched_node::scc, isl_clustering::scc, isl_clustering::scc_node, and swap_sched().
Referenced by extract_clusters().
|
static |
Definition at line 747 of file isl_scheduler_clustering.c.
References isl_bool_error, isl_dim_set, isl_set_copy(), isl_set_free(), isl_set_is_empty(), isl_set_lower_bound_si(), isl_set_upper_bound_si(), pos(), set, and test.
Referenced by has_bounded_distances().
|
static |
Definition at line 1241 of file isl_scheduler_clustering.c.
References isl_sched_node::cluster, isl_sched_edge::dst, and isl_sched_edge::src.
Referenced by extract_clusters().
|
static |
Definition at line 1332 of file isl_scheduler_clustering.c.
References isl_sched_node::cluster, isl_clustering::cluster, copy_partial(), isl_sched_graph::dst_scc, edge_cluster_exactly(), for(), isl_sched_graph_detect_ccs(), isl_sched_graph_extract_sub_graph(), isl_stat_error, isl_stat_ok, isl_sched_graph::n, isl_sched_graph::node, node_cluster_exactly(), node_follows_strong_or_same_cluster(), isl_sched_node::scc, isl_sched_graph::scc, isl_clustering::scc_cluster, and isl_sched_graph::src_scc.
Referenced by isl_schedule_node_compute_wcc_clustering().
|
static |
Definition at line 706 of file isl_scheduler_clustering.c.
References isl_sched_graph::band_start, cluster_space(), id, isl_die, isl_dim_out, isl_dim_set, isl_error_internal, isl_map_from_multi_aff(), isl_multi_aff_pullback_multi_aff(), isl_sched_graph_find_node(), isl_sched_graph_is_node(), isl_sched_node_extract_partial_schedule_multi_aff(), isl_space_free(), isl_space_get_tuple_id(), ma, n, isl_sched_graph::n_total_row, isl_sched_node::scc, isl_clustering::scc, isl_clustering::scc_cluster, isl_sched_node::space, and isl_sched_node::start.
Referenced by has_bounded_distances().
|
static |
Definition at line 114 of file isl_scheduler_clustering.c.
References bad_cluster(), isl_sched_edge::dst, isl_sched_graph::edge, is_non_empty_proximity(), isl_sched_graph::n_edge, isl_sched_edge::no_merge, isl_sched_node::scc, isl_clustering::scc, isl_clustering::scc_cluster, isl_sched_edge::src, and isl_sched_edge::weight.
Referenced by isl_schedule_node_compute_wcc_clustering().
|
static |
Definition at line 1483 of file isl_scheduler_clustering.c.
References isl_scc_graph::c, isl_clustering::cluster, isl_scc_graph::ctx, finish_bands_decompose(), isl_scc_graph::graph, isl_sched_graph_extract_sccs(), isl_schedule_node_compute_finish_band(), isl_schedule_node_get_ctx(), isl_schedule_node_grandchild(), isl_schedule_node_grandparent(), isl_schedule_node_insert_sequence(), isl_union_set_list, isl_sched_graph::scc, and isl_clustering::scc_cluster.
Referenced by isl_schedule_node_compute_wcc_clustering().
|
static |
Definition at line 1448 of file isl_scheduler_clustering.c.
References isl_scc_graph::c, isl_scc_graph::ctx, isl_scc_graph::graph, isl_scc_graph_decompose(), isl_scc_graph_free(), isl_scc_graph_from_sched_graph(), and isl_schedule_node_get_ctx().
Referenced by finish_bands_clustering().
|
static |
Definition at line 652 of file isl_scheduler_clustering.c.
References isl_sched_graph::band_start, isl_sched_node::coincident, and isl_sched_graph::node.
Referenced by ok_to_merge_coincident().
|
static |
Definition at line 839 of file isl_scheduler_clustering.c.
References distance_is_bounded(), isl_sched_edge::dst, extract_node_transformation(), has_singular_src_or_dst(), isl_bool_error, isl_bool_false, isl_bool_true, isl_dim_set, isl_map_apply_domain(), isl_map_apply_range(), isl_map_copy(), isl_map_deltas(), isl_map_free(), isl_set_dim(), isl_set_free(), isl_sched_edge::map, map, isl_sched_graph::max_weight, n, isl_sched_edge::src, t, and isl_sched_edge::weight.
Referenced by ok_to_merge_proximity().
|
static |
Definition at line 774 of file isl_scheduler_clustering.c.
References isl_bool_error, isl_dim_set, isl_set_copy(), isl_set_dim(), isl_set_free(), isl_set_is_singleton(), isl_set_project_out(), n, pos(), and set.
Referenced by has_singular_src_or_dst().
|
static |
Definition at line 794 of file isl_scheduler_clustering.c.
References has_single_value(), isl_map_copy(), isl_map_domain(), isl_map_range(), isl_set_free(), map, pos(), and set.
Referenced by has_bounded_distances().
|
static |
Definition at line 505 of file isl_scheduler_clustering.c.
References collect_cluster_map(), collect_constraints(), collect_domain(), domain, isl_sched_graph_init(), isl_schedule_constraints_free(), isl_schedule_constraints_on_domain(), isl_stat_error, isl_union_map_free(), and isl_clustering::scc_in_merge.
Referenced by try_merge().
|
static |
Definition at line 92 of file isl_scheduler_clustering.c.
References isl_bool_false, isl_bool_not(), isl_map_plain_is_empty(), isl_sched_edge_is_proximity(), and isl_sched_edge::map.
Referenced by compute_weights(), and find_proximity().
__isl_give isl_schedule_node * isl_schedule_node_compute_wcc_clustering | ( | __isl_take isl_schedule_node * | node, |
struct isl_sched_graph * | graph | ||
) |
Definition at line 1530 of file isl_scheduler_clustering.c.
References clustering_free(), clustering_init(), compute_weights(), isl_scc_graph::ctx, extract_clusters(), find_proximity(), finish_bands_clustering(), isl_schedule_node_free(), isl_schedule_node_get_ctx(), merge_clusters_along_edge(), and isl_sched_graph::n_edge.
Referenced by compute_schedule_wcc().
|
static |
Definition at line 579 of file isl_scheduler_clustering.c.
References isl_sched_node_update_vmap(), isl_size_error, isl_sched_graph::maxvar, isl_clustering::n, isl_sched_node::nvar, isl_sched_node::rank, isl_sched_node::scc, isl_sched_graph::scc, isl_clustering::scc, and isl_clustering::scc_in_merge.
Referenced by adjust_maxvar_to_slack().
|
static |
Definition at line 215 of file isl_scheduler_clustering.c.
References cluster_follows(), isl_sched_edge::dst, isl_mark_merge_sccs_data::dst, isl_sched_graph::edge, isl_mark_merge_sccs_data::graph, isl_die, isl_error_internal, isl_stat_error, isl_stat_ok, isl_tarjan_graph_component(), isl_tarjan_graph_free(), isl_sched_graph::n, isl_clustering::n, isl_sched_graph::node, isl_tarjan_graph::op, isl_tarjan_graph::order, isl_sched_node::scc, isl_mark_merge_sccs_data::scc_cluster, isl_clustering::scc_cluster, isl_clustering::scc_in_merge, isl_sched_edge::src, and isl_mark_merge_sccs_data::src.
Referenced by merge_clusters_along_edge().
|
static |
Definition at line 1068 of file isl_scheduler_clustering.c.
References isl_sched_node::cluster, cluster_space(), isl_die, isl_error_internal, isl_sched_graph_find_node(), isl_sched_graph_is_node(), isl_space_free(), isl_stat_error, isl_stat_ok, isl_clustering::n, isl_clustering::scc, isl_clustering::scc_cluster, isl_clustering::scc_in_merge, isl_sched_node::space, and transform().
Referenced by FN(), and try_merge().
|
static |
Definition at line 1210 of file isl_scheduler_clustering.c.
References any_no_merge(), isl_sched_graph::edge, isl_bool_false, isl_stat_error, isl_stat_ok, mark_merge_sccs(), isl_sched_edge::no_merge, isl_clustering::scc_in_merge, try_merge(), and isl_sched_edge::weight.
Referenced by isl_schedule_node_compute_wcc_clustering().
|
static |
Definition at line 1233 of file isl_scheduler_clustering.c.
References isl_sched_node::cluster.
Referenced by extract_clusters().
|
static |
Definition at line 1307 of file isl_scheduler_clustering.c.
References isl_sched_node::cluster, isl_bool_true, isl_sched_graph_has_validity_edge(), isl_sched_graph::node, and user.
Referenced by extract_clusters().
|
static |
Definition at line 984 of file isl_scheduler_clustering.c.
References isl_mat_alloc(), isl_mat_cols(), isl_mat_rows(), isl_seq_addmul(), isl_seq_clr(), isl_seq_cpy(), n, isl_sched_node::nparam, isl_sched_node::nvar, isl_mat::row, isl_sched_node::sched, and t.
Referenced by transform().
|
static |
Definition at line 953 of file isl_scheduler_clustering.c.
References isl_sched_graph::band_start, isl_bool_false, isl_options_get_schedule_maximize_band_depth(), isl_options_get_schedule_maximize_coincidence(), isl_sched_graph::maxvar, isl_sched_graph::n_total_row, ok_to_merge_coincident(), and ok_to_merge_proximity().
Referenced by try_merge().
|
static |
Definition at line 671 of file isl_scheduler_clustering.c.
References get_n_coincident(), isl_bool_ok(), isl_clustering::n, isl_clustering::scc, and isl_clustering::scc_in_merge.
Referenced by ok_to_merge().
|
static |
Definition at line 907 of file isl_scheduler_clustering.c.
References isl_sched_edge::dst, isl_sched_graph::edge, has_bounded_distances(), isl_bool_false, isl_sched_edge_is_proximity(), isl_sched_graph::n_edge, isl_sched_node::scc, isl_clustering::scc_cluster, isl_clustering::scc_in_merge, and isl_sched_edge::src.
Referenced by ok_to_merge().
|
static |
Definition at line 1251 of file isl_scheduler_clustering.c.
References isl_sched_node::sched, and isl_sched_node::sched_map.
Referenced by copy_partial().
|
static |
Definition at line 1024 of file isl_scheduler_clustering.c.
References isl_sched_graph::band_start, isl_sched_node::coincident, isl_map_free(), isl_mat_concat(), isl_mat_drop_rows(), isl_mat_rows(), isl_stat_error, isl_stat_ok, isl_sched_graph::n, n, isl_sched_graph::n_row, isl_sched_graph::n_total_row, isl_sched_graph::node, node_transformation(), isl_sched_node::sched, isl_sched_node::sched_map, isl_sched_node::start, isl_sched_edge::start, and t.
Referenced by affine_hull(), FN(), and merge().
|
static |
Definition at line 1130 of file isl_scheduler_clustering.c.
References adjust_maxvar_to_slack(), init_merge_graph(), isl_bool_error, isl_sched_graph_compute_maxvar(), isl_sched_graph_free(), isl_schedule_node_compute_wcc_band(), merge(), and ok_to_merge().
Referenced by merge_clusters_along_edge().