update AUTHORS

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl 0.14

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
mark isl_space_tuple_match as deprecated

This function was replaced by isl_space_tuple_is_equal in c73f000
(document isl_space_tuple_match as isl_space_tuple_is_equal,
Thu Jun 5 18:40:01 2014 +0200).

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
add isl_val_abs_eq

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
add isl_aff_coefficient_sgn

In some cases, only the sign of a coefficient is relevant.
This function allows users to obtain this sign without first
having to obtain the coefficient value itself and then later freeing
that value again.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
add isl_ast_op_zdiv_r

We currently only extract modulo expressions of type isl_ast_op_pdiv_r
where the argument is known to be non-negative because these can
safely be translated into a C %-operator.  There are however also
some other cases where a mathematical module operation can be replaced
by the C %-operator.  In particular, if we are only interested
in the remainder being zero or not, then the rounding that C performs
does not matter.

We introduce a new isl_ast_op_zdiv_r operation type for such cases.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_ast_expr_from_constraint: detect stride constraints

In particular, if an equality is of the form

    e - d floor(e/d) = 0

then directly convert it into

    e % d == 0

with '%' the isl_ast_op_zdiv_r operator.
Do this rather than the default procedure of
checking if (some variation of) e is non-negative and replacing
d floor(e/d) by e - (e mod d).

This saves some needless processing, but more importantly,
it allows us to detect stride conditions even when e cannot
be proven to be non-negative.

For example, we can now write

    if (n % 2 == 0)

instead of

    if (2 * floord(n, 2) == n)

even when nothing is known about n.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_union_pw_*: rename "dim" field to "space"

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_union_pw_*_extract_*: rename "dim" variable to "space"

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
only allow a single isl_pw_* object with given domain space in isl_union_pw_*

Currently, an isl_union_pw_multi_aff can contain multiple
isl_pw_multi_aff objects with the same domain space.
In particular, the domains of these objects may intersect,
meaning that the isl_union_pw_multi_aff object is not a function,
even though it is supposed to be one.

It would be possible to add checks to ensure that such domains
do not intersect, but it is more transparent to simply not allow
two or more isl_pw_multi_aff objects with the same domain space
in an isl_union_pw_multi_aff object.

Originally, the space of an isl_pw_* object was that of the domain
of this function.  It was therefore impossible for and isl_union_pw_*
object to contain more than one isl_pw_* object defined over the
same domain space.
This was changed in 3280c05 (make isl_pw_* object live in a map space,
Tue Aug 30 16:47:59 2011 +0200) to prepare for the isl_pw_multi_aff
object type introduced in 6f87cea (add isl_pw_multi_aff,
Thu Sep 1 11:58:50 2011 +0200).
Still, even after this change in space, an isl_pw_* object
defined over a given domain space could only live in a single
space since the target space was predefined.

At present, the only isl_union_pw_* object type that allows for multiple
target spaces is the isl_union_pw_multi_aff type, which was
introduced in f068f30 (add isl_union_pw_multi_aff,
Tue Mar 20 14:24:15 2012 +0100).

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Add -fno-rtti to AM_CXXFLAGS
Split interface generator in generic and Python-specific part

To support bindings for other languages than Python in the
future, move the functions for querying information about
isl functions and types (e.g., takes(), is_subclass()) and
the struct isl_class to generator.h and generator.cc. The
generator routines for Python remain in python.h and python.cc.

Signed-off-by: Armin Größlinger <armin.groesslinger@uni-passau.de>
Add command line options for output directory and language

Add option "--output-dir" to specify where to put generated
files and "--language" to specify for which language
(currently only "python") to generate bindings.

Signed-off-by: Armin Größlinger <armin.groesslinger@uni-passau.de>
Extract enum types for interface generation

Extract enum types carrying an __isl_export annotation and pass
them to the interface generator.

Signed-off-by: Armin Größlinger <armin.groesslinger@uni-passau.de>
Use enum for ISL_FORMAT
Add support for enums in python generator

An isl enum type is represented by a python class with
static members for each enum value.

Signed-off-by: Armin Größlinger <armin.groesslinger@uni-passau.de>
Cannot extract type for
Comment is_isl_result_argument
Check "this" arguments and return types of constructors

Issue a warning when
- a function is declared as __isl_export but the first
  argument ("this") is not of the expected class type,
- a function is declared to be an __isl_constructor but
  the return type does not match the class the respective
  function has been assigned to.

Signed-off-by: Armin Größlinger <armin.groesslinger@uni-passau.de>
Use isl_printer_* functions to print objects

Generate bindings to isl_printer_* functions and use
the isl_printer functionality for printing objects
(instead of the *_to_str functions). A __str__ method
is only generated when a corresponding isl_printer_print_*
function is exported.

Since there is no isl_printer_copy function, isl_printer
arguments are handled specially: the 'ptr' attribute is
deleted when an isl_printer object is consumed by an
argument marked __isl_take.

Signed-off-by: Armin Größlinger <armin.groesslinger@uni-passau.de>