aboutsummaryrefslogtreecommitdiff
path: root/gcc/graphite-cloog-compat.h
blob: b7a3b23cb5a793389539052c0bef588eaf1f759b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
/* Compatibility layer for using upstream CLooG versions with
   CLooG legacy code.
   Copyright (C) 2010 Free Software Foundation, Inc.
   Contributed by Andreas Simbuerger <simbuerg@fim.uni-passau.de>.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */

#ifndef GRAPHITE_CLOOG_COMPAT_H
#define GRAPHITE_CLOOG_COMPAT_H

/* Restore compatibility to CLooG Legacy.  */
#ifdef CLOOG_ORG
typedef const struct clast_expr *clast_name_p;
#else
typedef const char *clast_name_p;
#endif

#ifdef CLOOG_ORG
#define cloog_initialize()
#define cloog_finalize()
#endif

#ifndef CLOOG_ORG

/* CloogOptions compatibility.  */
#define build_cloog_prog(SCOP, PROG, OPT, STATE)\
  build_cloog_prog (SCOP, PROG, STATE)
#define cloog_program_extract_scalars(PROG, SCATT, OPT)\
  cloog_program_extract_scalars (PROG, SCATT)
#define cloog_program_scatter(PROG, SCATT, OPT)\
  cloog_program_scatter (PROG, SCATT)

/* CLAST compatibility.  */
#define clast_expr_term expr_term
#define clast_expr_red expr_red
#define clast_expr_bin expr_bin
#define clast_pprint pprint

/* CloogState compatibility.  */
#define CloogState void
#define cloog_state_malloc() NULL
#define cloog_state_free(STATE)
#define cloog_loop_malloc(STATE) cloog_loop_malloc ()
#define cloog_options_malloc(STATE) cloog_options_malloc ()
#define cloog_statement_alloc(STATE, INDEX) cloog_statement_alloc (INDEX)
#define new_Cloog_Domain_from_ppl_Pointset_Powerset(PSPS, NB, STATE)\
  new_Cloog_Domain_from_ppl_Pointset_Powerset (PSPS)
#define new_Cloog_Domain_from_ppl_Polyhedron(POLY, NB, STATE)\
  new_Cloog_Domain_from_ppl_Polyhedron (POLY)
#define cloog_domain_from_cloog_matrix(STATE, MAT, NB)\
  cloog_domain_matrix2domain (MAT)

/* CloogScatteringList compatibility.  */
#define CloogScatteringList CloogDomainList
#define CloogScattering CloogDomain
#define cloog_set_next_scattering cloog_set_next_domain
#define cloog_set_scattering cloog_set_domain
#define cloog_scattering cloog_domain
#define cloog_next_scattering cloog_next_domain
#define cloog_scattering_free cloog_domain_free
#define cloog_program_dump_cloog(DUMPFILE, PROGRAM, SCATTERINGLIST)\
  cloog_program_dump_cloog (DUMPFILE, PROGRAM)

#endif

/* Adapt CLooG accessors from CLooG legacy to
   newer CLooG versions.  */

#ifdef CLOOG_ORG

static inline void *
cloog_statement_usr (CloogStatement *cs)
{
  return cs->usr;
}

static inline CloogScattering *
cloog_scattering (CloogScatteringList *sl)
{
  return sl->scatt;
}

static inline void
cloog_set_scattering (CloogScatteringList *sl, CloogScattering *scatt)
{
  sl->scatt = scatt;
}

static inline CloogScatteringList *
cloog_next_scattering (CloogScatteringList *sl)
{
  return sl->next;
}

static inline void
cloog_set_next_scattering (CloogScatteringList *sl, CloogScatteringList *next)
{
  sl->next = next;
}

static inline int
cloog_program_nb_scattdims (CloogProgram *prog)
{
  return prog->nb_scattdims;
}

static inline void
cloog_program_set_nb_scattdims (CloogProgram *prog, int nb_scattdims)
{
  prog->nb_scattdims = nb_scattdims;
}

static inline CloogNames *
cloog_program_names (CloogProgram *prog)
{
  return prog->names;
}

static inline void
cloog_program_set_names (CloogProgram *prog, CloogNames *names)
{
  prog->names = names;
}

static inline void
cloog_program_set_context (CloogProgram *prog, CloogDomain *domain)
{
  prog->context = domain;
}

static inline void
cloog_program_set_loop (CloogProgram *prog, CloogLoop *loop)
{
  prog->loop = loop;
}

static inline CloogBlockList *
cloog_program_blocklist (CloogProgram *prog)
{
  return prog->blocklist;
}

static inline void
cloog_program_set_blocklist (CloogProgram *prog, CloogBlockList *bl)
{
  prog->blocklist = bl;
}

static inline int *
cloog_program_scaldims (CloogProgram *prog)
{
  return prog->scaldims;
}

static inline void
cloog_program_set_scaldims (CloogProgram *prog, int *s)
{
  prog->scaldims = s;
}

static inline int
cloog_names_nb_parameters (CloogNames *names)
{
  return names->nb_parameters;
}

static inline void
cloog_names_set_nb_parameters (CloogNames *names, int nb_parameters)
{
  names->nb_parameters = nb_parameters;
}

static inline char **
cloog_names_parameters (CloogNames *names)
{
  return names->parameters;
}

static inline void
cloog_names_set_parameters (CloogNames *names, char **parameters)
{
  names->parameters = parameters;
}

static inline void
cloog_names_set_nb_iterators (CloogNames *names, int nb_iterators)
{
  names->nb_iterators = nb_iterators;
}

static inline void
cloog_names_set_iterators (CloogNames *names, char **iterators)
{
  names->iterators = iterators;
}

static inline void
cloog_names_set_nb_scattering (CloogNames *names, int nb_scattering)
{
  names->nb_scattering = nb_scattering;
}

static inline void
cloog_names_set_scattering (CloogNames *names, char **scattering)
{
  names->scattering = scattering;
}

static inline void
cloog_statement_set_usr (CloogStatement *cs, void *u)
{
  cs->usr = u;
}

static inline void
cloog_loop_set_next (CloogLoop *loop, CloogLoop *next)
{
  loop->next = next;
}

static inline void
cloog_loop_set_domain (CloogLoop *loop, CloogDomain *domain)
{
  loop->domain = domain;
}

static inline void
cloog_loop_set_block (CloogLoop *loop, CloogBlock *block)
{
  loop->block = block;
}

static inline CloogBlockList *
cloog_block_list_next (CloogBlockList *bl)
{
  return bl->next;
}

static inline void
cloog_block_list_set_next (CloogBlockList *bl, CloogBlockList *next)
{
  bl->next = next;
}

static inline void
cloog_block_list_set_block (CloogBlockList *bl, CloogBlock *block)
{
  bl->block = block;
}

static inline int cloog_matrix_ncolumns (CloogMatrix * m)
{
  return m->NbColumns;
}

static inline int cloog_matrix_nrows (CloogMatrix * m)
{
   return m->NbRows;
}
#endif /* CLOOG_ORG  */
#endif /* GRAPHITE_CLOOG_COMPAT_H  */