Polly 20.0.0git
|
#include <stdio.h>
#include <isl/ctx.h>
#include <isl/schedule_node.h>
#include <isl/union_set.h>
#include "isl_hash_private.h"
#include "isl_scheduler_scc.h"
#include "isl_sort.h"
Go to the source code of this file.
Classes | |
struct | isl_scc_graph |
struct | isl_edge_src |
struct | isl_extract_dst_data |
struct | isl_foreach_reachable_data |
struct | isl_copy_edge_data |
struct | isl_merge_src_dst_data |
|
static |
Definition at line 464 of file isl_scheduler_scc.c.
References isl_scc_graph_add_edge(), isl_scc_graph_local_index(), isl_scc_graph::reverse_edge_table, isl_edge_src::scc_graph, isl_edge_src::src, and user.
Referenced by isl_scc_graph_add_reverse_edges().
|
static |
Definition at line 503 of file isl_scheduler_scc.c.
References isl_sched_edge::dst, isl_scc_graph::edge_table, isl_scc_graph_add_edge(), isl_stat_ok, isl_sched_node::scc, isl_sched_edge::src, and user.
Referenced by isl_scc_graph_from_sched_graph().
|
static |
Definition at line 703 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_scc_graph_extract_local_scc(), isl_union_set_empty_ctx(), isl_union_set_union(), n, isl_copy_edge_data::scc_graph, and user.
Referenced by isl_scc_graph_add_scc_indirect_seq(), and isl_scc_graph_add_scc_seq().
|
static |
Definition at line 873 of file isl_scheduler_scc.c.
References a(), b(), isl_scc_graph::component, and t.
Referenced by isl_scc_graph_merge_src_dst().
|
static |
Definition at line 742 of file isl_scheduler_scc.c.
References user.
Referenced by isl_scc_graph_add_scc_indirect_seq(), and sort_divs().
|
static |
Definition at line 1135 of file isl_scheduler_scc.c.
References isl_scc_graph::edge_table, isl_hash_table::n, isl_scc_graph::n, isl_scc_graph::reverse_edge_table, isl_merge_src_dst_data::scc_graph, and split().
Referenced by isl_scc_graph_decompose().
|
static |
Definition at line 270 of file isl_scheduler_scc.c.
Referenced by next_nodes().
|
static |
Definition at line 624 of file isl_scheduler_scc.c.
References isl_scc_graph::component, isl_scc_graph_add_edge(), isl_scc_graph_local_index(), isl_stat_ok, isl_scc_graph::pos, isl_copy_edge_data::scc_graph, isl_copy_edge_data::src, sub(), isl_copy_edge_data::sub, and user.
Referenced by isl_scc_graph_sub().
|
static |
Definition at line 1071 of file isl_scheduler_scc.c.
References extract_components(), isl_scc_graph_finish_band(), isl_scc_graph_merge_components(), isl_scc_graph_sort_components(), isl_schedule_node_free(), isl_schedule_node_grandchild(), isl_schedule_node_grandparent(), isl_schedule_node_insert_set(), isl_union_set_list, n, recurse(), isl_merge_src_dst_data::scc_graph, isl_scc_graph::size, size, and isl_scc_graph::sorted.
Referenced by detect_components_at().
|
static |
Definition at line 1115 of file isl_scheduler_scc.c.
References detect_components(), isl_schedule_node_grandchild(), isl_schedule_node_grandparent(), n, and isl_merge_src_dst_data::scc_graph.
Referenced by isl_scc_graph_decompose().
|
static |
Definition at line 380 of file isl_scheduler_scc.c.
References isl_bool_not(), isl_scc_graph_remove_edge(), pos(), isl_edge_src::scc_graph, isl_edge_src::src, and user.
Referenced by isl_scc_graph_reduce().
|
static |
Definition at line 1031 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_scc_graph_add_scc_indirect_seq(), isl_union_set_list, n, isl_merge_src_dst_data::scc_graph, isl_scc_graph::size, size, and isl_scc_graph::sorted.
Referenced by detect_components().
|
static |
Definition at line 258 of file isl_scheduler_scc.c.
References isl_scc_graph_local_index(), isl_stat_ok, isl_extract_dst_data::n, isl_extract_dst_data::next, isl_extract_dst_data::scc_graph, and user.
Referenced by next_nodes().
|
static |
Definition at line 767 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_scc_graph_add_scc_seq(), isl_scc_graph_extract_local_scc(), isl_union_set_list, isl_scc_graph::n, pos(), and isl_copy_edge_data::scc_graph.
Referenced by isl_scc_graph_decompose().
|
static |
Definition at line 348 of file isl_scheduler_scc.c.
References isl_hash_table_entry::data, isl_scc_graph::edge_table, isl_hash_table_first(), isl_hash_table_foreach(), isl_scc_graph_local_index(), isl_stat_error, isl_stat_ok, n, pos(), recurse_foreach_reachable(), and isl_foreach_reachable_data::scc_graph.
Referenced by isl_scc_graph_reduce(), and recurse_foreach_reachable().
|
static |
Definition at line 188 of file isl_scheduler_scc.c.
References val.
Referenced by isl_scc_graph_find_edge().
|
static |
Definition at line 447 of file isl_scheduler_scc.c.
References isl_hash_table_entry::data, isl_scc_graph::graph_scc, isl_scc_graph_find_edge(), isl_stat_error, and isl_stat_ok.
Referenced by add_reverse(), add_scc_edge(), and copy_edge().
|
static |
Definition at line 477 of file isl_scheduler_scc.c.
References add_reverse(), isl_scc_graph::ctx, isl_scc_graph::edge_table, isl_hash_table_foreach(), isl_scc_graph_free(), isl_scc_graph::n, isl_edge_src::scc_graph, and isl_edge_src::src.
Referenced by isl_scc_graph_from_sched_graph(), and isl_scc_graph_sub().
|
static |
Definition at line 752 of file isl_scheduler_scc.c.
References add_scc_seq(), at(), n, and isl_copy_edge_data::scc_graph.
Referenced by extract_components().
|
static |
Definition at line 732 of file isl_scheduler_scc.c.
References add_scc_seq(), n, offset, and isl_copy_edge_data::scc_graph.
Referenced by extract_split_scc().
|
static |
Definition at line 522 of file isl_scheduler_scc.c.
References isl_scc_graph::c, isl_scc_graph::component, isl_scc_graph::ctx, isl_scc_graph::edge_table, isl_scc_graph::graph, isl_scc_graph::graph_scc, isl_alloc_array, isl_alloc_type, isl_calloc_array, isl_ctx_ref(), isl_hash_table_alloc(), isl_scc_graph_free(), isl_scc_graph::n, n, isl_scc_graph::pos, isl_scc_graph::reverse_edge_table, isl_scc_graph::size, and isl_scc_graph::sorted.
Referenced by isl_scc_graph_from_sched_graph(), and isl_scc_graph_sub().
|
static |
Definition at line 807 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_scc_graph_extract_local_scc(), isl_scc_graph_finish_band(), isl_schedule_node_grandchild(), isl_schedule_node_grandparent(), isl_schedule_node_insert_sequence(), isl_union_set_list, and isl_scc_graph::n.
Referenced by isl_scc_graph_decompose().
__isl_give isl_schedule_node * isl_scc_graph_decompose | ( | struct isl_scc_graph * | scc_graph, |
__isl_take isl_schedule_node * | node | ||
) |
Definition at line 1176 of file isl_scheduler_scc.c.
References best_split(), detect_components_at(), extract_split_scc(), isl_scc_graph_chain(), isl_scc_graph_finish_band(), isl_scc_graph_init_component(), isl_schedule_node_free(), isl_schedule_node_grandchild(), isl_schedule_node_grandparent(), isl_schedule_node_insert_sequence(), isl_schedule_node_sequence_splice_children(), isl_union_set_list, isl_scc_graph::n, isl_merge_src_dst_data::scc_graph, and split().
Referenced by finish_bands_decompose(), and recurse().
void isl_scc_graph_dump | ( | struct isl_scc_graph * | scc_graph | ) |
Definition at line 106 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_scc_graph::edge_table, isl_scc_graph::graph_scc, isl_hash_table_foreach(), isl_scc_graph::n, print_edge(), and isl_scc_graph::reverse_edge_table.
|
static |
Definition at line 171 of file isl_scheduler_scc.c.
References isl_scc_graph::graph_scc, and pos().
Referenced by isl_scc_graph_find_edge().
|
static |
Definition at line 691 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_scc_graph::graph, isl_scc_graph::graph_scc, isl_sched_graph_extract_scc(), pos(), and isl_copy_edge_data::scc_graph.
Referenced by add_scc_seq(), extract_split_scc(), and isl_scc_graph_chain().
struct isl_hash_table_entry * isl_scc_graph_find_edge | ( | struct isl_scc_graph * | scc_graph, |
struct isl_hash_table ** | edge_table, | ||
int | src, | ||
int | dst, | ||
int | reserve | ||
) |
Definition at line 201 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_hash_table_entry::hash, is_scc_node(), isl_hash_builtin, isl_hash_init, isl_hash_table_find(), isl_scc_graph_encode_local_index(), and val.
Referenced by isl_scc_graph_add_edge(), and isl_scc_graph_remove_edge().
|
static |
Definition at line 790 of file isl_scheduler_scc.c.
References isl_scc_graph::c, isl_clustering::cluster, isl_scc_graph::graph_scc, isl_schedule_node_compute_finish_band(), pos(), and isl_clustering::scc_cluster.
Referenced by detect_components(), isl_scc_graph_chain(), isl_scc_graph_decompose(), and recurse().
struct isl_scc_graph * isl_scc_graph_free | ( | struct isl_scc_graph * | scc_graph | ) |
Definition at line 135 of file isl_scheduler_scc.c.
References isl_scc_graph::component, isl_scc_graph::ctx, isl_scc_graph::edge_table, isl_scc_graph::graph_scc, isl_ctx_deref(), isl_hash_table_free(), isl_scc_graph::n, isl_scc_graph::pos, isl_scc_graph::reverse_edge_table, isl_scc_graph::size, and isl_scc_graph::sorted.
Referenced by finish_bands_decompose(), isl_scc_graph_add_reverse_edges(), isl_scc_graph_alloc(), isl_scc_graph_from_sched_graph(), isl_scc_graph_reduce(), isl_scc_graph_sub(), and recurse().
struct isl_scc_graph * isl_scc_graph_from_sched_graph | ( | isl_ctx * | ctx, |
struct isl_sched_graph * | graph, | ||
struct isl_clustering * | c | ||
) |
Definition at line 575 of file isl_scheduler_scc.c.
References add_scc_edge(), isl_scc_graph::c, isl_scc_graph::ctx, isl_sched_graph::edge_table, isl_scc_graph::graph, isl_scc_graph::graph_scc, if(), isl_edge_conditional_validity, isl_edge_validity, isl_hash_table_foreach(), isl_scc_graph_add_reverse_edges(), isl_scc_graph_alloc(), isl_scc_graph_free(), isl_scc_graph_reduce(), and isl_sched_graph::scc.
Referenced by finish_bands_decompose().
|
static |
Definition at line 862 of file isl_scheduler_scc.c.
References isl_scc_graph::component, and isl_scc_graph::n.
Referenced by isl_scc_graph_decompose().
|
static |
Definition at line 180 of file isl_scheduler_scc.c.
References isl_scc_graph::graph_scc.
Referenced by add_reverse(), copy_edge(), extract_dst(), foreach_reachable(), merge_src_dst(), and recurse_foreach_reachable().
|
static |
Definition at line 944 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_scc_graph::edge_table, isl_merge_src_dst_data::end, isl_hash_table_foreach(), isl_stat_error, isl_stat_ok, merge_src_dst(), n, isl_merge_src_dst_data::scc_graph, and isl_merge_src_dst_data::src.
Referenced by detect_components().
|
static |
Definition at line 898 of file isl_scheduler_scc.c.
References a(), assign(), b(), and isl_scc_graph::component.
Referenced by merge_src_dst().
|
static |
Definition at line 406 of file isl_scheduler_scc.c.
References isl_scc_graph::edge_table, elim_or_next(), foreach_reachable(), isl_scc_graph_free(), isl_hash_table::n, isl_scc_graph::n, next_nodes(), isl_edge_src::scc_graph, isl_foreach_reachable_data::scc_graph, and isl_edge_src::src.
Referenced by isl_scc_graph_from_sched_graph().
|
static |
Definition at line 224 of file isl_scheduler_scc.c.
References isl_scc_graph::ctx, isl_scc_graph::edge_table, isl_bool_error, isl_bool_false, isl_bool_true, isl_hash_table_entry_none, isl_hash_table_remove(), and isl_scc_graph_find_edge().
Referenced by elim_or_next().
|
static |
Definition at line 986 of file isl_scheduler_scc.c.
References isl_scc_graph::component, n, pos(), isl_scc_graph::pos, isl_merge_src_dst_data::scc_graph, isl_scc_graph::size, size, and isl_scc_graph::sorted.
Referenced by detect_components().
|
static |
Definition at line 652 of file isl_scheduler_scc.c.
References isl_scc_graph::c, copy_edge(), isl_scc_graph::ctx, isl_scc_graph::edge_table, for(), isl_scc_graph::graph, isl_scc_graph::graph_scc, isl_hash_table_foreach(), isl_scc_graph_add_reverse_edges(), isl_scc_graph_alloc(), isl_scc_graph_free(), n, pos(), isl_scc_graph::pos, isl_copy_edge_data::scc_graph, isl_copy_edge_data::src, sub(), and isl_copy_edge_data::sub.
Referenced by recurse().
|
static |
Definition at line 927 of file isl_scheduler_scc.c.
References isl_merge_src_dst_data::end, isl_scc_graph_local_index(), isl_scc_graph_merge_src_dst(), isl_stat_ok, isl_merge_src_dst_data::scc_graph, isl_merge_src_dst_data::src, and user.
Referenced by isl_scc_graph_merge_components().
|
static |
Definition at line 283 of file isl_scheduler_scc.c.
References cmp_int(), isl_scc_graph::ctx, isl_scc_graph::edge_table, extract_dst(), isl_alloc_array, isl_hash_table_foreach(), isl_sort(), isl_hash_table::n, isl_extract_dst_data::n, isl_extract_dst_data::next, and isl_extract_dst_data::scc_graph.
Referenced by isl_scc_graph_reduce().
|
static |
Definition at line 722 of file isl_scheduler_scc.c.
References user.
|
static |
Definition at line 92 of file isl_scheduler_scc.c.
References isl_stat_ok, and user.
Referenced by isl_scc_graph_dump().
|
static |
Definition at line 838 of file isl_scheduler_scc.c.
References isl_scc_graph_decompose(), isl_scc_graph_finish_band(), isl_scc_graph_free(), isl_scc_graph_sub(), isl_schedule_node_free(), n, pos(), and sub().
Referenced by detect_components(), and sample_eq().
|
static |
Definition at line 326 of file isl_scheduler_scc.c.
References isl_foreach_reachable_data::fn, foreach_reachable(), isl_scc_graph_local_index(), isl_stat_error, isl_stat_ok, pos(), isl_foreach_reachable_data::scc_graph, user, and isl_foreach_reachable_data::user.
Referenced by foreach_reachable().