/**-------------------------------------------------------------------** ** 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 */