2 /**-------------------------------------------------------------------**
4 **-------------------------------------------------------------------**
6 **-------------------------------------------------------------------**
7 ** First version: april 17th 2005 **
8 **-------------------------------------------------------------------**/
11 /******************************************************************************
12 * CLooG : the Chunky Loop Generator (experimental) *
13 ******************************************************************************
15 * Copyright (C) 2005 Cedric Bastoul *
17 * This is free software; you can redistribute it and/or modify it under the *
18 * terms of the GNU General Public License as published by the Free Software *
19 * Foundation; either version 2 of the License, or (at your option) any later *
22 * This software is distributed in the hope that it will be useful, but *
23 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
24 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License *
27 * You should have received a copy of the GNU General Public License along *
28 * with software; if not, write to the Free Software Foundation, Inc., *
29 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
31 * CLooG, the Chunky Loop Generator *
32 * Written by Cedric Bastoul, Cedric.Bastoul@inria.fr *
34 ******************************************************************************/
37 #ifndef CLOOG_CONSTRAINTS_H
38 #define CLOOG_CONSTRAINTS_H
39 #if defined(__cplusplus)
45 #include <cloog/polylib/matrix.h>
47 struct cloogconstraintset
;
48 typedef struct cloogconstraintset CloogConstraintSet
;
49 struct cloogequalities
;
50 typedef struct cloogequalities CloogEqualities
;
54 /******************************************************************************
55 * Equalities spreading functions *
56 ******************************************************************************/
57 CloogEqualities
*cloog_equal_alloc(int n
, int nb_levels
,
59 void cloog_equal_free(CloogEqualities
*equal
);
60 int cloog_equal_count(CloogEqualities
*equal
);
61 CloogConstraintSet
*cloog_equal_constraints(CloogEqualities
*equal
);
62 int cloog_equal_type(CloogEqualities
*equal
, int level
);
63 void cloog_equal_add(CloogEqualities
*equal
,
64 CloogConstraintSet
*constraints
,
65 int level
, int line
, int nb_par
);
66 void cloog_equal_del(CloogEqualities
*equal
, int level
);
68 /******************************************************************************
69 * Processing functions *
70 ******************************************************************************/
71 void cloog_constraint_set_normalize(CloogConstraintSet
*, int);
72 void cloog_constraint_set_free(CloogConstraintSet
*);
73 int cloog_constraint_set_contains_level(CloogConstraintSet
*constraints
,
74 int level
, int nb_parameters
);
75 int cloog_constraint_set_defining_equality(CloogConstraintSet
*constraints
,
77 int cloog_constraint_set_defining_inequalities(CloogConstraintSet
*constraints
,
78 int level
, int *lower
, int nb_parameters
);
79 int cloog_constraint_set_total_dimension(CloogConstraintSet
*constraints
);
80 CloogConstraintSet
*cloog_constraint_set_copy(CloogConstraintSet
*);
81 CloogConstraintSet
*cloog_constraint_set_simplify(CloogConstraintSet
*, CloogEqualities
*, int, int);
82 int cloog_constraint_set_count(CloogConstraintSet
*constraints
);
83 int cloog_constraint_involves(CloogConstraintSet
*constraints
, int c
, int v
);
84 int cloog_constraint_is_lower_bound(CloogConstraintSet
*constraints
, int c
, int v
);
85 int cloog_constraint_is_upper_bound(CloogConstraintSet
*constraints
, int c
, int v
);
86 int cloog_constraint_is_equality(CloogConstraintSet
*constraints
, int c
);
87 void cloog_constraint_constant_get(CloogConstraintSet
*constraints
,
88 int c
, cloog_int_t
*val
);
89 void cloog_constraint_coefficient_get(CloogConstraintSet
*constraints
,
90 int c
, int var
, cloog_int_t
*val
);
91 void cloog_constraint_coefficient_set(CloogConstraintSet
*constraints
,
92 int c
, int var
, cloog_int_t val
);
93 void cloog_constraint_clear(CloogConstraintSet
*constraints
, int c
);
94 void cloog_constraint_copy(CloogConstraintSet
*constraints
, int c
,
97 #if defined(__cplusplus)
100 #endif /* define _H */