Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
#ifndef ISL_MULTI_H
2
#define ISL_MULTI_H
3
 
4
#include <isl/val_type.h>
5
#include <isl/space_type.h>
6
#include <isl/list.h>
7
#include <isl/set_type.h>
8
 
9
#if defined(__cplusplus)
10
extern "C" {
11
#endif
12
 
13
#define ISL_DECLARE_MULTI(BASE)                                         \
14
isl_ctx *isl_multi_##BASE##_get_ctx(                                    \
15
        __isl_keep isl_multi_##BASE *multi);                            \
16
__isl_export                                                            \
17
__isl_give isl_space *isl_multi_##BASE##_get_space(                     \
18
        __isl_keep isl_multi_##BASE *multi);                            \
19
__isl_give isl_space *isl_multi_##BASE##_get_domain_space(              \
20
        __isl_keep isl_multi_##BASE *multi);                            \
21
__isl_export                                                            \
22
__isl_give isl_##BASE##_list *isl_multi_##BASE##_get_list(              \
23
        __isl_keep isl_multi_##BASE *multi);                            \
24
__isl_constructor                                                       \
25
__isl_give isl_multi_##BASE *isl_multi_##BASE##_from_##BASE##_list(     \
26
        __isl_take isl_space *space, __isl_take isl_##BASE##_list *list); \
27
__isl_export                                                            \
28
__isl_give isl_multi_##BASE *isl_space_multi_##BASE(                    \
29
        __isl_take isl_space *space, __isl_take isl_##BASE##_list *list); \
30
__isl_give isl_multi_##BASE *isl_multi_##BASE##_copy(                   \
31
        __isl_keep isl_multi_##BASE *multi);                            \
32
__isl_null isl_multi_##BASE *isl_multi_##BASE##_free(                   \
33
        __isl_take isl_multi_##BASE *multi);                            \
34
__isl_export                                                            \
35
isl_bool isl_multi_##BASE##_plain_is_equal(                             \
36
        __isl_keep isl_multi_##BASE *multi1,                            \
37
        __isl_keep isl_multi_##BASE *multi2);                           \
38
__isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_user(             \
39
        __isl_take isl_multi_##BASE *multi);                            \
40
__isl_export                                                            \
41
isl_size isl_multi_##BASE##_size(__isl_keep isl_multi_##BASE *multi);   \
42
__isl_export                                                            \
43
__isl_give isl_##BASE *isl_multi_##BASE##_get_at(                       \
44
        __isl_keep isl_multi_##BASE *multi, int pos);                   \
45
__isl_give isl_##BASE *isl_multi_##BASE##_get_##BASE(                   \
46
        __isl_keep isl_multi_##BASE *multi, int pos);                   \
47
__isl_export                                                            \
48
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_at(                 \
49
        __isl_take isl_multi_##BASE *multi, int pos,                    \
50
        __isl_take isl_##BASE *el);                                     \
51
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_##BASE(             \
52
        __isl_take isl_multi_##BASE *multi, int pos,                    \
53
        __isl_take isl_##BASE *el);                                     \
54
__isl_give isl_multi_##BASE *isl_multi_##BASE##_range_splice(           \
55
        __isl_take isl_multi_##BASE *multi1, unsigned pos,              \
56
        __isl_take isl_multi_##BASE *multi2);                           \
57
__isl_give isl_multi_##BASE *isl_multi_##BASE##_flatten_range(          \
58
        __isl_take isl_multi_##BASE *multi);                            \
59
__isl_export                                                            \
60
__isl_give isl_multi_##BASE *isl_multi_##BASE##_flat_range_product(     \
61
        __isl_take isl_multi_##BASE *multi1,                            \
62
        __isl_take isl_multi_##BASE *multi2);                           \
63
__isl_export                                                            \
64
__isl_give isl_multi_##BASE *isl_multi_##BASE##_range_product(          \
65
        __isl_take isl_multi_##BASE *multi1,                            \
66
        __isl_take isl_multi_##BASE *multi2);                           \
67
__isl_give isl_multi_##BASE *isl_multi_##BASE##_factor_range(           \
68
        __isl_take isl_multi_##BASE *multi);                            \
69
isl_bool isl_multi_##BASE##_range_is_wrapping(                          \
70
        __isl_keep isl_multi_##BASE *multi);                            \
71
__isl_give isl_multi_##BASE *isl_multi_##BASE##_range_factor_domain(    \
72
        __isl_take isl_multi_##BASE *multi);                            \
73
__isl_give isl_multi_##BASE *isl_multi_##BASE##_range_factor_range(     \
74
        __isl_take isl_multi_##BASE *multi);                            \
75
__isl_give isl_multi_##BASE *isl_multi_##BASE##_align_params(           \
76
        __isl_take isl_multi_##BASE *multi,                             \
77
        __isl_take isl_space *model);                                   \
78
__isl_give isl_multi_##BASE *isl_multi_##BASE##_from_range(             \
79
        __isl_take isl_multi_##BASE *multi);
80
 
81
#define ISL_DECLARE_MULTI_IDENTITY(BASE)                                \
82
__isl_overload                                                          \
83
__isl_give isl_multi_##BASE *isl_multi_##BASE##_identity_multi_##BASE(  \
84
        __isl_take isl_multi_##BASE *multi);                            \
85
__isl_give isl_multi_##BASE *isl_multi_##BASE##_identity(               \
86
        __isl_take isl_space *space);                                   \
87
__isl_overload                                                          \
88
__isl_give isl_multi_##BASE *                                           \
89
isl_multi_##BASE##_identity_on_domain_space(                            \
90
        __isl_take isl_space *space);                                   \
