117 lines
5.6 KiB
C
117 lines
5.6 KiB
C
|
|
|
||
|
|
/**-------------------------------------------------------------------**
|
||
|
|
** CLooG **
|
||
|
|
**-------------------------------------------------------------------**
|
||
|
|
** program.h **
|
||
|
|
**-------------------------------------------------------------------**
|
||
|
|
** First version: october 25th 2001 **
|
||
|
|
**-------------------------------------------------------------------**/
|
||
|
|
|
||
|
|
|
||
|
|
/******************************************************************************
|
||
|
|
* CLooG : the Chunky Loop Generator (experimental) *
|
||
|
|
******************************************************************************
|
||
|
|
* *
|
||
|
|
* Copyright (C) 2001-2005 Cedric Bastoul *
|
||
|
|
* *
|
||
|
|
* This library is free software; you can redistribute it and/or *
|
||
|
|
* modify it under the terms of the GNU Lesser General Public *
|
||
|
|
* License as published by the Free Software Foundation; either *
|
||
|
|
* version 2.1 of the License, or (at your option) any later version. *
|
||
|
|
* *
|
||
|
|
* This library 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 *
|
||
|
|
* Lesser General Public License for more details. *
|
||
|
|
* *
|
||
|
|
* You should have received a copy of the GNU Lesser General Public *
|
||
|
|
* License along with this library; if not, write to the Free Software *
|
||
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, *
|
||
|
|
* Boston, MA 02110-1301 USA *
|
||
|
|
* *
|
||
|
|
* CLooG, the Chunky Loop Generator *
|
||
|
|
* Written by Cedric Bastoul, Cedric.Bastoul@inria.fr *
|
||
|
|
* *
|
||
|
|
******************************************************************************/
|
||
|
|
|
||
|
|
|
||
|
|
#ifndef CLOOG_PROGRAM_H
|
||
|
|
#define CLOOG_PROGRAM_H
|
||
|
|
#if defined(__cplusplus)
|
||
|
|
extern "C"
|
||
|
|
{
|
||
|
|
#endif
|
||
|
|
|
||
|
|
|
||
|
|
# define MAX_STRING 1024
|
||
|
|
# define MEGA 1000000 /* One million. */
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* CloogProgram structure:
|
||
|
|
* this structure contains all the informations of a program generated or to be
|
||
|
|
* generated.
|
||
|
|
*/
|
||
|
|
struct cloogprogram
|
||
|
|
{ /* Basic program description fields. */
|
||
|
|
char language ; /**< The language of the program. */
|
||
|
|
int nb_scattdims ; /**< Scattering dimension number. */
|
||
|
|
CloogDomain * context ; /**< The context of the program. */
|
||
|
|
CloogLoop * loop ; /**< The loops of the program. */
|
||
|
|
CloogNames * names ; /**< Iterators and parameters names. */
|
||
|
|
CloogBlockList * blocklist ; /**< The statement block list. */
|
||
|
|
|
||
|
|
/* Internal service fields, filled up by cloog_program_scatter function. */
|
||
|
|
int * scaldims ; /**< Boolean array saying whether a given
|
||
|
|
* scattering dimension is scalar or not.
|
||
|
|
*/
|
||
|
|
/* Library user reserved field. */
|
||
|
|
void * usr; /**< User field, for library user convenience.
|
||
|
|
* This pointer is not freed when the
|
||
|
|
* CloogProgram structure is freed.
|
||
|
|
*/
|
||
|
|
} ;
|
||
|
|
typedef struct cloogprogram CloogProgram ;
|
||
|
|
|
||
|
|
|
||
|
|
/******************************************************************************
|
||
|
|
* Structure display function *
|
||
|
|
******************************************************************************/
|
||
|
|
void cloog_program_print_structure(FILE *, CloogProgram *, int) ;
|
||
|
|
void cloog_program_print(FILE *, CloogProgram *) ;
|
||
|
|
void cloog_program_pprint(FILE *, CloogProgram *, CloogOptions *) ;
|
||
|
|
void cloog_program_dump_cloog(FILE *, CloogProgram *, CloogScatteringList *);
|
||
|
|
|
||
|
|
|
||
|
|
/******************************************************************************
|
||
|
|
* Memory deallocation function *
|
||
|
|
******************************************************************************/
|
||
|
|
void cloog_program_free(CloogProgram *) ;
|
||
|
|
|
||
|
|
|
||
|
|
/******************************************************************************
|
||
|
|
* Reading function *
|
||
|
|
******************************************************************************/
|
||
|
|
CloogProgram * cloog_program_read(FILE *, CloogOptions *) ;
|
||
|
|
|
||
|
|
|
||
|
|
/******************************************************************************
|
||
|
|
* Processing functions *
|
||
|
|
******************************************************************************/
|
||
|
|
CloogProgram * cloog_program_malloc(void);
|
||
|
|
CloogProgram * cloog_program_alloc(CloogDomain *context, CloogUnionDomain *ud,
|
||
|
|
CloogOptions *options);
|
||
|
|
CloogProgram * cloog_program_generate(CloogProgram *, CloogOptions *) ;
|
||
|
|
void cloog_program_block(CloogProgram *program,
|
||
|
|
CloogScatteringList *scattering, CloogOptions *options);
|
||
|
|
void cloog_program_extract_scalars(CloogProgram *program,
|
||
|
|
CloogScatteringList *scattering, CloogOptions *options);
|
||
|
|
void cloog_program_scatter(CloogProgram *program,
|
||
|
|
CloogScatteringList *scattering, CloogOptions *options);
|
||
|
|
|
||
|
|
#if defined(__cplusplus)
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
#endif /* define _H */
|
||
|
|
|