[polly] r235273 - Update isl to a6523fb42c35

Tobias Grosser tobias at grosser.es
Sun Apr 19 02:06:02 PDT 2015


Author: grosser
Date: Sun Apr 19 04:06:02 2015
New Revision: 235273

URL: http://llvm.org/viewvc/llvm-project?rev=235273&view=rev
Log:
Update isl to a6523fb42c35

A minor update mostly documenting the isl coding style as well as adding
functions to inspect isl_schedule_constraints objects.

Added:
    polly/trunk/lib/External/isl/doc/CodingStyle
Modified:
    polly/trunk/lib/External/isl/doc/user.pod
    polly/trunk/lib/External/isl/include/isl/schedule.h
    polly/trunk/lib/External/isl/isl_scheduler.c

Added: polly/trunk/lib/External/isl/doc/CodingStyle
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/doc/CodingStyle?rev=235273&view=auto
==============================================================================
--- polly/trunk/lib/External/isl/doc/CodingStyle (added)
+++ polly/trunk/lib/External/isl/doc/CodingStyle Sun Apr 19 04:06:02 2015
@@ -0,0 +1,33 @@
+This document describes some aspects of the coding style of isl,
+which is similar to that of the linux kernel and git.
+
+The general rule is to use the same style as that of the surrounding code.
+
+More specific rules:
+	- every line should have at most 80 columns
+	- use tabs for indentation, where a tab counts for 8 characters
+	- use single spaces around binary operators such as '+', '-', '=', '!='
+	- no space after unary operators such as '!'
+	- use a single space after a comma and a semicolon
+	  (except at the end of a line)
+	- no space between function name and arguments
+	- use a single space after control keywords such as if, for and while
+	- no whitespace at the end of a line
+	- opening brace of a function is placed on a new line
+	- opening brace of other blocks stays on the same line
+	- the body of a control statement is placed on the next line(s)
+	- no parentheses around argument of return keyword
+	- use only C style comments (/* ... */)
+	- no comments inside function bodies;
+	  if some part of a function deserves additional comments, then
+	  extract it out into a separate function first
+
+There are some exceptions to the general rule of using
+the same style as the surrounding code, most notably
+when the surrounding code is very old.
+In particular, an "isl_space" used to be called "isl_dim" and
+some variables of this type are still called "dim" or some variant thereof.
+New variables of this type should be called "space" or a more specific name.
+Some old functions do not have memory management annotations yet.
+All new functions should have memory management annotations,
+whenever appropriate

Modified: polly/trunk/lib/External/isl/doc/user.pod
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/doc/user.pod?rev=235273&r1=235272&r2=235273&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/doc/user.pod (original)
+++ polly/trunk/lib/External/isl/doc/user.pod Sun Apr 19 04:06:02 2015
@@ -8423,12 +8423,24 @@ be selected.
 The generated schedule respects all validity dependences.
 That is, all dependence distances over these dependences in the
 scheduled space are lexicographically positive.
+
 The default algorithm tries to ensure that the dependence distances
 over coincidence constraints are zero and to minimize the
 dependence distances over proximity dependences.
 Moreover, it tries to obtain sequences (bands) of schedule dimensions
 for groups of domains where the dependence distances over validity
 dependences have only non-negative values.
+Note that when minimizing the maximal dependence distance
+over proximity dependences, a single affine expression in the parameters
+is constructed that bounds all dependence distances.  If no such expression
+exists, then the algorithm will fail and resort to an alternative
+scheduling algorithm.  In particular, this means that adding proximity
+dependences may eliminate valid solutions.  A typical example where this
+phenomenon may occur is when some subset of the proximity dependences
+has no restriction on some parameter, forcing the coefficient of that
+parameter to be zero, while some other subset forces the dependence
+distance to depend on that parameter, requiring the same coefficient
+to be non-zero.
 When using Feautrier's algorithm, the coincidence and proximity constraints
 are only taken into account during the extension to a
 full-dimensional schedule.
@@ -8509,6 +8521,23 @@ considered adjacent to each other if the
 In particular, a relation with a tag will never be considered adjacent
 to a relation without a tag.
 
