platform/upstream/isl.git
11 years agorename isl_basic_set_add to isl_basic_set_add_dims
Sven Verdoolaege [Mon, 1 Oct 2012 08:55:08 +0000 (10:55 +0200)]
rename isl_basic_set_add to isl_basic_set_add_dims

For consistency with isl_set_add_dims and isl_basic_set_insert_dims.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_aff_normalize: plug in divs with unit coefficient in other divs
Sven Verdoolaege [Sat, 29 Sep 2012 18:11:32 +0000 (20:11 +0200)]
isl_aff_normalize: plug in divs with unit coefficient in other divs

The outer div expression can then be simplified and the inner div
expression may be removed if it was only used inside the outer div
expression.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_local_space_substitute_seq: take argument for the number of divs to modify
Sven Verdoolaege [Sat, 29 Sep 2012 17:45:57 +0000 (19:45 +0200)]
isl_local_space_substitute_seq: take argument for the number of divs to modify

This will allow us to modify a single div in the next commit.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_aff_floor: normalize result
Sven Verdoolaege [Sat, 8 Sep 2012 13:04:45 +0000 (15:04 +0200)]
isl_aff_floor: normalize result

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_aff_ceil: compute ceil(e/m) as floor((e + m - 1)/m)
Sven Verdoolaege [Sat, 8 Sep 2012 12:56:40 +0000 (14:56 +0200)]
isl_aff_ceil: compute ceil(e/m) as floor((e + m - 1)/m)

The original implementation would compute ceil(e/m) as -floor(-e/m).
Although both are correct, floor((e + m - 1)/m) is probably less
surprising.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_aff_gist: add missing isl_vec_cow
Sven Verdoolaege [Mon, 12 Nov 2012 11:13:15 +0000 (12:13 +0100)]
isl_aff_gist: add missing isl_vec_cow

We could end up modifying a different isl_aff that originated from
the same isl_aff as the one being modified.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_union_set_compute_schedule: double check that we do not run out of rows
Sven Verdoolaege [Sun, 4 Nov 2012 15:51:30 +0000 (16:51 +0100)]
isl_union_set_compute_schedule: double check that we do not run out of rows

The previous commit fixed a case where we would generate more schedule
rows than anticipated.  Make sure we do not run into this situation again.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_union_set_compute_schedule: ensure carry_dependences makes progress
Sven Verdoolaege [Sun, 4 Nov 2012 15:30:54 +0000 (16:30 +0100)]
isl_union_set_compute_schedule: ensure carry_dependences makes progress

If solve_lp is unable to find a solution, then compute_schedule_wcc
calls carry_dependences to carry as many dependences as possible.

However, the reason that solve_lp was unable to find a solution
may be due to proximity dependences.  In particular, if there are
an infinite number of dependences with the same starting or ending
itereration, then the way proximity dependences are currently handled
may force some of the schedule coefficients to be zero based solely
on those proximity dependences.

carry_dependences may then fail to carry any (validity) dependences
simply because there are no validity dependences.
More generally, it may produce a non-trivial solution on only some
of the nodes.  This may result in a number of schedule rows (infinite
in the worst case) that is larger than the maximum computed in
compute_max_row, leading to out-of-bounds accesses.

We therefore check that the schedule row computed by carry_dependences
is non-trivial on all the nodes where it should be non-trivial.
If not, we try again on each dependence graph component separately
or fail if there is only one component.

Note that this commit does not fix the problem that the presence
of proximity dependences may eliminate some valid solutions,
but it should solve the out-of-bounds accesses.

Reported-by: Tobias Grosser <tobias@grosser.es>
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoupdate for change in clang's DiagnosticOptions
Sven Verdoolaege [Tue, 30 Oct 2012 22:15:41 +0000 (23:15 +0100)]
update for change in clang's DiagnosticOptions

DiagnosticOptions was moved from Frontend to Basic and
createDiagnostics now takes a pointer to a DiagnosticOptions object.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_map_plain_is_disjoint: handle inputs with different parameters
Sven Verdoolaege [Sun, 14 Oct 2012 14:38:21 +0000 (16:38 +0200)]
isl_map_plain_is_disjoint: handle inputs with different parameters

