1
2   /**-------------------------------------------------------------------**
3    **                              CLooG                                **
4    **-------------------------------------------------------------------**
5    **                            program.h                              **
6    **-------------------------------------------------------------------**
7    **                 First version: october 25th 2001                  **
8    **-------------------------------------------------------------------**/
9
10
11/******************************************************************************
12 *               CLooG : the Chunky Loop Generator (experimental)             *
13 ******************************************************************************
14 *                                                                            *
15 * Copyright (C) 2001-2005 Cedric Bastoul                                     *
16 *                                                                            *
17 * This library is free software; you can redistribute it and/or              *
18 * modify it under the terms of the GNU Lesser General Public                 *
19 * License as published by the Free Software Foundation; either               *
20 * version 2.1 of the License, or (at your option) any later version.         *
21 *                                                                            *
22 * This library is distributed in the hope that it will be useful,            *
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of             *
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU          *
25 * Lesser General Public License for more details.                            *
26 *                                                                            *
27 * You should have received a copy of the GNU Lesser General Public           *
28 * License along with this library; if not, write to the Free Software        *
29 * Foundation, Inc., 51 Franklin Street, Fifth Floor,                         *
30 * Boston, MA  02110-1301  USA                                                *
31 *                                                                            *
32 * CLooG, the Chunky Loop Generator                                           *
33 * Written by Cedric Bastoul, Cedric.Bastoul@inria.fr                         *
34 *                                                                            *
35 ******************************************************************************/
36
37
38#ifndef CLOOG_PROGRAM_H
39#define CLOOG_PROGRAM_H
40#if defined(__cplusplus)
41extern "C"
42  {
43#endif
44
45
46# define MAX_STRING 1024
47# define MEGA 1000000  /* One million. */
48
49
50/**
51 * CloogProgram structure:
52 * this structure contains all the informations of a program generated or to be
53 * generated.
54 */
55struct cloogprogram
56{ /* Basic program description fields. */
57  char language ;              /**< The language of the program. */
58  int  nb_scattdims ;          /**< Scattering dimension number. */
59  CloogDomain    * context ;   /**< The context of the program. */
60  CloogLoop      * loop ;      /**< The loops of the program. */
61  CloogNames     * names ;     /**< Iterators and parameters names. */
62  CloogBlockList * blocklist ; /**< The statement block list. */
63
64  /* Internal service fields, filled up by cloog_program_scatter function. */
65  int * scaldims ;             /**< Boolean array saying whether a given
66                                *   scattering dimension is scalar or not.
67				*/
68  /* Library user reserved field. */
69  void * usr;		       /**< User field, for library user convenience.
70			        *   This pointer is not freed when the
71			        *   CloogProgram structure is freed.
72			        */
73} ;
74typedef struct cloogprogram CloogProgram ;
75
76
77/******************************************************************************
78 *                          Structure display function                        *
79 ******************************************************************************/
80void cloog_program_print_structure(FILE *, CloogProgram *, int) ;
81void cloog_program_print(FILE *, CloogProgram *) ;
82void cloog_program_pprint(FILE *, CloogProgram *, CloogOptions *) ;
83void cloog_program_dump_cloog(FILE *, CloogProgram *, CloogScatteringList *);
84
85
86/******************************************************************************
87 *                         Memory deallocation function                       *
88 ******************************************************************************/
89void cloog_program_free(CloogProgram *) ;
90
91
92/******************************************************************************
93 *                               Reading function                             *
94 ******************************************************************************/
95CloogProgram * cloog_program_read(FILE *, CloogOptions *) ;
96
97
98/******************************************************************************
99 *                            Processing functions                            *
100 ******************************************************************************/
101CloogProgram * cloog_program_malloc(void);
102CloogProgram * cloog_program_alloc(CloogDomain *context, CloogUnionDomain *ud,
103	CloogOptions *options);
104CloogProgram * cloog_program_generate(CloogProgram *, CloogOptions *) ;
105void cloog_program_block(CloogProgram *program,
106	CloogScatteringList *scattering, CloogOptions *options);
107void cloog_program_extract_scalars(CloogProgram *program,
108	CloogScatteringList *scattering, CloogOptions *options);
109void cloog_program_scatter(CloogProgram *program,
110			CloogScatteringList *scattering, CloogOptions *options);
111
112#if defined(__cplusplus)
113  }
114#endif
115#endif /* define _H */
116
117