+An C<isl_schedule_constraints> object can be inspected
+using the following functions.
+
+	#include <isl/schedule.h>
+	__isl_give isl_union_map *
+	isl_schedule_constraints_get_validity(
+		__isl_keep isl_schedule_constraints *sc);
+	__isl_give isl_union_map *
+	isl_schedule_constraints_get_coincidence(
+		__isl_keep isl_schedule_constraints *sc);
+	__isl_give isl_union_map *
+	isl_schedule_constraints_get_conditional_validity(
+		__isl_keep isl_schedule_constraints *sc);
+	__isl_give isl_union_map *
+	isl_schedule_constraints_get_conditional_validity_condition(
+		__isl_keep isl_schedule_constraints *sc);
+
 The following function computes a schedule directly from
 an iteration domain and validity and proximity dependences
 and is implemented in terms of the functions described above.

Modified: polly/trunk/lib/External/isl/include/isl/schedule.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/include/isl/schedule.h?rev=235273&r1=235272&r2=235273&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/include/isl/schedule.h (original)
+++ polly/trunk/lib/External/isl/include/isl/schedule.h Sun Apr 19 04:06:02 2015
@@ -65,6 +65,15 @@ __isl_null isl_schedule_constraints *isl
 
 isl_ctx *isl_schedule_constraints_get_ctx(
 	__isl_keep isl_schedule_constraints *sc);
+__isl_give isl_union_map *isl_schedule_constraints_get_validity(
+	__isl_keep isl_schedule_constraints *sc);
+__isl_give isl_union_map *isl_schedule_constraints_get_coincidence(
+	__isl_keep isl_schedule_constraints *sc);
+__isl_give isl_union_map *isl_schedule_constraints_get_conditional_validity(
+	__isl_keep isl_schedule_constraints *sc);
+__isl_give isl_union_map *
+isl_schedule_constraints_get_conditional_validity_condition(
+	__isl_keep isl_schedule_constraints *sc);
 
 void isl_schedule_constraints_dump(__isl_keep isl_schedule_constraints *sc);
 

Modified: polly/trunk/lib/External/isl/isl_scheduler.c
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/External/isl/isl_scheduler.c?rev=235273&r1=235272&r2=235273&view=diff
==============================================================================
--- polly/trunk/lib/External/isl/isl_scheduler.c (original)
+++ polly/trunk/lib/External/isl/isl_scheduler.c Sun Apr 19 04:06:02 2015
@@ -266,6 +266,52 @@ isl_ctx *isl_schedule_constraints_get_ct
 	return sc ? isl_union_set_get_ctx(sc->domain) : NULL;
 }
 
+/* Return the validity constraints of "sc".
+ */
+__isl_give isl_union_map *isl_schedule_constraints_get_validity(
+	__isl_keep isl_schedule_constraints *sc)
+{
+	if (!sc)
+		return NULL;
+
+	return isl_union_map_copy(sc->constraint[isl_edge_validity]);
+}
+
+/* Return the coincidence constraints of "sc".
+ */
+__isl_give isl_union_map *isl_schedule_constraints_get_coincidence(
+	__isl_keep isl_schedule_constraints *sc)
+{
+	if (!sc)
+		return NULL;
+
+	return isl_union_map_copy(sc->constraint[isl_edge_coincidence]);
+}
+
+/* Return the conditional validity constraints of "sc".
+ */
+__isl_give isl_union_map *isl_schedule_constraints_get_conditional_validity(
+	__isl_keep isl_schedule_constraints *sc)
+{
+	if (!sc)
+		return NULL;
+
+	return
+	    isl_union_map_copy(sc->constraint[isl_edge_conditional_validity]);
+}
+
+/* Return the conditions for the conditional validity constraints of "sc".
+ */
+__isl_give isl_union_map *
+isl_schedule_constraints_get_conditional_validity_condition(
+	__isl_keep isl_schedule_constraints *sc)
+{
+	if (!sc)
+		return NULL;
+
+	return isl_union_map_copy(sc->constraint[isl_edge_condition]);
+}
+
 void isl_schedule_constraints_dump(__isl_keep isl_schedule_constraints *sc)
 {
 	if (!sc)





More information about the llvm-commits mailing list