91
__isl_export                                                            \
92
__isl_give isl_multi_##BASE *                                           \
93
isl_space_identity_multi_##BASE##_on_domain(                            \
94
        __isl_take isl_space *space);
95
 
96
#define ISL_DECLARE_MULTI_CMP(BASE)                                     \
97
int isl_multi_##BASE##_plain_cmp(__isl_keep isl_multi_##BASE *multi1,   \
98
        __isl_keep isl_multi_##BASE *multi2);
99
 
100
#define ISL_DECLARE_MULTI_ARITH(BASE)                                   \
101
__isl_overload                                                          \
102
__isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_val(              \
103
        __isl_take isl_multi_##BASE *multi, __isl_take isl_val *v);     \
104
__isl_overload                                                          \
105
__isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_down_val(         \
106
        __isl_take isl_multi_##BASE *multi, __isl_take isl_val *v);     \
107
__isl_overload                                                          \
108
__isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_multi_val(        \
109
        __isl_take isl_multi_##BASE *multi,                             \
110
        __isl_take isl_multi_val *mv);                                  \
111
__isl_overload                                                          \
112
__isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_down_multi_val(   \
113
        __isl_take isl_multi_##BASE *multi,                             \
114
        __isl_take isl_multi_val *mv);                                  \
115
__isl_give isl_multi_##BASE *isl_multi_##BASE##_mod_multi_val(          \
116
        __isl_take isl_multi_##BASE *multi,                             \
117
        __isl_take isl_multi_val *mv);                                  \
118
__isl_export                                                            \
119
__isl_give isl_multi_##BASE *isl_multi_##BASE##_add(                    \
120
        __isl_take isl_multi_##BASE *multi1,                            \
121
        __isl_take isl_multi_##BASE *multi2);                           \
122
__isl_export                                                            \
123
__isl_give isl_multi_##BASE *isl_multi_##BASE##_sub(                    \
124
        __isl_take isl_multi_##BASE *multi1,                            \
125
        __isl_take isl_multi_##BASE *multi2);                           \
126
__isl_export                                                            \
127
__isl_give isl_multi_##BASE *isl_multi_##BASE##_neg(                    \
128
        __isl_take isl_multi_##BASE *multi);
129
 
130
#define ISL_DECLARE_MULTI_MIN_MAX(BASE)                                 \
131
__isl_export                                                            \
132
__isl_give isl_multi_##BASE *isl_multi_##BASE##_min(                    \
133
        __isl_take isl_multi_##BASE *multi1,                            \
134
        __isl_take isl_multi_##BASE *multi2);                           \
135
__isl_export                                                            \
136
__isl_give isl_multi_##BASE *isl_multi_##BASE##_max(                    \
137
        __isl_take isl_multi_##BASE *multi1,                            \
138
        __isl_take isl_multi_##BASE *multi2);
139
 
140
#define ISL_DECLARE_MULTI_ADD_CONSTANT(BASE)                            \
141
__isl_overload                                                          \
142
__isl_give isl_multi_##BASE *isl_multi_##BASE##_add_constant_val(       \
143
        __isl_take isl_multi_##BASE *mpa, __isl_take isl_val *v);       \
144
__isl_overload                                                          \
145
__isl_give isl_multi_##BASE *isl_multi_##BASE##_add_constant_multi_val( \
146
        __isl_take isl_multi_##BASE *mpa, __isl_take isl_multi_val *mv);
147
 
148
#define ISL_DECLARE_MULTI_ZERO(BASE)                                    \
149
__isl_export                                                            \
150
__isl_give isl_multi_##BASE *isl_multi_##BASE##_zero(                   \
151
        __isl_take isl_space *space);                                   \
