Polly
20.0.0git
llvm-project
polly
lib
External
isl
isl_scheduler_clustering.h
Go to the documentation of this file.
1
#ifndef ISL_SCHEDULER_CLUSTERING_H
2
#define ISL_SCHEDULER_CLUSTERING_H
3
4
#include "
isl_scheduler.h
"
5
6
/* Clustering information used by isl_schedule_node_compute_wcc_clustering.
7
*
8
* "n" is the number of SCCs in the original dependence graph
9
* "scc" is an array of "n" elements, each representing an SCC
10
* of the original dependence graph. All entries in the same cluster
11
* have the same number of schedule rows.
12
* "scc_cluster" maps each SCC index to the cluster to which it belongs,
13
* where each cluster is represented by the index of the first SCC
14
* in the cluster. Initially, each SCC belongs to a cluster containing
15
* only that SCC.
16
*
17
* "scc_in_merge" is used by merge_clusters_along_edge to keep
18
* track of which SCCs need to be merged.
19
*
20
* "cluster" contains the merged clusters of SCCs after the clustering
21
* has completed.
22
*
23
* "scc_node" is a temporary data structure used inside copy_partial.
24
* For each SCC, it keeps track of the number of nodes in the SCC
25
* that have already been copied.
26
*/
27
struct
isl_clustering
{
28
int
n
;
29
struct
isl_sched_graph
*
scc
;
30
struct
isl_sched_graph
*
cluster
;
31
int
*
scc_cluster
;
32
int
*
scc_node
;
33
int
*
scc_in_merge
;
34
};
35
36
__isl_give
isl_schedule_node
*
isl_schedule_node_compute_wcc_clustering
(
37
__isl_take
isl_schedule_node
*
node
,
struct
isl_sched_graph
*graph);
38
39
#endif
__isl_take
#define __isl_take
Definition:
ctx.h:22
__isl_give
#define __isl_give
Definition:
ctx.h:19
isl_scheduler.h
isl_schedule_node_compute_wcc_clustering
__isl_give isl_schedule_node * isl_schedule_node_compute_wcc_clustering(__isl_take isl_schedule_node *node, struct isl_sched_graph *graph)
Definition:
isl_scheduler_clustering.c:1530
isl_clustering
Definition:
isl_scheduler_clustering.h:27
isl_clustering::scc_cluster
int * scc_cluster
Definition:
isl_scheduler_clustering.h:31
isl_clustering::cluster
struct isl_sched_graph * cluster
Definition:
isl_scheduler_clustering.h:30
isl_clustering::n
int n
Definition:
isl_scheduler_clustering.h:28
isl_clustering::scc_node
int * scc_node
Definition:
isl_scheduler_clustering.h:32
isl_clustering::scc_in_merge
int * scc_in_merge
Definition:
isl_scheduler_clustering.h:33
isl_clustering::scc
struct isl_sched_graph * scc
Definition:
isl_scheduler_clustering.h:29
isl_sched_graph
Definition:
isl_scheduler.h:221
isl_sched_graph::node
struct isl_sched_node * node
Definition:
isl_scheduler.h:226
isl_schedule_node
Definition:
isl_schedule_node_private.h:24
Generated on Wed Nov 13 2024 03:17:27 for Polly by
1.9.6