Polly 19.0.0git
isl_ast_graft_private.h
Go to the documentation of this file.
1#ifndef ISL_AST_GRAFT_PRIVATE_H
2#define ISL_AST_GRAFT_PRIVATE_H
3
4#include <isl/ast.h>
5#include <isl/ast_build.h>
6#include <isl/set.h>
7#include <isl/list.h>
8#include <isl/printer.h>
9#include <isl/stream.h>
10
11struct isl_ast_graft;
13
14/* Representation of part of an AST ("node") with some additional polyhedral
15 * information about the tree.
16 *
17 * "guard" contains conditions that should still be enforced by
18 * some ancestor of the current tree. In particular, the already
19 * generated tree assumes that these conditions hold, but may not
20 * have enforced them itself.
21 * The guard should not contain any unknown divs as it will be used
22 * to generate an if condition.
23 *
24 * "enforced" expresses constraints that are already enforced by the for
25 * nodes in the current tree and that therefore do not need to be enforced
26 * by any ancestor.
27 * The constraints only involve outer loop iterators.
28 */
30 int ref;
31
33
36};
37
38ISL_DECLARE_LIST(ast_graft)
39
40#undef EL
41#define EL isl_ast_graft
42
43#include <isl_list_templ.h>
44
46
50 __isl_take isl_ast_graft_list *list, __isl_take isl_set *guard,
52 __isl_keep isl_ast_build *sub_build);
53__isl_give isl_ast_graft_list *isl_ast_graft_list_fuse(
54 __isl_take isl_ast_graft_list *children,
60 __isl_take isl_ast_graft_list *list);
61
62__isl_give isl_ast_graft_list *isl_ast_graft_list_merge(
63 __isl_take isl_ast_graft_list *list1,
64 __isl_take isl_ast_graft_list *list2,
67 __isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build);
68
74
82
85
86__isl_give isl_ast_graft_list *isl_ast_graft_list_unembed(
87 __isl_take isl_ast_graft_list *list, int product);
89 __isl_take isl_ast_graft_list *list, __isl_take isl_multi_aff *ma);
91 __isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build);
92
94 __isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build);
95
97 __isl_keep isl_ast_graft_list *list, __isl_keep isl_ast_build *build);
99 __isl_keep isl_ast_graft_list *list, __isl_keep isl_ast_build *build);
101 __isl_take isl_ast_graft_list *list, __isl_take isl_set *context);
102
105
107
108#endif
struct isl_multi_aff isl_multi_aff
Definition: aff_type.h:29
#define __isl_take
Definition: ctx.h:22
#define __isl_give
Definition: ctx.h:19
#define __isl_null
Definition: ctx.h:28
#define __isl_keep
Definition: ctx.h:25
__isl_give isl_set * isl_ast_graft_list_extract_hoistable_guard(__isl_keep isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft * isl_ast_graft_insert_mark(__isl_take isl_ast_graft *graft, __isl_take isl_id *mark)
__isl_give isl_ast_graft_list * isl_ast_graft_list_preimage_multi_aff(__isl_take isl_ast_graft_list *list, __isl_take isl_multi_aff *ma)
__isl_give isl_ast_graft_list * isl_ast_graft_list_merge(__isl_take isl_ast_graft_list *list1, __isl_take isl_ast_graft_list *list2, __isl_keep isl_ast_build *build)
__isl_give isl_ast_node * isl_ast_node_from_graft_list(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft_list * isl_ast_graft_list_group_on_guard(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_null isl_ast_graft * isl_ast_graft_free(__isl_take isl_ast_graft *graft)
__isl_give isl_ast_graft * isl_ast_graft_alloc_from_children(__isl_take isl_ast_graft_list *list, __isl_take isl_set *guard, __isl_take isl_basic_set *enforced, __isl_keep isl_ast_build *build, __isl_keep isl_ast_build *sub_build)
__isl_give isl_ast_graft_list * isl_ast_graft_list_gist_guards(__isl_take isl_ast_graft_list *list, __isl_take isl_set *context)
__isl_give isl_basic_set * isl_ast_graft_list_extract_shared_enforced(__isl_keep isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft * isl_ast_graft_insert_for(__isl_take isl_ast_graft *graft, __isl_take isl_ast_node *node)
__isl_give isl_ast_graft_list * isl_ast_graft_list_sort_guard(__isl_take isl_ast_graft_list *list)
__isl_give isl_ast_graft * isl_ast_graft_enforce(__isl_take isl_ast_graft *graft, __isl_take isl_basic_set *enforced)
__isl_give isl_ast_graft_list * isl_ast_graft_list_insert_pending_guard_nodes(__isl_take isl_ast_graft_list *list, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft * isl_ast_graft_add_guard(__isl_take isl_ast_graft *graft, __isl_take isl_set *guard, __isl_keep isl_ast_build *build)
__isl_give isl_basic_set * isl_ast_graft_get_enforced(__isl_keep isl_ast_graft *graft)
__isl_give isl_printer * isl_printer_print_ast_graft(__isl_take isl_printer *p, __isl_keep isl_ast_graft *graft)
__isl_give isl_ast_graft * isl_ast_graft_alloc_domain(__isl_take isl_map *schedule, __isl_keep isl_ast_build *build)
__isl_give isl_ast_graft_list * isl_ast_graft_list_unembed(__isl_take isl_ast_graft_list *list, int product)
isl_ctx * isl_ast_graft_get_ctx(__isl_keep isl_ast_graft *graft)
Definition: isl_ast_graft.c:39
__isl_give isl_ast_graft_list * isl_stream_read_ast_graft_list(isl_stream *s)
__isl_give isl_ast_graft * isl_ast_graft_alloc(__isl_take isl_ast_node *node, __isl_keep isl_ast_build *build)
Definition: isl_ast_graft.c:84
__isl_give isl_ast_graft_list * isl_ast_graft_list_fuse(__isl_take isl_ast_graft_list *children, __isl_keep isl_ast_build *build)
__isl_give isl_ast_node * isl_ast_graft_get_node(__isl_keep isl_ast_graft *graft)
Definition: isl_ast_graft.c:46
__isl_give isl_set * isl_ast_graft_get_guard(__isl_keep isl_ast_graft *graft)
const char * schedule
Definition: isl_test.c:10697
const char * ma
Definition: isl_test.c:7535
const char * p
Definition: isl_test.c:8643
const char * context
Definition: isl_test.c:1784
#define ISL_DECLARE_LIST(EL)
Definition: list.h:121
struct isl_set isl_set
Definition: map_type.h:26
struct isl_basic_set isl_basic_set
Definition: map_type.h:20
isl_ast_node * node
isl_basic_set * enforced