152
__isl_export                                                            \
153
__isl_give isl_multi_##BASE *isl_space_zero_multi_##BASE(               \
154
        __isl_take isl_space *space);
155
 
156
#define ISL_DECLARE_MULTI_NAN(BASE)                                     \
157
__isl_export                                                            \
158
isl_bool isl_multi_##BASE##_involves_nan(                               \
159
        __isl_keep isl_multi_##BASE *multi);
160
 
161
#define ISL_DECLARE_MULTI_DROP_DIMS(BASE)                               \
162
isl_size isl_multi_##BASE##_dim(__isl_keep isl_multi_##BASE *multi,     \
163
        enum isl_dim_type type);                                        \
164
__isl_give isl_multi_##BASE *isl_multi_##BASE##_drop_dims(              \
165
        __isl_take isl_multi_##BASE *multi, enum isl_dim_type type,     \
166
        unsigned first, unsigned n);
167
#define ISL_DECLARE_MULTI_DIMS(BASE)                                    \
168
ISL_DECLARE_MULTI_DROP_DIMS(BASE)                                       \
169
isl_bool isl_multi_##BASE##_involves_dims(                              \
170
        __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type,     \
171
        unsigned first, unsigned n);                                    \
172
__isl_give isl_multi_##BASE *isl_multi_##BASE##_insert_dims(            \
173
        __isl_take isl_multi_##BASE *multi, enum isl_dim_type type,     \
174
        unsigned first, unsigned n);                                    \
175
__isl_give isl_multi_##BASE *isl_multi_##BASE##_add_dims(               \
176
        __isl_take isl_multi_##BASE *multi, enum isl_dim_type type,     \
177
        unsigned n);                                                    \
178
__isl_give isl_multi_##BASE *                                           \
179
isl_multi_##BASE##_project_domain_on_params(                            \
180
        __isl_take isl_multi_##BASE *multi);
181
 
182
#define ISL_DECLARE_MULTI_INSERT_DOMAIN(BASE)                           \
183
__isl_export                                                            \
184
__isl_give isl_multi_##BASE *                                           \
185
isl_multi_##BASE##_insert_domain(__isl_take isl_multi_##BASE *multi,    \
186
        __isl_take isl_space *domain);
187
 
188
#define ISL_DECLARE_MULTI_LOCALS(BASE)                                  \
189
__isl_export                                                            \
190
isl_bool isl_multi_##BASE##_involves_locals(                            \
191
        __isl_keep isl_multi_##BASE *multi);
192
 
193
#define ISL_DECLARE_MULTI_DIM_ID(BASE)                                  \
194
int isl_multi_##BASE##_find_dim_by_name(                                \
195
        __isl_keep isl_multi_##BASE *multi,                             \
196
        enum isl_dim_type type, const char *name);                      \
197
int isl_multi_##BASE##_find_dim_by_id(                                  \
198
        __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type,     \
199
        __isl_keep isl_id *id);                                         \
200
__isl_give isl_id *isl_multi_##BASE##_get_dim_id(                       \
201
        __isl_keep isl_multi_##BASE *multi,                             \
202
        enum isl_dim_type type, unsigned pos);                          \