In particular, make sure we do not call isl_basic_map_plain_is_disjoint
if the input relations do not have the same parameters.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd README
Sven Verdoolaege [Sat, 13 Oct 2012 12:04:19 +0000 (14:04 +0200)]
add README

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoIntroduce isl_int_free_str to remove GMP dependency in isl_int interface
Andreas Kloeckner [Mon, 8 Oct 2012 17:36:50 +0000 (13:36 -0400)]
Introduce isl_int_free_str to remove GMP dependency in isl_int interface

Signed-off-by: Andreas Kloeckner <inform@tiker.net>
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_union_set_compute_schedule: handle result with zero bands
Sven Verdoolaege [Wed, 10 Oct 2012 10:36:37 +0000 (12:36 +0200)]
isl_union_set_compute_schedule: handle result with zero bands

The code in extract_schedule would assume that there is at least
one band in the resulting schedule.  Skip the parts that depend
on this assumption when the number of bands is zero.

Reported-by: Sameer Sahasrabuddhe <Sameer.Sahasrabuddhe@amd.com>
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_codegen.c: generate_domain: postpone single-valuedness test
Sven Verdoolaege [Sun, 7 Oct 2012 10:18:45 +0000 (12:18 +0200)]
isl_ast_codegen.c: generate_domain: postpone single-valuedness test

In particular, perform the test on the map that will actually be used
to construct the call expression.

The original code would first perform the test and then construct
the call expression from a map with a simplified domain.
This construction may fail because after simplification of the domain,
the map may no longer be single valued.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_build_ast_from_schedule: make construction of else branches optional
Sven Verdoolaege [Fri, 5 Oct 2012 12:15:20 +0000 (14:15 +0200)]
isl_ast_build_ast_from_schedule: make construction of else branches optional

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_build_ast_from_schedule: use "<" if upper bound has negative constant
Sven Verdoolaege [Tue, 2 Oct 2012 11:30:25 +0000 (13:30 +0200)]
isl_ast_build_ast_from_schedule: use "<" if upper bound has negative constant

This is a purely cosmetic change.
In particular, we prefer

    for (int c1 = max(0, c0); c1 < min(N, N + c0); c1 += 1)

over

    for (int c1 = max(0, c0); c1 <= min(N - 1, N + c0 - 1); c1 += 1)

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_expr: add isl_ast_op_lt and isl_ast_op_gt operations
Sven Verdoolaege [Tue, 2 Oct 2012 11:20:24 +0000 (13:20 +0200)]
isl_ast_expr: add isl_ast_op_lt and isl_ast_op_gt operations

isl_ast_op_lt will be useful in the next commit.
isl_ast_op_gt is added for consistency.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_basic_set_from_params
Sven Verdoolaege [Mon, 1 Oct 2012 08:52:00 +0000 (10:52 +0200)]
add isl_basic_set_from_params

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_expr_from_aff: try harder to use isl_ast_op_pdiv_{q,r}
Sven Verdoolaege [Fri, 28 Sep 2012 18:19:01 +0000 (20:19 +0200)]
isl_ast_expr_from_aff: try harder to use isl_ast_op_pdiv_{q,r}

When generating C code, we prefer to generate "/" (or "%") rather
than "floord" because "floord" has an implicit condition on the
sign of the first argument.
We would already generate isl_ast_op_pdiv_q instead of isl_ast_op_fdiv_q
if we detect that the first argument is non-negative.
Now, we also check if the first argument is smaller than the second.
If so, we can rewrite

floor(e/d) = -ceil(-e/d) = -floor((-e + d - 1)/d)

and still use isl_ast_op_pdiv_q.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_build_expr.c: separate out extract_modulo function
Sven Verdoolaege [Sat, 29 Sep 2012 08:18:55 +0000 (10:18 +0200)]
isl_ast_build_expr.c: separate out extract_modulo function

This will make it easier to improve the extraction of modulos
in a subsequent commit.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_build_expr.c: fix typo in comment
Sven Verdoolaege [Sat, 29 Sep 2012 10:02:01 +0000 (12:02 +0200)]
isl_ast_build_expr.c: fix typo in comment

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_build_expr.c: remove remnants of code removed before inclusion
Sven Verdoolaege [Sat, 29 Sep 2012 09:11:19 +0000 (11:11 +0200)]
isl_ast_build_expr.c: remove remnants of code removed before inclusion

