isl_ast_build_node_from_schedule: handle isolate AST build options
commit8a2f6f67e8bbb953d7ca46fc41abf65950c3fbe0
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 27 Sep 2013 14:06:27 +0000 (27 16:06 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Thu, 26 Feb 2015 09:14:15 +0000 (26 10:14 +0100)
tree0be41c67506e2e68945d2774392df257776eb1fa
parent4a30976de11b14060b0f77f9a0b3a359a0920ccf
isl_ast_build_node_from_schedule: handle isolate AST build options

This option is similar to the separation_class option in the case
of schedules represented by a flat schedule map.
The main purpose of this option was the same as that of the new
isolate option, i.e., to be able to separate full tiles from partial
tiles.  It was however more general in that it allowed more than
two classes and that it allowed (and required) the user to define
the classes at every level.  These extra capabilities are however
more confusing than useful.  In the typical use case, each level
separates those iterations that contain any of the special ones
at inner levels from those that contain none of the special ones
at inner levels and this does not generalizes in any obvious way
to more than two classes.  The separation_class option would then
allow inconsistent specifications that are resolved in an
undeterministic way.  Furthermore, even though the option was
documented as only allowing constraints in terms of earlier
schedule dimension, the implementation would not prevent the
user from specifying constraints involving subsequent dimensions,
instead resolving such constraints in some unspecified way.
Since it is not clear how these issues could be fixed and
since we now have a better alternative, we deprecate
the old separation_class option.

In contrast to other options, the isolate option references
the schedule dimensions of outer band nodes, making it depend
on the position of the band node in the schedule tree.
We therefore refuse to perform some operations on the schedule
tree if they may affect the validity of isolate options.
The user should perform these operations first before applying
an isolate option.  In future we may consider updating the isolate
option when these operations are performed.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
23 files changed:
doc/user.pod
include/isl/schedule_node.h
isl_ast_build.c
isl_ast_build_private.h
isl_ast_codegen.c
isl_schedule.c
isl_schedule_band.c
isl_schedule_band.h
isl_schedule_node.c
isl_schedule_tree.c
isl_schedule_tree.h
test_inputs/codegen/isolate1.c [new file with mode: 0644]
test_inputs/codegen/isolate1.st [new file with mode: 0644]
test_inputs/codegen/isolate2.c [new file with mode: 0644]
test_inputs/codegen/isolate2.st [new file with mode: 0644]
test_inputs/codegen/isolate3.c [new file with mode: 0644]
test_inputs/codegen/isolate3.st [new file with mode: 0644]
test_inputs/codegen/isolate4.c [new file with mode: 0644]
test_inputs/codegen/isolate4.st [new file with mode: 0644]
test_inputs/codegen/isolate5.c [new file with mode: 0644]
test_inputs/codegen/isolate5.st [new file with mode: 0644]
test_inputs/codegen/isolate6.c [new file with mode: 0644]
test_inputs/codegen/isolate6.st [new file with mode: 0644]