@@ -13,7 +13,8 @@ noinst_PROGRAMS = isl_test isl_polyhedron_sample isl_pip \
isl_polyhedron_detect_equalities isl_cat \
isl_closure isl_bound isl_schedule isl_codegen isl_test_int \
isl_flow isl_flow_cmp
-TESTS = isl_test codegen_test.sh pip_test.sh bound_test.sh isl_test_int
+TESTS = isl_test codegen_test.sh pip_test.sh bound_test.sh isl_test_int \
+ flow_test.sh
if IMATH_FOR_MP
AC_CONFIG_FILES([bound_test.sh], [chmod +x bound_test.sh])
AC_CONFIG_FILES([codegen_test.sh], [chmod +x codegen_test.sh])
AC_CONFIG_FILES([pip_test.sh], [chmod +x pip_test.sh])
+AC_CONFIG_FILES([flow_test.sh], [chmod +x flow_test.sh])
AC_CONFIG_COMMANDS_POST([
dnl pass on arguments to subdir configures, but don't
dnl add them to config.status
--- /dev/null
+#!/bin/sh
+
+EXEEXT=@EXEEXT@
+srcdir=@srcdir@
+
+failed=0
+
+for i in $srcdir/test_inputs/flow/*.ai; do
+ echo $i;
+ base=`basename $i .ai`
+ test=test-$base.flow
+ dir=`dirname $i`
+ ref=$dir/$base.flow
+ (./isl_flow$EXEEXT < $i > $test &&
+ ./isl_flow_cmp$EXEEXT $ref $test && rm $test) || failed=1
+done
+
+test $failed -eq 0 || exit
--- /dev/null
+sink: "{ S[] -> a[] }"
+must_source: "{ T[i] -> a[] : 0 <= i <= 9 }"
+schedule:
+ domain: "{ T[i]; S[] }"
+ child:
+ sequence:
+ - filter: "{ T[i] }"
+ child:
+ schedule: "[{ T[i] -> [(i)] }]"
+ - filter: "{ S[] }"
--- /dev/null
+must_dependence: "{ T[i = 9] -> [S[] -> a[]] }"
+may_dependence: "{ T[i = 9] -> [S[] -> a[]] }"
+must_no_source: "{ }"
+may_no_source: "{ }"
--- /dev/null
+sink: { S[] -> a[] }
+must_source: { T[i] -> a[] : 0 <= i < 10 }
+schedule_map: { T[i] -> [0,i]; S[] -> [1,0] }
--- /dev/null
+must_dependence: "{ T[i = 9] -> [S[] -> a[]] }"
+may_dependence: "{ T[i = 9] -> [S[] -> a[]] }"
+must_no_source: "{ }"
+may_no_source: "{ }"
--- /dev/null
+sink: "{ S[] -> a[] }"
+may_source: "{ T[i] -> a[] : 0 <= i <= 9 }"
+schedule:
+ domain: "{ T[i]; S[] }"
+ child:
+ sequence:
+ - filter: "{ T[i] }"
+ child:
+ schedule: "[{ T[i] -> [(i)] }]"
+ - filter: "{ S[] }"
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ T[i] -> [S[] -> a[]] : 0 <= i <= 9 }"
+must_no_source: "{ }"
+may_no_source: "{ S[] -> a[] }"
--- /dev/null
+sink: { S[] -> a[] }
+may_source: { T[i] -> a[] : 0 <= i < 10 }
+schedule_map: { T[i] -> [0,i]; S[] -> [1,0] }
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ T[i] -> [S[] -> a[]] : 0 <= i <= 9 }"
+must_no_source: "{ }"
+may_no_source: "{ S[] -> a[] }"
--- /dev/null
+sink: "{ S[] -> a[] }"
+must_source: "{ T[i] -> a[] : 2*floor((i)/2) = i and 0 <= i <= 9 }"
+may_source: "{ T[i] -> a[] : 2*floor((1 + i)/2) = 1 + i and 0 <= i <= 9 }"
+schedule:
+ domain: "{ T[i]; S[] }"
+ child:
+ sequence:
+ - filter: "{ T[i] }"
+ child:
+ schedule: "[{ T[i] -> [(i)] }]"
+ - filter: "{ S[] }"
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ T[i = 9] -> [S[] -> a[]]; T[i = 8] -> [S[] -> a[]] }"
+must_no_source: "{ }"
+may_no_source: "{ }"
--- /dev/null
+sink: { S[] -> a[] }
+must_source: { T[i] -> a[] : 0 <= i < 10 and i mod 2 = 0 }
+may_source: { T[i] -> a[] : 0 <= i < 10 and i mod 2 = 1 }
+schedule_map: { T[i] -> [0,i]; S[] -> [1,0] }
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ T[i = 9] -> [S[] -> a[]]; T[i = 8] -> [S[] -> a[]] }"
+must_no_source: "{ }"
+may_no_source: "{ }"
--- /dev/null
+sink: "{ S[] -> a[] }"
+schedule:
+ domain: "{ S[] }"
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ }"
+must_no_source: "{ S[] -> a[] }"
+may_no_source: "{ S[] -> a[] }"
--- /dev/null
+sink: { S[] -> a[] }
+schedule_map: { S[] -> [] }
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ }"
+must_no_source: "{ S[] -> a[] }"
+may_no_source: "{ S[] -> a[] }"
--- /dev/null
+sink: "{ S[] -> a[] }"
+must_source: "{ T[] -> a[] }"
+schedule:
+ domain: "{ S[]; T[] }"
+ child:
+ sequence:
+ - filter: "{ S[] }"
+ - filter: "{ T[] }"
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ }"
+must_no_source: "{ S[] -> a[] }"
+may_no_source: "{ S[] -> a[] }"
--- /dev/null
+sink: { S[] -> a[] }
+must_source: { T[] -> a[] }
+schedule_map: { T[] -> [1]; S[] -> [0] }
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ }"
+must_no_source: "{ S[] -> a[] }"
+may_no_source: "{ S[] -> a[] }"
--- /dev/null
+sink: "{ S[] -> a[] }"
+may_source: "{ T[] -> a[] }"
+schedule:
+ domain: "{ S[]; T[] }"
+ child:
+ sequence:
+ - filter: "{ T[] }"
+ - filter: "{ S[] }"
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ T[] -> [S[] -> a[]] }"
+must_no_source: "{ }"
+may_no_source: "{ S[] -> a[] }"
--- /dev/null
+sink: { S[] -> a[] }
+may_source: { T[] -> a[] }
+schedule_map: { T[] -> [0]; S[] -> [1] }
--- /dev/null
+must_dependence: "{ }"
+may_dependence: "{ T[] -> [S[] -> a[]] }"
+must_no_source: "{ }"
+may_no_source: "{ S[] -> a[] }"
--- /dev/null
+sink: "{ S[] -> a[] }"
+must_source: "{ T[] -> a[] }"
+schedule:
+ domain: "{ S[]; T[] }"
+ child:
+ sequence:
+ - filter: "{ T[] }"
+ - filter: "{ S[] }"
--- /dev/null
+must_dependence: "{ T[] -> [S[] -> a[]] }"
+may_dependence: "{ T[] -> [S[] -> a[]] }"
+must_no_source: "{ }"
+may_no_source: "{ }"
--- /dev/null
+sink: { S[] -> a[] }
+must_source: { T[] -> a[] }
+schedule_map: { T[] -> [0]; S[] -> [1] }
--- /dev/null
+must_dependence: "{ T[] -> [S[] -> a[]] }"
+may_dependence: "{ T[] -> [S[] -> a[]] }"
+must_no_source: "{ }"
+may_no_source: "{ }"