The AST generation code has undergone many changes before it was
included in the master branch.  Some references to old code got left in
by mistake.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd extra AST generation test case from CLooG
Sven Verdoolaege [Fri, 28 Sep 2012 17:36:50 +0000 (19:36 +0200)]
add extra AST generation test case from CLooG

The test case was not added before because the output had not been
tested yet.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_printer_print_str: handle NULL input
Sven Verdoolaege [Fri, 21 Sep 2012 19:57:19 +0000 (21:57 +0200)]
isl_printer_print_str: handle NULL input

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_ast_expr_mod: perform missing multiplication
Sven Verdoolaege [Fri, 21 Sep 2012 16:11:07 +0000 (18:11 +0200)]
isl_ast_expr_mod: perform missing multiplication

The function was documented as multiplying the constructed modulo expression
by the first argument, but failed to do so.
The problem went unnoticed because the first argument is usually equal to 1.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoMake sed expression in Makefile compatible with BSD style sed
Tobias Grosser [Fri, 21 Sep 2012 10:50:08 +0000 (12:50 +0200)]
Make sed expression in Makefile compatible with BSD style sed

Apparently sed as available on Mac, requires a terminating semicolon
in the command list. As gnu-sed is OK with and without the semicolon
we add it for compatibility.

Note that the "{" command of historical seds may not support multiple
commands on a single line.

Reported-by: Georg <georggcc@googlemail.com>
Signed-off-by: Tobias Grosser <tobias@grosser.es>
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_id_set_free_user
Sven Verdoolaege [Mon, 10 Sep 2012 12:23:40 +0000 (14:23 +0200)]
add isl_id_set_free_user

Allow the user to specify a callback to be called on the user pointer
when the last reference to the isl_id disappears.  This is convenient
for attaching dynamically allocated data structures to isl_ids,
especially in annotations to AST nodes.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_printer_print_pw_aff: use isl_ast_expr when printing in C format
Sven Verdoolaege [Mon, 14 May 2012 15:30:25 +0000 (17:30 +0200)]
isl_printer_print_pw_aff: use isl_ast_expr when printing in C format

isl_ast_expr_from_aff tries a bit harder to print a nice result,
so we might as well reuse that functionality.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd support for generating ASTs from schedule relations
Sven Verdoolaege [Mon, 17 Sep 2012 20:11:06 +0000 (22:11 +0200)]
add support for generating ASTs from schedule relations

This functionality is similar to that offered by CLooG and codegen(+).
The implementation in isl allows for a bit more control on how
the ASTs are generated by means of fairly flexible options.
It also has proper support for nested AST generation.

The outputs of all test cases have been verified by parsing them
using pet and then checking that the set of calls corresponds exactly
to the domain of the schedule and that they are called in an order
that matches the schedule.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd ISL_CTX_{GET,SET}_STR_DEF macros
Sven Verdoolaege [Mon, 17 Sep 2012 15:34:48 +0000 (17:34 +0200)]
add ISL_CTX_{GET,SET}_STR_DEF macros

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agodoc: separate out polyhedral compilation functionality
Sven Verdoolaege [Thu, 24 May 2012 17:48:01 +0000 (19:48 +0200)]
doc: separate out polyhedral compilation functionality

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_set_dim_has_{lower,upper}_bound
Sven Verdoolaege [Sun, 26 Aug 2012 13:53:42 +0000 (15:53 +0200)]
add isl_set_dim_has_{lower,upper}_bound

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_basic_set_substitute: check that input affine expression is integral
Sven Verdoolaege [Thu, 1 Mar 2012 10:02:51 +0000 (11:02 +0100)]
isl_basic_set_substitute: check that input affine expression is integral

Otherwise, we may have to add stride constraints.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_pw_multi_aff_substitute: improve error handling
Sven Verdoolaege [Wed, 29 Feb 2012 16:58:47 +0000 (17:58 +0100)]
isl_pw_multi_aff_substitute: improve error handling

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_basic_map_align_divs: fix potential invalid access
Sven Verdoolaege [Sat, 3 Mar 2012 12:55:54 +0000 (13:55 +0100)]
isl_basic_map_align_divs: fix potential invalid access

