1*e4b17023SJohn Marino /* Compatibility layer for using upstream CLooG versions with
2*e4b17023SJohn Marino CLooG legacy code.
3*e4b17023SJohn Marino Copyright (C) 2010, 2011 Free Software Foundation, Inc.
4*e4b17023SJohn Marino Contributed by Andreas Simbuerger <simbuerg@fim.uni-passau.de>.
5*e4b17023SJohn Marino
6*e4b17023SJohn Marino This file is part of GCC.
7*e4b17023SJohn Marino
8*e4b17023SJohn Marino GCC is free software; you can redistribute it and/or modify
9*e4b17023SJohn Marino it under the terms of the GNU General Public License as published by
10*e4b17023SJohn Marino the Free Software Foundation; either version 3, or (at your option)
11*e4b17023SJohn Marino any later version.
12*e4b17023SJohn Marino
13*e4b17023SJohn Marino GCC is distributed in the hope that it will be useful,
14*e4b17023SJohn Marino but WITHOUT ANY WARRANTY; without even the implied warranty of
15*e4b17023SJohn Marino MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16*e4b17023SJohn Marino GNU General Public License for more details.
17*e4b17023SJohn Marino
18*e4b17023SJohn Marino You should have received a copy of the GNU General Public License
19*e4b17023SJohn Marino along with GCC; see the file COPYING3. If not see
20*e4b17023SJohn Marino <http://www.gnu.org/licenses/>. */
21*e4b17023SJohn Marino
22*e4b17023SJohn Marino #ifndef GRAPHITE_CLOOG_COMPAT_H
23*e4b17023SJohn Marino #define GRAPHITE_CLOOG_COMPAT_H
24*e4b17023SJohn Marino
25*e4b17023SJohn Marino /* Restore compatibility to CLooG Legacy. */
26*e4b17023SJohn Marino #ifdef CLOOG_ORG
27*e4b17023SJohn Marino typedef const struct clast_expr *clast_name_p;
28*e4b17023SJohn Marino #else
29*e4b17023SJohn Marino typedef const char *clast_name_p;
30*e4b17023SJohn Marino #endif
31*e4b17023SJohn Marino
32*e4b17023SJohn Marino #ifdef CLOOG_ORG
33*e4b17023SJohn Marino #define cloog_initialize()
34*e4b17023SJohn Marino #define cloog_finalize()
35*e4b17023SJohn Marino #endif
36*e4b17023SJohn Marino
37*e4b17023SJohn Marino #ifndef CLOOG_ORG
38*e4b17023SJohn Marino
39*e4b17023SJohn Marino /* CloogOptions compatibility. */
40*e4b17023SJohn Marino #define build_cloog_prog(SCOP, PROG, OPT)\
41*e4b17023SJohn Marino build_cloog_prog (SCOP, PROG)
42*e4b17023SJohn Marino #define cloog_program_extract_scalars(PROG, SCATT, OPT)\
43*e4b17023SJohn Marino cloog_program_extract_scalars (PROG, SCATT)
44*e4b17023SJohn Marino #define cloog_program_scatter(PROG, SCATT, OPT)\
45*e4b17023SJohn Marino cloog_program_scatter (PROG, SCATT)
46*e4b17023SJohn Marino
47*e4b17023SJohn Marino /* CLAST compatibility. */
48*e4b17023SJohn Marino #define clast_expr_term expr_term
49*e4b17023SJohn Marino #define clast_expr_red expr_red
50*e4b17023SJohn Marino #define clast_expr_bin expr_bin
51*e4b17023SJohn Marino #define clast_pprint pprint
52*e4b17023SJohn Marino
53*e4b17023SJohn Marino /* CloogState compatibility. */
54*e4b17023SJohn Marino #define CloogState void
55*e4b17023SJohn Marino #define cloog_state_malloc() NULL
56*e4b17023SJohn Marino #define cloog_state_free(STATE)
57*e4b17023SJohn Marino #define cloog_loop_malloc(STATE) cloog_loop_malloc ()
58*e4b17023SJohn Marino #define cloog_options_malloc(STATE) cloog_options_malloc ()
59*e4b17023SJohn Marino #define cloog_statement_alloc(STATE, INDEX) cloog_statement_alloc (INDEX)
60*e4b17023SJohn Marino #define new_Cloog_Domain_from_ppl_Pointset_Powerset(PSPS, NB, STATE)\
61*e4b17023SJohn Marino new_Cloog_Domain_from_ppl_Pointset_Powerset (PSPS)
62*e4b17023SJohn Marino #define new_Cloog_Domain_from_ppl_Polyhedron(POLY, NB, STATE)\
63*e4b17023SJohn Marino new_Cloog_Domain_from_ppl_Polyhedron (POLY)
64*e4b17023SJohn Marino #define cloog_domain_from_cloog_matrix(STATE, MAT, NB)\
65*e4b17023SJohn Marino cloog_domain_matrix2domain (MAT)
66*e4b17023SJohn Marino
67*e4b17023SJohn Marino /* CloogScatteringList compatibility. */
68*e4b17023SJohn Marino #define CloogScatteringList CloogDomainList
69*e4b17023SJohn Marino #define CloogScattering CloogDomain
70*e4b17023SJohn Marino #define cloog_set_next_scattering cloog_set_next_domain
71*e4b17023SJohn Marino #define cloog_set_scattering cloog_set_domain
72*e4b17023SJohn Marino #define cloog_scattering cloog_domain
73*e4b17023SJohn Marino #define cloog_next_scattering cloog_next_domain
74*e4b17023SJohn Marino #define cloog_scattering_free cloog_domain_free
75*e4b17023SJohn Marino #define cloog_program_dump_cloog(DUMPFILE, PROGRAM, SCATTERINGLIST)\
76*e4b17023SJohn Marino cloog_program_dump_cloog (DUMPFILE, PROGRAM)
77*e4b17023SJohn Marino
78*e4b17023SJohn Marino #endif
79*e4b17023SJohn Marino
80*e4b17023SJohn Marino /* Adapt CLooG accessors from CLooG legacy to
81*e4b17023SJohn Marino newer CLooG versions. */
82*e4b17023SJohn Marino
83*e4b17023SJohn Marino #ifdef CLOOG_ORG
84*e4b17023SJohn Marino
85*e4b17023SJohn Marino static inline void *
cloog_statement_usr(CloogStatement * cs)86*e4b17023SJohn Marino cloog_statement_usr (CloogStatement *cs)
87*e4b17023SJohn Marino {
88*e4b17023SJohn Marino return cs->usr;
89*e4b17023SJohn Marino }
90*e4b17023SJohn Marino
91*e4b17023SJohn Marino static inline CloogScattering *
cloog_scattering(CloogScatteringList * sl)92*e4b17023SJohn Marino cloog_scattering (CloogScatteringList *sl)
93*e4b17023SJohn Marino {
94*e4b17023SJohn Marino return sl->scatt;
95*e4b17023SJohn Marino }
96*e4b17023SJohn Marino
97*e4b17023SJohn Marino static inline void
cloog_set_scattering(CloogScatteringList * sl,CloogScattering * scatt)98*e4b17023SJohn Marino cloog_set_scattering (CloogScatteringList *sl, CloogScattering *scatt)
99*e4b17023SJohn Marino {
100*e4b17023SJohn Marino sl->scatt = scatt;
101*e4b17023SJohn Marino }
102*e4b17023SJohn Marino
103*e4b17023SJohn Marino static inline CloogScatteringList *
cloog_next_scattering(CloogScatteringList * sl)104*e4b17023SJohn Marino cloog_next_scattering (CloogScatteringList *sl)
105*e4b17023SJohn Marino {
106*e4b17023SJohn Marino return sl->next;
107*e4b17023SJohn Marino }
108*e4b17023SJohn Marino
109*e4b17023SJohn Marino static inline void
cloog_set_next_scattering(CloogScatteringList * sl,CloogScatteringList * next)110*e4b17023SJohn Marino cloog_set_next_scattering (CloogScatteringList *sl, CloogScatteringList *next)
111*e4b17023SJohn Marino {
112*e4b17023SJohn Marino sl->next = next;
113*e4b17023SJohn Marino }
114*e4b17023SJohn Marino
115*e4b17023SJohn Marino static inline int
cloog_program_nb_scattdims(CloogProgram * prog)116*e4b17023SJohn Marino cloog_program_nb_scattdims (CloogProgram *prog)
117*e4b17023SJohn Marino {
118*e4b17023SJohn Marino return prog->nb_scattdims;
119*e4b17023SJohn Marino }
120*e4b17023SJohn Marino
121*e4b17023SJohn Marino static inline void
cloog_program_set_nb_scattdims(CloogProgram * prog,int nb_scattdims)122*e4b17023SJohn Marino cloog_program_set_nb_scattdims (CloogProgram *prog, int nb_scattdims)
123*e4b17023SJohn Marino {
124*e4b17023SJohn Marino prog->nb_scattdims = nb_scattdims;
125*e4b17023SJohn Marino }
126*e4b17023SJohn Marino
127*e4b17023SJohn Marino static inline CloogNames *
cloog_program_names(CloogProgram * prog)128*e4b17023SJohn Marino cloog_program_names (CloogProgram *prog)
129*e4b17023SJohn Marino {
130*e4b17023SJohn Marino return prog->names;
131*e4b17023SJohn Marino }
132*e4b17023SJohn Marino
133*e4b17023SJohn Marino static inline void
cloog_program_set_names(CloogProgram * prog,CloogNames * names)134*e4b17023SJohn Marino cloog_program_set_names (CloogProgram *prog, CloogNames *names)
135*e4b17023SJohn Marino {
136*e4b17023SJohn Marino prog->names = names;
137*e4b17023SJohn Marino }
138*e4b17023SJohn Marino
139*e4b17023SJohn Marino static inline void
cloog_program_set_context(CloogProgram * prog,CloogDomain * domain)140*e4b17023SJohn Marino cloog_program_set_context (CloogProgram *prog, CloogDomain *domain)
141*e4b17023SJohn Marino {
142*e4b17023SJohn Marino prog->context = domain;
143*e4b17023SJohn Marino }
144*e4b17023SJohn Marino
145*e4b17023SJohn Marino static inline void
cloog_program_set_loop(CloogProgram * prog,CloogLoop * loop)146*e4b17023SJohn Marino cloog_program_set_loop (CloogProgram *prog, CloogLoop *loop)
147*e4b17023SJohn Marino {
148*e4b17023SJohn Marino prog->loop = loop;
149*e4b17023SJohn Marino }
150*e4b17023SJohn Marino
151*e4b17023SJohn Marino static inline CloogBlockList *
cloog_program_blocklist(CloogProgram * prog)152*e4b17023SJohn Marino cloog_program_blocklist (CloogProgram *prog)
153*e4b17023SJohn Marino {
154*e4b17023SJohn Marino return prog->blocklist;
155*e4b17023SJohn Marino }
156*e4b17023SJohn Marino
157*e4b17023SJohn Marino static inline void
cloog_program_set_blocklist(CloogProgram * prog,CloogBlockList * bl)158*e4b17023SJohn Marino cloog_program_set_blocklist (CloogProgram *prog, CloogBlockList *bl)
159*e4b17023SJohn Marino {
160*e4b17023SJohn Marino prog->blocklist = bl;
161*e4b17023SJohn Marino }
162*e4b17023SJohn Marino
163*e4b17023SJohn Marino static inline int *
cloog_program_scaldims(CloogProgram * prog)164*e4b17023SJohn Marino cloog_program_scaldims (CloogProgram *prog)
165*e4b17023SJohn Marino {
166*e4b17023SJohn Marino return prog->scaldims;
167*e4b17023SJohn Marino }
168*e4b17023SJohn Marino
169*e4b17023SJohn Marino static inline void
cloog_program_set_scaldims(CloogProgram * prog,int * s)170*e4b17023SJohn Marino cloog_program_set_scaldims (CloogProgram *prog, int *s)
171*e4b17023SJohn Marino {
172*e4b17023SJohn Marino prog->scaldims = s;
173*e4b17023SJohn Marino }
174*e4b17023SJohn Marino
175*e4b17023SJohn Marino static inline int
cloog_names_nb_parameters(CloogNames * names)176*e4b17023SJohn Marino cloog_names_nb_parameters (CloogNames *names)
177*e4b17023SJohn Marino {
178*e4b17023SJohn Marino return names->nb_parameters;
179*e4b17023SJohn Marino }
180*e4b17023SJohn Marino
181*e4b17023SJohn Marino static inline void
cloog_names_set_nb_parameters(CloogNames * names,int nb_parameters)182*e4b17023SJohn Marino cloog_names_set_nb_parameters (CloogNames *names, int nb_parameters)
183*e4b17023SJohn Marino {
184*e4b17023SJohn Marino names->nb_parameters = nb_parameters;
185*e4b17023SJohn Marino }
186*e4b17023SJohn Marino
187*e4b17023SJohn Marino static inline char **
cloog_names_parameters(CloogNames * names)188*e4b17023SJohn Marino cloog_names_parameters (CloogNames *names)
189*e4b17023SJohn Marino {
190*e4b17023SJohn Marino return names->parameters;
191*e4b17023SJohn Marino }
192*e4b17023SJohn Marino
193*e4b17023SJohn Marino static inline void
cloog_names_set_parameters(CloogNames * names,char ** parameters)194*e4b17023SJohn Marino cloog_names_set_parameters (CloogNames *names, char **parameters)
195*e4b17023SJohn Marino {
196*e4b17023SJohn Marino names->parameters = parameters;
197*e4b17023SJohn Marino }
198*e4b17023SJohn Marino
199*e4b17023SJohn Marino static inline void
cloog_names_set_nb_iterators(CloogNames * names,int nb_iterators)200*e4b17023SJohn Marino cloog_names_set_nb_iterators (CloogNames *names, int nb_iterators)
201*e4b17023SJohn Marino {
202*e4b17023SJohn Marino names->nb_iterators = nb_iterators;
203*e4b17023SJohn Marino }
204*e4b17023SJohn Marino
205*e4b17023SJohn Marino static inline void
cloog_names_set_iterators(CloogNames * names,char ** iterators)206*e4b17023SJohn Marino cloog_names_set_iterators (CloogNames *names, char **iterators)
207*e4b17023SJohn Marino {
208*e4b17023SJohn Marino names->iterators = iterators;
209*e4b17023SJohn Marino }
210*e4b17023SJohn Marino
211*e4b17023SJohn Marino static inline void
cloog_names_set_nb_scattering(CloogNames * names,int nb_scattering)212*e4b17023SJohn Marino cloog_names_set_nb_scattering (CloogNames *names, int nb_scattering)
213*e4b17023SJohn Marino {
214*e4b17023SJohn Marino names->nb_scattering = nb_scattering;
215*e4b17023SJohn Marino }
216*e4b17023SJohn Marino
217*e4b17023SJohn Marino static inline void
cloog_names_set_scattering(CloogNames * names,char ** scattering)218*e4b17023SJohn Marino cloog_names_set_scattering (CloogNames *names, char **scattering)
219*e4b17023SJohn Marino {
220*e4b17023SJohn Marino names->scattering = scattering;
221*e4b17023SJohn Marino }
222*e4b17023SJohn Marino
223*e4b17023SJohn Marino static inline void
cloog_statement_set_usr(CloogStatement * cs,void * u)224*e4b17023SJohn Marino cloog_statement_set_usr (CloogStatement *cs, void *u)
225*e4b17023SJohn Marino {
226*e4b17023SJohn Marino cs->usr = u;
227*e4b17023SJohn Marino }
228*e4b17023SJohn Marino
229*e4b17023SJohn Marino static inline void
cloog_loop_set_next(CloogLoop * loop,CloogLoop * next)230*e4b17023SJohn Marino cloog_loop_set_next (CloogLoop *loop, CloogLoop *next)
231*e4b17023SJohn Marino {
232*e4b17023SJohn Marino loop->next = next;
233*e4b17023SJohn Marino }
234*e4b17023SJohn Marino
235*e4b17023SJohn Marino static inline void
cloog_loop_set_domain(CloogLoop * loop,CloogDomain * domain)236*e4b17023SJohn Marino cloog_loop_set_domain (CloogLoop *loop, CloogDomain *domain)
237*e4b17023SJohn Marino {
238*e4b17023SJohn Marino loop->domain = domain;
239*e4b17023SJohn Marino }
240*e4b17023SJohn Marino
241*e4b17023SJohn Marino static inline void
cloog_loop_set_block(CloogLoop * loop,CloogBlock * block)242*e4b17023SJohn Marino cloog_loop_set_block (CloogLoop *loop, CloogBlock *block)
243*e4b17023SJohn Marino {
244*e4b17023SJohn Marino loop->block = block;
245*e4b17023SJohn Marino }
246*e4b17023SJohn Marino
247*e4b17023SJohn Marino static inline CloogBlockList *
cloog_block_list_next(CloogBlockList * bl)248*e4b17023SJohn Marino cloog_block_list_next (CloogBlockList *bl)
249*e4b17023SJohn Marino {
250*e4b17023SJohn Marino return bl->next;
251*e4b17023SJohn Marino }
252*e4b17023SJohn Marino
253*e4b17023SJohn Marino static inline void
cloog_block_list_set_next(CloogBlockList * bl,CloogBlockList * next)254*e4b17023SJohn Marino cloog_block_list_set_next (CloogBlockList *bl, CloogBlockList *next)
255*e4b17023SJohn Marino {
256*e4b17023SJohn Marino bl->next = next;
257*e4b17023SJohn Marino }
258*e4b17023SJohn Marino
259*e4b17023SJohn Marino static inline void
cloog_block_list_set_block(CloogBlockList * bl,CloogBlock * block)260*e4b17023SJohn Marino cloog_block_list_set_block (CloogBlockList *bl, CloogBlock *block)
261*e4b17023SJohn Marino {
262*e4b17023SJohn Marino bl->block = block;
263*e4b17023SJohn Marino }
264*e4b17023SJohn Marino
cloog_matrix_ncolumns(CloogMatrix * m)265*e4b17023SJohn Marino static inline int cloog_matrix_ncolumns (CloogMatrix * m)
266*e4b17023SJohn Marino {
267*e4b17023SJohn Marino return m->NbColumns;
268*e4b17023SJohn Marino }
269*e4b17023SJohn Marino
cloog_matrix_nrows(CloogMatrix * m)270*e4b17023SJohn Marino static inline int cloog_matrix_nrows (CloogMatrix * m)
271*e4b17023SJohn Marino {
272*e4b17023SJohn Marino return m->NbRows;
273*e4b17023SJohn Marino }
274*e4b17023SJohn Marino #endif /* CLOOG_ORG */
275*e4b17023SJohn Marino #endif /* GRAPHITE_CLOOG_COMPAT_H */
276