203
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_name(           \
204
        __isl_take isl_multi_##BASE *multi,                             \
205
        enum isl_dim_type type, unsigned pos, const char *s);           \
206
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_id(             \
207
        __isl_take isl_multi_##BASE *multi,                             \
208
        enum isl_dim_type type, unsigned pos, __isl_take isl_id *id);
209
 
210
#define ISL_DECLARE_MULTI_TUPLE_ID(BASE)                                \
211
const char *isl_multi_##BASE##_get_tuple_name(                          \
212
        __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type);    \
213
__isl_export                                                            \
214
isl_bool isl_multi_##BASE##_has_range_tuple_id(                         \
215
        __isl_keep isl_multi_##BASE *multi);                            \
216
isl_bool isl_multi_##BASE##_has_tuple_id(                               \
217
        __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type);    \
218
__isl_export                                                            \
219
__isl_give isl_id *isl_multi_##BASE##_get_range_tuple_id(               \
220
        __isl_keep isl_multi_##BASE *multi);                            \
221
__isl_give isl_id *isl_multi_##BASE##_get_tuple_id(                     \
222
        __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type);    \
223
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_name(         \
224
        __isl_take isl_multi_##BASE *multi,                             \
225
        enum isl_dim_type type, const char *s);                         \
226
__isl_overload                                                          \
227
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_range_tuple_id(     \
228
        __isl_take isl_multi_##BASE *multi,  __isl_take isl_id *id);    \
229
__isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_id(           \
230
        __isl_take isl_multi_##BASE *multi,                             \
231
        enum isl_dim_type type, __isl_take isl_id *id);                 \
232
__isl_export                                                            \
233
__isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_range_tuple_id(   \
234
        __isl_take isl_multi_##BASE *multi);                            \
235
__isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_tuple_id(         \
236
        __isl_take isl_multi_##BASE *multi, enum isl_dim_type type);
237
 
238
#define ISL_DECLARE_MULTI_WITH_DOMAIN(BASE)                             \
239
__isl_export                                                            \
240
__isl_give isl_multi_##BASE *isl_multi_##BASE##_product(                \
241
        __isl_take isl_multi_##BASE *multi1,                            \
242
        __isl_take isl_multi_##BASE *multi2);                           \
243
__isl_give isl_multi_##BASE *isl_multi_##BASE##_splice(                 \
244
        __isl_take isl_multi_##BASE *multi1, unsigned in_pos,           \
245
        unsigned out_pos, __isl_take isl_multi_##BASE *multi2);
246
 
247
#define ISL_DECLARE_MULTI_BIND_DOMAIN(BASE)                             \
248
__isl_export                                                            \
249
__isl_give isl_multi_##BASE *isl_multi_##BASE##_bind_domain(            \
250
        __isl_take isl_multi_##BASE *multi,                             \
251
        __isl_take isl_multi_id *tuple);                                \
252
__isl_export                                                            \
253
__isl_give isl_multi_##BASE *                                           \
254
isl_multi_##BASE##_bind_domain_wrapped_domain(                          \
255
        __isl_take isl_multi_##BASE *multi,                             \
256
        __isl_take isl_multi_id *tuple);
257
 
258
#define ISL_DECLARE_MULTI_UNBIND_PARAMS(BASE)                           \
259
__isl_export                                                            \
260
__isl_give isl_multi_##BASE *                                           \
261
isl_multi_##BASE##_unbind_params_insert_domain(                         \
262
        __isl_take isl_multi_##BASE *multi,                             \
263
        __isl_take isl_multi_id *domain);
264
 
265
#define ISL_DECLARE_MULTI_PARAM(BASE)                                   \
266
__isl_overload                                                          \
267
isl_bool isl_multi_##BASE##_involves_param_id(                          \
268
        __isl_keep isl_multi_##BASE *multi, __isl_keep isl_id *id);     \
269
__isl_overload                                                          \
270
isl_bool isl_multi_##BASE##_involves_param_id_list(                     \
271
        __isl_keep isl_multi_##BASE *multi,                             \
272
        __isl_keep isl_id_list *list);
273
 
274
#if defined(__cplusplus)
275
}
276
#endif
277
 
278
#endif