From 23e8573a83a1c957a62c6bad59a1514eb68be274 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Mon, 12 May 2014 15:28:58 +0200 Subject: [PATCH] replace CLooG test cases with schedule tree versions The schedule tree inputs have been recreated from the original CLooG test cases. The difference in output for the dealII test case is due to the fact that the basic sets in the schedule domain are handled in a different order in separate_schedule_domains. The different order in turn relates to the different space that is used for the internal representation of the schedule domain. Note that in general it is impossible to create two versions of the input that are guaranteed to produce exactly the same output. Maintaining two expected outputs for each CLooG test case is not worth the effort. The isl_ast_build_node_from_schedule_map interface is still covered by other test cases. Signed-off-by: Sven Verdoolaege --- codegen_test.sh.in | 4 +- test_inputs/codegen/cloog/0D-1.in | 3 - test_inputs/codegen/cloog/0D-1.st | 3 + test_inputs/codegen/cloog/0D-2.in | 3 - test_inputs/codegen/cloog/0D-2.st | 3 + test_inputs/codegen/cloog/0D-3.in | 3 - test_inputs/codegen/cloog/0D-3.st | 3 + test_inputs/codegen/cloog/1point-1.in | 3 - test_inputs/codegen/cloog/1point-1.st | 6 + test_inputs/codegen/cloog/1point-2.in | 3 - test_inputs/codegen/cloog/1point-2.st | 6 + test_inputs/codegen/cloog/4-param.in | 3 - test_inputs/codegen/cloog/4-param.st | 10 + test_inputs/codegen/cloog/backtrack.in | 3 - test_inputs/codegen/cloog/backtrack.st | 6 + test_inputs/codegen/cloog/basic-bounds-1.in | 3 - test_inputs/codegen/cloog/basic-bounds-1.st | 6 + test_inputs/codegen/cloog/basic-bounds-2.in | 3 - test_inputs/codegen/cloog/basic-bounds-2.st | 6 + test_inputs/codegen/cloog/basic-bounds-3.in | 3 - test_inputs/codegen/cloog/basic-bounds-3.st | 6 + test_inputs/codegen/cloog/basic-bounds-4.in | 3 - test_inputs/codegen/cloog/basic-bounds-4.st | 6 + test_inputs/codegen/cloog/basic-bounds-5.in | 3 - test_inputs/codegen/cloog/basic-bounds-5.st | 6 + test_inputs/codegen/cloog/basic-bounds-6.c | 1 + test_inputs/codegen/cloog/basic-bounds-6.st | 6 + test_inputs/codegen/cloog/block.in | 3 - test_inputs/codegen/cloog/block.st | 10 + test_inputs/codegen/cloog/block2.in | 3 - test_inputs/codegen/cloog/block2.st | 11 + test_inputs/codegen/cloog/block3.in | 3 - test_inputs/codegen/cloog/block3.st | 6 + test_inputs/codegen/cloog/byu98-1-2-3.in | 3 - test_inputs/codegen/cloog/byu98-1-2-3.st | 10 + test_inputs/codegen/cloog/cholesky.c | 14 +- test_inputs/codegen/cloog/cholesky.in | 3 - test_inputs/codegen/cloog/cholesky.st | 26 ++ test_inputs/codegen/cloog/cholesky2.in | 3 - test_inputs/codegen/cloog/cholesky2.st | 6 + test_inputs/codegen/cloog/christian.c | 4 +- test_inputs/codegen/cloog/christian.in | 3 - test_inputs/codegen/cloog/christian.st | 6 + test_inputs/codegen/cloog/classen.c | 94 +++--- test_inputs/codegen/cloog/classen.in | 3 - test_inputs/codegen/cloog/classen.st | 24 ++ test_inputs/codegen/cloog/classen2.in | 3 - test_inputs/codegen/cloog/classen2.st | 6 + test_inputs/codegen/cloog/constant.in | 3 - test_inputs/codegen/cloog/constant.st | 11 + test_inputs/codegen/cloog/constbound.c | 12 +- test_inputs/codegen/cloog/constbound.in | 3 - test_inputs/codegen/cloog/constbound.st | 16 ++ test_inputs/codegen/cloog/darte.in | 3 - test_inputs/codegen/cloog/darte.st | 6 + test_inputs/codegen/cloog/dealII.c | 44 ++- test_inputs/codegen/cloog/dealII.in | 3 - test_inputs/codegen/cloog/dealII.st | 10 + test_inputs/codegen/cloog/donotsimp.c | 10 +- test_inputs/codegen/cloog/donotsimp.in | 3 - test_inputs/codegen/cloog/donotsimp.st | 9 + test_inputs/codegen/cloog/dot.in | 3 - test_inputs/codegen/cloog/dot.st | 10 + test_inputs/codegen/cloog/dot2.in | 3 - test_inputs/codegen/cloog/dot2.st | 10 + test_inputs/codegen/cloog/durbin_e_s.in | 3 - test_inputs/codegen/cloog/durbin_e_s.st | 16 ++ test_inputs/codegen/cloog/emploi.in | 3 - test_inputs/codegen/cloog/emploi.st | 10 + test_inputs/codegen/cloog/equality.in | 3 - test_inputs/codegen/cloog/equality.st | 10 + test_inputs/codegen/cloog/equality2.in | 3 - test_inputs/codegen/cloog/equality2.st | 10 + test_inputs/codegen/cloog/esced.in | 3 - test_inputs/codegen/cloog/esced.st | 10 + test_inputs/codegen/cloog/ex1.in | 3 - test_inputs/codegen/cloog/ex1.st | 10 + test_inputs/codegen/cloog/faber.c | 60 ++-- test_inputs/codegen/cloog/faber.in | 3 - test_inputs/codegen/cloog/faber.st | 18 ++ test_inputs/codegen/cloog/forwardsub-1-1-2.in | 3 - test_inputs/codegen/cloog/forwardsub-1-1-2.st | 12 + test_inputs/codegen/cloog/forwardsub-2-1-2-3.in | 3 - test_inputs/codegen/cloog/forwardsub-2-1-2-3.st | 12 + test_inputs/codegen/cloog/forwardsub-3-1-2.in | 3 - test_inputs/codegen/cloog/forwardsub-3-1-2.st | 12 + test_inputs/codegen/cloog/gauss.c | 4 +- test_inputs/codegen/cloog/gauss.in | 3 - test_inputs/codegen/cloog/gauss.st | 6 + test_inputs/codegen/cloog/gesced.in | 3 - test_inputs/codegen/cloog/gesced.st | 6 + test_inputs/codegen/cloog/gesced2.in | 3 - test_inputs/codegen/cloog/gesced2.st | 6 + test_inputs/codegen/cloog/gesced3.in | 3 - test_inputs/codegen/cloog/gesced3.st | 6 + test_inputs/codegen/cloog/guide.in | 3 - test_inputs/codegen/cloog/guide.st | 10 + test_inputs/codegen/cloog/iftest.in | 3 - test_inputs/codegen/cloog/iftest.st | 6 + test_inputs/codegen/cloog/iftest2.in | 3 - test_inputs/codegen/cloog/iftest2.st | 6 + test_inputs/codegen/cloog/infinite2.in | 3 - test_inputs/codegen/cloog/infinite2.st | 10 + test_inputs/codegen/cloog/jacobi-shared.in | 3 - test_inputs/codegen/cloog/jacobi-shared.st | 6 + test_inputs/codegen/cloog/largeur.in | 3 - test_inputs/codegen/cloog/largeur.st | 6 + test_inputs/codegen/cloog/levenshtein-1-2-3.in | 3 - test_inputs/codegen/cloog/levenshtein-1-2-3.st | 16 ++ test_inputs/codegen/cloog/lex.in | 3 - test_inputs/codegen/cloog/lex.st | 10 + test_inputs/codegen/cloog/lineality-1-2.in | 3 - test_inputs/codegen/cloog/lineality-1-2.st | 10 + test_inputs/codegen/cloog/lineality-2-1-2.c | 6 +- test_inputs/codegen/cloog/lineality-2-1-2.in | 3 - test_inputs/codegen/cloog/lineality-2-1-2.st | 10 + test_inputs/codegen/cloog/logo.in | 3 - test_inputs/codegen/cloog/logo.st | 10 + test_inputs/codegen/cloog/logopar.in | 3 - test_inputs/codegen/cloog/logopar.st | 10 + test_inputs/codegen/cloog/lu.in | 3 - test_inputs/codegen/cloog/lu.st | 6 + test_inputs/codegen/cloog/lu2.in | 3 - test_inputs/codegen/cloog/lu2.st | 10 + test_inputs/codegen/cloog/lux.in | 3 - test_inputs/codegen/cloog/lux.st | 10 + test_inputs/codegen/cloog/merge.in | 3 - test_inputs/codegen/cloog/merge.st | 11 + test_inputs/codegen/cloog/min-1-1.in | 3 - test_inputs/codegen/cloog/min-1-1.st | 6 + test_inputs/codegen/cloog/min-2-1.in | 3 - test_inputs/codegen/cloog/min-2-1.st | 6 + test_inputs/codegen/cloog/min-3-1.in | 3 - test_inputs/codegen/cloog/min-3-1.st | 6 + test_inputs/codegen/cloog/min-4-1.in | 3 - test_inputs/codegen/cloog/min-4-1.st | 6 + test_inputs/codegen/cloog/mod.in | 3 - test_inputs/codegen/cloog/mod.st | 6 + test_inputs/codegen/cloog/mod2.in | 3 - test_inputs/codegen/cloog/mod2.st | 6 + test_inputs/codegen/cloog/mod3.in | 3 - test_inputs/codegen/cloog/mod3.st | 6 + test_inputs/codegen/cloog/mod4.in | 3 - test_inputs/codegen/cloog/mod4.st | 11 + test_inputs/codegen/cloog/mode.in | 3 - test_inputs/codegen/cloog/mode.st | 10 + test_inputs/codegen/cloog/multi-mm-1.in | 3 - test_inputs/codegen/cloog/multi-mm-1.st | 10 + test_inputs/codegen/cloog/multi-stride.in | 3 - test_inputs/codegen/cloog/multi-stride.st | 6 + test_inputs/codegen/cloog/multi-stride2.in | 3 - test_inputs/codegen/cloog/multi-stride2.st | 6 + test_inputs/codegen/cloog/mxm-shared.in | 3 - test_inputs/codegen/cloog/mxm-shared.st | 6 + test_inputs/codegen/cloog/no_lindep.in | 3 - test_inputs/codegen/cloog/no_lindep.st | 6 + test_inputs/codegen/cloog/nul_basic1.in | 3 - test_inputs/codegen/cloog/nul_basic1.st | 6 + test_inputs/codegen/cloog/nul_basic2.in | 3 - test_inputs/codegen/cloog/nul_basic2.st | 10 + test_inputs/codegen/cloog/nul_complex1.in | 3 - test_inputs/codegen/cloog/nul_complex1.st | 6 + test_inputs/codegen/cloog/nul_lcpc.in | 3 - test_inputs/codegen/cloog/nul_lcpc.st | 10 + test_inputs/codegen/cloog/orc.c | 22 +- test_inputs/codegen/cloog/orc.in | 3 - test_inputs/codegen/cloog/orc.st | 13 + test_inputs/codegen/cloog/otl.in | 3 - test_inputs/codegen/cloog/otl.st | 6 + test_inputs/codegen/cloog/param-split.in | 3 - test_inputs/codegen/cloog/param-split.st | 10 + test_inputs/codegen/cloog/pouchet.in | 3 - test_inputs/codegen/cloog/pouchet.st | 6 + test_inputs/codegen/cloog/rectangle.in | 3 - test_inputs/codegen/cloog/rectangle.st | 6 + test_inputs/codegen/cloog/reservoir-QR.c | 108 +++---- test_inputs/codegen/cloog/reservoir-QR.in | 3 - test_inputs/codegen/cloog/reservoir-QR.st | 36 +++ test_inputs/codegen/cloog/reservoir-bastoul3.in | 3 - test_inputs/codegen/cloog/reservoir-bastoul3.st | 6 + test_inputs/codegen/cloog/reservoir-cholesky2.c | 16 +- test_inputs/codegen/cloog/reservoir-cholesky2.in | 3 - test_inputs/codegen/cloog/reservoir-cholesky2.st | 20 ++ test_inputs/codegen/cloog/reservoir-fusion1.c | 12 +- test_inputs/codegen/cloog/reservoir-fusion1.in | 3 - test_inputs/codegen/cloog/reservoir-fusion1.st | 17 ++ test_inputs/codegen/cloog/reservoir-fusion2.c | 18 +- test_inputs/codegen/cloog/reservoir-fusion2.in | 3 - test_inputs/codegen/cloog/reservoir-fusion2.st | 16 ++ test_inputs/codegen/cloog/reservoir-jacobi2.c | 6 +- test_inputs/codegen/cloog/reservoir-jacobi2.in | 3 - test_inputs/codegen/cloog/reservoir-jacobi2.st | 9 + test_inputs/codegen/cloog/reservoir-jacobi3.c | 14 +- test_inputs/codegen/cloog/reservoir-jacobi3.in | 3 - test_inputs/codegen/cloog/reservoir-jacobi3.st | 22 ++ test_inputs/codegen/cloog/reservoir-lim-lam1.c | 16 +- test_inputs/codegen/cloog/reservoir-lim-lam1.in | 3 - test_inputs/codegen/cloog/reservoir-lim-lam1.st | 13 + test_inputs/codegen/cloog/reservoir-lim-lam2.c | 16 +- test_inputs/codegen/cloog/reservoir-lim-lam2.in | 3 - test_inputs/codegen/cloog/reservoir-lim-lam2.st | 23 ++ test_inputs/codegen/cloog/reservoir-lim-lam3.c | 22 +- test_inputs/codegen/cloog/reservoir-lim-lam3.in | 3 - test_inputs/codegen/cloog/reservoir-lim-lam3.st | 23 ++ test_inputs/codegen/cloog/reservoir-lim-lam4.c | 20 +- test_inputs/codegen/cloog/reservoir-lim-lam4.in | 3 - test_inputs/codegen/cloog/reservoir-lim-lam4.st | 19 ++ test_inputs/codegen/cloog/reservoir-lim-lam5.c | 18 +- test_inputs/codegen/cloog/reservoir-lim-lam5.in | 3 - test_inputs/codegen/cloog/reservoir-lim-lam5.st | 26 ++ test_inputs/codegen/cloog/reservoir-lim-lam6.c | 12 +- test_inputs/codegen/cloog/reservoir-lim-lam6.in | 3 - test_inputs/codegen/cloog/reservoir-lim-lam6.st | 19 ++ test_inputs/codegen/cloog/reservoir-liu-zhuge1.c | 34 +-- test_inputs/codegen/cloog/reservoir-liu-zhuge1.in | 3 - test_inputs/codegen/cloog/reservoir-liu-zhuge1.st | 16 ++ test_inputs/codegen/cloog/reservoir-loechner3.c | 8 +- test_inputs/codegen/cloog/reservoir-loechner3.in | 3 - test_inputs/codegen/cloog/reservoir-loechner3.st | 12 + test_inputs/codegen/cloog/reservoir-loechner4.c | 10 +- test_inputs/codegen/cloog/reservoir-loechner4.in | 3 - test_inputs/codegen/cloog/reservoir-loechner4.st | 15 + test_inputs/codegen/cloog/reservoir-loechner5.c | 10 +- test_inputs/codegen/cloog/reservoir-loechner5.in | 3 - test_inputs/codegen/cloog/reservoir-loechner5.st | 15 + test_inputs/codegen/cloog/reservoir-mg-interp.c | 170 +++++------ test_inputs/codegen/cloog/reservoir-mg-interp.in | 3 - test_inputs/codegen/cloog/reservoir-mg-interp.st | 115 ++++++++ test_inputs/codegen/cloog/reservoir-mg-interp2.c | 36 +-- test_inputs/codegen/cloog/reservoir-mg-interp2.in | 3 - test_inputs/codegen/cloog/reservoir-mg-interp2.st | 45 +++ test_inputs/codegen/cloog/reservoir-mg-psinv.c | 14 +- test_inputs/codegen/cloog/reservoir-mg-psinv.in | 3 - test_inputs/codegen/cloog/reservoir-mg-psinv.st | 23 ++ test_inputs/codegen/cloog/reservoir-mg-resid.c | 14 +- test_inputs/codegen/cloog/reservoir-mg-resid.in | 3 - test_inputs/codegen/cloog/reservoir-mg-resid.st | 23 ++ test_inputs/codegen/cloog/reservoir-mg-rprj3.c | 68 ++--- test_inputs/codegen/cloog/reservoir-mg-rprj3.in | 3 - test_inputs/codegen/cloog/reservoir-mg-rprj3.st | 28 ++ test_inputs/codegen/cloog/reservoir-pingali1.c | 12 +- test_inputs/codegen/cloog/reservoir-pingali1.in | 3 - test_inputs/codegen/cloog/reservoir-pingali1.st | 16 ++ test_inputs/codegen/cloog/reservoir-pingali2.c | 12 +- test_inputs/codegen/cloog/reservoir-pingali2.in | 3 - test_inputs/codegen/cloog/reservoir-pingali2.st | 19 ++ test_inputs/codegen/cloog/reservoir-pingali3.c | 14 +- test_inputs/codegen/cloog/reservoir-pingali3.in | 3 - test_inputs/codegen/cloog/reservoir-pingali3.st | 22 ++ test_inputs/codegen/cloog/reservoir-pingali4.c | 12 +- test_inputs/codegen/cloog/reservoir-pingali4.in | 3 - test_inputs/codegen/cloog/reservoir-pingali4.st | 19 ++ test_inputs/codegen/cloog/reservoir-pingali5.c | 18 +- test_inputs/codegen/cloog/reservoir-pingali5.in | 3 - test_inputs/codegen/cloog/reservoir-pingali5.st | 26 ++ test_inputs/codegen/cloog/reservoir-pingali6.c | 14 +- test_inputs/codegen/cloog/reservoir-pingali6.in | 3 - test_inputs/codegen/cloog/reservoir-pingali6.st | 22 ++ test_inputs/codegen/cloog/reservoir-stride.c | 4 +- test_inputs/codegen/cloog/reservoir-stride.in | 3 - test_inputs/codegen/cloog/reservoir-stride.st | 6 + test_inputs/codegen/cloog/reservoir-stride2.c | 4 +- test_inputs/codegen/cloog/reservoir-stride2.in | 3 - test_inputs/codegen/cloog/reservoir-stride2.st | 6 + test_inputs/codegen/cloog/reservoir-tang-xue1.c | 10 +- test_inputs/codegen/cloog/reservoir-tang-xue1.in | 3 - test_inputs/codegen/cloog/reservoir-tang-xue1.st | 15 + test_inputs/codegen/cloog/reservoir-two.in | 3 - test_inputs/codegen/cloog/reservoir-two.st | 6 + test_inputs/codegen/cloog/singleton.in | 3 - test_inputs/codegen/cloog/singleton.st | 7 + .../codegen/cloog/square+triangle-1-1-2-3.in | 3 - .../codegen/cloog/square+triangle-1-1-2-3.st | 10 + test_inputs/codegen/cloog/stride.in | 3 - test_inputs/codegen/cloog/stride.st | 6 + test_inputs/codegen/cloog/stride2.in | 3 - test_inputs/codegen/cloog/stride2.st | 6 + test_inputs/codegen/cloog/stride3.in | 3 - test_inputs/codegen/cloog/stride3.st | 6 + test_inputs/codegen/cloog/stride4.in | 3 - test_inputs/codegen/cloog/stride4.st | 6 + test_inputs/codegen/cloog/swim.c | 318 ++++++++++----------- test_inputs/codegen/cloog/swim.in | 3 - test_inputs/codegen/cloog/swim.st | 223 +++++++++++++++ test_inputs/codegen/cloog/test.in | 3 - test_inputs/codegen/cloog/test.st | 10 + test_inputs/codegen/cloog/thomasset.in | 3 - test_inputs/codegen/cloog/thomasset.st | 6 + test_inputs/codegen/cloog/tiling.in | 3 - test_inputs/codegen/cloog/tiling.st | 6 + test_inputs/codegen/cloog/uday_scalars.c | 8 +- test_inputs/codegen/cloog/uday_scalars.in | 3 - test_inputs/codegen/cloog/uday_scalars.st | 13 + test_inputs/codegen/cloog/union.in | 3 - test_inputs/codegen/cloog/union.st | 6 + test_inputs/codegen/cloog/unroll.in | 3 - test_inputs/codegen/cloog/unroll.st | 6 + test_inputs/codegen/cloog/unroll2.c | 7 +- test_inputs/codegen/cloog/unroll2.in | 3 - test_inputs/codegen/cloog/unroll2.st | 6 + test_inputs/codegen/cloog/usvd_e_t.in | 3 - test_inputs/codegen/cloog/usvd_e_t.st | 34 +++ test_inputs/codegen/cloog/vasilache.c | 46 +-- test_inputs/codegen/cloog/vasilache.in | 3 - test_inputs/codegen/cloog/vasilache.st | 37 +++ test_inputs/codegen/cloog/vivien.c | 86 +++--- test_inputs/codegen/cloog/vivien.in | 3 - test_inputs/codegen/cloog/vivien.st | 6 + test_inputs/codegen/cloog/vivien2.c | 54 ++-- test_inputs/codegen/cloog/vivien2.in | 3 - test_inputs/codegen/cloog/vivien2.st | 6 + test_inputs/codegen/cloog/walters.in | 3 - test_inputs/codegen/cloog/walters.st | 12 + test_inputs/codegen/cloog/walters2.in | 3 - test_inputs/codegen/cloog/walters2.st | 10 + test_inputs/codegen/cloog/walters3.in | 3 - test_inputs/codegen/cloog/walters3.st | 10 + test_inputs/codegen/cloog/wavefront.in | 3 - test_inputs/codegen/cloog/wavefront.st | 6 + test_inputs/codegen/cloog/yosr.c | 15 +- test_inputs/codegen/cloog/yosr.in | 3 - test_inputs/codegen/cloog/yosr.st | 6 + test_inputs/codegen/cloog/yosr2.in | 3 - test_inputs/codegen/cloog/yosr2.st | 6 + test_inputs/codegen/cloog/youcef.in | 3 - test_inputs/codegen/cloog/youcef.st | 11 + test_inputs/codegen/cloog/youcefn.in | 3 - test_inputs/codegen/cloog/youcefn.st | 11 + 328 files changed, 2687 insertions(+), 1162 deletions(-) delete mode 100644 test_inputs/codegen/cloog/0D-1.in create mode 100644 test_inputs/codegen/cloog/0D-1.st delete mode 100644 test_inputs/codegen/cloog/0D-2.in create mode 100644 test_inputs/codegen/cloog/0D-2.st delete mode 100644 test_inputs/codegen/cloog/0D-3.in create mode 100644 test_inputs/codegen/cloog/0D-3.st delete mode 100644 test_inputs/codegen/cloog/1point-1.in create mode 100644 test_inputs/codegen/cloog/1point-1.st delete mode 100644 test_inputs/codegen/cloog/1point-2.in create mode 100644 test_inputs/codegen/cloog/1point-2.st delete mode 100644 test_inputs/codegen/cloog/4-param.in create mode 100644 test_inputs/codegen/cloog/4-param.st delete mode 100644 test_inputs/codegen/cloog/backtrack.in create mode 100644 test_inputs/codegen/cloog/backtrack.st delete mode 100644 test_inputs/codegen/cloog/basic-bounds-1.in create mode 100644 test_inputs/codegen/cloog/basic-bounds-1.st delete mode 100644 test_inputs/codegen/cloog/basic-bounds-2.in create mode 100644 test_inputs/codegen/cloog/basic-bounds-2.st delete mode 100644 test_inputs/codegen/cloog/basic-bounds-3.in create mode 100644 test_inputs/codegen/cloog/basic-bounds-3.st delete mode 100644 test_inputs/codegen/cloog/basic-bounds-4.in create mode 100644 test_inputs/codegen/cloog/basic-bounds-4.st delete mode 100644 test_inputs/codegen/cloog/basic-bounds-5.in create mode 100644 test_inputs/codegen/cloog/basic-bounds-5.st create mode 100644 test_inputs/codegen/cloog/basic-bounds-6.c create mode 100644 test_inputs/codegen/cloog/basic-bounds-6.st delete mode 100644 test_inputs/codegen/cloog/block.in create mode 100644 test_inputs/codegen/cloog/block.st delete mode 100644 test_inputs/codegen/cloog/block2.in create mode 100644 test_inputs/codegen/cloog/block2.st delete mode 100644 test_inputs/codegen/cloog/block3.in create mode 100644 test_inputs/codegen/cloog/block3.st delete mode 100644 test_inputs/codegen/cloog/byu98-1-2-3.in create mode 100644 test_inputs/codegen/cloog/byu98-1-2-3.st delete mode 100644 test_inputs/codegen/cloog/cholesky.in create mode 100644 test_inputs/codegen/cloog/cholesky.st delete mode 100644 test_inputs/codegen/cloog/cholesky2.in create mode 100644 test_inputs/codegen/cloog/cholesky2.st delete mode 100644 test_inputs/codegen/cloog/christian.in create mode 100644 test_inputs/codegen/cloog/christian.st delete mode 100644 test_inputs/codegen/cloog/classen.in create mode 100644 test_inputs/codegen/cloog/classen.st delete mode 100644 test_inputs/codegen/cloog/classen2.in create mode 100644 test_inputs/codegen/cloog/classen2.st delete mode 100644 test_inputs/codegen/cloog/constant.in create mode 100644 test_inputs/codegen/cloog/constant.st delete mode 100644 test_inputs/codegen/cloog/constbound.in create mode 100644 test_inputs/codegen/cloog/constbound.st delete mode 100644 test_inputs/codegen/cloog/darte.in create mode 100644 test_inputs/codegen/cloog/darte.st rewrite test_inputs/codegen/cloog/dealII.c (74%) delete mode 100644 test_inputs/codegen/cloog/dealII.in create mode 100644 test_inputs/codegen/cloog/dealII.st delete mode 100644 test_inputs/codegen/cloog/donotsimp.in create mode 100644 test_inputs/codegen/cloog/donotsimp.st delete mode 100644 test_inputs/codegen/cloog/dot.in create mode 100644 test_inputs/codegen/cloog/dot.st delete mode 100644 test_inputs/codegen/cloog/dot2.in create mode 100644 test_inputs/codegen/cloog/dot2.st delete mode 100644 test_inputs/codegen/cloog/durbin_e_s.in create mode 100644 test_inputs/codegen/cloog/durbin_e_s.st delete mode 100644 test_inputs/codegen/cloog/emploi.in create mode 100644 test_inputs/codegen/cloog/emploi.st delete mode 100644 test_inputs/codegen/cloog/equality.in create mode 100644 test_inputs/codegen/cloog/equality.st delete mode 100644 test_inputs/codegen/cloog/equality2.in create mode 100644 test_inputs/codegen/cloog/equality2.st delete mode 100644 test_inputs/codegen/cloog/esced.in create mode 100644 test_inputs/codegen/cloog/esced.st delete mode 100644 test_inputs/codegen/cloog/ex1.in create mode 100644 test_inputs/codegen/cloog/ex1.st delete mode 100644 test_inputs/codegen/cloog/faber.in create mode 100644 test_inputs/codegen/cloog/faber.st delete mode 100644 test_inputs/codegen/cloog/forwardsub-1-1-2.in create mode 100644 test_inputs/codegen/cloog/forwardsub-1-1-2.st delete mode 100644 test_inputs/codegen/cloog/forwardsub-2-1-2-3.in create mode 100644 test_inputs/codegen/cloog/forwardsub-2-1-2-3.st delete mode 100644 test_inputs/codegen/cloog/forwardsub-3-1-2.in create mode 100644 test_inputs/codegen/cloog/forwardsub-3-1-2.st delete mode 100644 test_inputs/codegen/cloog/gauss.in create mode 100644 test_inputs/codegen/cloog/gauss.st delete mode 100644 test_inputs/codegen/cloog/gesced.in create mode 100644 test_inputs/codegen/cloog/gesced.st delete mode 100644 test_inputs/codegen/cloog/gesced2.in create mode 100644 test_inputs/codegen/cloog/gesced2.st delete mode 100644 test_inputs/codegen/cloog/gesced3.in create mode 100644 test_inputs/codegen/cloog/gesced3.st delete mode 100644 test_inputs/codegen/cloog/guide.in create mode 100644 test_inputs/codegen/cloog/guide.st delete mode 100644 test_inputs/codegen/cloog/iftest.in create mode 100644 test_inputs/codegen/cloog/iftest.st delete mode 100644 test_inputs/codegen/cloog/iftest2.in create mode 100644 test_inputs/codegen/cloog/iftest2.st delete mode 100644 test_inputs/codegen/cloog/infinite2.in create mode 100644 test_inputs/codegen/cloog/infinite2.st delete mode 100644 test_inputs/codegen/cloog/jacobi-shared.in create mode 100644 test_inputs/codegen/cloog/jacobi-shared.st delete mode 100644 test_inputs/codegen/cloog/largeur.in create mode 100644 test_inputs/codegen/cloog/largeur.st delete mode 100644 test_inputs/codegen/cloog/levenshtein-1-2-3.in create mode 100644 test_inputs/codegen/cloog/levenshtein-1-2-3.st delete mode 100644 test_inputs/codegen/cloog/lex.in create mode 100644 test_inputs/codegen/cloog/lex.st delete mode 100644 test_inputs/codegen/cloog/lineality-1-2.in create mode 100644 test_inputs/codegen/cloog/lineality-1-2.st delete mode 100644 test_inputs/codegen/cloog/lineality-2-1-2.in create mode 100644 test_inputs/codegen/cloog/lineality-2-1-2.st delete mode 100644 test_inputs/codegen/cloog/logo.in create mode 100644 test_inputs/codegen/cloog/logo.st delete mode 100644 test_inputs/codegen/cloog/logopar.in create mode 100644 test_inputs/codegen/cloog/logopar.st delete mode 100644 test_inputs/codegen/cloog/lu.in create mode 100644 test_inputs/codegen/cloog/lu.st delete mode 100644 test_inputs/codegen/cloog/lu2.in create mode 100644 test_inputs/codegen/cloog/lu2.st delete mode 100644 test_inputs/codegen/cloog/lux.in create mode 100644 test_inputs/codegen/cloog/lux.st delete mode 100644 test_inputs/codegen/cloog/merge.in create mode 100644 test_inputs/codegen/cloog/merge.st delete mode 100644 test_inputs/codegen/cloog/min-1-1.in create mode 100644 test_inputs/codegen/cloog/min-1-1.st delete mode 100644 test_inputs/codegen/cloog/min-2-1.in create mode 100644 test_inputs/codegen/cloog/min-2-1.st delete mode 100644 test_inputs/codegen/cloog/min-3-1.in create mode 100644 test_inputs/codegen/cloog/min-3-1.st delete mode 100644 test_inputs/codegen/cloog/min-4-1.in create mode 100644 test_inputs/codegen/cloog/min-4-1.st delete mode 100644 test_inputs/codegen/cloog/mod.in create mode 100644 test_inputs/codegen/cloog/mod.st delete mode 100644 test_inputs/codegen/cloog/mod2.in create mode 100644 test_inputs/codegen/cloog/mod2.st delete mode 100644 test_inputs/codegen/cloog/mod3.in create mode 100644 test_inputs/codegen/cloog/mod3.st delete mode 100644 test_inputs/codegen/cloog/mod4.in create mode 100644 test_inputs/codegen/cloog/mod4.st delete mode 100644 test_inputs/codegen/cloog/mode.in create mode 100644 test_inputs/codegen/cloog/mode.st delete mode 100644 test_inputs/codegen/cloog/multi-mm-1.in create mode 100644 test_inputs/codegen/cloog/multi-mm-1.st delete mode 100644 test_inputs/codegen/cloog/multi-stride.in create mode 100644 test_inputs/codegen/cloog/multi-stride.st delete mode 100644 test_inputs/codegen/cloog/multi-stride2.in create mode 100644 test_inputs/codegen/cloog/multi-stride2.st delete mode 100644 test_inputs/codegen/cloog/mxm-shared.in create mode 100644 test_inputs/codegen/cloog/mxm-shared.st delete mode 100644 test_inputs/codegen/cloog/no_lindep.in create mode 100644 test_inputs/codegen/cloog/no_lindep.st delete mode 100644 test_inputs/codegen/cloog/nul_basic1.in create mode 100644 test_inputs/codegen/cloog/nul_basic1.st delete mode 100644 test_inputs/codegen/cloog/nul_basic2.in create mode 100644 test_inputs/codegen/cloog/nul_basic2.st delete mode 100644 test_inputs/codegen/cloog/nul_complex1.in create mode 100644 test_inputs/codegen/cloog/nul_complex1.st delete mode 100644 test_inputs/codegen/cloog/nul_lcpc.in create mode 100644 test_inputs/codegen/cloog/nul_lcpc.st delete mode 100644 test_inputs/codegen/cloog/orc.in create mode 100644 test_inputs/codegen/cloog/orc.st delete mode 100644 test_inputs/codegen/cloog/otl.in create mode 100644 test_inputs/codegen/cloog/otl.st delete mode 100644 test_inputs/codegen/cloog/param-split.in create mode 100644 test_inputs/codegen/cloog/param-split.st delete mode 100644 test_inputs/codegen/cloog/pouchet.in create mode 100644 test_inputs/codegen/cloog/pouchet.st delete mode 100644 test_inputs/codegen/cloog/rectangle.in create mode 100644 test_inputs/codegen/cloog/rectangle.st rewrite test_inputs/codegen/cloog/reservoir-QR.c (78%) delete mode 100644 test_inputs/codegen/cloog/reservoir-QR.in create mode 100644 test_inputs/codegen/cloog/reservoir-QR.st delete mode 100644 test_inputs/codegen/cloog/reservoir-bastoul3.in create mode 100644 test_inputs/codegen/cloog/reservoir-bastoul3.st delete mode 100644 test_inputs/codegen/cloog/reservoir-cholesky2.in create mode 100644 test_inputs/codegen/cloog/reservoir-cholesky2.st delete mode 100644 test_inputs/codegen/cloog/reservoir-fusion1.in create mode 100644 test_inputs/codegen/cloog/reservoir-fusion1.st delete mode 100644 test_inputs/codegen/cloog/reservoir-fusion2.in create mode 100644 test_inputs/codegen/cloog/reservoir-fusion2.st delete mode 100644 test_inputs/codegen/cloog/reservoir-jacobi2.in create mode 100644 test_inputs/codegen/cloog/reservoir-jacobi2.st delete mode 100644 test_inputs/codegen/cloog/reservoir-jacobi3.in create mode 100644 test_inputs/codegen/cloog/reservoir-jacobi3.st delete mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam1.in create mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam1.st delete mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam2.in create mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam2.st rewrite test_inputs/codegen/cloog/reservoir-lim-lam3.c (99%) delete mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam3.in create mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam3.st rewrite test_inputs/codegen/cloog/reservoir-lim-lam4.c (96%) delete mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam4.in create mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam4.st delete mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam5.in create mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam5.st delete mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam6.in create mode 100644 test_inputs/codegen/cloog/reservoir-lim-lam6.st rewrite test_inputs/codegen/cloog/reservoir-liu-zhuge1.c (94%) delete mode 100644 test_inputs/codegen/cloog/reservoir-liu-zhuge1.in create mode 100644 test_inputs/codegen/cloog/reservoir-liu-zhuge1.st delete mode 100644 test_inputs/codegen/cloog/reservoir-loechner3.in create mode 100644 test_inputs/codegen/cloog/reservoir-loechner3.st delete mode 100644 test_inputs/codegen/cloog/reservoir-loechner4.in create mode 100644 test_inputs/codegen/cloog/reservoir-loechner4.st delete mode 100644 test_inputs/codegen/cloog/reservoir-loechner5.in create mode 100644 test_inputs/codegen/cloog/reservoir-loechner5.st rewrite test_inputs/codegen/cloog/reservoir-mg-interp.c (94%) delete mode 100644 test_inputs/codegen/cloog/reservoir-mg-interp.in create mode 100644 test_inputs/codegen/cloog/reservoir-mg-interp.st rewrite test_inputs/codegen/cloog/reservoir-mg-interp2.c (99%) delete mode 100644 test_inputs/codegen/cloog/reservoir-mg-interp2.in create mode 100644 test_inputs/codegen/cloog/reservoir-mg-interp2.st delete mode 100644 test_inputs/codegen/cloog/reservoir-mg-psinv.in create mode 100644 test_inputs/codegen/cloog/reservoir-mg-psinv.st delete mode 100644 test_inputs/codegen/cloog/reservoir-mg-resid.in create mode 100644 test_inputs/codegen/cloog/reservoir-mg-resid.st rewrite test_inputs/codegen/cloog/reservoir-mg-rprj3.c (89%) delete mode 100644 test_inputs/codegen/cloog/reservoir-mg-rprj3.in create mode 100644 test_inputs/codegen/cloog/reservoir-mg-rprj3.st delete mode 100644 test_inputs/codegen/cloog/reservoir-pingali1.in create mode 100644 test_inputs/codegen/cloog/reservoir-pingali1.st delete mode 100644 test_inputs/codegen/cloog/reservoir-pingali2.in create mode 100644 test_inputs/codegen/cloog/reservoir-pingali2.st delete mode 100644 test_inputs/codegen/cloog/reservoir-pingali3.in create mode 100644 test_inputs/codegen/cloog/reservoir-pingali3.st delete mode 100644 test_inputs/codegen/cloog/reservoir-pingali4.in create mode 100644 test_inputs/codegen/cloog/reservoir-pingali4.st delete mode 100644 test_inputs/codegen/cloog/reservoir-pingali5.in create mode 100644 test_inputs/codegen/cloog/reservoir-pingali5.st delete mode 100644 test_inputs/codegen/cloog/reservoir-pingali6.in create mode 100644 test_inputs/codegen/cloog/reservoir-pingali6.st delete mode 100644 test_inputs/codegen/cloog/reservoir-stride.in create mode 100644 test_inputs/codegen/cloog/reservoir-stride.st delete mode 100644 test_inputs/codegen/cloog/reservoir-stride2.in create mode 100644 test_inputs/codegen/cloog/reservoir-stride2.st delete mode 100644 test_inputs/codegen/cloog/reservoir-tang-xue1.in create mode 100644 test_inputs/codegen/cloog/reservoir-tang-xue1.st delete mode 100644 test_inputs/codegen/cloog/reservoir-two.in create mode 100644 test_inputs/codegen/cloog/reservoir-two.st delete mode 100644 test_inputs/codegen/cloog/singleton.in create mode 100644 test_inputs/codegen/cloog/singleton.st delete mode 100644 test_inputs/codegen/cloog/square+triangle-1-1-2-3.in create mode 100644 test_inputs/codegen/cloog/square+triangle-1-1-2-3.st delete mode 100644 test_inputs/codegen/cloog/stride.in create mode 100644 test_inputs/codegen/cloog/stride.st delete mode 100644 test_inputs/codegen/cloog/stride2.in create mode 100644 test_inputs/codegen/cloog/stride2.st delete mode 100644 test_inputs/codegen/cloog/stride3.in create mode 100644 test_inputs/codegen/cloog/stride3.st delete mode 100644 test_inputs/codegen/cloog/stride4.in create mode 100644 test_inputs/codegen/cloog/stride4.st rewrite test_inputs/codegen/cloog/swim.c (84%) delete mode 100644 test_inputs/codegen/cloog/swim.in create mode 100644 test_inputs/codegen/cloog/swim.st delete mode 100644 test_inputs/codegen/cloog/test.in create mode 100644 test_inputs/codegen/cloog/test.st delete mode 100644 test_inputs/codegen/cloog/thomasset.in create mode 100644 test_inputs/codegen/cloog/thomasset.st delete mode 100644 test_inputs/codegen/cloog/tiling.in create mode 100644 test_inputs/codegen/cloog/tiling.st delete mode 100644 test_inputs/codegen/cloog/uday_scalars.in create mode 100644 test_inputs/codegen/cloog/uday_scalars.st delete mode 100644 test_inputs/codegen/cloog/union.in create mode 100644 test_inputs/codegen/cloog/union.st delete mode 100644 test_inputs/codegen/cloog/unroll.in create mode 100644 test_inputs/codegen/cloog/unroll.st delete mode 100644 test_inputs/codegen/cloog/unroll2.in create mode 100644 test_inputs/codegen/cloog/unroll2.st delete mode 100644 test_inputs/codegen/cloog/usvd_e_t.in create mode 100644 test_inputs/codegen/cloog/usvd_e_t.st rewrite test_inputs/codegen/cloog/vasilache.c (88%) delete mode 100644 test_inputs/codegen/cloog/vasilache.in create mode 100644 test_inputs/codegen/cloog/vasilache.st delete mode 100644 test_inputs/codegen/cloog/vivien.in create mode 100644 test_inputs/codegen/cloog/vivien.st delete mode 100644 test_inputs/codegen/cloog/vivien2.in create mode 100644 test_inputs/codegen/cloog/vivien2.st delete mode 100644 test_inputs/codegen/cloog/walters.in create mode 100644 test_inputs/codegen/cloog/walters.st delete mode 100644 test_inputs/codegen/cloog/walters2.in create mode 100644 test_inputs/codegen/cloog/walters2.st delete mode 100644 test_inputs/codegen/cloog/walters3.in create mode 100644 test_inputs/codegen/cloog/walters3.st delete mode 100644 test_inputs/codegen/cloog/wavefront.in create mode 100644 test_inputs/codegen/cloog/wavefront.st delete mode 100644 test_inputs/codegen/cloog/yosr.in create mode 100644 test_inputs/codegen/cloog/yosr.st delete mode 100644 test_inputs/codegen/cloog/yosr2.in create mode 100644 test_inputs/codegen/cloog/yosr2.st delete mode 100644 test_inputs/codegen/cloog/youcef.in create mode 100644 test_inputs/codegen/cloog/youcef.st delete mode 100644 test_inputs/codegen/cloog/youcefn.in create mode 100644 test_inputs/codegen/cloog/youcefn.st diff --git a/codegen_test.sh.in b/codegen_test.sh.in index 999cd58c..5b519e71 100644 --- a/codegen_test.sh.in +++ b/codegen_test.sh.in @@ -5,7 +5,8 @@ srcdir=@srcdir@ failed=0 -for i in $srcdir/test_inputs/codegen/*.st; do +for i in $srcdir/test_inputs/codegen/*.st \ + $srcdir/test_inputs/codegen/cloog/*.st; do echo $i; base=`basename $i .st` test=test-$base.c @@ -15,7 +16,6 @@ for i in $srcdir/test_inputs/codegen/*.st; do diff -uw $ref $test && rm $test) || failed=1 done for i in $srcdir/test_inputs/codegen/*.in \ - $srcdir/test_inputs/codegen/cloog/*.in \ $srcdir/test_inputs/codegen/omega/*.in \ $srcdir/test_inputs/codegen/pldi2012/*.in; do echo $i; diff --git a/test_inputs/codegen/cloog/0D-1.in b/test_inputs/codegen/cloog/0D-1.in deleted file mode 100644 index 10e3e408..00000000 --- a/test_inputs/codegen/cloog/0D-1.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[] -> [0] } -{ : } -{ [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/0D-1.st b/test_inputs/codegen/cloog/0D-1.st new file mode 100644 index 00000000..d7182588 --- /dev/null +++ b/test_inputs/codegen/cloog/0D-1.st @@ -0,0 +1,3 @@ +domain: "{ S1[] }" +child: + context: "{ [] }" diff --git a/test_inputs/codegen/cloog/0D-2.in b/test_inputs/codegen/cloog/0D-2.in deleted file mode 100644 index 3bbfd35c..00000000 --- a/test_inputs/codegen/cloog/0D-2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[] -> [0] : M >= 0 } -[M] -> { : } -[M] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/0D-2.st b/test_inputs/codegen/cloog/0D-2.st new file mode 100644 index 00000000..3ee60f68 --- /dev/null +++ b/test_inputs/codegen/cloog/0D-2.st @@ -0,0 +1,3 @@ +domain: "[M] -> { S1[] : M >= 0 }" +child: + context: "[M] -> { [] }" diff --git a/test_inputs/codegen/cloog/0D-3.in b/test_inputs/codegen/cloog/0D-3.in deleted file mode 100644 index f99dd344..00000000 --- a/test_inputs/codegen/cloog/0D-3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[] -> [0] : M >= 0 } -[M] -> { : M >= 0 } -[M] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/0D-3.st b/test_inputs/codegen/cloog/0D-3.st new file mode 100644 index 00000000..97cd37ea --- /dev/null +++ b/test_inputs/codegen/cloog/0D-3.st @@ -0,0 +1,3 @@ +domain: "[M] -> { S1[] : M >= 0 }" +child: + context: "[M] -> { [] : M >= 0 }" diff --git a/test_inputs/codegen/cloog/1point-1.in b/test_inputs/codegen/cloog/1point-1.in deleted file mode 100644 index efd0a7ff..00000000 --- a/test_inputs/codegen/cloog/1point-1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[2M, M] -> [2M, M, 0] } -[M] -> { : } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/1point-1.st b/test_inputs/codegen/cloog/1point-1.st new file mode 100644 index 00000000..61948789 --- /dev/null +++ b/test_inputs/codegen/cloog/1point-1.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[2M, M] }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/1point-2.in b/test_inputs/codegen/cloog/1point-2.in deleted file mode 100644 index de5157ce..00000000 --- a/test_inputs/codegen/cloog/1point-2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[2M, 2 + N] -> [2M, 2 + N, 0] } -[M, N] -> { : } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/1point-2.st b/test_inputs/codegen/cloog/1point-2.st new file mode 100644 index 00000000..9e7adfa0 --- /dev/null +++ b/test_inputs/codegen/cloog/1point-2.st @@ -0,0 +1,6 @@ +domain: "[M, N] -> { S1[2M, 2 + N] }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/4-param.in b/test_inputs/codegen/cloog/4-param.in deleted file mode 100644 index 78140760..00000000 --- a/test_inputs/codegen/cloog/4-param.in +++ /dev/null @@ -1,3 +0,0 @@ -[m, n, p, q] -> { S1[i0] -> [i0, 0] : i0 >= m and i0 <= n; S2[i0] -> [i0, 1] : i0 >= p and i0 <= q } -[m, n, p, q] -> { : } -[m, n, p, q] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/4-param.st b/test_inputs/codegen/cloog/4-param.st new file mode 100644 index 00000000..24335954 --- /dev/null +++ b/test_inputs/codegen/cloog/4-param.st @@ -0,0 +1,10 @@ +domain: "[m, n, p, q] -> { S1[i0] : i0 >= m and i0 <= n; S2[i0] : i0 >= p and i0 <= q }" +child: + context: "[m, n, p, q] -> { [] }" + child: + schedule: "[m, n, p, q] -> [{ S2[i0] -> [(i0)]; S1[i0] -> [(i0)] }]" + options: "[m, n, p, q] -> { separate[i0] }" + child: + sequence: + - filter: "[m, n, p, q] -> { S1[i0] }" + - filter: "[m, n, p, q] -> { S2[i0] }" diff --git a/test_inputs/codegen/cloog/backtrack.in b/test_inputs/codegen/cloog/backtrack.in deleted file mode 100644 index b8ec466f..00000000 --- a/test_inputs/codegen/cloog/backtrack.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[0] -> [0, 0] } -{ : } -{ [i, j] -> atomic[o0] } diff --git a/test_inputs/codegen/cloog/backtrack.st b/test_inputs/codegen/cloog/backtrack.st new file mode 100644 index 00000000..23fb152c --- /dev/null +++ b/test_inputs/codegen/cloog/backtrack.st @@ -0,0 +1,6 @@ +domain: "{ S1[0] }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0] -> [(i0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/basic-bounds-1.in b/test_inputs/codegen/cloog/basic-bounds-1.in deleted file mode 100644 index e5f8bfaf..00000000 --- a/test_inputs/codegen/cloog/basic-bounds-1.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0] -> [i0, 0] : i0 >= 0 and i0 <= 2 } -{ : } -{ [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/basic-bounds-1.st b/test_inputs/codegen/cloog/basic-bounds-1.st new file mode 100644 index 00000000..7c599e8d --- /dev/null +++ b/test_inputs/codegen/cloog/basic-bounds-1.st @@ -0,0 +1,6 @@ +domain: "{ S1[i0] : i0 >= 0 and i0 <= 2 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0] -> [(i0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/basic-bounds-2.in b/test_inputs/codegen/cloog/basic-bounds-2.in deleted file mode 100644 index 7eb48f2d..00000000 --- a/test_inputs/codegen/cloog/basic-bounds-2.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[0] -> [0, 0] } -{ : } -{ [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/basic-bounds-2.st b/test_inputs/codegen/cloog/basic-bounds-2.st new file mode 100644 index 00000000..23fb152c --- /dev/null +++ b/test_inputs/codegen/cloog/basic-bounds-2.st @@ -0,0 +1,6 @@ +domain: "{ S1[0] }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0] -> [(i0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/basic-bounds-3.in b/test_inputs/codegen/cloog/basic-bounds-3.in deleted file mode 100644 index 59ce2c92..00000000 --- a/test_inputs/codegen/cloog/basic-bounds-3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0] -> [i0, 0] : i0 >= 0 and i0 <= M } -[M] -> { : M >= 0 } -[M] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/basic-bounds-3.st b/test_inputs/codegen/cloog/basic-bounds-3.st new file mode 100644 index 00000000..437f566f --- /dev/null +++ b/test_inputs/codegen/cloog/basic-bounds-3.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0] : i0 >= 0 and i0 <= M }" +child: + context: "[M] -> { [] : M >= 0 }" + child: + schedule: "[M] -> [{ S1[i0] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/basic-bounds-4.in b/test_inputs/codegen/cloog/basic-bounds-4.in deleted file mode 100644 index 5f79acf6..00000000 --- a/test_inputs/codegen/cloog/basic-bounds-4.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0] -> [i0, 0] : i0 >= 0 and i0 <= 1 + M } -[M] -> { : M >= 0 } -[M] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/basic-bounds-4.st b/test_inputs/codegen/cloog/basic-bounds-4.st new file mode 100644 index 00000000..a5a0b1a0 --- /dev/null +++ b/test_inputs/codegen/cloog/basic-bounds-4.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0] : i0 >= 0 and i0 <= 1 + M }" +child: + context: "[M] -> { [] : M >= 0 }" + child: + schedule: "[M] -> [{ S1[i0] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/basic-bounds-5.in b/test_inputs/codegen/cloog/basic-bounds-5.in deleted file mode 100644 index 3a6f9085..00000000 --- a/test_inputs/codegen/cloog/basic-bounds-5.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[1, i1] -> [1, i1, 0] : 2i1 >= M and 2i1 <= 1 + M } -[M] -> { : } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/basic-bounds-5.st b/test_inputs/codegen/cloog/basic-bounds-5.st new file mode 100644 index 00000000..e0bc58fb --- /dev/null +++ b/test_inputs/codegen/cloog/basic-bounds-5.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[1, i1] : 2i1 >= M and 2i1 <= 1 + M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/basic-bounds-6.c b/test_inputs/codegen/cloog/basic-bounds-6.c new file mode 100644 index 00000000..da8a3fbc --- /dev/null +++ b/test_inputs/codegen/cloog/basic-bounds-6.c @@ -0,0 +1 @@ +S1(-1); diff --git a/test_inputs/codegen/cloog/basic-bounds-6.st b/test_inputs/codegen/cloog/basic-bounds-6.st new file mode 100644 index 00000000..a65f0880 --- /dev/null +++ b/test_inputs/codegen/cloog/basic-bounds-6.st @@ -0,0 +1,6 @@ +domain: "{ S1[-1] }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0] -> [(i0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/block.in b/test_inputs/codegen/cloog/block.in deleted file mode 100644 index faf2af5f..00000000 --- a/test_inputs/codegen/cloog/block.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S3[i0] -> [i0, 1] : i0 >= 0 and i0 <= 1; S1[] -> [0, 0]; S2[] -> [1, 0] } -{ : } -{ [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/block.st b/test_inputs/codegen/cloog/block.st new file mode 100644 index 00000000..0ab2d885 --- /dev/null +++ b/test_inputs/codegen/cloog/block.st @@ -0,0 +1,10 @@ +domain: "{ S1[]; S3[i0] : i0 >= 0 and i0 <= 1; S2[] }" +child: + context: "{ [] }" + child: + schedule: "[{ S2[] -> [(1)]; S3[i0] -> [(i0)]; S1[] -> [(0)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[]; S2[] }" + - filter: "{ S3[i0] }" diff --git a/test_inputs/codegen/cloog/block2.in b/test_inputs/codegen/cloog/block2.in deleted file mode 100644 index d2b5db44..00000000 --- a/test_inputs/codegen/cloog/block2.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, 1] -> [i0, 1, 6] : i0 >= 0 and i0 <= 9; S2[i0, 1] -> [i0, 1, 11] : i0 >= 0 and i0 <= 9; S3[i0, 1] -> [i0, 1, 8] : i0 >= 0 and i0 <= 9 } -{ : } -{ [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/block2.st b/test_inputs/codegen/cloog/block2.st new file mode 100644 index 00000000..b18ce927 --- /dev/null +++ b/test_inputs/codegen/cloog/block2.st @@ -0,0 +1,11 @@ +domain: "{ S2[i0, 1] : i0 >= 0 and i0 <= 9; S1[i0, 1] : i0 >= 0 and i0 <= 9; S3[i0, 1] : i0 >= 0 and i0 <= 9 }" +child: + context: "{ [] }" + child: + schedule: "[{ S3[i0, i1] -> [(i0)]; S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S3[i0, i1] -> [(i1)]; S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1] }" + - filter: "{ S3[i0, i1] }" + - filter: "{ S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/block3.in b/test_inputs/codegen/cloog/block3.in deleted file mode 100644 index 39c0abb7..00000000 --- a/test_inputs/codegen/cloog/block3.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[] -> [1]; S3[i0] -> [i0] : i0 >= 0 and i0 <= 1; S1[] -> [0] } -{ : } -{ [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/block3.st b/test_inputs/codegen/cloog/block3.st new file mode 100644 index 00000000..85f197f3 --- /dev/null +++ b/test_inputs/codegen/cloog/block3.st @@ -0,0 +1,6 @@ +domain: "{ S1[]; S3[i0] : i0 >= 0 and i0 <= 1; S2[] }" +child: + context: "{ [] }" + child: + schedule: "[{ S2[] -> [(1)]; S3[i0] -> [(i0)]; S1[] -> [(0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/byu98-1-2-3.in b/test_inputs/codegen/cloog/byu98-1-2-3.in deleted file mode 100644 index 9f98fb85..00000000 --- a/test_inputs/codegen/cloog/byu98-1-2-3.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, i1] -> [i0, i1, 0] : i1 >= 6 - i0 and i0 >= 2 and i1 >= 3 and i1 <= 6 and i1 >= -1 + i0; S2[i0, 9 - i0] -> [i0, 9 - i0, 1] : i0 <= 8 and i0 >= 4 } -{ : } -{ [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/byu98-1-2-3.st b/test_inputs/codegen/cloog/byu98-1-2-3.st new file mode 100644 index 00000000..84d3791d --- /dev/null +++ b/test_inputs/codegen/cloog/byu98-1-2-3.st @@ -0,0 +1,10 @@ +domain: "{ S2[i0, 9 - i0] : i0 <= 8 and i0 >= 4; S1[i0, i1] : i1 >= 6 - i0 and i0 >= 2 and i1 >= 3 and i1 <= 6 and i1 >= -1 + i0 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1] }" + - filter: "{ S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/cholesky.c b/test_inputs/codegen/cloog/cholesky.c index 20d4e4d0..1cf61c20 100644 --- a/test_inputs/codegen/cloog/cholesky.c +++ b/test_inputs/codegen/cloog/cholesky.c @@ -1,12 +1,12 @@ for (int c0 = 1; c0 <= n; c0 += 1) { S1(c0); - for (int c2 = 1; c2 < c0; c2 += 1) - S2(c0, c2); + for (int c1 = 1; c1 < c0; c1 += 1) + S2(c0, c1); S3(c0); - for (int c2 = c0 + 1; c2 <= n; c2 += 1) { - S4(c0, c2); - for (int c4 = 1; c4 < c0; c4 += 1) - S5(c0, c2, c4); - S6(c0, c2); + for (int c1 = c0 + 1; c1 <= n; c1 += 1) { + S4(c0, c1); + for (int c2 = 1; c2 < c0; c2 += 1) + S5(c0, c1, c2); + S6(c0, c1); } } diff --git a/test_inputs/codegen/cloog/cholesky.in b/test_inputs/codegen/cloog/cholesky.in deleted file mode 100644 index 90b56c63..00000000 --- a/test_inputs/codegen/cloog/cholesky.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S1[i0] -> [i0, 1, 0, 0, 0, 0] : i0 >= 1 and i0 <= n; S2[i0, i1] -> [i0, 2, i1, 1, 0, 0] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= -1 + i0; S6[i0, i1] -> [i0, 4, i1, 3, 0, 0] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S3[i0] -> [i0, 3, 0, 0, 0, 0] : i0 >= 1 and i0 <= n; S4[i0, i1] -> [i0, 4, i1, 1, 0, 0] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S5[i0, i1, i2] -> [i0, 4, i1, 2, i2, 1] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n and i2 >= 1 and i2 <= -1 + i0 } -[n] -> { : } -[n] -> { [i, j, k, l, m, n'] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/cholesky.st b/test_inputs/codegen/cloog/cholesky.st new file mode 100644 index 00000000..a6e910a5 --- /dev/null +++ b/test_inputs/codegen/cloog/cholesky.st @@ -0,0 +1,26 @@ +domain: "[n] -> { S2[i0, i1] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= -1 + i0; S1[i0] : i0 >= 1 and i0 <= n; S4[i0, i1] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S5[i0, i1, i2] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n and i2 >= 1 and i2 <= -1 + i0; S6[i0, i1] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S3[i0] : i0 >= 1 and i0 <= n }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S1[i0] -> [(i0)]; S4[i0, i1] -> [(i0)]; S6[i0, i1] -> [(i0)]; S3[i0] -> [(i0)]; S5[i0, i1, i2] -> [(i0)]; S2[i0, i1] -> [(i0)] }]" + options: "[n] -> { separate[i0] }" + child: + sequence: + - filter: "[n] -> { S1[i0] }" + - filter: "[n] -> { S2[i0, i1] }" + child: + schedule: "[n] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[n] -> { separate[i0] }" + - filter: "[n] -> { S3[i0] }" + - filter: "[n] -> { S4[i0, i1]; S5[i0, i1, i2]; S6[i0, i1] }" + child: + schedule: "[n] -> [{ S4[i0, i1] -> [(i1)]; S6[i0, i1] -> [(i1)]; S5[i0, i1, i2] -> [(i1)] }]" + options: "[n] -> { separate[i0] }" + child: + sequence: + - filter: "[n] -> { S4[i0, i1] }" + - filter: "[n] -> { S5[i0, i1, i2] }" + child: + schedule: "[n] -> [{ S5[i0, i1, i2] -> [(i2)] }]" + options: "[n] -> { separate[i0] }" + - filter: "[n] -> { S6[i0, i1] }" diff --git a/test_inputs/codegen/cloog/cholesky2.in b/test_inputs/codegen/cloog/cholesky2.in deleted file mode 100644 index b44b4568..00000000 --- a/test_inputs/codegen/cloog/cholesky2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [3i1, i0, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= -1 + i0; S4[i0, i1] -> [0, i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M; S1[i0] -> [0, i0, 0] : i0 >= 1 and i0 <= M; S6[i0, i1] -> [-1 + 3i0, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M; S3[i0] -> [-2 + 3i0, 0, 0] : i0 >= 1 and i0 <= M; S5[i0, i1, i2] -> [-1 + 3i2, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M and i2 >= 1 and i2 <= -1 + i0 } -[M] -> { : } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/cholesky2.st b/test_inputs/codegen/cloog/cholesky2.st new file mode 100644 index 00000000..d49ff858 --- /dev/null +++ b/test_inputs/codegen/cloog/cholesky2.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S4[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M; S5[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M and i2 >= 1 and i2 <= -1 + i0; S6[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M; S3[i0] : i0 >= 1 and i0 <= M; S2[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= -1 + i0; S1[i0] : i0 >= 1 and i0 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0] -> [(0)]; S3[i0] -> [(-2 + 3i0)]; S4[i0, i1] -> [(0)]; S5[i0, i1, i2] -> [(-1 + 3i2)]; S2[i0, i1] -> [(3i1)]; S6[i0, i1] -> [(-1 + 3i0)] }, { S1[i0] -> [(i0)]; S3[i0] -> [(0)]; S4[i0, i1] -> [(i0)]; S5[i0, i1, i2] -> [(i1)]; S2[i0, i1] -> [(i0)]; S6[i0, i1] -> [(i1)] }, { S1[i0] -> [(0)]; S3[i0] -> [(0)]; S4[i0, i1] -> [(i1)]; S5[i0, i1, i2] -> [(i2)]; S2[i0, i1] -> [(0)]; S6[i0, i1] -> [(0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/christian.c b/test_inputs/codegen/cloog/christian.c index 98b52d8d..113249a1 100644 --- a/test_inputs/codegen/cloog/christian.c +++ b/test_inputs/codegen/cloog/christian.c @@ -1,6 +1,6 @@ for (int c0 = -N + 1; c0 <= N; c0 += 1) { - for (int c1 = max(0, c0 - 1); c1 < min(N, N + c0 - 1); c1 += 1) - S2(c1, -c0 + c1 + 1); for (int c1 = max(0, c0); c1 < min(N, N + c0); c1 += 1) S1(c1, -c0 + c1); + for (int c1 = max(0, c0 - 1); c1 < min(N, N + c0 - 1); c1 += 1) + S2(c1, -c0 + c1 + 1); } diff --git a/test_inputs/codegen/cloog/christian.in b/test_inputs/codegen/cloog/christian.in deleted file mode 100644 index af3df079..00000000 --- a/test_inputs/codegen/cloog/christian.in +++ /dev/null @@ -1,3 +0,0 @@ -[N] -> { S1[i0, i1] -> [i0 - i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N; S2[i0, i1] -> [1 + i0 - i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N } -[N] -> { : } -[N] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/christian.st b/test_inputs/codegen/cloog/christian.st new file mode 100644 index 00000000..b4517743 --- /dev/null +++ b/test_inputs/codegen/cloog/christian.st @@ -0,0 +1,6 @@ +domain: "[N] -> { S1[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N; S2[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N }" +child: + context: "[N] -> { [] }" + child: + schedule: "[N] -> [{ S1[i0, i1] -> [(i0 - i1)]; S2[i0, i1] -> [(1 + i0 - i1)] }]" + options: "[N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/classen.c b/test_inputs/codegen/cloog/classen.c index 7ed3c45c..d51254c0 100644 --- a/test_inputs/codegen/cloog/classen.c +++ b/test_inputs/codegen/cloog/classen.c @@ -1,60 +1,86 @@ -for (int c0 = 0; c0 < 2 * m - 1; c0 += 1) { - if (2 * m >= c0 + 3 && c0 >= 1) { +if (m >= 1) { + if (m == 1) { + S1(0, 1, 1, 1); + S8(0, 1); + } else { + S1(0, 1, 1, 1); + S4(0, 1, 2, 2, 1, 1, 2, 2); + S3(0, 1, 1, 2, 1, 1, 1, 2); + S2(0, 1, 1, 1, 1, 1, 2, 1); + S8(0, 1); + } + for (int c0 = 1; c0 < 2 * m - 3; c0 += 1) { if (c0 + 1 == m) { S5(m - 2, 1, m - 1, 1, m - 1, 1, m, 1); S1(m - 1, 1, m, 1); S3(m - 1, 1, m, 2, m, 1, m, 2); - } else if (c0 >= m) { - S5(c0 - 1, -m + c0 + 2, c0, -m + c0 + 2, m - 1, -m + c0 + 2, m, -m + c0 + 2); - S6(c0 - 1, -m + c0 + 1, c0, -m + c0 + 2, m, -m + c0 + 1, m, -m + c0 + 2); - S1(c0, -m + c0 + 2, m, -m + c0 + 2); - S3(c0, -m + c0 + 2, c0 + 1, -m + c0 + 3, m, -m + c0 + 2, m, -m + c0 + 3); - } else { + } else if (m >= c0 + 2) { S5(c0 - 1, 1, c0, 1, c0, 1, c0 + 1, 1); S1(c0, 1, c0 + 1, 1); - S3(c0, 1, c0 + 1, 2, c0 + 1, 1, c0 + 1, 2); S4(c0, 1, c0 + 2, 2, c0 + 1, 1, c0 + 2, 2); S2(c0, 1, c0 + 1, 1, c0 + 1, 1, c0 + 2, 1); + S3(c0, 1, c0 + 1, 2, c0 + 1, 1, c0 + 1, 2); + } else { + S5(c0 - 1, -m + c0 + 2, c0, -m + c0 + 2, m - 1, -m + c0 + 2, m, -m + c0 + 2); + S6(c0 - 1, -m + c0 + 1, c0, -m + c0 + 2, m, -m + c0 + 1, m, -m + c0 + 2); + S1(c0, -m + c0 + 2, m, -m + c0 + 2); + S3(c0, -m + c0 + 2, c0 + 1, -m + c0 + 3, m, -m + c0 + 2, m, -m + c0 + 3); } - for (int c2 = max(2, -m + c0 + 3); c2 <= min(m - 1, c0); c2 += 1) { - S5(c0 - 1, c2, c0, c2, c0 - c2 + 1, c2, c0 - c2 + 2, c2); - S7(c0 - 1, c2 - 1, c0 + 1, c2, c0 - c2 + 2, c2 - 1, c0 - c2 + 3, c2); - S6(c0 - 1, c2 - 1, c0, c2, c0 - c2 + 2, c2 - 1, c0 - c2 + 2, c2); - S1(c0, c2, c0 - c2 + 2, c2); - S3(c0, c2, c0 + 1, c2 + 1, c0 - c2 + 2, c2, c0 - c2 + 2, c2 + 1); - S4(c0, c2, c0 + 2, c2 + 1, c0 - c2 + 2, c2, c0 - c2 + 3, c2 + 1); - S2(c0, c2, c0 + 1, c2, c0 - c2 + 2, c2, c0 - c2 + 3, c2); + for (int c1 = max(2, -m + c0 + 3); c1 <= min(m - 1, c0); c1 += 1) { + S5(c0 - 1, c1, c0, c1, c0 - c1 + 1, c1, c0 - c1 + 2, c1); + S6(c0 - 1, c1 - 1, c0, c1, c0 - c1 + 2, c1 - 1, c0 - c1 + 2, c1); + S7(c0 - 1, c1 - 1, c0 + 1, c1, c0 - c1 + 2, c1 - 1, c0 - c1 + 3, c1); + S1(c0, c1, c0 - c1 + 2, c1); + S4(c0, c1, c0 + 2, c1 + 1, c0 - c1 + 2, c1, c0 - c1 + 3, c1 + 1); + S2(c0, c1, c0 + 1, c1, c0 - c1 + 2, c1, c0 - c1 + 3, c1); + S3(c0, c1, c0 + 1, c1 + 1, c0 - c1 + 2, c1, c0 - c1 + 2, c1 + 1); } if (c0 + 1 == m) { S7(m - 2, m - 1, m, m, 1, m - 1, 2, m); S6(m - 2, m - 1, m - 1, m, 1, m - 1, 1, m); S1(m - 1, m, 1, m); S2(m - 1, m, m, m, 1, m, 2, m); - } else if (c0 >= m) { + } else if (m >= c0 + 2) { + S7(c0 - 1, c0, c0 + 1, c0 + 1, 1, c0, 2, c0 + 1); + S6(c0 - 1, c0, c0, c0 + 1, 1, c0, 1, c0 + 1); + S1(c0, c0 + 1, 1, c0 + 1); + S4(c0, c0 + 1, c0 + 2, c0 + 2, 1, c0 + 1, 2, c0 + 2); + S2(c0, c0 + 1, c0 + 1, c0 + 1, 1, c0 + 1, 2, c0 + 1); + S3(c0, c0 + 1, c0 + 1, c0 + 2, 1, c0 + 1, 1, c0 + 2); + } else { S5(c0 - 1, m, c0, m, -m + c0 + 1, m, -m + c0 + 2, m); S7(c0 - 1, m - 1, c0 + 1, m, -m + c0 + 2, m - 1, -m + c0 + 3, m); S6(c0 - 1, m - 1, c0, m, -m + c0 + 2, m - 1, -m + c0 + 2, m); S1(c0, m, -m + c0 + 2, m); S2(c0, m, c0 + 1, m, -m + c0 + 2, m, -m + c0 + 3, m); + } + for (int c2 = max(1, -m + c0 + 2); c2 <= min(m, c0 + 1); c2 += 1) + S8(c0, c2); + } + if (m >= 2) { + if (m >= 3) { + S5(2 * m - 4, m - 1, 2 * m - 3, m - 1, m - 1, m - 1, m, m - 1); + S6(2 * m - 4, m - 2, 2 * m - 3, m - 1, m, m - 2, m, m - 1); + S1(2 * m - 3, m - 1, m, m - 1); + S3(2 * m - 3, m - 1, 2 * m - 2, m, m, m - 1, m, m); + S5(2 * m - 4, m, 2 * m - 3, m, m - 2, m, m - 1, m); + S7(2 * m - 4, m - 1, 2 * m - 2, m, m - 1, m - 1, m, m); + S6(2 * m - 4, m - 1, 2 * m - 3, m, m - 1, m - 1, m - 1, m); + S1(2 * m - 3, m, m - 1, m); } else { - S7(c0 - 1, c0, c0 + 1, c0 + 1, 1, c0, 2, c0 + 1); - S6(c0 - 1, c0, c0, c0 + 1, 1, c0, 1, c0 + 1); - S1(c0, c0 + 1, 1, c0 + 1); - S3(c0, c0 + 1, c0 + 1, c0 + 2, 1, c0 + 1, 1, c0 + 2); - S4(c0, c0 + 1, c0 + 2, c0 + 2, 1, c0 + 1, 2, c0 + 2); - S2(c0, c0 + 1, c0 + 1, c0 + 1, 1, c0 + 1, 2, c0 + 1); + S5(0, 1, 1, 1, 1, 1, 2, 1); + S1(1, 1, 2, 1); + S3(1, 1, 2, 2, 2, 1, 2, 2); + S7(0, 1, 2, 2, 1, 1, 2, 2); + S6(0, 1, 1, 2, 1, 1, 1, 2); + S1(1, 2, 1, 2); } - } else if (m >= 2 && c0 == 0) { - S1(0, 1, 1, 1); - S3(0, 1, 1, 2, 1, 1, 1, 2); - S4(0, 1, 2, 2, 1, 1, 2, 2); - S2(0, 1, 1, 1, 1, 1, 2, 1); - } else if (m >= 2) { + S2(2 * m - 3, m, 2 * m - 2, m, m - 1, m, m, m); + for (int c2 = m - 1; c2 <= m; c2 += 1) + S8(2 * m - 3, c2); S5(2 * m - 3, m, 2 * m - 2, m, m - 1, m, m, m); S6(2 * m - 3, m - 1, 2 * m - 2, m, m, m - 1, m, m); S1(2 * m - 2, m, m, m); - } else - S1(0, 1, 1, 1); - for (int c8 = max(1, -m + c0 + 2); c8 <= min(m, c0 + 1); c8 += 1) - S8(c0, c8); + S8(2 * m - 2, m); + } } diff --git a/test_inputs/codegen/cloog/classen.in b/test_inputs/codegen/cloog/classen.in deleted file mode 100644 index 8dc0b76a..00000000 --- a/test_inputs/codegen/cloog/classen.in +++ /dev/null @@ -1,3 +0,0 @@ -[m] -> { S2[i0, i1, 1 + i0, i1, 2 + i0 - i1, i1, 3 + i0 - i1, i1] -> [i0, 0, i1, 2, 2 + i0 - i1, i1, 1] : m >= 1 and i0 <= -3 + 2m and i0 >= 0 and i1 <= 1 + i0 and i1 <= m and i1 >= 3 - m + i0 and i1 >= 1; S4[i0, i1, 2 + i0, 1 + i1, 2 + i0 - i1, i1, 3 + i0 - i1, 1 + i1] -> [i0, 0, i1, 2, 2 + i0 - i1, i1, 1] : m >= 1 and i0 <= -4 + 2m and i0 >= 0 and i1 <= 1 + i0 and i1 <= -1 + m and i1 >= 3 - m + i0 and i1 >= 1; S5[i0, i1, 1 + i0, i1, 2 + i0 - i1, i1, 3 + i0 - i1, i1] -> [1 + i0, 0, i1, 0, 2 + i0 - i1, i1, 1] : m >= 1 and i0 <= -3 + 2m and i0 >= 0 and i1 <= 1 + i0 and i1 <= m and i1 >= 3 - m + i0 and i1 >= 1; S7[i0, i1, 2 + i0, 1 + i1, 2 + i0 - i1, i1, 3 + i0 - i1, 1 + i1] -> [1 + i0, 0, 1 + i1, 0, 2 + i0 - i1, i1, 1] : m >= 1 and i0 <= -4 + 2m and i0 >= 0 and i1 <= 1 + i0 and i1 <= -1 + m and i1 >= 3 - m + i0 and i1 >= 1; S6[i0, i1, 1 + i0, 1 + i1, 2 + i0 - i1, i1, 2 + i0 - i1, 1 + i1] -> [1 + i0, 0, 1 + i1, 0, 2 + i0 - i1, i1, 1] : m >= 1 and i0 <= -3 + 2m and i0 >= 0 and i1 <= 1 + i0 and i1 <= -1 + m and i1 >= 2 - m + i0 and i1 >= 1; S3[i0, i1, 1 + i0, 1 + i1, 2 + i0 - i1, i1, 2 + i0 - i1, 1 + i1] -> [i0, 0, i1, 2, 2 + i0 - i1, i1, 1] : m >= 1 and i0 <= -3 + 2m and i0 >= 0 and i1 <= 1 + i0 and i1 <= -1 + m and i1 >= 2 - m + i0 and i1 >= 1; S8[i0, i1] -> [i0, 1, 0, 0, 0, 0, 0] : i0 <= -2 + 2m and i0 >= 0 and i1 <= 1 + i0 and i1 <= m and i1 >= 2 - m + i0 and i1 >= 1; S1[i0, i1, 2 + i0 - i1, i1] -> [i0, 0, i1, 1, 0, 0, 0] : m >= 1 and i1 >= 2 - m + i0 and i1 <= 1 + i0 and i1 <= m and i1 >= 1 } -[m] -> { : m >= 0 } -[m] -> { [i, j, k, l, m', n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/classen.st b/test_inputs/codegen/cloog/classen.st new file mode 100644 index 00000000..e9d3baf6 --- /dev/null +++ b/test_inputs/codegen/cloog/classen.st @@ -0,0 +1,24 @@ +domain: "[m] -> { S2[coordT1, coordP1, 1 + coordT1, coordP1, 2 + coordT1 - coordP1, coordP1, 3 + coordT1 - coordP1, coordP1] : m >= 1 and coordT1 <= -3 + 2m and coordT1 >= 0 and coordP1 <= 1 + coordT1 and coordP1 <= m and coordP1 >= 3 - m + coordT1 and coordP1 >= 1; S4[coordT1, coordP1, 2 + coordT1, 1 + coordP1, 2 + coordT1 - coordP1, coordP1, 3 + coordT1 - coordP1, 1 + coordP1] : m >= 1 and coordT1 <= -4 + 2m and coordT1 >= 0 and coordP1 <= 1 + coordT1 and coordP1 <= -1 + m and coordP1 >= 3 - m + coordT1 and coordP1 >= 1; S6[coordT1, coordP1, 1 + coordT1, 1 + coordP1, 2 + coordT1 - coordP1, coordP1, 2 + coordT1 - coordP1, 1 + coordP1] : m >= 1 and coordT1 <= -3 + 2m and coordT1 >= 0 and coordP1 <= 1 + coordT1 and coordP1 <= -1 + m and coordP1 >= 2 - m + coordT1 and coordP1 >= 1; S1[coordT1, coordP1, 2 + coordT1 - coordP1, coordP1] : m >= 1 and coordP1 >= 2 - m + coordT1 and coordP1 <= 1 + coordT1 and coordP1 <= m and coordP1 >= 1; S8[coordT1, coordP1] : coordT1 <= -2 + 2m and coordT1 >= 0 and coordP1 <= 1 + coordT1 and coordP1 <= m and coordP1 >= 2 - m + coordT1 and coordP1 >= 1; S5[coordT1, coordP1, 1 + coordT1, coordP1, 2 + coordT1 - coordP1, coordP1, 3 + coordT1 - coordP1, coordP1] : m >= 1 and coordT1 <= -3 + 2m and coordT1 >= 0 and coordP1 <= 1 + coordT1 and coordP1 <= m and coordP1 >= 3 - m + coordT1 and coordP1 >= 1; S7[coordT1, coordP1, 2 + coordT1, 1 + coordP1, 2 + coordT1 - coordP1, coordP1, 3 + coordT1 - coordP1, 1 + coordP1] : m >= 1 and coordT1 <= -4 + 2m and coordT1 >= 0 and coordP1 <= 1 + coordT1 and coordP1 <= -1 + m and coordP1 >= 3 - m + coordT1 and coordP1 >= 1; S3[coordT1, coordP1, 1 + coordT1, 1 + coordP1, 2 + coordT1 - coordP1, coordP1, 2 + coordT1 - coordP1, 1 + coordP1] : m >= 1 and coordT1 <= -3 + 2m and coordT1 >= 0 and coordP1 <= 1 + coordT1 and coordP1 <= -1 + m and coordP1 >= 2 - m + coordT1 and coordP1 >= 1 }" +child: + context: "[m] -> { [] : m >= 0 }" + child: + schedule: "[m] -> [{ S7[i0, i1, i2, i3, i4, i5, i6, i7] -> [(1 + i0)]; S4[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i0)]; S8[i0, i1] -> [(i0)]; S3[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i0)]; S1[i0, i1, i2, i3] -> [(i0)]; S2[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i0)]; S5[i0, i1, i2, i3, i4, i5, i6, i7] -> [(1 + i0)]; S6[i0, i1, i2, i3, i4, i5, i6, i7] -> [(1 + i0)] }]" + options: "[m] -> { separate[i0] }" + child: + sequence: + - filter: "[m] -> { S2[i0, i1, i2, i3, i4, i5, i6, i7]; S6[i0, i1, i2, i3, i4, i5, i6, i7]; S4[i0, i1, i2, i3, i4, i5, i6, i7]; S1[i0, i1, i2, i3]; S7[i0, i1, i2, i3, i4, i5, i6, i7]; S5[i0, i1, i2, i3, i4, i5, i6, i7]; S3[i0, i1, i2, i3, i4, i5, i6, i7] }" + child: + schedule: "[m] -> [{ S7[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i3)]; S4[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i1)]; S3[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i1)]; S1[i0, i1, i2, i3] -> [(i1)]; S2[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i1)]; S5[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i3)]; S6[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i3)] }]" + options: "[m] -> { separate[i0] }" + child: + sequence: + - filter: "[m] -> { S6[i0, i1, i2, i3, i4, i5, i6, i7]; S5[i0, i1, i2, i3, i4, i5, i6, i7]; S7[i0, i1, i2, i3, i4, i5, i6, i7] }" + child: + schedule: "[m] -> [{ S7[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i4)]; S5[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i4)]; S6[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i4)] }, { S7[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i5)]; S5[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i5)]; S6[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i5)] }]" + options: "[m] -> { separate[i0] }" + - filter: "[m] -> { S1[i0, i1, i2, i3] }" + - filter: "[m] -> { S2[i0, i1, i2, i3, i4, i5, i6, i7]; S4[i0, i1, i2, i3, i4, i5, i6, i7]; S3[i0, i1, i2, i3, i4, i5, i6, i7] }" + child: + schedule: "[m] -> [{ S4[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i4)]; S3[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i4)]; S2[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i4)] }, { S4[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i5)]; S3[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i5)]; S2[i0, i1, i2, i3, i4, i5, i6, i7] -> [(i5)] }]" + options: "[m] -> { separate[i0] }" + - filter: "[m] -> { S8[i0, i1] }" diff --git a/test_inputs/codegen/cloog/classen2.in b/test_inputs/codegen/cloog/classen2.in deleted file mode 100644 index 8a74eaa9..00000000 --- a/test_inputs/codegen/cloog/classen2.in +++ /dev/null @@ -1,3 +0,0 @@ -[outerTimeTileScatter, outerProcTileScatter1, outerProcTileScatter2, M, N] -> { S1[i0, i1, i2, 2i0 + i1 + i2, 1 + i0 + i1 + i2, 1 + i0 + i1] -> [2i0 + i1 + i2, 1 + i0 + i1 + i2, 1 + i0 + i1] : N >= 3 and i2 <= 3 + 5outerProcTileScatter1 - i0 - i1 and i1 >= -1 + 5outerProcTileScatter2 - i0 and M >= 2 and i2 <= 4 + 5outerTimeTileScatter - 2i0 - i1 and i1 <= 3 + 5outerProcTileScatter2 - i0 and i2 >= 1 and i2 <= -2 + N and i1 >= 1 and i1 <= -2 + N and i0 >= 1 and i0 <= -1 + M and i2 >= 5outerTimeTileScatter - 2i0 - i1 and i2 >= -1 + 5outerProcTileScatter1 - i0 - i1 } -[outerTimeTileScatter, outerProcTileScatter1, outerProcTileScatter2, M, N] -> { : } -[outerTimeTileScatter, outerProcTileScatter1, outerProcTileScatter2, M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/classen2.st b/test_inputs/codegen/cloog/classen2.st new file mode 100644 index 00000000..f7115ca6 --- /dev/null +++ b/test_inputs/codegen/cloog/classen2.st @@ -0,0 +1,6 @@ +domain: "[outerTimeTileScatter, outerProcTileScatter1, outerProcTileScatter2, M, N] -> { S1[compIter1, compIter2, compIter3, 2compIter1 + compIter2 + compIter3, 1 + compIter1 + compIter2 + compIter3, 1 + compIter1 + compIter2] : N >= 3 and compIter3 <= 3 + 5outerProcTileScatter1 - compIter1 - compIter2 and compIter2 >= -1 + 5outerProcTileScatter2 - compIter1 and M >= 2 and compIter3 <= 4 + 5outerTimeTileScatter - 2compIter1 - compIter2 and compIter2 <= 3 + 5outerProcTileScatter2 - compIter1 and compIter3 >= 1 and compIter3 <= -2 + N and compIter2 >= 1 and compIter2 <= -2 + N and compIter1 >= 1 and compIter1 <= -1 + M and compIter3 >= 5outerTimeTileScatter - 2compIter1 - compIter2 and compIter3 >= -1 + 5outerProcTileScatter1 - compIter1 - compIter2 }" +child: + context: "[outerTimeTileScatter, outerProcTileScatter1, outerProcTileScatter2, M, N] -> { [] }" + child: + schedule: "[outerTimeTileScatter, outerProcTileScatter1, outerProcTileScatter2, M, N] -> [{ S1[i0, i1, i2, i3, i4, i5] -> [(i3)] }, { S1[i0, i1, i2, i3, i4, i5] -> [(i4)] }, { S1[i0, i1, i2, i3, i4, i5] -> [(i5)] }]" + options: "[outerTimeTileScatter, outerProcTileScatter1, outerProcTileScatter2, M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/constant.in b/test_inputs/codegen/cloog/constant.in deleted file mode 100644 index 7cd365a8..00000000 --- a/test_inputs/codegen/cloog/constant.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S5[i0] -> [i0, 0, 1] : i0 >= 0 and i0 <= 1023 and i0 >= 1025 + M; S1[i0] -> [-1, i0, 0] : i0 >= 0 and i0 <= 1023 and i0 <= 1024 + M; S3[i0] -> [-1, i0, 2] : i0 >= 0 and i0 <= 1023; S2[i0] -> [-1, i0, 1] : i0 >= 0 and i0 <= 1023 and i0 >= 1025 + M; S4[i0] -> [i0, 0, 0] : i0 >= 0 and i0 <= 1023 and i0 <= 1024 + M; S6[i0] -> [i0, 0, 2] : i0 >= 0 and i0 <= 1023 } -[M] -> { : } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/constant.st b/test_inputs/codegen/cloog/constant.st new file mode 100644 index 00000000..f4f85f74 --- /dev/null +++ b/test_inputs/codegen/cloog/constant.st @@ -0,0 +1,11 @@ +domain: "[M] -> { S4[i0] : i0 >= 0 and i0 <= 1023 and i0 <= 1024 + M; S5[i0] : i0 >= 0 and i0 <= 1023 and i0 >= 1025 + M; S3[i0] : i0 >= 0 and i0 <= 1023; S2[i0] : i0 >= 0 and i0 <= 1023 and i0 >= 1025 + M; S1[i0] : i0 >= 0 and i0 <= 1023 and i0 <= 1024 + M; S6[i0] : i0 >= 0 and i0 <= 1023 }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S2[i0] -> [(-1)]; S4[i0] -> [(i0)]; S1[i0] -> [(-1)]; S3[i0] -> [(-1)]; S6[i0] -> [(i0)]; S5[i0] -> [(i0)] }, { S2[i0] -> [(i0)]; S4[i0] -> [(0)]; S1[i0] -> [(i0)]; S3[i0] -> [(i0)]; S6[i0] -> [(0)]; S5[i0] -> [(0)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S4[i0]; S1[i0] }" + - filter: "[M] -> { S5[i0]; S2[i0] }" + - filter: "[M] -> { S3[i0]; S6[i0] }" diff --git a/test_inputs/codegen/cloog/constbound.c b/test_inputs/codegen/cloog/constbound.c index 219165dc..7fbebe01 100644 --- a/test_inputs/codegen/cloog/constbound.c +++ b/test_inputs/codegen/cloog/constbound.c @@ -1,8 +1,8 @@ for (int c0 = 0; c0 <= 199; c0 += 1) { - for (int c2 = 50 * c0; c2 <= 50 * c0 + 24; c2 += 1) - for (int c3 = 0; c3 <= c2; c3 += 1) - S1(c0, c2, c3); - for (int c2 = 50 * c0 + 25; c2 <= 50 * c0 + 49; c2 += 1) - for (int c3 = 0; c3 <= c2; c3 += 1) - S2(c0, c2, c3); + for (int c1 = 50 * c0; c1 <= 50 * c0 + 24; c1 += 1) + for (int c2 = 0; c2 <= c1; c2 += 1) + S1(c0, c1, c2); + for (int c1 = 50 * c0 + 25; c1 <= 50 * c0 + 49; c1 += 1) + for (int c2 = 0; c2 <= c1; c2 += 1) + S2(c0, c1, c2); } diff --git a/test_inputs/codegen/cloog/constbound.in b/test_inputs/codegen/cloog/constbound.in deleted file mode 100644 index 24727a87..00000000 --- a/test_inputs/codegen/cloog/constbound.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[i0, i1, i2] -> [i0, 1, i1, i2] : i1 >= 0 and i1 <= 9999 and i2 >= 0 and i2 <= i1 and i1 >= 25 + 50i0 and i1 <= 49 + 50i0; S1[i0, i1, i2] -> [i0, 0, i1, i2] : i1 >= 0 and i1 <= 9999 and i2 >= 0 and i2 <= i1 and i1 >= 50i0 and i1 <= 24 + 50i0 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/constbound.st b/test_inputs/codegen/cloog/constbound.st new file mode 100644 index 00000000..1f6789e3 --- /dev/null +++ b/test_inputs/codegen/cloog/constbound.st @@ -0,0 +1,16 @@ +domain: "{ S2[i0, i1, i2] : i1 >= 0 and i1 <= 9999 and i2 >= 0 and i2 <= i1 and i1 >= 25 + 50i0 and i1 <= 49 + 50i0; S1[i0, i1, i2] : i1 >= 0 and i1 <= 9999 and i2 >= 0 and i2 <= i1 and i1 >= 50i0 and i1 <= 24 + 50i0 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1, i2] -> [(i0)]; S2[i0, i1, i2] -> [(i0)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1, i2] }" + child: + schedule: "[{ S1[i0, i1, i2] -> [(i1)] }, { S1[i0, i1, i2] -> [(i2)] }]" + options: "{ separate[i0] }" + - filter: "{ S2[i0, i1, i2] }" + child: + schedule: "[{ S2[i0, i1, i2] -> [(i1)] }, { S2[i0, i1, i2] -> [(i2)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/darte.in b/test_inputs/codegen/cloog/darte.in deleted file mode 100644 index 55897a5a..00000000 --- a/test_inputs/codegen/cloog/darte.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S2[i0, i1, i2] -> [1 + i0 - i1, 2 + i0 + i1, i2] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= n and i2 >= 1 and i2 <= n; S1[i0, i1, i2] -> [i0 - i1, i0 + i1, i0 + i1 + 2i2] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= n and i2 >= 1 and i2 <= n } -[n] -> { : } -[n] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/darte.st b/test_inputs/codegen/cloog/darte.st new file mode 100644 index 00000000..33e9386b --- /dev/null +++ b/test_inputs/codegen/cloog/darte.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[i0, i1, i2] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= n and i2 >= 1 and i2 <= n; S2[i0, i1, i2] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= n and i2 >= 1 and i2 <= n }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S1[i0, i1, i2] -> [(i0 - i1)]; S2[i0, i1, i2] -> [(1 + i0 - i1)] }, { S1[i0, i1, i2] -> [(i0 + i1)]; S2[i0, i1, i2] -> [(2 + i0 + i1)] }, { S1[i0, i1, i2] -> [(i0 + i1 + 2i2)]; S2[i0, i1, i2] -> [(i2)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/dealII.c b/test_inputs/codegen/cloog/dealII.c dissimilarity index 74% index 7db605d5..939a804a 100644 --- a/test_inputs/codegen/cloog/dealII.c +++ b/test_inputs/codegen/cloog/dealII.c @@ -1,12 +1,32 @@ -{ - for (int c0 = 0; c0 <= min(T_2 - 1, T_66); c0 += 1) { - S1(c0); - S2(c0); - } - for (int c0 = T_2; c0 <= min(T_67 - 1, T_66); c0 += 1) - S2(c0); - for (int c0 = max(0, T_66 + 1); c0 < T_2; c0 += 1) - S1(c0); - if (T_2 == 0 && T_67 == 0) - S1(0); -} +{ + if (T_67 == 0 && T_66 <= -1) { + S1(0); + } else if (T_2 >= 1 && T_67 >= 1 && T_66 <= -1) { + S1(0); + } else if (T_2 >= 1 && T_67 >= 1 && T_66 >= 0) { + S1(0); + S2(0); + } + for (int c0 = 1; c0 <= min(min(T_2 - 1, T_67 - 1), T_66); c0 += 1) { + S1(c0); + S2(c0); + } + for (int c0 = max(1, T_66 + 1); c0 < min(T_2, T_67); c0 += 1) + S1(c0); + if (T_2 >= 1 && T_67 == 0 && T_66 >= 0) { + S1(0); + S2(0); + } + for (int c0 = max(1, T_67); c0 <= min(T_2 - 1, T_66); c0 += 1) { + S1(c0); + S2(c0); + } + for (int c0 = max(max(1, T_67), T_66 + 1); c0 < T_2; c0 += 1) + S1(c0); + if (T_2 == 0 && T_67 >= 1 && T_66 >= 0) + S2(0); + for (int c0 = max(1, T_2); c0 <= min(T_67 - 1, T_66); c0 += 1) + S2(c0); + if (T_2 == 0 && T_67 == 0 && T_66 >= 0) + S1(0); +} diff --git a/test_inputs/codegen/cloog/dealII.in b/test_inputs/codegen/cloog/dealII.in deleted file mode 100644 index fc0310b6..00000000 --- a/test_inputs/codegen/cloog/dealII.in +++ /dev/null @@ -1,3 +0,0 @@ -[T_2, T_67, T_66] -> { S1[scat_0] -> [scat_0, 0] : (scat_0 <= -1 + T_2 and scat_0 >= 0) or (scat_0 <= -T_67 and scat_0 >= 0); S2[scat_0] -> [scat_0, 1] : (scat_0 <= -1 + T_2 and scat_0 >= 0 and scat_0 <= T_66) or (scat_0 <= -1 + T_67 and scat_0 >= 0 and scat_0 <= T_66) } -[T_2, T_67, T_66] -> { : T_2 <= 4 and T_2 >= 0 and T_67 <= 4 and T_67 >= 0 } -[T_2, T_67, T_66] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/dealII.st b/test_inputs/codegen/cloog/dealII.st new file mode 100644 index 00000000..586e8fb1 --- /dev/null +++ b/test_inputs/codegen/cloog/dealII.st @@ -0,0 +1,10 @@ +domain: "[T_2, T_67, T_66] -> { S1[scat_0] : (scat_0 >= 0 and scat_0 <= -1 + T_2) or (scat_0 <= -T_67 and scat_0 >= 0); S2[scat_0] : (scat_0 >= 0 and scat_0 <= T_66 and scat_0 <= -1 + T_2) or (scat_0 >= 0 and scat_0 <= T_66 and scat_0 <= -1 + T_67) }" +child: + context: "[T_2, T_67, T_66] -> { [] : T_2 <= 4 and T_2 >= 0 and T_67 <= 4 and T_67 >= 0 }" + child: + schedule: "[T_2, T_67, T_66] -> [{ S2[scat_0] -> [(scat_0)]; S1[scat_0] -> [(scat_0)] }]" + options: "[T_2, T_67, T_66] -> { separate[i0] }" + child: + sequence: + - filter: "[T_2, T_67, T_66] -> { S1[scat_0] }" + - filter: "[T_2, T_67, T_66] -> { S2[scat_0] }" diff --git a/test_inputs/codegen/cloog/donotsimp.c b/test_inputs/codegen/cloog/donotsimp.c index 4c482e29..6e2cfce8 100644 --- a/test_inputs/codegen/cloog/donotsimp.c +++ b/test_inputs/codegen/cloog/donotsimp.c @@ -1,6 +1,6 @@ -for (int c1 = 1; c1 <= 10; c1 += 1) { - for (int c3 = 1; c3 <= c1; c3 += 1) - S1(c1, c3); - for (int c3 = 11; c3 <= M; c3 += 1) - S2(c1, c3); +for (int c0 = 1; c0 <= 10; c0 += 1) { + for (int c1 = 1; c1 <= c0; c1 += 1) + S1(c0, c1); + for (int c1 = 11; c1 <= M; c1 += 1) + S2(c0, c1); } diff --git a/test_inputs/codegen/cloog/donotsimp.in b/test_inputs/codegen/cloog/donotsimp.in deleted file mode 100644 index c1541ccf..00000000 --- a/test_inputs/codegen/cloog/donotsimp.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [0, i0, 0, i1, 0] : i0 >= 1 and i0 <= 10 and i1 >= 11 and i1 <= M; S1[i0, i1] -> [0, i0, 0, i1, 0] : i0 >= 1 and i0 <= 10 and i1 >= 1 and i1 <= i0 } -[M] -> { : M >= 20 } -[M] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/donotsimp.st b/test_inputs/codegen/cloog/donotsimp.st new file mode 100644 index 00000000..1dd72f41 --- /dev/null +++ b/test_inputs/codegen/cloog/donotsimp.st @@ -0,0 +1,9 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i0 <= 10 and i1 >= 1 and i1 <= i0; S2[i0, i1] : i0 >= 1 and i0 <= 10 and i1 >= 11 and i1 <= M }" +child: + context: "[M] -> { [] : M >= 20 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/dot.in b/test_inputs/codegen/cloog/dot.in deleted file mode 100644 index 37e1f14b..00000000 --- a/test_inputs/codegen/cloog/dot.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[0, i1] -> [0, i1, 0] : i1 <= M and N >= 0 and i1 >= 1; S2[i0, i1] -> [i0, i1, 1] : i0 >= 1 and i1 <= M and i0 <= N and i1 >= 1 } -[M, N] -> { : M >= 1 and N >= 1 } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/dot.st b/test_inputs/codegen/cloog/dot.st new file mode 100644 index 00000000..a9ca44a3 --- /dev/null +++ b/test_inputs/codegen/cloog/dot.st @@ -0,0 +1,10 @@ +domain: "[M, N] -> { S1[0, i1] : i1 <= M and N >= 0 and i1 >= 1; S2[i0, i1] : i0 >= 1 and i1 <= M and i0 <= N and i1 >= 1 }" +child: + context: "[M, N] -> { [] : M >= 1 and N >= 1 }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1] }" + - filter: "[M, N] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/dot2.in b/test_inputs/codegen/cloog/dot2.in deleted file mode 100644 index 8fa8381e..00000000 --- a/test_inputs/codegen/cloog/dot2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S2[i0, i1] -> [i0, i1, 1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S1[i0] -> [i0, 0, 0] : i0 >= 1 and i0 <= M } -[M, N] -> { : M >= 1 and N >= 1 } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/dot2.st b/test_inputs/codegen/cloog/dot2.st new file mode 100644 index 00000000..192d23c3 --- /dev/null +++ b/test_inputs/codegen/cloog/dot2.st @@ -0,0 +1,10 @@ +domain: "[M, N] -> { S1[i0] : i0 >= 1 and i0 <= M; S2[i0, i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M }" +child: + context: "[M, N] -> { [] : M >= 1 and N >= 1 }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(i0)]; S1[i0] -> [(i0)] }, { S2[i0, i1] -> [(i1)]; S1[i0] -> [(0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0] }" + - filter: "[M, N] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/durbin_e_s.in b/test_inputs/codegen/cloog/durbin_e_s.in deleted file mode 100644 index 77d32ad7..00000000 --- a/test_inputs/codegen/cloog/durbin_e_s.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S5[i0, i1, 3] -> [i0, i1, 3, 4] : i1 <= -1 + i0 and i0 <= 10 and i1 >= 1; S8[i0, 0, 3] -> [i0, 0, 3, 7] : i0 >= 1 and i0 <= 9; S2[i0, -7, 0] -> [i0, -7, 0, 1] : i0 >= 2 and i0 <= 10; S3[i0, i1, 1] -> [i0, i1, 1, 2] : i1 >= -7 and i0 <= 10 and i1 <= -9 + i0; S1[10, i1, 4] -> [10, i1, 4, 0] : i1 >= 1 and i1 <= 10; S7[1, 0, 0] -> [1, 0, 0, 6]; S4[1, 0, 0] -> [1, 0, 0, 3]; S6[i0, -9 + i0, 2] -> [i0, -9 + i0, 2, 5] : i0 >= 2 and i0 <= 10 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/durbin_e_s.st b/test_inputs/codegen/cloog/durbin_e_s.st new file mode 100644 index 00000000..8b087670 --- /dev/null +++ b/test_inputs/codegen/cloog/durbin_e_s.st @@ -0,0 +1,16 @@ +domain: "{ S2[i0, -7, 0] : i0 >= 2 and i0 <= 10; S4[1, 0, 0]; S6[i0, -9 + i0, 2] : i0 >= 2 and i0 <= 10; S1[10, i1, 4] : i1 >= 1 and i1 <= 10; S5[i0, i1, 3] : i1 <= -1 + i0 and i0 <= 10 and i1 >= 1; S7[1, 0, 0]; S8[i0, 0, 3] : i0 >= 1 and i0 <= 9; S3[i0, i1, 1] : i1 >= -7 and i0 <= 10 and i1 <= -9 + i0 }" +child: + context: "{ [] }" + child: + schedule: "[{ S6[i0, i1, i2] -> [(i0)]; S8[i0, i1, i2] -> [(i0)]; S5[i0, i1, i2] -> [(i0)]; S4[i0, i1, i2] -> [(i0)]; S7[i0, i1, i2] -> [(i0)]; S3[i0, i1, i2] -> [(i0)]; S1[i0, i1, i2] -> [(i0)]; S2[i0, i1, i2] -> [(i0)] }, { S6[i0, i1, i2] -> [(i1)]; S8[i0, i1, i2] -> [(i1)]; S5[i0, i1, i2] -> [(i1)]; S4[i0, i1, i2] -> [(i1)]; S7[i0, i1, i2] -> [(i1)]; S3[i0, i1, i2] -> [(i1)]; S1[i0, i1, i2] -> [(i1)]; S2[i0, i1, i2] -> [(i1)] }, { S6[i0, i1, i2] -> [(i2)]; S8[i0, i1, i2] -> [(i2)]; S5[i0, i1, i2] -> [(i2)]; S4[i0, i1, i2] -> [(i2)]; S7[i0, i1, i2] -> [(i2)]; S3[i0, i1, i2] -> [(i2)]; S1[i0, i1, i2] -> [(i2)]; S2[i0, i1, i2] -> [(i2)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1, i2] }" + - filter: "{ S2[i0, i1, i2] }" + - filter: "{ S3[i0, i1, i2] }" + - filter: "{ S4[i0, i1, i2] }" + - filter: "{ S5[i0, i1, i2] }" + - filter: "{ S6[i0, i1, i2] }" + - filter: "{ S7[i0, i1, i2] }" + - filter: "{ S8[i0, i1, i2] }" diff --git a/test_inputs/codegen/cloog/emploi.in b/test_inputs/codegen/cloog/emploi.in deleted file mode 100644 index 57016623..00000000 --- a/test_inputs/codegen/cloog/emploi.in +++ /dev/null @@ -1,3 +0,0 @@ -[m, n] -> { S1[i0] -> [i0, 0, 0] : (i0 >= 1 and i0 <= n and i0 <= 2m) or (i0 >= 1 and i0 <= n and i0 >= m); S2[i0, i1] -> [i0, i1, 1] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= m } -[m, n] -> { : } -[m, n] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/emploi.st b/test_inputs/codegen/cloog/emploi.st new file mode 100644 index 00000000..a7f4c265 --- /dev/null +++ b/test_inputs/codegen/cloog/emploi.st @@ -0,0 +1,10 @@ +domain: "[m, n] -> { S1[i0] : (i0 >= 1 and i0 <= n and i0 <= 2m) or (i0 >= m and i0 >= 1 and i0 <= n); S2[i0, i1] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= m }" +child: + context: "[m, n] -> { [] }" + child: + schedule: "[m, n] -> [{ S1[i0] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0] -> [(0)]; S2[i0, i1] -> [(i1)] }]" + options: "[m, n] -> { separate[i0] }" + child: + sequence: + - filter: "[m, n] -> { S1[i0] }" + - filter: "[m, n] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/equality.in b/test_inputs/codegen/cloog/equality.in deleted file mode 100644 index 677fa901..00000000 --- a/test_inputs/codegen/cloog/equality.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, 2i0] -> [i0, 2i0, 0] : i0 >= 0 and i0 <= 5; S2[i0, 4] -> [i0, 4, 1] : i0 >= 0 and i0 <= 5 } -{ : } -{ [i, j, k] -> atomic[o0] } diff --git a/test_inputs/codegen/cloog/equality.st b/test_inputs/codegen/cloog/equality.st new file mode 100644 index 00000000..084689c1 --- /dev/null +++ b/test_inputs/codegen/cloog/equality.st @@ -0,0 +1,10 @@ +domain: "{ S2[i0, 4] : i0 >= 0 and i0 <= 5; S1[i0, 2i0] : i0 >= 0 and i0 <= 5 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "{ atomic[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1] }" + - filter: "{ S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/equality2.in b/test_inputs/codegen/cloog/equality2.in deleted file mode 100644 index 95b3f793..00000000 --- a/test_inputs/codegen/cloog/equality2.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, i1, 1, 2, i0, i5, -999 + i1, i0, -999 + i1, i9, i10] -> [i0, i1, 1, 2, i0, n, -999 + i1, i0, -999 + i1, r, s, 0, 0, 0, 0, 0] : 2s = -998 + i1 and 2n = 2 + i1 and 2i10 = -998 + i1 and 2i5 = 2 + i1 and 2i9 = -998 + i1 and 2r = -998 + i1 and i0 >= 1 and i0 <= 10000 and i1 >= 1000 and i1 <= 1016; S2[i0, i1, -1999 + 2i1, 1, i0, -1000 + 2i1, 1, 2, i0, -499 + i1, -1999 + 2i1, i0, -1999 + 2i1, -999 + i1, -999 + i1] -> [i0, i1, -1999 + 2i1, 1, i0, -1000 + 2i1, 1, 2, i0, -499 + i1, -1999 + 2i1, i0, -1999 + 2i1, -999 + i1, -999 + i1, 1] : i0 >= 1 and i0 <= 10000 and i1 >= 1000 and i1 <= 1008 } -{ : } -{ [i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x] -> atomic[o0] } diff --git a/test_inputs/codegen/cloog/equality2.st b/test_inputs/codegen/cloog/equality2.st new file mode 100644 index 00000000..bbcb3381 --- /dev/null +++ b/test_inputs/codegen/cloog/equality2.st @@ -0,0 +1,10 @@ +domain: "{ S1[i0, i1, 1, 2, i0, i5, -999 + i1, i0, -999 + i1, i9, i10] : 2i5 = 2 + i1 and 2i9 = -998 + i1 and 2i10 = -998 + i1 and i0 >= 1 and i0 <= 10000 and i1 >= 1000 and i1 <= 1016; S2[i0, i1, -1999 + 2i1, 1, i0, -1000 + 2i1, 1, 2, i0, -499 + i1, -1999 + 2i1, i0, -1999 + 2i1, -999 + i1, -999 + i1] : i0 >= 1 and i0 <= 10000 and i1 >= 1000 and i1 <= 1008 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i0)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i0)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i1)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i1)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i2)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i2)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i3)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i3)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i4)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i4)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i5)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i5)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i6)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i6)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i7)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i7)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i8)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i8)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i9)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i9)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(i10)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i10)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(0)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i11)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(0)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i12)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(0)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i13)] }, { S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] -> [(0)]; S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] -> [(i14)] }]" + options: "{ atomic[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10] }" + - filter: "{ S2[i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14] }" diff --git a/test_inputs/codegen/cloog/esced.in b/test_inputs/codegen/cloog/esced.in deleted file mode 100644 index 3bef6fd9..00000000 --- a/test_inputs/codegen/cloog/esced.in +++ /dev/null @@ -1,3 +0,0 @@ -[n, m] -> { S1[i0] -> [i0, 0, 0] : i0 >= 1 and i0 <= m; S2[i0, i1] -> [i0, i1, 1] : i0 >= 1 and i0 <= m and i1 >= 1 and i1 <= n } -[n, m] -> { : } -[n, m] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/esced.st b/test_inputs/codegen/cloog/esced.st new file mode 100644 index 00000000..f48ccf6a --- /dev/null +++ b/test_inputs/codegen/cloog/esced.st @@ -0,0 +1,10 @@ +domain: "[n, m] -> { S1[i0] : i0 >= 1 and i0 <= m; S2[i0, i1] : i0 >= 1 and i0 <= m and i1 >= 1 and i1 <= n }" +child: + context: "[n, m] -> { [] }" + child: + schedule: "[n, m] -> [{ S2[i0, i1] -> [(i0)]; S1[i0] -> [(i0)] }, { S2[i0, i1] -> [(i1)]; S1[i0] -> [(0)] }]" + options: "[n, m] -> { separate[i0] }" + child: + sequence: + - filter: "[n, m] -> { S1[i0] }" + - filter: "[n, m] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/ex1.in b/test_inputs/codegen/cloog/ex1.in deleted file mode 100644 index 457b834a..00000000 --- a/test_inputs/codegen/cloog/ex1.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S2[i0, i1] -> [i0, i1, 1] : i0 >= 15 and i0 <= n and i1 >= 10 and i1 <= n; S1[i0, i1] -> [i0, i1, 0] : i0 >= 0 and i0 <= n and i1 >= 0 and i1 <= -15 + n } -[n] -> { : n >= 25 } -[n] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/ex1.st b/test_inputs/codegen/cloog/ex1.st new file mode 100644 index 00000000..ea025388 --- /dev/null +++ b/test_inputs/codegen/cloog/ex1.st @@ -0,0 +1,10 @@ +domain: "[n] -> { S1[i0, i1] : i0 >= 0 and i0 <= n and i1 >= 0 and i1 <= -15 + n; S2[i0, i1] : i0 >= 15 and i0 <= n and i1 >= 10 and i1 <= n }" +child: + context: "[n] -> { [] : n >= 25 }" + child: + schedule: "[n] -> [{ S2[i0, i1] -> [(i0)]; S1[i0, i1] -> [(i0)] }, { S2[i0, i1] -> [(i1)]; S1[i0, i1] -> [(i1)] }]" + options: "[n] -> { separate[i0] }" + child: + sequence: + - filter: "[n] -> { S1[i0, i1] }" + - filter: "[n] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/faber.c b/test_inputs/codegen/cloog/faber.c index 4e553d84..b100b7b3 100644 --- a/test_inputs/codegen/cloog/faber.c +++ b/test_inputs/codegen/cloog/faber.c @@ -37,17 +37,16 @@ for (int c1 = 1; c1 <= 18; c1 += 1) { for (int c2 = -8 * c1; c2 <= min(6, -8 * c1 + 24); c2 += 1) S3(c0, c1, c2); - if (c1 == 2) { + if (c0 <= 34 && c1 == 1) { + S3(c0, 1, 7); + } else if (c1 == 2) { S3(c0, 2, 7); } else if (c0 >= 35 && c1 == 1) { S3(c0, 1, 7); S7(c0, 1, 7); - } else if (c0 <= 34 && c1 == 1) - S3(c0, 1, 7); + } for (int c2 = 8; c2 <= min(-8 * c1 + 24, c1 - (6 * c0 + 77) / 77 + 12); c2 += 1) S3(c0, c1, c2); - for (int c2 = max(-8 * c1 + 25, c1 - (6 * c0 + 77) / 77 + 13); c2 <= c1 + 12; c2 += 1) - S6(c0, c1, c2); if (c1 == 1) { for (int c2 = -((6 * c0 + 77) / 77) + 14; c2 <= 13; c2 += 1) { S3(c0, 1, c2); @@ -56,6 +55,8 @@ for (int c2 = 14; c2 <= 16; c2 += 1) S3(c0, 1, c2); } + for (int c2 = max(-8 * c1 + 25, c1 - (6 * c0 + 77) / 77 + 13); c2 <= c1 + 12; c2 += 1) + S6(c0, c1, c2); for (int c2 = c1 - (3 * c0 + 14) / 14 + 49; c2 <= c1 + 48; c2 += 1) S1(c0, c1, c2); } @@ -67,25 +68,32 @@ } } for (int c0 = 37; c0 <= 218; c0 += 1) { - if (c0 <= 148) { - for (int c1 = (c0 + 5) / 14 - 8; c1 < c0 / 14 - 5; c1 += 1) { - if (c0 <= 46 && c1 == -3) - S7(c0, -3, 6); - if (77 * ((3 * c1 + 18) / 5) + 216 >= 6 * c0) - S6(c0, c1, -((-2 * c1 + 3) / 5) + 9); - for (int c2 = c1 + 24; c2 <= -2 * c1 + 24; c2 += 1) - S2(c0, c1, c2); + for (int c1 = (c0 + 5) / 14 - 8; c1 < min(0, c0 / 14 - 5); c1 += 1) { + if (c0 <= 46 && c1 == -3) + S7(c0, -3, 6); + if (-77 * ((-3 * c1 + 1) / 5) + 447 >= 6 * c0) + S6(c0, c1, -((-2 * c1 + 3) / 5) + 9); + for (int c2 = c1 + 24; c2 <= -2 * c1 + 24; c2 += 1) + S2(c0, c1, c2); + for (int c2 = -2 * c1 + 30; c2 <= c1 - (3 * c0 + 17) / 14 + 56; c2 += 1) + S1(c0, c1, c2); + } + if (c0 <= 148) + for (int c1 = max(0, (c0 + 5) / 14 - 8); c1 < c0 / 14 - 5; c1 += 1) { + if (c1 == 0) + S2(c0, 0, 24); for (int c2 = max(c1 + 24, -2 * c1 + 30); c2 <= c1 - (3 * c0 + 17) / 14 + 56; c2 += 1) S1(c0, c1, c2); } - if (c0 % 14 >= 9) { - if (c0 <= 41) - S7(c0, -3, 6); - if (c0 <= 69) - S6(c0, c0 / 14 - 5, 8); - for (int c2 = max((c0 - 28) / 14 + 21, (c0 - 28) / 14 - (3 * c0 + 14) / 14 + 46); c2 <= (c0 - 28) / 14 - (3 * c0 + 17) / 14 + 53; c2 += 1) - S1(c0, c0 / 14 - 5, c2); - } + if (c0 >= 79 && c0 % 14 >= 9) { + for (int c2 = max((c0 - 70) / 14 + 24, (c0 - 70) / 14 - (3 * c0 + 14) / 14 + 49); c2 <= (c0 - 70) / 14 - (3 * c0 + 17) / 14 + 56; c2 += 1) + S1(c0, c0 / 14 - 5, c2); + } else if (c0 <= 69 && c0 % 14 >= 9) { + if (c0 <= 41) + S7(c0, -3, 6); + S6(c0, c0 / 14 - 5, 8); + for (int c2 = -((-c0 + 83) / 14) - (3 * c0 + 14) / 14 + 49; c2 <= -((-c0 + 83) / 14) - (3 * c0 + 17) / 14 + 56; c2 += 1) + S1(c0, c0 / 14 - 5, c2); } for (int c1 = (c0 + 5) / 14 - 5; c1 < 0; c1 += 1) { if (7 * c1 + 114 >= 2 * c0) @@ -96,9 +104,9 @@ S1(c0, c1, c2); } for (int c1 = max(0, (c0 + 5) / 14 - 5); c1 < c0 / 14 - 2; c1 += 1) { - for (int c2 = max(c1, -2 * c1 + 6); c2 <= min(-2 * c1 + 24, (2 * c0 - 7 * c1 - 10) / 21 + 1); c2 += 1) + for (int c2 = max(c1, -2 * c1 + 6); c2 <= min(min(-2 * c1 + 24, c1 - (6 * c0 + 91) / 77 + 15), (2 * c0 - 7 * c1 - 10) / 21 + 1); c2 += 1) S9(c0, c1, c2); - if (c1 >= 1 && c1 <= 6 && 14 * c1 + 46 >= c0) + if (c1 >= 1 && c1 <= 5 && 14 * c1 + 46 >= c0) S9(c0, c1, c1 + 5); for (int c2 = max(c1 + 6, (2 * c0 - 7 * c1 - 10) / 21 + 2); c2 <= (2 * c1 + 1) / 5 + 7; c2 += 1) { S7(c0, c1, c2); @@ -110,7 +118,7 @@ S6(c0, c1, c2); S9(c0, c1, c2); } - for (int c2 = max(max(c1 + 6, c1 - (6 * c0 + 91) / 77 + 16), (2 * c0 - 7 * c1 - 10) / 21 + 2); c2 <= -2 * c1 + 24; c2 += 1) + for (int c2 = c1 - (6 * c0 + 91) / 77 + 16; c2 <= -2 * c1 + 24; c2 += 1) S9(c0, c1, c2); for (int c2 = max(c1, -2 * c1 + 30); c2 <= min(c1 + 24, c1 - (3 * c0 + 17) / 14 + 47); c2 += 1) S8(c0, c1, c2); @@ -118,10 +126,10 @@ S1(c0, c1, c2); } for (int c1 = c0 / 14 - 2; c1 <= 18; c1 += 1) { - for (int c2 = c1 + 6; c2 <= min((2 * c1 + 1) / 5 + 7, (2 * c0 - 7 * c1 + 63) / 21 + 1); c2 += 1) - S7(c0, c1, c2); for (int c2 = max(6, (c0 + 5) / 14 + 1); c2 <= min(min(c1, c0 / 14 + 3), -c1 + c1 / 2 + 18); c2 += 1) S5(c0, c1, c2); + for (int c2 = c1 + 6; c2 <= min((2 * c1 + 1) / 5 + 7, (2 * c0 - 7 * c1 + 63) / 21 + 1); c2 += 1) + S7(c0, c1, c2); for (int c2 = max(max(c1 + 6, c1 - (6 * c0 + 77) / 77 + 13), (2 * c1 + 1) / 5 + 9); c2 <= c1 - (6 * c0 + 91) / 77 + 15; c2 += 1) S6(c0, c1, c2); for (int c2 = max(c1 + (3 * c0 + 3) / 14 - 40, -c1 + (c1 + 1) / 2 + 21); c2 <= min(c1, c1 + 3 * c0 / 14 - 33); c2 += 1) diff --git a/test_inputs/codegen/cloog/faber.in b/test_inputs/codegen/cloog/faber.in deleted file mode 100644 index 4f78a556..00000000 --- a/test_inputs/codegen/cloog/faber.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S5[idx4, idx5, idx6] -> [idx4, idx5, idx6, 4] : 14idx6 <= 42 + idx4 and 14idx6 >= 6 + idx4 and idx6 <= idx5 and idx6 >= -12 + idx5 and idx6 >= 6 and idx6 <= 30 and 2idx6 <= 36 - idx5; S8[idx4, idx5, idx6] -> [idx4, idx5, idx6, 7] : 14idx6 >= 546 - 3idx4 + 14idx5 and 14idx6 <= 654 - 3idx4 + 14idx5 and idx6 >= idx5 and idx6 <= 24 + idx5 and idx5 >= 0 and idx5 <= 24 and idx6 >= 30 - 2idx5; S2[idx4, idx5, idx6] -> [idx4, idx5, idx6, 1] : 14idx5 <= -84 + idx4 and 14idx5 >= -120 + idx4 and idx6 >= 24 + idx5 and idx6 <= 48 + idx5 and idx5 >= -6 and idx5 <= 18 and idx6 <= 24 - 2idx5; S10[idx4, idx5, idx6] -> [idx4, idx5, idx6, 9] : 7idx6 <= idx4 - 28idx5 and 7idx6 >= -36 + idx4 - 28idx5 and idx6 >= idx5 and idx6 <= 24 + idx5 and idx5 >= 0 and idx5 <= 24 and idx6 <= -2idx5; S3[idx4, idx5, idx6] -> [idx4, idx5, idx6, 2] : idx4 >= 0 and idx4 <= 36 and idx6 >= -8idx5 and idx6 <= 24 - 8idx5 and idx5 >= 0 and idx5 <= 24; S1[idx4, idx5, idx6] -> [idx4, idx5, idx6, 0] : 14idx6 >= 672 - 3idx4 + 14idx5 and 14idx6 <= 780 - 3idx4 + 14idx5 and idx6 >= 24 + idx5 and idx6 <= 48 + idx5 and idx5 >= -6 and idx5 <= 18 and idx6 >= 30 - 2idx5; S7[idx4, idx5, idx6] -> [idx4, idx5, idx6, 6] : 21idx6 <= 84 + 2idx4 - 7idx5 and 21idx6 >= 12 + 2idx4 - 7idx5 and idx6 <= 12 + idx5 and idx6 >= 6 + idx5 and idx6 >= 6 and idx6 <= 30 and 5idx6 <= 36 + 2idx5; S9[idx4, idx5, idx6] -> [idx4, idx5, idx6, 8] : 14idx5 <= -42 + idx4 and 14idx5 >= -78 + idx4 and idx6 >= idx5 and idx6 <= 24 + idx5 and idx5 >= 0 and idx5 <= 24 and idx6 <= 24 - 2idx5 and idx6 >= 6 - 2idx5; S4[idx4, idx5, idx6] -> [idx4, idx5, idx6, 3] : 14idx6 <= -462 + 3idx4 + 14idx5 and 14idx6 >= -570 + 3idx4 + 14idx5 and idx6 <= idx5 and idx6 >= -12 + idx5 and idx6 >= 6 and idx6 <= 30 and 2idx6 >= 42 - idx5; S6[idx4, idx5, idx6] -> [idx4, idx5, idx6, 5] : 77idx6 >= 924 - 6idx4 + 77idx5 and 77idx6 <= 1140 - 6idx4 + 77idx5 and idx6 <= 12 + idx5 and idx6 >= 6 + idx5 and idx6 >= 6 and idx6 <= 30 and 5idx6 >= 42 + 2idx5 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/faber.st b/test_inputs/codegen/cloog/faber.st new file mode 100644 index 00000000..f8008946 --- /dev/null +++ b/test_inputs/codegen/cloog/faber.st @@ -0,0 +1,18 @@ +domain: "{ S2[idx4, idx5, idx6] : 14idx5 <= -84 + idx4 and 14idx5 >= -120 + idx4 and idx6 >= 24 + idx5 and idx6 <= 48 + idx5 and idx5 >= -6 and idx5 <= 18 and idx6 <= 24 - 2idx5; S4[idx4, idx5, idx6] : 14idx6 <= -462 + 3idx4 + 14idx5 and 14idx6 >= -570 + 3idx4 + 14idx5 and idx6 <= idx5 and idx6 >= -12 + idx5 and idx6 >= 6 and idx6 <= 30 and 2idx6 >= 42 - idx5; S6[idx4, idx5, idx6] : 77idx6 >= 924 - 6idx4 + 77idx5 and 77idx6 <= 1140 - 6idx4 + 77idx5 and idx6 <= 12 + idx5 and idx6 >= 6 + idx5 and idx6 >= 6 and idx6 <= 30 and 5idx6 >= 42 + 2idx5; S1[idx4, idx5, idx6] : 14idx6 >= 672 - 3idx4 + 14idx5 and 14idx6 <= 780 - 3idx4 + 14idx5 and idx6 >= 24 + idx5 and idx6 <= 48 + idx5 and idx5 >= -6 and idx5 <= 18 and idx6 >= 30 - 2idx5; S5[idx4, idx5, idx6] : 14idx6 <= 42 + idx4 and 14idx6 >= 6 + idx4 and idx6 <= idx5 and idx6 >= -12 + idx5 and idx6 >= 6 and idx6 <= 30 and 2idx6 <= 36 - idx5; S7[idx4, idx5, idx6] : 21idx6 <= 84 + 2idx4 - 7idx5 and 21idx6 >= 12 + 2idx4 - 7idx5 and idx6 <= 12 + idx5 and idx6 >= 6 + idx5 and idx6 >= 6 and idx6 <= 30 and 5idx6 <= 36 + 2idx5; S8[idx4, idx5, idx6] : 14idx6 >= 546 - 3idx4 + 14idx5 and 14idx6 <= 654 - 3idx4 + 14idx5 and idx6 >= idx5 and idx6 <= 24 + idx5 and idx5 >= 0 and idx5 <= 24 and idx6 >= 30 - 2idx5; S3[idx4, idx5, idx6] : idx4 >= 0 and idx4 <= 36 and idx6 >= -8idx5 and idx6 <= 24 - 8idx5 and idx5 >= 0 and idx5 <= 24; S9[idx4, idx5, idx6] : 14idx5 <= -42 + idx4 and 14idx5 >= -78 + idx4 and idx6 >= idx5 and idx6 <= 24 + idx5 and idx5 >= 0 and idx5 <= 24 and idx6 <= 24 - 2idx5 and idx6 >= 6 - 2idx5; S10[idx4, idx5, idx6] : 7idx6 <= idx4 - 28idx5 and 7idx6 >= -36 + idx4 - 28idx5 and idx6 >= idx5 and idx6 <= 24 + idx5 and idx5 >= 0 and idx5 <= 24 and idx6 <= -2idx5 }" +child: + context: "{ [] }" + child: + schedule: "[{ S6[idx4, idx5, idx6] -> [(idx4)]; S8[idx4, idx5, idx6] -> [(idx4)]; S5[idx4, idx5, idx6] -> [(idx4)]; S9[idx4, idx5, idx6] -> [(idx4)]; S4[idx4, idx5, idx6] -> [(idx4)]; S10[idx4, idx5, idx6] -> [(idx4)]; S7[idx4, idx5, idx6] -> [(idx4)]; S3[idx4, idx5, idx6] -> [(idx4)]; S1[idx4, idx5, idx6] -> [(idx4)]; S2[idx4, idx5, idx6] -> [(idx4)] }, { S6[idx4, idx5, idx6] -> [(idx5)]; S8[idx4, idx5, idx6] -> [(idx5)]; S5[idx4, idx5, idx6] -> [(idx5)]; S9[idx4, idx5, idx6] -> [(idx5)]; S4[idx4, idx5, idx6] -> [(idx5)]; S10[idx4, idx5, idx6] -> [(idx5)]; S7[idx4, idx5, idx6] -> [(idx5)]; S3[idx4, idx5, idx6] -> [(idx5)]; S1[idx4, idx5, idx6] -> [(idx5)]; S2[idx4, idx5, idx6] -> [(idx5)] }, { S6[idx4, idx5, idx6] -> [(idx6)]; S8[idx4, idx5, idx6] -> [(idx6)]; S5[idx4, idx5, idx6] -> [(idx6)]; S9[idx4, idx5, idx6] -> [(idx6)]; S4[idx4, idx5, idx6] -> [(idx6)]; S10[idx4, idx5, idx6] -> [(idx6)]; S7[idx4, idx5, idx6] -> [(idx6)]; S3[idx4, idx5, idx6] -> [(idx6)]; S1[idx4, idx5, idx6] -> [(idx6)]; S2[idx4, idx5, idx6] -> [(idx6)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[idx4, idx5, idx6] }" + - filter: "{ S2[idx4, idx5, idx6] }" + - filter: "{ S3[idx4, idx5, idx6] }" + - filter: "{ S4[idx4, idx5, idx6] }" + - filter: "{ S5[idx4, idx5, idx6] }" + - filter: "{ S6[idx4, idx5, idx6] }" + - filter: "{ S7[idx4, idx5, idx6] }" + - filter: "{ S8[idx4, idx5, idx6] }" + - filter: "{ S9[idx4, idx5, idx6] }" + - filter: "{ S10[idx4, idx5, idx6] }" diff --git a/test_inputs/codegen/cloog/forwardsub-1-1-2.in b/test_inputs/codegen/cloog/forwardsub-1-1-2.in deleted file mode 100644 index ede8856d..00000000 --- a/test_inputs/codegen/cloog/forwardsub-1-1-2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [i0, i1, 1] : i1 <= -1 + i0 and i1 >= 2 and i0 <= M; S4[i0, i0] -> [i0, i0, 3] : M >= 3 and i0 <= M and i0 >= 2; S1[i0, 1] -> [i0, 1, 0] : M >= 3 and i0 <= M and i0 >= 2; S3[1, 1] -> [1, 1, 2] : M >= 3 } -[M] -> { : M >= 3 } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/forwardsub-1-1-2.st b/test_inputs/codegen/cloog/forwardsub-1-1-2.st new file mode 100644 index 00000000..152e6b00 --- /dev/null +++ b/test_inputs/codegen/cloog/forwardsub-1-1-2.st @@ -0,0 +1,12 @@ +domain: "[M] -> { S4[i0, i0] : M >= 3 and i0 <= M and i0 >= 2; S1[i0, 1] : M >= 3 and i0 <= M and i0 >= 2; S3[1, 1] : M >= 3; S2[i0, i1] : i1 <= -1 + i0 and i1 >= 2 and i0 <= M }" +child: + context: "[M] -> { [] : M >= 3 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)]; S4[i0, i1] -> [(i0)]; S3[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S4[i0, i1] -> [(i1)]; S3[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + - filter: "[M] -> { S2[i0, i1] }" + - filter: "[M] -> { S3[i0, i1] }" + - filter: "[M] -> { S4[i0, i1] }" diff --git a/test_inputs/codegen/cloog/forwardsub-2-1-2-3.in b/test_inputs/codegen/cloog/forwardsub-2-1-2-3.in deleted file mode 100644 index 57863cc5..00000000 --- a/test_inputs/codegen/cloog/forwardsub-2-1-2-3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[1, 1, i2] -> [1, 1, i2, 0] : M >= 3 and i2 <= M and i2 >= 2; S2[i0, 1, i2] -> [i0, 1, i2, 1] : i2 >= 1 + i0 and i0 >= 2 and i2 <= M; S4[i0, 0] -> [i0, 0, 0, 3] : i0 >= 2 and M >= 3 and i0 <= M; S3[1, 0] -> [1, 0, 0, 2] : M >= 3 } -[M] -> { : M >= 3 } -[M] -> { [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/forwardsub-2-1-2-3.st b/test_inputs/codegen/cloog/forwardsub-2-1-2-3.st new file mode 100644 index 00000000..76f08315 --- /dev/null +++ b/test_inputs/codegen/cloog/forwardsub-2-1-2-3.st @@ -0,0 +1,12 @@ +domain: "[M] -> { S4[i0, 0] : i0 >= 2 and M >= 3 and i0 <= M; S3[1, 0] : M >= 3; S2[i0, 1, i2] : i2 >= 1 + i0 and i0 >= 2 and i2 <= M; S1[1, 1, i2] : M >= 3 and i2 <= M and i2 >= 2 }" +child: + context: "[M] -> { [] : M >= 3 }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i0)]; S4[i0, i1] -> [(i0)]; S3[i0, i1] -> [(i0)]; S2[i0, i1, i2] -> [(i0)] }, { S1[i0, i1, i2] -> [(i1)]; S4[i0, i1] -> [(i1)]; S3[i0, i1] -> [(i1)]; S2[i0, i1, i2] -> [(i1)] }, { S1[i0, i1, i2] -> [(i2)]; S4[i0, i1] -> [(0)]; S3[i0, i1] -> [(0)]; S2[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1, i2] }" + - filter: "[M] -> { S2[i0, i1, i2] }" + - filter: "[M] -> { S3[i0, i1] }" + - filter: "[M] -> { S4[i0, i1] }" diff --git a/test_inputs/codegen/cloog/forwardsub-3-1-2.in b/test_inputs/codegen/cloog/forwardsub-3-1-2.in deleted file mode 100644 index c40383d8..00000000 --- a/test_inputs/codegen/cloog/forwardsub-3-1-2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [i0, i1, 1] : 2i1 <= -1 + i0 and i1 >= 2 and i1 >= -M + i0; S4[i0, i1] -> [i0, j, 3] : 2j = i0 and 2i1 = i0 and M >= 3 and i0 <= 2M and i0 >= 4; S1[i0, 1] -> [i0, 1, 0] : M >= 3 and i0 <= 1 + M and i0 >= 3; S3[2, 1] -> [2, 1, 2] : M >= 3 } -[M] -> { : M >= 3 } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/forwardsub-3-1-2.st b/test_inputs/codegen/cloog/forwardsub-3-1-2.st new file mode 100644 index 00000000..35677b4e --- /dev/null +++ b/test_inputs/codegen/cloog/forwardsub-3-1-2.st @@ -0,0 +1,12 @@ +domain: "[M] -> { S4[i0, i1] : 2i1 = i0 and M >= 3 and i0 <= 2M and i0 >= 4; S1[i0, 1] : M >= 3 and i0 <= 1 + M and i0 >= 3; S3[2, 1] : M >= 3; S2[i0, i1] : 2i1 <= -1 + i0 and i1 >= 2 and i1 >= -M + i0 }" +child: + context: "[M] -> { [] : M >= 3 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)]; S4[i0, i1] -> [(i0)]; S3[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S4[i0, i1] -> [(i1)]; S3[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + - filter: "[M] -> { S2[i0, i1] }" + - filter: "[M] -> { S3[i0, i1] }" + - filter: "[M] -> { S4[i0, i1] }" diff --git a/test_inputs/codegen/cloog/gauss.c b/test_inputs/codegen/cloog/gauss.c index 13a8e137..4bbe42cb 100644 --- a/test_inputs/codegen/cloog/gauss.c +++ b/test_inputs/codegen/cloog/gauss.c @@ -1,7 +1,7 @@ for (int c0 = 1; c0 < M; c0 += 1) for (int c1 = c0 + 1; c1 <= M; c1 += 1) { - for (int c3 = c0 + 1; c3 <= M; c3 += 1) - S2(c0, c3, c1); for (int c3 = 1; c3 < c0; c3 += 1) S1(c0, c3, c1); + for (int c3 = c0 + 1; c3 <= M; c3 += 1) + S2(c0, c3, c1); } diff --git a/test_inputs/codegen/cloog/gauss.in b/test_inputs/codegen/cloog/gauss.in deleted file mode 100644 index 439e72e7..00000000 --- a/test_inputs/codegen/cloog/gauss.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1, i2] -> [i0, i2] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= -1 + i0 and i2 >= 1 + i0 and i2 <= M; S2[i0, i1, i2] -> [i0, i2] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M and i2 >= 1 + i0 and i2 <= M } -[M] -> { : } -[M] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/gauss.st b/test_inputs/codegen/cloog/gauss.st new file mode 100644 index 00000000..7173a4cd --- /dev/null +++ b/test_inputs/codegen/cloog/gauss.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S2[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M and i2 >= 1 + i0 and i2 <= M; S1[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= -1 + i0 and i2 >= 1 + i0 and i2 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i0)]; S2[i0, i1, i2] -> [(i0)] }, { S1[i0, i1, i2] -> [(i2)]; S2[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/gesced.in b/test_inputs/codegen/cloog/gesced.in deleted file mode 100644 index 6043f4b3..00000000 --- a/test_inputs/codegen/cloog/gesced.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S3[i0, i1] -> [2N + i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S2[i0, i1] -> [N + i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S1[i0] -> [i0] : i0 >= 1 and i0 <= N } -[M, N] -> { : N <= M and M >= 2 and N >= 2 } -[M, N] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/gesced.st b/test_inputs/codegen/cloog/gesced.st new file mode 100644 index 00000000..3534f754 --- /dev/null +++ b/test_inputs/codegen/cloog/gesced.st @@ -0,0 +1,6 @@ +domain: "[M, N] -> { S3[i0, i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S1[i0] : i0 >= 1 and i0 <= N; S2[i0, i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M }" +child: + context: "[M, N] -> { [] : N <= M and M >= 2 and N >= 2 }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(N + i1)]; S3[i0, i1] -> [(2N + i1)]; S1[i0] -> [(i0)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/gesced2.in b/test_inputs/codegen/cloog/gesced2.in deleted file mode 100644 index a5d5bd27..00000000 --- a/test_inputs/codegen/cloog/gesced2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1] -> [i0, i1] : i0 >= 1 and i0 <= M and i1 >= 5 and i1 <= -10 + M; S2[i0, i1] -> [i1, i0 - i1] : i0 >= 1 and i0 <= M and i1 >= 5 and i1 <= -10 + M } -[M] -> { : M >= 16 } -[M] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/gesced2.st b/test_inputs/codegen/cloog/gesced2.st new file mode 100644 index 00000000..c5f41bf1 --- /dev/null +++ b/test_inputs/codegen/cloog/gesced2.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 5 and i1 <= -10 + M; S2[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 5 and i1 <= -10 + M }" +child: + context: "[M] -> { [] : M >= 16 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i1)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i0 - i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/gesced3.in b/test_inputs/codegen/cloog/gesced3.in deleted file mode 100644 index 29f57f32..00000000 --- a/test_inputs/codegen/cloog/gesced3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S2[i0] -> [2M + i0] : i0 >= 1 and i0 <= N; S1[i0] -> [M + i0] : i0 >= 1 and i0 <= N } -[M, N] -> { : N >= M and M >= 2 } -[M, N] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/gesced3.st b/test_inputs/codegen/cloog/gesced3.st new file mode 100644 index 00000000..cb0a2853 --- /dev/null +++ b/test_inputs/codegen/cloog/gesced3.st @@ -0,0 +1,6 @@ +domain: "[M, N] -> { S1[i0] : i0 >= 1 and i0 <= N; S2[i0] : i0 >= 1 and i0 <= N }" +child: + context: "[M, N] -> { [] : N >= M and M >= 2 }" + child: + schedule: "[M, N] -> [{ S2[i0] -> [(2M + i0)]; S1[i0] -> [(M + i0)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/guide.in b/test_inputs/codegen/cloog/guide.in deleted file mode 100644 index 38c418c6..00000000 --- a/test_inputs/codegen/cloog/guide.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0] -> [i0, 0] : (i0 >= 1 and i0 <= N and i0 <= 2M) or (i0 >= 1 and i0 <= N and i0 >= M); S2[i0] -> [i0, 1] : i0 >= 1 + N and i0 <= 2N } -[M, N] -> { : } -[M, N] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/guide.st b/test_inputs/codegen/cloog/guide.st new file mode 100644 index 00000000..3ca5c6ec --- /dev/null +++ b/test_inputs/codegen/cloog/guide.st @@ -0,0 +1,10 @@ +domain: "[M, N] -> { S1[i0] : (i0 >= 1 and i0 <= N and i0 <= 2M) or (i0 >= M and i0 >= 1 and i0 <= N); S2[i0] : i0 >= 1 + N and i0 <= 2N }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S2[i0] -> [(i0)]; S1[i0] -> [(i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0] }" + - filter: "[M, N] -> { S2[i0] }" diff --git a/test_inputs/codegen/cloog/iftest.in b/test_inputs/codegen/cloog/iftest.in deleted file mode 100644 index 741399d4..00000000 --- a/test_inputs/codegen/cloog/iftest.in +++ /dev/null @@ -1,3 +0,0 @@ -[m, n] -> { S1[i0] -> [i0, 0] : (i0 >= 1 and i0 <= n and i0 >= m) or (i0 >= 1 and i0 <= n and i0 <= 2m) } -[m, n] -> { : } -[m, n] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/iftest.st b/test_inputs/codegen/cloog/iftest.st new file mode 100644 index 00000000..cd26fab4 --- /dev/null +++ b/test_inputs/codegen/cloog/iftest.st @@ -0,0 +1,6 @@ +domain: "[m, n] -> { S1[i0] : (i0 >= m and i0 >= 1 and i0 <= n) or (i0 >= 1 and i0 <= n and i0 <= 2m) }" +child: + context: "[m, n] -> { [] }" + child: + schedule: "[m, n] -> [{ S1[i0] -> [(i0)] }]" + options: "[m, n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/iftest2.in b/test_inputs/codegen/cloog/iftest2.in deleted file mode 100644 index a2e3212e..00000000 --- a/test_inputs/codegen/cloog/iftest2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0, i1] -> [i0, i1, 0] : (i0 >= 1 and i0 <= N and i0 >= M and i1 >= 1 and i1 <= M) or (i0 >= 1 and i0 <= N and i0 <= 2M and i1 >= 1 and i1 <= M) } -[M, N] -> { : } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/iftest2.st b/test_inputs/codegen/cloog/iftest2.st new file mode 100644 index 00000000..f073f5cf --- /dev/null +++ b/test_inputs/codegen/cloog/iftest2.st @@ -0,0 +1,6 @@ +domain: "[M, N] -> { S1[i0, i1] : (i0 >= M and i0 <= N and i1 >= 1 and i1 <= M) or (i0 >= 1 and i0 <= N and i0 <= 2M and i1 >= 1 and i1 <= M) }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/infinite2.in b/test_inputs/codegen/cloog/infinite2.in deleted file mode 100644 index 64fb5d55..00000000 --- a/test_inputs/codegen/cloog/infinite2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S2[i0, i1] -> [i0, i1, 1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S1[i0] -> [i0, 0, 0] : i0 >= 1 } -[M, N] -> { : M >= 1 and N >= 1 } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/infinite2.st b/test_inputs/codegen/cloog/infinite2.st new file mode 100644 index 00000000..7bd85d37 --- /dev/null +++ b/test_inputs/codegen/cloog/infinite2.st @@ -0,0 +1,10 @@ +domain: "[M, N] -> { S1[i0] : i0 >= 1; S2[i0, i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M }" +child: + context: "[M, N] -> { [] : M >= 1 and N >= 1 }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(i0)]; S1[i0] -> [(i0)] }, { S2[i0, i1] -> [(i1)]; S1[i0] -> [(0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0] }" + - filter: "[M, N] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/jacobi-shared.in b/test_inputs/codegen/cloog/jacobi-shared.in deleted file mode 100644 index d6153244..00000000 --- a/test_inputs/codegen/cloog/jacobi-shared.in +++ /dev/null @@ -1,3 +0,0 @@ -[T, N, h0, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { S1[i0, i1] -> [1 - g1 + i0, 1 - g2 + i1, t0, t1] : exists (e0 = [(-1 + h0)/2], e1 = [(-2016b0 - g1)/2048], e2 = [(-992b1 - g2)/1024], e3 = [(-1 + t0 - i0)/16], e4 = [(-1 + t1 - i1)/32]: g0 = h0 and 2e0 = -1 + h0 and 2048e1 = -2016b0 - g1 and 1024e2 = -992b1 - g2 and 16e3 = -1 + t0 - i0 and 32e4 = -1 + t1 - i1 and h0 >= 1 and h0 <= -1 + 2T and i0 >= 2 and i0 <= -2 + N and i1 >= 2 and i1 <= -2 + N and b1 <= 31 and b1 >= 0 and b0 <= 63 and b0 >= 0 and i1 <= 31 + g2 and i1 >= g2 and N >= 4 and i0 >= g1 and i0 <= 31 + g1 and g2 <= -2 + N and g2 >= -29 and g1 <= -2 + N and g1 >= -29 and g1 >= 32b0 and g2 >= 32b1 and 32b0 <= -2 + N and 32b1 <= -2 + N and t0 >= 0 and t0 <= 15 and t1 >= 0 and t1 <= 31) } -[T, N, h0, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { : exists (e0 = [(-32b0 + g1)/2048], e1 = [(-32b1 + g2)/1024]: g0 = h0 and 2048e0 = -32b0 + g1 and 1024e1 = -32b1 + g2 and g2 <= -2 + N and g2 >= -29 and g1 <= -2 + N and g1 >= -29 and b1 >= 0 and b1 <= 31 and b0 <= 63 and 32b1 <= -2 + N and 32b0 <= -2 + N and b0 >= 0 and N >= 4 and h0 >= 0 and h0 <= -1 + 2T and g2 >= 32b1 and g1 >= 32b0 and t0 >= 0 and t0 <= 15 and t1 >= 0 and t1 <= 31) } -[T, N, h0, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { [i, j, k, l] -> separate[x] : x >= 3 } diff --git a/test_inputs/codegen/cloog/jacobi-shared.st b/test_inputs/codegen/cloog/jacobi-shared.st new file mode 100644 index 00000000..73f5dd87 --- /dev/null +++ b/test_inputs/codegen/cloog/jacobi-shared.st @@ -0,0 +1,6 @@ +domain: "[T, N, h0, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { S1[i0, i1] : exists (e0 = floor((-1 + h0)/2), e1 = floor((-32b0 + g1)/2048), e2 = floor((-32b1 + g2)/1024), e3 = floor((-15 - t0 + i0)/16), e4 = floor((-31 - t1 + i1)/32): g0 = h0 and 2e0 = -1 + h0 and 2048e1 = -32b0 + g1 and 1024e2 = -32b1 + g2 and 16e3 = -15 - t0 + i0 and 32e4 = -31 - t1 + i1 and h0 >= 1 and h0 <= -1 + 2T and i0 >= 2 and i0 <= -2 + N and i1 >= 2 and i1 <= -2 + N and b1 <= 31 and b1 >= 0 and b0 <= 63 and b0 >= 0 and i1 <= 31 + g2 and i1 >= g2 and N >= 4 and i0 >= g1 and i0 <= 31 + g1 and g2 <= -2 + N and g2 >= -29 and g1 <= -2 + N and g1 >= -29 and g1 >= 32b0 and g2 >= 32b1 and 32b0 <= -2 + N and 32b1 <= -2 + N and t0 >= 0 and t0 <= 15 and t1 >= 0 and t1 <= 31) }" +child: + context: "[T, N, h0, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { [] : exists (e0 = floor((-32b0 + g1)/2048), e1 = floor((-32b1 + g2)/1024): g0 = h0 and 2048e0 = -32b0 + g1 and 1024e1 = -32b1 + g2 and g2 <= -2 + N and g2 >= -29 and g1 <= -2 + N and g1 >= -29 and b1 >= 0 and b1 <= 31 and b0 <= 63 and 32b1 <= -2 + N and 32b0 <= -2 + N and b0 >= 0 and N >= 4 and h0 >= 0 and h0 <= -1 + 2T and g2 >= 32b1 and g1 >= 32b0 and t0 >= 0 and t0 <= 15 and t1 >= 0 and t1 <= 31) }" + child: + schedule: "[T, N, h0, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> [{ S1[i0, i1] -> [(1 - g1 + i0)] }, { S1[i0, i1] -> [(1 - g2 + i1)] }, { S1[i0, i1] -> [(t0)] }, { S1[i0, i1] -> [(t1)] }]" + options: "[T, N, h0, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { separate[x] : x >= 3 }" diff --git a/test_inputs/codegen/cloog/largeur.in b/test_inputs/codegen/cloog/largeur.in deleted file mode 100644 index 3a25146b..00000000 --- a/test_inputs/codegen/cloog/largeur.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1] -> [i1, i0] : i0 >= 1 and i0 <= M and i1 >= i0 and i1 <= M } -[M] -> { : M >= 0 } -[M] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/largeur.st b/test_inputs/codegen/cloog/largeur.st new file mode 100644 index 00000000..bb29f218 --- /dev/null +++ b/test_inputs/codegen/cloog/largeur.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i0 <= M and i1 >= i0 and i1 <= M }" +child: + context: "[M] -> { [] : M >= 0 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i1)] }, { S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/levenshtein-1-2-3.in b/test_inputs/codegen/cloog/levenshtein-1-2-3.in deleted file mode 100644 index dc944641..00000000 --- a/test_inputs/codegen/cloog/levenshtein-1-2-3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S8[i0, i1] -> [i0, i1, 7] : i0 >= 1 + N and 2i1 <= N + i0 and 2i1 >= -N + i0 and i0 <= -2 + 2M - N and N <= -2 + M and N >= 1; S1[0, 0] -> [0, 0, 0] : N <= -2 + M and N >= 1; S5[i0, i1] -> [i0, j, 4] : 2j = -N + i0 and 2i1 = -N + i0 and i0 >= 2 + N and i0 <= -2 + 2M - N and N >= 1; S7[i0, i1] -> [i0, i1, 6] : i0 >= 1 + N and 2i1 <= -1 - N + i0 and i0 <= -2 + 2M - N and 2i1 >= -2 - N + i0 and N <= -2 + M and N >= 1; S2[i0, 0] -> [i0, 0, 1] : i0 >= 1 and i0 <= N and N <= -2 + M; S3[i0, i0] -> [i0, i0, 2] : i0 >= 1 and i0 <= N and N <= -2 + M; S4[i0, i1] -> [i0, j, 3] : 2j = N + i0 and 2i1 = N + i0 and i0 >= 2 + N and i0 <= -2 + 2M - N and N >= 1; S6[i0, i1] -> [i0, i1, 5] : 2i1 <= -1 + N + i0 and i1 <= -1 + i0 and i1 >= 1 - M + i0 and 2i1 >= 1 - N + i0 and i1 >= 1 and i1 <= -1 + M and N <= -2 + M } -[M, N] -> { : N <= -2 + M and N >= 1 } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/levenshtein-1-2-3.st b/test_inputs/codegen/cloog/levenshtein-1-2-3.st new file mode 100644 index 00000000..9b1d7cbe --- /dev/null +++ b/test_inputs/codegen/cloog/levenshtein-1-2-3.st @@ -0,0 +1,16 @@ +domain: "[M, N] -> { S5[i0, i1] : 2i1 = -N + i0 and i0 >= 2 + N and i0 <= -2 + 2M - N and N >= 1; S3[i0, i0] : i0 >= 1 and i0 <= N and N <= -2 + M; S7[i0, i1] : i0 >= 1 + N and 2i1 <= -1 - N + i0 and i0 <= -2 + 2M - N and 2i1 >= -2 - N + i0 and N <= -2 + M and N >= 1; S6[i0, i1] : 2i1 <= -1 + N + i0 and i1 <= -1 + i0 and i1 >= 1 - M + i0 and 2i1 >= 1 - N + i0 and i1 >= 1 and i1 <= -1 + M and N <= -2 + M; S1[0, 0] : N <= -2 + M and N >= 1; S2[i0, 0] : i0 >= 1 and i0 <= N and N <= -2 + M; S4[i0, i1] : 2i1 = N + i0 and i0 >= 2 + N and i0 <= -2 + 2M - N and N >= 1; S8[i0, i1] : i0 >= 1 + N and 2i1 <= N + i0 and 2i1 >= -N + i0 and i0 <= -2 + 2M - N and N <= -2 + M and N >= 1 }" +child: + context: "[M, N] -> { [] : N <= -2 + M and N >= 1 }" + child: + schedule: "[M, N] -> [{ S7[i0, i1] -> [(i0)]; S5[i0, i1] -> [(i0)]; S1[i0, i1] -> [(i0)]; S3[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)]; S4[i0, i1] -> [(i0)]; S8[i0, i1] -> [(i0)]; S6[i0, i1] -> [(i0)] }, { S7[i0, i1] -> [(i1)]; S5[i0, i1] -> [(i1)]; S1[i0, i1] -> [(i1)]; S3[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)]; S4[i0, i1] -> [(i1)]; S8[i0, i1] -> [(i1)]; S6[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1] }" + - filter: "[M, N] -> { S2[i0, i1] }" + - filter: "[M, N] -> { S3[i0, i1] }" + - filter: "[M, N] -> { S4[i0, i1] }" + - filter: "[M, N] -> { S5[i0, i1] }" + - filter: "[M, N] -> { S6[i0, i1] }" + - filter: "[M, N] -> { S7[i0, i1] }" + - filter: "[M, N] -> { S8[i0, i1] }" diff --git a/test_inputs/codegen/cloog/lex.in b/test_inputs/codegen/cloog/lex.in deleted file mode 100644 index 7a268b60..00000000 --- a/test_inputs/codegen/cloog/lex.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[i0] -> [i0, -1, 0] : i0 >= 0 and i0 <= 10; S1[i0] -> [i0, 0, 0] : i0 >= 0 and i0 <= 10 } -{ : } -{ [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/lex.st b/test_inputs/codegen/cloog/lex.st new file mode 100644 index 00000000..2d4d58df --- /dev/null +++ b/test_inputs/codegen/cloog/lex.st @@ -0,0 +1,10 @@ +domain: "{ S1[i0] : i0 >= 0 and i0 <= 10; S2[i0] : i0 >= 0 and i0 <= 10 }" +child: + context: "{ [] }" + child: + schedule: "[{ S2[i0] -> [(i0)]; S1[i0] -> [(i0)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S2[i0] }" + - filter: "{ S1[i0] }" diff --git a/test_inputs/codegen/cloog/lineality-1-2.in b/test_inputs/codegen/cloog/lineality-1-2.in deleted file mode 100644 index b7d06d05..00000000 --- a/test_inputs/codegen/cloog/lineality-1-2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i0] -> [i0, i0, 1] : i0 >= 1 and i0 <= M; S1[i0, i1] -> [i0, i1, 0] : i0 >= 1 and i1 >= 1 and i0 <= M and i1 <= M } -[M] -> { : M >= 2 } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/lineality-1-2.st b/test_inputs/codegen/cloog/lineality-1-2.st new file mode 100644 index 00000000..0d079b5e --- /dev/null +++ b/test_inputs/codegen/cloog/lineality-1-2.st @@ -0,0 +1,10 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i1 >= 1 and i0 <= M and i1 <= M; S2[i0, i0] : i0 >= 1 and i0 <= M }" +child: + context: "[M] -> { [] : M >= 2 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + - filter: "[M] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/lineality-2-1-2.c b/test_inputs/codegen/cloog/lineality-2-1-2.c index 23f50d24..97a4b045 100644 --- a/test_inputs/codegen/cloog/lineality-2-1-2.c +++ b/test_inputs/codegen/cloog/lineality-2-1-2.c @@ -1,12 +1,12 @@ for (int c0 = 1; c0 <= M; c0 += 1) { for (int c1 = 1; c1 <= min(M, c0 + 1); c1 += 1) S1(c0, c1); - if (c0 + 1 >= M) { - S2(c0, c0 + 2); - } else { + if (M >= c0 + 2) { S1(c0, c0 + 2); S2(c0, c0 + 2); } for (int c1 = c0 + 3; c1 <= M; c1 += 1) S1(c0, c1); + if (c0 + 1 >= M) + S2(c0, c0 + 2); } diff --git a/test_inputs/codegen/cloog/lineality-2-1-2.in b/test_inputs/codegen/cloog/lineality-2-1-2.in deleted file mode 100644 index 6ed9040a..00000000 --- a/test_inputs/codegen/cloog/lineality-2-1-2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, 2 + i0] -> [i0, 2 + i0, 1] : i0 >= 1 and i0 <= M; S1[i0, i1] -> [i0, i1, 0] : i0 >= 1 and i1 >= 1 and i0 <= M and i1 <= M } -[M] -> { : M >= 2 } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/lineality-2-1-2.st b/test_inputs/codegen/cloog/lineality-2-1-2.st new file mode 100644 index 00000000..dbadca75 --- /dev/null +++ b/test_inputs/codegen/cloog/lineality-2-1-2.st @@ -0,0 +1,10 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i1 >= 1 and i0 <= M and i1 <= M; S2[i0, 2 + i0] : i0 >= 1 and i0 <= M }" +child: + context: "[M] -> { [] : M >= 2 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + - filter: "[M] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/logo.in b/test_inputs/codegen/cloog/logo.in deleted file mode 100644 index 33e2d88b..00000000 --- a/test_inputs/codegen/cloog/logo.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [i0, i1, 1] : i0 >= 2 and i0 <= 6 and i1 >= 0 and i1 <= 4; S1[i0, i1] -> [i0, i1, 0] : i0 >= 1 and i1 <= 7 and i1 >= -1 + i0 } -[M] -> { : } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/logo.st b/test_inputs/codegen/cloog/logo.st new file mode 100644 index 00000000..89fe6495 --- /dev/null +++ b/test_inputs/codegen/cloog/logo.st @@ -0,0 +1,10 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i1 <= 7 and i1 >= -1 + i0; S2[i0, i1] : i0 >= 2 and i0 <= 6 and i1 >= 0 and i1 <= 4 }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + - filter: "[M] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/logopar.in b/test_inputs/codegen/cloog/logopar.in deleted file mode 100644 index 48b70fde..00000000 --- a/test_inputs/codegen/cloog/logopar.in +++ /dev/null @@ -1,3 +0,0 @@ -[m, n] -> { S1[i0, i1] -> [i0, i1, 0] : i0 >= 1 and i1 <= m and i1 >= -1 + i0; S2[i0, i1] -> [i0, i1, 1] : i0 >= 2 and i0 <= n and i1 >= 0 and i1 <= n } -[m, n] -> { : n <= m and m >= 0 and n >= 2 } -[m, n] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/logopar.st b/test_inputs/codegen/cloog/logopar.st new file mode 100644 index 00000000..8ed609b4 --- /dev/null +++ b/test_inputs/codegen/cloog/logopar.st @@ -0,0 +1,10 @@ +domain: "[m, n] -> { S1[i0, i1] : i0 >= 1 and i1 <= m and i1 >= -1 + i0; S2[i0, i1] : i0 >= 2 and i0 <= n and i1 >= 0 and i1 <= n }" +child: + context: "[m, n] -> { [] : n <= m and m >= 0 and n >= 2 }" + child: + schedule: "[m, n] -> [{ S2[i0, i1] -> [(i0)]; S1[i0, i1] -> [(i0)] }, { S2[i0, i1] -> [(i1)]; S1[i0, i1] -> [(i1)] }]" + options: "[m, n] -> { separate[i0] }" + child: + sequence: + - filter: "[m, n] -> { S1[i0, i1] }" + - filter: "[m, n] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/lu.in b/test_inputs/codegen/cloog/lu.in deleted file mode 100644 index 49952ccc..00000000 --- a/test_inputs/codegen/cloog/lu.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S2[i0, i1, i2] -> [i2, i1] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n and i2 >= 1 + i0 and i2 <= n; S1[i0, i1] -> [i0, n] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n } -[n] -> { : } -[n] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/lu.st b/test_inputs/codegen/cloog/lu.st new file mode 100644 index 00000000..6f9320c9 --- /dev/null +++ b/test_inputs/codegen/cloog/lu.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[i0, i1] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S2[i0, i1, i2] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n and i2 >= 1 + i0 and i2 <= n }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S2[i0, i1, i2] -> [(i2)]; S1[i0, i1] -> [(i0)] }, { S2[i0, i1, i2] -> [(i1)]; S1[i0, i1] -> [(n)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/lu2.in b/test_inputs/codegen/cloog/lu2.in deleted file mode 100644 index 5c71fc0a..00000000 --- a/test_inputs/codegen/cloog/lu2.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S1[i0, n, i0, i3] -> [i0, n, i0, i3, 0, 0] : i0 >= 1 and i0 <= n and i3 >= 1 + i0 and i3 <= n; S2[i0, i1, i2, i1, i0] -> [i0, i1, i2, i1, i0, 1] : i2 >= 1 and i2 <= n and i2 <= -1 + i1 and i1 <= n and i2 <= -1 + i0 and i0 <= n } -[n] -> { : } -[n] -> { [i, j, k, l, m, n'] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/lu2.st b/test_inputs/codegen/cloog/lu2.st new file mode 100644 index 00000000..eb0ab21f --- /dev/null +++ b/test_inputs/codegen/cloog/lu2.st @@ -0,0 +1,10 @@ +domain: "[n] -> { S2[i0, i1, i2, i1, i0] : i2 >= 1 and i2 <= n and i2 <= -1 + i1 and i1 <= n and i2 <= -1 + i0 and i0 <= n; S1[i0, n, i0, i3] : i0 >= 1 and i0 <= n and i3 >= 1 + i0 and i3 <= n }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S2[i0, i1, i2, i3, i4] -> [(i0)]; S1[i0, i1, i2, i3] -> [(i0)] }, { S2[i0, i1, i2, i3, i4] -> [(i1)]; S1[i0, i1, i2, i3] -> [(i1)] }, { S2[i0, i1, i2, i3, i4] -> [(i2)]; S1[i0, i1, i2, i3] -> [(i2)] }, { S2[i0, i1, i2, i3, i4] -> [(i3)]; S1[i0, i1, i2, i3] -> [(i3)] }, { S2[i0, i1, i2, i3, i4] -> [(i4)]; S1[i0, i1, i2, i3] -> [(0)] }]" + options: "[n] -> { separate[i0] }" + child: + sequence: + - filter: "[n] -> { S1[i0, i1, i2, i3] }" + - filter: "[n] -> { S2[i0, i1, i2, i3, i4] }" diff --git a/test_inputs/codegen/cloog/lux.in b/test_inputs/codegen/cloog/lux.in deleted file mode 100644 index 75ed7e24..00000000 --- a/test_inputs/codegen/cloog/lux.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i0, M, i3] -> [i0, i0, M, i3, 0, 0] : i0 >= 1 and i0 <= M and i3 >= 1 + i0 and i3 <= M; S2[i0, i1, i2, i2, i0] -> [i0, i1, i2, i2, i0, 1] : i1 >= 1 and i1 <= M and i2 >= 1 + i1 and i2 <= M and i1 <= -1 + i0 and i0 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m, n] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/lux.st b/test_inputs/codegen/cloog/lux.st new file mode 100644 index 00000000..8c5bdb61 --- /dev/null +++ b/test_inputs/codegen/cloog/lux.st @@ -0,0 +1,10 @@ +domain: "[M] -> { S1[i0, i0, M, i3] : i0 >= 1 and i0 <= M and i3 >= 1 + i0 and i3 <= M; S2[i0, i1, i2, i2, i0] : i1 >= 1 and i1 <= M and i2 >= 1 + i1 and i2 <= M and i1 <= -1 + i0 and i0 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i0)]; S2[i0, i1, i2, i3, i4] -> [(i0)] }, { S1[i0, i1, i2, i3] -> [(i1)]; S2[i0, i1, i2, i3, i4] -> [(i1)] }, { S1[i0, i1, i2, i3] -> [(i2)]; S2[i0, i1, i2, i3, i4] -> [(i2)] }, { S1[i0, i1, i2, i3] -> [(i3)]; S2[i0, i1, i2, i3, i4] -> [(i3)] }, { S1[i0, i1, i2, i3] -> [(0)]; S2[i0, i1, i2, i3, i4] -> [(i4)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1, i2, i3] }" + - filter: "[M] -> { S2[i0, i1, i2, i3, i4] }" diff --git a/test_inputs/codegen/cloog/merge.in b/test_inputs/codegen/cloog/merge.in deleted file mode 100644 index 1747c44c..00000000 --- a/test_inputs/codegen/cloog/merge.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S3[i0] -> [i0, 2] : i0 >= 0 and i0 <= 10; S2[i0] -> [i0, 1] : i0 >= 2 and i0 <= 10; S1[0] -> [0, 0] } -{ : } -{ [i, j] -> atomic[o0] } diff --git a/test_inputs/codegen/cloog/merge.st b/test_inputs/codegen/cloog/merge.st new file mode 100644 index 00000000..d4513172 --- /dev/null +++ b/test_inputs/codegen/cloog/merge.st @@ -0,0 +1,11 @@ +domain: "{ S3[i0] : i0 >= 0 and i0 <= 10; S1[0]; S2[i0] : i0 >= 2 and i0 <= 10 }" +child: + context: "{ [] }" + child: + schedule: "[{ S2[i0] -> [(i0)]; S3[i0] -> [(i0)]; S1[i0] -> [(i0)] }]" + options: "{ atomic[i0] }" + child: + sequence: + - filter: "{ S1[i0] }" + - filter: "{ S2[i0] }" + - filter: "{ S3[i0] }" diff --git a/test_inputs/codegen/cloog/min-1-1.in b/test_inputs/codegen/cloog/min-1-1.in deleted file mode 100644 index 76e511ff..00000000 --- a/test_inputs/codegen/cloog/min-1-1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0, i1] -> [i0, i1, 0] : i0 >= 1 and i1 >= 0 and i1 <= M and i1 <= i0 and i1 <= N - i0 } -[M, N] -> { : } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/min-1-1.st b/test_inputs/codegen/cloog/min-1-1.st new file mode 100644 index 00000000..cf3dc12d --- /dev/null +++ b/test_inputs/codegen/cloog/min-1-1.st @@ -0,0 +1,6 @@ +domain: "[M, N] -> { S1[i0, i1] : i0 >= 1 and i1 >= 0 and i1 <= M and i1 <= i0 and i1 <= N - i0 }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/min-2-1.in b/test_inputs/codegen/cloog/min-2-1.in deleted file mode 100644 index aa0bcaef..00000000 --- a/test_inputs/codegen/cloog/min-2-1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0, i1, i2] -> [i0, i1, i2, 0] : i0 >= 1 and i1 >= 0 and i1 <= M and i1 <= i0 and i1 <= N - i0 and i2 >= 0 and i2 <= M and i2 <= i0 and i2 <= N - i0 } -[M, N] -> { : } -[M, N] -> { [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/min-2-1.st b/test_inputs/codegen/cloog/min-2-1.st new file mode 100644 index 00000000..c2a48521 --- /dev/null +++ b/test_inputs/codegen/cloog/min-2-1.st @@ -0,0 +1,6 @@ +domain: "[M, N] -> { S1[i0, i1, i2] : i0 >= 1 and i1 >= 0 and i1 <= M and i1 <= i0 and i1 <= N - i0 and i2 >= 0 and i2 <= M and i2 <= i0 and i2 <= N - i0 }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2] -> [(i0)] }, { S1[i0, i1, i2] -> [(i1)] }, { S1[i0, i1, i2] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/min-3-1.in b/test_inputs/codegen/cloog/min-3-1.in deleted file mode 100644 index 1676ac93..00000000 --- a/test_inputs/codegen/cloog/min-3-1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1] -> [i0, i1, 0] : i0 >= 0 and i0 <= M and i0 <= 10 and i1 >= 0 and i1 <= M and i1 <= 10 } -[M] -> { : M >= 0 } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/min-3-1.st b/test_inputs/codegen/cloog/min-3-1.st new file mode 100644 index 00000000..30dec04b --- /dev/null +++ b/test_inputs/codegen/cloog/min-3-1.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 0 and i0 <= M and i0 <= 10 and i1 >= 0 and i1 <= M and i1 <= 10 }" +child: + context: "[M] -> { [] : M >= 0 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/min-4-1.in b/test_inputs/codegen/cloog/min-4-1.in deleted file mode 100644 index 72fd0126..00000000 --- a/test_inputs/codegen/cloog/min-4-1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N, O] -> { S1[i0] -> [i0, 0] : i0 >= -M and i0 >= -N and i0 <= N and i0 <= O } -[M, N, O] -> { : } -[M, N, O] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/min-4-1.st b/test_inputs/codegen/cloog/min-4-1.st new file mode 100644 index 00000000..8c0fd869 --- /dev/null +++ b/test_inputs/codegen/cloog/min-4-1.st @@ -0,0 +1,6 @@ +domain: "[M, N, O] -> { S1[i0] : i0 >= -M and i0 >= -N and i0 <= N and i0 <= O }" +child: + context: "[M, N, O] -> { [] }" + child: + schedule: "[M, N, O] -> [{ S1[i0] -> [(i0)] }]" + options: "[M, N, O] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/mod.in b/test_inputs/codegen/cloog/mod.in deleted file mode 100644 index 2759c0e5..00000000 --- a/test_inputs/codegen/cloog/mod.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0] -> [i0, 0] : exists (e0 = [(1 + i0)/3]: i0 >= 0 and i0 <= 3 and 3e0 <= i0 and 3e0 >= -1 + i0) } -{ : } -{ [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/mod.st b/test_inputs/codegen/cloog/mod.st new file mode 100644 index 00000000..cecdef11 --- /dev/null +++ b/test_inputs/codegen/cloog/mod.st @@ -0,0 +1,6 @@ +domain: "{ S1[i0] : exists (e0 = floor((1 + i0)/3): 3e0 <= i0 and 3e0 >= -1 + i0 and i0 >= 0 and i0 <= 3) }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0] -> [(i0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/mod2.in b/test_inputs/codegen/cloog/mod2.in deleted file mode 100644 index 58134bbb..00000000 --- a/test_inputs/codegen/cloog/mod2.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i] -> [i, 0] : exists (e0 = [(i)/3]: i >= 0 and i <= 3 and 3e0 <= i and 3e0 >= -1 + i) } -{ : } -{ [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/mod2.st b/test_inputs/codegen/cloog/mod2.st new file mode 100644 index 00000000..3097bb72 --- /dev/null +++ b/test_inputs/codegen/cloog/mod2.st @@ -0,0 +1,6 @@ +domain: "{ S1[i] : exists (e0 = floor((1 + i)/3): 3e0 <= i and 3e0 >= -1 + i and i >= 0 and i <= 3) }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i] -> [(i)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/mod3.in b/test_inputs/codegen/cloog/mod3.in deleted file mode 100644 index bd0713ee..00000000 --- a/test_inputs/codegen/cloog/mod3.in +++ /dev/null @@ -1,3 +0,0 @@ -[h0] -> { S1[i0, i1] -> [i0, i1, 0] : exists (e0 = [(32 + 32h0 - i0)/64]: i0 >= 0 and i0 <= 999 and i0 >= -2015 + 32h0 and 32e0 >= -999 + 32h0 - i0 and i1 >= 0 and i1 <= 999 and 64e0 >= -31 + 32h0 - i0 and 64e0 <= 31 + 32h0 - i0 and i0 <= 32 + 32h0) } -[h0] -> { : h0 <= 93 and h0 >= 0 } -[h0] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/mod3.st b/test_inputs/codegen/cloog/mod3.st new file mode 100644 index 00000000..eaad1706 --- /dev/null +++ b/test_inputs/codegen/cloog/mod3.st @@ -0,0 +1,6 @@ +domain: "[h0] -> { S1[i0, i1] : exists (e0 = floor((32 + 32h0 - i0)/64): 64e0 <= 31 + 32h0 - i0 and 64e0 >= -31 + 32h0 - i0 and i0 >= 0 and i0 <= 999 and i0 >= -2015 + 32h0 and 32e0 >= -999 + 32h0 - i0 and i1 >= 0 and i1 <= 999 and i0 <= 32 + 32h0) }" +child: + context: "[h0] -> { [] : h0 <= 93 and h0 >= 0 }" + child: + schedule: "[h0] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[h0] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/mod4.in b/test_inputs/codegen/cloog/mod4.in deleted file mode 100644 index 2002cef3..00000000 --- a/test_inputs/codegen/cloog/mod4.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[j, div41, div42, 2, mod6_a] -> [j, div41, k, 2, m, 1] : 3k = 1 + j and 3div42 = 1 + j and 3m = -2 + j and 3mod6_a = -2 + j and 3div41 >= 1 + j and 3div41 <= 2 + j and j >= 1 and j <= 10; S1[j, div41, div42, 2, mod6_a] -> [j, div41, div42, 2, m, 0] : 3m = -2 + j and 3mod6_a = -2 + j and j >= 1 and j <= 10 and 3div41 >= j and 3div42 >= -1 + j and 3div42 <= 1 + j and 3div41 <= 2 + j; S3[j, div41, div42, 2, mod6_a] -> [j, div41, div42, 2, m, 2] : 3m = -2 + j and 3mod6_a = -2 + j and j >= 1 and j <= 10 and 3div41 >= j and 3div42 >= -1 + j and 3div42 <= 1 + j and 3div41 <= 2 + j } -{ : } -{ [i, j, k, l, m, n] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/mod4.st b/test_inputs/codegen/cloog/mod4.st new file mode 100644 index 00000000..99501a88 --- /dev/null +++ b/test_inputs/codegen/cloog/mod4.st @@ -0,0 +1,11 @@ +domain: "{ S1[j, div41, div42, 2, mod6_a] : 3mod6_a = -2 + j and j >= 1 and j <= 10 and 3div41 >= j and 3div42 >= -1 + j and 3div42 <= 1 + j and 3div41 <= 2 + j; S2[j, div41, div42, 2, mod6_a] : 3div42 = 1 + j and 3mod6_a = -2 + j and 3div41 >= 1 + j and 3div41 <= 2 + j and j >= 1 and j <= 10; S3[j, div41, div42, 2, mod6_a] : 3mod6_a = -2 + j and j >= 1 and j <= 10 and 3div41 >= j and 3div42 >= -1 + j and 3div42 <= 1 + j and 3div41 <= 2 + j }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[j, div41, div42, mod6, mod6_a] -> [(j)]; S3[j, div41, div42, mod6, mod6_a] -> [(j)]; S2[j, div41, div42, mod6, mod6_a] -> [(j)] }, { S1[j, div41, div42, mod6, mod6_a] -> [(div41)]; S3[j, div41, div42, mod6, mod6_a] -> [(div41)]; S2[j, div41, div42, mod6, mod6_a] -> [(div41)] }, { S1[j, div41, div42, mod6, mod6_a] -> [(div42)]; S3[j, div41, div42, mod6, mod6_a] -> [(div42)]; S2[j, div41, div42, mod6, mod6_a] -> [(div42)] }, { S1[j, div41, div42, mod6, mod6_a] -> [(mod6)]; S3[j, div41, div42, mod6, mod6_a] -> [(mod6)]; S2[j, div41, div42, mod6, mod6_a] -> [(mod6)] }, { S1[j, div41, div42, mod6, mod6_a] -> [(mod6_a)]; S3[j, div41, div42, mod6, mod6_a] -> [(mod6_a)]; S2[j, div41, div42, mod6, mod6_a] -> [(mod6_a)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[j, div41, div42, mod6, mod6_a] }" + - filter: "{ S2[j, div41, div42, mod6, mod6_a] }" + - filter: "{ S3[j, div41, div42, mod6, mod6_a] }" diff --git a/test_inputs/codegen/cloog/mode.in b/test_inputs/codegen/cloog/mode.in deleted file mode 100644 index 914c37e6..00000000 --- a/test_inputs/codegen/cloog/mode.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0, i1] -> [i0, i1, 0] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= i0; S2[i0, i1] -> [i0, i1, 1] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= N } -[M, N] -> { : } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/mode.st b/test_inputs/codegen/cloog/mode.st new file mode 100644 index 00000000..68ece148 --- /dev/null +++ b/test_inputs/codegen/cloog/mode.st @@ -0,0 +1,10 @@ +domain: "[M, N] -> { S1[i0, i1] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= i0; S2[i0, i1] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= N }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1] }" + - filter: "[M, N] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/multi-mm-1.in b/test_inputs/codegen/cloog/multi-mm-1.in deleted file mode 100644 index 22bdd1b4..00000000 --- a/test_inputs/codegen/cloog/multi-mm-1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0, i1] -> [i0, i1, 0] : i1 >= 0 and i1 <= i0 and i0 <= M; S2[i0, i1] -> [i0, i1, 1] : i1 >= 0 and i1 <= i0 and i0 <= M and i1 <= N } -[M, N] -> { : N <= M and N >= 1 } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/multi-mm-1.st b/test_inputs/codegen/cloog/multi-mm-1.st new file mode 100644 index 00000000..de96851f --- /dev/null +++ b/test_inputs/codegen/cloog/multi-mm-1.st @@ -0,0 +1,10 @@ +domain: "[M, N] -> { S1[i0, i1] : i1 >= 0 and i1 <= i0 and i0 <= M; S2[i0, i1] : i1 >= 0 and i1 <= i0 and i0 <= M and i1 <= N }" +child: + context: "[M, N] -> { [] : N <= M and N >= 1 }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1] }" + - filter: "[M, N] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/multi-stride.in b/test_inputs/codegen/cloog/multi-stride.in deleted file mode 100644 index fdef8f90..00000000 --- a/test_inputs/codegen/cloog/multi-stride.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, i1, i2] -> [i0, j, k, 0] : 2i1 = -1 + i0 and 2j = -1 + i0 and 6k = -2 + i0 and 6i2 = -2 + i0 and i0 >= 0 and i0 <= 100 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/multi-stride.st b/test_inputs/codegen/cloog/multi-stride.st new file mode 100644 index 00000000..2c7788b6 --- /dev/null +++ b/test_inputs/codegen/cloog/multi-stride.st @@ -0,0 +1,6 @@ +domain: "{ S1[i0, i1, i2] : 2i1 = -1 + i0 and 6i2 = -2 + i0 and i0 >= 0 and i0 <= 100 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1, i2] -> [(i0)] }, { S1[i0, i1, i2] -> [(i1)] }, { S1[i0, i1, i2] -> [(i2)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/multi-stride2.in b/test_inputs/codegen/cloog/multi-stride2.in deleted file mode 100644 index d2c4bbc9..00000000 --- a/test_inputs/codegen/cloog/multi-stride2.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, i1, i2] -> [i0, j, k, 0] : 2i1 = -1 + i0 and 2j = -1 + i0 and 3k = -2 + i0 and 3i2 = -2 + i0 and i0 >= 0 and i0 <= 100 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/multi-stride2.st b/test_inputs/codegen/cloog/multi-stride2.st new file mode 100644 index 00000000..e3fc0bc7 --- /dev/null +++ b/test_inputs/codegen/cloog/multi-stride2.st @@ -0,0 +1,6 @@ +domain: "{ S1[i0, i1, i2] : 2i1 = -1 + i0 and 3i2 = -2 + i0 and i0 >= 0 and i0 <= 100 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1, i2] -> [(i0)] }, { S1[i0, i1, i2] -> [(i1)] }, { S1[i0, i1, i2] -> [(i2)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/mxm-shared.in b/test_inputs/codegen/cloog/mxm-shared.in deleted file mode 100644 index a525e9c0..00000000 --- a/test_inputs/codegen/cloog/mxm-shared.in +++ /dev/null @@ -1,3 +0,0 @@ -[N, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { S1[g0 + t1, i1] -> [-g1 + i1, t1, t0, t1] : (exists (e0 = [(-g1)/128], e1 = [(128b1 + 31g1)/4096], e2 = [(t0 - i1)/16], e3 = [(-120b0 - g0)/128]: g4 = 0 and g2 = 8b0 and g3 = 128b1 and 128e0 = -g1 and 4096e1 = 128b1 + 31g1 and 16e2 = t0 - i1 and 128e3 = -120b0 - g0 and g1 >= 128b1 and t1 <= -1 + N - g0 and g0 >= 8b0 and i1 <= -1 + N and b0 <= 15 and b0 >= 0 and b1 <= 31 and b1 >= 0 and i1 <= 127 + g1 and t1 >= 0 and t1 <= 7 and i1 >= g1 and t0 >= 0 and t0 <= 15)) or (exists (e0 = [(-g1)/128], e1 = [(128b1 + 31g1)/4096], e2 = [(t0 - i1)/16], e3 = [(-120b0 - g0)/128]: g4 = 0 and g2 = 8b0 and g3 = 128b1 and 128e0 = -g1 and 4096e1 = 128b1 + 31g1 and 16e2 = t0 - i1 and 128e3 = -120b0 - g0 and g1 >= 128b1 and t1 <= -1 + N - g0 and g0 >= 8b0 and i1 <= -1 + N and b0 <= 15 and b0 >= 0 and b1 <= 31 and b1 >= 0 and i1 <= 127 + g1 and t1 >= 0 and t1 <= 7 and i1 >= g1 and t0 >= 0 and t0 <= 15 and N >= 1)) or (exists (e0 = [(-g1)/128], e1 = [(128b1 + 31g1)/4096], e2 = [(t0 - i1)/16], e3 = [(-120b0 - g0)/128]: g4 = 0 and g2 = 8b0 and g3 = 128b1 and 128e0 = -g1 and 4096e1 = 128b1 + 31g1 and 16e2 = t0 - i1 and 128e3 = -120b0 - g0 and g0 >= 8b0 and t1 <= -1 + N - g0 and g1 >= 128b1 and i1 <= -1 + N and N >= 1 and t1 <= 7 and b1 <= 31 and b1 >= 0 and b0 <= 15 and b0 >= 0 and t0 <= 15 and i1 <= 127 + g1 and i1 >= g1 and t1 >= 0 and t0 >= 0)); S1[g0 + t1, i1] -> [-g1 + i1, t1, t0, t1] : exists (e0 = [(g4)/4], e1 = [(-g1)/128], e2 = [(128b1 + 31g1)/4096], e3 = [(t0 - i1)/16], e4 = [(-120b0 - g0)/128]: g3 = 128b1 and g2 = 8b0 and 4e0 = g4 and 128e1 = -g1 and 4096e2 = 128b1 + 31g1 and 16e3 = t0 - i1 and 128e4 = -120b0 - g0 and g0 >= 8b0 and t1 <= -1 + N - g0 and g1 >= 128b1 and i1 <= -1 + N and g4 <= -1 + N and t1 <= 7 and b1 <= 31 and b1 >= 0 and b0 <= 15 and b0 >= 0 and g4 >= 0 and i1 <= 127 + g1 and i1 >= g1 and t1 >= 0 and t0 >= 0 and t0 <= 15) } -[N, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { : exists (e0 = [(g0)/8], e1 = [(-128b1 + g1)/4096], e2 = [(8b0 - g0)/128]: g2 = 8b0 and g3 = 128b1 and 8e0 = g0 and 4096e1 = -128b1 + g1 and 128e2 = 8b0 - g0 and b0 >= 0 and g4 <= -1 + N and b0 <= 15 and g1 <= -1 + N and g4 >= 0 and b1 <= 31 and g0 <= -1 + N and g1 >= 128b1 and b1 >= 0 and g0 >= 8b0 and t0 >= 0 and t0 <= 15 and t1 >= 0 and t1 <= 15) } -[N, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/mxm-shared.st b/test_inputs/codegen/cloog/mxm-shared.st new file mode 100644 index 00000000..c86ed9c5 --- /dev/null +++ b/test_inputs/codegen/cloog/mxm-shared.st @@ -0,0 +1,6 @@ +domain: "[N, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { S1[g0 + t1, i1] : (exists (e0 = floor((g1)/128), e1 = floor((128b1 - g1)/4096), e2 = floor((-8b0 + g0)/128), e3 = floor((-t0 + i1)/16): g3 = 128b1 and g4 = 0 and g2 = 8b0 and 128e0 = g1 and 4096e1 = 128b1 - g1 and 128e2 = -8b0 + g0 and 16e3 = -t0 + i1 and b0 <= 15 and b0 >= 0 and b1 <= 31 and b1 >= 0 and g0 >= 8b0 and g1 >= 128b1 and t0 <= 15 and t0 >= 0 and t1 <= 7 and t1 >= 0 and t1 <= -1 + N - g0 and i1 >= g1 and i1 <= 127 + g1 and i1 <= -1 + N)) or (exists (e0 = floor((g1)/128), e1 = floor((128b1 - g1)/4096), e2 = floor((g4)/4), e3 = floor((-8b0 + g0)/128), e4 = floor((-t0 + i1)/16): g3 = 128b1 and g2 = 8b0 and 128e0 = g1 and 4096e1 = 128b1 - g1 and 4e2 = g4 and 128e3 = -8b0 + g0 and 16e4 = -t0 + i1 and b0 <= 15 and b0 >= 0 and b1 <= 31 and b1 >= 0 and g0 >= 8b0 and g1 >= 128b1 and g4 >= 0 and g4 <= -1 + N and t0 <= 15 and t0 >= 0 and t1 <= 7 and t1 >= 0 and t1 <= -1 + N - g0 and i1 >= g1 and i1 <= 127 + g1 and i1 <= -1 + N)) }" +child: + context: "[N, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { [] : exists (e0 = floor((g0)/8), e1 = floor((-128b1 + g1)/4096), e2 = floor((8b0 - g0)/128): g2 = 8b0 and g3 = 128b1 and 8e0 = g0 and 4096e1 = -128b1 + g1 and 128e2 = 8b0 - g0 and b0 >= 0 and g4 <= -1 + N and b0 <= 15 and g1 <= -1 + N and g4 >= 0 and b1 <= 31 and g0 <= -1 + N and g1 >= 128b1 and b1 >= 0 and g0 >= 8b0 and t0 >= 0 and t0 <= 15 and t1 >= 0 and t1 <= 15) }" + child: + schedule: "[N, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> [{ S1[i0, i1] -> [(-g1 + i1)] }, { S1[i0, i1] -> [(t1)] }, { S1[i0, i1] -> [(t0)] }, { S1[i0, i1] -> [(t1)] }]" + options: "[N, b0, b1, g0, g1, g2, g3, g4, t0, t1] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/no_lindep.in b/test_inputs/codegen/cloog/no_lindep.in deleted file mode 100644 index 07899292..00000000 --- a/test_inputs/codegen/cloog/no_lindep.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[2 + N] -> [1 + M, N] } -[M, N] -> { : } -[M, N] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/no_lindep.st b/test_inputs/codegen/cloog/no_lindep.st new file mode 100644 index 00000000..da06c8dc --- /dev/null +++ b/test_inputs/codegen/cloog/no_lindep.st @@ -0,0 +1,6 @@ +domain: "[M, N] -> { S1[2 + N] }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0] -> [(1 + M)] }, { S1[i0] -> [(N)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/nul_basic1.in b/test_inputs/codegen/cloog/nul_basic1.in deleted file mode 100644 index e10488f6..00000000 --- a/test_inputs/codegen/cloog/nul_basic1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1] -> [i0, j, 0] : 2j = i0 and 2i1 = i0 and i0 >= 0 and i0 <= M } -[M] -> { : } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/nul_basic1.st b/test_inputs/codegen/cloog/nul_basic1.st new file mode 100644 index 00000000..d8a3201f --- /dev/null +++ b/test_inputs/codegen/cloog/nul_basic1.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0, i1] : 2i1 = i0 and i0 >= 0 and i0 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/nul_basic2.in b/test_inputs/codegen/cloog/nul_basic2.in deleted file mode 100644 index 54f9374a..00000000 --- a/test_inputs/codegen/cloog/nul_basic2.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S2[i0, i1] -> [i0, j, 1] : 4j = i0 and 4i1 = i0 and i0 >= 1 and i0 <= n; S1[i0, i1] -> [i0, j, 0] : 2j = i0 and 2i1 = i0 and i0 >= 1 and i0 <= n } -[n] -> { : n >= 2 } -[n] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/nul_basic2.st b/test_inputs/codegen/cloog/nul_basic2.st new file mode 100644 index 00000000..3258c670 --- /dev/null +++ b/test_inputs/codegen/cloog/nul_basic2.st @@ -0,0 +1,10 @@ +domain: "[n] -> { S1[i0, i1] : 2i1 = i0 and i0 >= 1 and i0 <= n; S2[i0, i1] : 4i1 = i0 and i0 >= 1 and i0 <= n }" +child: + context: "[n] -> { [] : n >= 2 }" + child: + schedule: "[n] -> [{ S2[i0, i1] -> [(i0)]; S1[i0, i1] -> [(i0)] }, { S2[i0, i1] -> [(i1)]; S1[i0, i1] -> [(i1)] }]" + options: "[n] -> { separate[i0] }" + child: + sequence: + - filter: "[n] -> { S1[i0, i1] }" + - filter: "[n] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/nul_complex1.in b/test_inputs/codegen/cloog/nul_complex1.in deleted file mode 100644 index 277e62ef..00000000 --- a/test_inputs/codegen/cloog/nul_complex1.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S1[i0, i1] -> [2i0 + 3i1, 2i0 + 2i1] : i0 >= 0 and i0 <= n and i1 >= 0 and i1 <= n } -[n] -> { : } -[n] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/nul_complex1.st b/test_inputs/codegen/cloog/nul_complex1.st new file mode 100644 index 00000000..93e3329f --- /dev/null +++ b/test_inputs/codegen/cloog/nul_complex1.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[i0, i1] : i0 >= 0 and i0 <= n and i1 >= 0 and i1 <= n }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S1[i0, i1] -> [(2i0 + 3i1)] }, { S1[i0, i1] -> [(2i0 + 2i1)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/nul_lcpc.in b/test_inputs/codegen/cloog/nul_lcpc.in deleted file mode 100644 index e3a4e99f..00000000 --- a/test_inputs/codegen/cloog/nul_lcpc.in +++ /dev/null @@ -1,3 +0,0 @@ -[m, n, p] -> { S1[i, k, j] -> [i, j', j, 0] : 2k = -1 + i and 2j' = -1 + i and i >= 1 and i <= m and j >= 1 and j <= p; S2[i, k, j] -> [i, j', j, 1] : 2k = -1 + i and 2j' = -1 + i and i >= 1 and i <= n and j >= 1 and j <= i } -[m, n, p] -> { : n = 6 and m >= 7 and p >= 7 } -[m, n, p] -> { [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/nul_lcpc.st b/test_inputs/codegen/cloog/nul_lcpc.st new file mode 100644 index 00000000..4571d784 --- /dev/null +++ b/test_inputs/codegen/cloog/nul_lcpc.st @@ -0,0 +1,10 @@ +domain: "[m, n, p] -> { S1[i, k, j] : 2k = -1 + i and i >= 1 and i <= m and j >= 1 and j <= p; S2[i, k, j] : 2k = -1 + i and i >= 1 and i <= n and j >= 1 and j <= i }" +child: + context: "[m, n, p] -> { [] : n = 6 and m >= 7 and p >= 7 }" + child: + schedule: "[m, n, p] -> [{ S1[i, k, j] -> [(i)]; S2[i, k, j] -> [(i)] }, { S1[i, k, j] -> [(k)]; S2[i, k, j] -> [(k)] }, { S1[i, k, j] -> [(j)]; S2[i, k, j] -> [(j)] }]" + options: "[m, n, p] -> { separate[i0] }" + child: + sequence: + - filter: "[m, n, p] -> { S1[i, k, j] }" + - filter: "[m, n, p] -> { S2[i, k, j] }" diff --git a/test_inputs/codegen/cloog/orc.c b/test_inputs/codegen/cloog/orc.c index 8ad01628..40999440 100644 --- a/test_inputs/codegen/cloog/orc.c +++ b/test_inputs/codegen/cloog/orc.c @@ -1,16 +1,16 @@ { - for (int c1 = 0; c1 <= 2; c1 += 1) { - S1(c1); - for (int c2 = 0; c2 <= -c1 + 11; c2 += 1) { - S2(c1, c2); - S3(c1, c2); + for (int c0 = 0; c0 <= 2; c0 += 1) { + S1(c0); + for (int c1 = 0; c1 <= -c0 + 11; c1 += 1) { + S2(c0, c1); + S3(c0, c1); } - S4(c1); + S4(c0); } - for (int c1 = 0; c1 <= 14; c1 += 1) { - S5(c1); - for (int c2 = 0; c2 <= 9; c2 += 1) - S6(c1, c2); - S7(c1); + for (int c0 = 0; c0 <= 14; c0 += 1) { + S5(c0); + for (int c1 = 0; c1 <= 9; c1 += 1) + S6(c0, c1); + S7(c0); } } diff --git a/test_inputs/codegen/cloog/orc.in b/test_inputs/codegen/cloog/orc.in deleted file mode 100644 index d81bf472..00000000 --- a/test_inputs/codegen/cloog/orc.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[i0, i1] -> [0, 1 + 3i0, 2i1] : i0 >= 0 and i0 <= 2 and i1 >= 0 and i1 <= 11 - i0; S4[i0] -> [0, 2 + 3i0, 0] : i0 >= 0 and i0 <= 2; S5[i0] -> [2, 3i0, 0] : i0 >= 0 and i0 <= 14; S6[i0, i1] -> [2, 1 + 3i0, i1] : i0 >= 0 and i0 <= 14 and i1 >= 0 and i1 <= 9; S1[i0] -> [0, 3i0, 0] : i0 >= 0 and i0 <= 2; S7[i0] -> [2, 2 + 3i0, 0] : i0 >= 0 and i0 <= 14; S3[i0, i1] -> [0, 1 + 3i0, 1 + 2i1] : i0 >= 0 and i0 <= 2 and i1 >= 0 and i1 <= 11 - i0 } -{ : } -{ [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/orc.st b/test_inputs/codegen/cloog/orc.st new file mode 100644 index 00000000..a67a8801 --- /dev/null +++ b/test_inputs/codegen/cloog/orc.st @@ -0,0 +1,13 @@ +domain: "{ S5[i] : i >= 0 and i <= 14; S6[i, j] : i >= 0 and i <= 14 and j >= 0 and j <= 9; S7[i] : i >= 0 and i <= 14; S4[i] : i >= 0 and i <= 2; S2[i, j] : i >= 0 and i <= 2 and j >= 0 and j <= 11 - i; S1[i] : i >= 0 and i <= 2; S3[i, j] : i >= 0 and i <= 2 and j >= 0 and j <= 11 - i }" +child: + context: "{ [] }" + child: + sequence: + - filter: "{ S4[i0]; S2[i0, i1]; S1[i0]; S3[i0, i1] }" + child: + schedule: "[{ S3[i0, i1] -> [(1 + 3i0)]; S2[i0, i1] -> [(1 + 3i0)]; S1[i0] -> [(3i0)]; S4[i0] -> [(2 + 3i0)] }, { S3[i0, i1] -> [(1 + 2i1)]; S2[i0, i1] -> [(2i1)]; S1[i0] -> [(0)]; S4[i0] -> [(0)] }]" + options: "{ separate[i0] }" + - filter: "{ S5[i0]; S6[i0, i1]; S7[i0] }" + child: + schedule: "[{ S6[i0, i1] -> [(1 + 3i0)]; S7[i0] -> [(2 + 3i0)]; S5[i0] -> [(3i0)] }, { S6[i0, i1] -> [(i1)]; S7[i0] -> [(0)]; S5[i0] -> [(0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/otl.in b/test_inputs/codegen/cloog/otl.in deleted file mode 100644 index a6ad5d2f..00000000 --- a/test_inputs/codegen/cloog/otl.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0, i1, i2, i3, i4, i2] -> [i0, i1, i2, i3, i4, i2] : 5i0 <= -7 + 2M + 2N and i4 >= i0 - i2 and 10i2 >= -2 - N + 5i0 and i2 >= -1 + i0 - i1 and 2i4 >= i0 and i0 >= 1 and i1 >= 1 and 2i1 >= i0 and i2 >= 0 and 5i2 >= 1 - M - N + 5i0 and 5i4 >= -1 - M + 5i0 and i3 >= i0 and 5i1 >= -2 - M + 5i0 and i3 >= 1 and 5i3 >= -3 - N + 5i1 + 5i2 and 5i2 <= 4 + N + 5i0 - 5i1 and i4 >= 1 and i2 <= i0 and 5i3 >= -2N + 10i1 and 5i1 <= -5 + M + 2N and 10i1 <= 1 + 2N + 5i0 and 5i2 >= -1 - N + 5i1 and i4 >= i1 and i3 >= i1 and i2 <= i1 and i1 <= i0 and 5i4 <= 4 + N - 5i2 + 5i3 and 5i4 <= 5 + N + 5i0 - 5i2 and 5i3 >= -2 - N + 10i2 and 5i2 <= -2 + M + N and 10i2 <= 3 + N + 5i0 and N >= 4 and i4 >= i2 and i3 >= i2 and M >= 3 and i4 <= i0 and 5i3 <= -6 + 2M + 2N and i4 >= -1 - i2 + i3 and 5i3 <= 3 + N + 10i2 and i3 <= 1 + i1 + i2 and i4 <= 1 + i1 and 2i4 >= i3 and 5i4 <= 2 + N + 5i2 and i3 <= 1 + 2i1 and i4 <= i3 and 5i3 <= M + N + 5i2 and 5i4 >= -2 - M + 5i3 and 10i4 <= 3 + 2N + 5i0 and i3 <= 1 + i0 and 5i3 <= 3 + M + 5i1 and 5i4 <= -4 + M + 2N and 10i4 <= 2 + 2N + 5i3 } -[M, N] -> { : M >= 1 and N >= 1 } -[M, N] -> { [i, j, k, l, m, n] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/otl.st b/test_inputs/codegen/cloog/otl.st new file mode 100644 index 00000000..da706835 --- /dev/null +++ b/test_inputs/codegen/cloog/otl.st @@ -0,0 +1,6 @@ +domain: "[M, N] -> { S1[outerTimeTileIter, outerProcTileIter1, outerProcTileIter2, innerTimeTileIter, innerProcTileIter1, outerProcTileIter2] : 5outerTimeTileIter <= -7 + 2M + 2N and innerProcTileIter1 >= outerTimeTileIter - outerProcTileIter2 and 10outerProcTileIter2 >= -2 - N + 5outerTimeTileIter and outerProcTileIter2 >= -1 + outerTimeTileIter - outerProcTileIter1 and 2innerProcTileIter1 >= outerTimeTileIter and outerTimeTileIter >= 1 and outerProcTileIter1 >= 1 and 2outerProcTileIter1 >= outerTimeTileIter and outerProcTileIter2 >= 0 and 5outerProcTileIter2 >= 1 - M - N + 5outerTimeTileIter and 5innerProcTileIter1 >= -1 - M + 5outerTimeTileIter and innerTimeTileIter >= outerTimeTileIter and 5outerProcTileIter1 >= -2 - M + 5outerTimeTileIter and innerTimeTileIter >= 1 and 5innerTimeTileIter >= -3 - N + 5outerProcTileIter1 + 5outerProcTileIter2 and 5outerProcTileIter2 <= 4 + N + 5outerTimeTileIter - 5outerProcTileIter1 and innerProcTileIter1 >= 1 and outerProcTileIter2 <= outerTimeTileIter and 5innerTimeTileIter >= -2N + 10outerProcTileIter1 and 5outerProcTileIter1 <= -5 + M + 2N and 10outerProcTileIter1 <= 1 + 2N + 5outerTimeTileIter and 5outerProcTileIter2 >= -1 - N + 5outerProcTileIter1 and innerProcTileIter1 >= outerProcTileIter1 and innerTimeTileIter >= outerProcTileIter1 and outerProcTileIter2 <= outerProcTileIter1 and outerProcTileIter1 <= outerTimeTileIter and 5innerProcTileIter1 <= 4 + N - 5outerProcTileIter2 + 5innerTimeTileIter and 5innerProcTileIter1 <= 5 + N + 5outerTimeTileIter - 5outerProcTileIter2 and 5innerTimeTileIter >= -2 - N + 10outerProcTileIter2 and 5outerProcTileIter2 <= -2 + M + N and 10outerProcTileIter2 <= 3 + N + 5outerTimeTileIter and N >= 4 and innerProcTileIter1 >= outerProcTileIter2 and innerTimeTileIter >= outerProcTileIter2 and M >= 3 and innerProcTileIter1 <= outerTimeTileIter and 5innerTimeTileIter <= -6 + 2M + 2N and innerProcTileIter1 >= -1 - outerProcTileIter2 + innerTimeTileIter and 5innerTimeTileIter <= 3 + N + 10outerProcTileIter2 and innerTimeTileIter <= 1 + outerProcTileIter1 + outerProcTileIter2 and innerProcTileIter1 <= 1 + outerProcTileIter1 and 2innerProcTileIter1 >= innerTimeTileIter and 5innerProcTileIter1 <= 2 + N + 5outerProcTileIter2 and innerTimeTileIter <= 1 + 2outerProcTileIter1 and innerProcTileIter1 <= innerTimeTileIter and 5innerTimeTileIter <= M + N + 5outerProcTileIter2 and 5innerProcTileIter1 >= -2 - M + 5innerTimeTileIter and 10innerProcTileIter1 <= 3 + 2N + 5outerTimeTileIter and innerTimeTileIter <= 1 + outerTimeTileIter and 5innerTimeTileIter <= 3 + M + 5outerProcTileIter1 and 5innerProcTileIter1 <= -4 + M + 2N and 10innerProcTileIter1 <= 2 + 2N + 5innerTimeTileIter }" +child: + context: "[M, N] -> { [] : M >= 1 and N >= 1 }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2, i3, i4, i5] -> [(i0)] }, { S1[i0, i1, i2, i3, i4, i5] -> [(i1)] }, { S1[i0, i1, i2, i3, i4, i5] -> [(i2)] }, { S1[i0, i1, i2, i3, i4, i5] -> [(i3)] }, { S1[i0, i1, i2, i3, i4, i5] -> [(i4)] }, { S1[i0, i1, i2, i3, i4, i5] -> [(i5)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/param-split.in b/test_inputs/codegen/cloog/param-split.in deleted file mode 100644 index 7b8a59e6..00000000 --- a/test_inputs/codegen/cloog/param-split.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0] -> [i0, 0] : i0 >= 0 and i0 <= M; S2[0] -> [0, 1] } -[M] -> { : } -[M] -> { [i, j] -> atomic[o0] } diff --git a/test_inputs/codegen/cloog/param-split.st b/test_inputs/codegen/cloog/param-split.st new file mode 100644 index 00000000..371372f2 --- /dev/null +++ b/test_inputs/codegen/cloog/param-split.st @@ -0,0 +1,10 @@ +domain: "[M] -> { S2[0]; S1[i0] : i0 >= 0 and i0 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S2[i0] -> [(i0)]; S1[i0] -> [(i0)] }]" + options: "[M] -> { atomic[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0] }" + - filter: "[M] -> { S2[i0] }" diff --git a/test_inputs/codegen/cloog/pouchet.in b/test_inputs/codegen/cloog/pouchet.in deleted file mode 100644 index 95d59dc2..00000000 --- a/test_inputs/codegen/cloog/pouchet.in +++ /dev/null @@ -1,3 +0,0 @@ -[Ny] -> { S1[i0, i1, 2i0, -2i0 + 2i1, i4] -> [i0 + i1, i1, i4, 2i0, -2i0 + 2i1, i4] : i0 >= 0 and i0 <= 1 and i1 >= 1 + i0 and 2i1 <= -1 + Ny + 2i0 and i4 >= 1 and i4 <= 2; S2[i0, i1, 2i0, -1 - 2i0 + 2i1, i4] -> [i0 + i1, i1, i4, 2i0, -2i0 + 2i1, 1 + i4] : i0 >= 0 and i0 <= 1 and i1 >= 1 + i0 and 2i1 <= Ny + 2i0 and i4 >= 1 and i4 <= 2 } -[Ny] -> { : } -[Ny] -> { [i, j, k, l, m, n] -> separate[x] : x >= 2 } diff --git a/test_inputs/codegen/cloog/pouchet.st b/test_inputs/codegen/cloog/pouchet.st new file mode 100644 index 00000000..8ba09288 --- /dev/null +++ b/test_inputs/codegen/cloog/pouchet.st @@ -0,0 +1,6 @@ +domain: "[Ny] -> { S1[i0, i1, 2i0, -2i0 + 2i1, i4] : i0 >= 0 and i0 <= 1 and i1 >= 1 + i0 and 2i1 <= -1 + Ny + 2i0 and i4 >= 1 and i4 <= 2; S2[i0, i1, 2i0, -1 - 2i0 + 2i1, i4] : i0 >= 0 and i0 <= 1 and i1 >= 1 + i0 and 2i1 <= Ny + 2i0 and i4 >= 1 and i4 <= 2 }" +child: + context: "[Ny] -> { [] }" + child: + schedule: "[Ny] -> [{ S1[i0, i1, i2, i3, i4] -> [(i0 + i1)]; S2[i0, i1, i2, i3, i4] -> [(i0 + i1)] }, { S1[i0, i1, i2, i3, i4] -> [(i1)]; S2[i0, i1, i2, i3, i4] -> [(i1)] }, { S1[i0, i1, i2, i3, i4] -> [(i4)]; S2[i0, i1, i2, i3, i4] -> [(i4)] }, { S1[i0, i1, i2, i3, i4] -> [(i2)]; S2[i0, i1, i2, i3, i4] -> [(i2)] }, { S1[i0, i1, i2, i3, i4] -> [(i3)]; S2[i0, i1, i2, i3, i4] -> [(1 + i3)] }, { S1[i0, i1, i2, i3, i4] -> [(i4)]; S2[i0, i1, i2, i3, i4] -> [(1 + i4)] }]" + options: "[Ny] -> { separate[x] : x >= 2 }" diff --git a/test_inputs/codegen/cloog/rectangle.in b/test_inputs/codegen/cloog/rectangle.in deleted file mode 100644 index fab0f945..00000000 --- a/test_inputs/codegen/cloog/rectangle.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S1[i0, i1] -> [i0 + i1] : i0 >= 0 and i0 <= n and i1 >= 0 and i1 <= n } -[n] -> { : n >= 0 } -[n] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/rectangle.st b/test_inputs/codegen/cloog/rectangle.st new file mode 100644 index 00000000..a4a9e51f --- /dev/null +++ b/test_inputs/codegen/cloog/rectangle.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[i0, i1] : i0 >= 0 and i0 <= n and i1 >= 0 and i1 <= n }" +child: + context: "[n] -> { [] : n >= 0 }" + child: + schedule: "[n] -> [{ S1[i0, i1] -> [(i0 + i1)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-QR.c b/test_inputs/codegen/cloog/reservoir-QR.c dissimilarity index 78% index 253791a5..fee61aa6 100644 --- a/test_inputs/codegen/cloog/reservoir-QR.c +++ b/test_inputs/codegen/cloog/reservoir-QR.c @@ -1,54 +1,54 @@ -if (N >= 1) { - S1(0); - if (N == 1) { - for (int c3 = 0; c3 < M; c3 += 1) - S2(0, c3); - S3(0); - for (int c3 = 0; c3 < M; c3 += 1) - S4(0, c3); - S10(0); - S5(0); - } else { - for (int c3 = 0; c3 < M; c3 += 1) - S2(0, c3); - S3(0); - for (int c3 = 0; c3 < M; c3 += 1) - S4(0, c3); - S10(0); - S1(1); - S5(0); - } - for (int c1 = 2; c1 < N; c1 += 1) { - for (int c3 = c1 - 1; c3 < N; c3 += 1) { - S6(c1 - 2, c3); - for (int c5 = c1 - 2; c5 < M; c5 += 1) - S7(c1 - 2, c3, c5); - S8(c1 - 2, c3); - for (int c5 = c1 - 2; c5 < M; c5 += 1) - S9(c1 - 2, c3, c5); - } - for (int c3 = c1 - 1; c3 < M; c3 += 1) - S2(c1 - 1, c3); - S3(c1 - 1); - for (int c3 = c1 - 1; c3 < M; c3 += 1) - S4(c1 - 1, c3); - S10(c1 - 1); - S1(c1); - S5(c1 - 1); - } - if (N >= 2) { - S6(N - 2, N - 1); - for (int c5 = N - 2; c5 < M; c5 += 1) - S7(N - 2, N - 1, c5); - S8(N - 2, N - 1); - for (int c5 = N - 2; c5 < M; c5 += 1) - S9(N - 2, N - 1, c5); - for (int c3 = N - 1; c3 < M; c3 += 1) - S2(N - 1, c3); - S3(N - 1); - for (int c3 = N - 1; c3 < M; c3 += 1) - S4(N - 1, c3); - S10(N - 1); - S5(N - 1); - } -} +if (N >= 1) { + S1(0); + if (N == 1) { + for (int c1 = 0; c1 < M; c1 += 1) + S2(0, c1); + S3(0); + for (int c1 = 0; c1 < M; c1 += 1) + S4(0, c1); + S10(0); + S5(0); + } else { + for (int c1 = 0; c1 < M; c1 += 1) + S2(0, c1); + S3(0); + for (int c1 = 0; c1 < M; c1 += 1) + S4(0, c1); + S10(0); + S1(1); + S5(0); + } + for (int c0 = 2; c0 < N; c0 += 1) { + for (int c1 = c0 - 1; c1 < N; c1 += 1) { + S6(c0 - 2, c1); + for (int c2 = c0 - 2; c2 < M; c2 += 1) + S7(c0 - 2, c1, c2); + S8(c0 - 2, c1); + for (int c2 = c0 - 2; c2 < M; c2 += 1) + S9(c0 - 2, c1, c2); + } + for (int c1 = c0 - 1; c1 < M; c1 += 1) + S2(c0 - 1, c1); + S3(c0 - 1); + for (int c1 = c0 - 1; c1 < M; c1 += 1) + S4(c0 - 1, c1); + S10(c0 - 1); + S1(c0); + S5(c0 - 1); + } + if (N >= 2) { + S6(N - 2, N - 1); + for (int c2 = N - 2; c2 < M; c2 += 1) + S7(N - 2, N - 1, c2); + S8(N - 2, N - 1); + for (int c2 = N - 2; c2 < M; c2 += 1) + S9(N - 2, N - 1, c2); + for (int c1 = N - 1; c1 < M; c1 += 1) + S2(N - 1, c1); + S3(N - 1); + for (int c1 = N - 1; c1 < M; c1 += 1) + S4(N - 1, c1); + S10(N - 1); + S5(N - 1); + } +} diff --git a/test_inputs/codegen/cloog/reservoir-QR.in b/test_inputs/codegen/cloog/reservoir-QR.in deleted file mode 100644 index b81c03d7..00000000 --- a/test_inputs/codegen/cloog/reservoir-QR.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0] -> [0, i0, 5, 0, 0, 0, 0] : i0 >= 0 and i0 <= -1 + N; S9[i0, i1, i2] -> [0, 2 + i0, 0, i1, 3, i2, 0] : i0 >= 0 and i1 >= 1 + i0 and i1 <= -1 + N and i2 >= i0 and i2 <= -1 + M; S10[i0] -> [0, 1 + i0, 4, 0, 0, 0, 0] : i0 >= 0 and i0 <= -1 + N; S3[i0] -> [0, 1 + i0, 2, 0, 0, 0, 0] : i0 >= 0 and i0 <= -1 + N; S6[i0, i1] -> [0, 2 + i0, 0, i1, 0, 0, 0] : i0 >= 0 and i1 >= 1 + i0 and i1 <= -1 + N; S8[i0, i1] -> [0, 2 + i0, 0, i1, 2, 0, 0] : i0 >= 0 and i1 >= 1 + i0 and i1 <= -1 + N; S2[i0, i1] -> [0, 1 + i0, 1, i1, 0, 0, 0] : i0 >= 0 and i0 <= -1 + N and i1 >= i0 and i1 <= -1 + M; S4[i0, i1] -> [0, 1 + i0, 3, i1, 0, 0, 0] : i0 >= 0 and i0 <= -1 + N and i1 >= i0 and i1 <= -1 + M; S7[i0, i1, i2] -> [0, 2 + i0, 0, i1, 1, i2, 0] : i0 >= 0 and i1 >= 1 + i0 and i1 <= -1 + N and i2 >= i0 and i2 <= -1 + M; S5[i0] -> [0, 1 + i0, 6, 0, 0, 0, 0] : i0 >= 0 and i0 <= -1 + N } -[M, N] -> { : } -[M, N] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-QR.st b/test_inputs/codegen/cloog/reservoir-QR.st new file mode 100644 index 00000000..8be6a039 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-QR.st @@ -0,0 +1,36 @@ +domain: "[M, N] -> { S5[i0] : i0 >= 0 and i0 <= -1 + N; S1[i0] : i0 >= 0 and i0 <= -1 + N; S3[i0] : i0 >= 0 and i0 <= -1 + N; S2[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= i0 and i1 <= -1 + M; S6[i0, i1] : i0 >= 0 and i1 >= 1 + i0 and i1 <= -1 + N; S9[i0, i1, i2] : i0 >= 0 and i1 >= 1 + i0 and i1 <= -1 + N and i2 >= i0 and i2 <= -1 + M; S4[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= i0 and i1 <= -1 + M; S8[i0, i1] : i0 >= 0 and i1 >= 1 + i0 and i1 <= -1 + N; S10[i0] : i0 >= 0 and i0 <= -1 + N; S7[i0, i1, i2] : i0 >= 0 and i1 >= 1 + i0 and i1 <= -1 + N and i2 >= i0 and i2 <= -1 + M }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S3[i0] -> [(1 + i0)]; S10[i0] -> [(1 + i0)]; S5[i0] -> [(1 + i0)]; S7[i0, i1, i2] -> [(2 + i0)]; S9[i0, i1, i2] -> [(2 + i0)]; S2[i0, i1] -> [(1 + i0)]; S4[i0, i1] -> [(1 + i0)]; S8[i0, i1] -> [(2 + i0)]; S1[i0] -> [(i0)]; S6[i0, i1] -> [(2 + i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S6[i0, i1]; S9[i0, i1, i2]; S8[i0, i1]; S7[i0, i1, i2] }" + child: + schedule: "[M, N] -> [{ S7[i0, i1, i2] -> [(i1)]; S9[i0, i1, i2] -> [(i1)]; S8[i0, i1] -> [(i1)]; S6[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S6[i0, i1] }" + - filter: "[M, N] -> { S7[i0, i1, i2] }" + child: + schedule: "[M, N] -> [{ S7[i0, i1, i2] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S8[i0, i1] }" + - filter: "[M, N] -> { S9[i0, i1, i2] }" + child: + schedule: "[M, N] -> [{ S9[i0, i1, i2] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S2[i0, i1] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S3[i0] }" + - filter: "[M, N] -> { S4[i0, i1] }" + child: + schedule: "[M, N] -> [{ S4[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S10[i0] }" + - filter: "[M, N] -> { S1[i0] }" + - filter: "[M, N] -> { S5[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-bastoul3.in b/test_inputs/codegen/cloog/reservoir-bastoul3.in deleted file mode 100644 index a6a4ffc9..00000000 --- a/test_inputs/codegen/cloog/reservoir-bastoul3.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, i1, i2] -> [i0, i1, k, 0] : 2k = i0 - i1 and 2i2 = i0 - i1 and i1 >= 1 and i1 <= 3 and i1 <= -2 + i0 and i1 >= -6 + i0 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-bastoul3.st b/test_inputs/codegen/cloog/reservoir-bastoul3.st new file mode 100644 index 00000000..66fe7a33 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-bastoul3.st @@ -0,0 +1,6 @@ +domain: "{ S1[i0, i1, i2] : 2i2 = i0 - i1 and i1 >= 1 and i1 <= 3 and i1 <= -2 + i0 and i1 >= -6 + i0 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1, i2] -> [(i0)] }, { S1[i0, i1, i2] -> [(i1)] }, { S1[i0, i1, i2] -> [(i2)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-cholesky2.c b/test_inputs/codegen/cloog/reservoir-cholesky2.c index 4d1a9118..0c17655b 100644 --- a/test_inputs/codegen/cloog/reservoir-cholesky2.c +++ b/test_inputs/codegen/cloog/reservoir-cholesky2.c @@ -1,9 +1,9 @@ -for (int c1 = 2; c1 < 3 * M; c1 += 1) { - if ((c1 - 2) % 3 == 0) - S1((c1 + 1) / 3); - for (int c3 = (c1 + 1) / 3 + 1; c3 <= min(M, c1 - 2); c3 += 1) - for (int c5 = -c3 + (c1 + c3 + 1) / 2 + 1; c5 <= min(c3, c1 - c3); c5 += 1) - S3(c1 - c3 - c5 + 1, c3, c5); - for (int c3 = -c1 + 2 * ((2 * c1 + 1) / 3) + 2; c3 <= min(M, c1); c3 += 2) - S2(((c1 - c3) / 2) + 1, c3); +for (int c0 = 2; c0 < 3 * M; c0 += 1) { + if ((c0 - 2) % 3 == 0) + S1((c0 + 1) / 3); + for (int c1 = (c0 + 1) / 3 + 1; c1 <= min(M, c0 - 2); c1 += 1) + for (int c2 = -c1 + (c0 + c1 + 1) / 2 + 1; c2 <= min(c1, c0 - c1); c2 += 1) + S3(c0 - c1 - c2 + 1, c1, c2); + for (int c1 = -c0 + 2 * ((2 * c0 + 1) / 3) + 2; c1 <= min(M, c0); c1 += 2) + S2(((c0 - c1) / 2) + 1, c1); } diff --git a/test_inputs/codegen/cloog/reservoir-cholesky2.in b/test_inputs/codegen/cloog/reservoir-cholesky2.in deleted file mode 100644 index 7f62b1f0..00000000 --- a/test_inputs/codegen/cloog/reservoir-cholesky2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S3[i0, i1, i2] -> [0, -1 + i0 + i1 + i2, 1, i1, 1, i2, 0] : i0 >= 1 and i1 <= M and i2 >= 1 + i0 and i2 <= i1; S2[i0, i1] -> [0, -2 + 2i0 + i1, 2, i1, 0, 0, 0] : i0 >= 1 and i1 >= 1 + i0 and i1 <= M; S1[i0] -> [0, -1 + 3i0, 0, 0, 0, 0, 0] : i0 >= 1 and i0 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-cholesky2.st b/test_inputs/codegen/cloog/reservoir-cholesky2.st new file mode 100644 index 00000000..4ae03d71 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-cholesky2.st @@ -0,0 +1,20 @@ +domain: "[M] -> { S3[i0, i1, i2] : i0 >= 1 and i1 <= M and i2 >= 1 + i0 and i2 <= i1; S2[i0, i1] : i0 >= 1 and i1 >= 1 + i0 and i1 <= M; S1[i0] : i0 >= 1 and i0 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0] -> [(-1 + 3i0)]; S3[i0, i1, i2] -> [(-1 + i0 + i1 + i2)]; S2[i0, i1] -> [(-2 + 2i0 + i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0] }" + - filter: "[M] -> { S3[i0, i1, i2] }" + child: + schedule: "[M] -> [{ S3[i0, i1, i2] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S3[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-fusion1.c b/test_inputs/codegen/cloog/reservoir-fusion1.c index 201ffee0..d586ebae 100644 --- a/test_inputs/codegen/cloog/reservoir-fusion1.c +++ b/test_inputs/codegen/cloog/reservoir-fusion1.c @@ -1,8 +1,8 @@ { - for (int c1 = 0; c1 <= M; c1 += 1) - S1(c1); - for (int c1 = 1; c1 <= M; c1 += 1) - S2(c1); - for (int c1 = 0; c1 <= M; c1 += 1) - S3(c1); + for (int c0 = 0; c0 <= M; c0 += 1) + S1(c0); + for (int c0 = 1; c0 <= M; c0 += 1) + S2(c0); + for (int c0 = 0; c0 <= M; c0 += 1) + S3(c0); } diff --git a/test_inputs/codegen/cloog/reservoir-fusion1.in b/test_inputs/codegen/cloog/reservoir-fusion1.in deleted file mode 100644 index ca4282e4..00000000 --- a/test_inputs/codegen/cloog/reservoir-fusion1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0] -> [0, i0, 0] : i0 >= 0 and i0 <= M; S3[i0] -> [2, i0, 0] : i0 >= 0 and i0 <= M; S2[i0] -> [1, i0, 0] : i0 >= 1 and i0 <= M } -[M] -> { : M >= 1 } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-fusion1.st b/test_inputs/codegen/cloog/reservoir-fusion1.st new file mode 100644 index 00000000..25c0cfd0 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-fusion1.st @@ -0,0 +1,17 @@ +domain: "[M] -> { S3[i0] : i0 >= 0 and i0 <= M; S2[i0] : i0 >= 1 and i0 <= M; S1[i0] : i0 >= 0 and i0 <= M }" +child: + context: "[M] -> { [] : M >= 1 }" + child: + sequence: + - filter: "[M] -> { S1[i0] }" + child: + schedule: "[M] -> [{ S1[i0] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0] }" + child: + schedule: "[M] -> [{ S2[i0] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S3[i0] }" + child: + schedule: "[M] -> [{ S3[i0] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-fusion2.c b/test_inputs/codegen/cloog/reservoir-fusion2.c index 13c30301..e31aaec1 100644 --- a/test_inputs/codegen/cloog/reservoir-fusion2.c +++ b/test_inputs/codegen/cloog/reservoir-fusion2.c @@ -1,12 +1,12 @@ if (N >= 1) { - for (int c3 = 1; c3 <= M; c3 += 1) - S1(1, c3); - for (int c1 = 2; c1 <= N; c1 += 1) { - for (int c3 = 1; c3 <= M; c3 += 1) - S2(c1 - 1, c3); - for (int c3 = 1; c3 <= M; c3 += 1) - S1(c1, c3); + for (int c1 = 1; c1 <= M; c1 += 1) + S1(1, c1); + for (int c0 = 2; c0 <= N; c0 += 1) { + for (int c1 = 1; c1 <= M; c1 += 1) + S2(c0 - 1, c1); + for (int c1 = 1; c1 <= M; c1 += 1) + S1(c0, c1); } - for (int c3 = 1; c3 <= M; c3 += 1) - S2(N, c3); + for (int c1 = 1; c1 <= M; c1 += 1) + S2(N, c1); } diff --git a/test_inputs/codegen/cloog/reservoir-fusion2.in b/test_inputs/codegen/cloog/reservoir-fusion2.in deleted file mode 100644 index 53905d8d..00000000 --- a/test_inputs/codegen/cloog/reservoir-fusion2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S2[i0, i1] -> [0, 1 + i0, 0, i1, 0] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S1[i0, i1] -> [0, i0, 1, i1, 0] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M } -[M, N] -> { : } -[M, N] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-fusion2.st b/test_inputs/codegen/cloog/reservoir-fusion2.st new file mode 100644 index 00000000..ee654244 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-fusion2.st @@ -0,0 +1,16 @@ +domain: "[M, N] -> { S1[i0, i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S2[i0, i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(1 + i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S2[i0, i1] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S1[i0, i1] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-jacobi2.c b/test_inputs/codegen/cloog/reservoir-jacobi2.c index 407fc8b7..6a04045d 100644 --- a/test_inputs/codegen/cloog/reservoir-jacobi2.c +++ b/test_inputs/codegen/cloog/reservoir-jacobi2.c @@ -1,3 +1,3 @@ -for (int c1 = 0; c1 < M; c1 += 1) - for (int c3 = 0; c3 < M; c3 += 1) - S1(c1, c3); +for (int c0 = 0; c0 < M; c0 += 1) + for (int c1 = 0; c1 < M; c1 += 1) + S1(c0, c1); diff --git a/test_inputs/codegen/cloog/reservoir-jacobi2.in b/test_inputs/codegen/cloog/reservoir-jacobi2.in deleted file mode 100644 index ea86283a..00000000 --- a/test_inputs/codegen/cloog/reservoir-jacobi2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1] -> [0, i0, 0, i1, 0] : i0 >= 0 and i0 <= -1 + M and i1 >= 0 and i1 <= -1 + M } -[M] -> { : M >= 1 } -[M] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-jacobi2.st b/test_inputs/codegen/cloog/reservoir-jacobi2.st new file mode 100644 index 00000000..fe1230db --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-jacobi2.st @@ -0,0 +1,9 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 0 and i0 <= -1 + M and i1 >= 0 and i1 <= -1 + M }" +child: + context: "[M] -> { [] : M >= 1 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-jacobi3.c b/test_inputs/codegen/cloog/reservoir-jacobi3.c index 1df9bb90..72535756 100644 --- a/test_inputs/codegen/cloog/reservoir-jacobi3.c +++ b/test_inputs/codegen/cloog/reservoir-jacobi3.c @@ -1,8 +1,8 @@ -for (int c1 = 1; c1 <= M; c1 += 1) { - for (int c3 = 2; c3 < N; c3 += 1) - for (int c5 = 2; c5 < N; c5 += 1) - S1(c1, c3, c5); - for (int c3 = 2; c3 < N; c3 += 1) - for (int c5 = 2; c5 < N; c5 += 1) - S2(c1, c3, c5); +for (int c0 = 1; c0 <= M; c0 += 1) { + for (int c2 = 2; c2 < N; c2 += 1) + for (int c3 = 2; c3 < N; c3 += 1) + S1(c0, c2, c3); + for (int c2 = 2; c2 < N; c2 += 1) + for (int c3 = 2; c3 < N; c3 += 1) + S2(c0, c2, c3); } diff --git a/test_inputs/codegen/cloog/reservoir-jacobi3.in b/test_inputs/codegen/cloog/reservoir-jacobi3.in deleted file mode 100644 index 4f5cc779..00000000 --- a/test_inputs/codegen/cloog/reservoir-jacobi3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S2[i0, i1, i2] -> [0, 1 + 2i0, 1, i1, 0, i2, 0] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + N; S1[i0, i1, i2] -> [0, 2i0, 0, i1, 0, i2, 0] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + N } -[M, N] -> { : } -[M, N] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-jacobi3.st b/test_inputs/codegen/cloog/reservoir-jacobi3.st new file mode 100644 index 00000000..815ffe27 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-jacobi3.st @@ -0,0 +1,22 @@ +domain: "[M, N] -> { S2[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + N; S1[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + N }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2] -> [(2i0)]; S2[i0, i1, i2] -> [(1 + 2i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1, i2] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S2[i0, i1, i2] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1, i2] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1, i2] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam1.c b/test_inputs/codegen/cloog/reservoir-lim-lam1.c index d8a80d66..38277076 100644 --- a/test_inputs/codegen/cloog/reservoir-lim-lam1.c +++ b/test_inputs/codegen/cloog/reservoir-lim-lam1.c @@ -1,10 +1,10 @@ -for (int c1 = -99; c1 <= 100; c1 += 1) { - if (c1 <= 0) - S1(1, -c1 + 1); - for (int c3 = max(1, -2 * c1 + 3); c3 <= min(199, -2 * c1 + 199); c3 += 2) { - S2(((c3 - 1) / 2) + c1, (c3 + 1) / 2); - S1(((c3 + 1) / 2) + c1, (c3 + 1) / 2); +for (int c0 = -99; c0 <= 100; c0 += 1) { + if (c0 >= 1) + S2(c0, 1); + for (int c1 = max(1, -c0 + 1); c1 <= min(99, -c0 + 100); c1 += 1) { + S1(c0 + c1, c1); + S2(c0 + c1, c1 + 1); } - if (c1 >= 1) - S2(100, -c1 + 101); + if (c0 <= 0) + S1(c0 + 100, 100); } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam1.in b/test_inputs/codegen/cloog/reservoir-lim-lam1.in deleted file mode 100644 index b2338b03..00000000 --- a/test_inputs/codegen/cloog/reservoir-lim-lam1.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[i0, i1] -> [0, 1 + i0 - i1, 0, -1 + 2i1, 1] : i0 >= 1 and i0 <= 100 and i1 >= 1 and i1 <= 100; S1[i0, i1] -> [0, i0 - i1, 0, 2i1, 0] : i0 >= 1 and i0 <= 100 and i1 >= 1 and i1 <= 100 } -{ : } -{ [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam1.st b/test_inputs/codegen/cloog/reservoir-lim-lam1.st new file mode 100644 index 00000000..cf7efee1 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-lim-lam1.st @@ -0,0 +1,13 @@ +domain: "{ S2[i0, i1] : i0 >= 1 and i0 <= 100 and i1 >= 1 and i1 <= 100; S1[i0, i1] : i0 >= 1 and i0 <= 100 and i1 >= 1 and i1 <= 100 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1] -> [(i0 - i1)]; S2[i0, i1] -> [(1 + i0 - i1)] }]" + options: "{ separate[i0] }" + child: + schedule: "[{ S1[i0, i1] -> [(2i1)]; S2[i0, i1] -> [(-1 + 2i1)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1] }" + - filter: "{ S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam2.c b/test_inputs/codegen/cloog/reservoir-lim-lam2.c index f3215bf6..483fe52b 100644 --- a/test_inputs/codegen/cloog/reservoir-lim-lam2.c +++ b/test_inputs/codegen/cloog/reservoir-lim-lam2.c @@ -1,10 +1,10 @@ { - for (int c1 = 1; c1 <= M; c1 += 1) - S1(c1); - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 2; c3 <= N; c3 += 1) - S2(c1, c3); - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 < N; c3 += 1) - S3(c1, c3); + for (int c0 = 1; c0 <= M; c0 += 1) + S1(c0); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 2; c1 <= N; c1 += 1) + S2(c0, c1); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 < N; c1 += 1) + S3(c0, c1); } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam2.in b/test_inputs/codegen/cloog/reservoir-lim-lam2.in deleted file mode 100644 index eb62bb7d..00000000 --- a/test_inputs/codegen/cloog/reservoir-lim-lam2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0] -> [0, i0, 0, 0, 0] : i0 >= 1 and i0 <= M; S2[i0, i1] -> [1, i0, 1, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= N; S3[i0, i1] -> [2, i0, 2, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= -1 + N } -[M, N] -> { : M >= 1 and N >= 1 } -[M, N] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam2.st b/test_inputs/codegen/cloog/reservoir-lim-lam2.st new file mode 100644 index 00000000..b53558fe --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-lim-lam2.st @@ -0,0 +1,23 @@ +domain: "[M, N] -> { S3[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= -1 + N; S1[i0] : i0 >= 1 and i0 <= M; S2[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= N }" +child: + context: "[M, N] -> { [] : M >= 1 and N >= 1 }" + child: + sequence: + - filter: "[M, N] -> { S1[i0] }" + child: + schedule: "[M, N] -> [{ S1[i0] -> [(i0)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S2[i0, i1] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S3[i0, i1] }" + child: + schedule: "[M, N] -> [{ S3[i0, i1] -> [(i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S3[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam3.c b/test_inputs/codegen/cloog/reservoir-lim-lam3.c dissimilarity index 99% index c786628d..9d290b51 100644 --- a/test_inputs/codegen/cloog/reservoir-lim-lam3.c +++ b/test_inputs/codegen/cloog/reservoir-lim-lam3.c @@ -1,11 +1,11 @@ -for (int c1 = 5; c1 <= 5 * M; c1 += 1) { - for (int c3 = max(2, floord(-M + c1, 4)); c3 < min(M, (c1 + 1) / 3 - 2); c3 += 1) - for (int c5 = max(1, -M - c3 + (M + c1) / 2 - 2); c5 < min(c3, -2 * c3 + (c1 + c3) / 2 - 2); c5 += 1) - S1(c1 - 2 * c3 - 2 * c5 - 5, c3, c5); - for (int c3 = max(1, floord(-M + c1, 4)); c3 < (c1 + 1) / 5; c3 += 1) - S2(c1 - 4 * c3 - 3, c3); - if (c1 % 5 == 0) - S4(c1 / 5); - for (int c3 = max(-3 * M - c1 + 3 * ((M + c1) / 2) + 1, -((c1 - 1) % 3) + 3); c3 < (c1 + 1) / 5; c3 += 3) - S3((c1 - 2 * c3 - 1) / 3, c3); -} +for (int c0 = 5; c0 <= 5 * M; c0 += 1) { + for (int c1 = max(2, floord(-M + c0, 4)); c1 < min(-((5 * M - c0 + 1) % 2) + M, (c0 + 1) / 3 - 2); c1 += 1) + for (int c2 = max(1, -M - c1 + (M + c0) / 2 - 2); c2 < min(c1, -2 * c1 + (c0 + c1) / 2 - 2); c2 += 1) + S1(c0 - 2 * c1 - 2 * c2 - 5, c1, c2); + for (int c1 = max(1, floord(-M + c0, 4)); c1 < (c0 + 1) / 5; c1 += 1) + S2(c0 - 4 * c1 - 3, c1); + if (c0 % 5 == 0) + S4(c0 / 5); + for (int c1 = max(-3 * M - c0 + 3 * ((M + c0) / 2) + 1, -((c0 - 1) % 3) + 3); c1 < (c0 + 1) / 5; c1 += 3) + S3((c0 - 2 * c1 - 1) / 3, c1); +} diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam3.in b/test_inputs/codegen/cloog/reservoir-lim-lam3.in deleted file mode 100644 index ebf78ae0..00000000 --- a/test_inputs/codegen/cloog/reservoir-lim-lam3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1, i2] -> [0, 5 + i0 + 2i1 + 2i2, 0, i1, 0, i2, 0] : i0 <= M and i1 <= -1 + i0 and i2 >= 1 and i2 <= -1 + i1; S3[i0, i1] -> [0, 1 + 3i0 + 2i1, 2, i1, 0, 0, 0] : i0 <= M and i1 >= 1 and i1 <= -1 + i0; S2[i0, i1] -> [0, 3 + i0 + 4i1, 1, i1, 1, 0, 0] : i0 <= M and i1 >= 1 and i1 <= -1 + i0; S4[i0] -> [0, 5i0, 2, 0, 0, 0, 0] : i0 >= 1 and i0 <= M } -[M] -> { : M >= 1 } -[M] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam3.st b/test_inputs/codegen/cloog/reservoir-lim-lam3.st new file mode 100644 index 00000000..cedd5e5d --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-lim-lam3.st @@ -0,0 +1,23 @@ +domain: "[M] -> { S4[i0] : i0 >= 1 and i0 <= M; S3[i0, i1] : i0 <= M and i1 >= 1 and i1 <= -1 + i0; S2[i0, i1] : i0 <= M and i1 >= 1 and i1 <= -1 + i0; S1[i0, i1, i2] : i0 <= M and i1 <= -1 + i0 and i2 >= 1 and i2 <= -1 + i1 }" +child: + context: "[M] -> { [] : M >= 1 }" + child: + schedule: "[M] -> [{ S4[i0] -> [(5i0)]; S1[i0, i1, i2] -> [(5 + i0 + 2i1 + 2i2)]; S3[i0, i1] -> [(1 + 3i0 + 2i1)]; S2[i0, i1] -> [(3 + i0 + 4i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1, i2] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S4[i0]; S3[i0, i1] }" + child: + schedule: "[M] -> [{ S4[i0] -> [(0)]; S3[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam4.c b/test_inputs/codegen/cloog/reservoir-lim-lam4.c dissimilarity index 96% index 6a0b0bad..ed00e997 100644 --- a/test_inputs/codegen/cloog/reservoir-lim-lam4.c +++ b/test_inputs/codegen/cloog/reservoir-lim-lam4.c @@ -1,10 +1,10 @@ -for (int c1 = 1; c1 < 2 * M - 1; c1 += 1) { - for (int c3 = max(-M + 1, -c1 + 1); c3 < 0; c3 += 1) { - for (int c7 = max(1, -M + c1 + 1); c7 <= min(M - 1, c1 + c3); c7 += 1) - S1(c7, c1 + c3 - c7, -c3); - for (int c5 = max(-M + c1 + 1, -c3); c5 < min(M, c1); c5 += 1) - S2(c1 - c5, c3 + c5, c5); - } - for (int c7 = max(1, -M + c1 + 1); c7 <= min(M - 1, c1); c7 += 1) - S1(c7, c1 - c7, 0); -} +for (int c0 = 1; c0 < 2 * M - 1; c0 += 1) { + for (int c1 = max(-M + 1, -c0 + 1); c1 < 0; c1 += 1) { + for (int c3 = max(1, -M + c0 + 1); c3 <= min(M - 1, c0 + c1); c3 += 1) + S1(c3, c0 + c1 - c3, -c1); + for (int c2 = max(-M + c0 + 1, -c1); c2 < min(M, c0); c2 += 1) + S2(c0 - c2, c1 + c2, c2); + } + for (int c3 = max(1, -M + c0 + 1); c3 <= min(M - 1, c0); c3 += 1) + S1(c3, c0 - c3, 0); +} diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam4.in b/test_inputs/codegen/cloog/reservoir-lim-lam4.in deleted file mode 100644 index 1bb684f8..00000000 --- a/test_inputs/codegen/cloog/reservoir-lim-lam4.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1, i2] -> [0, i0 + i1 + i2, 0, -i2, 0, i2, 0] : i0 >= 1 and i0 <= -1 + M and i1 >= 0 and i2 >= 0 and i2 <= -1 + M - i1; S2[i0, i1, i2] -> [0, i0 + i2, 0, i1 - i2, 1, i2, 0] : i0 >= 1 and i0 <= -1 + M and i1 >= 0 and i2 >= 1 + i1 and i2 <= -1 + M } -[M] -> { : } -[M] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam4.st b/test_inputs/codegen/cloog/reservoir-lim-lam4.st new file mode 100644 index 00000000..14b0052e --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-lim-lam4.st @@ -0,0 +1,19 @@ +domain: "[M] -> { S2[i0, i1, i2] : i0 >= 1 and i0 <= -1 + M and i1 >= 0 and i2 >= 1 + i1 and i2 <= -1 + M; S1[i0, i1, i2] : i0 >= 1 and i0 <= -1 + M and i1 >= 0 and i2 >= 0 and i2 <= -1 + M - i1 }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i0 + i1 + i2)]; S2[i0, i1, i2] -> [(i0 + i2)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(-i2)]; S2[i0, i1, i2] -> [(i1 - i2)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1, i2] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1, i2] }" + child: + schedule: "[M] -> [{ S2[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam5.c b/test_inputs/codegen/cloog/reservoir-lim-lam5.c index f4761857..05cbb742 100644 --- a/test_inputs/codegen/cloog/reservoir-lim-lam5.c +++ b/test_inputs/codegen/cloog/reservoir-lim-lam5.c @@ -1,11 +1,11 @@ { - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S1(c1, c3); - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S2(c1, c3); - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S3(c1, c3); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S1(c0, c1); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S2(c0, c1); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S3(c0, c1); } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam5.in b/test_inputs/codegen/cloog/reservoir-lim-lam5.in deleted file mode 100644 index 2e2046f1..00000000 --- a/test_inputs/codegen/cloog/reservoir-lim-lam5.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [1, i0, 0, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S1[i0, i1] -> [0, i0, 0, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S3[i0, i1] -> [2, i0, 0, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam5.st b/test_inputs/codegen/cloog/reservoir-lim-lam5.st new file mode 100644 index 00000000..56844552 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-lim-lam5.st @@ -0,0 +1,26 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S3[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S2[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M }" +child: + context: "[M] -> { [] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S3[i0, i1] }" + child: + schedule: "[M] -> [{ S3[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S3[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam6.c b/test_inputs/codegen/cloog/reservoir-lim-lam6.c index 2cc51226..39e45383 100644 --- a/test_inputs/codegen/cloog/reservoir-lim-lam6.c +++ b/test_inputs/codegen/cloog/reservoir-lim-lam6.c @@ -1,8 +1,8 @@ { - for (int c1 = 0; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S1(c1, c3); - for (int c1 = 0; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S2(c3, c1); + for (int c0 = 0; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S1(c0, c1); + for (int c0 = 0; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S2(c1, c0); } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam6.in b/test_inputs/codegen/cloog/reservoir-lim-lam6.in deleted file mode 100644 index 2699212b..00000000 --- a/test_inputs/codegen/cloog/reservoir-lim-lam6.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [1, i1, 0, i0, 0] : i0 >= 1 and i0 <= M and i1 >= 0 and i1 <= M; S1[i0, i1] -> [0, i0, 0, i1, 0] : i0 >= 0 and i0 <= M and i1 >= 1 and i1 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-lim-lam6.st b/test_inputs/codegen/cloog/reservoir-lim-lam6.st new file mode 100644 index 00000000..3119ef13 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-lim-lam6.st @@ -0,0 +1,19 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 0 and i0 <= M and i1 >= 1 and i1 <= M; S2[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 0 and i1 <= M }" +child: + context: "[M] -> { [] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-liu-zhuge1.c b/test_inputs/codegen/cloog/reservoir-liu-zhuge1.c dissimilarity index 94% index dfc7d37d..42547118 100644 --- a/test_inputs/codegen/cloog/reservoir-liu-zhuge1.c +++ b/test_inputs/codegen/cloog/reservoir-liu-zhuge1.c @@ -1,17 +1,17 @@ -if (M >= 0 && N >= 0) - for (int c1 = -4; c1 <= 3 * M + N; c1 += 1) { - if (3 * M + N >= c1 + 1 && c1 >= 3 * M) { - S2(M, -3 * M + c1); - } else if (3 * M >= c1 + 4 && (c1 - 2) % 3 == 0) - S1((c1 + 4) / 3, 0); - for (int c3 = max(-3 * M + c1 + 3, (c1 + 6) % 3); c3 <= min(N - 1, c1); c3 += 3) { - S2((c1 - c3) / 3, c3); - S1(((c1 - c3) / 3) + 1, c3 + 1); - } - if (c1 >= N && (N - c1) % 3 == 0) { - S2((-N + c1) / 3, N); - } else if (N >= c1 + 4 && c1 >= -3) - S1(0, c1 + 4); - for (int c3 = max(-3 * M + c1, (c1 + 6) % 3); c3 <= min(N, c1); c3 += 3) - S3((c1 - c3) / 3, c3); - } +if (M >= 0 && N >= 0) + for (int c0 = -4; c0 <= 3 * M + N; c0 += 1) { + if (c0 >= 0 && 3 * M + 1 >= c0 && (c0 + 1) % 3 >= 1 && N + 1 >= (c0 + 1) % 3) + S2((c0 + 1) / 3, ((c0 + 1) % 3) - 1); + for (int c1 = max(-3 * M + c0 - 2, (c0 + 4) % 3); c1 <= min(min(N - 2, c0 - 2), -3 * M + c0 + 3); c1 += 3) + S2((c0 - c1 - 2) / 3, c1 + 2); + for (int c1 = max(-3 * M + c0 + 4, (c0 + 4) % 3); c1 < min(N - 1, c0 - 1); c1 += 3) { + S1((c0 - c1 + 4) / 3, c1); + S2((c0 - c1 - 2) / 3, c1 + 2); + } + if (3 * M + N >= c0 + 4 && c0 >= N + 1 && ((-N + c0) % 3) + N >= 2 && (-N + c0) % 3 >= 1) + S1((-N + c0 + 3) / 3 + 1, ((-N + c0) % 3) + N - 2); + for (int c1 = max(max(c0 + 1, -3 * M + c0 + 4), (c0 + 4) % 3); c1 <= min(N, c0 + 4); c1 += 3) + S1((c0 - c1 + 4) / 3, c1); + for (int c1 = max(-3 * M + c0, (c0 + 6) % 3); c1 <= min(N, c0); c1 += 3) + S3((c0 - c1) / 3, c1); + } diff --git a/test_inputs/codegen/cloog/reservoir-liu-zhuge1.in b/test_inputs/codegen/cloog/reservoir-liu-zhuge1.in deleted file mode 100644 index fd4dcc88..00000000 --- a/test_inputs/codegen/cloog/reservoir-liu-zhuge1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S2[i0, i1] -> [0, 3i0 + i1, 0, i1, 0] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= N; S3[i0, i1] -> [0, 3i0 + i1, 1, i1, 0] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= N; S1[i0, i1] -> [0, -4 + 3i0 + i1, 0, i1, 0] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= N } -[M, N] -> { : } -[M, N] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-liu-zhuge1.st b/test_inputs/codegen/cloog/reservoir-liu-zhuge1.st new file mode 100644 index 00000000..e915285f --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-liu-zhuge1.st @@ -0,0 +1,16 @@ +domain: "[M, N] -> { S3[i0, i1] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= N; S1[i0, i1] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= N; S2[i0, i1] : i0 >= 0 and i0 <= M and i1 >= 0 and i1 <= N }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(-4 + 3i0 + i1)]; S2[i0, i1] -> [(3i0 + i1)]; S3[i0, i1] -> [(3i0 + i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1]; S2[i0, i1] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S3[i0, i1] }" + child: + schedule: "[M, N] -> [{ S3[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-loechner3.c b/test_inputs/codegen/cloog/reservoir-loechner3.c index d37df98b..a164372c 100644 --- a/test_inputs/codegen/cloog/reservoir-loechner3.c +++ b/test_inputs/codegen/cloog/reservoir-loechner3.c @@ -1,4 +1,4 @@ -for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 2; c3 <= M + c1; c3 += 1) - for (int c5 = max(1, -c1 + c3); c5 <= min(M, c3 - 1); c5 += 1) - S1(c1, c5, c3 - c5); +for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 2; c1 <= M + c0; c1 += 1) + for (int c2 = max(1, -c0 + c1); c2 <= min(M, c1 - 1); c2 += 1) + S1(c0, c2, c1 - c2); diff --git a/test_inputs/codegen/cloog/reservoir-loechner3.in b/test_inputs/codegen/cloog/reservoir-loechner3.in deleted file mode 100644 index 03731713..00000000 --- a/test_inputs/codegen/cloog/reservoir-loechner3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1, i2] -> [0, i0, 0, i1 + i2, 0, i1, 0] : i0 <= M and i1 >= 1 and i1 <= M and i2 >= 1 and i2 <= i0 } -[M] -> { : } -[M] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-loechner3.st b/test_inputs/codegen/cloog/reservoir-loechner3.st new file mode 100644 index 00000000..90b561a7 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-loechner3.st @@ -0,0 +1,12 @@ +domain: "[M] -> { S1[i0, i1, i2] : i0 <= M and i1 >= 1 and i1 <= M and i2 >= 1 and i2 <= i0 }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i1 + i2)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-loechner4.c b/test_inputs/codegen/cloog/reservoir-loechner4.c index 7a67212b..cf9c7642 100644 --- a/test_inputs/codegen/cloog/reservoir-loechner4.c +++ b/test_inputs/codegen/cloog/reservoir-loechner4.c @@ -1,5 +1,5 @@ -for (int c1 = 2; c1 <= 2 * M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - for (int c5 = 1; c5 <= M; c5 += 1) - for (int c7 = max(1, -M + c1); c7 <= min(M, c1 - 1); c7 += 1) - S1(c5, c3, c7, c1 - c7); +for (int c0 = 2; c0 <= 2 * M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + for (int c2 = 1; c2 <= M; c2 += 1) + for (int c3 = max(1, -M + c0); c3 <= min(M, c0 - 1); c3 += 1) + S1(c2, c1, c3, c0 - c3); diff --git a/test_inputs/codegen/cloog/reservoir-loechner4.in b/test_inputs/codegen/cloog/reservoir-loechner4.in deleted file mode 100644 index 1a807021..00000000 --- a/test_inputs/codegen/cloog/reservoir-loechner4.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1, i2, i3] -> [0, i2 + i3, 0, i1, 0, i0, 0, i2, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M and i2 >= 1 and i2 <= M and i3 >= 1 and i3 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m, n, o, p, q] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-loechner4.st b/test_inputs/codegen/cloog/reservoir-loechner4.st new file mode 100644 index 00000000..516da7ea --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-loechner4.st @@ -0,0 +1,15 @@ +domain: "[M] -> { S1[i0, i1, i2, i3] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M and i2 >= 1 and i2 <= M and i3 >= 1 and i3 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i2 + i3)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-loechner5.c b/test_inputs/codegen/cloog/reservoir-loechner5.c index c5f8fcc3..6193503d 100644 --- a/test_inputs/codegen/cloog/reservoir-loechner5.c +++ b/test_inputs/codegen/cloog/reservoir-loechner5.c @@ -1,5 +1,5 @@ -for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - for (int c5 = 1; c5 <= M; c5 += 1) - for (int c7 = 1; c7 <= M; c7 += 1) - S1(c3, c5, c1, c7); +for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + for (int c2 = 1; c2 <= M; c2 += 1) + for (int c3 = 1; c3 <= M; c3 += 1) + S1(c1, c2, c0, c3); diff --git a/test_inputs/codegen/cloog/reservoir-loechner5.in b/test_inputs/codegen/cloog/reservoir-loechner5.in deleted file mode 100644 index 9122fc0a..00000000 --- a/test_inputs/codegen/cloog/reservoir-loechner5.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1, i2, i3] -> [0, i2, 0, i0, 0, i1, 0, i3, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M and i2 >= 1 and i2 <= M and i3 >= 1 and i3 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m, n, o, p, q] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-loechner5.st b/test_inputs/codegen/cloog/reservoir-loechner5.st new file mode 100644 index 00000000..691d924c --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-loechner5.st @@ -0,0 +1,15 @@ +domain: "[M] -> { S1[i0, i1, i2, i3] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M and i2 >= 1 and i2 <= M and i3 >= 1 and i3 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2, i3] -> [(i3)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-mg-interp.c b/test_inputs/codegen/cloog/reservoir-mg-interp.c dissimilarity index 94% index cff8f172..c5d7774a 100644 --- a/test_inputs/codegen/cloog/reservoir-mg-interp.c +++ b/test_inputs/codegen/cloog/reservoir-mg-interp.c @@ -1,85 +1,85 @@ -{ - if (N >= 2) - for (int c1 = 1; c1 < O; c1 += 1) { - for (int c5 = 1; c5 <= M; c5 += 1) - S1(c1, 1, c5); - for (int c5 = 1; c5 < M; c5 += 1) { - S6(c1, 1, c5); - S7(c1, 1, c5); - } - if (N >= 3) { - for (int c5 = 1; c5 <= M; c5 += 1) - S3(c1, 1, c5); - for (int c5 = 1; c5 <= M; c5 += 1) - S1(c1, 2, c5); - for (int c5 = 1; c5 < M; c5 += 1) { - S6(c1, 2, c5); - S7(c1, 2, c5); - } - for (int c5 = 1; c5 < M; c5 += 1) - S11(c1, 1, c5); - } else { - for (int c5 = 1; c5 <= M; c5 += 1) - S3(c1, 1, c5); - for (int c5 = 1; c5 < M; c5 += 1) - S11(c1, 1, c5); - } - for (int c3 = 3; c3 < 2 * N - 4; c3 += 2) { - for (int c5 = 1; c5 < M; c5 += 1) - S10(c1, (c3 - 1) / 2, c5); - for (int c5 = 1; c5 <= M; c5 += 1) - S3(c1, (c3 + 1) / 2, c5); - for (int c5 = 1; c5 <= M; c5 += 1) - S1(c1, (c3 + 3) / 2, c5); - for (int c5 = 1; c5 < M; c5 += 1) { - S6(c1, (c3 + 3) / 2, c5); - S7(c1, (c3 + 3) / 2, c5); - } - for (int c5 = 1; c5 < M; c5 += 1) - S11(c1, (c3 + 1) / 2, c5); - } - if (N >= 3) { - for (int c5 = 1; c5 < M; c5 += 1) - S10(c1, N - 2, c5); - for (int c5 = 1; c5 <= M; c5 += 1) - S3(c1, N - 1, c5); - for (int c5 = 1; c5 < M; c5 += 1) - S11(c1, N - 1, c5); - } - for (int c5 = 1; c5 < M; c5 += 1) - S10(c1, N - 1, c5); - } - for (int c1 = 1; c1 < O; c1 += 1) - for (int c3 = 1; c3 < N; c3 += 1) { - for (int c5 = 1; c5 <= M; c5 += 1) - S2(c1, c3, c5); - for (int c5 = 1; c5 < M; c5 += 1) - S8(c1, c3, c5); - for (int c5 = 1; c5 < M; c5 += 1) - S9(c1, c3, c5); - } - for (int c1 = 1; c1 < O; c1 += 1) - for (int c3 = 1; c3 < N; c3 += 1) - for (int c5 = 1; c5 < M; c5 += 1) - S4(c1, c3, c5); - for (int c1 = 1; c1 < O; c1 += 1) - for (int c3 = 1; c3 < N; c3 += 1) - for (int c5 = 1; c5 < M; c5 += 1) - S5(c1, c3, c5); - for (int c1 = R; c1 < O; c1 += 1) - for (int c3 = Q; c3 < N; c3 += 1) - for (int c5 = P; c5 < M; c5 += 1) - S12(c1, c3, c5); - for (int c1 = R; c1 < O; c1 += 1) - for (int c3 = Q; c3 < N; c3 += 1) - for (int c5 = 1; c5 < M; c5 += 1) - S13(c1, c3, c5); - for (int c1 = R; c1 < O; c1 += 1) - for (int c3 = 1; c3 < N; c3 += 1) - for (int c5 = P; c5 < M; c5 += 1) - S14(c1, c3, c5); - for (int c1 = R; c1 < O; c1 += 1) - for (int c3 = 1; c3 < N; c3 += 1) - for (int c5 = 1; c5 < M; c5 += 1) - S15(c1, c3, c5); -} +{ + if (N >= 2) + for (int c0 = 1; c0 < O; c0 += 1) { + for (int c3 = 1; c3 <= M; c3 += 1) + S1(c0, 1, c3); + for (int c3 = 1; c3 < M; c3 += 1) { + S6(c0, 1, c3); + S7(c0, 1, c3); + } + if (N >= 3) { + for (int c3 = 1; c3 <= M; c3 += 1) + S3(c0, 1, c3); + for (int c3 = 1; c3 <= M; c3 += 1) + S1(c0, 2, c3); + for (int c3 = 1; c3 < M; c3 += 1) { + S6(c0, 2, c3); + S7(c0, 2, c3); + } + for (int c3 = 1; c3 < M; c3 += 1) + S11(c0, 1, c3); + } else { + for (int c3 = 1; c3 <= M; c3 += 1) + S3(c0, 1, c3); + for (int c3 = 1; c3 < M; c3 += 1) + S11(c0, 1, c3); + } + for (int c1 = 3; c1 < 2 * N - 4; c1 += 2) { + for (int c3 = 1; c3 < M; c3 += 1) + S10(c0, (c1 - 1) / 2, c3); + for (int c3 = 1; c3 <= M; c3 += 1) + S3(c0, (c1 + 1) / 2, c3); + for (int c3 = 1; c3 <= M; c3 += 1) + S1(c0, (c1 + 3) / 2, c3); + for (int c3 = 1; c3 < M; c3 += 1) { + S6(c0, (c1 + 3) / 2, c3); + S7(c0, (c1 + 3) / 2, c3); + } + for (int c3 = 1; c3 < M; c3 += 1) + S11(c0, (c1 + 1) / 2, c3); + } + if (N >= 3) { + for (int c3 = 1; c3 < M; c3 += 1) + S10(c0, N - 2, c3); + for (int c3 = 1; c3 <= M; c3 += 1) + S3(c0, N - 1, c3); + for (int c3 = 1; c3 < M; c3 += 1) + S11(c0, N - 1, c3); + } + for (int c3 = 1; c3 < M; c3 += 1) + S10(c0, N - 1, c3); + } + for (int c0 = 1; c0 < O; c0 += 1) + for (int c1 = 1; c1 < N; c1 += 1) { + for (int c3 = 1; c3 <= M; c3 += 1) + S2(c0, c1, c3); + for (int c3 = 1; c3 < M; c3 += 1) + S8(c0, c1, c3); + for (int c3 = 1; c3 < M; c3 += 1) + S9(c0, c1, c3); + } + for (int c0 = 1; c0 < O; c0 += 1) + for (int c1 = 1; c1 < N; c1 += 1) + for (int c2 = 1; c2 < M; c2 += 1) + S4(c0, c1, c2); + for (int c0 = 1; c0 < O; c0 += 1) + for (int c1 = 1; c1 < N; c1 += 1) + for (int c2 = 1; c2 < M; c2 += 1) + S5(c0, c1, c2); + for (int c0 = R; c0 < O; c0 += 1) + for (int c1 = Q; c1 < N; c1 += 1) + for (int c2 = P; c2 < M; c2 += 1) + S12(c0, c1, c2); + for (int c0 = R; c0 < O; c0 += 1) + for (int c1 = Q; c1 < N; c1 += 1) + for (int c2 = 1; c2 < M; c2 += 1) + S13(c0, c1, c2); + for (int c0 = R; c0 < O; c0 += 1) + for (int c1 = 1; c1 < N; c1 += 1) + for (int c2 = P; c2 < M; c2 += 1) + S14(c0, c1, c2); + for (int c0 = R; c0 < O; c0 += 1) + for (int c1 = 1; c1 < N; c1 += 1) + for (int c2 = 1; c2 < M; c2 += 1) + S15(c0, c1, c2); +} diff --git a/test_inputs/codegen/cloog/reservoir-mg-interp.in b/test_inputs/codegen/cloog/reservoir-mg-interp.in deleted file mode 100644 index b7fdb697..00000000 --- a/test_inputs/codegen/cloog/reservoir-mg-interp.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N, O, P, Q, R, S, T, U] -> { S8[i0, i1, i2] -> [1, i0, 0, 2i1, 1, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S11[i0, i1, i2] -> [0, i0, 0, 2i1, 4, i2, 1] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S6[i0, i1, i2] -> [0, i0, 0, -2 + 2i1, 2, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S9[i0, i1, i2] -> [1, i0, 0, 1 + 2i1, 3, i2, 1] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S1[i0, i1, i2] -> [0, i0, 0, -3 + 2i1, 2, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S4[i0, i1, i2] -> [2, i0, 0, i1, 1, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S2[i0, i1, i2] -> [1, i0, 0, 2i1, 0, i2, 1] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S7[i0, i1, i2] -> [0, i0, 0, -2 + 2i1, 2, i2, 1] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S10[i0, i1, i2] -> [0, i0, 0, 1 + 2i1, 0, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S3[i0, i1, i2] -> [0, i0, 0, -1 + 2i1, 1, i2, 2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S15[i0, i1, i2] -> [7, i0, 1, i1, 1, i2, 0] : i0 >= R and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S5[i0, i1, i2] -> [3, i0, 0, i1, 1, i2, 1] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S13[i0, i1, i2] -> [5, i0, 0, i1, 1, i2, 0] : i0 >= R and i0 <= -1 + O and i1 >= Q and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S12[i0, i1, i2] -> [4, i0, 0, i1, 0, i2, 0] : i0 >= R and i0 <= -1 + O and i1 >= Q and i1 <= -1 + N and i2 >= P and i2 <= -1 + M; S14[i0, i1, i2] -> [6, i0, 1, i1, 0, i2, 0] : i0 >= R and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= P and i2 <= -1 + M } -[M, N, O, P, Q, R, S, T, U] -> { : } -[M, N, O, P, Q, R, S, T, U] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-mg-interp.st b/test_inputs/codegen/cloog/reservoir-mg-interp.st new file mode 100644 index 00000000..2d630150 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-mg-interp.st @@ -0,0 +1,115 @@ +domain: "[M, N, O, P, Q, R, S, T, U] -> { S8[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S12[i0, i1, i2] : i0 >= R and i0 <= -1 + O and i1 >= Q and i1 <= -1 + N and i2 >= P and i2 <= -1 + M; S5[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S10[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S6[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S1[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S3[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S4[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S15[i0, i1, i2] : i0 >= R and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S11[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S2[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S7[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S9[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S14[i0, i1, i2] : i0 >= R and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= P and i2 <= -1 + M; S13[i0, i1, i2] : i0 >= R and i0 <= -1 + O and i1 >= Q and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M }" +child: + context: "[M, N, O, P, Q, R, S, T, U] -> { [] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S10[i0, i1, i2]; S6[i0, i1, i2]; S3[i0, i1, i2]; S1[i0, i1, i2]; S11[i0, i1, i2]; S7[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S11[i0, i1, i2] -> [(i0)]; S1[i0, i1, i2] -> [(i0)]; S6[i0, i1, i2] -> [(i0)]; S10[i0, i1, i2] -> [(i0)]; S3[i0, i1, i2] -> [(i0)]; S7[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S11[i0, i1, i2] -> [(2i1)]; S1[i0, i1, i2] -> [(-3 + 2i1)]; S6[i0, i1, i2] -> [(-2 + 2i1)]; S10[i0, i1, i2] -> [(1 + 2i1)]; S3[i0, i1, i2] -> [(-1 + 2i1)]; S7[i0, i1, i2] -> [(-2 + 2i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S10[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S10[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S3[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S3[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S6[i0, i1, i2]; S1[i0, i1, i2]; S7[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S1[i0, i1, i2] -> [(i2)]; S6[i0, i1, i2] -> [(i2)]; S7[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S6[i0, i1, i2]; S1[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S7[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S11[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S11[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S2[i0, i1, i2]; S9[i0, i1, i2]; S8[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S2[i0, i1, i2] -> [(i0)]; S8[i0, i1, i2] -> [(i0)]; S9[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S2[i0, i1, i2] -> [(2i1)]; S8[i0, i1, i2] -> [(2i1)]; S9[i0, i1, i2] -> [(1 + 2i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S2[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S2[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S8[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S8[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S9[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S9[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S4[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S4[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S4[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S4[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S5[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S5[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S5[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S5[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S12[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S12[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S12[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S12[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S13[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S13[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S13[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S13[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S14[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S14[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S14[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S14[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S15[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S15[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S15[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S15[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-mg-interp2.c b/test_inputs/codegen/cloog/reservoir-mg-interp2.c dissimilarity index 99% index 98cd4b07..48c5dfdd 100644 --- a/test_inputs/codegen/cloog/reservoir-mg-interp2.c +++ b/test_inputs/codegen/cloog/reservoir-mg-interp2.c @@ -1,18 +1,18 @@ -{ - for (int c1 = 1; c1 < O; c1 += 1) - for (int c3 = Q; c3 < N; c3 += 1) - for (int c5 = P; c5 < M; c5 += 1) - S1(c1, c3, c5); - for (int c1 = 1; c1 < O; c1 += 1) - for (int c3 = Q; c3 < N; c3 += 1) - for (int c5 = 1; c5 < M; c5 += 1) - S2(c1, c3, c5); - for (int c1 = 1; c1 < O; c1 += 1) - for (int c3 = 1; c3 < N; c3 += 1) - for (int c5 = P; c5 < M; c5 += 1) - S3(c1, c3, c5); - for (int c1 = 1; c1 < O; c1 += 1) - for (int c3 = 1; c3 < N; c3 += 1) - for (int c5 = 1; c5 < M; c5 += 1) - S4(c1, c3, c5); -} +{ + for (int c0 = 1; c0 < O; c0 += 1) + for (int c1 = Q; c1 < N; c1 += 1) + for (int c2 = P; c2 < M; c2 += 1) + S1(c0, c1, c2); + for (int c0 = 1; c0 < O; c0 += 1) + for (int c1 = Q; c1 < N; c1 += 1) + for (int c2 = 1; c2 < M; c2 += 1) + S2(c0, c1, c2); + for (int c0 = 1; c0 < O; c0 += 1) + for (int c1 = 1; c1 < N; c1 += 1) + for (int c2 = P; c2 < M; c2 += 1) + S3(c0, c1, c2); + for (int c0 = 1; c0 < O; c0 += 1) + for (int c1 = 1; c1 < N; c1 += 1) + for (int c2 = 1; c2 < M; c2 += 1) + S4(c0, c1, c2); +} diff --git a/test_inputs/codegen/cloog/reservoir-mg-interp2.in b/test_inputs/codegen/cloog/reservoir-mg-interp2.in deleted file mode 100644 index 8a5dfb12..00000000 --- a/test_inputs/codegen/cloog/reservoir-mg-interp2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N, O, P, Q, R, S, T, U] -> { S1[i0, i1, i2] -> [0, i0, 0, i1, 0, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= Q and i1 <= -1 + N and i2 >= P and i2 <= -1 + M; S4[i0, i1, i2] -> [3, i0, 1, i1, 1, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S2[i0, i1, i2] -> [1, i0, 0, i1, 1, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= Q and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S3[i0, i1, i2] -> [2, i0, 1, i1, 0, i2, 0] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= P and i2 <= -1 + M } -[M, N, O, P, Q, R, S, T, U] -> { : } -[M, N, O, P, Q, R, S, T, U] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-mg-interp2.st b/test_inputs/codegen/cloog/reservoir-mg-interp2.st new file mode 100644 index 00000000..a2ea2b35 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-mg-interp2.st @@ -0,0 +1,45 @@ +domain: "[M, N, O, P, Q, R, S, T, U] -> { S1[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= Q and i1 <= -1 + N and i2 >= P and i2 <= -1 + M; S3[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= P and i2 <= -1 + M; S4[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= 1 and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M; S2[i0, i1, i2] : i0 >= 1 and i0 <= -1 + O and i1 >= Q and i1 <= -1 + N and i2 >= 1 and i2 <= -1 + M }" +child: + context: "[M, N, O, P, Q, R, S, T, U] -> { [] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S1[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S1[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S1[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S2[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S2[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S2[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S2[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S3[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S3[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S3[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S3[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R, S, T, U] -> { S4[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S4[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S4[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R, S, T, U] -> [{ S4[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R, S, T, U] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-mg-psinv.c b/test_inputs/codegen/cloog/reservoir-mg-psinv.c index e3a5deeb..cfb4045b 100644 --- a/test_inputs/codegen/cloog/reservoir-mg-psinv.c +++ b/test_inputs/codegen/cloog/reservoir-mg-psinv.c @@ -1,9 +1,9 @@ -for (int c1 = 2; c1 < O; c1 += 1) - for (int c3 = 3; c3 < 2 * N - 2; c3 += 2) { - for (int c5 = 1; c5 <= M; c5 += 1) { - S1(c1, (c3 + 1) / 2, c5); - S2(c1, (c3 + 1) / 2, c5); +for (int c0 = 2; c0 < O; c0 += 1) + for (int c1 = 3; c1 < 2 * N - 2; c1 += 2) { + for (int c3 = 1; c3 <= M; c3 += 1) { + S1(c0, (c1 + 1) / 2, c3); + S2(c0, (c1 + 1) / 2, c3); } - for (int c5 = 2; c5 < M; c5 += 1) - S3(c1, (c3 + 1) / 2, c5); + for (int c3 = 2; c3 < M; c3 += 1) + S3(c0, (c1 + 1) / 2, c3); } diff --git a/test_inputs/codegen/cloog/reservoir-mg-psinv.in b/test_inputs/codegen/cloog/reservoir-mg-psinv.in deleted file mode 100644 index 835f81a4..00000000 --- a/test_inputs/codegen/cloog/reservoir-mg-psinv.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N, O] -> { S1[i0, i1, i2] -> [0, i0, 0, -1 + 2i1, 0, i2, 0] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S2[i0, i1, i2] -> [0, i0, 0, -1 + 2i1, 0, i2, 1] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S3[i0, i1, i2] -> [0, i0, 0, 2i1, 1, i2, 0] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M } -[M, N, O] -> { : } -[M, N, O] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-mg-psinv.st b/test_inputs/codegen/cloog/reservoir-mg-psinv.st new file mode 100644 index 00000000..c64638b4 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-mg-psinv.st @@ -0,0 +1,23 @@ +domain: "[M, N, O] -> { S3[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M; S2[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S1[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 1 and i2 <= M }" +child: + context: "[M, N, O] -> { [] }" + child: + schedule: "[M, N, O] -> [{ S3[i0, i1, i2] -> [(i0)]; S2[i0, i1, i2] -> [(i0)]; S1[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O] -> { separate[i0] }" + child: + schedule: "[M, N, O] -> [{ S3[i0, i1, i2] -> [(2i1)]; S2[i0, i1, i2] -> [(-1 + 2i1)]; S1[i0, i1, i2] -> [(-1 + 2i1)] }]" + options: "[M, N, O] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O] -> { S2[i0, i1, i2]; S1[i0, i1, i2] }" + child: + schedule: "[M, N, O] -> [{ S2[i0, i1, i2] -> [(i2)]; S1[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O] -> { S1[i0, i1, i2] }" + - filter: "[M, N, O] -> { S2[i0, i1, i2] }" + - filter: "[M, N, O] -> { S3[i0, i1, i2] }" + child: + schedule: "[M, N, O] -> [{ S3[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-mg-resid.c b/test_inputs/codegen/cloog/reservoir-mg-resid.c index e3a5deeb..cfb4045b 100644 --- a/test_inputs/codegen/cloog/reservoir-mg-resid.c +++ b/test_inputs/codegen/cloog/reservoir-mg-resid.c @@ -1,9 +1,9 @@ -for (int c1 = 2; c1 < O; c1 += 1) - for (int c3 = 3; c3 < 2 * N - 2; c3 += 2) { - for (int c5 = 1; c5 <= M; c5 += 1) { - S1(c1, (c3 + 1) / 2, c5); - S2(c1, (c3 + 1) / 2, c5); +for (int c0 = 2; c0 < O; c0 += 1) + for (int c1 = 3; c1 < 2 * N - 2; c1 += 2) { + for (int c3 = 1; c3 <= M; c3 += 1) { + S1(c0, (c1 + 1) / 2, c3); + S2(c0, (c1 + 1) / 2, c3); } - for (int c5 = 2; c5 < M; c5 += 1) - S3(c1, (c3 + 1) / 2, c5); + for (int c3 = 2; c3 < M; c3 += 1) + S3(c0, (c1 + 1) / 2, c3); } diff --git a/test_inputs/codegen/cloog/reservoir-mg-resid.in b/test_inputs/codegen/cloog/reservoir-mg-resid.in deleted file mode 100644 index 835f81a4..00000000 --- a/test_inputs/codegen/cloog/reservoir-mg-resid.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N, O] -> { S1[i0, i1, i2] -> [0, i0, 0, -1 + 2i1, 0, i2, 0] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S2[i0, i1, i2] -> [0, i0, 0, -1 + 2i1, 0, i2, 1] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S3[i0, i1, i2] -> [0, i0, 0, 2i1, 1, i2, 0] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M } -[M, N, O] -> { : } -[M, N, O] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-mg-resid.st b/test_inputs/codegen/cloog/reservoir-mg-resid.st new file mode 100644 index 00000000..c64638b4 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-mg-resid.st @@ -0,0 +1,23 @@ +domain: "[M, N, O] -> { S3[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M; S2[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 1 and i2 <= M; S1[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 1 and i2 <= M }" +child: + context: "[M, N, O] -> { [] }" + child: + schedule: "[M, N, O] -> [{ S3[i0, i1, i2] -> [(i0)]; S2[i0, i1, i2] -> [(i0)]; S1[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O] -> { separate[i0] }" + child: + schedule: "[M, N, O] -> [{ S3[i0, i1, i2] -> [(2i1)]; S2[i0, i1, i2] -> [(-1 + 2i1)]; S1[i0, i1, i2] -> [(-1 + 2i1)] }]" + options: "[M, N, O] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O] -> { S2[i0, i1, i2]; S1[i0, i1, i2] }" + child: + schedule: "[M, N, O] -> [{ S2[i0, i1, i2] -> [(i2)]; S1[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O] -> { S1[i0, i1, i2] }" + - filter: "[M, N, O] -> { S2[i0, i1, i2] }" + - filter: "[M, N, O] -> { S3[i0, i1, i2] }" + child: + schedule: "[M, N, O] -> [{ S3[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-mg-rprj3.c b/test_inputs/codegen/cloog/reservoir-mg-rprj3.c dissimilarity index 89% index 992bfd53..e73ba5de 100644 --- a/test_inputs/codegen/cloog/reservoir-mg-rprj3.c +++ b/test_inputs/codegen/cloog/reservoir-mg-rprj3.c @@ -1,33 +1,35 @@ -if (M >= 2 && N >= 3) - for (int c1 = 2; c1 < O; c1 += 1) { - for (int c5 = 2; c5 <= M; c5 += 1) - S1(c1, 2, c5); - for (int c3 = 3; c3 < N; c3 += 1) { - for (int c5 = 2; c5 <= M; c5 += 1) - S2(c1, c3 - 1, c5); - if (M >= 3) { - S4(c1, c3 - 1, 2); - for (int c5 = 2; c5 < M - 1; c5 += 1) { - S3(c1, c3 - 1, c5); - S5(c1, c3 - 1, c5); - S4(c1, c3 - 1, c5 + 1); - } - S3(c1, c3 - 1, M - 1); - S5(c1, c3 - 1, M - 1); - } - for (int c5 = 2; c5 <= M; c5 += 1) - S1(c1, c3, c5); - } - for (int c5 = 2; c5 <= M; c5 += 1) - S2(c1, N - 1, c5); - if (M >= 3) { - S4(c1, N - 1, 2); - for (int c5 = 2; c5 < M - 1; c5 += 1) { - S3(c1, N - 1, c5); - S5(c1, N - 1, c5); - S4(c1, N - 1, c5 + 1); - } - S3(c1, N - 1, M - 1); - S5(c1, N - 1, M - 1); - } - } +if (M >= 2 && N >= 3) + for (int c0 = 2; c0 < O; c0 += 1) { + for (int c2 = 2; c2 <= M; c2 += 1) + S1(c0, 2, c2); + for (int c1 = 3; c1 < N; c1 += 1) { + for (int c2 = 2; c2 <= M; c2 += 1) + S2(c0, c1 - 1, c2); + if (M >= 3) + S4(c0, c1 - 1, 2); + for (int c2 = 2; c2 < M - 1; c2 += 1) { + S3(c0, c1 - 1, c2); + S5(c0, c1 - 1, c2); + S4(c0, c1 - 1, c2 + 1); + } + if (M >= 3) { + S3(c0, c1 - 1, M - 1); + S5(c0, c1 - 1, M - 1); + } + for (int c2 = 2; c2 <= M; c2 += 1) + S1(c0, c1, c2); + } + for (int c2 = 2; c2 <= M; c2 += 1) + S2(c0, N - 1, c2); + if (M >= 3) + S4(c0, N - 1, 2); + for (int c2 = 2; c2 < M - 1; c2 += 1) { + S3(c0, N - 1, c2); + S5(c0, N - 1, c2); + S4(c0, N - 1, c2 + 1); + } + if (M >= 3) { + S3(c0, N - 1, M - 1); + S5(c0, N - 1, M - 1); + } + } diff --git a/test_inputs/codegen/cloog/reservoir-mg-rprj3.in b/test_inputs/codegen/cloog/reservoir-mg-rprj3.in deleted file mode 100644 index 03f41346..00000000 --- a/test_inputs/codegen/cloog/reservoir-mg-rprj3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N, O, P, Q, R] -> { S1[i0, i1, i2] -> [0, i0, 0, i1, 2, i2, 0] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= M; S4[i0, i1, i2] -> [0, i0, 0, 1 + i1, 1, -1 + i2, 2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M; S3[i0, i1, i2] -> [0, i0, 0, 1 + i1, 1, i2, 0] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M; S5[i0, i1, i2] -> [0, i0, 0, 1 + i1, 1, i2, 1] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M; S2[i0, i1, i2] -> [0, i0, 0, 1 + i1, 0, i2, 1] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= M } -[M, N, O, P, Q, R] -> { : } -[M, N, O, P, Q, R] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-mg-rprj3.st b/test_inputs/codegen/cloog/reservoir-mg-rprj3.st new file mode 100644 index 00000000..d330a83f --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-mg-rprj3.st @@ -0,0 +1,28 @@ +domain: "[M, N, O, P, Q, R] -> { S2[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= M; S4[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M; S1[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= M; S5[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M; S3[i0, i1, i2] : i0 >= 2 and i0 <= -1 + O and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + M }" +child: + context: "[M, N, O, P, Q, R] -> { [] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S5[i0, i1, i2] -> [(i0)]; S3[i0, i1, i2] -> [(i0)]; S4[i0, i1, i2] -> [(i0)]; S1[i0, i1, i2] -> [(i0)]; S2[i0, i1, i2] -> [(i0)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S5[i0, i1, i2] -> [(1 + i1)]; S3[i0, i1, i2] -> [(1 + i1)]; S4[i0, i1, i2] -> [(1 + i1)]; S1[i0, i1, i2] -> [(i1)]; S2[i0, i1, i2] -> [(1 + i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S2[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S2[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S4[i0, i1, i2]; S5[i0, i1, i2]; S3[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S5[i0, i1, i2] -> [(i2)]; S3[i0, i1, i2] -> [(i2)]; S4[i0, i1, i2] -> [(-1 + i2)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S3[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S5[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S4[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S1[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-pingali1.c b/test_inputs/codegen/cloog/reservoir-pingali1.c index 7268c23d..ddb1293b 100644 --- a/test_inputs/codegen/cloog/reservoir-pingali1.c +++ b/test_inputs/codegen/cloog/reservoir-pingali1.c @@ -1,7 +1,7 @@ -for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 < 2 * N; c3 += 1) { - for (int c5 = max(1, -N + c3); c5 < (c3 + 1) / 2; c5 += 1) - S1(c1, c3 - c5, c5); - if ((c3 - 1) % 2 == 0) - S2(c1, (c3 + 1) / 2); +for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 < 2 * N; c1 += 1) { + for (int c2 = max(1, -N + c1); c2 < (c1 + 1) / 2; c2 += 1) + S1(c0, c1 - c2, c2); + if ((c1 - 1) % 2 == 0) + S2(c0, (c1 + 1) / 2); } diff --git a/test_inputs/codegen/cloog/reservoir-pingali1.in b/test_inputs/codegen/cloog/reservoir-pingali1.in deleted file mode 100644 index ecbb320d..00000000 --- a/test_inputs/codegen/cloog/reservoir-pingali1.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0, i1, i2] -> [0, i0, 0, i1 + i2, 0, i2, 0] : i0 >= 1 and i0 <= M and i1 <= N and i2 >= 1 and i2 <= -1 + i1; S2[i0, i1] -> [0, i0, 0, -1 + 2i1, 1, 0, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= N } -[M, N] -> { : } -[M, N] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-pingali1.st b/test_inputs/codegen/cloog/reservoir-pingali1.st new file mode 100644 index 00000000..4ab2a651 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-pingali1.st @@ -0,0 +1,16 @@ +domain: "[M, N] -> { S2[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= N; S1[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 <= N and i2 >= 1 and i2 <= -1 + i1 }" +child: + context: "[M, N] -> { [] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(i0)]; S1[i0, i1, i2] -> [(i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1] -> [(-1 + 2i1)]; S1[i0, i1, i2] -> [(i1 + i2)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1, i2] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/reservoir-pingali2.c b/test_inputs/codegen/cloog/reservoir-pingali2.c index a407cad5..195f15bb 100644 --- a/test_inputs/codegen/cloog/reservoir-pingali2.c +++ b/test_inputs/codegen/cloog/reservoir-pingali2.c @@ -1,8 +1,8 @@ { - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S1(c1, c3); - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S2(c1, c3); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S1(c0, c1); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S2(c0, c1); } diff --git a/test_inputs/codegen/cloog/reservoir-pingali2.in b/test_inputs/codegen/cloog/reservoir-pingali2.in deleted file mode 100644 index 9ba248fb..00000000 --- a/test_inputs/codegen/cloog/reservoir-pingali2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [1, i0, 1, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S1[i0, i1] -> [0, i0, 0, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-pingali2.st b/test_inputs/codegen/cloog/reservoir-pingali2.st new file mode 100644 index 00000000..ff760349 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-pingali2.st @@ -0,0 +1,19 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S2[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M }" +child: + context: "[M] -> { [] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-pingali3.c b/test_inputs/codegen/cloog/reservoir-pingali3.c index c281b826..eede1429 100644 --- a/test_inputs/codegen/cloog/reservoir-pingali3.c +++ b/test_inputs/codegen/cloog/reservoir-pingali3.c @@ -1,9 +1,9 @@ { - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S1(c1, c3); - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - for (int c5 = 1; c5 <= M; c5 += 1) - S2(c1, c3, c5); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S1(c0, c1); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + for (int c2 = 1; c2 <= M; c2 += 1) + S2(c0, c1, c2); } diff --git a/test_inputs/codegen/cloog/reservoir-pingali3.in b/test_inputs/codegen/cloog/reservoir-pingali3.in deleted file mode 100644 index 70da8ea5..00000000 --- a/test_inputs/codegen/cloog/reservoir-pingali3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1, i2] -> [1, i0, 0, i1, 1, i2, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M and i2 >= 1 and i2 <= M; S1[i0, i1] -> [0, i0, 0, i1, 0, 0, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-pingali3.st b/test_inputs/codegen/cloog/reservoir-pingali3.st new file mode 100644 index 00000000..c3065a1e --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-pingali3.st @@ -0,0 +1,22 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S2[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M and i2 >= 1 and i2 <= M }" +child: + context: "[M] -> { [] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1, i2] }" + child: + schedule: "[M] -> [{ S2[i0, i1, i2] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S2[i0, i1, i2] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S2[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-pingali4.c b/test_inputs/codegen/cloog/reservoir-pingali4.c index a407cad5..195f15bb 100644 --- a/test_inputs/codegen/cloog/reservoir-pingali4.c +++ b/test_inputs/codegen/cloog/reservoir-pingali4.c @@ -1,8 +1,8 @@ { - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S1(c1, c3); - for (int c1 = 1; c1 <= M; c1 += 1) - for (int c3 = 1; c3 <= M; c3 += 1) - S2(c1, c3); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S1(c0, c1); + for (int c0 = 1; c0 <= M; c0 += 1) + for (int c1 = 1; c1 <= M; c1 += 1) + S2(c0, c1); } diff --git a/test_inputs/codegen/cloog/reservoir-pingali4.in b/test_inputs/codegen/cloog/reservoir-pingali4.in deleted file mode 100644 index e975faef..00000000 --- a/test_inputs/codegen/cloog/reservoir-pingali4.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [1, i0, 0, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S1[i0, i1] -> [0, i0, 0, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M } -[M] -> { : M >= 2 } -[M] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-pingali4.st b/test_inputs/codegen/cloog/reservoir-pingali4.st new file mode 100644 index 00000000..0d724e9d --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-pingali4.st @@ -0,0 +1,19 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S2[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M }" +child: + context: "[M] -> { [] : M >= 2 }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-pingali5.c b/test_inputs/codegen/cloog/reservoir-pingali5.c index 51f2f0c1..0e9bcf43 100644 --- a/test_inputs/codegen/cloog/reservoir-pingali5.c +++ b/test_inputs/codegen/cloog/reservoir-pingali5.c @@ -1,10 +1,10 @@ -for (int c1 = 3; c1 < 2 * M; c1 += 1) { - for (int c3 = c1 / 2 + 2; c3 <= M; c3 += 1) - for (int c7 = c1 / 2 + 1; c7 < min(c1, c3); c7 += 1) - S1(c7, c1 - c7, c3); - for (int c3 = max(1, -M + c1); c3 < (c1 + 1) / 2; c3 += 1) - S2(c1 - c3, c3); - for (int c3 = c1 / 2 + 2; c3 <= M; c3 += 1) - for (int c7 = c1 / 2 + 1; c7 < min(c1, c3); c7 += 1) - S3(c7, c1 - c7, c3); +for (int c0 = 3; c0 < 2 * M; c0 += 1) { + for (int c1 = c0 / 2 + 2; c1 <= M; c1 += 1) + for (int c3 = c0 / 2 + 1; c3 < min(c0, c1); c3 += 1) + S1(c3, c0 - c3, c1); + for (int c1 = max(1, -M + c0); c1 < (c0 + 1) / 2; c1 += 1) + S2(c0 - c1, c1); + for (int c1 = c0 / 2 + 2; c1 <= M; c1 += 1) + for (int c3 = c0 / 2 + 1; c3 < min(c0, c1); c3 += 1) + S3(c3, c0 - c3, c1); } diff --git a/test_inputs/codegen/cloog/reservoir-pingali5.in b/test_inputs/codegen/cloog/reservoir-pingali5.in deleted file mode 100644 index 1b77acdc..00000000 --- a/test_inputs/codegen/cloog/reservoir-pingali5.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1, i2] -> [0, i0 + i1, 0, i2, 0, i2, 0] : i1 >= 1 and i1 <= -1 + i0 and i2 >= 1 + i0 and i2 <= M; S3[i0, i1, i2] -> [0, i0 + i1, 2, i2, 2, i2, 0] : i1 >= 1 and i1 <= -1 + i0 and i2 >= 1 + i0 and i2 <= M; S2[i0, i1] -> [0, i0 + i1, 1, i1, 1, 0, 0] : i0 <= M and i1 >= 1 and i1 <= -1 + i0 } -[M] -> { : } -[M] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-pingali5.st b/test_inputs/codegen/cloog/reservoir-pingali5.st new file mode 100644 index 00000000..d83eb55e --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-pingali5.st @@ -0,0 +1,26 @@ +domain: "[M] -> { S3[i0, i1, i2] : i1 >= 1 and i1 <= -1 + i0 and i2 >= 1 + i0 and i2 <= M; S2[i0, i1] : i0 <= M and i1 >= 1 and i1 <= -1 + i0; S1[i0, i1, i2] : i1 >= 1 and i1 <= -1 + i0 and i2 >= 1 + i0 and i2 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i0 + i1)]; S3[i0, i1, i2] -> [(i0 + i1)]; S2[i0, i1] -> [(i0 + i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1, i2] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S2[i0, i1] }" + child: + schedule: "[M] -> [{ S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + - filter: "[M] -> { S3[i0, i1, i2] }" + child: + schedule: "[M] -> [{ S3[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" + child: + schedule: "[M] -> [{ S3[i0, i1, i2] -> [(i2)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-pingali6.c b/test_inputs/codegen/cloog/reservoir-pingali6.c index 1df9bb90..72535756 100644 --- a/test_inputs/codegen/cloog/reservoir-pingali6.c +++ b/test_inputs/codegen/cloog/reservoir-pingali6.c @@ -1,8 +1,8 @@ -for (int c1 = 1; c1 <= M; c1 += 1) { - for (int c3 = 2; c3 < N; c3 += 1) - for (int c5 = 2; c5 < N; c5 += 1) - S1(c1, c3, c5); - for (int c3 = 2; c3 < N; c3 += 1) - for (int c5 = 2; c5 < N; c5 += 1) - S2(c1, c3, c5); +for (int c0 = 1; c0 <= M; c0 += 1) { + for (int c2 = 2; c2 < N; c2 += 1) + for (int c3 = 2; c3 < N; c3 += 1) + S1(c0, c2, c3); + for (int c2 = 2; c2 < N; c2 += 1) + for (int c3 = 2; c3 < N; c3 += 1) + S2(c0, c2, c3); } diff --git a/test_inputs/codegen/cloog/reservoir-pingali6.in b/test_inputs/codegen/cloog/reservoir-pingali6.in deleted file mode 100644 index 7a08ca76..00000000 --- a/test_inputs/codegen/cloog/reservoir-pingali6.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S2[i0, i1, i2] -> [0, 1 + 2i0, 1, i1, 0, i2, 0] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + N; S1[i0, i1, i2] -> [0, 2i0, 0, i1, 0, i2, 0] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + N } -[M, N] -> { : M >= 1 and N >= 1 } -[M, N] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-pingali6.st b/test_inputs/codegen/cloog/reservoir-pingali6.st new file mode 100644 index 00000000..3cf78bff --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-pingali6.st @@ -0,0 +1,22 @@ +domain: "[M, N] -> { S2[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + N; S1[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 2 and i1 <= -1 + N and i2 >= 2 and i2 <= -1 + N }" +child: + context: "[M, N] -> { [] : M >= 1 and N >= 1 }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2] -> [(2i0)]; S2[i0, i1, i2] -> [(1 + 2i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1, i2] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S1[i0, i1, i2] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" + - filter: "[M, N] -> { S2[i0, i1, i2] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1, i2] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S2[i0, i1, i2] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-stride.c b/test_inputs/codegen/cloog/reservoir-stride.c index 104e2620..6a970d48 100644 --- a/test_inputs/codegen/cloog/reservoir-stride.c +++ b/test_inputs/codegen/cloog/reservoir-stride.c @@ -1,2 +1,2 @@ -for (int c1 = 2; c1 <= M; c1 += 7) - S1(c1, (c1 - 2) / 7); +for (int c0 = 2; c0 <= M; c0 += 7) + S1(c0, (c0 - 2) / 7); diff --git a/test_inputs/codegen/cloog/reservoir-stride.in b/test_inputs/codegen/cloog/reservoir-stride.in deleted file mode 100644 index 46a1c353..00000000 --- a/test_inputs/codegen/cloog/reservoir-stride.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1] -> [0, i0, 0, 0, 0] : 7i1 = -2 + i0 and i0 >= 2 and i0 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-stride.st b/test_inputs/codegen/cloog/reservoir-stride.st new file mode 100644 index 00000000..135c90cd --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-stride.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0, i1] : 7i1 = -2 + i0 and i0 >= 2 and i0 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-stride2.c b/test_inputs/codegen/cloog/reservoir-stride2.c index 104e2620..6a970d48 100644 --- a/test_inputs/codegen/cloog/reservoir-stride2.c +++ b/test_inputs/codegen/cloog/reservoir-stride2.c @@ -1,2 +1,2 @@ -for (int c1 = 2; c1 <= M; c1 += 7) - S1(c1, (c1 - 2) / 7); +for (int c0 = 2; c0 <= M; c0 += 7) + S1(c0, (c0 - 2) / 7); diff --git a/test_inputs/codegen/cloog/reservoir-stride2.in b/test_inputs/codegen/cloog/reservoir-stride2.in deleted file mode 100644 index be6b1978..00000000 --- a/test_inputs/codegen/cloog/reservoir-stride2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0, i1] -> [0, i0, 0, 0, 0] : 7i1 = -2 + i0 and i0 >= 0 and i0 <= M } -[M] -> { : } -[M] -> { [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-stride2.st b/test_inputs/codegen/cloog/reservoir-stride2.st new file mode 100644 index 00000000..0600029d --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-stride2.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0, i1] : 7i1 = -2 + i0 and i0 >= 0 and i0 <= M }" +child: + context: "[M] -> { [] }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-tang-xue1.c b/test_inputs/codegen/cloog/reservoir-tang-xue1.c index 8874eabf..2a0f8759 100644 --- a/test_inputs/codegen/cloog/reservoir-tang-xue1.c +++ b/test_inputs/codegen/cloog/reservoir-tang-xue1.c @@ -1,5 +1,5 @@ -for (int c1 = 0; c1 <= 9; c1 += 2) - for (int c3 = 0; c3 <= min(4, c1 + 3); c3 += 2) - for (int c5 = max(1, c1); c5 <= min(c1 + 1, c1 - c3 + 4); c5 += 1) - for (int c7 = max(1, -c1 + c3 + c5); c7 <= min(4, -c1 + c3 + c5 + 1); c7 += 1) - S1(c1 / 2, (-c1 + c3) / 2, -c1 + c5, -c3 + c7); +for (int c0 = 0; c0 <= 9; c0 += 2) + for (int c1 = 0; c1 <= min(4, c0 + 3); c1 += 2) + for (int c2 = max(1, c0); c2 <= min(c0 + 1, c0 - c1 + 4); c2 += 1) + for (int c3 = max(1, -c0 + c1 + c2); c3 <= min(4, -c0 + c1 + c2 + 1); c3 += 1) + S1(c0 / 2, (-c0 + c1) / 2, -c0 + c2, -c1 + c3); diff --git a/test_inputs/codegen/cloog/reservoir-tang-xue1.in b/test_inputs/codegen/cloog/reservoir-tang-xue1.in deleted file mode 100644 index 0c9ffc9f..00000000 --- a/test_inputs/codegen/cloog/reservoir-tang-xue1.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, i1, i2, i3] -> [0, 2i0, 0, 2i0 + 2i1, 0, 2i0 + i2, 0, 2i0 + 2i1 + i3, 0] : i3 <= 4 - 2i0 - 2i1 and i3 >= i2 and i2 <= 9 - 2i0 and i2 >= 0 and i2 >= 1 - 2i0 and i3 <= 1 + i2 and i2 <= 1 and i3 >= 1 - 2i0 - 2i1 } -{ : } -{ [i, j, k, l, m, n, o, p, q] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-tang-xue1.st b/test_inputs/codegen/cloog/reservoir-tang-xue1.st new file mode 100644 index 00000000..89d8b725 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-tang-xue1.st @@ -0,0 +1,15 @@ +domain: "{ S1[i0, i1, i2, i3] : i3 <= 4 - 2i0 - 2i1 and i3 >= i2 and i2 <= 9 - 2i0 and i2 >= 0 and i2 >= 1 - 2i0 and i3 <= 1 + i2 and i2 <= 1 and i3 >= 1 - 2i0 - 2i1 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1, i2, i3] -> [(2i0)] }]" + options: "{ separate[i0] }" + child: + schedule: "[{ S1[i0, i1, i2, i3] -> [(2i0 + 2i1)] }]" + options: "{ separate[i0] }" + child: + schedule: "[{ S1[i0, i1, i2, i3] -> [(2i0 + i2)] }]" + options: "{ separate[i0] }" + child: + schedule: "[{ S1[i0, i1, i2, i3] -> [(2i0 + 2i1 + i3)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/reservoir-two.in b/test_inputs/codegen/cloog/reservoir-two.in deleted file mode 100644 index a7eb2047..00000000 --- a/test_inputs/codegen/cloog/reservoir-two.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, i1, i2] -> [i0, j, k, 0] : 2i1 = 3 - i0 and 2j = 3 - i0 and 2k = 9 + i0 and 2i2 = 9 + i0 and i0 >= 0 and i0 <= 1 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/reservoir-two.st b/test_inputs/codegen/cloog/reservoir-two.st new file mode 100644 index 00000000..c780ca22 --- /dev/null +++ b/test_inputs/codegen/cloog/reservoir-two.st @@ -0,0 +1,6 @@ +domain: "{ S1[i0, i1, i2] : 2i1 = 3 - i0 and 2i2 = 9 + i0 and i0 >= 0 and i0 <= 1 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i0, i1, i2] -> [(i0)] }, { S1[i0, i1, i2] -> [(i1)] }, { S1[i0, i1, i2] -> [(i2)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/singleton.in b/test_inputs/codegen/cloog/singleton.in deleted file mode 100644 index a0a5a8a1..00000000 --- a/test_inputs/codegen/cloog/singleton.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[] -> [-1]; S1[] -> [0] } -{ : } -{ [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/singleton.st b/test_inputs/codegen/cloog/singleton.st new file mode 100644 index 00000000..a38487be --- /dev/null +++ b/test_inputs/codegen/cloog/singleton.st @@ -0,0 +1,7 @@ +domain: "{ S1[]; S2[] }" +child: + context: "{ [] }" + child: + sequence: + - filter: "{ S2[] }" + - filter: "{ S1[] }" diff --git a/test_inputs/codegen/cloog/square+triangle-1-1-2-3.in b/test_inputs/codegen/cloog/square+triangle-1-1-2-3.in deleted file mode 100644 index 028c792b..00000000 --- a/test_inputs/codegen/cloog/square+triangle-1-1-2-3.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S2[i0, i1] -> [i0, i1, 1] : i1 >= 2 and i1 <= i0 and i0 <= M; S1[i0, i1] -> [i0, i1, 0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M } -[M] -> { : M >= 1 } -[M] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/square+triangle-1-1-2-3.st b/test_inputs/codegen/cloog/square+triangle-1-1-2-3.st new file mode 100644 index 00000000..bff294db --- /dev/null +++ b/test_inputs/codegen/cloog/square+triangle-1-1-2-3.st @@ -0,0 +1,10 @@ +domain: "[M] -> { S1[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= M; S2[i0, i1] : i1 >= 2 and i1 <= i0 and i0 <= M }" +child: + context: "[M] -> { [] : M >= 1 }" + child: + schedule: "[M] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M] -> { separate[i0] }" + child: + sequence: + - filter: "[M] -> { S1[i0, i1] }" + - filter: "[M] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/stride.in b/test_inputs/codegen/cloog/stride.in deleted file mode 100644 index 410c6843..00000000 --- a/test_inputs/codegen/cloog/stride.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[25] -> [25, 0]; S2[i0, i1] -> [i0, j] : 3i1 = i0 and 3j = i0 and i0 >= 3 and i0 <= 100 } -{ : } -{ [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/stride.st b/test_inputs/codegen/cloog/stride.st new file mode 100644 index 00000000..d83f9793 --- /dev/null +++ b/test_inputs/codegen/cloog/stride.st @@ -0,0 +1,6 @@ +domain: "{ S2[i0, i1] : 3i1 = i0 and i0 >= 3 and i0 <= 100; S1[25] }" +child: + context: "{ [] }" + child: + schedule: "[{ S2[i0, i1] -> [(i0)]; S1[i0] -> [(i0)] }, { S2[i0, i1] -> [(i1)]; S1[i0] -> [(0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/stride2.in b/test_inputs/codegen/cloog/stride2.in deleted file mode 100644 index 97e40866..00000000 --- a/test_inputs/codegen/cloog/stride2.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[27] -> [27, 0]; S2[i0, i1] -> [i0, j] : 3i1 = i0 and 3j = i0 and i0 >= 3 and i0 <= 100 } -{ : } -{ [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/stride2.st b/test_inputs/codegen/cloog/stride2.st new file mode 100644 index 00000000..d2e34207 --- /dev/null +++ b/test_inputs/codegen/cloog/stride2.st @@ -0,0 +1,6 @@ +domain: "{ S2[i0, i1] : 3i1 = i0 and i0 >= 3 and i0 <= 100; S1[27] }" +child: + context: "{ [] }" + child: + schedule: "[{ S2[i0, i1] -> [(i0)]; S1[i0] -> [(i0)] }, { S2[i0, i1] -> [(i1)]; S1[i0] -> [(0)] }]" + options: "{ separate[i0] }" diff --git a/test_inputs/codegen/cloog/stride3.in b/test_inputs/codegen/cloog/stride3.in deleted file mode 100644 index 9b87b899..00000000 --- a/test_inputs/codegen/cloog/stride3.in +++ /dev/null @@ -1,3 +0,0 @@ -[m, n] -> { S1[i0] -> [50i0, 0] : i0 >= 1 and i0 <= n and i0 >= m } -[m, n] -> { : } -[m, n] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/stride3.st b/test_inputs/codegen/cloog/stride3.st new file mode 100644 index 00000000..f970d2c3 --- /dev/null +++ b/test_inputs/codegen/cloog/stride3.st @@ -0,0 +1,6 @@ +domain: "[m, n] -> { S1[i] : i >= 1 and i <= n and i >= m }" +child: + context: "[m, n] -> { [] }" + child: + schedule: "[m, n] -> [{ S1[i0] -> [(50i0)] }]" + options: "[m, n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/stride4.in b/test_inputs/codegen/cloog/stride4.in deleted file mode 100644 index 436cad3c..00000000 --- a/test_inputs/codegen/cloog/stride4.in +++ /dev/null @@ -1,3 +0,0 @@ -[t] -> { S1[i0, t] -> [i0, t, 0] : exists (e0 = [(t - i0)/16]: 16e0 = t - i0 and i0 >= 0 and i0 <= 99 and t >= 0 and t <= 15) } -[t] -> { : } -[t] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/stride4.st b/test_inputs/codegen/cloog/stride4.st new file mode 100644 index 00000000..9ffa62a9 --- /dev/null +++ b/test_inputs/codegen/cloog/stride4.st @@ -0,0 +1,6 @@ +domain: "[t] -> { S1[i0, t] : exists (e0 = floor((t - i0)/16): 16e0 = t - i0 and i0 >= 0 and i0 <= 99 and t >= 0 and t <= 15) }" +child: + context: "[t] -> { [] }" + child: + schedule: "[t] -> [{ S1[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)] }]" + options: "[t] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/swim.c b/test_inputs/codegen/cloog/swim.c dissimilarity index 84% index 47b4ebe5..14f65148 100644 --- a/test_inputs/codegen/cloog/swim.c +++ b/test_inputs/codegen/cloog/swim.c @@ -1,159 +1,159 @@ -if (M == 1) { - S1(); - S2(); - S3(); - S4(); - S5(); - S6(); - S7(); - S8(); - S9(); - S10(); - S11(); - S12(); - S13(); - S14(); - S15(); - S16(); - S17(); - S18(); - S19(); - S20(); - S21(); - S22(); - S23(); - S24(); - S25(); - S26(); - S27(); - for (int c1 = 1; c1 <= N; c1 += 1) { - for (int c3 = 1; c3 <= N; c3 += 1) { - S28(c1, c3); - S29(c1, c3); - S30(c1, c3); - } - S31(c1); - } - S32(); - S33(); - S34(); - if (O <= 1) - S35(); - S36(); - S37(); - for (int c1 = 2; c1 <= P; c1 += 1) { - S38(c1); - S39(c1); - for (int c3 = 1; c3 <= Q; c3 += 1) - for (int c5 = 1; c5 <= R; c5 += 1) { - S40(c1, c3, c5); - S41(c1, c3, c5); - S42(c1, c3, c5); - S43(c1, c3, c5); - } - for (int c3 = 1; c3 <= Q; c3 += 1) { - S44(c1, c3); - S45(c1, c3); - S46(c1, c3); - S47(c1, c3); - } - for (int c3 = 1; c3 <= R; c3 += 1) { - S48(c1, c3); - S49(c1, c3); - S50(c1, c3); - S51(c1, c3); - } - S52(c1); - S53(c1); - S54(c1); - S55(c1); - S56(c1); - S57(c1); - S58(c1); - for (int c3 = 1; c3 <= Q; c3 += 1) - for (int c5 = 1; c5 <= R; c5 += 1) { - S59(c1, c3, c5); - S60(c1, c3, c5); - S61(c1, c3, c5); - } - for (int c3 = 1; c3 <= Q; c3 += 1) { - S62(c1, c3); - S63(c1, c3); - S64(c1, c3); - } - for (int c3 = 1; c3 <= R; c3 += 1) { - S65(c1, c3); - S66(c1, c3); - S67(c1, c3); - } - S68(c1); - S69(c1); - S70(c1); - S71(c1); - S72(c1); - S73(c1); - S74(c1); - S75(c1); - S76(c1); - S77(c1); - S78(c1); - S79(c1); - S80(c1); - S81(c1); - S82(c1); - S83(c1); - S84(c1); - S85(c1); - S86(c1); - S87(c1); - S88(c1); - S89(c1); - S90(c1); - S91(c1); - S92(c1); - S93(c1); - S94(c1); - for (int c3 = 1; c3 <= N; c3 += 1) { - for (int c5 = 1; c5 <= N; c5 += 1) { - S95(c1, c3, c5); - S96(c1, c3, c5); - S97(c1, c3, c5); - } - S98(c1, c3); - } - S99(c1); - S100(c1); - S101(c1); - for (int c3 = 1; c3 <= Q; c3 += 1) - for (int c5 = 1; c5 <= R; c5 += 1) { - S102(c1, c3, c5); - S103(c1, c3, c5); - S104(c1, c3, c5); - S105(c1, c3, c5); - S106(c1, c3, c5); - S107(c1, c3, c5); - } - for (int c3 = 1; c3 <= Q; c3 += 1) { - S108(c1, c3); - S109(c1, c3); - S110(c1, c3); - S111(c1, c3); - S112(c1, c3); - S113(c1, c3); - } - for (int c3 = 1; c3 <= R; c3 += 1) { - S114(c1, c3); - S115(c1, c3); - S116(c1, c3); - S117(c1, c3); - S118(c1, c3); - S119(c1, c3); - } - S120(c1); - S121(c1); - S122(c1); - S123(c1); - S124(c1); - S125(c1); - } -} +if (M == 1) { + S1(); + S2(); + S3(); + S4(); + S5(); + S6(); + S7(); + S8(); + S9(); + S10(); + S11(); + S12(); + S13(); + S14(); + S15(); + S16(); + S17(); + S18(); + S19(); + S20(); + S21(); + S22(); + S23(); + S24(); + S25(); + S26(); + S27(); + for (int c0 = 1; c0 <= N; c0 += 1) { + for (int c1 = 1; c1 <= N; c1 += 1) { + S28(c0, c1); + S29(c0, c1); + S30(c0, c1); + } + S31(c0); + } + S32(); + S33(); + S34(); + if (O <= 1) + S35(); + S36(); + S37(); + for (int c0 = 2; c0 <= P; c0 += 1) { + S38(c0); + S39(c0); + for (int c1 = 1; c1 <= Q; c1 += 1) + for (int c2 = 1; c2 <= R; c2 += 1) { + S40(c0, c1, c2); + S41(c0, c1, c2); + S42(c0, c1, c2); + S43(c0, c1, c2); + } + for (int c1 = 1; c1 <= Q; c1 += 1) { + S44(c0, c1); + S45(c0, c1); + S46(c0, c1); + S47(c0, c1); + } + for (int c1 = 1; c1 <= R; c1 += 1) { + S48(c0, c1); + S49(c0, c1); + S50(c0, c1); + S51(c0, c1); + } + S52(c0); + S53(c0); + S54(c0); + S55(c0); + S56(c0); + S57(c0); + S58(c0); + for (int c1 = 1; c1 <= Q; c1 += 1) + for (int c2 = 1; c2 <= R; c2 += 1) { + S59(c0, c1, c2); + S60(c0, c1, c2); + S61(c0, c1, c2); + } + for (int c1 = 1; c1 <= Q; c1 += 1) { + S62(c0, c1); + S63(c0, c1); + S64(c0, c1); + } + for (int c1 = 1; c1 <= R; c1 += 1) { + S65(c0, c1); + S66(c0, c1); + S67(c0, c1); + } + S68(c0); + S69(c0); + S70(c0); + S71(c0); + S72(c0); + S73(c0); + S74(c0); + S75(c0); + S76(c0); + S77(c0); + S78(c0); + S79(c0); + S80(c0); + S81(c0); + S82(c0); + S83(c0); + S84(c0); + S85(c0); + S86(c0); + S87(c0); + S88(c0); + S89(c0); + S90(c0); + S91(c0); + S92(c0); + S93(c0); + S94(c0); + for (int c1 = 1; c1 <= N; c1 += 1) { + for (int c2 = 1; c2 <= N; c2 += 1) { + S95(c0, c1, c2); + S96(c0, c1, c2); + S97(c0, c1, c2); + } + S98(c0, c1); + } + S99(c0); + S100(c0); + S101(c0); + for (int c1 = 1; c1 <= Q; c1 += 1) + for (int c2 = 1; c2 <= R; c2 += 1) { + S102(c0, c1, c2); + S103(c0, c1, c2); + S104(c0, c1, c2); + S105(c0, c1, c2); + S106(c0, c1, c2); + S107(c0, c1, c2); + } + for (int c1 = 1; c1 <= Q; c1 += 1) { + S108(c0, c1); + S109(c0, c1); + S110(c0, c1); + S111(c0, c1); + S112(c0, c1); + S113(c0, c1); + } + for (int c1 = 1; c1 <= R; c1 += 1) { + S114(c0, c1); + S115(c0, c1); + S116(c0, c1); + S117(c0, c1); + S118(c0, c1); + S119(c0, c1); + } + S120(c0); + S121(c0); + S122(c0); + S123(c0); + S124(c0); + S125(c0); + } +} diff --git a/test_inputs/codegen/cloog/swim.in b/test_inputs/codegen/cloog/swim.in deleted file mode 100644 index 4661ff0c..00000000 --- a/test_inputs/codegen/cloog/swim.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N, O, P, Q, R] -> { S84[i0] -> [34, i0, 31, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S6[] -> [5, 0, 0, 0, 0, 0, 0] : M = 1; S25[] -> [24, 0, 0, 0, 0, 0, 0] : M = 1; S115[i0, i1] -> [34, i0, 48, i1, 1, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S64[i0, i1] -> [34, i0, 13, i1, 2, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S62[i0, i1] -> [34, i0, 13, i1, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S40[i0, i1, i2] -> [34, i0, 2, i1, 0, i2, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S123[i0] -> [34, i0, 52, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S5[] -> [4, 0, 0, 0, 0, 0, 0] : M = 1; S15[] -> [14, 0, 0, 0, 0, 0, 0] : M = 1; S76[i0] -> [34, i0, 23, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S39[i0] -> [34, i0, 1, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S13[] -> [12, 0, 0, 0, 0, 0, 0] : M = 1; S28[i0, i1] -> [27, i0, 0, i1, 0, 0, 0] : M = 1 and i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= N; S70[i0] -> [34, i0, 17, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S53[i0] -> [34, i0, 6, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S121[i0] -> [34, i0, 50, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S47[i0, i1] -> [34, i0, 3, i1, 3, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S59[i0, i1, i2] -> [34, i0, 12, i1, 0, i2, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S71[i0] -> [34, i0, 18, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S77[i0] -> [34, i0, 24, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S63[i0, i1] -> [34, i0, 13, i1, 1, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S51[i0, i1] -> [34, i0, 4, i1, 3, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S100[i0] -> [34, i0, 44, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S22[] -> [21, 0, 0, 0, 0, 0, 0] : M = 1; S95[i0, i1, i2] -> [34, i0, 42, i1, 0, i2, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= N and i2 >= 1 and i2 <= N; S8[] -> [7, 0, 0, 0, 0, 0, 0] : M = 1; S120[i0] -> [34, i0, 49, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S50[i0, i1] -> [34, i0, 4, i1, 2, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S45[i0, i1] -> [34, i0, 3, i1, 1, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S72[i0] -> [34, i0, 19, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S52[i0] -> [34, i0, 5, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S7[] -> [6, 0, 0, 0, 0, 0, 0] : M = 1; S78[i0] -> [34, i0, 25, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S110[i0, i1] -> [34, i0, 47, i1, 2, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S124[i0] -> [34, i0, 53, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S60[i0, i1, i2] -> [34, i0, 12, i1, 0, i2, 1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S27[] -> [26, 0, 0, 0, 0, 0, 0] : M = 1; S114[i0, i1] -> [34, i0, 48, i1, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S49[i0, i1] -> [34, i0, 4, i1, 1, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S94[i0] -> [34, i0, 41, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S57[i0] -> [34, i0, 10, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S66[i0, i1] -> [34, i0, 14, i1, 1, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S18[] -> [17, 0, 0, 0, 0, 0, 0] : M = 1; S92[i0] -> [34, i0, 39, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S3[] -> [2, 0, 0, 0, 0, 0, 0] : M = 1; S35[] -> [31, 0, 0, 0, 0, 0, 0] : M = 1 and O <= 1; S36[] -> [32, 0, 0, 0, 0, 0, 0] : M = 1; S10[] -> [9, 0, 0, 0, 0, 0, 0] : M = 1; S2[] -> [1, 0, 0, 0, 0, 0, 0] : M = 1; S48[i0, i1] -> [34, i0, 4, i1, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S30[i0, i1] -> [27, i0, 0, i1, 2, 0, 0] : M = 1 and i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= N; S75[i0] -> [34, i0, 22, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S83[i0] -> [34, i0, 30, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S87[i0] -> [34, i0, 34, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S88[i0] -> [34, i0, 35, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S33[] -> [29, 0, 0, 0, 0, 0, 0] : M = 1; S101[i0] -> [34, i0, 45, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S21[] -> [20, 0, 0, 0, 0, 0, 0] : M = 1; S32[] -> [28, 0, 0, 0, 0, 0, 0] : M = 1; S118[i0, i1] -> [34, i0, 48, i1, 4, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S79[i0] -> [34, i0, 26, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S38[i0] -> [34, i0, 0, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S108[i0, i1] -> [34, i0, 47, i1, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S65[i0, i1] -> [34, i0, 14, i1, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S91[i0] -> [34, i0, 38, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S17[] -> [16, 0, 0, 0, 0, 0, 0] : M = 1; S80[i0] -> [34, i0, 27, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S54[i0] -> [34, i0, 7, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S46[i0, i1] -> [34, i0, 3, i1, 2, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S68[i0] -> [34, i0, 15, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S116[i0, i1] -> [34, i0, 48, i1, 2, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S43[i0, i1, i2] -> [34, i0, 2, i1, 0, i2, 3] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S26[] -> [25, 0, 0, 0, 0, 0, 0] : M = 1; S31[i0] -> [27, i0, 1, 0, 0, 0, 0] : M = 1 and i0 >= 1 and i0 <= N; S69[i0] -> [34, i0, 16, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S24[] -> [23, 0, 0, 0, 0, 0, 0] : M = 1; S90[i0] -> [34, i0, 37, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S89[i0] -> [34, i0, 36, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S82[i0] -> [34, i0, 29, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S67[i0, i1] -> [34, i0, 14, i1, 2, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S58[i0] -> [34, i0, 11, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S109[i0, i1] -> [34, i0, 47, i1, 1, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S122[i0] -> [34, i0, 51, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S61[i0, i1, i2] -> [34, i0, 12, i1, 0, i2, 2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S1[] -> [0, 0, 0, 0, 0, 0, 0] : M = 1; S4[] -> [3, 0, 0, 0, 0, 0, 0] : M = 1; S86[i0] -> [34, i0, 33, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S14[] -> [13, 0, 0, 0, 0, 0, 0] : M = 1; S93[i0] -> [34, i0, 40, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S56[i0] -> [34, i0, 9, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S37[] -> [33, 0, 0, 0, 0, 0, 0] : M = 1; S125[i0] -> [34, i0, 54, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S96[i0, i1, i2] -> [34, i0, 42, i1, 0, i2, 1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= N and i2 >= 1 and i2 <= N; S9[] -> [8, 0, 0, 0, 0, 0, 0] : M = 1; S41[i0, i1, i2] -> [34, i0, 2, i1, 0, i2, 1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S102[i0, i1, i2] -> [34, i0, 46, i1, 0, i2, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S112[i0, i1] -> [34, i0, 47, i1, 4, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S16[] -> [15, 0, 0, 0, 0, 0, 0] : M = 1; S85[i0] -> [34, i0, 32, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S42[i0, i1, i2] -> [34, i0, 2, i1, 0, i2, 2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S12[] -> [11, 0, 0, 0, 0, 0, 0] : M = 1; S55[i0] -> [34, i0, 8, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S11[] -> [10, 0, 0, 0, 0, 0, 0] : M = 1; S19[] -> [18, 0, 0, 0, 0, 0, 0] : M = 1; S107[i0, i1, i2] -> [34, i0, 46, i1, 0, i2, 5] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S98[i0, i1] -> [34, i0, 42, i1, 1, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= N; S104[i0, i1, i2] -> [34, i0, 46, i1, 0, i2, 2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S29[i0, i1] -> [27, i0, 0, i1, 1, 0, 0] : M = 1 and i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= N; S20[] -> [19, 0, 0, 0, 0, 0, 0] : M = 1; S103[i0, i1, i2] -> [34, i0, 46, i1, 0, i2, 1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S105[i0, i1, i2] -> [34, i0, 46, i1, 0, i2, 3] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S97[i0, i1, i2] -> [34, i0, 42, i1, 0, i2, 2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= N and i2 >= 1 and i2 <= N; S44[i0, i1] -> [34, i0, 3, i1, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S106[i0, i1, i2] -> [34, i0, 46, i1, 0, i2, 4] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S34[] -> [30, 0, 0, 0, 0, 0, 0] : M = 1; S111[i0, i1] -> [34, i0, 47, i1, 3, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S99[i0] -> [34, i0, 43, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S81[i0] -> [34, i0, 28, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S23[] -> [22, 0, 0, 0, 0, 0, 0] : M = 1; S117[i0, i1] -> [34, i0, 48, i1, 3, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S74[i0] -> [34, i0, 21, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P; S113[i0, i1] -> [34, i0, 47, i1, 5, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S119[i0, i1] -> [34, i0, 48, i1, 5, 0, 0] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S73[i0] -> [34, i0, 20, 0, 0, 0, 0] : M = 1 and i0 >= 2 and i0 <= P } -[M, N, O, P, Q, R] -> { : } -[M, N, O, P, Q, R] -> { [i, j, k, l, m, n, o] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/swim.st b/test_inputs/codegen/cloog/swim.st new file mode 100644 index 00000000..ff08bb12 --- /dev/null +++ b/test_inputs/codegen/cloog/swim.st @@ -0,0 +1,223 @@ +domain: "[M, N, O, P, Q, R] -> { S40[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S106[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S99[i0] : M = 1 and i0 >= 2 and i0 <= P; S83[i0] : M = 1 and i0 >= 2 and i0 <= P; S86[i0] : M = 1 and i0 >= 2 and i0 <= P; S56[i0] : M = 1 and i0 >= 2 and i0 <= P; S124[i0] : M = 1 and i0 >= 2 and i0 <= P; S66[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S46[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S64[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S22[] : M = 1; S15[] : M = 1; S30[i0, i1] : M = 1 and i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= N; S14[] : M = 1; S12[] : M = 1; S87[i0] : M = 1 and i0 >= 2 and i0 <= P; S110[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S73[i0] : M = 1 and i0 >= 2 and i0 <= P; S44[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S31[i0] : M = 1 and i0 >= 1 and i0 <= N; S118[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S8[] : M = 1; S125[i0] : M = 1 and i0 >= 2 and i0 <= P; S63[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S25[] : M = 1; S51[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S91[i0] : M = 1 and i0 >= 2 and i0 <= P; S84[i0] : M = 1 and i0 >= 2 and i0 <= P; S35[] : M = 1 and O <= 1; S97[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= N and i2 >= 1 and i2 <= N; S75[i0] : M = 1 and i0 >= 2 and i0 <= P; S19[] : M = 1; S50[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S114[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S13[] : M = 1; S72[i0] : M = 1 and i0 >= 2 and i0 <= P; S78[i0] : M = 1 and i0 >= 2 and i0 <= P; S39[i0] : M = 1 and i0 >= 2 and i0 <= P; S102[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S107[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S68[i0] : M = 1 and i0 >= 2 and i0 <= P; S32[] : M = 1; S41[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S69[i0] : M = 1 and i0 >= 2 and i0 <= P; S3[] : M = 1; S100[i0] : M = 1 and i0 >= 2 and i0 <= P; S11[] : M = 1; S76[i0] : M = 1 and i0 >= 2 and i0 <= P; S88[i0] : M = 1 and i0 >= 2 and i0 <= P; S49[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S45[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S10[] : M = 1; S80[i0] : M = 1 and i0 >= 2 and i0 <= P; S61[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S67[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S70[i0] : M = 1 and i0 >= 2 and i0 <= P; S29[i0, i1] : M = 1 and i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= N; S60[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S21[] : M = 1; S92[i0] : M = 1 and i0 >= 2 and i0 <= P; S47[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S24[] : M = 1; S16[] : M = 1; S105[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S18[] : M = 1; S48[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S5[] : M = 1; S113[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S7[] : M = 1; S38[i0] : M = 1 and i0 >= 2 and i0 <= P; S54[i0] : M = 1 and i0 >= 2 and i0 <= P; S109[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S23[] : M = 1; S82[i0] : M = 1 and i0 >= 2 and i0 <= P; S59[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S77[i0] : M = 1 and i0 >= 2 and i0 <= P; S101[i0] : M = 1 and i0 >= 2 and i0 <= P; S37[] : M = 1; S71[i0] : M = 1 and i0 >= 2 and i0 <= P; S121[i0] : M = 1 and i0 >= 2 and i0 <= P; S115[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S104[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S94[i0] : M = 1 and i0 >= 2 and i0 <= P; S6[] : M = 1; S43[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S1[] : M = 1; S98[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= N; S55[i0] : M = 1 and i0 >= 2 and i0 <= P; S58[i0] : M = 1 and i0 >= 2 and i0 <= P; S42[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S89[i0] : M = 1 and i0 >= 2 and i0 <= P; S53[i0] : M = 1 and i0 >= 2 and i0 <= P; S111[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S52[i0] : M = 1 and i0 >= 2 and i0 <= P; S85[i0] : M = 1 and i0 >= 2 and i0 <= P; S26[] : M = 1; S79[i0] : M = 1 and i0 >= 2 and i0 <= P; S81[i0] : M = 1 and i0 >= 2 and i0 <= P; S57[i0] : M = 1 and i0 >= 2 and i0 <= P; S4[] : M = 1; S123[i0] : M = 1 and i0 >= 2 and i0 <= P; S36[] : M = 1; S65[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S34[] : M = 1; S119[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S9[] : M = 1; S28[i0, i1] : M = 1 and i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= N; S20[] : M = 1; S117[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S112[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S103[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q and i2 >= 1 and i2 <= R; S17[] : M = 1; S96[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= N and i2 >= 1 and i2 <= N; S95[i0, i1, i2] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= N and i2 >= 1 and i2 <= N; S62[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S90[i0] : M = 1 and i0 >= 2 and i0 <= P; S120[i0] : M = 1 and i0 >= 2 and i0 <= P; S116[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= R; S108[i0, i1] : M = 1 and i0 >= 2 and i0 <= P and i1 >= 1 and i1 <= Q; S74[i0] : M = 1 and i0 >= 2 and i0 <= P; S93[i0] : M = 1 and i0 >= 2 and i0 <= P; S2[] : M = 1; S27[] : M = 1; S122[i0] : M = 1 and i0 >= 2 and i0 <= P; S33[] : M = 1 }" +child: + context: "[M, N, O, P, Q, R] -> { [] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S1[] }" + - filter: "[M, N, O, P, Q, R] -> { S2[] }" + - filter: "[M, N, O, P, Q, R] -> { S3[] }" + - filter: "[M, N, O, P, Q, R] -> { S4[] }" + - filter: "[M, N, O, P, Q, R] -> { S5[] }" + - filter: "[M, N, O, P, Q, R] -> { S6[] }" + - filter: "[M, N, O, P, Q, R] -> { S7[] }" + - filter: "[M, N, O, P, Q, R] -> { S8[] }" + - filter: "[M, N, O, P, Q, R] -> { S9[] }" + - filter: "[M, N, O, P, Q, R] -> { S10[] }" + - filter: "[M, N, O, P, Q, R] -> { S11[] }" + - filter: "[M, N, O, P, Q, R] -> { S12[] }" + - filter: "[M, N, O, P, Q, R] -> { S13[] }" + - filter: "[M, N, O, P, Q, R] -> { S14[] }" + - filter: "[M, N, O, P, Q, R] -> { S15[] }" + - filter: "[M, N, O, P, Q, R] -> { S16[] }" + - filter: "[M, N, O, P, Q, R] -> { S17[] }" + - filter: "[M, N, O, P, Q, R] -> { S18[] }" + - filter: "[M, N, O, P, Q, R] -> { S19[] }" + - filter: "[M, N, O, P, Q, R] -> { S20[] }" + - filter: "[M, N, O, P, Q, R] -> { S21[] }" + - filter: "[M, N, O, P, Q, R] -> { S22[] }" + - filter: "[M, N, O, P, Q, R] -> { S23[] }" + - filter: "[M, N, O, P, Q, R] -> { S24[] }" + - filter: "[M, N, O, P, Q, R] -> { S25[] }" + - filter: "[M, N, O, P, Q, R] -> { S26[] }" + - filter: "[M, N, O, P, Q, R] -> { S27[] }" + - filter: "[M, N, O, P, Q, R] -> { S30[i0, i1]; S28[i0, i1]; S31[i0]; S29[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S31[i0] -> [(i0)]; S29[i0, i1] -> [(i0)]; S30[i0, i1] -> [(i0)]; S28[i0, i1] -> [(i0)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S30[i0, i1]; S28[i0, i1]; S29[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S29[i0, i1] -> [(i1)]; S30[i0, i1] -> [(i1)]; S28[i0, i1] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S28[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S29[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S30[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S31[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S32[] }" + - filter: "[M, N, O, P, Q, R] -> { S33[] }" + - filter: "[M, N, O, P, Q, R] -> { S34[] }" + - filter: "[M, N, O, P, Q, R] -> { S35[] }" + - filter: "[M, N, O, P, Q, R] -> { S36[] }" + - filter: "[M, N, O, P, Q, R] -> { S37[] }" + - filter: "[M, N, O, P, Q, R] -> { S58[i0]; S116[i0, i1]; S120[i0]; S106[i0, i1, i2]; S102[i0, i1, i2]; S114[i0, i1]; S113[i0, i1]; S122[i0]; S83[i0]; S103[i0, i1, i2]; S71[i0]; S50[i0, i1]; S98[i0, i1]; S65[i0, i1]; S82[i0]; S109[i0, i1]; S51[i0, i1]; S60[i0, i1, i2]; S91[i0]; S78[i0]; S101[i0]; S123[i0]; S111[i0, i1]; S97[i0, i1, i2]; S67[i0, i1]; S117[i0, i1]; S88[i0]; S79[i0]; S46[i0, i1]; S56[i0]; S45[i0, i1]; S74[i0]; S49[i0, i1]; S75[i0]; S115[i0, i1]; S119[i0, i1]; S42[i0, i1, i2]; S57[i0]; S62[i0, i1]; S99[i0]; S107[i0, i1, i2]; S100[i0]; S104[i0, i1, i2]; S70[i0]; S89[i0]; S125[i0]; S44[i0, i1]; S93[i0]; S90[i0]; S84[i0]; S105[i0, i1, i2]; S95[i0, i1, i2]; S66[i0, i1]; S77[i0]; S38[i0]; S41[i0, i1, i2]; S92[i0]; S87[i0]; S47[i0, i1]; S108[i0, i1]; S54[i0]; S76[i0]; S112[i0, i1]; S80[i0]; S55[i0]; S39[i0]; S59[i0, i1, i2]; S121[i0]; S86[i0]; S110[i0, i1]; S48[i0, i1]; S68[i0]; S53[i0]; S72[i0]; S85[i0]; S52[i0]; S69[i0]; S61[i0, i1, i2]; S43[i0, i1, i2]; S124[i0]; S73[i0]; S81[i0]; S63[i0, i1]; S118[i0, i1]; S96[i0, i1, i2]; S40[i0, i1, i2]; S94[i0]; S64[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S99[i0] -> [(i0)]; S97[i0, i1, i2] -> [(i0)]; S53[i0] -> [(i0)]; S101[i0] -> [(i0)]; S60[i0, i1, i2] -> [(i0)]; S40[i0, i1, i2] -> [(i0)]; S103[i0, i1, i2] -> [(i0)]; S55[i0] -> [(i0)]; S89[i0] -> [(i0)]; S56[i0] -> [(i0)]; S87[i0] -> [(i0)]; S115[i0, i1] -> [(i0)]; S123[i0] -> [(i0)]; S88[i0] -> [(i0)]; S70[i0] -> [(i0)]; S59[i0, i1, i2] -> [(i0)]; S52[i0] -> [(i0)]; S54[i0] -> [(i0)]; S63[i0, i1] -> [(i0)]; S92[i0] -> [(i0)]; S93[i0] -> [(i0)]; S119[i0, i1] -> [(i0)]; S76[i0] -> [(i0)]; S57[i0] -> [(i0)]; S44[i0, i1] -> [(i0)]; S79[i0] -> [(i0)]; S61[i0, i1, i2] -> [(i0)]; S69[i0] -> [(i0)]; S117[i0, i1] -> [(i0)]; S121[i0] -> [(i0)]; S84[i0] -> [(i0)]; S83[i0] -> [(i0)]; S43[i0, i1, i2] -> [(i0)]; S98[i0, i1] -> [(i0)]; S78[i0] -> [(i0)]; S114[i0, i1] -> [(i0)]; S66[i0, i1] -> [(i0)]; S77[i0] -> [(i0)]; S109[i0, i1] -> [(i0)]; S42[i0, i1, i2] -> [(i0)]; S58[i0] -> [(i0)]; S71[i0] -> [(i0)]; S68[i0] -> [(i0)]; S116[i0, i1] -> [(i0)]; S81[i0] -> [(i0)]; S125[i0] -> [(i0)]; S80[i0] -> [(i0)]; S73[i0] -> [(i0)]; S110[i0, i1] -> [(i0)]; S72[i0] -> [(i0)]; S51[i0, i1] -> [(i0)]; S122[i0] -> [(i0)]; S38[i0] -> [(i0)]; S39[i0] -> [(i0)]; S90[i0] -> [(i0)]; S113[i0, i1] -> [(i0)]; S46[i0, i1] -> [(i0)]; S47[i0, i1] -> [(i0)]; S96[i0, i1, i2] -> [(i0)]; S45[i0, i1] -> [(i0)]; S49[i0, i1] -> [(i0)]; S118[i0, i1] -> [(i0)]; S50[i0, i1] -> [(i0)]; S102[i0, i1, i2] -> [(i0)]; S112[i0, i1] -> [(i0)]; S86[i0] -> [(i0)]; S124[i0] -> [(i0)]; S41[i0, i1, i2] -> [(i0)]; S100[i0] -> [(i0)]; S104[i0, i1, i2] -> [(i0)]; S75[i0] -> [(i0)]; S62[i0, i1] -> [(i0)]; S85[i0] -> [(i0)]; S105[i0, i1, i2] -> [(i0)]; S82[i0] -> [(i0)]; S111[i0, i1] -> [(i0)]; S48[i0, i1] -> [(i0)]; S65[i0, i1] -> [(i0)]; S120[i0] -> [(i0)]; S107[i0, i1, i2] -> [(i0)]; S106[i0, i1, i2] -> [(i0)]; S95[i0, i1, i2] -> [(i0)]; S108[i0, i1] -> [(i0)]; S91[i0] -> [(i0)]; S67[i0, i1] -> [(i0)]; S74[i0] -> [(i0)]; S64[i0, i1] -> [(i0)]; S94[i0] -> [(i0)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S38[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S39[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S40[i0, i1, i2]; S41[i0, i1, i2]; S43[i0, i1, i2]; S42[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S43[i0, i1, i2] -> [(i1)]; S41[i0, i1, i2] -> [(i1)]; S40[i0, i1, i2] -> [(i1)]; S42[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S43[i0, i1, i2] -> [(i2)]; S41[i0, i1, i2] -> [(i2)]; S40[i0, i1, i2] -> [(i2)]; S42[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S40[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S41[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S42[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S43[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S46[i0, i1]; S45[i0, i1]; S44[i0, i1]; S47[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S47[i0, i1] -> [(i1)]; S46[i0, i1] -> [(i1)]; S44[i0, i1] -> [(i1)]; S45[i0, i1] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S44[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S45[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S46[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S47[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S51[i0, i1]; S49[i0, i1]; S50[i0, i1]; S48[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S51[i0, i1] -> [(i1)]; S49[i0, i1] -> [(i1)]; S48[i0, i1] -> [(i1)]; S50[i0, i1] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S48[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S49[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S50[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S51[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S52[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S53[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S54[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S55[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S56[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S57[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S58[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S60[i0, i1, i2]; S59[i0, i1, i2]; S61[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S61[i0, i1, i2] -> [(i1)]; S59[i0, i1, i2] -> [(i1)]; S60[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S61[i0, i1, i2] -> [(i2)]; S59[i0, i1, i2] -> [(i2)]; S60[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S59[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S60[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S61[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S62[i0, i1]; S63[i0, i1]; S64[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S64[i0, i1] -> [(i1)]; S62[i0, i1] -> [(i1)]; S63[i0, i1] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S62[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S63[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S64[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S65[i0, i1]; S66[i0, i1]; S67[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S66[i0, i1] -> [(i1)]; S65[i0, i1] -> [(i1)]; S67[i0, i1] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S65[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S66[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S67[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S68[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S69[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S70[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S71[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S72[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S73[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S74[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S75[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S76[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S77[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S78[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S79[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S80[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S81[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S82[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S83[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S84[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S85[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S86[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S87[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S88[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S89[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S90[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S91[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S92[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S93[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S94[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S96[i0, i1, i2]; S98[i0, i1]; S97[i0, i1, i2]; S95[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S98[i0, i1] -> [(i1)]; S95[i0, i1, i2] -> [(i1)]; S96[i0, i1, i2] -> [(i1)]; S97[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S96[i0, i1, i2]; S97[i0, i1, i2]; S95[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S95[i0, i1, i2] -> [(i2)]; S96[i0, i1, i2] -> [(i2)]; S97[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S95[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S96[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S97[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S98[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S99[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S100[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S101[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S107[i0, i1, i2]; S105[i0, i1, i2]; S102[i0, i1, i2]; S104[i0, i1, i2]; S106[i0, i1, i2]; S103[i0, i1, i2] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S102[i0, i1, i2] -> [(i1)]; S103[i0, i1, i2] -> [(i1)]; S104[i0, i1, i2] -> [(i1)]; S107[i0, i1, i2] -> [(i1)]; S106[i0, i1, i2] -> [(i1)]; S105[i0, i1, i2] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S102[i0, i1, i2] -> [(i2)]; S103[i0, i1, i2] -> [(i2)]; S104[i0, i1, i2] -> [(i2)]; S107[i0, i1, i2] -> [(i2)]; S106[i0, i1, i2] -> [(i2)]; S105[i0, i1, i2] -> [(i2)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S102[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S103[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S104[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S105[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S106[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S107[i0, i1, i2] }" + - filter: "[M, N, O, P, Q, R] -> { S113[i0, i1]; S112[i0, i1]; S108[i0, i1]; S111[i0, i1]; S110[i0, i1]; S109[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S110[i0, i1] -> [(i1)]; S112[i0, i1] -> [(i1)]; S111[i0, i1] -> [(i1)]; S113[i0, i1] -> [(i1)]; S109[i0, i1] -> [(i1)]; S108[i0, i1] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S108[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S109[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S110[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S111[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S112[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S113[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S119[i0, i1]; S114[i0, i1]; S117[i0, i1]; S115[i0, i1]; S118[i0, i1]; S116[i0, i1] }" + child: + schedule: "[M, N, O, P, Q, R] -> [{ S115[i0, i1] -> [(i1)]; S116[i0, i1] -> [(i1)]; S118[i0, i1] -> [(i1)]; S117[i0, i1] -> [(i1)]; S119[i0, i1] -> [(i1)]; S114[i0, i1] -> [(i1)] }]" + options: "[M, N, O, P, Q, R] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N, O, P, Q, R] -> { S114[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S115[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S116[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S117[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S118[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S119[i0, i1] }" + - filter: "[M, N, O, P, Q, R] -> { S120[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S121[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S122[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S123[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S124[i0] }" + - filter: "[M, N, O, P, Q, R] -> { S125[i0] }" diff --git a/test_inputs/codegen/cloog/test.in b/test_inputs/codegen/cloog/test.in deleted file mode 100644 index 981d9339..00000000 --- a/test_inputs/codegen/cloog/test.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S1[i0, i1] -> [i0, i1, 0] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S2[i0, i0] -> [i0, i0, 1] : i0 >= 3 and i0 <= N } -[M, N] -> { : N >= M and M >= 4 } -[M, N] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/test.st b/test_inputs/codegen/cloog/test.st new file mode 100644 index 00000000..97a290ed --- /dev/null +++ b/test_inputs/codegen/cloog/test.st @@ -0,0 +1,10 @@ +domain: "[M, N] -> { S1[i0, i1] : i0 >= 1 and i0 <= N and i1 >= 1 and i1 <= M; S2[i0, i0] : i0 >= 3 and i0 <= N }" +child: + context: "[M, N] -> { [] : N >= M and M >= 4 }" + child: + schedule: "[M, N] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S1[i0, i1] }" + - filter: "[M, N] -> { S2[i0, i1] }" diff --git a/test_inputs/codegen/cloog/thomasset.in b/test_inputs/codegen/cloog/thomasset.in deleted file mode 100644 index 398e5234..00000000 --- a/test_inputs/codegen/cloog/thomasset.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S2[i0, i1, 0, i3, i4] -> [i3 + i4, -1 + i0] : i0 <= n and i1 <= n and i1 >= 1 and i0 >= 1 and 3i4 <= i1 and 3i4 >= -2 + i1 and 3i3 <= n and 3i3 >= -2 + n; S1[i0, i1] -> [i1, 0] : i0 <= n and i0 >= 1 and 3i1 <= -1 + i0 and 3i1 >= -3 + i0 } -[n] -> { : } -[n] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/thomasset.st b/test_inputs/codegen/cloog/thomasset.st new file mode 100644 index 00000000..612b6505 --- /dev/null +++ b/test_inputs/codegen/cloog/thomasset.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[i, j] : i <= n and i >= 1 and 3j <= -1 + i and 3j >= -3 + i; S2[i, j, 0, p, q] : i <= n and j <= n and j >= 1 and i >= 1 and 3q <= j and 3q >= -2 + j and 3p <= n and 3p >= -2 + n }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S2[i0, i1, i2, i3, i4] -> [(i2 + i3 + i4)]; S1[i0, i1] -> [(i1)] }, { S2[i0, i1, i2, i3, i4] -> [(-1 + i0)]; S1[i0, i1] -> [(0)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/tiling.in b/test_inputs/codegen/cloog/tiling.in deleted file mode 100644 index 6f0530f2..00000000 --- a/test_inputs/codegen/cloog/tiling.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S1[ii, i] -> [ii, i, 0] : i >= 0 and i <= n and i <= 9 + 10ii and i >= 10ii } -[n] -> { : n >= 0 } -[n] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/tiling.st b/test_inputs/codegen/cloog/tiling.st new file mode 100644 index 00000000..5e8f0af7 --- /dev/null +++ b/test_inputs/codegen/cloog/tiling.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[ii, i] : i >= 0 and i <= n and i <= 9 + 10ii and i >= 10ii }" +child: + context: "[n] -> { [] : n >= 0 }" + child: + schedule: "[n] -> [{ S1[ii, i] -> [(ii)] }, { S1[ii, i] -> [(i)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/uday_scalars.c b/test_inputs/codegen/cloog/uday_scalars.c index d8002a86..7d870a51 100644 --- a/test_inputs/codegen/cloog/uday_scalars.c +++ b/test_inputs/codegen/cloog/uday_scalars.c @@ -1,6 +1,6 @@ { - for (int c2 = 0; c2 <= n; c2 += 1) - S1(c2, 0, 0); - for (int c2 = 0; c2 <= n; c2 += 1) - S2(0, c2, 0); + for (int c0 = 0; c0 <= n; c0 += 1) + S1(c0, 0, 0); + for (int c0 = 0; c0 <= n; c0 += 1) + S2(0, c0, 0); } diff --git a/test_inputs/codegen/cloog/uday_scalars.in b/test_inputs/codegen/cloog/uday_scalars.in deleted file mode 100644 index ae29bb54..00000000 --- a/test_inputs/codegen/cloog/uday_scalars.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S1[i0, 0, 0] -> [0, 1, i0, 0] : i0 >= 0 and i0 <= n; S2[0, i1, 0] -> [1, 0, i1, 1] : i1 >= 0 and i1 <= n } -[n] -> { : } -[n] -> { [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/uday_scalars.st b/test_inputs/codegen/cloog/uday_scalars.st new file mode 100644 index 00000000..1501e832 --- /dev/null +++ b/test_inputs/codegen/cloog/uday_scalars.st @@ -0,0 +1,13 @@ +domain: "[n] -> { S1[j, 0, 0] : j >= 0 and j <= n; S2[0, l, 0] : l >= 0 and l <= n }" +child: + context: "[n] -> { [] }" + child: + sequence: + - filter: "[n] -> { S1[i0, i1, i2] }" + child: + schedule: "[n] -> [{ S1[i0, i1, i2] -> [(i0)] }]" + options: "[n] -> { separate[i0] }" + - filter: "[n] -> { S2[i0, i1, i2] }" + child: + schedule: "[n] -> [{ S2[i0, i1, i2] -> [(i1)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/union.in b/test_inputs/codegen/cloog/union.in deleted file mode 100644 index 23b6cab9..00000000 --- a/test_inputs/codegen/cloog/union.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S1[i0] -> [i0] : M <= 10 and i0 >= 0 and i0 <= 100; S1[i0] -> [-i0] : M >= 11 and i0 >= 0 and i0 <= 100 } -[M] -> { : M >= 1 or M <= -1 } -[M] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/union.st b/test_inputs/codegen/cloog/union.st new file mode 100644 index 00000000..c2622dc8 --- /dev/null +++ b/test_inputs/codegen/cloog/union.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S1[i0] : i0 >= 0 and i0 <= 100 }" +child: + context: "[M] -> { [] : M >= 1 or M <= -1 }" + child: + schedule: "[M] -> [{ S1[i0] -> [(i0)] : M <= 10; S1[i0] -> [(-i0)] : M >= 11 }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/unroll.in b/test_inputs/codegen/cloog/unroll.in deleted file mode 100644 index 1e449e0b..00000000 --- a/test_inputs/codegen/cloog/unroll.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S1[i] -> [i, 0] : i >= 0 and i <= 10 } -[n] -> { : } -[n] -> { [i, j] -> unroll[o0] } diff --git a/test_inputs/codegen/cloog/unroll.st b/test_inputs/codegen/cloog/unroll.st new file mode 100644 index 00000000..8780a633 --- /dev/null +++ b/test_inputs/codegen/cloog/unroll.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[i] : i >= 0 and i <= 10 }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S1[i] -> [(i)] }]" + options: "[n] -> { unroll[i0] }" diff --git a/test_inputs/codegen/cloog/unroll2.c b/test_inputs/codegen/cloog/unroll2.c index b96ddd73..58f2705c 100644 --- a/test_inputs/codegen/cloog/unroll2.c +++ b/test_inputs/codegen/cloog/unroll2.c @@ -1,6 +1,5 @@ -{ - if (n >= 0 && n <= 9) +if (n >= -1 && n <= 9) { + if (n >= 0) S1(n); - if (n >= -1 && n <= 9) - S1(n + 1); + S1(n + 1); } diff --git a/test_inputs/codegen/cloog/unroll2.in b/test_inputs/codegen/cloog/unroll2.in deleted file mode 100644 index eb71e075..00000000 --- a/test_inputs/codegen/cloog/unroll2.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S1[i] -> [i, 0] : i >= n and i <= 1 + n and n <= 9 and i >= 0 } -[n] -> { : } -[n] -> { [i, j] -> unroll[o0] } diff --git a/test_inputs/codegen/cloog/unroll2.st b/test_inputs/codegen/cloog/unroll2.st new file mode 100644 index 00000000..32cbb8cb --- /dev/null +++ b/test_inputs/codegen/cloog/unroll2.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[i] : i >= n and i <= 1 + n and n <= 9 and i >= 0 }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S1[i] -> [(i)] }]" + options: "[n] -> { unroll[i0] }" diff --git a/test_inputs/codegen/cloog/usvd_e_t.in b/test_inputs/codegen/cloog/usvd_e_t.in deleted file mode 100644 index feb8f089..00000000 --- a/test_inputs/codegen/cloog/usvd_e_t.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S19[i0, i1, i2] -> [i0, i1, i2, 18] : i0 >= 8 and i1 >= 1 and i2 <= 0 and i2 >= -10 + i0 and i1 <= -6 + i0; S21[i0, i1, -7 + i0] -> [i0, i1, -7 + i0, 20] : i0 <= 10 and i1 >= 4 and i1 <= 8 and i0 >= 7; S17[i0, i1, -6 + i0] -> [i0, i1, -6 + i0, 16] : i0 >= 7 and i1 >= 4 and i0 <= 10 and i1 <= -2 + i0; S4[i0, i1, -1] -> [i0, i1, -1, 3] : i0 <= 8 and i1 >= 1 and i1 <= -4 + i0; S1[i0, 0, 0] -> [i0, 0, 0, 0] : i0 >= 0 and i0 <= 4; S10[i0, 4, 0] -> [i0, 4, 0, 9] : i0 >= 7 and i0 <= 10; S16[i0, i1, -6 + i0] -> [i0, i1, -6 + i0, 15] : i0 <= 10 and i1 >= 4 and i0 >= 7 and i1 <= -2 + i0; S24[i0, i1, i2] -> [i0, i1, i2, 23] : i0 >= 8 and i1 >= 4 and i1 <= 8 and i2 <= 3 and i2 >= -7 + i0; S23[i0, i1, i2] -> [i0, i1, i2, 22] : i0 <= 9 and i1 >= 4 and i1 <= 8 and i2 >= 0 and i2 <= -7 + i0; S7[i0, i1, 0] -> [i0, i1, 0, 6] : i0 >= 5 and i1 <= 0 and i1 >= -9 + i0; S25[i0, i1, 4] -> [i0, i1, 4, 24] : i0 >= 10 and i0 <= 14 and i1 >= 1 and i1 <= 5; S18[i0, i1, i2] -> [i0, i1, i2, 17] : i0 <= 10 and i1 >= 1 and i2 >= 4 and i2 <= -4 + i0 and i1 <= -5 + i0; S14[i0, i1, i2] -> [i0, i1, i2, 13] : i0 >= 8 and i1 <= 4 and i2 <= 0 and i2 >= -12 + i0 and i1 >= -6 + i0; S6[i0, i1, 0] -> [i0, i1, 0, 5] : i0 <= 8 and i1 >= -4 and i1 <= -9 + i0; S8[i0, i1, 0] -> [i0, i1, 0, 7] : i0 >= 3 and i0 <= 7 and i1 >= 7 and i1 <= 11; S15[i0, i1, i2] -> [i0, i1, i2, 14] : i0 <= 10 and i1 >= 1 and i1 <= 5 and i2 >= 4 and i2 <= -4 + i0; S11[i0, -3 + i0, i2] -> [i0, -3 + i0, i2, 10] : i0 <= 10 and i0 >= 7 and i2 <= 4 and i2 >= -7 + i0; S20[i0, i1, i2] -> [i0, i1, i2, 19] : i0 >= 8 and i1 <= 4 and i2 >= -4 and i2 <= 0 and i1 >= -6 + i0; S12[i0, -2 + i0, i2] -> [i0, -2 + i0, i2, 11] : i0 >= 7 and i0 <= 10 and i2 <= 4 and i2 >= -7 + i0; S9[i0, 4, 0] -> [i0, 4, 0, 8] : i0 >= 7 and i0 <= 10; S22[i0, i1, -7 + i0] -> [i0, i1, -7 + i0, 21] : i0 >= 7 and i1 >= 5 and i1 <= 9 and i0 <= 10; S13[i0, i1, i2] -> [i0, i1, i2, 12] : i0 <= 10 and i1 >= 4 and i2 <= 4 and i2 >= -7 + i0 and i1 <= -4 + i0; S26[i0, i1, 3] -> [i0, i1, 3, 25] : i0 >= 10 and i0 <= 14 and i1 >= 1 and i1 <= 5; S3[i0, 0, 0] -> [i0, 0, 0, 2] : i0 >= 4 and i0 <= 8; S5[i0, i1, 0] -> [i0, i1, 0, 4] : i0 >= 4 and i1 <= 4 and i1 >= -4 + i0; S2[i0, i1, 0] -> [i0, i1, 0, 1] : i0 >= 0 and i0 <= 4 and i1 >= 0 and i1 <= 4 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/usvd_e_t.st b/test_inputs/codegen/cloog/usvd_e_t.st new file mode 100644 index 00000000..64941659 --- /dev/null +++ b/test_inputs/codegen/cloog/usvd_e_t.st @@ -0,0 +1,34 @@ +domain: "{ S22[i0, i1, -7 + i0] : i0 >= 7 and i1 >= 5 and i1 <= 9 and i0 <= 10; S21[i0, i1, -7 + i0] : i0 <= 10 and i1 >= 4 and i1 <= 8 and i0 >= 7; S4[i0, i1, -1] : i0 <= 8 and i1 >= 1 and i1 <= -4 + i0; S8[i0, i1, 0] : i0 >= 3 and i0 <= 7 and i1 >= 7 and i1 <= 11; S25[i0, i1, 4] : i0 >= 10 and i0 <= 14 and i1 >= 1 and i1 <= 5; S15[i0, i1, i2] : i0 <= 10 and i1 >= 1 and i1 <= 5 and i2 >= 4 and i2 <= -4 + i0; S6[i0, i1, 0] : i0 <= 8 and i1 >= -4 and i1 <= -9 + i0; S16[i0, i1, -6 + i0] : i0 <= 10 and i1 >= 4 and i0 >= 7 and i1 <= -2 + i0; S7[i0, i1, 0] : i0 >= 5 and i1 <= 0 and i1 >= -9 + i0; S1[i0, 0, 0] : i0 >= 0 and i0 <= 4; S2[i0, i1, 0] : i0 >= 0 and i0 <= 4 and i1 >= 0 and i1 <= 4; S26[i0, i1, 3] : i0 >= 10 and i0 <= 14 and i1 >= 1 and i1 <= 5; S10[i0, 4, 0] : i0 >= 7 and i0 <= 10; S12[i0, -2 + i0, i2] : i0 >= 7 and i0 <= 10 and i2 <= 4 and i2 >= -7 + i0; S23[i0, i1, i2] : i0 <= 9 and i1 >= 4 and i1 <= 8 and i2 >= 0 and i2 <= -7 + i0; S13[i0, i1, i2] : i0 <= 10 and i1 >= 4 and i2 <= 4 and i2 >= -7 + i0 and i1 <= -4 + i0; S20[i0, i1, i2] : i0 >= 8 and i1 <= 4 and i2 >= -4 and i2 <= 0 and i1 >= -6 + i0; S24[i0, i1, i2] : i0 >= 8 and i1 >= 4 and i1 <= 8 and i2 <= 3 and i2 >= -7 + i0; S19[i0, i1, i2] : i0 >= 8 and i1 >= 1 and i2 <= 0 and i2 >= -10 + i0 and i1 <= -6 + i0; S11[i0, -3 + i0, i2] : i0 <= 10 and i0 >= 7 and i2 <= 4 and i2 >= -7 + i0; S14[i0, i1, i2] : i0 >= 8 and i1 <= 4 and i2 <= 0 and i2 >= -12 + i0 and i1 >= -6 + i0; S3[i0, 0, 0] : i0 >= 4 and i0 <= 8; S9[i0, 4, 0] : i0 >= 7 and i0 <= 10; S18[i0, i1, i2] : i0 <= 10 and i1 >= 1 and i2 >= 4 and i2 <= -4 + i0 and i1 <= -5 + i0; S5[i0, i1, 0] : i0 >= 4 and i1 <= 4 and i1 >= -4 + i0; S17[i0, i1, -6 + i0] : i0 >= 7 and i1 >= 4 and i0 <= 10 and i1 <= -2 + i0 }" +child: + context: "{ [] }" + child: + schedule: "[{ S8[i0, i1, i2] -> [(i0)]; S21[i0, i1, i2] -> [(i0)]; S9[i0, i1, i2] -> [(i0)]; S10[i0, i1, i2] -> [(i0)]; S24[i0, i1, i2] -> [(i0)]; S15[i0, i1, i2] -> [(i0)]; S12[i0, i1, i2] -> [(i0)]; S7[i0, i1, i2] -> [(i0)]; S6[i0, i1, i2] -> [(i0)]; S23[i0, i1, i2] -> [(i0)]; S22[i0, i1, i2] -> [(i0)]; S16[i0, i1, i2] -> [(i0)]; S17[i0, i1, i2] -> [(i0)]; S25[i0, i1, i2] -> [(i0)]; S18[i0, i1, i2] -> [(i0)]; S26[i0, i1, i2] -> [(i0)]; S5[i0, i1, i2] -> [(i0)]; S2[i0, i1, i2] -> [(i0)]; S4[i0, i1, i2] -> [(i0)]; S13[i0, i1, i2] -> [(i0)]; S3[i0, i1, i2] -> [(i0)]; S14[i0, i1, i2] -> [(i0)]; S19[i0, i1, i2] -> [(i0)]; S20[i0, i1, i2] -> [(i0)]; S11[i0, i1, i2] -> [(i0)]; S1[i0, i1, i2] -> [(i0)] }, { S8[i0, i1, i2] -> [(i1)]; S21[i0, i1, i2] -> [(i1)]; S9[i0, i1, i2] -> [(i1)]; S10[i0, i1, i2] -> [(i1)]; S24[i0, i1, i2] -> [(i1)]; S15[i0, i1, i2] -> [(i1)]; S12[i0, i1, i2] -> [(i1)]; S7[i0, i1, i2] -> [(i1)]; S6[i0, i1, i2] -> [(i1)]; S23[i0, i1, i2] -> [(i1)]; S22[i0, i1, i2] -> [(i1)]; S16[i0, i1, i2] -> [(i1)]; S17[i0, i1, i2] -> [(i1)]; S25[i0, i1, i2] -> [(i1)]; S18[i0, i1, i2] -> [(i1)]; S26[i0, i1, i2] -> [(i1)]; S5[i0, i1, i2] -> [(i1)]; S2[i0, i1, i2] -> [(i1)]; S4[i0, i1, i2] -> [(i1)]; S13[i0, i1, i2] -> [(i1)]; S3[i0, i1, i2] -> [(i1)]; S14[i0, i1, i2] -> [(i1)]; S19[i0, i1, i2] -> [(i1)]; S20[i0, i1, i2] -> [(i1)]; S11[i0, i1, i2] -> [(i1)]; S1[i0, i1, i2] -> [(i1)] }, { S8[i0, i1, i2] -> [(i2)]; S21[i0, i1, i2] -> [(i2)]; S9[i0, i1, i2] -> [(i2)]; S10[i0, i1, i2] -> [(i2)]; S24[i0, i1, i2] -> [(i2)]; S15[i0, i1, i2] -> [(i2)]; S12[i0, i1, i2] -> [(i2)]; S7[i0, i1, i2] -> [(i2)]; S6[i0, i1, i2] -> [(i2)]; S23[i0, i1, i2] -> [(i2)]; S22[i0, i1, i2] -> [(i2)]; S16[i0, i1, i2] -> [(i2)]; S17[i0, i1, i2] -> [(i2)]; S25[i0, i1, i2] -> [(i2)]; S18[i0, i1, i2] -> [(i2)]; S26[i0, i1, i2] -> [(i2)]; S5[i0, i1, i2] -> [(i2)]; S2[i0, i1, i2] -> [(i2)]; S4[i0, i1, i2] -> [(i2)]; S13[i0, i1, i2] -> [(i2)]; S3[i0, i1, i2] -> [(i2)]; S14[i0, i1, i2] -> [(i2)]; S19[i0, i1, i2] -> [(i2)]; S20[i0, i1, i2] -> [(i2)]; S11[i0, i1, i2] -> [(i2)]; S1[i0, i1, i2] -> [(i2)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1, i2] }" + - filter: "{ S2[i0, i1, i2] }" + - filter: "{ S3[i0, i1, i2] }" + - filter: "{ S4[i0, i1, i2] }" + - filter: "{ S5[i0, i1, i2] }" + - filter: "{ S6[i0, i1, i2] }" + - filter: "{ S7[i0, i1, i2] }" + - filter: "{ S8[i0, i1, i2] }" + - filter: "{ S9[i0, i1, i2] }" + - filter: "{ S10[i0, i1, i2] }" + - filter: "{ S11[i0, i1, i2] }" + - filter: "{ S12[i0, i1, i2] }" + - filter: "{ S13[i0, i1, i2] }" + - filter: "{ S14[i0, i1, i2] }" + - filter: "{ S15[i0, i1, i2] }" + - filter: "{ S16[i0, i1, i2] }" + - filter: "{ S17[i0, i1, i2] }" + - filter: "{ S18[i0, i1, i2] }" + - filter: "{ S19[i0, i1, i2] }" + - filter: "{ S20[i0, i1, i2] }" + - filter: "{ S21[i0, i1, i2] }" + - filter: "{ S22[i0, i1, i2] }" + - filter: "{ S23[i0, i1, i2] }" + - filter: "{ S24[i0, i1, i2] }" + - filter: "{ S25[i0, i1, i2] }" + - filter: "{ S26[i0, i1, i2] }" diff --git a/test_inputs/codegen/cloog/vasilache.c b/test_inputs/codegen/cloog/vasilache.c dissimilarity index 88% index c6d32ca6..7dfadcf0 100644 --- a/test_inputs/codegen/cloog/vasilache.c +++ b/test_inputs/codegen/cloog/vasilache.c @@ -1,23 +1,23 @@ -{ - S1(); - S2(); - for (int c1 = 0; c1 < N; c1 += 1) - for (int c3 = 0; c3 < N; c3 += 1) { - S4(c1, c3); - S5(c1, c3); - } - for (int c1 = 0; c1 < N; c1 += 1) - for (int c3 = 0; c3 < N; c3 += 1) - for (int c5 = 0; c5 <= (N - 1) / 32; c5 += 1) { - S7(c1, c3, c5, 32 * c5); - for (int c7 = 32 * c5 + 1; c7 <= min(N - 1, 32 * c5 + 31); c7 += 1) { - S6(c1, c3, c5, c7 - 1); - S7(c1, c3, c5, c7); - } - if (32 * c5 + 31 >= N) { - S6(c1, c3, c5, N - 1); - } else - S6(c1, c3, c5, 32 * c5 + 31); - } - S8(); -} +{ + S1(); + S2(); + for (int c0 = 0; c0 < N; c0 += 1) + for (int c1 = 0; c1 < N; c1 += 1) { + S4(c0, c1); + S5(c0, c1); + } + for (int c0 = 0; c0 < N; c0 += 1) + for (int c1 = 0; c1 < N; c1 += 1) + for (int c2 = 0; c2 <= (N - 1) / 32; c2 += 1) { + S7(c0, c1, c2, 32 * c2); + for (int c3 = 32 * c2 + 1; c3 <= min(N - 1, 32 * c2 + 31); c3 += 1) { + S6(c0, c1, c2, c3 - 1); + S7(c0, c1, c2, c3); + } + if (32 * c2 + 31 >= N) { + S6(c0, c1, c2, N - 1); + } else + S6(c0, c1, c2, 32 * c2 + 31); + } + S8(); +} diff --git a/test_inputs/codegen/cloog/vasilache.in b/test_inputs/codegen/cloog/vasilache.in deleted file mode 100644 index a9b9860f..00000000 --- a/test_inputs/codegen/cloog/vasilache.in +++ /dev/null @@ -1,3 +0,0 @@ -[M, N] -> { S4[i0, i1] -> [3, i0, 0, i1, 0, 0, 0, 0, 0] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N; S1[] -> [0, 0, 0, 0, 0, 0, 0, 0, 0]; S6[i0, i1, i2, i3] -> [4, i0, 0, i1, 0, i2, 0, 1 + i3, 0] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N and i3 >= 0 and i3 <= -1 + N and i3 >= 32i2 and i3 <= 31 + 32i2; S7[i0, i1, i2, i3] -> [4, i0, 0, i1, 0, i2, 0, i3, 1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N and i3 >= 0 and i3 <= -1 + N and i3 >= 32i2 and i3 <= 31 + 32i2; S5[i0, i1] -> [3, i0, 0, i1, 1, 0, 0, 0, 0] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N; S2[] -> [1, 0, 0, 0, 0, 0, 0, 0, 0]; S8[] -> [5, 0, 0, 0, 0, 0, 0, 0, 0]; S3[] -> [2, 0, 0, 0, 0, 0, 0, 0, 0] : M >= 79 } -[M, N] -> { : M <= 3 and N >= 100 } -[M, N] -> { [i, j, k, l, m, n, o, p, q] -> separate[x] : x >= 7 } diff --git a/test_inputs/codegen/cloog/vasilache.st b/test_inputs/codegen/cloog/vasilache.st new file mode 100644 index 00000000..f0cd320b --- /dev/null +++ b/test_inputs/codegen/cloog/vasilache.st @@ -0,0 +1,37 @@ +domain: "[M, N] -> { S5[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N; S8[]; S2[]; S7[i0, i1, i2, i3] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N and i3 >= 0 and i3 <= -1 + N and i3 >= 32i2 and i3 <= 31 + 32i2; S4[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N; S1[]; S3[] : M >= 79; S6[i0, i1, i2, i3] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <= -1 + N and i3 >= 0 and i3 <= -1 + N and i3 >= 32i2 and i3 <= 31 + 32i2 }" +child: + context: "[M, N] -> { [] : M <= 3 and N >= 100 }" + child: + sequence: + - filter: "[M, N] -> { S1[] }" + - filter: "[M, N] -> { S2[] }" + - filter: "[M, N] -> { S3[] }" + - filter: "[M, N] -> { S5[i0, i1]; S4[i0, i1] }" + child: + schedule: "[M, N] -> [{ S5[i0, i1] -> [(i0)]; S4[i0, i1] -> [(i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S5[i0, i1] -> [(i1)]; S4[i0, i1] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S4[i0, i1] }" + - filter: "[M, N] -> { S5[i0, i1] }" + - filter: "[M, N] -> { S7[i0, i1, i2, i3]; S6[i0, i1, i2, i3] }" + child: + schedule: "[M, N] -> [{ S7[i0, i1, i2, i3] -> [(i0)]; S6[i0, i1, i2, i3] -> [(i0)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S7[i0, i1, i2, i3] -> [(i1)]; S6[i0, i1, i2, i3] -> [(i1)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S7[i0, i1, i2, i3] -> [(i2)]; S6[i0, i1, i2, i3] -> [(i2)] }]" + options: "[M, N] -> { separate[i0] }" + child: + schedule: "[M, N] -> [{ S7[i0, i1, i2, i3] -> [(i3)]; S6[i0, i1, i2, i3] -> [(1 + i3)] }]" + options: "[M, N] -> { separate[i0] }" + child: + sequence: + - filter: "[M, N] -> { S6[i0, i1, i2, i3] }" + - filter: "[M, N] -> { S7[i0, i1, i2, i3] }" + - filter: "[M, N] -> { S8[] }" diff --git a/test_inputs/codegen/cloog/vivien.c b/test_inputs/codegen/cloog/vivien.c index c4bd08b6..ab0854a7 100644 --- a/test_inputs/codegen/cloog/vivien.c +++ b/test_inputs/codegen/cloog/vivien.c @@ -2,50 +2,52 @@ for (int c0 = -27 * n + 2; c0 <= 1; c0 += 1) S1(c0 - 1); for (int c0 = 2; c0 <= min(2 * n, n + 29); c0 += 1) { - if (c0 >= 3 && 2 * n >= c0 + 1) { - S4(c0 - c0 / 2 - 1, c0 / 2 + 1); - if (c0 >= 5 && 2 * n >= c0 + 3) { - S4(c0 - c0 / 2 - 2, c0 / 2 + 2); - for (int c2 = 1; c2 < c0 - c0 / 2 - 1; c2 += 1) - S5(c0 - c0 / 2 - 1, c0 / 2 + 1, c2); + if (c0 >= 3) { + if (2 * n >= c0 + 1) { + S4(c0 - c0 / 2 - 1, c0 / 2 + 1); + if (c0 + 2 >= 2 * n) { + for (int c2 = 1; c2 < -n + c0; c2 += 1) + S5(-n + c0, n, c2); + } else if (c0 >= 5) { + S4(c0 - c0 / 2 - 2, c0 / 2 + 2); + for (int c2 = 1; c2 < c0 - c0 / 2 - 1; c2 += 1) + S5(c0 - c0 / 2 - 1, c0 / 2 + 1, c2); + } } - } - for (int c1 = -c0 + c0 / 2 + 3; c1 <= min(-1, n - c0); c1 += 1) { - S4(-c1, c0 + c1); - S6(-c1 + 2, c0 + c1 - 2); - for (int c2 = 1; c2 <= -c1; c2 += 1) - S5(-c1 + 1, c0 + c1 - 1, c2); - } - if (c0 >= 3 && n + 1 >= c0 && c0 <= 4) { - S1(c0 - 1); - } else if (c0 >= 5 && n + 1 >= c0) { - S6(2, c0 - 2); - S1(c0 - 1); - } - if (n >= 2 && c0 == n + 1) { - S6(1, n); - } else if (2 * n >= c0 + 3 && c0 >= n + 2) { - S6(-n + c0 + 1, n - 1); - for (int c2 = 1; c2 < -n + c0; c2 += 1) - S5(-n + c0, n, c2); - } - if (2 * n >= c0 + 1 && c0 + 2 >= 2 * n) - for (int c2 = 1; c2 < -n + c0; c2 += 1) - S5(-n + c0, n, c2); - if (c0 >= n + 3 && 2 * n >= c0 + 1) { - S6(-n + c0, n); - } else if (c0 >= 3 && n >= c0) { - S6(1, c0 - 1); - } else if (c0 == 2) { + for (int c1 = -c0 + c0 / 2 + 3; c1 <= min(-1, n - c0); c1 += 1) { + S4(-c1, c0 + c1); + S6(-c1 + 2, c0 + c1 - 2); + for (int c2 = 1; c2 <= -c1; c2 += 1) + S5(-c1 + 1, c0 + c1 - 1, c2); + } + if (2 * n >= c0 + 3 && c0 >= n + 2) { + S6(-n + c0 + 1, n - 1); + for (int c2 = 1; c2 < -n + c0; c2 += 1) + S5(-n + c0, n, c2); + } + if (n >= 3 && c0 == n + 2) { + S6(2, n); + S1(n + 1); + } else { + if (c0 >= n + 3 && 2 * n >= c0 + 1) + S6(-n + c0, n); + if (c0 >= n + 3) { + S1(c0 - 1); + } else { + if (n + 1 >= c0 && c0 <= 4) { + S1(c0 - 1); + } else if (c0 >= 5 && n + 1 >= c0) { + S6(2, c0 - 2); + S1(c0 - 1); + } + if (n + 1 >= c0) + S6(1, c0 - 1); + } + } + if (n == 2 && c0 == 4) + S1(3); + } else S1(1); - } else if (n >= 3 && c0 == n + 2) { - S6(2, n); - S1(n + 1); - } - if (c0 >= n + 3) - S1(c0 - 1); - if (n == 2 && c0 == 4) - S1(3); if (c0 % 2 == 0) S3(c0 / 2); for (int c1 = max(1, -n + c0); c1 < (c0 + 1) / 2; c1 += 1) diff --git a/test_inputs/codegen/cloog/vivien.in b/test_inputs/codegen/cloog/vivien.in deleted file mode 100644 index b591ef35..00000000 --- a/test_inputs/codegen/cloog/vivien.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S6[i0, i1] -> [2i0 + 2i1, 2 - i0, 0] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S2[i0, i1] -> [1 + 2i0 + 2i1, i1, 0] : 29i1 >= 1 - i0 and i0 <= n and i1 >= 1 and i1 <= -1 + i0; S1[i0] -> [2 + 2i0, 0, 0] : i0 >= 1 - 27n and i0 <= 28 + n; S4[i0, i1] -> [2i0 + 2i1, -i0, 0] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S3[i0] -> [1 + 4i0, 0, 0] : i0 >= 1 and i0 <= n; S5[i0, i1, i2] -> [2i0 + 2i1, 1 - i0, i2] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n and i2 >= 1 and i2 <= -1 + i0 } -[n] -> { : } -[n] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/vivien.st b/test_inputs/codegen/cloog/vivien.st new file mode 100644 index 00000000..681b170c --- /dev/null +++ b/test_inputs/codegen/cloog/vivien.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S2[i, j] : 29j >= 1 - i and i <= n and j >= 1 and j <= -1 + i; S1[i] : i >= 1 - 27n and i <= 28 + n; S4[i, j] : i >= 1 and i <= n and j >= 1 + i and j <= n; S5[i, j, k] : i >= 1 and i <= n and j >= 1 + i and j <= n and k >= 1 and k <= -1 + i; S6[i, j] : i >= 1 and i <= n and j >= 1 + i and j <= n; S3[i] : i >= 1 and i <= n }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S1[i0] -> [(2 + 2i0)]; S4[i0, i1] -> [(2i0 + 2i1)]; S6[i0, i1] -> [(2i0 + 2i1)]; S3[i0] -> [(1 + 4i0)]; S5[i0, i1, i2] -> [(2i0 + 2i1)]; S2[i0, i1] -> [(1 + 2i0 + 2i1)] }, { S1[i0] -> [(0)]; S4[i0, i1] -> [(-i0)]; S6[i0, i1] -> [(2 - i0)]; S3[i0] -> [(0)]; S5[i0, i1, i2] -> [(1 - i0)]; S2[i0, i1] -> [(i1)] }, { S1[i0] -> [(0)]; S4[i0, i1] -> [(0)]; S6[i0, i1] -> [(0)]; S3[i0] -> [(0)]; S5[i0, i1, i2] -> [(i2)]; S2[i0, i1] -> [(0)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/vivien2.c b/test_inputs/codegen/cloog/vivien2.c index 57fc55e6..48be9ad9 100644 --- a/test_inputs/codegen/cloog/vivien2.c +++ b/test_inputs/codegen/cloog/vivien2.c @@ -9,40 +9,38 @@ for (int c2 = 1; c2 < c0 - c0 / 2 - 1; c2 += 1) S5(c0 - c0 / 2 - 1, c0 / 2 + 1, c2); } - } - for (int c1 = -c0 + c0 / 2 + 3; c1 <= min(-1, n - c0); c1 += 1) { - S4(-c1, c0 + c1); - S6(-c1 + 2, c0 + c1 - 2); - for (int c2 = 1; c2 <= -c1; c2 += 1) - S5(-c1 + 1, c0 + c1 - 1, c2); - } - if (c0 >= 5 && n + 1 >= c0) { - S6(2, c0 - 2); - S1(c0 - 1); - if (c0 == n + 1) - S6(1, n); - } else if (c0 == 2) { - S1(1); - } else if (2 * n >= c0 + 3 && c0 >= n + 2) { - S6(-n + c0 + 1, n - 1); - for (int c2 = 1; c2 < -n + c0; c2 += 1) - S5(-n + c0, n, c2); - } else if (c0 <= 4) - S1(c0 - 1); - if (c0 >= 3 && n >= c0) { - S6(1, c0 - 1); - } else { - if (c0 + 2 >= 2 * n) + for (int c1 = -c0 + c0 / 2 + 3; c1 <= min(-1, n - c0); c1 += 1) { + S4(-c1, c0 + c1); + S6(-c1 + 2, c0 + c1 - 2); + for (int c2 = 1; c2 <= -c1; c2 += 1) + S5(-c1 + 1, c0 + c1 - 1, c2); + } + if (2 * n >= c0 + 3 && c0 >= n + 2) { + S6(-n + c0 + 1, n - 1); + for (int c2 = 1; c2 < -n + c0; c2 += 1) + S5(-n + c0, n, c2); + if (c0 == n + 2) { + S6(2, n); + S1(n + 1); + } + } else if (c0 + 2 >= 2 * n) for (int c2 = 1; c2 < -n + c0; c2 += 1) S5(-n + c0, n, c2); if (c0 >= n + 3) { S6(-n + c0, n); S1(c0 - 1); - } else if (c0 == n + 2) { - S6(2, n); - S1(n + 1); + } else { + if (c0 <= 4) { + S1(c0 - 1); + } else if (n + 1 >= c0) { + S6(2, c0 - 2); + S1(c0 - 1); + } + if (n + 1 >= c0) + S6(1, c0 - 1); } - } + } else + S1(1); if (c0 % 2 == 0) S3(c0 / 2); for (int c1 = max(1, -n + c0); c1 < (c0 + 1) / 2; c1 += 1) diff --git a/test_inputs/codegen/cloog/vivien2.in b/test_inputs/codegen/cloog/vivien2.in deleted file mode 100644 index d8b1b1a0..00000000 --- a/test_inputs/codegen/cloog/vivien2.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S6[i0, i1] -> [2i0 + 2i1, 2 - i0, 0] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S2[i0, i1] -> [1 + 2i0 + 2i1, i1, 0] : 29i1 >= 1 - i0 and i0 <= n and i1 >= 1 and i1 <= -1 + i0; S1[i0] -> [2 + 2i0, 0, 0] : i0 >= 1 - 27n and i0 <= 28 + n; S4[i0, i1] -> [2i0 + 2i1, -i0, 0] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n; S3[i0] -> [1 + 4i0, 0, 0] : i0 >= 1 and i0 <= n; S5[i0, i1, i2] -> [2i0 + 2i1, 1 - i0, i2] : i0 >= 1 and i0 <= n and i1 >= 1 + i0 and i1 <= n and i2 >= 1 and i2 <= -1 + i0 } -[n] -> { : n >= 30 } -[n] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/vivien2.st b/test_inputs/codegen/cloog/vivien2.st new file mode 100644 index 00000000..932fbc2b --- /dev/null +++ b/test_inputs/codegen/cloog/vivien2.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S2[i, j] : 29j >= 1 - i and i <= n and j >= 1 and j <= -1 + i; S1[i] : i >= 1 - 27n and i <= 28 + n; S4[i, j] : i >= 1 and i <= n and j >= 1 + i and j <= n; S5[i, j, k] : i >= 1 and i <= n and j >= 1 + i and j <= n and k >= 1 and k <= -1 + i; S6[i, j] : i >= 1 and i <= n and j >= 1 + i and j <= n; S3[i] : i >= 1 and i <= n }" +child: + context: "[n] -> { [] : n >= 30 }" + child: + schedule: "[n] -> [{ S1[i0] -> [(2 + 2i0)]; S4[i0, i1] -> [(2i0 + 2i1)]; S6[i0, i1] -> [(2i0 + 2i1)]; S3[i0] -> [(1 + 4i0)]; S5[i0, i1, i2] -> [(2i0 + 2i1)]; S2[i0, i1] -> [(1 + 2i0 + 2i1)] }, { S1[i0] -> [(0)]; S4[i0, i1] -> [(-i0)]; S6[i0, i1] -> [(2 - i0)]; S3[i0] -> [(0)]; S5[i0, i1, i2] -> [(1 - i0)]; S2[i0, i1] -> [(i1)] }, { S1[i0] -> [(0)]; S4[i0, i1] -> [(0)]; S6[i0, i1] -> [(0)]; S3[i0] -> [(0)]; S5[i0, i1, i2] -> [(i2)]; S2[i0, i1] -> [(0)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/walters.in b/test_inputs/codegen/cloog/walters.in deleted file mode 100644 index 6e264514..00000000 --- a/test_inputs/codegen/cloog/walters.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[i, div36, div37, div38] -> [i, div36, k, div38, 1] : 3div37 = 2 + i and 3k = 2 + i and i >= 1 and i <= 10 and 3div36 >= -2 + i and 3div38 <= 1 + i and 3div38 >= -1 + i and 3div36 <= i; S1[i, div36, div37, div38] -> [i, j, div37, div38, 0] : 3j = i and 3div36 = i and i >= 3 and i <= 10 and 3div37 >= i and 3div38 <= 1 + i and 3div37 <= 2 + i and 3div38 >= -1 + i; S3[i, div36, div37, div38] -> [i, div36, div37, l, 2] : 3l = 1 + i and 3div38 = 1 + i and i <= 10 and i >= 2 and 3div36 >= -2 + i and 3div37 <= 2 + i and 3div36 <= i and 3div37 >= i; S4[i, div36, div37, div38] -> [i, div36, div37, div38, 3] : i >= 1 and i <= 10 and 3div36 <= i and 3div36 >= -2 + i and 3div37 <= 2 + i and 3div37 >= i and 3div38 <= 1 + i and 3div38 >= -1 + i } -{ : } -{ [i, j, k, l, m] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/walters.st b/test_inputs/codegen/cloog/walters.st new file mode 100644 index 00000000..f168c996 --- /dev/null +++ b/test_inputs/codegen/cloog/walters.st @@ -0,0 +1,12 @@ +domain: "{ S2[i, div36, div37, div38] : 3div37 = 2 + i and i >= 1 and i <= 10 and 3div36 >= -2 + i and 3div38 <= 1 + i and 3div38 >= -1 + i and 3div36 <= i; S4[i, div36, div37, div38] : i >= 1 and i <= 10 and 3div36 <= i and 3div36 >= -2 + i and 3div37 <= 2 + i and 3div37 >= i and 3div38 <= 1 + i and 3div38 >= -1 + i; S1[i, div36, div37, div38] : 3div36 = i and i >= 3 and i <= 10 and 3div37 >= i and 3div38 <= 1 + i and 3div37 <= 2 + i and 3div38 >= -1 + i; S3[i, div36, div37, div38] : 3div38 = 1 + i and i <= 10 and i >= 2 and 3div36 >= -2 + i and 3div37 <= 2 + i and 3div36 <= i and 3div37 >= i }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[i, div36, div37, div38] -> [(i)]; S4[i, div36, div37, div38] -> [(i)]; S3[i, div36, div37, div38] -> [(i)]; S2[i, div36, div37, div38] -> [(i)] }, { S1[i, div36, div37, div38] -> [(div36)]; S4[i, div36, div37, div38] -> [(div36)]; S3[i, div36, div37, div38] -> [(div36)]; S2[i, div36, div37, div38] -> [(div36)] }, { S1[i, div36, div37, div38] -> [(div37)]; S4[i, div36, div37, div38] -> [(div37)]; S3[i, div36, div37, div38] -> [(div37)]; S2[i, div36, div37, div38] -> [(div37)] }, { S1[i, div36, div37, div38] -> [(div38)]; S4[i, div36, div37, div38] -> [(div38)]; S3[i, div36, div37, div38] -> [(div38)]; S2[i, div36, div37, div38] -> [(div38)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[i, div36, div37, div38] }" + - filter: "{ S2[i, div36, div37, div38] }" + - filter: "{ S3[i, div36, div37, div38] }" + - filter: "{ S4[i, div36, div37, div38] }" diff --git a/test_inputs/codegen/cloog/walters2.in b/test_inputs/codegen/cloog/walters2.in deleted file mode 100644 index ea01a10a..00000000 --- a/test_inputs/codegen/cloog/walters2.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[j, i] -> [j, i, 0] : j >= 1 and j <= 24 and i >= 1 and i <= 50; S2[j, 51] -> [j, 51, 1] : j >= 1 and j <= 24; S2[25, i] -> [25, i, 1] : i >= 1 and i <= 51; S2[0, i] -> [0, i, 1] : i >= 0 and i <= 51; S2[j, 0] -> [j, 0, 1] : j >= 1 and j <= 25 } -{ : } -{ [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/walters2.st b/test_inputs/codegen/cloog/walters2.st new file mode 100644 index 00000000..5caba80a --- /dev/null +++ b/test_inputs/codegen/cloog/walters2.st @@ -0,0 +1,10 @@ +domain: "{ S2[j, 51] : j <= 24 and j >= 1; S2[25, i] : i <= 51 and i >= 1; S2[j, 0] : j <= 25 and j >= 1; S2[0, i] : i <= 51 and i >= 0; S1[j, i] : j >= 1 and j <= 24 and i >= 1 and i <= 50 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[j, i] -> [(j)]; S2[j, i] -> [(j)] }, { S1[j, i] -> [(i)]; S2[j, i] -> [(i)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[j, i] }" + - filter: "{ S2[j, i] }" diff --git a/test_inputs/codegen/cloog/walters3.in b/test_inputs/codegen/cloog/walters3.in deleted file mode 100644 index 802bd4f0..00000000 --- a/test_inputs/codegen/cloog/walters3.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S2[j, a, b] -> [j, j', b, 1] : 2a = j and 2j' = j and j >= 1 and j <= 10 and 2b <= j and 2b >= -1 + j; S1[j, a, b] -> [j, j', k, 0] : 2a = j and 2j' = j and 2k = j and 2b = j and j <= 8 and j >= 2 } -{ : } -{ [i, j, k, l] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/walters3.st b/test_inputs/codegen/cloog/walters3.st new file mode 100644 index 00000000..1a142735 --- /dev/null +++ b/test_inputs/codegen/cloog/walters3.st @@ -0,0 +1,10 @@ +domain: "{ S2[j, a, b] : 2a = j and j >= 1 and j <= 10 and 2b <= j and 2b >= -1 + j; S1[j, a, b] : 2a = j and 2b = j and j <= 8 and j >= 2 }" +child: + context: "{ [] }" + child: + schedule: "[{ S1[j, a, b] -> [(j)]; S2[j, a, b] -> [(j)] }, { S1[j, a, b] -> [(a)]; S2[j, a, b] -> [(a)] }, { S1[j, a, b] -> [(b)]; S2[j, a, b] -> [(b)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[j, a, b] }" + - filter: "{ S2[j, a, b] }" diff --git a/test_inputs/codegen/cloog/wavefront.in b/test_inputs/codegen/cloog/wavefront.in deleted file mode 100644 index 61618c37..00000000 --- a/test_inputs/codegen/cloog/wavefront.in +++ /dev/null @@ -1,3 +0,0 @@ -[n, m] -> { S1[i0, i1] -> [i0 + i1, i0] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= m } -[n, m] -> { : } -[n, m] -> { [i, j] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/wavefront.st b/test_inputs/codegen/cloog/wavefront.st new file mode 100644 index 00000000..b31e0de4 --- /dev/null +++ b/test_inputs/codegen/cloog/wavefront.st @@ -0,0 +1,6 @@ +domain: "[n, m] -> { S1[i0, i1] : i0 >= 1 and i0 <= n and i1 >= 1 and i1 <= m }" +child: + context: "[n, m] -> { [] }" + child: + schedule: "[n, m] -> [{ S1[i0, i1] -> [(i0 + i1)] }, { S1[i0, i1] -> [(i0)] }]" + options: "[n, m] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/yosr.c b/test_inputs/codegen/cloog/yosr.c index 93792b2f..b9a4aa11 100644 --- a/test_inputs/codegen/cloog/yosr.c +++ b/test_inputs/codegen/cloog/yosr.c @@ -1,7 +1,12 @@ -for (int c0 = 1; c0 <= n; c0 += 1) { - for (int c2 = c0 + 1; c2 <= n; c2 += 1) - S1(c0, c2); - for (int c1 = 1; c1 < c0; c1 += 1) +{ + for (int c0 = 1; c0 < n; c0 += 1) { + for (int c1 = 1; c1 < c0; c1 += 1) + for (int c2 = c1 + 1; c2 <= n; c2 += 1) + S2(c1, c2, c0); + for (int c2 = c0 + 1; c2 <= n; c2 += 1) + S1(c0, c2); + } + for (int c1 = 1; c1 < n; c1 += 1) for (int c2 = c1 + 1; c2 <= n; c2 += 1) - S2(c1, c2, c0); + S2(c1, c2, n); } diff --git a/test_inputs/codegen/cloog/yosr.in b/test_inputs/codegen/cloog/yosr.in deleted file mode 100644 index dcc93e5a..00000000 --- a/test_inputs/codegen/cloog/yosr.in +++ /dev/null @@ -1,3 +0,0 @@ -[n] -> { S2[i0, i1, i2] -> [i2] : i0 >= 1 and i0 <= -1 + n and i1 >= 1 + i0 and i1 <= n and i2 >= 1 + i0 and i2 <= n; S1[i0, i1] -> [i0] : i0 >= 1 and i0 <= -1 + n and i1 >= 1 + i0 and i1 <= n } -[n] -> { : } -[n] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/yosr.st b/test_inputs/codegen/cloog/yosr.st new file mode 100644 index 00000000..3ad42974 --- /dev/null +++ b/test_inputs/codegen/cloog/yosr.st @@ -0,0 +1,6 @@ +domain: "[n] -> { S1[i0, i1] : i0 >= 1 and i0 <= -1 + n and i1 >= 1 + i0 and i1 <= n; S2[i0, i1, i2] : i0 >= 1 and i0 <= -1 + n and i1 >= 1 + i0 and i1 <= n and i2 >= 1 + i0 and i2 <= n }" +child: + context: "[n] -> { [] }" + child: + schedule: "[n] -> [{ S2[i0, i1, i2] -> [(i2)]; S1[i0, i1] -> [(i0)] }]" + options: "[n] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/yosr2.in b/test_inputs/codegen/cloog/yosr2.in deleted file mode 100644 index a07e1492..00000000 --- a/test_inputs/codegen/cloog/yosr2.in +++ /dev/null @@ -1,3 +0,0 @@ -[M] -> { S3[i0, i1, i2] -> [i0] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M and i2 >= 1 and i2 <= -1 + i0; S4[i0, i1] -> [i1] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M; S1[i0, i1] -> [i0] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= -1 + i0; S2[i0] -> [0] : i0 >= 1 and i0 <= M } -[M] -> { : M >= 2 } -[M] -> { [i] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/yosr2.st b/test_inputs/codegen/cloog/yosr2.st new file mode 100644 index 00000000..eb1ab416 --- /dev/null +++ b/test_inputs/codegen/cloog/yosr2.st @@ -0,0 +1,6 @@ +domain: "[M] -> { S4[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M; S3[i0, i1, i2] : i0 >= 1 and i0 <= M and i1 >= 1 + i0 and i1 <= M and i2 >= 1 and i2 <= -1 + i0; S1[i0, i1] : i0 >= 1 and i0 <= M and i1 >= 1 and i1 <= -1 + i0; S2[i0] : i0 >= 1 and i0 <= M }" +child: + context: "[M] -> { [] : M >= 2 }" + child: + schedule: "[M] -> [{ S2[i0] -> [(0)]; S1[i0, i1] -> [(i0)]; S4[i0, i1] -> [(i1)]; S3[i0, i1, i2] -> [(i0)] }]" + options: "[M] -> { separate[i0] }" diff --git a/test_inputs/codegen/cloog/youcef.in b/test_inputs/codegen/cloog/youcef.in deleted file mode 100644 index 5164abe2..00000000 --- a/test_inputs/codegen/cloog/youcef.in +++ /dev/null @@ -1,3 +0,0 @@ -{ S1[i0, i0] -> [i0, i0, 0] : i0 >= 0 and i0 <= 5; S2[i0, i1] -> [i0, i1, 1] : i0 >= 0 and i0 <= 5 and i1 >= i0 and i1 <= 5; S3[i0, 5] -> [i0, 5, 2] : i0 >= 0 and i0 <= 5 } -{ : } -{ [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/youcef.st b/test_inputs/codegen/cloog/youcef.st new file mode 100644 index 00000000..fa7cbda5 --- /dev/null +++ b/test_inputs/codegen/cloog/youcef.st @@ -0,0 +1,11 @@ +domain: "{ S2[i0, i1] : i0 >= 0 and i0 <= 5 and i1 >= i0 and i1 <= 5; S1[i0, i0] : i0 >= 0 and i0 <= 5; S3[i0, 5] : i0 >= 0 and i0 <= 5 }" +child: + context: "{ [] }" + child: + schedule: "[{ S3[i0, i1] -> [(i0)]; S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)] }, { S3[i0, i1] -> [(i1)]; S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)] }]" + options: "{ separate[i0] }" + child: + sequence: + - filter: "{ S1[i0, i1] }" + - filter: "{ S2[i0, i1] }" + - filter: "{ S3[i0, i1] }" diff --git a/test_inputs/codegen/cloog/youcefn.in b/test_inputs/codegen/cloog/youcefn.in deleted file mode 100644 index b21e30d7..00000000 --- a/test_inputs/codegen/cloog/youcefn.in +++ /dev/null @@ -1,3 +0,0 @@ -[n, m] -> { S3[i0, n] -> [i0, n, 2] : i0 >= 1 and i0 <= m; S2[i0, i1] -> [i0, i1, 1] : i0 >= 1 and i0 <= n and i1 >= i0 and i1 <= n; S1[i0, i0] -> [i0, i0, 0] : i0 >= 1 and i0 <= n } -[n, m] -> { : n >= 2 and m >= n } -[n, m] -> { [i, j, k] -> separate[o0] } diff --git a/test_inputs/codegen/cloog/youcefn.st b/test_inputs/codegen/cloog/youcefn.st new file mode 100644 index 00000000..9405c655 --- /dev/null +++ b/test_inputs/codegen/cloog/youcefn.st @@ -0,0 +1,11 @@ +domain: "[n, m] -> { S1[i0, i0] : i0 >= 1 and i0 <= n; S3[i0, n] : i0 >= 1 and i0 <= m; S2[i0, i1] : i0 >= 1 and i0 <= n and i1 >= i0 and i1 <= n }" +child: + context: "[n, m] -> { [] : n >= 2 and m >= n }" + child: + schedule: "[n, m] -> [{ S1[i0, i1] -> [(i0)]; S2[i0, i1] -> [(i0)]; S3[i0, i1] -> [(i0)] }, { S1[i0, i1] -> [(i1)]; S2[i0, i1] -> [(i1)]; S3[i0, i1] -> [(i1)] }]" + options: "[n, m] -> { separate[i0] }" + child: + sequence: + - filter: "[n, m] -> { S1[i0, i1] }" + - filter: "[n, m] -> { S2[i0, i1] }" + - filter: "[n, m] -> { S3[i0, i1] }" -- 2.11.4.GIT