isl_basic_map_align_divs is currently only called on inputs that are
known not to be NULL, but since we check whether they are NULL anyway,
we might as well only access them after this test.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_pw_multi_aff_from_map: detect strides in output dimensions
Sven Verdoolaege [Fri, 14 Sep 2012 21:43:26 +0000 (23:43 +0200)]
isl_pw_multi_aff_from_map: detect strides in output dimensions

If the input map is of the form

{ [i] -> [j] : exists a: j = 4 a and i - 1 <= j <= i }

then the detection mechanism of the previous commit will not
be able to read off the definition of j directly from the constraints.
However, if we plug in j = 4 j', we obtain

{ [i] -> [j'] : i - 1 <= 4 j' <= i }

from which we can read off j' = floor(i/4), which can then be plugged
back into j = 4 j' to obitain j = 4 * floor(i/4).

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_pw_multi_aff_from_map: detect easy floors directly from constraints
Sven Verdoolaege [Tue, 11 Sep 2012 13:26:42 +0000 (15:26 +0200)]
isl_pw_multi_aff_from_map: detect easy floors directly from constraints

If the input map has constraints of the form

{ [i] -> [j] : i - 1 <= 2 j <= i }

then we can easily detect that j can be taken to be equal to floor(i / 2).
Detecting these conditions directly from the constraints saves us
from having to compute a minimum on this dimension
using parametric integer programming.  Not only can such an operation
be fairly costly, it can also lead to needless subdivisions if there
are any other constraints on the dimension to be minimized.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoprivately export isl_map_is_set
Sven Verdoolaege [Mon, 17 Sep 2012 11:58:41 +0000 (13:58 +0200)]
privately export isl_map_is_set

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_pw_*_pullback_pw_multi_aff
Sven Verdoolaege [Sat, 15 Sep 2012 07:16:04 +0000 (09:16 +0200)]
add isl_pw_*_pullback_pw_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_pw_*_pullback_multi_aff
Sven Verdoolaege [Fri, 20 Jul 2012 13:28:12 +0000 (15:28 +0200)]
add isl_pw_*_pullback_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_aff_pullback_multi_aff
Sven Verdoolaege [Fri, 20 Jul 2012 12:07:37 +0000 (14:07 +0200)]
add isl_multi_aff_pullback_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_aff_pullback_multi_aff
Sven Verdoolaege [Fri, 20 Jul 2012 11:51:33 +0000 (13:51 +0200)]
add isl_aff_pullback_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_local_space_preimage_multi_aff
Sven Verdoolaege [Fri, 20 Jul 2012 11:32:10 +0000 (13:32 +0200)]
add isl_local_space_preimage_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_set_preimage_pw_multi_aff
Sven Verdoolaege [Sat, 25 Aug 2012 09:18:40 +0000 (11:18 +0200)]
add isl_set_preimage_pw_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_set_preimage_multi_aff
Sven Verdoolaege [Wed, 18 Jul 2012 10:41:32 +0000 (12:41 +0200)]
add isl_set_preimage_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_basic_set_preimage_multi_aff
Sven Verdoolaege [Sat, 14 Jul 2012 11:50:29 +0000 (13:50 +0200)]
add isl_basic_set_preimage_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_stream_new_str: fail on NULL input
Sven Verdoolaege [Tue, 17 Jul 2012 17:01:21 +0000 (19:01 +0200)]
isl_stream_new_str: fail on NULL input

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoprivately export isl_multi_aff_align_divs
Sven Verdoolaege [Sun, 15 Jul 2012 10:26:19 +0000 (12:26 +0200)]
privately export isl_multi_aff_align_divs

We will need it in the next commit.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_basic_set_add_div_constraints
Sven Verdoolaege [Wed, 29 Feb 2012 17:55:46 +0000 (18:55 +0100)]
add isl_basic_set_add_div_constraints

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_map_is_subset: support rational maps
Sven Verdoolaege [Sun, 15 Jul 2012 08:17:37 +0000 (10:17 +0200)]
isl_map_is_subset: support rational maps

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_stream_read_map: fix parsing of Omega input
Sven Verdoolaege [Sat, 15 Sep 2012 11:42:30 +0000 (13:42 +0200)]
isl_stream_read_map: fix parsing of Omega input

Support for parsing such input was broken by fc5018d (isl_stream_read_map:
accept alternative [i][j] tuple syntax, Sun Jul 3 21:01:01 2011 +0200)
as the two tuples in, say, {Sym=[n] [i] : i <= n } would get merged
into a single tuple (i.e., [n,i]).

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_stream_read_map: add partial support for reading rational sets
Sven Verdoolaege [Sun, 15 Jul 2012 07:52:53 +0000 (09:52 +0200)]
isl_stream_read_map: add partial support for reading rational sets

The support is incomplete, but enough to read the inputs in the test
cases of the next commit.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_pw_aff_nonneg_set: return a rational set if the input is marked rational
Sven Verdoolaege [Wed, 22 Aug 2012 18:10:10 +0000 (20:10 +0200)]
isl_pw_aff_nonneg_set: return a rational set if the input is marked rational

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_pw_aff_zero_set: return a rational set if the input is marked rational
Sven Verdoolaege [Mon, 16 Jul 2012 17:32:22 +0000 (19:32 +0200)]
isl_pw_aff_zero_set: return a rational set if the input is marked rational

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_pw_aff_list_set_rational
Sven Verdoolaege [Wed, 22 Aug 2012 18:11:12 +0000 (20:11 +0200)]
add isl_pw_aff_list_set_rational

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_pw_aff_set_rational
Sven Verdoolaege [Mon, 16 Jul 2012 17:27:24 +0000 (19:27 +0200)]
add isl_pw_aff_set_rational

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoprivately export isl_set_set_rational
Sven Verdoolaege [Sun, 15 Jul 2012 07:52:13 +0000 (09:52 +0200)]
privately export isl_set_set_rational

We will need it in the next commit.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_set_has_rational
Sven Verdoolaege [Mon, 16 Jul 2012 17:19:23 +0000 (19:19 +0200)]
add isl_set_has_rational

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoreimplement isl_stream_read_aff in terms of isl_stream_read_multi_aff
Sven Verdoolaege [Sun, 15 Jul 2012 11:50:46 +0000 (13:50 +0200)]
reimplement isl_stream_read_aff in terms of isl_stream_read_multi_aff

Reading an isl_aff is essentially a special case of reading an isl_multi_aff.
We therefore do not need any special code for reading an isl_aff, but can
instead read it as an isl_multi_aff and then extract out the isl_aff.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agodeclare isl_stream_read_multi_aff
Sven Verdoolaege [Sun, 15 Jul 2012 11:50:22 +0000 (13:50 +0200)]
declare isl_stream_read_multi_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_stream_read_multi_aff: read tuples directly
Sven Verdoolaege [Sat, 14 Jul 2012 21:41:53 +0000 (23:41 +0200)]
isl_stream_read_multi_aff: read tuples directly

The original code would call isl_stream_read_pw_multi_aff, which in
turn first parsed the input as a map.  Not only does this lead to
needless, potentially expensive, conversions, it also makes it difficult
to parse rational expressions.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_input.c: change tuple parsing
Sven Verdoolaege [Sat, 14 Jul 2012 20:42:17 +0000 (22:42 +0200)]
isl_input.c: change tuple parsing

Instead of immediately updating an isl_map, we first collect the
information in an isl_multi_pw_aff and then update the isl_map
based on this information.
This will allow us to reuse the tuple parsing in an improved
isl_stream_read_multi_aff.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_pw_multi_aff_range_product
Sven Verdoolaege [Sat, 15 Sep 2012 07:08:29 +0000 (09:08 +0200)]
add isl_pw_multi_aff_range_product

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_*_splice
Sven Verdoolaege [Sun, 19 Aug 2012 18:01:04 +0000 (20:01 +0200)]
add isl_multi_*_splice

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_*_range_splice
Sven Verdoolaege [Sun, 19 Aug 2012 17:59:29 +0000 (19:59 +0200)]
add isl_multi_*_range_splice

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_*_set_tuple_name
Sven Verdoolaege [Sun, 15 Jul 2012 19:52:51 +0000 (21:52 +0200)]
add isl_multi_*_set_tuple_name

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_*_range_product
Sven Verdoolaege [Sun, 15 Jul 2012 19:45:42 +0000 (21:45 +0200)]
add isl_multi_*_range_product

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_*_add_dims
Sven Verdoolaege [Sun, 15 Jul 2012 19:17:01 +0000 (21:17 +0200)]
add isl_multi_*_add_dims

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_*_insert_dims
Sven Verdoolaege [Sun, 15 Jul 2012 19:14:52 +0000 (21:14 +0200)]
add isl_multi_*_insert_dims

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_pw_aff
Sven Verdoolaege [Mon, 16 Jul 2012 10:39:41 +0000 (12:39 +0200)]
add isl_multi_pw_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_multi_aff_from_aff
Sven Verdoolaege [Mon, 16 Jul 2012 13:00:42 +0000 (15:00 +0200)]
add isl_multi_aff_from_aff

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_multi_templ.c: rename align_params_multi_set_and to include MULTI(BASE)
Sven Verdoolaege [Mon, 16 Jul 2012 13:44:07 +0000 (15:44 +0200)]
isl_multi_templ.c: rename align_params_multi_set_and to include MULTI(BASE)

This allows isl_pw_multi.c to be included twice from the same file.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_multi_templ.h: avoid reference to explicit element type
Sven Verdoolaege [Mon, 16 Jul 2012 10:52:31 +0000 (12:52 +0200)]
isl_multi_templ.h: avoid reference to explicit element type

This will make it easier to create additional isl_multi_* types.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_multi_*_reset_space_and_domain: call isl_*_reset_domain_space
Sven Verdoolaege [Mon, 16 Jul 2012 10:39:28 +0000 (12:39 +0200)]
isl_multi_*_reset_space_and_domain: call isl_*_reset_domain_space

The original code would call isl_*_reset_space_and_domain,
but the space of the multi_* is clearly different from the space of the *,
so it does not make sense to pass that space to the *.
In case of isl_multi_aff, this does not cause any problems because
isl_aff_reset_space_and_domain ignore the first argument.
However, for an isl_multi_pw_aff, this would cause problems.
Call isl_*_reset_domain_space instead.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agogeneralize isl_multi_aff_flat_range_product
Sven Verdoolaege [Mon, 16 Jul 2012 12:39:41 +0000 (14:39 +0200)]
generalize isl_multi_aff_flat_range_product

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agogeneralize isl_multi_aff_drop_dims
Sven Verdoolaege [Sun, 19 Aug 2012 17:29:48 +0000 (19:29 +0200)]
generalize isl_multi_aff_drop_dims

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agogeneralize isl_multi_aff_set_dim_name
Sven Verdoolaege [Mon, 16 Jul 2012 12:30:36 +0000 (14:30 +0200)]
generalize isl_multi_aff_set_dim_name

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agogeneralize isl_multi_aff_zero
Sven Verdoolaege [Tue, 18 Sep 2012 12:57:58 +0000 (14:57 +0200)]
generalize isl_multi_aff_zero

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agogeneralize isl_multi_aff_identity
Sven Verdoolaege [Sat, 25 Aug 2012 08:50:52 +0000 (10:50 +0200)]
generalize isl_multi_aff_identity

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_pw_aff_zero_on_domain
Sven Verdoolaege [Tue, 18 Sep 2012 12:51:11 +0000 (14:51 +0200)]
add isl_pw_aff_zero_on_domain

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_pw_aff_var_on_domain
Sven Verdoolaege [Sat, 25 Aug 2012 08:43:43 +0000 (10:43 +0200)]
add isl_pw_aff_var_on_domain

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_aff_var_on_domain
Sven Verdoolaege [Sat, 25 Aug 2012 08:37:02 +0000 (10:37 +0200)]
add isl_aff_var_on_domain

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_input.c: obj_read_body: simplify error handling
Sven Verdoolaege [Sun, 15 Jul 2012 12:06:12 +0000 (14:06 +0200)]
isl_input.c: obj_read_body: simplify error handling

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_basic_set_drop_constraints_not_involving_dims
Sven Verdoolaege [Fri, 7 Sep 2012 13:46:54 +0000 (15:46 +0200)]
add isl_basic_set_drop_constraints_not_involving_dims

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_{set,map}_drop_constraints_involving_dims
Sven Verdoolaege [Mon, 20 Aug 2012 12:51:55 +0000 (14:51 +0200)]
add isl_{set,map}_drop_constraints_involving_dims

We implement these functions on top of the existing
isl_basic_set_drop_constraints_involving which handles dimensions
in terms of absolute positions.  We may want to convert the users
of this old function over to the new functions at some point.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_set_unshifted_simple_hull
Sven Verdoolaege [Thu, 19 Apr 2012 14:09:42 +0000 (16:09 +0200)]
add isl_set_unshifted_simple_hull

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_stream_read_union_map: force result to be a map
Sven Verdoolaege [Mon, 17 Sep 2012 15:13:49 +0000 (17:13 +0200)]
isl_stream_read_union_map: force result to be a map

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_union_map_subtract_range
Sven Verdoolaege [Mon, 17 Sep 2012 13:57:26 +0000 (15:57 +0200)]
add isl_union_map_subtract_range

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_set_from_pw_multi_aff: handle NULL input
Sven Verdoolaege [Mon, 17 Sep 2012 11:47:48 +0000 (13:47 +0200)]
isl_set_from_pw_multi_aff: handle NULL input

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_union_map.c: plain_injective_on_range: silence clang warning
Sven Verdoolaege [Sat, 15 Sep 2012 08:21:47 +0000 (10:21 +0200)]
isl_union_map.c: plain_injective_on_range: silence clang warning

Recent clangs complain that "n" may be used uninitialized in the call
to free_isl_fixed_map_array.  However, this only happens data.v is NULL,
in which case free_isl_fixed_map_array does not even look at n.

By moving the initialization of n up, we can silence this warning.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_transitive_closure.c: union_components: avoid invalid access on error path
Sven Verdoolaege [Sat, 15 Sep 2012 08:20:54 +0000 (10:20 +0200)]
isl_transitive_closure.c: union_components: avoid invalid access on error path

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_range.c qpolynomial_bound_on_domain_range: avoid invalid access on error path
Sven Verdoolaege [Sat, 15 Sep 2012 08:20:28 +0000 (10:20 +0200)]
isl_range.c qpolynomial_bound_on_domain_range: avoid invalid access on error path

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_convex_hull.c: initial_facet_constraint: avoid invalid access on error path
Sven Verdoolaege [Sat, 15 Sep 2012 08:19:56 +0000 (10:19 +0200)]
isl_convex_hull.c: initial_facet_constraint: avoid invalid access on error path

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_map_union: special case universal input
Sven Verdoolaege [Fri, 14 Sep 2012 08:15:55 +0000 (10:15 +0200)]
isl_map_union: special case universal input

In particular, there is no need to construct a new isl_map
as we can simply return the universal input map.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoisl_map_gist: special case universal and equal inputs
Sven Verdoolaege [Fri, 14 Sep 2012 07:49:58 +0000 (09:49 +0200)]
isl_map_gist: special case universal and equal inputs

In both these cases, the solution is trivial and we do not need to
go into the regular computation.
Moreover, if the inputs are equal but not convex, then the original
code would not be able to come to the conclusion that the gist
is the universe.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoexport isl_set_plain_cmp
Sven Verdoolaege [Wed, 12 Sep 2012 08:25:09 +0000 (10:25 +0200)]
export isl_set_plain_cmp

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agodoc: clarify use of identifiers
Sven Verdoolaege [Mon, 10 Sep 2012 12:40:37 +0000 (14:40 +0200)]
doc: clarify use of identifiers

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_basic_set_remove_unknown_divs
Sven Verdoolaege [Fri, 7 Sep 2012 21:21:47 +0000 (23:21 +0200)]
add isl_basic_set_remove_unknown_divs

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoand isl_pw_aff_tdiv_q and isl_pw_aff_tdiv_r
Sven Verdoolaege [Wed, 12 Sep 2012 17:48:57 +0000 (19:48 +0200)]
and isl_pw_aff_tdiv_q and isl_pw_aff_tdiv_r

These are useful for expressing the result of the corresponding C operators.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
11 years agoadd isl_pw_aff_div
Sven Verdoolaege [Wed, 12 Sep 2012 17:31:54 +0000 (19:31 +0200)]
add isl_pw_aff_div

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