summaryrefslogtreecommitdiffstats
path: root/polly/lib/External/isl/test_inputs
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/External/isl/test_inputs')
-rw-r--r--polly/lib/External/isl/test_inputs/affine.polylib9
-rw-r--r--polly/lib/External/isl/test_inputs/affine2.polylib9
-rw-r--r--polly/lib/External/isl/test_inputs/affine3.polylib7
-rw-r--r--polly/lib/External/isl/test_inputs/application.omega3
-rw-r--r--polly/lib/External/isl/test_inputs/application2.omega3
-rw-r--r--polly/lib/External/isl/test_inputs/basicLinear.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/basicLinear2.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/basicTest.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/basicTestParameterPosNeg.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/boulet.pip13
-rw-r--r--polly/lib/External/isl/test_inputs/brisebarre.pip34
-rw-r--r--polly/lib/External/isl/test_inputs/cg1.pip15
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/atomic.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/atomic.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/atomic2.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/atomic2.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/atomic3.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/atomic3.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/atomic4.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/atomic4.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/0D-1.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/0D-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/0D-2.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/0D-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/0D-3.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/0D-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/1point-1.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/1point-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/1point-2.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/1point-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/4-param.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/4-param.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/README2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/backtrack.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/backtrack.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-1.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-2.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-3.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-4.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-5.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/block.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/block.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/block2.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/block2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/block3.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/block3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/byu98-1-2-3.c18
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/byu98-1-2-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/cholesky.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/cholesky.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/cholesky2.c20
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/cholesky2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/christian.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/christian.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/classen.c86
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/classen.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/classen2.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/classen2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/constant.c18
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/constant.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/constbound.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/constbound.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/darte.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/darte.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/dealII.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/dealII.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/donotsimp.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/donotsimp.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/dot.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/dot.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/dot2.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/dot2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/durbin_e_s.c23
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/durbin_e_s.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/emploi.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/emploi.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/equality.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/equality.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/equality2.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/equality2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/esced.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/esced.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/ex1.c15
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/ex1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/faber.c155
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/faber.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-1-1-2.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-1-1-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-2-1-2-3.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-2-1-2-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-3-1-2.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-3-1-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/gauss.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/gauss.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/gesced.c16
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/gesced.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/gesced2.c20
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/gesced2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/gesced3.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/gesced3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/guide.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/guide.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/iftest.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/iftest.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/iftest2.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/iftest2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/infinite2.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/infinite2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/jacobi-shared.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/jacobi-shared.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/largeur.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/largeur.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/levenshtein-1-2-3.c32
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/levenshtein-1-2-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lex.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lex.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lineality-1-2.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lineality-1-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lineality-2-1-2.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lineality-2-1-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/logo.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/logo.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/logopar.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/logopar.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lu.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lu.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lu2.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lu2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lux.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/lux.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/merge.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/merge.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/min-1-1.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/min-1-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/min-2-1.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/min-2-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/min-3-1.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/min-3-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/min-4-1.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/min-4-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mod.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mod.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mod2.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mod2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mod3.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mod3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mod4.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mod4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mode.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mode.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/multi-mm-1.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/multi-mm-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride2.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mxm-shared.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/mxm-shared.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/no_lindep.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/no_lindep.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic1.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic2.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/nul_complex1.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/nul_complex1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/nul_lcpc.c13
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/nul_lcpc.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/orc.c16
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/orc.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/otl.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/otl.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/param-split.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/param-split.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/pouchet.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/pouchet.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/rectangle.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/rectangle.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-QR.c54
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-QR.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-bastoul3.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-bastoul3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-cholesky2.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-cholesky2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion1.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion2.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi2.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi3.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam1.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam2.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam3.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam4.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam5.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam6.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam6.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-liu-zhuge1.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-liu-zhuge1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner3.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner4.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner5.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp.c85
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp2.c18
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-psinv.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-psinv.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-resid.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-resid.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-rprj3.c33
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-rprj3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali1.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali2.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali3.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali4.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali5.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali6.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali6.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride2.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-tang-xue1.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-tang-xue1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-two.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-two.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/singleton.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/singleton.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/square+triangle-1-1-2-3.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/square+triangle-1-1-2-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/stride.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/stride.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/stride2.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/stride2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/stride3.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/stride3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/stride4.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/stride4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/swim.c159
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/swim.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/test.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/test.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/thomasset.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/thomasset.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/tiling.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/tiling.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/uday_scalars.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/uday_scalars.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/union.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/union.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/unroll.c13
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/unroll.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/unroll2.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/unroll2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/usvd_e_t.c348
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/usvd_e_t.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/vasilache.c23
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/vasilache.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/vivien.c85
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/vivien.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/vivien2.c77
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/vivien2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/walters.c15
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/walters.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/walters2.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/walters2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/walters3.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/walters3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/wavefront.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/wavefront.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/yosr.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/yosr.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/yosr2.c13
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/yosr2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/youcef.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/youcef.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/youcefn.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/cloog/youcefn.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/disjuncts.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/disjuncts.in7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/dwt.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/dwt.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/empty.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/empty.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/hoist.c45
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/hoist.in10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/hoist2.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/hoist2.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/lu.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/lu.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/mod.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/mod.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/README5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/basics-0.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/basics-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/basics-1.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/basics-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/chosol-0.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/chosol-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/chosol-1.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/chosol-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/code_gen-0.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/code_gen-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/code_gen-1.c15
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/code_gen-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/code_gen-2.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/code_gen-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/collard-0.c16
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/collard-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-1.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc1-0.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc1-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc1-1.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc1-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc1-2.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc1-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc2-0.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc2-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc2-1.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/fc2-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-1.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-2.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-3.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-4.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-5.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-6.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-6.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gc-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gc-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ge-0.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ge-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ge-1.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ge-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-1.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-2.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-3.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-4.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-5.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/gist-5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/guard1-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/guard1-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/guard1-1.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/guard1-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/hpf-0.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/hpf-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-0.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-1.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-2.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-3.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-4.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-5.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/if_then-5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter1-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter1-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter2-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter2-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter3-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter3-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter4-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter4-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter5-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter5-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter6-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter6-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter6-1.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter6-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter7-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter7-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter8-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter8-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter9-0.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/iter9-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur00-0.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur00-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur01-0.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur01-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur01-1.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur01-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur03-0.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur03-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur04-0.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lefur04-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-0.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-1.c13
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-2.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-3.c15
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-4.c16
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-5.c16
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift1-5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-0.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-1.c16
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-2.c18
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-3.c20
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-4.c22
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-5.c22
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lift2-5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu-0.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu-1.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu-2.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu-3.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-0.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-1.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-2.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-0.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-1.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m1-0.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m1-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m1-1.c13
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m1-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m10-0.c7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m10-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m10-1.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m10-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m11-0.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m11-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m12-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m12-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m12-1.c25
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m12-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m2-0.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m2-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m2-1.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m2-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m3-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m3-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m4-0.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m4-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m4-1.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m4-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m7-0.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m7-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m7-1.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m7-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m8-0.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m8-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m8-1.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m8-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m9-0.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m9-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m9-1.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/m9-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/olda-0.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/olda-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/olda-1.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/olda-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/p.delft-0.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/p.delft-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/p.delft2-0.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/p.delft2-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/p6-0.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/p6-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/p6-1.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/p6-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride1-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride1-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride2-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride2-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride3-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride3-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride4-0.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride4-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride5-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride5-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride6-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride6-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride6-1.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride6-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride6-2.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride6-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride7-0.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride7-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride7-1.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/stride7-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-0.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-1.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-2.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-3.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-4.c1
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/substitution-4.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/syr2k-0.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/syr2k-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/syr2k-1.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/syr2k-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/syr2k-2.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/syr2k-2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/syr2k-3.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/syr2k-3.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check-sblock-0.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check-sblock-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check0-0.c13
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check0-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ts1d-mp-i_ts-m_b-0.c35
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ts1d-mp-i_ts-m_b-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ts1d-orig0-0.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/ts1d-orig0-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak1-0.c27
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak1-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak1-1.c55
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak1-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak2-0.c26
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak2-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak2-1.c35
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak2-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak3-0.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak3-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak3-1.c21
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak3-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak4-0.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak4-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak4-1.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/wak4-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/x-0.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/x-0.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/x-1.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/omega/x-1.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/README2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_b.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_b.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_c.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_c.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_d.c12
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_d.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_a.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_a.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_b.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_b.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/roman.c32
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/roman.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separate.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separate.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separate2.c9
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separate2.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separation_class.c17
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separation_class.in6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separation_class2.c15
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separation_class2.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separation_class3.c29
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separation_class3.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separation_class4.c20
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/separation_class4.in10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/shift.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/shift.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/shift2.c43
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/shift2.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/shift_unroll.c14
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/shift_unroll.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/single_valued.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/single_valued.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/stride.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/stride.in6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/stride5.c3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/stride5.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/stride6.c4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/stride6.in3
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/stride7.c6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/stride7.in7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll.c5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll10.c29
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll10.in4
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll2.c11
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll2.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll3.c2
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll3.in6
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll4.c22
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll4.in5
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll6.c8
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll6.in7
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll7.c10
-rw-r--r--polly/lib/External/isl/test_inputs/codegen/unroll7.in5
-rw-r--r--polly/lib/External/isl/test_inputs/convex0.polylib11
-rw-r--r--polly/lib/External/isl/test_inputs/convex1.polylib17
-rw-r--r--polly/lib/External/isl/test_inputs/convex10.polylib17
-rw-r--r--polly/lib/External/isl/test_inputs/convex11.polylib14
-rw-r--r--polly/lib/External/isl/test_inputs/convex12.polylib12
-rw-r--r--polly/lib/External/isl/test_inputs/convex13.polylib17
-rw-r--r--polly/lib/External/isl/test_inputs/convex14.polylib14
-rw-r--r--polly/lib/External/isl/test_inputs/convex15.polylib66
-rw-r--r--polly/lib/External/isl/test_inputs/convex2.polylib24
-rw-r--r--polly/lib/External/isl/test_inputs/convex3.polylib10
-rw-r--r--polly/lib/External/isl/test_inputs/convex4.polylib9
-rw-r--r--polly/lib/External/isl/test_inputs/convex5.polylib12
-rw-r--r--polly/lib/External/isl/test_inputs/convex6.polylib17
-rw-r--r--polly/lib/External/isl/test_inputs/convex7.polylib9
-rw-r--r--polly/lib/External/isl/test_inputs/convex8.polylib24
-rw-r--r--polly/lib/External/isl/test_inputs/convex9.polylib14
-rw-r--r--polly/lib/External/isl/test_inputs/devos.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/equality1.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/equality2.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/equality3.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/equality4.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/equality5.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/esced.pip27
-rw-r--r--polly/lib/External/isl/test_inputs/ex.pip9
-rw-r--r--polly/lib/External/isl/test_inputs/ex2.pip9
-rw-r--r--polly/lib/External/isl/test_inputs/faddeev.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/fimmel.pip12
-rw-r--r--polly/lib/External/isl/test_inputs/gist1.polylib14
-rw-r--r--polly/lib/External/isl/test_inputs/linearExample.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/max.pip9
-rw-r--r--polly/lib/External/isl/test_inputs/neg.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/negative.pip9
-rw-r--r--polly/lib/External/isl/test_inputs/philippe.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/philippe3vars.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/philippe3vars3pars.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/philippeNeg.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/philippePolynomialCoeff.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/philippePolynomialCoeff1P.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/product.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/seghir-vd.pip17
-rw-r--r--polly/lib/External/isl/test_inputs/set.omega1
-rw-r--r--polly/lib/External/isl/test_inputs/small.pip9
-rw-r--r--polly/lib/External/isl/test_inputs/sor1d.pip28
-rw-r--r--polly/lib/External/isl/test_inputs/split.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/square.pip9
-rw-r--r--polly/lib/External/isl/test_inputs/sven.pip7
-rw-r--r--polly/lib/External/isl/test_inputs/test3Deg3Var.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/tobi.pip15
-rw-r--r--polly/lib/External/isl/test_inputs/toplas.pwqp1
-rw-r--r--polly/lib/External/isl/test_inputs/unexpanded.pwqp1
685 files changed, 5313 insertions, 0 deletions
diff --git a/polly/lib/External/isl/test_inputs/affine.polylib b/polly/lib/External/isl/test_inputs/affine.polylib
new file mode 100644
index 00000000000..f14720c0a0a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/affine.polylib
@@ -0,0 +1,9 @@
+# the affine hull of {[a,b] : a=b && 1 <= a <= 163} ...
+3 4
+0 1 -1 0
+1 1 0 -1
+1 -1 0 163
+
+# ... is {[a,b] : a=b} (and not {[In_1,In_2]}, as Omega 1.2 claims)
+1 4
+0 1 -1 0
diff --git a/polly/lib/External/isl/test_inputs/affine2.polylib b/polly/lib/External/isl/test_inputs/affine2.polylib
new file mode 100644
index 00000000000..c67db77bb6e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/affine2.polylib
@@ -0,0 +1,9 @@
+5 5
+1 -2 0 1 0
+1 2 0 -1 1
+1 0 -2 1 0
+1 0 2 -1 1
+1 0 0 1 -1
+
+1 5
+0 1 -1 0 0
diff --git a/polly/lib/External/isl/test_inputs/affine3.polylib b/polly/lib/External/isl/test_inputs/affine3.polylib
new file mode 100644
index 00000000000..f2bc9a2db2f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/affine3.polylib
@@ -0,0 +1,7 @@
+3 4
+1 1 0 0
+1 -7 4 2
+1 5 -4 2
+
+1 4
+0 3 -2 0
diff --git a/polly/lib/External/isl/test_inputs/application.omega b/polly/lib/External/isl/test_inputs/application.omega
new file mode 100644
index 00000000000..8f4fd1db39a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/application.omega
@@ -0,0 +1,3 @@
+{[x]}
+{[x] -> [y] : y = 2x}
+{[y]: Exists ( alpha : 2alpha = y)}
diff --git a/polly/lib/External/isl/test_inputs/application2.omega b/polly/lib/External/isl/test_inputs/application2.omega
new file mode 100644
index 00000000000..f2af1e86958
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/application2.omega
@@ -0,0 +1,3 @@
+{[x] : x >= 0 && x <= 20 }
+{[x] -> [y] : y = 2x}
+{[y]: Exists ( alpha : 2alpha = y && 0 <= y && y <= 40)}
diff --git a/polly/lib/External/isl/test_inputs/basicLinear.pwqp b/polly/lib/External/isl/test_inputs/basicLinear.pwqp
new file mode 100644
index 00000000000..0af7fabb53f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/basicLinear.pwqp
@@ -0,0 +1 @@
+[P, Q] -> { [n, m] -> n : n >= 1 and m >= n and m <= P and m <= Q }
diff --git a/polly/lib/External/isl/test_inputs/basicLinear2.pwqp b/polly/lib/External/isl/test_inputs/basicLinear2.pwqp
new file mode 100644
index 00000000000..d411a369158
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/basicLinear2.pwqp
@@ -0,0 +1 @@
+[P, Q] -> { [n, m] -> n : n >= 1 and m >= n and m <= P and n >= -1 + Q }
diff --git a/polly/lib/External/isl/test_inputs/basicTest.pwqp b/polly/lib/External/isl/test_inputs/basicTest.pwqp
new file mode 100644
index 00000000000..52e7fc8e697
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/basicTest.pwqp
@@ -0,0 +1 @@
+[p] -> { [n, m] -> (n + n^2) : n >= 1 and m >= n and m <= p }
diff --git a/polly/lib/External/isl/test_inputs/basicTestParameterPosNeg.pwqp b/polly/lib/External/isl/test_inputs/basicTestParameterPosNeg.pwqp
new file mode 100644
index 00000000000..6cb4490215c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/basicTestParameterPosNeg.pwqp
@@ -0,0 +1 @@
+[p] -> { [n, m] -> (n + n^3) : n >= -1 and m >= n and m <= p }
diff --git a/polly/lib/External/isl/test_inputs/boulet.pip b/polly/lib/External/isl/test_inputs/boulet.pip
new file mode 100644
index 00000000000..78e90ddf58b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/boulet.pip
@@ -0,0 +1,13 @@
+0 3
+
+-1
+
+5 6
+1 1 -1 2 0 0
+1 0 1 1 4 20
+1 0 -1 -1 0 0
+1 0 1 -1 2 10
+1 0 -1 1 2 10
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/test_inputs/brisebarre.pip b/polly/lib/External/isl/test_inputs/brisebarre.pip
new file mode 100644
index 00000000000..f3decadfd27
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/brisebarre.pip
@@ -0,0 +1,34 @@
+# ---------------------- CONTEXT ----------------------
+1 2
+1 0
+
+-1
+
+# ----------------------- DOMAIN ----------------------
+26 6
+1 3 0 0 0 -98300
+1 -3 0 0 0 98308
+1 432 36 6 1 -14757611
+1 -432 -36 -6 -1 14758510
+1 54 9 3 1 -1923190
+1 -54 -9 -3 -1 1923303
+1 48 12 6 3 -1782238
+1 -48 -12 -6 -3 1782339
+1 27 9 6 4 -1045164
+1 -27 -9 -6 -4 1045221
+1 432 180 150 125 -17434139
+1 -432 -180 -150 -125 17435038
+1 6 3 3 3 -252443
+1 -6 -3 -3 -3 252456
+1 432 252 294 343 -18949275
+1 -432 -252 -294 -343 18950174
+1 27 18 24 32 -1234720
+1 -27 -18 -24 -32 1234777
+1 48 36 54 81 -2288453
+1 -48 -36 -54 -81 2288554
+1 54 45 75 125 -2684050
+1 -54 -45 -75 -125 2684163
+1 432 396 726 1331 -22386005
+1 -432 -396 -726 -1331 22386904
+1 3 3 6 12 -162072
+1 -3 -3 -6 -12 162080
diff --git a/polly/lib/External/isl/test_inputs/cg1.pip b/polly/lib/External/isl/test_inputs/cg1.pip
new file mode 100644
index 00000000000..78e31f187b1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/cg1.pip
@@ -0,0 +1,15 @@
+2 4
+ 1 1 0 -1
+ 1 -1 1 0
+
+-1
+
+8 7
+ 1 0 1 0 -1 0 0
+ 1 0 -1 0 1 0 0
+ 1 1 0 0 0 -1 0
+ 1 -1 0 0 0 1 0
+ 1 0 1 0 0 0 -1
+ 1 0 -1 0 0 1 0
+ 1 0 -1 1 0 0 -1
+ 1 0 0 -1 0 1 0
diff --git a/polly/lib/External/isl/test_inputs/codegen/atomic.c b/polly/lib/External/isl/test_inputs/codegen/atomic.c
new file mode 100644
index 00000000000..73731c0c22b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/atomic.c
@@ -0,0 +1,6 @@
+for (int c0 = 0; c0 <= 10; c0 += 1) {
+ if (c0 >= 1)
+ b(c0 - 1);
+ if (c0 <= 9)
+ a(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/atomic.in b/polly/lib/External/isl/test_inputs/codegen/atomic.in
new file mode 100644
index 00000000000..754b3d0cf2f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/atomic.in
@@ -0,0 +1,3 @@
+{ a[i] -> [i] : 0 <= i < 10; b[i] -> [i+1] : 0 <= i < 10 }
+{ : }
+{ [i] -> atomic[x] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/atomic2.c b/polly/lib/External/isl/test_inputs/codegen/atomic2.c
new file mode 100644
index 00000000000..9c4a57e3e5a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/atomic2.c
@@ -0,0 +1,2 @@
+for (int c0 = ((b0 + 32767) % 32768) + 1; c0 <= 65534; c0 += 32768)
+ A(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/atomic2.in b/polly/lib/External/isl/test_inputs/codegen/atomic2.in
new file mode 100644
index 00000000000..99901d0e191
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/atomic2.in
@@ -0,0 +1,4 @@
+# Check that isl properly handles atomic domains that are unions.
+[nn, b0] -> { A[a] -> [a, 0, b0] : exists (e0 = [(b0 - a)/32768]: 32768e0 = b0 - a and a >= 1 and b0 >= 0 and b0 <= 32767 and a <= 65534) }
+[nn, b0] -> { : b0 >= 0 and b0 <= 32767 }
+[nn, b0] -> { [a, b, c] -> atomic[2] : c >= 1; [a, 0, c] -> atomic[2] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/atomic3.c b/polly/lib/External/isl/test_inputs/codegen/atomic3.c
new file mode 100644
index 00000000000..e63e09201a1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/atomic3.c
@@ -0,0 +1,8 @@
+for (int c0 = 0; c0 <= 64; c0 += 1) {
+ if (c0 >= 63) {
+ sync();
+ } else if (c0 >= 1) {
+ sync();
+ } else
+ sync();
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/atomic3.in b/polly/lib/External/isl/test_inputs/codegen/atomic3.in
new file mode 100644
index 00000000000..4d0c4953107
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/atomic3.in
@@ -0,0 +1,5 @@
+# Check that isl is not confused by inconsistent
+# separation_class and atomic options.
+{ sync[] -> [i, 0] : 0 <= i <= 64 }
+{ : }
+{ [i, 0] -> separation_class[[1] -> [0]] : 1 <= i <= 62; [i, 0] -> atomic[1]}
diff --git a/polly/lib/External/isl/test_inputs/codegen/atomic4.c b/polly/lib/External/isl/test_inputs/codegen/atomic4.c
new file mode 100644
index 00000000000..624c2af1d25
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/atomic4.c
@@ -0,0 +1,2 @@
+for (int c0 = 0; c0 <= 64; c0 += 1)
+ sync();
diff --git a/polly/lib/External/isl/test_inputs/codegen/atomic4.in b/polly/lib/External/isl/test_inputs/codegen/atomic4.in
new file mode 100644
index 00000000000..c5dab102c6a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/atomic4.in
@@ -0,0 +1,4 @@
+# Check that isl is not confused by inconsistent separate and atomic options.
+{ sync[] -> [i, 0] : 0 <= i <= 64 }
+{ : }
+{ [i, 0] -> separate[1] : 1 <= i <= 62; [i, 0] -> atomic[1] : i <= 10 or i >= 20 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/0D-1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-1.c
new file mode 100644
index 00000000000..7f22e2e417e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-1.c
@@ -0,0 +1 @@
+S1();
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/0D-1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-1.in
new file mode 100644
index 00000000000..10e3e408a6d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-1.in
@@ -0,0 +1,3 @@
+{ S1[] -> [0] }
+{ : }
+{ [i] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/0D-2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-2.c
new file mode 100644
index 00000000000..b87b57eacfb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-2.c
@@ -0,0 +1,2 @@
+if (M >= 0)
+ S1();
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/0D-2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-2.in
new file mode 100644
index 00000000000..3bbfd35cc2b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-2.in
@@ -0,0 +1,3 @@
+[M] -> { S1[] -> [0] : M >= 0 }
+[M] -> { : }
+[M] -> { [i] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/0D-3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-3.c
new file mode 100644
index 00000000000..7f22e2e417e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-3.c
@@ -0,0 +1 @@
+S1();
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/0D-3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-3.in
new file mode 100644
index 00000000000..f99dd344e46
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/0D-3.in
@@ -0,0 +1,3 @@
+[M] -> { S1[] -> [0] : M >= 0 }
+[M] -> { : M >= 0 }
+[M] -> { [i] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/1point-1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/1point-1.c
new file mode 100644
index 00000000000..53dd8931e6f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/1point-1.c
@@ -0,0 +1 @@
+S1(2 * M, M);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/1point-1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/1point-1.in
new file mode 100644
index 00000000000..efd0a7ff827
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/1point-1.in
@@ -0,0 +1,3 @@
+[M] -> { S1[2M, M] -> [2M, M, 0] }
+[M] -> { : }
+[M] -> { [i, j, k] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/1point-2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/1point-2.c
new file mode 100644
index 00000000000..0a8cbe37d2f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/1point-2.c
@@ -0,0 +1 @@
+S1(2 * M, N + 2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/1point-2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/1point-2.in
new file mode 100644
index 00000000000..de5157ceac6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/1point-2.in
@@ -0,0 +1,3 @@
+[M, N] -> { S1[2M, 2 + N] -> [2M, 2 + N, 0] }
+[M, N] -> { : }
+[M, N] -> { [i, j, k] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/4-param.c b/polly/lib/External/isl/test_inputs/codegen/cloog/4-param.c
new file mode 100644
index 00000000000..56659a06779
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/4-param.c
@@ -0,0 +1,14 @@
+{
+ for (int c0 = m; c0 <= min(n, p - 1); c0 += 1)
+ S1(c0);
+ for (int c0 = p; c0 <= min(m - 1, q); c0 += 1)
+ S2(c0);
+ for (int c0 = max(m, p); c0 <= min(n, q); c0 += 1) {
+ S1(c0);
+ S2(c0);
+ }
+ for (int c0 = max(max(m, p), q + 1); c0 <= n; c0 += 1)
+ S1(c0);
+ for (int c0 = max(max(m, n + 1), p); c0 <= q; c0 += 1)
+ S2(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/4-param.in b/polly/lib/External/isl/test_inputs/codegen/cloog/4-param.in
new file mode 100644
index 00000000000..7814076053b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/4-param.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/README b/polly/lib/External/isl/test_inputs/codegen/cloog/README
new file mode 100644
index 00000000000..9250f11e161
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/README
@@ -0,0 +1,2 @@
+The tests in this directory have been adapted from the corresponding CLooG
+test cases.
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/backtrack.c b/polly/lib/External/isl/test_inputs/codegen/cloog/backtrack.c
new file mode 100644
index 00000000000..df0407a437e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/backtrack.c
@@ -0,0 +1 @@
+S1(0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/backtrack.in b/polly/lib/External/isl/test_inputs/codegen/cloog/backtrack.in
new file mode 100644
index 00000000000..b8ec466f559
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/backtrack.in
@@ -0,0 +1,3 @@
+{ S1[0] -> [0, 0] }
+{ : }
+{ [i, j] -> atomic[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-1.c
new file mode 100644
index 00000000000..95eb5f716e3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-1.c
@@ -0,0 +1,2 @@
+for (int c0 = 0; c0 <= 2; c0 += 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-1.in
new file mode 100644
index 00000000000..e5f8bfafd15
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-1.in
@@ -0,0 +1,3 @@
+{ S1[i0] -> [i0, 0] : i0 >= 0 and i0 <= 2 }
+{ : }
+{ [i, j] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-2.c
new file mode 100644
index 00000000000..df0407a437e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-2.c
@@ -0,0 +1 @@
+S1(0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-2.in
new file mode 100644
index 00000000000..7eb48f2da74
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-2.in
@@ -0,0 +1,3 @@
+{ S1[0] -> [0, 0] }
+{ : }
+{ [i, j] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-3.c
new file mode 100644
index 00000000000..d0dd54bd089
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-3.c
@@ -0,0 +1,2 @@
+for (int c0 = 0; c0 <= M; c0 += 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-3.in
new file mode 100644
index 00000000000..59ce2c9249b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-3.in
@@ -0,0 +1,3 @@
+[M] -> { S1[i0] -> [i0, 0] : i0 >= 0 and i0 <= M }
+[M] -> { : M >= 0 }
+[M] -> { [i, j] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-4.c b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-4.c
new file mode 100644
index 00000000000..0ebb7ccbb43
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-4.c
@@ -0,0 +1,2 @@
+for (int c0 = 0; c0 <= M + 1; c0 += 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-4.in b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-4.in
new file mode 100644
index 00000000000..5f79acf698c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-4.in
@@ -0,0 +1,3 @@
+[M] -> { S1[i0] -> [i0, 0] : i0 >= 0 and i0 <= 1 + M }
+[M] -> { : M >= 0 }
+[M] -> { [i, j] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-5.c b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-5.c
new file mode 100644
index 00000000000..09e8c422168
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-5.c
@@ -0,0 +1 @@
+S1(1, floord(M + 1, 2));
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-5.in b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-5.in
new file mode 100644
index 00000000000..3a6f9085514
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/basic-bounds-5.in
@@ -0,0 +1,3 @@
+[M] -> { S1[1, i1] -> [1, i1, 0] : 2i1 >= M and 2i1 <= 1 + M }
+[M] -> { : }
+[M] -> { [i, j, k] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/block.c b/polly/lib/External/isl/test_inputs/codegen/cloog/block.c
new file mode 100644
index 00000000000..e24ef30ade7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/block.c
@@ -0,0 +1,6 @@
+{
+ S1();
+ S3(0);
+ S2();
+ S3(1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/block.in b/polly/lib/External/isl/test_inputs/codegen/cloog/block.in
new file mode 100644
index 00000000000..faf2af5f466
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/block.in
@@ -0,0 +1,3 @@
+{ S3[i0] -> [i0, 1] : i0 >= 0 and i0 <= 1; S1[] -> [0, 0]; S2[] -> [1, 0] }
+{ : }
+{ [i, j] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/block2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/block2.c
new file mode 100644
index 00000000000..d3fbbd7802a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/block2.c
@@ -0,0 +1,5 @@
+for (int c0 = 0; c0 <= 9; c0 += 1) {
+ S1(c0, 1);
+ S3(c0, 1);
+ S2(c0, 1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/block2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/block2.in
new file mode 100644
index 00000000000..d2b5db44039
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/block2.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/block3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/block3.c
new file mode 100644
index 00000000000..ff4d5539178
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/block3.c
@@ -0,0 +1,6 @@
+{
+ S1();
+ for (int c0 = 0; c0 <= 1; c0 += 1)
+ S3(c0);
+ S2();
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/block3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/block3.in
new file mode 100644
index 00000000000..39c0abb790d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/block3.in
@@ -0,0 +1,3 @@
+{ S2[] -> [1]; S3[i0] -> [i0] : i0 >= 0 and i0 <= 1; S1[] -> [0] }
+{ : }
+{ [i] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/byu98-1-2-3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/byu98-1-2-3.c
new file mode 100644
index 00000000000..8e87cba33db
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/byu98-1-2-3.c
@@ -0,0 +1,18 @@
+{
+ for (int c0 = 2; c0 <= 3; c0 += 1)
+ for (int c1 = -c0 + 6; c1 <= 6; c1 += 1)
+ S1(c0, c1);
+ for (int c0 = 4; c0 <= 8; c0 += 1) {
+ if (c0 >= 6) {
+ S2(c0, -c0 + 9);
+ } else {
+ if (c0 == 4)
+ for (int c1 = 3; c1 <= 4; c1 += 1)
+ S1(4, c1);
+ S1(c0, -c0 + 9);
+ S2(c0, -c0 + 9);
+ }
+ for (int c1 = max(c0 - 1, -c0 + 10); c1 <= 6; c1 += 1)
+ S1(c0, c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/byu98-1-2-3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/byu98-1-2-3.in
new file mode 100644
index 00000000000..9f98fb85990
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/byu98-1-2-3.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky.c b/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky.c
new file mode 100644
index 00000000000..20d4e4d0b9e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky.c
@@ -0,0 +1,12 @@
+for (int c0 = 1; c0 <= n; c0 += 1) {
+ S1(c0);
+ for (int c2 = 1; c2 < c0; c2 += 1)
+ S2(c0, c2);
+ 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);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky.in b/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky.in
new file mode 100644
index 00000000000..90b56c638b3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky2.c
new file mode 100644
index 00000000000..c746460b4fa
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky2.c
@@ -0,0 +1,20 @@
+{
+ for (int c1 = 1; c1 <= M; c1 += 1) {
+ S1(c1);
+ for (int c2 = c1 + 1; c2 <= M; c2 += 1)
+ S4(c1, c2);
+ }
+ for (int c0 = 1; c0 < 3 * M - 1; c0 += 3) {
+ S3((c0 + 2) / 3);
+ if (3 * M >= c0 + 8) {
+ for (int c1 = (c0 + 5) / 3; c1 <= M; c1 += 1) {
+ S6((c0 + 2) / 3, c1);
+ for (int c4 = (c0 + 5) / 3; c4 < c1; c4 += 1)
+ S5(c4, c1, (c0 + 2) / 3);
+ }
+ } else if (c0 + 5 == 3 * M)
+ S6(M - 1, M);
+ for (int c1 = (c0 + 5) / 3; c1 <= M; c1 += 1)
+ S2(c1, (c0 + 2) / 3);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky2.in
new file mode 100644
index 00000000000..b44b4568f71
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/cholesky2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/christian.c b/polly/lib/External/isl/test_inputs/codegen/cloog/christian.c
new file mode 100644
index 00000000000..98b52d8d0fe
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/christian.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/christian.in b/polly/lib/External/isl/test_inputs/codegen/cloog/christian.in
new file mode 100644
index 00000000000..af3df07967f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/christian.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/classen.c b/polly/lib/External/isl/test_inputs/codegen/cloog/classen.c
new file mode 100644
index 00000000000..ad7be335451
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/classen.c
@@ -0,0 +1,86 @@
+{
+ if (m == 1) {
+ S1(0, 1, 1, 1);
+ S8(0, 1);
+ } else if (m >= 2) {
+ 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);
+ 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 (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);
+ } 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);
+ }
+ 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) {
+ 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);
+ } 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);
+ }
+ for (int c8 = max(1, -m + c0 + 2); c8 <= min(m, c0 + 1); c8 += 1)
+ S8(c0, c8);
+ }
+ 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 {
+ 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);
+ }
+ S2(2 * m - 3, m, 2 * m - 2, m, m - 1, m, m, m);
+ for (int c8 = m - 1; c8 <= m; c8 += 1)
+ S8(2 * m - 3, c8);
+ 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);
+ S8(2 * m - 2, m);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/classen.in b/polly/lib/External/isl/test_inputs/codegen/cloog/classen.in
new file mode 100644
index 00000000000..8dc0b76a505
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/classen.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/classen2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/classen2.c
new file mode 100644
index 00000000000..a737d2d4b1a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/classen2.c
@@ -0,0 +1,4 @@
+for (int c0 = max(max(max(max(max(max(4, 5 * outerTimeTileScatter), 5 * outerProcTileScatter1), 5 * outerProcTileScatter2 + 1), 5 * outerProcTileScatter1 + 5 * outerProcTileScatter2 - N), 10 * outerProcTileScatter2 - N + 1), 10 * outerProcTileScatter1 - 2 * N + 2); c0 <= min(min(min(min(min(min(5 * outerTimeTileScatter + 4, 10 * outerProcTileScatter1 + 4), 5 * outerProcTileScatter1 + 5 * outerProcTileScatter2 + 5), 5 * outerProcTileScatter1 + M + 2), 2 * M + 2 * N - 6), 5 * outerProcTileScatter2 + M + N), 10 * outerProcTileScatter2 + N + 3); c0 += 1)
+ for (int c1 = max(max(max(max(5 * outerProcTileScatter1, 5 * outerProcTileScatter2 + 1), -5 * outerProcTileScatter2 + c0 - 1), -M + c0 + 2), (c0 + 1) / 2 + 2); c1 <= min(min(min(min(5 * outerProcTileScatter1 + 4, 5 * outerProcTileScatter2 + N + 2), -5 * outerProcTileScatter2 + N + c0), c0), N + c0 / 2 - 1); c1 += 1)
+ for (int c2 = max(max(5 * outerProcTileScatter2, -N + c1 + 2), c0 - c1 + 3); c2 <= min(min(5 * outerProcTileScatter2 + 4, c1 - 1), N + c0 - c1); c2 += 1)
+ S1(c0 - c1 + 1, -c0 + c1 + c2 - 2, c1 - c2, c0, c1, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/classen2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/classen2.in
new file mode 100644
index 00000000000..8a74eaa9728
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/classen2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/constant.c b/polly/lib/External/isl/test_inputs/codegen/cloog/constant.c
new file mode 100644
index 00000000000..f39a3a2bde0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/constant.c
@@ -0,0 +1,18 @@
+{
+ for (int c1 = 0; c1 <= min(1023, M + 1024); c1 += 1) {
+ S1(c1);
+ S3(c1);
+ }
+ for (int c1 = max(0, M + 1025); c1 <= 1023; c1 += 1) {
+ S2(c1);
+ S3(c1);
+ }
+ for (int c0 = 0; c0 <= min(1023, M + 1024); c0 += 1) {
+ S4(c0);
+ S6(c0);
+ }
+ for (int c0 = max(0, M + 1025); c0 <= 1023; c0 += 1) {
+ S5(c0);
+ S6(c0);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/constant.in b/polly/lib/External/isl/test_inputs/codegen/cloog/constant.in
new file mode 100644
index 00000000000..7cd365a8967
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/constant.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/constbound.c b/polly/lib/External/isl/test_inputs/codegen/cloog/constbound.c
new file mode 100644
index 00000000000..219165dc8c9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/constbound.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/constbound.in b/polly/lib/External/isl/test_inputs/codegen/cloog/constbound.in
new file mode 100644
index 00000000000..24727a8737c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/constbound.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/darte.c b/polly/lib/External/isl/test_inputs/codegen/cloog/darte.c
new file mode 100644
index 00000000000..acb63714ed2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/darte.c
@@ -0,0 +1,14 @@
+for (int c0 = -n + 1; c0 <= n; c0 += 1) {
+ if (c0 <= 0)
+ for (int c2 = -c0 + 4; c2 <= 2 * n - c0 + 2; c2 += 2)
+ S1(1, -c0 + 1, ((c0 + c2) / 2) - 1);
+ for (int c1 = max(c0 + 2, -c0 + 4); c1 <= min(2 * n - c0, 2 * n + c0); c1 += 2) {
+ for (int c2 = c1 + 2; c2 <= 2 * n + c1; c2 += 2)
+ S1((c0 + c1) / 2, (-c0 + c1) / 2, (-c1 + c2) / 2);
+ for (int c2 = 1; c2 <= n; c2 += 1)
+ S2(((c0 + c1) / 2) - 1, (-c0 + c1) / 2, c2);
+ }
+ if (c0 >= 1)
+ for (int c2 = 1; c2 <= n; c2 += 1)
+ S2(n, n - c0 + 1, c2);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/darte.in b/polly/lib/External/isl/test_inputs/codegen/cloog/darte.in
new file mode 100644
index 00000000000..55897a5a7e4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/darte.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/dealII.c b/polly/lib/External/isl/test_inputs/codegen/cloog/dealII.c
new file mode 100644
index 00000000000..7db605d5d5b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/dealII.c
@@ -0,0 +1,12 @@
+{
+ 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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/dealII.in b/polly/lib/External/isl/test_inputs/codegen/cloog/dealII.in
new file mode 100644
index 00000000000..fc0310b638f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/dealII.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/donotsimp.c b/polly/lib/External/isl/test_inputs/codegen/cloog/donotsimp.c
new file mode 100644
index 00000000000..4c482e2997e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/donotsimp.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/donotsimp.in b/polly/lib/External/isl/test_inputs/codegen/cloog/donotsimp.in
new file mode 100644
index 00000000000..c1541ccff7e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/donotsimp.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/dot.c b/polly/lib/External/isl/test_inputs/codegen/cloog/dot.c
new file mode 100644
index 00000000000..b08de331226
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/dot.c
@@ -0,0 +1,7 @@
+{
+ for (int c1 = 1; c1 <= M; c1 += 1)
+ S1(0, c1);
+ for (int c0 = 1; c0 <= N; c0 += 1)
+ for (int c1 = 1; c1 <= M; c1 += 1)
+ S2(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/dot.in b/polly/lib/External/isl/test_inputs/codegen/cloog/dot.in
new file mode 100644
index 00000000000..37e1f14bad2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/dot.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/dot2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/dot2.c
new file mode 100644
index 00000000000..a1b10692c2a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/dot2.c
@@ -0,0 +1,12 @@
+{
+ for (int c0 = 1; c0 <= min(M, N); c0 += 1) {
+ S1(c0);
+ for (int c1 = 1; c1 <= M; c1 += 1)
+ S2(c0, c1);
+ }
+ for (int c0 = N + 1; c0 <= M; c0 += 1)
+ S1(c0);
+ for (int c0 = M + 1; c0 <= N; c0 += 1)
+ for (int c1 = 1; c1 <= M; c1 += 1)
+ S2(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/dot2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/dot2.in
new file mode 100644
index 00000000000..8fa8381e20b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/dot2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/durbin_e_s.c b/polly/lib/External/isl/test_inputs/codegen/cloog/durbin_e_s.c
new file mode 100644
index 00000000000..25590998d5f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/durbin_e_s.c
@@ -0,0 +1,23 @@
+{
+ S4(1, 0, 0);
+ S7(1, 0, 0);
+ S8(1, 0, 3);
+ for (int c0 = 2; c0 <= 9; c0 += 1) {
+ S2(c0, -7, 0);
+ for (int c1 = -7; c1 < c0 - 8; c1 += 1)
+ S3(c0, c1, 1);
+ S6(c0, c0 - 9, 2);
+ S8(c0, 0, 3);
+ for (int c1 = 1; c1 < c0; c1 += 1)
+ S5(c0, c1, 3);
+ }
+ S2(10, -7, 0);
+ for (int c1 = -7; c1 <= 1; c1 += 1)
+ S3(10, c1, 1);
+ S6(10, 1, 2);
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ S5(10, c1, 3);
+ S1(10, c1, 4);
+ }
+ S1(10, 10, 4);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/durbin_e_s.in b/polly/lib/External/isl/test_inputs/codegen/cloog/durbin_e_s.in
new file mode 100644
index 00000000000..77d32ad73f9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/durbin_e_s.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/emploi.c b/polly/lib/External/isl/test_inputs/codegen/cloog/emploi.c
new file mode 100644
index 00000000000..80ee37d5921
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/emploi.c
@@ -0,0 +1,5 @@
+for (int c0 = 1; c0 <= n; c0 += 1) {
+ S1(c0);
+ for (int c1 = 1; c1 <= m; c1 += 1)
+ S2(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/emploi.in b/polly/lib/External/isl/test_inputs/codegen/cloog/emploi.in
new file mode 100644
index 00000000000..57016623a25
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/emploi.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/equality.c b/polly/lib/External/isl/test_inputs/codegen/cloog/equality.c
new file mode 100644
index 00000000000..2535b8b975e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/equality.c
@@ -0,0 +1,7 @@
+for (int c0 = 0; c0 <= 5; c0 += 1)
+ for (int c1 = c0 <= 2 ? 2 * c0 : 4; c1 <= (c0 >= 2 ? 2 * c0 : 4); c1 += 1) {
+ if (c1 == 2 * c0)
+ S1(c0, 2 * c0);
+ if (c1 == 4)
+ S2(c0, 4);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/equality.in b/polly/lib/External/isl/test_inputs/codegen/cloog/equality.in
new file mode 100644
index 00000000000..677fa901324
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/equality.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/equality2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/equality2.c
new file mode 100644
index 00000000000..be22da28be4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/equality2.c
@@ -0,0 +1,8 @@
+for (int c0 = 1; c0 <= 10000; c0 += 1)
+ for (int c1 = 1000; c1 <= 1016; c1 += 1)
+ for (int c2 = 1; c2 < 2 * c1 - 1998; c2 += 1) {
+ if (c1 <= 1008 && c2 + 1999 == 2 * c1)
+ S2(c0, c1, 2 * c1 - 1999, 1, c0, 2 * c1 - 1000, 1, 2, c0, c1 - 499, 2 * c1 - 1999, c0, 2 * c1 - 1999, c1 - 999, c1 - 999);
+ if (c2 == 1 && c1 % 2 == 0)
+ S1(c0, c1, 1, 2, c0, (c1 / 2) + 1, c1 - 999, c0, c1 - 999, (c1 / 2) - 499, (c1 / 2) - 499);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/equality2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/equality2.in
new file mode 100644
index 00000000000..95b3f793407
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/equality2.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/esced.c b/polly/lib/External/isl/test_inputs/codegen/cloog/esced.c
new file mode 100644
index 00000000000..f7c7ee0678c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/esced.c
@@ -0,0 +1,5 @@
+for (int c0 = 1; c0 <= m; c0 += 1) {
+ S1(c0);
+ for (int c1 = 1; c1 <= n; c1 += 1)
+ S2(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/esced.in b/polly/lib/External/isl/test_inputs/codegen/cloog/esced.in
new file mode 100644
index 00000000000..3bef6fd90f0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/esced.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/ex1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/ex1.c
new file mode 100644
index 00000000000..2627f23ddde
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/ex1.c
@@ -0,0 +1,15 @@
+{
+ for (int c0 = 0; c0 <= 14; c0 += 1)
+ for (int c1 = 0; c1 < n - 14; c1 += 1)
+ S1(c0, c1);
+ for (int c0 = 15; c0 <= n; c0 += 1) {
+ for (int c1 = 0; c1 <= 9; c1 += 1)
+ S1(c0, c1);
+ for (int c1 = 10; c1 < n - 14; c1 += 1) {
+ S1(c0, c1);
+ S2(c0, c1);
+ }
+ for (int c1 = n - 14; c1 <= n; c1 += 1)
+ S2(c0, c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/ex1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/ex1.in
new file mode 100644
index 00000000000..457b834afe2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/ex1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/faber.c b/polly/lib/External/isl/test_inputs/codegen/cloog/faber.c
new file mode 100644
index 00000000000..b398206b260
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/faber.c
@@ -0,0 +1,155 @@
+{
+ for (int c0 = 0; c0 <= 36; c0 += 1) {
+ for (int c1 = -6; c1 < c0 / 14 - 5; c1 += 1) {
+ for (int c2 = -((-2 * c1 + 3) / 5) + 9; c2 <= c1 + 12; c2 += 1)
+ S6(c0, c1, c2);
+ for (int c2 = c1 + 24; c2 <= -2 * c1 + 24; c2 += 1)
+ S2(c0, c1, c2);
+ for (int c2 = -2 * c1 + 30; c2 <= c1 + 48; c2 += 1)
+ S1(c0, c1, c2);
+ }
+ for (int c1 = c0 / 14 - 5; c1 < 0; c1 += 1) {
+ if (c1 >= -3 && 2 * c0 >= 7 * c1 + 42)
+ S7(c0, c1, 6);
+ for (int c2 = max(c1 - (6 * c0 + 77) / 77 + 13, -((-2 * c1 + 3) / 5) + 9); 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);
+ }
+ S3(c0, 0, 0);
+ S10(c0, 0, 0);
+ for (int c2 = 1; c2 <= 5; c2 += 1)
+ S3(c0, 0, c2);
+ for (int c2 = 6; c2 <= 2 * c0 / 21 + 4; c2 += 1) {
+ S3(c0, 0, c2);
+ S7(c0, 0, c2);
+ }
+ for (int c2 = max(6, 2 * c0 / 21 + 5); c2 <= -((6 * c0 + 77) / 77) + 12; c2 += 1)
+ S3(c0, 0, c2);
+ for (int c2 = -((6 * c0 + 77) / 77) + 13; c2 <= 12; c2 += 1) {
+ S3(c0, 0, c2);
+ S6(c0, 0, c2);
+ }
+ for (int c2 = 13; c2 <= 24; c2 += 1)
+ S3(c0, 0, c2);
+ for (int c2 = -((3 * c0 + 14) / 14) + 49; c2 <= 48; c2 += 1)
+ S1(c0, 0, c2);
+ 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) {
+ 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);
+ S6(c0, 1, c2);
+ }
+ for (int c2 = 14; c2 <= 16; c2 += 1)
+ S3(c0, 1, c2);
+ }
+ for (int c2 = c1 - (3 * c0 + 14) / 14 + 49; c2 <= c1 + 48; c2 += 1)
+ S1(c0, c1, c2);
+ }
+ for (int c1 = 19; c1 <= 24; c1 += 1) {
+ for (int c2 = -8 * c1; c2 <= -8 * c1 + 24; c2 += 1)
+ S3(c0, c1, c2);
+ for (int c2 = c1 - (6 * c0 + 77) / 77 + 13; c2 <= 30; c2 += 1)
+ S6(c0, c1, c2);
+ }
+ }
+ for (int c0 = 37; c0 <= 218; c0 += 1) {
+ 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 >= 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)
+ S7(c0, c1, 6);
+ for (int c2 = max(8, c1 - (6 * c0 + 77) / 77 + 13); c2 <= c1 - (6 * c0 + 91) / 77 + 15; c2 += 1)
+ S6(c0, c1, c2);
+ for (int c2 = c1 - (3 * c0 + 14) / 14 + 49; c2 <= c1 - (3 * c0 + 17) / 14 + 56; c2 += 1)
+ 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)
+ S9(c0, c1, c2);
+ if (c1 >= 1 && c1 <= 6 && 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);
+ S9(c0, c1, c2);
+ }
+ if (c1 <= 3 && 7 * c1 + 21 * ((2 * c1 + 41) / 5) >= 2 * c0 + 12)
+ S9(c0, c1, (2 * c1 + 1) / 5 + 8);
+ for (int c2 = (2 * c1 + 1) / 5 + 9; c2 <= c1 - (6 * c0 + 91) / 77 + 15; c2 += 1) {
+ 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)
+ 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);
+ for (int c2 = max(c1 + 24, c1 - (3 * c0 + 14) / 14 + 49); c2 <= c1 - (3 * c0 + 17) / 14 + 56; c2 += 1)
+ 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, floord(2 * c0 - 7 * c1, 21) + 4); 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 = 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)
+ S4(c0, c1, c2);
+ for (int c2 = max(c1, c1 - (3 * c0 + 14) / 14 + 40); c2 <= min(c1 + 24, c1 - (3 * c0 + 17) / 14 + 47); c2 += 1)
+ S8(c0, c1, c2);
+ for (int c2 = max(c1 + 24, c1 - (3 * c0 + 14) / 14 + 49); c2 <= c1 - (3 * c0 + 17) / 14 + 56; c2 += 1)
+ S1(c0, c1, c2);
+ }
+ for (int c1 = 19; c1 <= 24; c1 += 1) {
+ for (int c2 = max(c1 - 12, (c0 + 5) / 14 + 1); c2 <= min(c0 / 14 + 3, -c1 + c1 / 2 + 18); c2 += 1)
+ S5(c0, c1, c2);
+ for (int c2 = max(max(c1 - 12, c1 + (3 * c0 + 3) / 14 - 40), -c1 + (c1 + 1) / 2 + 21); c2 <= min(c1, c1 + 3 * c0 / 14 - 33); c2 += 1)
+ S4(c0, c1, c2);
+ for (int c2 = max(c1 + 6, c1 - (6 * c0 + 77) / 77 + 13); c2 <= min(30, c1 - (6 * c0 + 91) / 77 + 15); c2 += 1)
+ S6(c0, c1, c2);
+ for (int c2 = max(c1, c1 - (3 * c0 + 14) / 14 + 40); c2 <= min(c1 + 24, c1 - (3 * c0 + 17) / 14 + 47); c2 += 1)
+ S8(c0, c1, c2);
+ }
+ for (int c1 = 25; c1 <= min(42, -((3 * c0 + 17) / 14) + 71); c1 += 1)
+ for (int c2 = max(c1 - 12, c1 + (3 * c0 + 3) / 14 - 40); c2 <= min(min(30, c1), c1 + 3 * c0 / 14 - 33); c2 += 1)
+ S4(c0, c1, c2);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/faber.in b/polly/lib/External/isl/test_inputs/codegen/cloog/faber.in
new file mode 100644
index 00000000000..4f78a5561d0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/faber.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-1-1-2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-1-1-2.c
new file mode 100644
index 00000000000..45fe75ef372
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-1-1-2.c
@@ -0,0 +1,9 @@
+{
+ S3(1, 1);
+ for (int c0 = 2; c0 <= M; c0 += 1) {
+ S1(c0, 1);
+ for (int c1 = 2; c1 < c0; c1 += 1)
+ S2(c0, c1);
+ S4(c0, c0);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-1-1-2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-1-1-2.in
new file mode 100644
index 00000000000..ede8856d545
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-1-1-2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-2-1-2-3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-2-1-2-3.c
new file mode 100644
index 00000000000..cfc3e7d7bea
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-2-1-2-3.c
@@ -0,0 +1,10 @@
+{
+ S3(1, 0);
+ for (int c2 = 2; c2 <= M; c2 += 1)
+ S1(1, 1, c2);
+ for (int c0 = 2; c0 <= M; c0 += 1) {
+ S4(c0, 0);
+ for (int c2 = c0 + 1; c2 <= M; c2 += 1)
+ S2(c0, 1, c2);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-2-1-2-3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-2-1-2-3.in
new file mode 100644
index 00000000000..57863cc5727
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-2-1-2-3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-3-1-2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-3-1-2.c
new file mode 100644
index 00000000000..9300d189691
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-3-1-2.c
@@ -0,0 +1,17 @@
+{
+ S3(2, 1);
+ S1(3, 1);
+ for (int c0 = 4; c0 <= M + 1; c0 += 1) {
+ S1(c0, 1);
+ for (int c1 = 2; c1 < (c0 + 1) / 2; c1 += 1)
+ S2(c0, c1);
+ if (c0 % 2 == 0)
+ S4(c0, c0 / 2);
+ }
+ for (int c0 = M + 2; c0 <= 2 * M; c0 += 1) {
+ for (int c1 = -M + c0; c1 < (c0 + 1) / 2; c1 += 1)
+ S2(c0, c1);
+ if (c0 % 2 == 0)
+ S4(c0, c0 / 2);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-3-1-2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-3-1-2.in
new file mode 100644
index 00000000000..c40383d8b6e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/forwardsub-3-1-2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/gauss.c b/polly/lib/External/isl/test_inputs/codegen/cloog/gauss.c
new file mode 100644
index 00000000000..13a8e137173
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/gauss.c
@@ -0,0 +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);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/gauss.in b/polly/lib/External/isl/test_inputs/codegen/cloog/gauss.in
new file mode 100644
index 00000000000..439e72e7f34
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/gauss.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/gesced.c b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced.c
new file mode 100644
index 00000000000..a36715ca3db
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced.c
@@ -0,0 +1,16 @@
+{
+ for (int c0 = 1; c0 <= N; c0 += 1)
+ S1(c0);
+ for (int c0 = N + 1; c0 <= 2 * N; c0 += 1)
+ for (int c1 = 1; c1 <= N; c1 += 1)
+ S2(c1, -N + c0);
+ for (int c0 = 2 * N + 1; c0 <= M + N; c0 += 1) {
+ for (int c1 = 1; c1 <= N; c1 += 1)
+ S3(c1, -2 * N + c0);
+ for (int c1 = 1; c1 <= N; c1 += 1)
+ S2(c1, -N + c0);
+ }
+ for (int c0 = M + N + 1; c0 <= M + 2 * N; c0 += 1)
+ for (int c1 = 1; c1 <= N; c1 += 1)
+ S3(c1, -2 * N + c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/gesced.in b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced.in
new file mode 100644
index 00000000000..6043f4b3fb9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/gesced2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced2.c
new file mode 100644
index 00000000000..0baf706ed99
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced2.c
@@ -0,0 +1,20 @@
+{
+ for (int c0 = 1; c0 <= 4; c0 += 1)
+ for (int c1 = 5; c1 < M - 9; c1 += 1)
+ S1(c0, c1);
+ for (int c0 = 5; c0 < M - 9; c0 += 1) {
+ for (int c1 = -c0 + 1; c1 <= 4; c1 += 1)
+ S2(c0 + c1, c0);
+ for (int c1 = 5; c1 <= min(M - 10, M - c0); c1 += 1) {
+ S1(c0, c1);
+ S2(c0 + c1, c0);
+ }
+ for (int c1 = M - c0 + 1; c1 < M - 9; c1 += 1)
+ S1(c0, c1);
+ for (int c1 = M - 9; c1 <= M - c0; c1 += 1)
+ S2(c0 + c1, c0);
+ }
+ for (int c0 = M - 9; c0 <= M; c0 += 1)
+ for (int c1 = 5; c1 < M - 9; c1 += 1)
+ S1(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/gesced2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced2.in
new file mode 100644
index 00000000000..a5d5bd27e28
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/gesced3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced3.c
new file mode 100644
index 00000000000..c163ed0735e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced3.c
@@ -0,0 +1,10 @@
+{
+ for (int c0 = M + 1; c0 <= 2 * M; c0 += 1)
+ S1(-M + c0);
+ for (int c0 = 2 * M + 1; c0 <= M + N; c0 += 1) {
+ S2(-2 * M + c0);
+ S1(-M + c0);
+ }
+ for (int c0 = M + N + 1; c0 <= 2 * M + N; c0 += 1)
+ S2(-2 * M + c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/gesced3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced3.in
new file mode 100644
index 00000000000..29f57f32176
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/gesced3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/guide.c b/polly/lib/External/isl/test_inputs/codegen/cloog/guide.c
new file mode 100644
index 00000000000..bc48f1efe8a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/guide.c
@@ -0,0 +1,6 @@
+{
+ for (int c0 = 1; c0 <= N; c0 += 1)
+ S1(c0);
+ for (int c0 = N + 1; c0 <= 2 * N; c0 += 1)
+ S2(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/guide.in b/polly/lib/External/isl/test_inputs/codegen/cloog/guide.in
new file mode 100644
index 00000000000..38c418c6c65
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/guide.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/iftest.c b/polly/lib/External/isl/test_inputs/codegen/cloog/iftest.c
new file mode 100644
index 00000000000..0f41fb7902a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/iftest.c
@@ -0,0 +1,2 @@
+for (int c0 = 1; c0 <= n; c0 += 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/iftest.in b/polly/lib/External/isl/test_inputs/codegen/cloog/iftest.in
new file mode 100644
index 00000000000..741399d48a0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/iftest.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/iftest2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/iftest2.c
new file mode 100644
index 00000000000..8e3e4c1b90b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/iftest2.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= N; c0 += 1)
+ for (int c1 = 1; c1 <= M; c1 += 1)
+ S1(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/iftest2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/iftest2.in
new file mode 100644
index 00000000000..a2e3212ece3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/iftest2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/infinite2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/infinite2.c
new file mode 100644
index 00000000000..bbb6d6e750a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/infinite2.c
@@ -0,0 +1,9 @@
+{
+ for (int c0 = 1; c0 <= N; c0 += 1) {
+ S1(c0);
+ for (int c1 = 1; c1 <= M; c1 += 1)
+ S2(c0, c1);
+ }
+ for (int c0 = N + 1; 1; c0 += 1)
+ S1(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/infinite2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/infinite2.in
new file mode 100644
index 00000000000..64fb5d55735
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/infinite2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/jacobi-shared.c b/polly/lib/External/isl/test_inputs/codegen/cloog/jacobi-shared.c
new file mode 100644
index 00000000000..50840a86877
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/jacobi-shared.c
@@ -0,0 +1,3 @@
+if (((t1 + 31) % 32) + g2 >= 2 && N >= ((t1 + 31) % 32) + g2 + 2 && (h0 - 1) % 2 == 0)
+ for (int c0 = max(((t0 + 15) % 16) + 1, ((g1 + t0 + 13) % 16) - g1 + 3); c0 <= min(32, N - g1 - 1); c0 += 16)
+ S1(g1 + c0 - 1, ((t1 + 31) % 32) + g2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/jacobi-shared.in b/polly/lib/External/isl/test_inputs/codegen/cloog/jacobi-shared.in
new file mode 100644
index 00000000000..d6153244284
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/jacobi-shared.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/largeur.c b/polly/lib/External/isl/test_inputs/codegen/cloog/largeur.c
new file mode 100644
index 00000000000..faced0a5573
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/largeur.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= M; c0 += 1)
+ for (int c1 = 1; c1 <= c0; c1 += 1)
+ S1(c1, c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/largeur.in b/polly/lib/External/isl/test_inputs/codegen/cloog/largeur.in
new file mode 100644
index 00000000000..3a25146b10f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/largeur.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/levenshtein-1-2-3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/levenshtein-1-2-3.c
new file mode 100644
index 00000000000..0e470b4d73b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/levenshtein-1-2-3.c
@@ -0,0 +1,32 @@
+{
+ S1(0, 0);
+ for (int c0 = 1; c0 <= N; c0 += 1) {
+ S2(c0, 0);
+ for (int c1 = 1; c1 < c0; c1 += 1)
+ S6(c0, c1);
+ S3(c0, c0);
+ }
+ S7(N + 1, 0);
+ for (int c1 = 1; c1 <= N; c1 += 1) {
+ S6(N + 1, c1);
+ S8(N + 1, c1);
+ }
+ for (int c0 = N + 2; c0 < 2 * M - N - 1; c0 += 1) {
+ S7(c0, -N + (N + c0 + 1) / 2 - 1);
+ if ((N - c0) % 2 == 0) {
+ S5(c0, (-N + c0) / 2);
+ S8(c0, (-N + c0) / 2);
+ }
+ for (int c1 = -N + (N + c0) / 2 + 1; c1 < (N + c0 + 1) / 2; c1 += 1) {
+ S6(c0, c1);
+ S8(c0, c1);
+ }
+ if ((N - c0) % 2 == 0) {
+ S4(c0, (N + c0) / 2);
+ S8(c0, (N + c0) / 2);
+ }
+ }
+ for (int c0 = 2 * M - N - 1; c0 < 2 * M - 1; c0 += 1)
+ for (int c1 = -M + c0 + 1; c1 < M; c1 += 1)
+ S6(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/levenshtein-1-2-3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/levenshtein-1-2-3.in
new file mode 100644
index 00000000000..dc9446410e6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/levenshtein-1-2-3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/lex.c b/polly/lib/External/isl/test_inputs/codegen/cloog/lex.c
new file mode 100644
index 00000000000..e81e97e75a9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lex.c
@@ -0,0 +1,4 @@
+for (int c0 = 0; c0 <= 10; c0 += 1) {
+ S2(c0);
+ S1(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/lex.in b/polly/lib/External/isl/test_inputs/codegen/cloog/lex.in
new file mode 100644
index 00000000000..7a268b605f0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lex.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-1-2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-1-2.c
new file mode 100644
index 00000000000..bb1e0718719
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-1-2.c
@@ -0,0 +1,8 @@
+for (int c0 = 1; c0 <= M; c0 += 1) {
+ for (int c1 = 1; c1 < c0; c1 += 1)
+ S1(c0, c1);
+ S1(c0, c0);
+ S2(c0, c0);
+ for (int c1 = c0 + 1; c1 <= M; c1 += 1)
+ S1(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-1-2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-1-2.in
new file mode 100644
index 00000000000..b7d06d05953
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-1-2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-2-1-2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-2-1-2.c
new file mode 100644
index 00000000000..23f50d24818
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-2-1-2.c
@@ -0,0 +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 {
+ S1(c0, c0 + 2);
+ S2(c0, c0 + 2);
+ }
+ for (int c1 = c0 + 3; c1 <= M; c1 += 1)
+ S1(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-2-1-2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-2-1-2.in
new file mode 100644
index 00000000000..6ed9040ab03
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lineality-2-1-2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/logo.c b/polly/lib/External/isl/test_inputs/codegen/cloog/logo.c
new file mode 100644
index 00000000000..abe35b5916f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/logo.c
@@ -0,0 +1,17 @@
+{
+ for (int c1 = 0; c1 <= 7; c1 += 1)
+ S1(1, c1);
+ for (int c0 = 2; c0 <= 6; c0 += 1) {
+ for (int c1 = 0; c1 < c0 - 1; c1 += 1)
+ S2(c0, c1);
+ for (int c1 = c0 - 1; c1 <= 4; c1 += 1) {
+ S1(c0, c1);
+ S2(c0, c1);
+ }
+ for (int c1 = 5; c1 <= 7; c1 += 1)
+ S1(c0, c1);
+ }
+ for (int c0 = 7; c0 <= 8; c0 += 1)
+ for (int c1 = c0 - 1; c1 <= 7; c1 += 1)
+ S1(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/logo.in b/polly/lib/External/isl/test_inputs/codegen/cloog/logo.in
new file mode 100644
index 00000000000..33e2d88b540
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/logo.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/logopar.c b/polly/lib/External/isl/test_inputs/codegen/cloog/logopar.c
new file mode 100644
index 00000000000..70f98e8cd89
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/logopar.c
@@ -0,0 +1,17 @@
+{
+ for (int c1 = 0; c1 <= m; c1 += 1)
+ S1(1, c1);
+ for (int c0 = 2; c0 <= n; c0 += 1) {
+ for (int c1 = 0; c1 < c0 - 1; c1 += 1)
+ S2(c0, c1);
+ for (int c1 = c0 - 1; c1 <= n; c1 += 1) {
+ S1(c0, c1);
+ S2(c0, c1);
+ }
+ for (int c1 = n + 1; c1 <= m; c1 += 1)
+ S1(c0, c1);
+ }
+ for (int c0 = n + 1; c0 <= m + 1; c0 += 1)
+ for (int c1 = c0 - 1; c1 <= m; c1 += 1)
+ S1(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/logopar.in b/polly/lib/External/isl/test_inputs/codegen/cloog/logopar.in
new file mode 100644
index 00000000000..48b70fde5b5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/logopar.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/lu.c b/polly/lib/External/isl/test_inputs/codegen/cloog/lu.c
new file mode 100644
index 00000000000..a7fe2b36eed
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lu.c
@@ -0,0 +1,7 @@
+for (int c0 = 1; c0 <= n; c0 += 1) {
+ for (int c1 = 2; c1 <= n; c1 += 1)
+ for (int c2 = 1; c2 < min(c0, c1); c2 += 1)
+ S2(c2, c1, c0);
+ for (int c3 = c0 + 1; c3 <= n; c3 += 1)
+ S1(c0, c3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/lu.in b/polly/lib/External/isl/test_inputs/codegen/cloog/lu.in
new file mode 100644
index 00000000000..49952ccc46e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lu.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/lu2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/lu2.c
new file mode 100644
index 00000000000..d5cc912359c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lu2.c
@@ -0,0 +1,7 @@
+for (int c0 = 1; c0 <= n; c0 += 1) {
+ for (int c1 = 2; c1 <= n; c1 += 1)
+ for (int c2 = 1; c2 < min(c0, c1); c2 += 1)
+ S2(c0, c1, c2, c1, c0);
+ for (int c3 = c0 + 1; c3 <= n; c3 += 1)
+ S1(c0, n, c0, c3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/lu2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/lu2.in
new file mode 100644
index 00000000000..5c71fc0aacc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lu2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/lux.c b/polly/lib/External/isl/test_inputs/codegen/cloog/lux.c
new file mode 100644
index 00000000000..3b33025e227
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lux.c
@@ -0,0 +1,7 @@
+for (int c0 = 1; c0 <= M; c0 += 1) {
+ for (int c1 = 1; c1 < c0; c1 += 1)
+ for (int c2 = c1 + 1; c2 <= M; c2 += 1)
+ S2(c0, c1, c2, c2, c0);
+ for (int c3 = c0 + 1; c3 <= M; c3 += 1)
+ S1(c0, c0, M, c3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/lux.in b/polly/lib/External/isl/test_inputs/codegen/cloog/lux.in
new file mode 100644
index 00000000000..75ed7e24000
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/lux.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/merge.c b/polly/lib/External/isl/test_inputs/codegen/cloog/merge.c
new file mode 100644
index 00000000000..64564ad9987
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/merge.c
@@ -0,0 +1,8 @@
+{
+ S1(0);
+ for (int c0 = 0; c0 <= 10; c0 += 1) {
+ if (c0 >= 2)
+ S2(c0);
+ S3(c0);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/merge.in b/polly/lib/External/isl/test_inputs/codegen/cloog/merge.in
new file mode 100644
index 00000000000..1747c44cf32
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/merge.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/min-1-1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/min-1-1.c
new file mode 100644
index 00000000000..b869e1b8b40
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/min-1-1.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= N; c0 += 1)
+ for (int c1 = 0; c1 <= min(min(M, c0), N - c0); c1 += 1)
+ S1(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/min-1-1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/min-1-1.in
new file mode 100644
index 00000000000..76e511ff2fa
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/min-1-1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/min-2-1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/min-2-1.c
new file mode 100644
index 00000000000..8e6fabf7d28
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/min-2-1.c
@@ -0,0 +1,4 @@
+for (int c0 = 1; c0 <= N; c0 += 1)
+ for (int c1 = 0; c1 <= min(min(M, c0), N - c0); c1 += 1)
+ for (int c2 = 0; c2 <= min(min(M, c0), N - c0); c2 += 1)
+ S1(c0, c1, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/min-2-1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/min-2-1.in
new file mode 100644
index 00000000000..aa0bcaefd86
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/min-2-1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/min-3-1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/min-3-1.c
new file mode 100644
index 00000000000..8d11d76d568
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/min-3-1.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= min(10, M); c0 += 1)
+ for (int c1 = 0; c1 <= min(10, M); c1 += 1)
+ S1(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/min-3-1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/min-3-1.in
new file mode 100644
index 00000000000..1676ac9318e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/min-3-1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/min-4-1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/min-4-1.c
new file mode 100644
index 00000000000..da272fc291f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/min-4-1.c
@@ -0,0 +1,2 @@
+for (int c0 = max(-M, -N); c0 <= min(N, O); c0 += 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/min-4-1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/min-4-1.in
new file mode 100644
index 00000000000..72fd01269be
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/min-4-1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/mod.c b/polly/lib/External/isl/test_inputs/codegen/cloog/mod.c
new file mode 100644
index 00000000000..cafe0b85ddb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mod.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= 3; c0 += 1)
+ if ((c0 + 1) % 3 >= 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/mod.in b/polly/lib/External/isl/test_inputs/codegen/cloog/mod.in
new file mode 100644
index 00000000000..2759c0e506e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mod.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/mod2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/mod2.c
new file mode 100644
index 00000000000..cafe0b85ddb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mod2.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= 3; c0 += 1)
+ if ((c0 + 1) % 3 >= 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/mod2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/mod2.in
new file mode 100644
index 00000000000..58134bbbfe6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mod2.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/mod3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/mod3.c
new file mode 100644
index 00000000000..f8d879ce1ae
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mod3.c
@@ -0,0 +1,4 @@
+for (int c0 = max(0, 32 * h0 - 1991); c0 <= min(999, 32 * h0 + 31); c0 += 1)
+ if ((32 * h0 - c0 + 32) % 64 >= 1)
+ for (int c1 = 0; c1 <= 999; c1 += 1)
+ S1(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/mod3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/mod3.in
new file mode 100644
index 00000000000..bd0713eeba3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mod3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/mod4.c b/polly/lib/External/isl/test_inputs/codegen/cloog/mod4.c
new file mode 100644
index 00000000000..a5dca247b96
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mod4.c
@@ -0,0 +1,5 @@
+for (int c0 = 2; c0 <= 10; c0 += 3) {
+ S1(c0, (c0 + 1) / 3, (c0 + 1) / 3, 2, (c0 - 2) / 3);
+ S2(c0, (c0 + 1) / 3, (c0 + 1) / 3, 2, (c0 - 2) / 3);
+ S3(c0, (c0 + 1) / 3, (c0 + 1) / 3, 2, (c0 - 2) / 3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/mod4.in b/polly/lib/External/isl/test_inputs/codegen/cloog/mod4.in
new file mode 100644
index 00000000000..2002cef3ed3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mod4.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/mode.c b/polly/lib/External/isl/test_inputs/codegen/cloog/mode.c
new file mode 100644
index 00000000000..bcfd31839bb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mode.c
@@ -0,0 +1,10 @@
+for (int c0 = 0; c0 <= M; c0 += 1) {
+ for (int c1 = 0; c1 <= min(N, c0); c1 += 1) {
+ S1(c0, c1);
+ S2(c0, c1);
+ }
+ for (int c1 = max(0, N + 1); c1 <= c0; c1 += 1)
+ S1(c0, c1);
+ for (int c1 = c0 + 1; c1 <= N; c1 += 1)
+ S2(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/mode.in b/polly/lib/External/isl/test_inputs/codegen/cloog/mode.in
new file mode 100644
index 00000000000..914c37e642a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mode.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/multi-mm-1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-mm-1.c
new file mode 100644
index 00000000000..271d863f008
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-mm-1.c
@@ -0,0 +1,8 @@
+for (int c0 = 0; c0 <= M; c0 += 1) {
+ for (int c1 = 0; c1 <= min(N, c0); c1 += 1) {
+ S1(c0, c1);
+ S2(c0, c1);
+ }
+ for (int c1 = N + 1; c1 <= c0; c1 += 1)
+ S1(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/multi-mm-1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-mm-1.in
new file mode 100644
index 00000000000..22bdd1b4234
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-mm-1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride.c b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride.c
new file mode 100644
index 00000000000..2c63c085104
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride.c
@@ -0,0 +1,2 @@
+{
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride.in b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride.in
new file mode 100644
index 00000000000..fdef8f90c2e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride2.c
new file mode 100644
index 00000000000..14f80506e0b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride2.c
@@ -0,0 +1,2 @@
+for (int c0 = 5; c0 <= 100; c0 += 6)
+ S1(c0, (c0 - 1) / 2, (c0 - 2) / 3);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride2.in
new file mode 100644
index 00000000000..d2c4bbc965e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/multi-stride2.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/mxm-shared.c b/polly/lib/External/isl/test_inputs/codegen/cloog/mxm-shared.c
new file mode 100644
index 00000000000..c2423f01f5c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mxm-shared.c
@@ -0,0 +1,6 @@
+if (g4 == 0 && N >= g0 + t1 + 1 && t1 <= 7) {
+ for (int c0 = t0; c0 <= min(127, N - g1 - 1); c0 += 16)
+ S1(g0 + t1, g1 + c0);
+} else if (g4 >= 4 && N >= g0 + t1 + 1 && t1 <= 7 && g4 % 4 == 0)
+ for (int c0 = t0; c0 <= min(127, N - g1 - 1); c0 += 16)
+ S1(g0 + t1, g1 + c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/mxm-shared.in b/polly/lib/External/isl/test_inputs/codegen/cloog/mxm-shared.in
new file mode 100644
index 00000000000..a525e9c0dd8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/mxm-shared.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/no_lindep.c b/polly/lib/External/isl/test_inputs/codegen/cloog/no_lindep.c
new file mode 100644
index 00000000000..1432b5e4e3c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/no_lindep.c
@@ -0,0 +1 @@
+S1(N + 2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/no_lindep.in b/polly/lib/External/isl/test_inputs/codegen/cloog/no_lindep.in
new file mode 100644
index 00000000000..078992925f7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/no_lindep.in
@@ -0,0 +1,3 @@
+[M, N] -> { S1[2 + N] -> [1 + M, N] }
+[M, N] -> { : }
+[M, N] -> { [i, j] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic1.c
new file mode 100644
index 00000000000..9293aef92c7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic1.c
@@ -0,0 +1,2 @@
+for (int c0 = 0; c0 <= M; c0 += 2)
+ S1(c0, c0 / 2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic1.in
new file mode 100644
index 00000000000..e10488f68ef
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic2.c
new file mode 100644
index 00000000000..2b7bb4d22c6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic2.c
@@ -0,0 +1,5 @@
+for (int c0 = 2; c0 <= n; c0 += 2) {
+ if (c0 % 4 == 0)
+ S2(c0, c0 / 4);
+ S1(c0, c0 / 2);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic2.in
new file mode 100644
index 00000000000..54f9374a5d3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_basic2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/nul_complex1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_complex1.c
new file mode 100644
index 00000000000..7053351603e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_complex1.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= 5 * n; c0 += 1)
+ for (int c1 = max(-((5 * n - c0 + 1) % 2) - n + c0 + 1, 2 * floord(c0 - 1, 3) + 2); c1 <= min(c0, n + c0 - (n + c0 + 2) / 3); c1 += 2)
+ S1((3 * c1 / 2) - c0, c0 - c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/nul_complex1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_complex1.in
new file mode 100644
index 00000000000..277e62ef171
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_complex1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/nul_lcpc.c b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_lcpc.c
new file mode 100644
index 00000000000..e6f39682d49
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_lcpc.c
@@ -0,0 +1,13 @@
+{
+ for (int c0 = 1; c0 <= 6; c0 += 2) {
+ for (int c2 = 1; c2 <= c0; c2 += 1) {
+ S1(c0, (c0 - 1) / 2, c2);
+ S2(c0, (c0 - 1) / 2, c2);
+ }
+ for (int c2 = c0 + 1; c2 <= p; c2 += 1)
+ S1(c0, (c0 - 1) / 2, c2);
+ }
+ for (int c0 = 7; c0 <= m; c0 += 2)
+ for (int c2 = 1; c2 <= p; c2 += 1)
+ S1(c0, (c0 - 1) / 2, c2);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/nul_lcpc.in b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_lcpc.in
new file mode 100644
index 00000000000..e3a4e99fcf3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/nul_lcpc.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/orc.c b/polly/lib/External/isl/test_inputs/codegen/cloog/orc.c
new file mode 100644
index 00000000000..8ad0162832c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/orc.c
@@ -0,0 +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);
+ }
+ S4(c1);
+ }
+ for (int c1 = 0; c1 <= 14; c1 += 1) {
+ S5(c1);
+ for (int c2 = 0; c2 <= 9; c2 += 1)
+ S6(c1, c2);
+ S7(c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/orc.in b/polly/lib/External/isl/test_inputs/codegen/cloog/orc.in
new file mode 100644
index 00000000000..d81bf4728e9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/orc.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/otl.c b/polly/lib/External/isl/test_inputs/codegen/cloog/otl.c
new file mode 100644
index 00000000000..793733447ee
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/otl.c
@@ -0,0 +1,7 @@
+if (M >= 3 && N >= 4)
+ for (int c0 = 1; c0 < (2 * M + 2 * N - 2) / 5; c0 += 1)
+ for (int c1 = max(c0 - (M + 2) / 5, (c0 + 1) / 2); c1 <= min(min(c0, (M + 2 * N) / 5 - 1), (2 * N + 5 * c0 + 1) / 10); c1 += 1)
+ for (int c2 = max(max(max(max(0, c0 - c1 - 1), c1 - (N + 6) / 5 + 1), c0 - (M + N + 4) / 5 + 1), floord(-N + 5 * c0 - 3, 10) + 1); c2 <= min(min(min(c1, (M + N - 2) / 5), c0 - c1 + (N - 1) / 5 + 1), (N + 5 * c0 + 3) / 10); c2 += 1)
+ for (int c3 = max(max(max(c0, 2 * c1 - (2 * N + 5) / 5 + 1), c1 + c2 - (N + 3) / 5), 2 * c2 - (N + 2) / 5); c3 <= min(min(min(min(min(c0 + 1, c1 + c2 + 1), c1 + (M - 2) / 5 + 1), 2 * c2 + (N - 2) / 5 + 1), (2 * M + 2 * N - 1) / 5 - 1), c2 + (M + N) / 5); c3 += 1)
+ for (int c4 = max(max(max(max(c1, c0 - c2), c0 - (M + 6) / 5 + 1), c3 - (M + 2) / 5), (c3 + 1) / 2); c4 <= min(min(min(min(min(min(min(c0, c1 + 1), -c2 + c3 + (N - 1) / 5 + 1), c0 - c2 + N / 5 + 1), (M + 2 * N + 1) / 5 - 1), c2 + (N + 2) / 5), (2 * N + 5 * c0 + 3) / 10), (2 * N + 5 * c3 + 2) / 10); c4 += 1)
+ S1(c0, c1, c2, c3, c4, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/otl.in b/polly/lib/External/isl/test_inputs/codegen/cloog/otl.in
new file mode 100644
index 00000000000..a6ad5d2fc58
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/otl.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/param-split.c b/polly/lib/External/isl/test_inputs/codegen/cloog/param-split.c
new file mode 100644
index 00000000000..e7774d55d1e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/param-split.c
@@ -0,0 +1,6 @@
+for (int c0 = 0; c0 <= (M <= 0 ? 0 : M); c0 += 1) {
+ if (M >= c0)
+ S1(c0);
+ if (c0 == 0)
+ S2(0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/param-split.in b/polly/lib/External/isl/test_inputs/codegen/cloog/param-split.in
new file mode 100644
index 00000000000..7b8a59e641e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/param-split.in
@@ -0,0 +1,3 @@
+[M] -> { S1[i0] -> [i0, 0] : i0 >= 0 and i0 <= M; S2[0] -> [0, 1] }
+[M] -> { : }
+[M] -> { [i, j] -> atomic[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/pouchet.c b/polly/lib/External/isl/test_inputs/codegen/cloog/pouchet.c
new file mode 100644
index 00000000000..dc844442ca5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/pouchet.c
@@ -0,0 +1,11 @@
+for (int c0 = 1; c0 <= floord(Ny, 2) + 2; c0 += 1)
+ for (int c1 = max(c0 - 1, c0 / 2 + 1); c1 <= min(c0, (Ny + 2 * c0) / 4); c1 += 1) {
+ if (Ny + 2 * c0 >= 4 * c1 + 1) {
+ for (int c2 = 1; c2 <= 2; c2 += 1) {
+ S1(c0 - c1, c1, 2 * c0 - 2 * c1, -2 * c0 + 4 * c1, c2);
+ S2(c0 - c1, c1, 2 * c0 - 2 * c1, -2 * c0 + 4 * c1 - 1, c2);
+ }
+ } else
+ for (int c2 = 1; c2 <= 2; c2 += 1)
+ S2((-Ny + 2 * c0) / 4, (Ny + 2 * c0) / 4, (-Ny / 2) + c0, Ny - 1, c2);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/pouchet.in b/polly/lib/External/isl/test_inputs/codegen/cloog/pouchet.in
new file mode 100644
index 00000000000..95d59dc29da
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/pouchet.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/rectangle.c b/polly/lib/External/isl/test_inputs/codegen/cloog/rectangle.c
new file mode 100644
index 00000000000..10d1f76c19d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/rectangle.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= 2 * n; c0 += 1)
+ for (int c1 = max(0, -n + c0); c1 <= min(n, c0); c1 += 1)
+ S1(c1, c0 - c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/rectangle.in b/polly/lib/External/isl/test_inputs/codegen/cloog/rectangle.in
new file mode 100644
index 00000000000..fab0f945c37
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/rectangle.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-QR.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-QR.c
new file mode 100644
index 00000000000..253791a50b0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-QR.c
@@ -0,0 +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);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-QR.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-QR.in
new file mode 100644
index 00000000000..b81c03d7252
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-QR.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-bastoul3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-bastoul3.c
new file mode 100644
index 00000000000..6d82ce4a89b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-bastoul3.c
@@ -0,0 +1,3 @@
+for (int c0 = 3; c0 <= 9; c0 += 1)
+ for (int c1 = max(c0 - 6, -(c0 % 2) + 2); c1 <= min(3, c0 - 2); c1 += 2)
+ S1(c0, c1, (c0 - c1) / 2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-bastoul3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-bastoul3.in
new file mode 100644
index 00000000000..a6a4ffc9297
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-bastoul3.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-cholesky2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-cholesky2.c
new file mode 100644
index 00000000000..4d1a9118bb9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-cholesky2.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-cholesky2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-cholesky2.in
new file mode 100644
index 00000000000..7f62b1f0264
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-cholesky2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion1.c
new file mode 100644
index 00000000000..201ffee0bc3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion1.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion1.in
new file mode 100644
index 00000000000..ca4282e49b3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion2.c
new file mode 100644
index 00000000000..13c30301620
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion2.c
@@ -0,0 +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 c3 = 1; c3 <= M; c3 += 1)
+ S2(N, c3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion2.in
new file mode 100644
index 00000000000..53905d8df35
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-fusion2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi2.c
new file mode 100644
index 00000000000..407fc8b73e1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi2.c
@@ -0,0 +1,3 @@
+for (int c1 = 0; c1 < M; c1 += 1)
+ for (int c3 = 0; c3 < M; c3 += 1)
+ S1(c1, c3);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi2.in
new file mode 100644
index 00000000000..ea86283a7b7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi3.c
new file mode 100644
index 00000000000..1df9bb90c24
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi3.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi3.in
new file mode 100644
index 00000000000..4f5cc77904a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-jacobi3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam1.c
new file mode 100644
index 00000000000..d8a80d66363
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam1.c
@@ -0,0 +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);
+ }
+ if (c1 >= 1)
+ S2(100, -c1 + 101);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam1.in
new file mode 100644
index 00000000000..b2338b0321b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam1.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam2.c
new file mode 100644
index 00000000000..f3215bf69bd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam2.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam2.in
new file mode 100644
index 00000000000..eb62bb7d009
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam3.c
new file mode 100644
index 00000000000..c786628d804
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam3.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam3.in
new file mode 100644
index 00000000000..ebf78ae0b6b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam4.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam4.c
new file mode 100644
index 00000000000..6a0b0badab6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam4.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam4.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam4.in
new file mode 100644
index 00000000000..1bb684f8e2b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam4.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam5.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam5.c
new file mode 100644
index 00000000000..f476185713c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam5.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam5.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam5.in
new file mode 100644
index 00000000000..2e2046f1db9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam5.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam6.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam6.c
new file mode 100644
index 00000000000..2cc512261d6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam6.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam6.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam6.in
new file mode 100644
index 00000000000..2699212b1df
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-lim-lam6.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-liu-zhuge1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-liu-zhuge1.c
new file mode 100644
index 00000000000..dfc7d37d901
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-liu-zhuge1.c
@@ -0,0 +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);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-liu-zhuge1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-liu-zhuge1.in
new file mode 100644
index 00000000000..fd4dcc884f9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-liu-zhuge1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner3.c
new file mode 100644
index 00000000000..d37df98b692
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner3.c
@@ -0,0 +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);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner3.in
new file mode 100644
index 00000000000..03731713ff7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner4.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner4.c
new file mode 100644
index 00000000000..7a67212b2bb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner4.c
@@ -0,0 +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);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner4.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner4.in
new file mode 100644
index 00000000000..1a8070210cd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner4.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner5.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner5.c
new file mode 100644
index 00000000000..c5f8fcc38e8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner5.c
@@ -0,0 +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);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner5.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner5.in
new file mode 100644
index 00000000000..9122fc0a626
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-loechner5.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp.c
new file mode 100644
index 00000000000..cff8f1724e3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp.in
new file mode 100644
index 00000000000..b7fdb69788c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp2.c
new file mode 100644
index 00000000000..98cd4b0707a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp2.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp2.in
new file mode 100644
index 00000000000..8a5dfb12d5a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-interp2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-psinv.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-psinv.c
new file mode 100644
index 00000000000..e3a5deeb1e7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-psinv.c
@@ -0,0 +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 c5 = 2; c5 < M; c5 += 1)
+ S3(c1, (c3 + 1) / 2, c5);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-psinv.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-psinv.in
new file mode 100644
index 00000000000..835f81a4725
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-psinv.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-resid.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-resid.c
new file mode 100644
index 00000000000..e3a5deeb1e7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-resid.c
@@ -0,0 +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 c5 = 2; c5 < M; c5 += 1)
+ S3(c1, (c3 + 1) / 2, c5);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-resid.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-resid.in
new file mode 100644
index 00000000000..835f81a4725
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-resid.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-rprj3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-rprj3.c
new file mode 100644
index 00000000000..992bfd53f02
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-rprj3.c
@@ -0,0 +1,33 @@
+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);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-rprj3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-rprj3.in
new file mode 100644
index 00000000000..03f4134661f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-mg-rprj3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali1.c
new file mode 100644
index 00000000000..7268c23d080
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali1.c
@@ -0,0 +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);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali1.in
new file mode 100644
index 00000000000..ecbb320de01
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali1.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali2.c
new file mode 100644
index 00000000000..a407cad52d2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali2.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali2.in
new file mode 100644
index 00000000000..9ba248fb0fc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali3.c
new file mode 100644
index 00000000000..c281b826e01
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali3.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali3.in
new file mode 100644
index 00000000000..70da8ea5c11
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali4.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali4.c
new file mode 100644
index 00000000000..a407cad52d2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali4.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali4.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali4.in
new file mode 100644
index 00000000000..e975faef4c7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali4.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali5.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali5.c
new file mode 100644
index 00000000000..51f2f0c154e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali5.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali5.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali5.in
new file mode 100644
index 00000000000..1b77acdc8d6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali5.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali6.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali6.c
new file mode 100644
index 00000000000..1df9bb90c24
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali6.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali6.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali6.in
new file mode 100644
index 00000000000..7a08ca76e8e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-pingali6.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride.c
new file mode 100644
index 00000000000..104e2620fdd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride.c
@@ -0,0 +1,2 @@
+for (int c1 = 2; c1 <= M; c1 += 7)
+ S1(c1, (c1 - 2) / 7);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride.in
new file mode 100644
index 00000000000..46a1c35375e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride2.c
new file mode 100644
index 00000000000..104e2620fdd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride2.c
@@ -0,0 +1,2 @@
+for (int c1 = 2; c1 <= M; c1 += 7)
+ S1(c1, (c1 - 2) / 7);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride2.in
new file mode 100644
index 00000000000..be6b1978a4b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-stride2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-tang-xue1.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-tang-xue1.c
new file mode 100644
index 00000000000..8874eabfceb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-tang-xue1.c
@@ -0,0 +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);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-tang-xue1.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-tang-xue1.in
new file mode 100644
index 00000000000..0c9ffc9f77f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-tang-xue1.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-two.c b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-two.c
new file mode 100644
index 00000000000..3946c423f15
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-two.c
@@ -0,0 +1 @@
+S1(1, 1, 5);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-two.in b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-two.in
new file mode 100644
index 00000000000..a7eb204753b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/reservoir-two.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/singleton.c b/polly/lib/External/isl/test_inputs/codegen/cloog/singleton.c
new file mode 100644
index 00000000000..0023bc6cd9a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/singleton.c
@@ -0,0 +1,4 @@
+{
+ S2();
+ S1();
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/singleton.in b/polly/lib/External/isl/test_inputs/codegen/cloog/singleton.in
new file mode 100644
index 00000000000..a0a5a8a1dde
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/singleton.in
@@ -0,0 +1,3 @@
+{ S2[] -> [-1]; S1[] -> [0] }
+{ : }
+{ [i] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/square+triangle-1-1-2-3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/square+triangle-1-1-2-3.c
new file mode 100644
index 00000000000..316213f18f1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/square+triangle-1-1-2-3.c
@@ -0,0 +1,9 @@
+for (int c0 = 1; c0 <= M; c0 += 1) {
+ S1(c0, 1);
+ for (int c1 = 2; c1 <= c0; c1 += 1) {
+ S1(c0, c1);
+ S2(c0, c1);
+ }
+ for (int c1 = c0 + 1; c1 <= M; c1 += 1)
+ S1(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/square+triangle-1-1-2-3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/square+triangle-1-1-2-3.in
new file mode 100644
index 00000000000..028c792b640
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/square+triangle-1-1-2-3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/stride.c b/polly/lib/External/isl/test_inputs/codegen/cloog/stride.c
new file mode 100644
index 00000000000..9bd4ddfb307
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/stride.c
@@ -0,0 +1,7 @@
+{
+ for (int c0 = 3; c0 <= 24; c0 += 3)
+ S2(c0, c0 / 3);
+ S1(25);
+ for (int c0 = 27; c0 <= 100; c0 += 3)
+ S2(c0, c0 / 3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/stride.in b/polly/lib/External/isl/test_inputs/codegen/cloog/stride.in
new file mode 100644
index 00000000000..410c6843527
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/stride.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/stride2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/stride2.c
new file mode 100644
index 00000000000..c56af8e749e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/stride2.c
@@ -0,0 +1,8 @@
+{
+ for (int c0 = 3; c0 <= 26; c0 += 3)
+ S2(c0, c0 / 3);
+ S1(27);
+ S2(27, 9);
+ for (int c0 = 30; c0 <= 100; c0 += 3)
+ S2(c0, c0 / 3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/stride2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/stride2.in
new file mode 100644
index 00000000000..97e40866adf
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/stride2.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/stride3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/stride3.c
new file mode 100644
index 00000000000..d145938b663
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/stride3.c
@@ -0,0 +1,2 @@
+for (int c0 = max(1, m); c0 <= n; c0 += 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/stride3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/stride3.in
new file mode 100644
index 00000000000..9b87b899243
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/stride3.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/stride4.c b/polly/lib/External/isl/test_inputs/codegen/cloog/stride4.c
new file mode 100644
index 00000000000..03908e60c07
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/stride4.c
@@ -0,0 +1,3 @@
+if (t >= 0 && t <= 15)
+ for (int c0 = t; c0 <= 99; c0 += 16)
+ S1(c0, t);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/stride4.in b/polly/lib/External/isl/test_inputs/codegen/cloog/stride4.in
new file mode 100644
index 00000000000..436cad3c5a5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/stride4.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/swim.c b/polly/lib/External/isl/test_inputs/codegen/cloog/swim.c
new file mode 100644
index 00000000000..47b4ebe5ff8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/swim.c
@@ -0,0 +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);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/swim.in b/polly/lib/External/isl/test_inputs/codegen/cloog/swim.in
new file mode 100644
index 00000000000..4661ff0cff2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/swim.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/test.c b/polly/lib/External/isl/test_inputs/codegen/cloog/test.c
new file mode 100644
index 00000000000..84c84931e35
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/test.c
@@ -0,0 +1,17 @@
+{
+ for (int c0 = 1; c0 <= 2; c0 += 1)
+ for (int c1 = 1; c1 <= M; c1 += 1)
+ S1(c0, c1);
+ for (int c0 = 3; c0 <= N; c0 += 1) {
+ for (int c1 = 1; c1 <= min(M, c0 - 1); c1 += 1)
+ S1(c0, c1);
+ if (M >= c0) {
+ S1(c0, c0);
+ S2(c0, c0);
+ }
+ for (int c1 = c0 + 1; c1 <= M; c1 += 1)
+ S1(c0, c1);
+ if (c0 >= M + 1)
+ S2(c0, c0);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/test.in b/polly/lib/External/isl/test_inputs/codegen/cloog/test.in
new file mode 100644
index 00000000000..981d9339f52
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/test.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/thomasset.c b/polly/lib/External/isl/test_inputs/codegen/cloog/thomasset.c
new file mode 100644
index 00000000000..8d6709e7d9b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/thomasset.c
@@ -0,0 +1,9 @@
+{
+ for (int c0 = 0; c0 <= floord(n - 1, 3); c0 += 1)
+ for (int c2 = 3 * c0 + 1; c2 <= min(n, 3 * c0 + 3); c2 += 1)
+ S1(c2, c0);
+ for (int c0 = floord(n, 3); c0 <= 2 * floord(n, 3); c0 += 1)
+ for (int c1 = 0; c1 < n; c1 += 1)
+ for (int c3 = max(1, (n % 3) - n + 3 * c0); c3 <= min(n, (n % 3) - n + 3 * c0 + 2); c3 += 1)
+ S2(c1 + 1, c3, 0, n / 3, c0 - n / 3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/thomasset.in b/polly/lib/External/isl/test_inputs/codegen/cloog/thomasset.in
new file mode 100644
index 00000000000..398e5234603
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/thomasset.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/tiling.c b/polly/lib/External/isl/test_inputs/codegen/cloog/tiling.c
new file mode 100644
index 00000000000..971b988a578
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/tiling.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= n / 10; c0 += 1)
+ for (int c1 = 10 * c0; c1 <= min(n, 10 * c0 + 9); c1 += 1)
+ S1(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/tiling.in b/polly/lib/External/isl/test_inputs/codegen/cloog/tiling.in
new file mode 100644
index 00000000000..6f0530f2ba0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/tiling.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/uday_scalars.c b/polly/lib/External/isl/test_inputs/codegen/cloog/uday_scalars.c
new file mode 100644
index 00000000000..d8002a86d86
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/uday_scalars.c
@@ -0,0 +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);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/uday_scalars.in b/polly/lib/External/isl/test_inputs/codegen/cloog/uday_scalars.in
new file mode 100644
index 00000000000..ae29bb54f89
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/uday_scalars.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/union.c b/polly/lib/External/isl/test_inputs/codegen/cloog/union.c
new file mode 100644
index 00000000000..6dc0a9b877f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/union.c
@@ -0,0 +1,6 @@
+if (M >= 11) {
+ for (int c0 = -100; c0 <= 0; c0 += 1)
+ S1(-c0);
+} else
+ for (int c0 = 0; c0 <= 100; c0 += 1)
+ S1(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/union.in b/polly/lib/External/isl/test_inputs/codegen/cloog/union.in
new file mode 100644
index 00000000000..23b6cab9a89
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/union.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/unroll.c b/polly/lib/External/isl/test_inputs/codegen/cloog/unroll.c
new file mode 100644
index 00000000000..83c4577b479
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/unroll.c
@@ -0,0 +1,13 @@
+{
+ S1(0);
+ S1(1);
+ S1(2);
+ S1(3);
+ S1(4);
+ S1(5);
+ S1(6);
+ S1(7);
+ S1(8);
+ S1(9);
+ S1(10);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/unroll.in b/polly/lib/External/isl/test_inputs/codegen/cloog/unroll.in
new file mode 100644
index 00000000000..1e449e0b420
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/unroll.in
@@ -0,0 +1,3 @@
+[n] -> { S1[i] -> [i, 0] : i >= 0 and i <= 10 }
+[n] -> { : }
+[n] -> { [i, j] -> unroll[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/unroll2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/unroll2.c
new file mode 100644
index 00000000000..b96ddd73fe2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/unroll2.c
@@ -0,0 +1,6 @@
+{
+ if (n >= 0 && n <= 9)
+ S1(n);
+ if (n >= -1 && n <= 9)
+ S1(n + 1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/unroll2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/unroll2.in
new file mode 100644
index 00000000000..eb71e075ab3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/unroll2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/usvd_e_t.c b/polly/lib/External/isl/test_inputs/codegen/cloog/usvd_e_t.c
new file mode 100644
index 00000000000..af8c9fe42f0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/usvd_e_t.c
@@ -0,0 +1,348 @@
+{
+ for (int c0 = 0; c0 <= 2; c0 += 1) {
+ S1(c0, 0, 0);
+ for (int c1 = 0; c1 <= 4; c1 += 1)
+ S2(c0, c1, 0);
+ }
+ S1(3, 0, 0);
+ for (int c1 = 0; c1 <= 4; c1 += 1)
+ S2(3, c1, 0);
+ for (int c1 = 7; c1 <= 11; c1 += 1)
+ S8(3, c1, 0);
+ S1(4, 0, 0);
+ S2(4, 0, 0);
+ S3(4, 0, 0);
+ S5(4, 0, 0);
+ for (int c1 = 1; c1 <= 4; c1 += 1) {
+ S2(4, c1, 0);
+ S5(4, c1, 0);
+ }
+ for (int c1 = 7; c1 <= 11; c1 += 1)
+ S8(4, c1, 0);
+ for (int c0 = 5; c0 <= 6; c0 += 1) {
+ for (int c1 = -4; c1 < c0 - 8; c1 += 1)
+ S6(c0, c1, 0);
+ for (int c1 = c0 - 9; c1 < 0; c1 += 1)
+ S7(c0, c1, 0);
+ S3(c0, 0, 0);
+ S7(c0, 0, 0);
+ for (int c1 = 1; c1 < c0 - 3; c1 += 1)
+ S4(c0, c1, -1);
+ for (int c1 = c0 - 4; c1 <= 4; c1 += 1)
+ S5(c0, c1, 0);
+ for (int c1 = 7; c1 <= 11; c1 += 1)
+ S8(c0, c1, 0);
+ }
+ for (int c1 = -4; c1 < -1; c1 += 1)
+ S6(7, c1, 0);
+ for (int c1 = -2; c1 < 0; c1 += 1)
+ S7(7, c1, 0);
+ S3(7, 0, 0);
+ S7(7, 0, 0);
+ for (int c1 = 1; c1 <= 3; c1 += 1)
+ S4(7, c1, -1);
+ for (int c1 = 3; c1 <= 4; c1 += 1)
+ S5(7, c1, 0);
+ S9(7, 4, 0);
+ S10(7, 4, 0);
+ S11(7, 4, 0);
+ S21(7, 4, 0);
+ S23(7, 4, 0);
+ S11(7, 4, 1);
+ S16(7, 4, 1);
+ S17(7, 4, 1);
+ for (int c2 = 2; c2 <= 4; c2 += 1)
+ S11(7, 4, c2);
+ S12(7, 5, 0);
+ S21(7, 5, 0);
+ S22(7, 5, 0);
+ S23(7, 5, 0);
+ S12(7, 5, 1);
+ S16(7, 5, 1);
+ S17(7, 5, 1);
+ for (int c2 = 2; c2 <= 4; c2 += 1)
+ S12(7, 5, c2);
+ S21(7, 6, 0);
+ S22(7, 6, 0);
+ S23(7, 6, 0);
+ for (int c1 = 7; c1 <= 8; c1 += 1) {
+ S8(7, c1, 0);
+ S21(7, c1, 0);
+ S22(7, c1, 0);
+ S23(7, c1, 0);
+ }
+ S8(7, 9, 0);
+ S22(7, 9, 0);
+ for (int c1 = 10; c1 <= 11; c1 += 1)
+ S8(7, c1, 0);
+ for (int c1 = -4; c1 < 0; c1 += 1)
+ S6(8, c1, 0);
+ S7(8, -1, 0);
+ S3(8, 0, 0);
+ S7(8, 0, 0);
+ S19(8, 1, -2);
+ S4(8, 1, -1);
+ S19(8, 1, -1);
+ S19(8, 1, 0);
+ S15(8, 1, 4);
+ S18(8, 1, 4);
+ for (int c2 = -4; c2 < -2; c2 += 1) {
+ S14(8, 2, c2);
+ S20(8, 2, c2);
+ }
+ S14(8, 2, -2);
+ S19(8, 2, -2);
+ S20(8, 2, -2);
+ S4(8, 2, -1);
+ S14(8, 2, -1);
+ S19(8, 2, -1);
+ S20(8, 2, -1);
+ S14(8, 2, 0);
+ S19(8, 2, 0);
+ S20(8, 2, 0);
+ S15(8, 2, 4);
+ S18(8, 2, 4);
+ for (int c2 = -4; c2 < -1; c2 += 1) {
+ S14(8, 3, c2);
+ S20(8, 3, c2);
+ }
+ S4(8, 3, -1);
+ S14(8, 3, -1);
+ S20(8, 3, -1);
+ S14(8, 3, 0);
+ S20(8, 3, 0);
+ S15(8, 3, 4);
+ S18(8, 3, 4);
+ for (int c2 = -4; c2 < -1; c2 += 1) {
+ S14(8, 4, c2);
+ S20(8, 4, c2);
+ }
+ S4(8, 4, -1);
+ S14(8, 4, -1);
+ S20(8, 4, -1);
+ S5(8, 4, 0);
+ S9(8, 4, 0);
+ S10(8, 4, 0);
+ S14(8, 4, 0);
+ S20(8, 4, 0);
+ S23(8, 4, 0);
+ S13(8, 4, 1);
+ S21(8, 4, 1);
+ S23(8, 4, 1);
+ S24(8, 4, 1);
+ S13(8, 4, 2);
+ S16(8, 4, 2);
+ S17(8, 4, 2);
+ S24(8, 4, 2);
+ S13(8, 4, 3);
+ S24(8, 4, 3);
+ S13(8, 4, 4);
+ S15(8, 4, 4);
+ S23(8, 5, 0);
+ S11(8, 5, 1);
+ S21(8, 5, 1);
+ S22(8, 5, 1);
+ S23(8, 5, 1);
+ S24(8, 5, 1);
+ S11(8, 5, 2);
+ S16(8, 5, 2);
+ S17(8, 5, 2);
+ S24(8, 5, 2);
+ S11(8, 5, 3);
+ S24(8, 5, 3);
+ S11(8, 5, 4);
+ S15(8, 5, 4);
+ S23(8, 6, 0);
+ S12(8, 6, 1);
+ S21(8, 6, 1);
+ S22(8, 6, 1);
+ S23(8, 6, 1);
+ S24(8, 6, 1);
+ S12(8, 6, 2);
+ S16(8, 6, 2);
+ S17(8, 6, 2);
+ S24(8, 6, 2);
+ S12(8, 6, 3);
+ S24(8, 6, 3);
+ S12(8, 6, 4);
+ for (int c1 = 7; c1 <= 8; c1 += 1) {
+ S23(8, c1, 0);
+ S21(8, c1, 1);
+ S22(8, c1, 1);
+ S23(8, c1, 1);
+ for (int c2 = 1; c2 <= 3; c2 += 1)
+ S24(8, c1, c2);
+ }
+ S22(8, 9, 1);
+ S7(9, 0, 0);
+ for (int c1 = 1; c1 <= 2; c1 += 1) {
+ for (int c2 = -1; c2 <= 0; c2 += 1)
+ S19(9, c1, c2);
+ for (int c2 = 4; c2 <= 5; c2 += 1) {
+ S15(9, c1, c2);
+ S18(9, c1, c2);
+ }
+ }
+ S20(9, 3, -4);
+ for (int c2 = -3; c2 < -1; c2 += 1) {
+ S14(9, 3, c2);
+ S20(9, 3, c2);
+ }
+ for (int c2 = -1; c2 <= 0; c2 += 1) {
+ S14(9, 3, c2);
+ S19(9, 3, c2);
+ S20(9, 3, c2);
+ }
+ for (int c2 = 4; c2 <= 5; c2 += 1) {
+ S15(9, 3, c2);
+ S18(9, 3, c2);
+ }
+ S20(9, 4, -4);
+ for (int c2 = -3; c2 < 0; c2 += 1) {
+ S14(9, 4, c2);
+ S20(9, 4, c2);
+ }
+ S9(9, 4, 0);
+ S10(9, 4, 0);
+ S14(9, 4, 0);
+ S20(9, 4, 0);
+ for (int c2 = 0; c2 <= 1; c2 += 1)
+ S23(9, 4, c2);
+ S13(9, 4, 2);
+ S21(9, 4, 2);
+ S23(9, 4, 2);
+ S24(9, 4, 2);
+ S13(9, 4, 3);
+ S16(9, 4, 3);
+ S17(9, 4, 3);
+ S24(9, 4, 3);
+ S13(9, 4, 4);
+ for (int c2 = 4; c2 <= 5; c2 += 1) {
+ S15(9, 4, c2);
+ S18(9, 4, c2);
+ }
+ for (int c2 = 0; c2 <= 1; c2 += 1)
+ S23(9, 5, c2);
+ S13(9, 5, 2);
+ S21(9, 5, 2);
+ S22(9, 5, 2);
+ S23(9, 5, 2);
+ S24(9, 5, 2);
+ S13(9, 5, 3);
+ S16(9, 5, 3);
+ S17(9, 5, 3);
+ S24(9, 5, 3);
+ S13(9, 5, 4);
+ for (int c2 = 4; c2 <= 5; c2 += 1)
+ S15(9, 5, c2);
+ for (int c2 = 0; c2 <= 1; c2 += 1)
+ S23(9, 6, c2);
+ S11(9, 6, 2);
+ S21(9, 6, 2);
+ S22(9, 6, 2);
+ S23(9, 6, 2);
+ S24(9, 6, 2);
+ S11(9, 6, 3);
+ S16(9, 6, 3);
+ S17(9, 6, 3);
+ S24(9, 6, 3);
+ S11(9, 6, 4);
+ for (int c2 = 0; c2 <= 1; c2 += 1)
+ S23(9, 7, c2);
+ S12(9, 7, 2);
+ S21(9, 7, 2);
+ S22(9, 7, 2);
+ S23(9, 7, 2);
+ S24(9, 7, 2);
+ S12(9, 7, 3);
+ S16(9, 7, 3);
+ S17(9, 7, 3);
+ S24(9, 7, 3);
+ S12(9, 7, 4);
+ for (int c2 = 0; c2 <= 1; c2 += 1)
+ S23(9, 8, c2);
+ S21(9, 8, 2);
+ S22(9, 8, 2);
+ S23(9, 8, 2);
+ for (int c2 = 2; c2 <= 3; c2 += 1)
+ S24(9, 8, c2);
+ S22(9, 9, 2);
+ for (int c1 = 1; c1 <= 3; c1 += 1) {
+ S19(10, c1, 0);
+ S26(10, c1, 3);
+ S15(10, c1, 4);
+ S18(10, c1, 4);
+ S25(10, c1, 4);
+ for (int c2 = 5; c2 <= 6; c2 += 1) {
+ S15(10, c1, c2);
+ S18(10, c1, c2);
+ }
+ }
+ for (int c2 = -4; c2 < -2; c2 += 1)
+ S20(10, 4, c2);
+ for (int c2 = -2; c2 < 0; c2 += 1) {
+ S14(10, 4, c2);
+ S20(10, 4, c2);
+ }
+ S9(10, 4, 0);
+ S10(10, 4, 0);
+ S14(10, 4, 0);
+ S19(10, 4, 0);
+ S20(10, 4, 0);
+ S13(10, 4, 3);
+ S21(10, 4, 3);
+ S24(10, 4, 3);
+ S26(10, 4, 3);
+ S13(10, 4, 4);
+ S15(10, 4, 4);
+ S16(10, 4, 4);
+ S17(10, 4, 4);
+ S18(10, 4, 4);
+ S25(10, 4, 4);
+ for (int c2 = 5; c2 <= 6; c2 += 1) {
+ S15(10, 4, c2);
+ S18(10, 4, c2);
+ }
+ S13(10, 5, 3);
+ S21(10, 5, 3);
+ S22(10, 5, 3);
+ S24(10, 5, 3);
+ S26(10, 5, 3);
+ S13(10, 5, 4);
+ S15(10, 5, 4);
+ S16(10, 5, 4);
+ S17(10, 5, 4);
+ S18(10, 5, 4);
+ S25(10, 5, 4);
+ for (int c2 = 5; c2 <= 6; c2 += 1) {
+ S15(10, 5, c2);
+ S18(10, 5, c2);
+ }
+ S13(10, 6, 3);
+ S21(10, 6, 3);
+ S22(10, 6, 3);
+ S24(10, 6, 3);
+ S13(10, 6, 4);
+ S16(10, 6, 4);
+ S17(10, 6, 4);
+ S11(10, 7, 3);
+ S21(10, 7, 3);
+ S22(10, 7, 3);
+ S24(10, 7, 3);
+ S11(10, 7, 4);
+ S16(10, 7, 4);
+ S17(10, 7, 4);
+ S12(10, 8, 3);
+ S21(10, 8, 3);
+ S22(10, 8, 3);
+ S24(10, 8, 3);
+ S12(10, 8, 4);
+ S16(10, 8, 4);
+ S17(10, 8, 4);
+ S22(10, 9, 3);
+ for (int c0 = 11; c0 <= 14; c0 += 1)
+ for (int c1 = 1; c1 <= 5; c1 += 1) {
+ S26(c0, c1, 3);
+ S25(c0, c1, 4);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/usvd_e_t.in b/polly/lib/External/isl/test_inputs/codegen/cloog/usvd_e_t.in
new file mode 100644
index 00000000000..feb8f0898bb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/usvd_e_t.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/vasilache.c b/polly/lib/External/isl/test_inputs/codegen/cloog/vasilache.c
new file mode 100644
index 00000000000..c6d32ca637b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/vasilache.c
@@ -0,0 +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();
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/vasilache.in b/polly/lib/External/isl/test_inputs/codegen/cloog/vasilache.in
new file mode 100644
index 00000000000..a9b9860fd2b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/vasilache.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/vivien.c b/polly/lib/External/isl/test_inputs/codegen/cloog/vivien.c
new file mode 100644
index 00000000000..ce38c10e833
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/vivien.c
@@ -0,0 +1,85 @@
+{
+ 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) {
+ 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 (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 + 3 && 2 * n >= c0 + 1) {
+ S6(-n + c0, n);
+ } else {
+ if (c0 >= 5 && n + 1 >= c0) {
+ S6(2, c0 - 2);
+ S1(c0 - 1);
+ } else if (n + 1 >= c0 && c0 <= 4)
+ S1(c0 - 1);
+ if (n + 1 >= c0) {
+ S6(1, c0 - 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);
+ } else
+ S1(1);
+ if (c0 % 2 == 0)
+ S3(c0 / 2);
+ for (int c1 = max(1, -n + c0); c1 < (c0 + 1) / 2; c1 += 1)
+ S2(c0 - c1, c1);
+ }
+ for (int c0 = max(2 * n + 1, -27 * n + 2); c0 <= n + 29; c0 += 1)
+ S1(c0 - 1);
+ for (int c0 = n + 30; c0 <= 2 * n; c0 += 1) {
+ 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 {
+ 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 <= 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) {
+ S6(-n + c0 + 1, n - 1);
+ for (int c2 = 1; c2 < -n + c0; c2 += 1)
+ S5(-n + c0, n, c2);
+ }
+ S6(-n + c0, n);
+ }
+ if (c0 % 2 == 0)
+ S3(c0 / 2);
+ for (int c1 = -n + c0; c1 < (c0 + 1) / 2; c1 += 1)
+ S2(c0 - c1, c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/vivien.in b/polly/lib/External/isl/test_inputs/codegen/cloog/vivien.in
new file mode 100644
index 00000000000..b591ef35976
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/vivien.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/vivien2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/vivien2.c
new file mode 100644
index 00000000000..7fe52ff319b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/vivien2.c
@@ -0,0 +1,77 @@
+{
+ for (int c0 = -27 * n + 2; c0 <= 1; c0 += 1)
+ S1(c0 - 1);
+ for (int c0 = 2; c0 <= n + 29; c0 += 1) {
+ if (c0 >= 3) {
+ 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);
+ }
+ 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);
+ } 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 >= 5 && n + 1 >= c0) {
+ S6(2, c0 - 2);
+ S1(c0 - 1);
+ } else if (c0 <= 4)
+ S1(c0 - 1);
+ if (n + 1 >= c0) {
+ S6(1, c0 - 1);
+ } else {
+ S6(2, n);
+ S1(n + 1);
+ }
+ }
+ } else
+ S1(1);
+ if (c0 % 2 == 0)
+ S3(c0 / 2);
+ for (int c1 = max(1, -n + c0); c1 < (c0 + 1) / 2; c1 += 1)
+ S2(c0 - c1, c1);
+ }
+ for (int c0 = n + 30; c0 <= 2 * n; c0 += 1) {
+ 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 {
+ 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 <= 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) {
+ S6(-n + c0 + 1, n - 1);
+ for (int c2 = 1; c2 < -n + c0; c2 += 1)
+ S5(-n + c0, n, c2);
+ }
+ S6(-n + c0, n);
+ }
+ if (c0 % 2 == 0)
+ S3(c0 / 2);
+ for (int c1 = -n + c0; c1 < (c0 + 1) / 2; c1 += 1)
+ S2(c0 - c1, c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/vivien2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/vivien2.in
new file mode 100644
index 00000000000..d8b1b1a007b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/vivien2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/walters.c b/polly/lib/External/isl/test_inputs/codegen/cloog/walters.c
new file mode 100644
index 00000000000..2c1bd93858b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/walters.c
@@ -0,0 +1,15 @@
+{
+ S2(1, 0, 1, 0);
+ S4(1, 0, 1, 0);
+ S3(2, 0, 1, 1);
+ S4(2, 0, 1, 1);
+ for (int c0 = 3; c0 <= 10; c0 += 1) {
+ if (c0 % 3 == 0) {
+ S1(c0, c0 / 3, c0 / 3, c0 / 3);
+ } else if ((c0 - 1) % 3 == 0) {
+ S2(c0, (c0 - 1) / 3, (c0 + 2) / 3, (c0 - 1) / 3);
+ } else
+ S3(c0, (c0 - 2) / 3, (c0 + 1) / 3, (c0 + 1) / 3);
+ S4(c0, c0 / 3, (c0 - 1) / 3 + 1, c0 - (c0 - 1) / 3 - c0 / 3 - 1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/walters.in b/polly/lib/External/isl/test_inputs/codegen/cloog/walters.in
new file mode 100644
index 00000000000..6e2645147e6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/walters.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/walters2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/walters2.c
new file mode 100644
index 00000000000..27565fbde9a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/walters2.c
@@ -0,0 +1,12 @@
+{
+ for (int c1 = 0; c1 <= 51; c1 += 1)
+ S2(0, c1);
+ for (int c0 = 1; c0 <= 24; c0 += 1) {
+ S2(c0, 0);
+ for (int c1 = 1; c1 <= 50; c1 += 1)
+ S1(c0, c1);
+ S2(c0, 51);
+ }
+ for (int c1 = 0; c1 <= 51; c1 += 1)
+ S2(25, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/walters2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/walters2.in
new file mode 100644
index 00000000000..ea01a10a336
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/walters2.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/walters3.c b/polly/lib/External/isl/test_inputs/codegen/cloog/walters3.c
new file mode 100644
index 00000000000..bafb9acbc8e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/walters3.c
@@ -0,0 +1,7 @@
+{
+ for (int c0 = 2; c0 <= 8; c0 += 2) {
+ S1(c0, c0 / 2, c0 / 2);
+ S2(c0, c0 / 2, c0 / 2);
+ }
+ S2(10, 5, 5);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/walters3.in b/polly/lib/External/isl/test_inputs/codegen/cloog/walters3.in
new file mode 100644
index 00000000000..802bd4f0435
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/walters3.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/wavefront.c b/polly/lib/External/isl/test_inputs/codegen/cloog/wavefront.c
new file mode 100644
index 00000000000..7db0788fc68
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/wavefront.c
@@ -0,0 +1,3 @@
+for (int c0 = 2; c0 <= n + m; c0 += 1)
+ for (int c1 = max(1, -m + c0); c1 <= min(n, c0 - 1); c1 += 1)
+ S1(c1, c0 - c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/wavefront.in b/polly/lib/External/isl/test_inputs/codegen/cloog/wavefront.in
new file mode 100644
index 00000000000..61618c37a45
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/wavefront.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/yosr.c b/polly/lib/External/isl/test_inputs/codegen/cloog/yosr.c
new file mode 100644
index 00000000000..1c20057bd1b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/yosr.c
@@ -0,0 +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 c2 = c1 + 1; c2 <= n; c2 += 1)
+ S2(c1, c2, c0);
+ }
+ for (int c1 = 1; c1 < n; c1 += 1)
+ for (int c2 = c1 + 1; c2 <= n; c2 += 1)
+ S2(c1, c2, n);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/yosr.in b/polly/lib/External/isl/test_inputs/codegen/cloog/yosr.in
new file mode 100644
index 00000000000..dcc93e5a69e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/yosr.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/yosr2.c b/polly/lib/External/isl/test_inputs/codegen/cloog/yosr2.c
new file mode 100644
index 00000000000..a52909ccd45
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/yosr2.c
@@ -0,0 +1,13 @@
+{
+ for (int c1 = 1; c1 <= M; c1 += 1)
+ S2(c1);
+ for (int c0 = 2; c0 <= M; c0 += 1) {
+ for (int c2 = c0 + 1; c2 <= M; c2 += 1)
+ for (int c3 = 1; c3 < c0; c3 += 1)
+ S3(c0, c2, c3);
+ for (int c1 = 1; c1 < c0; c1 += 1)
+ S4(c1, c0);
+ for (int c2 = 1; c2 < c0; c2 += 1)
+ S1(c0, c2);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/yosr2.in b/polly/lib/External/isl/test_inputs/codegen/cloog/yosr2.in
new file mode 100644
index 00000000000..a07e1492b1c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/yosr2.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/cloog/youcef.c b/polly/lib/External/isl/test_inputs/codegen/cloog/youcef.c
new file mode 100644
index 00000000000..1bc7ffd0524
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/youcef.c
@@ -0,0 +1,6 @@
+for (int c0 = 0; c0 <= 5; c0 += 1) {
+ S1(c0, c0);
+ for (int c1 = c0; c1 <= 5; c1 += 1)
+ S2(c0, c1);
+ S3(c0, 5);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/youcef.in b/polly/lib/External/isl/test_inputs/codegen/cloog/youcef.in
new file mode 100644
index 00000000000..5164abe2874
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/youcef.in
@@ -0,0 +1,3 @@
+{ 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/polly/lib/External/isl/test_inputs/codegen/cloog/youcefn.c b/polly/lib/External/isl/test_inputs/codegen/cloog/youcefn.c
new file mode 100644
index 00000000000..1107790b201
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/youcefn.c
@@ -0,0 +1,10 @@
+{
+ for (int c0 = 1; c0 <= n; c0 += 1) {
+ S1(c0, c0);
+ for (int c1 = c0; c1 <= n; c1 += 1)
+ S2(c0, c1);
+ S3(c0, n);
+ }
+ for (int c0 = n + 1; c0 <= m; c0 += 1)
+ S3(c0, n);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/cloog/youcefn.in b/polly/lib/External/isl/test_inputs/codegen/cloog/youcefn.in
new file mode 100644
index 00000000000..b21e30d7fa7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/cloog/youcefn.in
@@ -0,0 +1,3 @@
+[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/polly/lib/External/isl/test_inputs/codegen/disjuncts.c b/polly/lib/External/isl/test_inputs/codegen/disjuncts.c
new file mode 100644
index 00000000000..207e3377835
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/disjuncts.c
@@ -0,0 +1,10 @@
+for (int c0 = 0; c0 <= n; c0 += 1)
+ for (int c1 = 0; c1 <= n; c1 += 1)
+ if (c1 == n || c0 == n || c1 == 0 || c0 == 0) {
+ for (int c3 = 0; c3 <= n; c3 += 1)
+ for (int c4 = 0; c4 <= n; c4 += 1)
+ a(c0, c1, c3, c4);
+ for (int c3 = 0; c3 <= n; c3 += 1)
+ for (int c4 = 0; c4 <= n; c4 += 1)
+ b(c0, c1, c3, c4);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/disjuncts.in b/polly/lib/External/isl/test_inputs/codegen/disjuncts.in
new file mode 100644
index 00000000000..01386701c69
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/disjuncts.in
@@ -0,0 +1,7 @@
+# Check that conditions are hoisted up from the innermost loop
+[n] -> { a[i,j,k,l] -> [i,j,0,k,l] :
+ 0 <= i,j,k,l <= n and (i = 0 or j = 0 or i = n or j = n);
+ b[i,j,k,l] -> [i,j,1,k,l] :
+ 0 <= i,j,k,l <= n and (i = 0 or j = 0 or i = n or j = n) }
+{ : }
+{ [i,j,t,k,l] -> atomic[x] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/dwt.c b/polly/lib/External/isl/test_inputs/codegen/dwt.c
new file mode 100644
index 00000000000..52adb5d6e0d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/dwt.c
@@ -0,0 +1,8 @@
+for (int c0 = 0; c0 < Ncl; c0 += 1) {
+ if (Ncl >= c0 + 2 && c0 >= 1) {
+ S(c0, 28);
+ } else if (c0 == 0) {
+ S(0, 26);
+ } else
+ S(Ncl - 1, 27);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/dwt.in b/polly/lib/External/isl/test_inputs/codegen/dwt.in
new file mode 100644
index 00000000000..424b0f3fd09
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/dwt.in
@@ -0,0 +1,3 @@
+[Ncl] -> { S[j, 28] -> [j] : j <= -2 + Ncl and Ncl <= 256 and Ncl >= 40 and j >= 1; S[0, 26] -> [0] : Ncl <= 256 and Ncl >= 40; S[-1 + Ncl, 27] -> [-1 + Ncl] : Ncl <= 256 and Ncl >= 40 }
+[Ncl] -> { : Ncl >= 40 and Ncl <= 256 }
+{ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/empty.c b/polly/lib/External/isl/test_inputs/codegen/empty.c
new file mode 100644
index 00000000000..58f7b7b295b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/empty.c
@@ -0,0 +1,6 @@
+for (int c0 = 0; c0 <= 10; c0 += 1) {
+ S0(c0);
+ if (c0 == 5)
+ S2();
+ S1(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/empty.in b/polly/lib/External/isl/test_inputs/codegen/empty.in
new file mode 100644
index 00000000000..17febea4be6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/empty.in
@@ -0,0 +1,5 @@
+# Earlier versions of isl would end up with an empty partial
+# executed relation and fail to detect this emptiness.
+[M] -> { S0[i] -> [i, -M] : 0 <= i <= 10; S1[i] -> [i, 0] : 0 <= i <= 10; S2[] -> [5, 0] }
+[M] -> { : M >= 1 }
+{ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/hoist.c b/polly/lib/External/isl/test_inputs/codegen/hoist.c
new file mode 100644
index 00000000000..7ba854f8e2f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/hoist.c
@@ -0,0 +1,45 @@
+if (ni >= t0 + 1 && nj >= t1 + 1)
+ for (int c2 = 0; c2 <= min(15, nk - 1); c2 += 1) {
+ S_1(t0, t1, c2);
+ if (nj >= t1 + 17) {
+ S_1(t0, t1 + 16, c2);
+ if (nj >= t1 + 33) {
+ S_1(t0, t1 + 32, c2);
+ if (nj >= t1 + 49)
+ S_1(t0, t1 + 48, c2);
+ }
+ }
+ if (ni >= t0 + 17) {
+ S_1(t0 + 16, t1, c2);
+ if (nj >= t1 + 17) {
+ S_1(t0 + 16, t1 + 16, c2);
+ if (nj >= t1 + 33) {
+ S_1(t0 + 16, t1 + 32, c2);
+ if (nj >= t1 + 49)
+ S_1(t0 + 16, t1 + 48, c2);
+ }
+ }
+ if (ni >= t0 + 33) {
+ S_1(t0 + 32, t1, c2);
+ if (nj >= t1 + 17) {
+ S_1(t0 + 32, t1 + 16, c2);
+ if (nj >= t1 + 33) {
+ S_1(t0 + 32, t1 + 32, c2);
+ if (nj >= t1 + 49)
+ S_1(t0 + 32, t1 + 48, c2);
+ }
+ }
+ if (ni >= t0 + 49) {
+ S_1(t0 + 48, t1, c2);
+ if (nj >= t1 + 17) {
+ S_1(t0 + 48, t1 + 16, c2);
+ if (nj >= t1 + 33) {
+ S_1(t0 + 48, t1 + 32, c2);
+ if (nj >= t1 + 49)
+ S_1(t0 + 48, t1 + 48, c2);
+ }
+ }
+ }
+ }
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/hoist.in b/polly/lib/External/isl/test_inputs/codegen/hoist.in
new file mode 100644
index 00000000000..80a905200e4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/hoist.in
@@ -0,0 +1,10 @@
+# check that the shared conditions ni >= t0 + 1 and nj >= t1 + 1
+# are hoisted out of the loop
+[ni, nj, nk, t0, t1] -> { S_1[i, j, k] -> [t0, t1, k, i, j] :
+ exists (e0 = [(-t0 + i)/16], e1 = [(-t1 + j)/16]:
+ 16e0 = -t0 + i and 16e1 = -t1 + j and k >= 0 and j >= 0 and
+ j <= -1 + nj and i >= 0 and i <= -1 + ni and k <= -1 + nk and
+ ni >= 1 and nj >= 1 and nk >= 1 and j <= 63 and t1 >= 0 and
+ i <= 63 and k <= 15 and t0 >= 0 and t1 <= 15 and t0 <= 15) }
+[t0, t1] -> { : 0 <= t0, t1 <= 15 }
+{ [t0, t1, i5, i6, i7] -> unroll[x] : x >= 3}
diff --git a/polly/lib/External/isl/test_inputs/codegen/hoist2.c b/polly/lib/External/isl/test_inputs/codegen/hoist2.c
new file mode 100644
index 00000000000..24cfc639166
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/hoist2.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= 5; c0 += 1)
+ for (int c1 = t1 - 64 * b + 64; c1 <= min(70, -((c0 - 1) % 2) - c0 + 73); c1 += 64)
+ A(c0, 64 * b + c1 - 8);
diff --git a/polly/lib/External/isl/test_inputs/codegen/hoist2.in b/polly/lib/External/isl/test_inputs/codegen/hoist2.in
new file mode 100644
index 00000000000..6a29a026f20
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/hoist2.in
@@ -0,0 +1,5 @@
+# Check that the constraints hoisted from the inner loop
+# do not end up involving the inner loop iterator.
+[t1, b] -> { A[i1, i2] -> [i1, 8 - 64b + i2] : exists (e0, e1 = [(-8 + t1 - i2)/64]: 64e1 = -8 + t1 - i2 and i2 >= 1 and i2 <= 127 and 2e0 >= -3 + i1 and 2e0 >= -1 - i1 and 2e0 <= 8 - i1 and 2e0 <= 6 + i1 and 2e0 >= -65 - 64b + i2 and 2e0 >= -1 + 64b - i2 and e0 <= 1 and e0 >= 0 and 2e0 <= 62 + 64b - i2 and b <= 1 and b >= 0 and i1 >= 1 and i1 <= 2046 and t1 >= 5 and t1 <= 8) }
+[t1, b] -> { : b >= 0 and b <= 1 and t1 >= 5 and t1 <= 8 }
+[t1] -> { [i0, i1, i5, a] -> atomic[x]}
diff --git a/polly/lib/External/isl/test_inputs/codegen/lu.c b/polly/lib/External/isl/test_inputs/codegen/lu.c
new file mode 100644
index 00000000000..ecbb895d3ac
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/lu.c
@@ -0,0 +1,17 @@
+for (int c0 = 0; c0 < n - 1; c0 += 32)
+ for (int c1 = c0; c1 < n; c1 += 32)
+ for (int c2 = c0; c2 < n; c2 += 32) {
+ if (c1 >= c0 + 32) {
+ for (int c3 = c0; c3 <= min(c0 + 31, c2 + 30); c3 += 1)
+ for (int c4 = c1; c4 <= min(n - 1, c1 + 31); c4 += 1)
+ for (int c5 = max(c2, c3 + 1); c5 <= min(n - 1, c2 + 31); c5 += 1)
+ S_6(c3, c4, c5);
+ } else
+ for (int c3 = c0; c3 <= min(min(n - 2, c0 + 31), c2 + 30); c3 += 1) {
+ for (int c5 = max(c2, c3 + 1); c5 <= min(n - 1, c2 + 31); c5 += 1)
+ S_2(c3, c5);
+ for (int c4 = c3 + 1; c4 <= min(n - 1, c0 + 31); c4 += 1)
+ for (int c5 = max(c2, c3 + 1); c5 <= min(n - 1, c2 + 31); c5 += 1)
+ S_6(c3, c4, c5);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/lu.in b/polly/lib/External/isl/test_inputs/codegen/lu.in
new file mode 100644
index 00000000000..ea884f59d60
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/lu.in
@@ -0,0 +1,4 @@
+# Check that the stride of the second loop is properly detected
+[n] -> { S_2[k, j] -> [o0, o0, o2, k, k, j, 1] : exists (e0 = floor((o2)/32), e1 = floor((o0)/32): 32e0 = o2 and 32e1 = o0 and o0 <= k and o0 >= -31 + k and k >= 0 and j <= -1 + n and o2 <= j and o2 >= -31 + j and j >= 1 + k); S_6[k, i, j] -> [o0, o1, o2, k, i, j, 0] : exists (e0 = floor((o0)/32), e1 = floor((o1)/32), e2 = floor((o2)/32): 32e0 = o0 and 32e1 = o1 and 32e2 = o2 and o0 <= k and o0 >= -31 + k and o1 <= i and o1 >= -31 + i and o2 <= j and o2 >= -31 + j and k >= 0 and i >= 1 + k and j <= -1 + n and j >= 1 + k and i <= -1 + n) }
+{ : }
+{ [a,b,c,d,e,f,g] -> atomic[x] : x < 3; [a,b,c,d,e,f,g] -> separate[x] : x >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/mod.c b/polly/lib/External/isl/test_inputs/codegen/mod.c
new file mode 100644
index 00000000000..dcd8319f4ca
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/mod.c
@@ -0,0 +1,2 @@
+if (2 * (n % 100) == 3 * (m % 200))
+ A();
diff --git a/polly/lib/External/isl/test_inputs/codegen/mod.in b/polly/lib/External/isl/test_inputs/codegen/mod.in
new file mode 100644
index 00000000000..7a04c5a4158
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/mod.in
@@ -0,0 +1,4 @@
+# check that modulo constraint is generated correctly
+[n, m] -> { A[] -> [] : 2 * (n % 100) = 3 * (m % 200) }
+[n, m] -> { : m, n >= 0 }
+{}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/README b/polly/lib/External/isl/test_inputs/codegen/omega/README
new file mode 100644
index 00000000000..80e27fd462d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/README
@@ -0,0 +1,5 @@
+The tests in this directory have been adapted from the corresponding omega+
+test cases.
+The options have been derived semi-automatically and may not always
+correspond to the intended meaning of the specified "effort" in the omega+
+test cases.
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/basics-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/basics-0.c
new file mode 100644
index 00000000000..53995e9e89e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/basics-0.c
@@ -0,0 +1,8 @@
+{
+ for (int c0 = 5; c0 <= 8; c0 += 1)
+ s0(c0);
+ for (int c0 = 10; c0 <= 16; c0 += 2)
+ s0(c0);
+ for (int c0 = 20; c0 <= 25; c0 += 1)
+ s0(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/basics-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/basics-0.in
new file mode 100644
index 00000000000..025da3d30d6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/basics-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1] -> [In_1] : (In_1 >= 5 and In_1 <= 8) or (exists (e0 = [(In_1)/2]: 2e0 = In_1 and In_1 >= 10 and In_1 <= 16)) or (In_1 >= 20 and In_1 <= 25) }
+{ : }
+{ [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/basics-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/basics-1.c
new file mode 100644
index 00000000000..d3d69704165
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/basics-1.c
@@ -0,0 +1,3 @@
+for (int c0 = -9; c0 <= 9; c0 += 1)
+ for (int c1 = max(1, -c0 + 1); c1 <= min(10, -c0 + 10); c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/basics-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/basics-1.in
new file mode 100644
index 00000000000..82e109311bc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/basics-1.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : In_2 >= 1 - In_1 and In_2 >= 1 and In_2 <= 10 - In_1 and In_2 <= 10 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/chosol-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/chosol-0.c
new file mode 100644
index 00000000000..464ee493499
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/chosol-0.c
@@ -0,0 +1,9 @@
+{
+ for (int c1 = 2; c1 <= n; c1 += 1)
+ s0(c1);
+ for (int c1 = 1; c1 < n; c1 += 1) {
+ for (int c3 = c1 + 1; c3 <= n; c3 += 1)
+ s1(c3, c1);
+ s2(c1 + 1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/chosol-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/chosol-0.in
new file mode 100644
index 00000000000..81fde503f74
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/chosol-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[i] -> [0, i, 0, 0] : i >= 2 and i <= n; s1[i, j] -> [1, j, 0, i] : j >= 1 and j <= -1 + i and i <= n; s2[i] -> [1, -1 + i, 1, 0] : i >= 2 and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/chosol-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/chosol-1.c
new file mode 100644
index 00000000000..464ee493499
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/chosol-1.c
@@ -0,0 +1,9 @@
+{
+ for (int c1 = 2; c1 <= n; c1 += 1)
+ s0(c1);
+ for (int c1 = 1; c1 < n; c1 += 1) {
+ for (int c3 = c1 + 1; c3 <= n; c3 += 1)
+ s1(c3, c1);
+ s2(c1 + 1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/chosol-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/chosol-1.in
new file mode 100644
index 00000000000..b5abf2917e8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/chosol-1.in
@@ -0,0 +1,3 @@
+[n] -> { s0[i] -> [0, i, 0, 0] : i >= 2 and i <= n; s1[i, j] -> [1, j, 0, i] : j >= 1 and j <= -1 + i and i <= n; s2[i] -> [1, -1 + i, 1, 0] : i >= 2 and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 1; [i0, i1, i2, i3] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-0.c
new file mode 100644
index 00000000000..6340134fcdb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-0.c
@@ -0,0 +1,7 @@
+for (int c0 = 1; c0 <= 8; c0 += 1)
+ for (int c1 = 0; c1 <= 7; c1 += 1) {
+ if (c0 >= 2 && c0 <= 6 && c1 <= 4)
+ s1(c0, c1);
+ if (c1 + 1 >= c0)
+ s0(c0, c1);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-0.in
new file mode 100644
index 00000000000..a3fa3b1652d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-0.in
@@ -0,0 +1,3 @@
+{ s1[In_1, In_2] -> [In_1, In_2] : In_1 >= 2 and In_1 <= 6 and In_2 >= 0 and In_2 <= 4; s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_2 >= -1 + In_1 and In_2 <= 7 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 1; [i0, i1] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-1.c
new file mode 100644
index 00000000000..f4ec0e9c066
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-1.c
@@ -0,0 +1,15 @@
+for (int c0 = 1; c0 <= 8; c0 += 1) {
+ if (c0 >= 2) {
+ if (c0 <= 6)
+ for (int c1 = 0; c1 < c0 - 1; c1 += 1)
+ s1(c0, c1);
+ for (int c1 = c0 - 1; c1 <= 4; c1 += 1) {
+ s1(c0, c1);
+ s0(c0, c1);
+ }
+ for (int c1 = max(5, c0 - 1); c1 <= 7; c1 += 1)
+ s0(c0, c1);
+ } else
+ for (int c1 = 0; c1 <= 7; c1 += 1)
+ s0(1, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-1.in
new file mode 100644
index 00000000000..c6f7fa54a91
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-1.in
@@ -0,0 +1,3 @@
+{ s1[In_1, In_2] -> [In_1, In_2] : In_1 >= 2 and In_1 <= 6 and In_2 >= 0 and In_2 <= 4; s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_2 >= -1 + In_1 and In_2 <= 7 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-2.c
new file mode 100644
index 00000000000..f92e58368a5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-2.c
@@ -0,0 +1,17 @@
+{
+ for (int c1 = 0; c1 <= 7; c1 += 1)
+ s0(1, c1);
+ for (int c0 = 2; c0 <= 6; c0 += 1) {
+ for (int c1 = 0; c1 < c0 - 1; c1 += 1)
+ s1(c0, c1);
+ for (int c1 = c0 - 1; c1 <= 4; c1 += 1) {
+ s1(c0, c1);
+ s0(c0, c1);
+ }
+ for (int c1 = 5; c1 <= 7; c1 += 1)
+ s0(c0, c1);
+ }
+ for (int c0 = 7; c0 <= 8; c0 += 1)
+ for (int c1 = c0 - 1; c1 <= 7; c1 += 1)
+ s0(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-2.in
new file mode 100644
index 00000000000..03a7b5df3a3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/code_gen-2.in
@@ -0,0 +1,3 @@
+{ s1[In_1, In_2] -> [In_1, In_2] : In_1 >= 2 and In_1 <= 6 and In_2 >= 0 and In_2 <= 4; s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_2 >= -1 + In_1 and In_2 <= 7 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= -1; [i0, i1] -> separate[o0] : o0 >= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/collard-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/collard-0.c
new file mode 100644
index 00000000000..413fbda482f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/collard-0.c
@@ -0,0 +1,16 @@
+{
+ for (int c4 = 1; c4 <= n; c4 += 1)
+ s2(c4);
+ for (int c1 = 1; c1 < n; c1 += 1) {
+ for (int c4 = 0; c4 < n - c1; c4 += 1)
+ s0(c1, n - c4);
+ for (int c3 = 0; c3 < n - c1; c3 += 1)
+ for (int c4 = c1 + 1; c4 <= n; c4 += 1)
+ s1(c1, n - c3, c4);
+ }
+ for (int c1 = 1; c1 <= n; c1 += 1) {
+ s4(c1);
+ for (int c3 = c1 + 1; c3 <= n; c3 += 1)
+ s3(c3, c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/collard-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/collard-0.in
new file mode 100644
index 00000000000..d803da7574c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/collard-0.in
@@ -0,0 +1,3 @@
+[n] -> { s1[i, j, k] -> [1, i, 1, n - j, k] : j >= 1 + i and k >= 1 + i and i >= 1 and j <= n and k <= n; s2[i] -> [0, 0, 0, 0, i] : i >= 1 and i <= n; s4[i] -> [2, i, 0, 0, 0] : i >= 1 and i <= n; s0[i, j] -> [1, i, 0, n - i, n - j] : i >= 1 and j >= 1 + i and j <= n; s3[i, j] -> [2, j, 1, i, j] : j >= 1 and j <= -1 + i and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 4; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-0.c
new file mode 100644
index 00000000000..3e403ddcd33
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-0.c
@@ -0,0 +1,2 @@
+for (int c0 = 0; c0 <= 99; c0 += 1)
+ s0(c0 % 10, c0 / 10);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-0.in
new file mode 100644
index 00000000000..0c2b107517a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [i + 10j] : i >= 0 and i <= 9 and j >= 0 and j <= 9 }
+{ : }
+{ [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-1.c
new file mode 100644
index 00000000000..a3e4458f146
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-1.c
@@ -0,0 +1,2 @@
+for (int c0 = 0; c0 <= 99; c0 += 1)
+ s0(c0, c0 % 10, (c0 + 10) / 10 - 1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-1.in
new file mode 100644
index 00000000000..e0c72739736
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/dagstuhl1-1.in
@@ -0,0 +1,3 @@
+{s0[p,i,j] -> [p,i,j] : 0 <= i,j <= 9 && p = i+10j}
+{ : }
+{ [p,i,j] -> separate[o0] : o0 >= 2; [p,i,j] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc1-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-0.c
new file mode 100644
index 00000000000..fbec13a719b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-0.c
@@ -0,0 +1,7 @@
+for (int c0 = 0; c0 < n - 1; c0 += 1) {
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ s0(c0 + 1, n - c3);
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ for (int c6 = c0 + 2; c6 <= n; c6 += 1)
+ s1(c0 + 1, n - c3, c6);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc1-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-0.in
new file mode 100644
index 00000000000..688f9580d9b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[i, j] -> [-1 + i, 0, n - i, n - j] : i >= 1 and j >= 1 + i and j <= n; s1[i, j, k] -> [-1 + i, 1, n - i, n - j] : j >= 1 + i and k >= 1 + i and i >= 1 and j <= n and k <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc1-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-1.c
new file mode 100644
index 00000000000..768a04fbc4d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-1.c
@@ -0,0 +1,17 @@
+{
+ for (int c3 = 1; c3 <= n; c3 += 1)
+ s2(c3);
+ for (int c0 = 0; c0 < n - 1; c0 += 1) {
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ s0(c0 + 1, n - c3);
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ for (int c6 = c0 + 2; c6 <= n; c6 += 1)
+ s1(c0 + 1, n - c3, c6);
+ }
+ for (int c0 = n - 1; c0 < 2 * n - 1; c0 += 1) {
+ if (c0 >= n)
+ for (int c2 = -n + c0 + 2; c2 <= n; c2 += 1)
+ s3(c2, -n + c0 + 1);
+ s4(-n + c0 + 2);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc1-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-1.in
new file mode 100644
index 00000000000..c9135fff76c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-1.in
@@ -0,0 +1,3 @@
+[n] -> { s1[i, j, k] -> [-1 + i, 1, n - i, n - j] : j >= 1 + i and k >= 1 + i and i >= 1 and j <= n and k <= n; s3[i, j] -> [-1 + n + j, 0, i, j] : j >= 1 and j <= -1 + i and i <= n; s4[i] -> [-2 + n + i, 1, 0, 0] : i >= 1 and i <= n; s0[i, j] -> [-1 + i, 0, n - i, n - j] : i >= 1 and j >= 1 + i and j <= n; s2[i] -> [0, 0, 0, i] : i >= 1 and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc1-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-2.c
new file mode 100644
index 00000000000..768a04fbc4d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-2.c
@@ -0,0 +1,17 @@
+{
+ for (int c3 = 1; c3 <= n; c3 += 1)
+ s2(c3);
+ for (int c0 = 0; c0 < n - 1; c0 += 1) {
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ s0(c0 + 1, n - c3);
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ for (int c6 = c0 + 2; c6 <= n; c6 += 1)
+ s1(c0 + 1, n - c3, c6);
+ }
+ for (int c0 = n - 1; c0 < 2 * n - 1; c0 += 1) {
+ if (c0 >= n)
+ for (int c2 = -n + c0 + 2; c2 <= n; c2 += 1)
+ s3(c2, -n + c0 + 1);
+ s4(-n + c0 + 2);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc1-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-2.in
new file mode 100644
index 00000000000..6d9a1626a5b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc1-2.in
@@ -0,0 +1,3 @@
+[n] -> { s1[i, j, k] -> [-1 + i, 1, n - i, n - j] : j >= 1 + i and k >= 1 + i and i >= 1 and j <= n and k <= n; s3[i, j] -> [-1 + n + j, 0, i, j] : j >= 1 and j <= -1 + i and i <= n; s4[i] -> [-2 + n + i, 1, 0, 0] : i >= 1 and i <= n; s0[i, j] -> [-1 + i, 0, n - i, n - j] : i >= 1 and j >= 1 + i and j <= n; s2[i] -> [0, 0, 0, i] : i >= 1 and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 1; [i0, i1, i2, i3] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc2-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/fc2-0.c
new file mode 100644
index 00000000000..fbec13a719b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc2-0.c
@@ -0,0 +1,7 @@
+for (int c0 = 0; c0 < n - 1; c0 += 1) {
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ s0(c0 + 1, n - c3);
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ for (int c6 = c0 + 2; c6 <= n; c6 += 1)
+ s1(c0 + 1, n - c3, c6);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc2-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/fc2-0.in
new file mode 100644
index 00000000000..688f9580d9b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc2-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[i, j] -> [-1 + i, 0, n - i, n - j] : i >= 1 and j >= 1 + i and j <= n; s1[i, j, k] -> [-1 + i, 1, n - i, n - j] : j >= 1 + i and k >= 1 + i and i >= 1 and j <= n and k <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc2-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/fc2-1.c
new file mode 100644
index 00000000000..768a04fbc4d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc2-1.c
@@ -0,0 +1,17 @@
+{
+ for (int c3 = 1; c3 <= n; c3 += 1)
+ s2(c3);
+ for (int c0 = 0; c0 < n - 1; c0 += 1) {
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ s0(c0 + 1, n - c3);
+ for (int c3 = 0; c3 < n - c0 - 1; c3 += 1)
+ for (int c6 = c0 + 2; c6 <= n; c6 += 1)
+ s1(c0 + 1, n - c3, c6);
+ }
+ for (int c0 = n - 1; c0 < 2 * n - 1; c0 += 1) {
+ if (c0 >= n)
+ for (int c2 = -n + c0 + 2; c2 <= n; c2 += 1)
+ s3(c2, -n + c0 + 1);
+ s4(-n + c0 + 2);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/fc2-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/fc2-1.in
new file mode 100644
index 00000000000..c9135fff76c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/fc2-1.in
@@ -0,0 +1,3 @@
+[n] -> { s1[i, j, k] -> [-1 + i, 1, n - i, n - j] : j >= 1 + i and k >= 1 + i and i >= 1 and j <= n and k <= n; s3[i, j] -> [-1 + n + j, 0, i, j] : j >= 1 and j <= -1 + i and i <= n; s4[i] -> [-2 + n + i, 1, 0, 0] : i >= 1 and i <= n; s0[i, j] -> [-1 + i, 0, n - i, n - j] : i >= 1 and j >= 1 + i and j <= n; s2[i] -> [0, 0, 0, i] : i >= 1 and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-0.c
new file mode 100644
index 00000000000..db7f43707c3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-0.c
@@ -0,0 +1,2 @@
+for (int c0 = 4 * floord(m - 1, 12) + 4; c0 <= floord(n, 3); c0 += 4)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-0.in
new file mode 100644
index 00000000000..45faa57c37d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-0.in
@@ -0,0 +1,3 @@
+[m, n] -> { s0[In_1] -> [In_1] : exists (e0 = [(In_1)/4]: 4e0 = In_1 and 3In_1 >= m and 3In_1 <= n) }
+{ : }
+[m, n] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-1.c
new file mode 100644
index 00000000000..bc879829073
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-1.c
@@ -0,0 +1,2 @@
+for (int c0 = floord(m, 4); c0 <= n; c0 += 1)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-1.in
new file mode 100644
index 00000000000..7ae72abb93e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-1.in
@@ -0,0 +1,3 @@
+[m, n] -> { s0[In_1] -> [In_1] : 4In_1 >= -3 + m and In_1 <= n }
+{ : }
+[m, n] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-2.c
new file mode 100644
index 00000000000..ff5f3c33745
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-2.c
@@ -0,0 +1,2 @@
+for (int c0 = 4 * floord(m, 4); c0 <= n; c0 += 1)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-2.in
new file mode 100644
index 00000000000..73e1b8eb554
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-2.in
@@ -0,0 +1,3 @@
+[m, n] -> { s0[In_1] -> [In_1] : exists (e0 = [(m)/4]: 4e0 <= m and 4e0 >= -3 + m and 4e0 <= In_1 and In_1 <= n) }
+{ : }
+[m, n] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-3.c b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-3.c
new file mode 100644
index 00000000000..e3c9728de91
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-3.c
@@ -0,0 +1,2 @@
+for (int c0 = 3 * floord(m, 3) + 4 * floord(m, 4); c0 <= n; c0 += 1)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-3.in b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-3.in
new file mode 100644
index 00000000000..1ff7e2c3861
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-3.in
@@ -0,0 +1,3 @@
+[m, n] -> { s0[In_1] -> [In_1] : exists (e0 = [(m)/3], e1 = [(m)/4]: 4e1 <= m and 3e0 <= m and 4e1 >= -3 + m and 3e0 >= -2 + m and In_1 <= n and 4e1 <= In_1 - 3e0) }
+{ : }
+[m, n] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-4.c b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-4.c
new file mode 100644
index 00000000000..dc6ba0ae941
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-4.c
@@ -0,0 +1,3 @@
+if (n >= 3 * floord(n + 1, 3))
+ for (int c0 = m; c0 <= 5 * floord(n + 1, 3); c0 += 1)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-4.in b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-4.in
new file mode 100644
index 00000000000..7a726c39379
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-4.in
@@ -0,0 +1,3 @@
+[n, m] -> { s0[In_1] -> [In_1] : exists (e0 = [(1 + n)/3]: In_1 >= m and 5e0 >= In_1 and 3e0 <= n and 3e0 >= -1 + n) }
+{ : }
+[n, m] -> { [i0] -> atomic[o0] : o0 <= -1; [i0] -> separate[o0] : o0 >= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-5.c b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-5.c
new file mode 100644
index 00000000000..3e9f47d4ccc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-5.c
@@ -0,0 +1,2 @@
+for (int c0 = 4 * floord(m, 32); c0 <= n; c0 += 1)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-5.in b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-5.in
new file mode 100644
index 00000000000..cc24250ddaa
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-5.in
@@ -0,0 +1,3 @@
+[m, n] -> { s0[In_1] -> [In_1] : exists (e0 = [(m)/32]: 32e0 <= m and 32e0 >= -31 + m and 4e0 <= In_1 and In_1 <= n) }
+{ : }
+[m, n] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-6.c b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-6.c
new file mode 100644
index 00000000000..743b0c938c5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-6.c
@@ -0,0 +1,3 @@
+if (m >= 8 * floord(m + 1, 8))
+ for (int c0 = 4 * floord(m + 1, 32); c0 <= n; c0 += 1)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-6.in b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-6.in
new file mode 100644
index 00000000000..78d2be97e2a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/floor_bound-6.in
@@ -0,0 +1,3 @@
+[m, n] -> { s0[In_1] -> [In_1] : exists (e0 = [(1 + m)/8], e1 = [(e0)/4]: 8e0 <= m and 8e0 >= -6 + m and 4e1 <= In_1 and In_1 <= n and 32e1 <= 1 + m and 32e1 >= -30 + m) }
+{ : }
+[m, n] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gc-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/gc-0.c
new file mode 100644
index 00000000000..d8234a378ce
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gc-0.c
@@ -0,0 +1,2 @@
+for (int c0 = 2; c0 <= 8; c0 += 2)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gc-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/gc-0.in
new file mode 100644
index 00000000000..063e35361f1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gc-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1] -> [In_1] : exists (e0 = [(In_1)/2]: 2e0 = In_1 and In_1 >= 2 and In_1 <= 8) }
+{ : }
+{ [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ge-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/ge-0.c
new file mode 100644
index 00000000000..1c22a5d9b0a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ge-0.c
@@ -0,0 +1,7 @@
+for (int c0 = 2; c0 <= n; c0 += 1)
+ for (int c1 = 1; c1 <= n; c1 += 1) {
+ for (int c3 = 1; c3 < min(c0, c1); c3 += 1)
+ s1(c3, c0, c1);
+ if (c0 >= c1 + 1)
+ s0(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ge-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/ge-0.in
new file mode 100644
index 00000000000..edd7c36ee61
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ge-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[k, i] -> [i, k, 1, 0] : k >= 1 and i >= 1 + k and i <= n; s1[k, i, j] -> [i, j, 0, k] : i >= 1 + k and j >= 1 + k and k >= 1 and i <= n and j <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ge-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/ge-1.c
new file mode 100644
index 00000000000..1c22a5d9b0a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ge-1.c
@@ -0,0 +1,7 @@
+for (int c0 = 2; c0 <= n; c0 += 1)
+ for (int c1 = 1; c1 <= n; c1 += 1) {
+ for (int c3 = 1; c3 < min(c0, c1); c3 += 1)
+ s1(c3, c0, c1);
+ if (c0 >= c1 + 1)
+ s0(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ge-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/ge-1.in
new file mode 100644
index 00000000000..4a08142d506
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ge-1.in
@@ -0,0 +1,3 @@
+[n] -> { s0[k, i] -> [i, k, 1, 0] : k >= 1 and i >= 1 + k and i <= n; s1[k, i, j] -> [i, j, 0, k] : i >= 1 + k and j >= 1 + k and k >= 1 and i <= n and j <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 1; [i0, i1, i2, i3] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/gist-0.c
new file mode 100644
index 00000000000..4608d61d8db
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= n; c0 += 4)
+ for (int c1 = c0; c1 <= n; c1 += 3)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/gist-0.in
new file mode 100644
index 00000000000..b2f3366f8d3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-1 + In_1)/4], e1 = [(-3 - In_1 + 4In_2)/12]: 4e0 = -1 + In_1 and 12e1 = -3 - In_1 + 4In_2 and In_1 >= 1 and In_2 >= In_1 and In_2 <= n) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/gist-1.c
new file mode 100644
index 00000000000..8f1c692c8ea
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-1.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= n; c0 += 4)
+ for (int c1 = c0; c1 <= n; c1 += 8)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/gist-1.in
new file mode 100644
index 00000000000..ecbf8e7b06e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-1.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-1 + In_1)/4], e1 = [(-In_1 + In_2)/8]: 4e0 = -1 + In_1 and 8e1 = -In_1 + In_2 and In_1 >= 1 and In_2 >= In_1 and In_2 <= n) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/gist-2.c
new file mode 100644
index 00000000000..317498782d4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-2.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= n; c0 += 256)
+ for (int c1 = c0; c1 <= n; c1 += 8)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/gist-2.in
new file mode 100644
index 00000000000..63edb52b5f7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-2.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-1 + In_1)/256], e1 = [(-1 + In_2)/8]: 256e0 = -1 + In_1 and 8e1 = -1 + In_2 and In_1 >= 1 and In_2 >= In_1 and In_2 <= n) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-3.c b/polly/lib/External/isl/test_inputs/codegen/omega/gist-3.c
new file mode 100644
index 00000000000..513f385c3c5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-3.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 < n; c0 += 4)
+ for (int c1 = c0 + 1; c1 <= n; c1 += 6)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-3.in b/polly/lib/External/isl/test_inputs/codegen/omega/gist-3.in
new file mode 100644
index 00000000000..43cac1243b8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-3.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-1 + In_1)/4], e1 = [(-1 - In_1 + In_2)/6]: 4e0 = -1 + In_1 and 6e1 = -1 - In_1 + In_2 and In_1 >= 1 and In_2 >= 1 + In_1 and In_2 <= n) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-4.c b/polly/lib/External/isl/test_inputs/codegen/omega/gist-4.c
new file mode 100644
index 00000000000..a6f6fd001b0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-4.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= n; c0 += 6)
+ for (int c1 = c0; c1 <= n; c1 += 4)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-4.in b/polly/lib/External/isl/test_inputs/codegen/omega/gist-4.in
new file mode 100644
index 00000000000..f67f837d598
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-4.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-1 + In_1)/6], e1 = [(-2 - In_1 + 3In_2)/12]: 6e0 = -1 + In_1 and 12e1 = -2 - In_1 + 3In_2 and In_1 >= 1 and In_2 >= In_1 and In_2 <= n) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-5.c b/polly/lib/External/isl/test_inputs/codegen/omega/gist-5.c
new file mode 100644
index 00000000000..c2df61fb4e1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-5.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= n; c0 += 12)
+ for (int c1 = c0; c1 <= n; c1 += 8)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/gist-5.in b/polly/lib/External/isl/test_inputs/codegen/omega/gist-5.in
new file mode 100644
index 00000000000..8b192c132fd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/gist-5.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-1 + In_1)/12], e1 = [(-2 - In_1 + 3In_2)/24]: 12e0 = -1 + In_1 and 24e1 = -2 - In_1 + 3In_2 and In_1 >= 1 and In_2 >= In_1 and In_2 <= n) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/guard1-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/guard1-0.c
new file mode 100644
index 00000000000..555d644f561
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/guard1-0.c
@@ -0,0 +1,2 @@
+if ((n - m + 2) % 3 == 0)
+ s0(n, m);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/guard1-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/guard1-0.in
new file mode 100644
index 00000000000..52964e26489
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/guard1-0.in
@@ -0,0 +1,3 @@
+[n, m] -> { s0[n, m] -> [n, m] : exists (e0 = [(-2 - n + m)/3]: 3e0 = -2 - n + m) }
+{ : }
+[n, m] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/guard1-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/guard1-1.c
new file mode 100644
index 00000000000..335c1b838fe
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/guard1-1.c
@@ -0,0 +1,2 @@
+if ((n - m + 1) % 2 == 0)
+ s0(n, m);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/guard1-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/guard1-1.in
new file mode 100644
index 00000000000..141f585d358
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/guard1-1.in
@@ -0,0 +1,3 @@
+[n, m] -> { s0[n, m] -> [n, m] : exists (e0 = [(-1 - n + m)/2]: 2e0 = -1 - n + m) }
+{ : }
+[n, m] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/hpf-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/hpf-0.c
new file mode 100644
index 00000000000..c676558941f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/hpf-0.c
@@ -0,0 +1,4 @@
+if (P2 >= 0 && P2 <= 3 && P1 == P2)
+ for (int c0 = 0; c0 <= min(2, -P2 + 4); c0 += 1)
+ for (int c2 = (-P2 - c0 + 6) % 3; c2 <= 3; c2 += 3)
+ s0(c0, c0, c2, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/hpf-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/hpf-0.in
new file mode 100644
index 00000000000..e697792ea66
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/hpf-0.in
@@ -0,0 +1,3 @@
+[P1, P2] -> { s0[In_1, In_1, In_3, In_3] -> [In_1, In_1, In_3, In_3] : exists (e0 = [(-2P2 - 2In_1 + In_3)/3]: P1 = P2 and 3e0 = -2P2 - 2In_1 + In_3 and P2 >= 0 and P2 <= 3 and In_1 <= 4 - P2 and In_1 >= 0 and In_1 <= 2 and In_3 >= 0 and In_3 <= 3) }
+{ : }
+[P2, P1] -> { [i0, i1, i2, i3] -> separate[o0] : o0 >= 3; [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-0.c
new file mode 100644
index 00000000000..bc8d3370a6d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-0.c
@@ -0,0 +1,12 @@
+if (m <= 1) {
+ for (int c0 = 1; c0 <= n; c0 += 1)
+ for (int c1 = 1; c1 <= n; c1 += 1)
+ s2(c0, c1);
+} else if (n >= m + 1) {
+ for (int c0 = 1; c0 <= n; c0 += 1)
+ for (int c1 = 1; c1 <= n; c1 += 1)
+ s0(c0, c1);
+} else
+ for (int c0 = 1; c0 <= n; c0 += 1)
+ for (int c1 = 1; c1 <= n; c1 += 1)
+ s1(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-0.in
new file mode 100644
index 00000000000..93f3f7c2bc8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-0.in
@@ -0,0 +1,3 @@
+[n, m] -> { s2[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= n and In_2 >= 1 and In_2 <= n and m <= 1; s0[In_1, In_2] -> [In_1, In_2] : m >= 2 and m <= -1 + n and In_1 >= 1 and In_1 <= n and In_2 >= 1 and In_2 <= n; s1[In_1, In_2] -> [In_1, In_2] : In_1 <= n and In_2 <= n and m >= n and In_1 >= 1 and In_2 >= 1 and m >= 2 }
+{ : }
+[n, m] -> { [i0, i1] -> atomic[o0] : o0 <= 1; [i0, i1] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-1.c
new file mode 100644
index 00000000000..18ca3702186
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-1.c
@@ -0,0 +1,9 @@
+for (int c0 = 1; c0 <= 100; c0 += 1) {
+ if (n >= 2)
+ s0(c0);
+ for (int c1 = 1; c1 <= 100; c1 += 1) {
+ if (n >= 2)
+ s1(c0, c1);
+ s2(c0, c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-1.in
new file mode 100644
index 00000000000..0258439fff7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-1.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1] -> [In_1,0] : In_1 >= 1 and In_1 <= 100 and n >= 2; s1[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and n >= 2; s2[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 }
+{ : }
+[n] -> { [i0,i1] -> separate[o0] : o0 >= 2; [i0,i1] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-2.c
new file mode 100644
index 00000000000..d1ce579aa97
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-2.c
@@ -0,0 +1,11 @@
+for (int c0 = 1; c0 <= 100; c0 += 1) {
+ if (n >= 2) {
+ s0(c0);
+ for (int c1 = 1; c1 <= 100; c1 += 1) {
+ s1(c0, c1);
+ s2(c0, c1);
+ }
+ } else
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ s2(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-2.in
new file mode 100644
index 00000000000..0a220ee3a54
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-2.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1] -> [In_1,0] : In_1 >= 1 and In_1 <= 100 and n >= 2; s1[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and n >= 2; s2[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 }
+{ : }
+[n] -> { [i0,i1] -> separate[o0] : o0 >= 1; [i0,i1] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-3.c b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-3.c
new file mode 100644
index 00000000000..570cbe5556f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-3.c
@@ -0,0 +1,12 @@
+if (n >= 2) {
+ for (int c0 = 1; c0 <= 100; c0 += 1) {
+ s0(c0);
+ for (int c1 = 1; c1 <= 100; c1 += 1) {
+ s1(c0, c1);
+ s2(c0, c1);
+ }
+ }
+} else
+ for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ s2(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-3.in b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-3.in
new file mode 100644
index 00000000000..a0315f1a7b1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-3.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1] -> [In_1,0] : In_1 >= 1 and In_1 <= 100 and n >= 2; s1[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and n >= 2; s2[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 }
+{ : }
+[n] -> { [i0,i1] -> separate[o0] : o0 >= 0; [i0,i1] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-4.c b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-4.c
new file mode 100644
index 00000000000..fa81628ade8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-4.c
@@ -0,0 +1,7 @@
+for (int c0 = 4; c0 <= 100; c0 += 4) {
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ s0(c0, c1);
+ if (c0 >= 8 && c0 <= 96)
+ for (int c1 = 10; c1 <= 100; c1 += 1)
+ s1(c0 + 2, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-4.in b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-4.in
new file mode 100644
index 00000000000..30dc8dc24d2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-4.in
@@ -0,0 +1,3 @@
+{ s1[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-2 + In_1)/4]: 4e0 = -2 + In_1 and In_1 >= 10 and In_1 <= 98 and In_2 >= 10 and In_2 <= 100); s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(In_1)/4]: 4e0 = In_1 and In_1 >= 4 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100) }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 1; [i0, i1] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-5.c b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-5.c
new file mode 100644
index 00000000000..fa81628ade8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-5.c
@@ -0,0 +1,7 @@
+for (int c0 = 4; c0 <= 100; c0 += 4) {
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ s0(c0, c1);
+ if (c0 >= 8 && c0 <= 96)
+ for (int c1 = 10; c1 <= 100; c1 += 1)
+ s1(c0 + 2, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/if_then-5.in b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-5.in
new file mode 100644
index 00000000000..87a40f4733a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/if_then-5.in
@@ -0,0 +1,3 @@
+{ s1[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-2 + In_1)/4]: 4e0 = -2 + In_1 and In_1 >= 10 and In_1 <= 98 and In_2 >= 10 and In_2 <= 100); s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(In_1)/4]: 4e0 = In_1 and In_1 >= 4 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100) }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter1-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter1-0.c
new file mode 100644
index 00000000000..c15c86b2f6b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter1-0.c
@@ -0,0 +1,2 @@
+for (int c0 = 2; c0 <= 9; c0 += 1)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter1-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter1-0.in
new file mode 100644
index 00000000000..8b876786027
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter1-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1] -> [In_1] : In_1 >= 2 and In_1 <= 9 }
+{ : }
+{ [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter2-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter2-0.c
new file mode 100644
index 00000000000..5506929a106
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter2-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= 10; c0 += 1)
+ for (int c1 = 10; c1 <= 100; c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter2-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter2-0.in
new file mode 100644
index 00000000000..16ea0df1805
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter2-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= 10 and In_2 >= 10 and In_2 <= 100 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter3-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter3-0.c
new file mode 100644
index 00000000000..43b6e3aa0f6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter3-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 2; c0 <= 8; c0 += 1)
+ for (int c1 = c0 + 1; c1 <= 9; c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter3-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter3-0.in
new file mode 100644
index 00000000000..fc26493e28e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter3-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 2 and In_2 >= 1 + In_1 and In_2 <= 9 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter4-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter4-0.c
new file mode 100644
index 00000000000..65e37023ff3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter4-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 2; c0 <= 9; c0 += 1)
+ for (int c1 = c0 + 1; c1 <= 2 * c0; c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter4-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter4-0.in
new file mode 100644
index 00000000000..94001d5251d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter4-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 2 and In_2 >= 1 + In_1 and In_2 <= 2In_1 and In_1 <= 9 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter5-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter5-0.c
new file mode 100644
index 00000000000..66c7c0971f8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter5-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 2; c0 <= 9; c0 += 1)
+ for (int c1 = c0 + 1; c1 <= min(16, 2 * c0); c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter5-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter5-0.in
new file mode 100644
index 00000000000..1e4f739447e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter5-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 2 and In_2 >= 1 + In_1 and In_2 <= 2In_1 and In_2 <= 16 and In_1 <= 9 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter6-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter6-0.c
new file mode 100644
index 00000000000..a0346b69cdd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter6-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= 5; c0 += 1)
+ for (int c1 = 12; c1 <= 17; c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter6-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter6-0.in
new file mode 100644
index 00000000000..1b8ed2b3c04
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter6-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 1 and In_1 <= 5 and In_2 >= 12 and In_2 <= 17 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter6-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter6-1.c
new file mode 100644
index 00000000000..daccd39be7a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter6-1.c
@@ -0,0 +1,2 @@
+for (int c0 = 46; c0 <= 70; c0 += 12)
+ s0(c0, (17 * c0 - 170) / 12);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter6-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter6-1.in
new file mode 100644
index 00000000000..4ee2ad6608d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter6-1.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, o1] : 12In_2 = -170 + 17In_1 and 12o1 = -170 + 17In_1 and In_1 >= 46 and In_1 <= 70 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter7-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter7-0.c
new file mode 100644
index 00000000000..2606890886e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter7-0.c
@@ -0,0 +1,2 @@
+for (int c0 = 1; c0 <= 3; c0 += 2)
+ s0(c0, (-3 * c0 + 15) / 2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter7-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter7-0.in
new file mode 100644
index 00000000000..90d3efb7de0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter7-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, o1] : 2In_2 = 15 - 3In_1 and 2o1 = 15 - 3In_1 and In_1 <= 3 and In_1 >= 1 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter8-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter8-0.c
new file mode 100644
index 00000000000..a33fc49b76a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter8-0.c
@@ -0,0 +1,2 @@
+for (int c0 = max(exprVar2 + 1, exprVar2 + 8 * floord(-exprVar2 + exprVar1 - 1, 8) + 9); c0 <= 16; c0 += 8)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter8-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter8-0.in
new file mode 100644
index 00000000000..682928048df
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter8-0.in
@@ -0,0 +1,3 @@
+[exprVar2, exprVar3, exprVar1] -> { s0[In_1] -> [In_1] : exists (e0 = [(-1 - exprVar2 + In_1)/8]: exprVar3 = 0 and 8e0 = -1 - exprVar2 + In_1 and exprVar1 >= 1 and In_1 >= 1 + exprVar1 and In_1 <= 16 and In_1 >= 1 + exprVar2) }
+[exprVar3, exprVar2, exprVar1] -> { : exists (e0: exprVar3 = 0 and 8e0 >= -15 + exprVar2 and exprVar2 <= 15 and exprVar1 >= 1 and 8e0 <= exprVar2 - exprVar1) }
+[exprVar2, exprVar3, exprVar1] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter9-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/iter9-0.c
new file mode 100644
index 00000000000..9b8522ba7d8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter9-0.c
@@ -0,0 +1,11 @@
+for (int c0 = 1; c0 <= 15; c0 += 1) {
+ if (((-exprVar1 + 15) % 8) + c0 <= 15) {
+ s4(c0);
+ s0(c0);
+ s3(c0);
+ s2(c0);
+ s1(c0);
+ }
+ if (((-exprVar1 + 15) % 8) + c0 <= 15 || (c0 >= exprVar1 + 1 && (exprVar1 - c0 + 1) % 8 == 0))
+ s5(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/iter9-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/iter9-0.in
new file mode 100644
index 00000000000..9596d73727c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/iter9-0.in
@@ -0,0 +1,3 @@
+[exprVar2, exprVar1] -> { s3[In_1] -> [In_1] : exists (e0: exprVar2 = 0 and 8e0 >= -15 + exprVar1 and exprVar1 <= 15 and In_1 >= 1 and 8e0 <= exprVar1 - In_1); s4[In_1] -> [In_1] : exists (e0: exprVar2 = 0 and 8e0 >= -15 + exprVar1 and exprVar1 <= 15 and In_1 >= 1 and 8e0 <= exprVar1 - In_1); s1[In_1] -> [In_1] : exists (e0: exprVar2 = 0 and 8e0 >= -15 + exprVar1 and exprVar1 <= 15 and In_1 >= 1 and 8e0 <= exprVar1 - In_1); s5[In_1] -> [In_1] : (exists (e0: exprVar2 = 0 and 8e0 >= -15 + exprVar1 and exprVar1 <= 15 and In_1 >= 1 and 8e0 <= exprVar1 - In_1)) or (exists (e0 = [(-1 - exprVar1 + In_1)/8]: exprVar2 = 0 and 8e0 = -1 - exprVar1 + In_1 and In_1 >= 1 + exprVar1 and In_1 >= 1 and In_1 <= 15)); s0[In_1] -> [In_1] : exists (e0: exprVar2 = 0 and 8e0 >= -15 + exprVar1 and exprVar1 <= 15 and In_1 >= 1 and 8e0 <= exprVar1 - In_1); s2[In_1] -> [In_1] : exists (e0: exprVar2 = 0 and 8e0 >= -15 + exprVar1 and exprVar1 <= 15 and In_1 >= 1 and 8e0 <= exprVar1 - In_1) }
+[exprVar2, exprVar1] -> { : exprVar2 = 0 and exprVar1 <= 15 }
+[exprVar2, exprVar1] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur00-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lefur00-0.c
new file mode 100644
index 00000000000..aab26208811
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur00-0.c
@@ -0,0 +1,5 @@
+for (int c0 = 0; c0 <= 15; c0 += 1)
+ for (int c1 = max(2 * c0 - 15, c0 / 2); c1 <= min(15, c0 + 1); c1 += 1)
+ for (int c2 = max(max(max(1, 67 * c0 - (c0 + 1) / 3), 67 * c1 - (c1 + 2) / 3), 133 * c0 - 67 * c1 + (c0 + c1 + 1) / 3 - 66); c2 <= min(min(1000, 100 * c0 + 99), 133 * c0 - 67 * c1 + floord(c0 + c1 - 1, 3) + 133); c2 += 1)
+ for (int c3 = max(max(c2, 200 * c0 - c2), 100 * c1 + (c2 + 1) / 2); c3 <= min(min(2 * c2 + 1, 200 * c0 - c2 + 199), 100 * c1 + (c2 + 1) / 2 + 99); c3 += 1)
+ s0(c0, c1, c2, c3);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur00-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lefur00-0.in
new file mode 100644
index 00000000000..cf99c811b7e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur00-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4] -> [In_1, In_2, In_3, In_4] : In_3 >= 1 and In_4 >= In_3 and In_4 <= 1 + 2In_3 and In_3 <= 1000 and In_4 >= 200In_1 - In_3 and In_4 <= 199 + 200In_1 - In_3 and 2In_4 >= 200In_2 + In_3 and 2In_4 <= 199 + 200In_2 + In_3 }
+{ : }
+{ [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-0.c
new file mode 100644
index 00000000000..aab26208811
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-0.c
@@ -0,0 +1,5 @@
+for (int c0 = 0; c0 <= 15; c0 += 1)
+ for (int c1 = max(2 * c0 - 15, c0 / 2); c1 <= min(15, c0 + 1); c1 += 1)
+ for (int c2 = max(max(max(1, 67 * c0 - (c0 + 1) / 3), 67 * c1 - (c1 + 2) / 3), 133 * c0 - 67 * c1 + (c0 + c1 + 1) / 3 - 66); c2 <= min(min(1000, 100 * c0 + 99), 133 * c0 - 67 * c1 + floord(c0 + c1 - 1, 3) + 133); c2 += 1)
+ for (int c3 = max(max(c2, 200 * c0 - c2), 100 * c1 + (c2 + 1) / 2); c3 <= min(min(2 * c2 + 1, 200 * c0 - c2 + 199), 100 * c1 + (c2 + 1) / 2 + 99); c3 += 1)
+ s0(c0, c1, c2, c3);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-0.in
new file mode 100644
index 00000000000..cf99c811b7e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4] -> [In_1, In_2, In_3, In_4] : In_3 >= 1 and In_4 >= In_3 and In_4 <= 1 + 2In_3 and In_3 <= 1000 and In_4 >= 200In_1 - In_3 and In_4 <= 199 + 200In_1 - In_3 and 2In_4 >= 200In_2 + In_3 and 2In_4 <= 199 + 200In_2 + In_3 }
+{ : }
+{ [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-1.c
new file mode 100644
index 00000000000..aab26208811
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-1.c
@@ -0,0 +1,5 @@
+for (int c0 = 0; c0 <= 15; c0 += 1)
+ for (int c1 = max(2 * c0 - 15, c0 / 2); c1 <= min(15, c0 + 1); c1 += 1)
+ for (int c2 = max(max(max(1, 67 * c0 - (c0 + 1) / 3), 67 * c1 - (c1 + 2) / 3), 133 * c0 - 67 * c1 + (c0 + c1 + 1) / 3 - 66); c2 <= min(min(1000, 100 * c0 + 99), 133 * c0 - 67 * c1 + floord(c0 + c1 - 1, 3) + 133); c2 += 1)
+ for (int c3 = max(max(c2, 200 * c0 - c2), 100 * c1 + (c2 + 1) / 2); c3 <= min(min(2 * c2 + 1, 200 * c0 - c2 + 199), 100 * c1 + (c2 + 1) / 2 + 99); c3 += 1)
+ s0(c0, c1, c2, c3);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-1.in
new file mode 100644
index 00000000000..bc9611db469
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur01-1.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4] -> [In_1, In_2, In_3, In_4] : In_3 >= 1 and In_4 >= In_3 and In_4 <= 1 + 2In_3 and In_3 <= 1000 and In_4 >= 200In_1 - In_3 and In_4 <= 199 + 200In_1 - In_3 and 2In_4 >= 200In_2 + In_3 and 2In_4 <= 199 + 200In_2 + In_3 }
+{ : }
+{ [i0, i1, i2, i3] -> atomic[o0] : o0 <= 1; [i0, i1, i2, i3] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur03-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lefur03-0.c
new file mode 100644
index 00000000000..05ac73f3a44
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur03-0.c
@@ -0,0 +1,7 @@
+for (int c0 = 0; c0 <= 3; c0 += 1)
+ for (int c1 = max(2 * c0 - 3, c0 / 2); c1 <= min(3, c0 + 1); c1 += 1)
+ for (int c2 = c0; c2 <= min(min(3, 2 * c0 - c1 + 1), 3 * c1 + 2); c2 += 1)
+ for (int c3 = max(max(max(0, c1 - (-c1 + 3) / 3), c0 - (-c2 + 3) / 3), c2 + floord(3 * c1 - c2 - 1, 6)); c3 <= min(3, c0 + 1); c3 += 1)
+ for (int c4 = max(max(max(max(-200 * c1 + 400 * c3 - 199, 250 * c3 + 1), 667 * c0 - 333 * c1 - (c0 + c1 + 3) / 3 - 332), 333 * c1 + c1 / 3), 333 * c2 + (c2 + 1) / 3); c4 <= min(min(min(min(1000, 500 * c0 + 499), -200 * c1 + 400 * c3 + 400), 333 * c2 - (-c2 + 3) / 3 + 333), 333 * c3 - (-c3 + 3) / 3 + 334); c4 += 1)
+ for (int c5 = max(max(max(c4, 1000 * c0 - c4), 1000 * c3 - 2 * c4 + 2), 500 * c1 + (c4 + 1) / 2); c5 <= min(min(min(2 * c4 + 1, 1000 * c0 - c4 + 999), 1000 * c3 - 2 * c4 + 1001), 500 * c1 + (c4 + 1) / 2 + 499); c5 += 1)
+ s0(c0, c1, c2, c3, c4, c5);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur03-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lefur03-0.in
new file mode 100644
index 00000000000..890f413e743
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur03-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5, In_6] -> [In_1, In_2, In_3, In_4, In_5, In_6] : In_6 >= In_5 and In_6 <= 1 + 2In_5 and In_5 <= 1000 and In_6 >= 1000In_1 - In_5 and In_6 <= 999 + 1000In_1 - In_5 and In_6 >= 2 + 1000In_4 - 2In_5 and In_6 <= 1001 + 1000In_4 - 2In_5 and In_4 >= 0 and 2In_6 >= 1000In_2 + In_5 and 2In_6 <= 999 + 1000In_2 + In_5 and 3In_5 >= -1 + 1000In_3 and 3In_5 <= 998 + 1000In_3 }
+{ : }
+{ [i0, i1, i2, i3, i4, i5] -> separate[o0] : o0 >= 5; [i0, i1, i2, i3, i4, i5] -> atomic[o0] : o0 <= 4 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur04-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lefur04-0.c
new file mode 100644
index 00000000000..124d0f15cb5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur04-0.c
@@ -0,0 +1,8 @@
+for (int c0 = 0; c0 <= 3; c0 += 1)
+ for (int c1 = max(2 * c0 - 3, c0 / 2); c1 <= min(3, c0 + 1); c1 += 1)
+ for (int c2 = c0; c2 <= min(min(3, 2 * c0 - c1 + 1), 3 * c1 + 2); c2 += 1)
+ for (int c3 = max(max(max(c1 - (-c1 + 3) / 3, c0 - (-c2 + 3) / 3), c2 - (c2 + 2) / 3), c2 + floord(3 * c1 - c2 - 1, 6)); c3 <= min(3, c0 + c2 / 3 + 1); c3 += 1)
+ for (int c5 = max(max(max(max(0, 2 * c3 - 4), c1 - (-c1 + 3) / 3), c2 - (c2 + 3) / 3), c3 - (c3 + 3) / 3); c5 <= min(min(c1 + 1, c3), -c2 + 2 * c3 - (c2 + 3) / 3 + 2); c5 += 1)
+ for (int c6 = max(max(max(max(max(-200 * c1 + 400 * c3 - 199, 250 * c3 + 1), 1000 * c0 - 500 * c5 - 501), 667 * c0 - 333 * c1 - (c0 + c1 + 3) / 3 - 332), 333 * c1 + c1 / 3), 333 * c2 + (c2 + 1) / 3); c6 <= min(min(min(min(min(min(1000, 500 * c0 + 499), -200 * c1 + 400 * c3 + 400), 500 * c5 + 501), 1000 * c0 - 500 * c5 + 997), 333 * c2 - (-c2 + 3) / 3 + 333), 333 * c3 - (-c3 + 3) / 3 + 334); c6 += 1)
+ for (int c7 = max(max(max(max(500 * c5 + 2, c6), 1000 * c0 - c6), 1000 * c3 - 2 * c6 + 2), 500 * c1 + (c6 + 1) / 2); c7 <= min(min(min(min(500 * c5 + 501, 2 * c6 + 1), 1000 * c0 - c6 + 999), 1000 * c3 - 2 * c6 + 1001), 500 * c1 + (c6 + 1) / 2 + 499); c7 += 1)
+ s0(c0, c1, c2, c3, c2 / 3, c5, c6, c7);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lefur04-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lefur04-0.in
new file mode 100644
index 00000000000..c50a0da4c51
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lefur04-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5, In_6, In_7, In_8] -> [In_1, In_2, In_3, In_4, In_5, In_6, In_7, In_8] : In_7 >= 1000In_5 and In_8 >= In_7 and In_8 <= 501 + 500In_6 and In_8 <= 1 + 2In_7 and In_7 <= 999 + 1000In_5 and In_7 <= 1000 and In_8 >= 1000In_1 - In_7 and In_8 <= 999 + 1000In_1 - In_7 and 2In_8 >= 1000In_2 + In_7 and 2In_8 <= 999 + 1000In_2 + In_7 and 3In_7 >= -1 + 1000In_3 and 3In_7 <= 998 + 1000In_3 and In_8 >= 2 + 500In_6 and In_6 >= 0 and In_8 >= 2 + 1000In_4 - 2In_7 and In_8 <= 1001 + 1000In_4 - 2In_7 }
+{ : }
+{ [i0, i1, i2, i3, i4, i5, i6, i7] -> atomic[o0] : o0 <= 6; [i0, i1, i2, i3, i4, i5, i6, i7] -> separate[o0] : o0 >= 7 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-0.c
new file mode 100644
index 00000000000..f7b1ae9ae7b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-0.c
@@ -0,0 +1,9 @@
+for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ if (c0 <= 60)
+ s0(c0, c1, c2, c3, c4);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-0.in
new file mode 100644
index 00000000000..31ae11ad533
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 5; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 4 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-1.c
new file mode 100644
index 00000000000..3910e4f264d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-1.c
@@ -0,0 +1,13 @@
+for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1) {
+ if (c0 >= 61) {
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-1.in
new file mode 100644
index 00000000000..44de4acbb94
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-1.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 4; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-2.c
new file mode 100644
index 00000000000..8737f3c50bf
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-2.c
@@ -0,0 +1,14 @@
+for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1) {
+ if (c0 >= 61) {
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-2.in
new file mode 100644
index 00000000000..241fbb96293
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-2.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 3; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-3.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-3.c
new file mode 100644
index 00000000000..4d73f89d63d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-3.c
@@ -0,0 +1,15 @@
+for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1) {
+ if (c0 >= 61) {
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-3.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-3.in
new file mode 100644
index 00000000000..a50a9ece72c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-3.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 2; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-4.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-4.c
new file mode 100644
index 00000000000..7d2de29261c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-4.c
@@ -0,0 +1,16 @@
+for (int c0 = 1; c0 <= 100; c0 += 1) {
+ if (c0 >= 61) {
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-4.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-4.in
new file mode 100644
index 00000000000..db7d85c8eed
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-4.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 1; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-5.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-5.c
new file mode 100644
index 00000000000..2a24f683e66
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-5.c
@@ -0,0 +1,16 @@
+{
+ for (int c0 = 1; c0 <= 60; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+ for (int c0 = 61; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift1-5.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-5.in
new file mode 100644
index 00000000000..2f9d5786569
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift1-5.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 0; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-0.c
new file mode 100644
index 00000000000..181d6e58fc3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-0.c
@@ -0,0 +1,9 @@
+for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ if (c0 >= 5 && c0 <= 60)
+ s0(c0, c1, c2, c3, c4);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-0.in
new file mode 100644
index 00000000000..5df0444130e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 5 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 5; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 4 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-1.c
new file mode 100644
index 00000000000..f914743ecc2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-1.c
@@ -0,0 +1,16 @@
+for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1) {
+ if (c0 >= 61) {
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else if (c0 <= 4) {
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-1.in
new file mode 100644
index 00000000000..7ef2a8d9a9e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-1.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 5 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 4; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-2.c
new file mode 100644
index 00000000000..8b6dbafc507
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-2.c
@@ -0,0 +1,18 @@
+for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1) {
+ if (c0 >= 61) {
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else if (c0 <= 4) {
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-2.in
new file mode 100644
index 00000000000..3e9a9782460
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-2.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 5 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 3; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-3.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-3.c
new file mode 100644
index 00000000000..1a5954a8081
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-3.c
@@ -0,0 +1,20 @@
+for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1) {
+ if (c0 >= 61) {
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else if (c0 <= 4) {
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-3.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-3.in
new file mode 100644
index 00000000000..0580f079dbc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-3.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 5 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 2; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-4.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-4.c
new file mode 100644
index 00000000000..d1d04d6507d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-4.c
@@ -0,0 +1,22 @@
+for (int c0 = 1; c0 <= 100; c0 += 1) {
+ if (c0 >= 61) {
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else if (c0 <= 4) {
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ } else
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-4.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-4.in
new file mode 100644
index 00000000000..d64462ae11b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-4.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 5 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 1; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-5.c b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-5.c
new file mode 100644
index 00000000000..16bd6dbafd7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-5.c
@@ -0,0 +1,22 @@
+{
+ for (int c0 = 1; c0 <= 4; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+ for (int c0 = 5; c0 <= 60; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1) {
+ s1(c0, c1, c2, c3, c4);
+ s0(c0, c1, c2, c3, c4);
+ }
+ for (int c0 = 61; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ for (int c2 = 1; c2 <= 100; c2 += 1)
+ for (int c3 = 1; c3 <= 100; c3 += 1)
+ for (int c4 = 1; c4 <= 100; c4 += 1)
+ s1(c0, c1, c2, c3, c4);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lift2-5.in b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-5.in
new file mode 100644
index 00000000000..37a57befecd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lift2-5.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 5 and In_1 <= 60 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100; s1[In_1, In_2, In_3, In_4, In_5] -> [In_1, In_2, In_3, In_4, In_5] : In_1 >= 1 and In_1 <= 100 and In_2 >= 1 and In_2 <= 100 and In_3 >= 1 and In_3 <= 100 and In_4 >= 1 and In_4 <= 100 and In_5 >= 1 and In_5 <= 100 }
+{ : }
+{ [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 0; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu-0.c
new file mode 100644
index 00000000000..e71f47bbd58
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu-0.c
@@ -0,0 +1,10 @@
+for (int c0 = 1; c0 < n; c0 += 64)
+ for (int c1 = c0 - 1; c1 <= n; c1 += 64)
+ for (int c2 = c0; c2 <= n; c2 += 1) {
+ for (int c3 = c0; c3 <= min(min(c0 + 63, c1 + 62), c2 - 1); c3 += 1)
+ for (int c4 = max(c1, c3 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s1(c3, c4, c2);
+ if (c0 + 63 >= c2)
+ for (int c4 = max(c1, c2 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s0(c2, c4);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu-0.in
new file mode 100644
index 00000000000..510d677c350
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu-0.in
@@ -0,0 +1,3 @@
+[n] -> { s1[k, i, j] -> [t1, t2, j, k, i] : exists (e0 = [(-1 + t1)/64], e1 = [(t2)/64]: 64e0 = -1 + t1 and 64e1 = t2 and t1 >= -63 + k and t1 <= k and t2 >= -63 + i and t2 <= i and i >= 1 + k and j >= 1 + k and k >= 1 and i <= n and j <= n); s0[k, i] -> [t1, t2, k, k, i] : exists (e0 = [(-1 + t1)/64], e1 = [(t2)/64]: 64e0 = -1 + t1 and 64e1 = t2 and t1 >= -63 + k and t1 <= k and t2 >= -63 + i and t2 <= i and k >= 1 and i >= 1 + k and i <= n) }
+{ : }
+[n] -> { [t1, t2, i2, i3, i4] -> separate[o0] : o0 >= 5; [t1, t2, i2, i3, i4] -> atomic[o0] : o0 <= 4 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu-1.c
new file mode 100644
index 00000000000..e71f47bbd58
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu-1.c
@@ -0,0 +1,10 @@
+for (int c0 = 1; c0 < n; c0 += 64)
+ for (int c1 = c0 - 1; c1 <= n; c1 += 64)
+ for (int c2 = c0; c2 <= n; c2 += 1) {
+ for (int c3 = c0; c3 <= min(min(c0 + 63, c1 + 62), c2 - 1); c3 += 1)
+ for (int c4 = max(c1, c3 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s1(c3, c4, c2);
+ if (c0 + 63 >= c2)
+ for (int c4 = max(c1, c2 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s0(c2, c4);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu-1.in
new file mode 100644
index 00000000000..2e8f7efa535
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu-1.in
@@ -0,0 +1,3 @@
+[n] -> { s1[k, i, j] -> [t1, t2, j, k, i] : exists (e0 = [(-1 + t1)/64], e1 = [(t2)/64]: 64e0 = -1 + t1 and 64e1 = t2 and t1 >= -63 + k and t1 <= k and t2 >= -63 + i and t2 <= i and i >= 1 + k and j >= 1 + k and k >= 1 and i <= n and j <= n); s0[k, i] -> [t1, t2, k, k, i] : exists (e0 = [(-1 + t1)/64], e1 = [(t2)/64]: 64e0 = -1 + t1 and 64e1 = t2 and t1 >= -63 + k and t1 <= k and t2 >= -63 + i and t2 <= i and k >= 1 and i >= 1 + k and i <= n) }
+{ : }
+[n] -> { [t1, t2, i2, i3, i4] -> separate[o0] : o0 >= 4; [t1, t2, i2, i3, i4] -> atomic[o0] : o0 <= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu-2.c
new file mode 100644
index 00000000000..e71f47bbd58
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu-2.c
@@ -0,0 +1,10 @@
+for (int c0 = 1; c0 < n; c0 += 64)
+ for (int c1 = c0 - 1; c1 <= n; c1 += 64)
+ for (int c2 = c0; c2 <= n; c2 += 1) {
+ for (int c3 = c0; c3 <= min(min(c0 + 63, c1 + 62), c2 - 1); c3 += 1)
+ for (int c4 = max(c1, c3 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s1(c3, c4, c2);
+ if (c0 + 63 >= c2)
+ for (int c4 = max(c1, c2 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s0(c2, c4);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu-2.in
new file mode 100644
index 00000000000..ab2ec412b06
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu-2.in
@@ -0,0 +1,3 @@
+[n] -> { s1[k, i, j] -> [t1, t2, j, k, i] : exists (e0 = [(-1 + t1)/64], e1 = [(t2)/64]: 64e0 = -1 + t1 and 64e1 = t2 and t1 >= -63 + k and t1 <= k and t2 >= -63 + i and t2 <= i and i >= 1 + k and j >= 1 + k and k >= 1 and i <= n and j <= n); s0[k, i] -> [t1, t2, k, k, i] : exists (e0 = [(-1 + t1)/64], e1 = [(t2)/64]: 64e0 = -1 + t1 and 64e1 = t2 and t1 >= -63 + k and t1 <= k and t2 >= -63 + i and t2 <= i and k >= 1 and i >= 1 + k and i <= n) }
+{ : }
+[n] -> { [t1, t2, i2, i3, i4] -> separate[o0] : o0 >= 3; [t1, t2, i2, i3, i4] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu-3.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu-3.c
new file mode 100644
index 00000000000..3fd0d4eb543
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu-3.c
@@ -0,0 +1,14 @@
+for (int c0 = 1; c0 < n; c0 += 64)
+ for (int c1 = c0 - 1; c1 <= n; c1 += 64) {
+ for (int c2 = c0; c2 <= min(n, c0 + 63); c2 += 1) {
+ for (int c3 = c0; c3 <= min(c1 + 62, c2 - 1); c3 += 1)
+ for (int c4 = max(c1, c3 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s1(c3, c4, c2);
+ for (int c4 = max(c1, c2 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s0(c2, c4);
+ }
+ for (int c2 = c0 + 64; c2 <= n; c2 += 1)
+ for (int c3 = c0; c3 <= min(c0 + 63, c1 + 62); c3 += 1)
+ for (int c4 = max(c1, c3 + 1); c4 <= min(n, c1 + 63); c4 += 1)
+ s1(c3, c4, c2);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu-3.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu-3.in
new file mode 100644
index 00000000000..817db46120a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu-3.in
@@ -0,0 +1,3 @@
+[n] -> { s1[k, i, j] -> [t1, t2, j, k, i] : exists (e0 = [(-1 + t1)/64], e1 = [(t2)/64]: 64e0 = -1 + t1 and 64e1 = t2 and t1 >= -63 + k and t1 <= k and t2 >= -63 + i and t2 <= i and i >= 1 + k and j >= 1 + k and k >= 1 and i <= n and j <= n); s0[k, i] -> [t1, t2, k, k, i] : exists (e0 = [(-1 + t1)/64], e1 = [(t2)/64]: 64e0 = -1 + t1 and 64e1 = t2 and t1 >= -63 + k and t1 <= k and t2 >= -63 + i and t2 <= i and k >= 1 and i >= 1 + k and i <= n) }
+{ : }
+[n] -> { [t1, t2, i2, i3, i4] -> separate[o0] : o0 >= 2; [t1, t2, i2, i3, i4] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-0.c
new file mode 100644
index 00000000000..da2571ac530
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-0.c
@@ -0,0 +1,7 @@
+for (int c0 = 1; c0 <= n; c0 += 1)
+ for (int c1 = 2; c1 <= n; c1 += 1) {
+ for (int c3 = 1; c3 < min(c0, c1); c3 += 1)
+ s1(c3, c1, c0);
+ if (c1 >= c0 + 1)
+ s0(c0, c1);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-0.in
new file mode 100644
index 00000000000..5aae58cfb57
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[k, j] -> [k, j, 1, 0] : k >= 1 and j >= 1 + k and j <= n; s1[k, j, i] -> [i, j, 0, k] : j >= 1 + k and i >= 1 + k and k >= 1 and j <= n and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-1.c
new file mode 100644
index 00000000000..da2571ac530
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-1.c
@@ -0,0 +1,7 @@
+for (int c0 = 1; c0 <= n; c0 += 1)
+ for (int c1 = 2; c1 <= n; c1 += 1) {
+ for (int c3 = 1; c3 < min(c0, c1); c3 += 1)
+ s1(c3, c1, c0);
+ if (c1 >= c0 + 1)
+ s0(c0, c1);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-1.in
new file mode 100644
index 00000000000..06a860c43fe
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-1.in
@@ -0,0 +1,3 @@
+[n] -> { s0[k, j] -> [k, j, 1, 0] : k >= 1 and j >= 1 + k and j <= n; s1[k, j, i] -> [i, j, 0, k] : j >= 1 + k and i >= 1 + k and k >= 1 and j <= n and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 1; [i0, i1, i2, i3] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-2.c
new file mode 100644
index 00000000000..561ae1104b5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-2.c
@@ -0,0 +1,11 @@
+if (n >= 2)
+ for (int c0 = 1; c0 <= n; c0 += 1) {
+ for (int c1 = 2; c1 <= c0; c1 += 1)
+ for (int c3 = 1; c3 < c1; c3 += 1)
+ s1(c3, c1, c0);
+ for (int c1 = c0 + 1; c1 <= n; c1 += 1) {
+ for (int c3 = 1; c3 < c0; c3 += 1)
+ s1(c3, c1, c0);
+ s0(c0, c1);
+ }
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-2.in
new file mode 100644
index 00000000000..6ad8a4497e4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_ijk-2.in
@@ -0,0 +1,3 @@
+[n] -> { s0[k, j] -> [k, j, 1, 0] : k >= 1 and j >= 1 + k and j <= n; s1[k, j, i] -> [i, j, 0, k] : j >= 1 + k and i >= 1 + k and k >= 1 and j <= n and i <= n }
+{ : }
+[n] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 0; [i0, i1, i2, i3] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-0.c
new file mode 100644
index 00000000000..4c8c72ad594
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-0.c
@@ -0,0 +1,12 @@
+if (ub >= lb)
+ for (int c0 = 1; c0 <= ub; c0 += 1)
+ for (int c1 = c0; c1 <= n; c1 += 1) {
+ if (c0 >= lb && c1 >= c0 + 1) {
+ s0(c0, c1);
+ if (n >= ub + 1)
+ s2(c0, c1);
+ } else if (lb >= c0 + 1)
+ s3(c0, c1, lb, c0, c1);
+ for (int c3 = max(lb, c0); c3 <= ub; c3 += 1)
+ s1(c0, c1, c3);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-0.in
new file mode 100644
index 00000000000..0dd09538192
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-0.in
@@ -0,0 +1,3 @@
+[n, lb, ub] -> { s1[k, i, j] -> [k, i, 1, j, 0, 0, 0, 0] : k >= 1 and j >= k and j <= n and j <= ub and i >= k and i <= n and j >= lb; s3[k, i, lb, k, i] -> [k, i, 1, lb, -1, k, i, 0] : k >= 1 and k <= -1 + lb and lb <= n and ub >= lb and i >= k and i <= n; s0[k, i] -> [k, i, 0, 0, 0, 0, 0, 0] : k >= 1 and k >= lb and i >= 1 + k and i <= n and k <= ub; s2[k, i] -> [k, i, 0, 0, 1, 0, 0, 0] : k >= 1 and k >= lb and k <= ub and ub <= -1 + n and i >= 1 + k and i <= n }
+[lb, n, ub] -> { : ub <= n and lb >= 1 }
+[n, lb, ub] -> { [i0, i1, i2, i3, i4, i5, i6, i7] -> atomic[o0] : o0 <= 7; [i0, i1, i2, i3, i4, i5, i6, i7] -> separate[o0] : o0 >= 8 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-1.c
new file mode 100644
index 00000000000..4c8c72ad594
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-1.c
@@ -0,0 +1,12 @@
+if (ub >= lb)
+ for (int c0 = 1; c0 <= ub; c0 += 1)
+ for (int c1 = c0; c1 <= n; c1 += 1) {
+ if (c0 >= lb && c1 >= c0 + 1) {
+ s0(c0, c1);
+ if (n >= ub + 1)
+ s2(c0, c1);
+ } else if (lb >= c0 + 1)
+ s3(c0, c1, lb, c0, c1);
+ for (int c3 = max(lb, c0); c3 <= ub; c3 += 1)
+ s1(c0, c1, c3);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-1.in
new file mode 100644
index 00000000000..5d628befe3e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/lu_spmd-1.in
@@ -0,0 +1,3 @@
+[n, lb, ub] -> { s1[k, i, j] -> [k, i, 1, j, 0, 0, 0, 0] : k >= 1 and j >= k and j <= n and j <= ub and i >= k and i <= n and j >= lb; s3[k, i, lb, k, i] -> [k, i, 1, lb, -1, k, i, 0] : k >= 1 and k <= -1 + lb and lb <= n and ub >= lb and i >= k and i <= n; s0[k, i] -> [k, i, 0, 0, 0, 0, 0, 0] : k >= 1 and k >= lb and i >= 1 + k and i <= n and k <= ub; s2[k, i] -> [k, i, 0, 0, 1, 0, 0, 0] : k >= 1 and k >= lb and k <= ub and ub <= -1 + n and i >= 1 + k and i <= n }
+[lb, n, ub] -> { : ub <= n and lb >= 1 }
+[n, lb, ub] -> { [i0, i1, i2, i3, i4, i5, i6, i7] -> atomic[o0] : o0 <= 6; [i0, i1, i2, i3, i4, i5, i6, i7] -> separate[o0] : o0 >= 7 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m1-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m1-0.c
new file mode 100644
index 00000000000..bb149359f93
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m1-0.c
@@ -0,0 +1,6 @@
+for (int c0 = 1; c0 <= 9; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(c0, c1);
+ if (c0 == 5)
+ s1(5, c1);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m1-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m1-0.in
new file mode 100644
index 00000000000..ca2b8a9b2c0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m1-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [i, j, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[5, j] -> [5, j, 1] : j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m1-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/m1-1.c
new file mode 100644
index 00000000000..07b91f794e0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m1-1.c
@@ -0,0 +1,13 @@
+for (int c0 = 1; c0 <= 9; c0 += 1) {
+ if (c0 >= 6) {
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s0(c0, c1);
+ } else if (c0 <= 4) {
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s0(c0, c1);
+ } else
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(5, c1);
+ s1(5, c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m1-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/m1-1.in
new file mode 100644
index 00000000000..08dbf45ed10
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m1-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [i, j, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[5, j] -> [5, j, 1] : j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m10-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m10-0.c
new file mode 100644
index 00000000000..2b51c7b9106
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m10-0.c
@@ -0,0 +1,7 @@
+for (int c0 = 1; c0 <= 18; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ if (c0 % 2 == 0)
+ s0(c1, c0 / 2);
+ if (c0 <= 9)
+ s1(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m10-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m10-0.in
new file mode 100644
index 00000000000..3046811e743
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m10-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [4j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [2j, i, 1] : i >= 1 and i <= 9 and j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m10-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/m10-1.c
new file mode 100644
index 00000000000..b3f34f6ec93
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m10-1.c
@@ -0,0 +1,14 @@
+for (int c0 = 1; c0 <= 18; c0 += 1) {
+ if (c0 >= 2 && c0 <= 9) {
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ if (c0 % 2 == 0)
+ s0(c1, c0 / 2);
+ s1(c1, c0);
+ }
+ } else if (c0 == 1) {
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s1(c1, 1);
+ } else if (c0 % 2 == 0)
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s0(c1, c0 / 2);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m10-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/m10-1.in
new file mode 100644
index 00000000000..81dfc3bbdea
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m10-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [4j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [2j, i, 1] : i >= 1 and i <= 9 and j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m11-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m11-0.c
new file mode 100644
index 00000000000..1ecb4a53289
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m11-0.c
@@ -0,0 +1,6 @@
+for (int c0 = 1; c0 <= min(4, floord(2 * m - 1, 17) + 1); c0 += 1)
+ for (int c1 = 1; c1 <= 2; c1 += 1)
+ for (int c2 = 0; c2 <= min(2, -c0 - c1 + (2 * m + 3 * c0 + 10 * c1 + 6) / 20 + 1); c2 += 1)
+ for (int c3 = 8 * c0 + (c0 + 1) / 2 - 8; c3 <= min(min(30, m - 5 * c1 - 10 * c2 + 5), 8 * c0 + c0 / 2); c3 += 1)
+ for (int c4 = 5 * c1 + 10 * c2 - 4; c4 <= min(5 * c1 + 10 * c2, m - c3 + 1); c4 += 1)
+ s0(c0, c1, c2, c3, c4, -9 * c0 + c3 + c0 / 2 + 9, -5 * c1 - 5 * c2 + c4 + 5);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m11-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m11-0.in
new file mode 100644
index 00000000000..d85fcf2734b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m11-0.in
@@ -0,0 +1,3 @@
+[m] -> { s0[In_1, In_2, In_3, In_4, In_5, In_6, 5 - 5In_2 - 5In_3 + In_5] -> [In_1, In_2, In_3, In_4, In_5, In_6, 5 - 5In_2 - 5In_3 + In_5] : In_2 >= 1 and 2In_3 >= 1 - In_2 and In_2 <= 2 and 2In_3 <= 6 - In_2 and In_4 <= 30 and In_1 >= 1 and 2In_6 <= 18 - 17In_1 + 2In_4 and 2In_6 >= 17 - 17In_1 + 2In_4 and In_5 <= 5In_2 + 10In_3 and In_5 >= -4 + 5In_2 + 10In_3 and 2In_4 <= 17In_1 and 2In_4 >= -16 + 17In_1 and In_5 <= 1 + m - In_4 }
+{ : }
+[m] -> { [i0, i1, i2, i3, i4, i5, i6] -> atomic[o0] : o0 <= 5; [i0, i1, i2, i3, i4, i5, i6] -> separate[o0] : o0 >= 6 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m12-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m12-0.c
new file mode 100644
index 00000000000..2dc6ab1fea6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m12-0.c
@@ -0,0 +1,3 @@
+for (int c1 = 1; c1 <= n; c1 += 1)
+ for (int c2 = 1; c2 <= m; c2 += 1)
+ s0(1, c1, c2, 0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m12-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m12-0.in
new file mode 100644
index 00000000000..0c988ab110c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m12-0.in
@@ -0,0 +1,3 @@
+[m, n] -> { s0[1, In_2, In_3, 0] -> [1, In_2, In_3, 0] : In_3 >= 1 and In_3 <= m and In_2 >= 1 and In_2 <= n }
+{ : }
+[m, n] -> { [i0, i1, i2, i3] -> separate[o0] : o0 >= 3; [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m12-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/m12-1.c
new file mode 100644
index 00000000000..eba7c8a6170
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m12-1.c
@@ -0,0 +1,25 @@
+{
+ for (int c1 = 1; c1 <= n; c1 += 1)
+ for (int c2 = 1; c2 <= m; c2 += 1) {
+ s0(1, c1, c2, 0);
+ s1(1, c1, c2, 0);
+ }
+ for (int c1 = 1; c1 <= n; c1 += 1) {
+ s3(2, c1, 0, 0);
+ s2(2, c1, 0, 0);
+ }
+ for (int c1 = 1; c1 <= m; c1 += 1) {
+ for (int c3 = 1; c3 <= n; c3 += 1) {
+ s5(3, c1, 1, c3);
+ s4(3, c1, 1, c3);
+ }
+ for (int c3 = 1; c3 <= n; c3 += 1) {
+ s7(3, c1, 2, c3);
+ s6(3, c1, 2, c3);
+ }
+ }
+ for (int c1 = 1; c1 <= m; c1 += 1) {
+ s8(4, c1, 0, 0);
+ s9(4, c1, 0, 0);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m12-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/m12-1.in
new file mode 100644
index 00000000000..355075faf68
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m12-1.in
@@ -0,0 +1,3 @@
+[m, n] -> { s1[1, In_2, In_3, 0] -> [1, In_2, In_3, 0] : In_3 >= 1 and In_3 <= m and In_2 >= 1 and In_2 <= n; s2[2, In_2, 0, 0] -> [2, In_2, 0, 0] : In_2 >= 1 and In_2 <= n; s3[2, In_2, 0, 0] -> [2, In_2, 0, 0] : In_2 >= 1 and In_2 <= n; s8[4, In_2, 0, 0] -> [4, In_2, 0, 0] : In_2 >= 1 and In_2 <= m; s0[1, In_2, In_3, 0] -> [1, In_2, In_3, 0] : In_3 >= 1 and In_3 <= m and In_2 >= 1 and In_2 <= n; s7[3, In_2, 2, In_4] -> [3, In_2, 2, In_4] : In_4 >= 1 and In_4 <= n and In_2 >= 1 and In_2 <= m; s4[3, In_2, 1, In_4] -> [3, In_2, 1, In_4] : In_4 >= 1 and In_4 <= n and In_2 >= 1 and In_2 <= m; s6[3, In_2, 2, In_4] -> [3, In_2, 2, In_4] : In_4 >= 1 and In_4 <= n and In_2 >= 1 and In_2 <= m; s9[4, In_2, 0, 0] -> [4, In_2, 0, 0] : In_2 >= 1 and In_2 <= m; s5[3, In_2, 1, In_4] -> [3, In_2, 1, In_4] : In_4 >= 1 and In_4 <= n and In_2 >= 1 and In_2 <= m }
+{ : }
+[m, n] -> { [i0, i1, i2, i3] -> separate[o0] : o0 >= 3; [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m2-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m2-0.c
new file mode 100644
index 00000000000..669f51a7d14
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m2-0.c
@@ -0,0 +1,11 @@
+for (int c0 = 2; c0 <= 9; c0 += 1) {
+ if (c0 >= 5) {
+ s1(c0, 1);
+ for (int c1 = 2; c1 <= 9; c1 += 1) {
+ s1(c0, c1);
+ s0(c0, c1);
+ }
+ } else
+ for (int c1 = 2; c1 <= 9; c1 += 1)
+ s0(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m2-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m2-0.in
new file mode 100644
index 00000000000..ae7780e0403
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m2-0.in
@@ -0,0 +1,3 @@
+{ s1[In_1, In_2] -> [In_1, In_2] : In_1 >= 5 and In_1 <= 9 and In_2 >= 1 and In_2 <= 9; s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 2 and In_1 <= 9 and In_2 >= 2 and In_2 <= 9 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m2-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/m2-1.c
new file mode 100644
index 00000000000..09255e0c510
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m2-1.c
@@ -0,0 +1,12 @@
+{
+ for (int c0 = 2; c0 <= 4; c0 += 1)
+ for (int c1 = 2; c1 <= 9; c1 += 1)
+ s0(c0, c1);
+ for (int c0 = 5; c0 <= 9; c0 += 1) {
+ s1(c0, 1);
+ for (int c1 = 2; c1 <= 9; c1 += 1) {
+ s1(c0, c1);
+ s0(c0, c1);
+ }
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m2-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/m2-1.in
new file mode 100644
index 00000000000..32302bb11e6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m2-1.in
@@ -0,0 +1,3 @@
+{ s1[In_1, In_2] -> [In_1, In_2] : In_1 >= 5 and In_1 <= 9 and In_2 >= 1 and In_2 <= 9; s0[In_1, In_2] -> [In_1, In_2] : In_1 >= 2 and In_1 <= 9 and In_2 >= 2 and In_2 <= 9 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= -1; [i0, i1] -> separate[o0] : o0 >= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m3-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m3-0.c
new file mode 100644
index 00000000000..d3d69704165
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m3-0.c
@@ -0,0 +1,3 @@
+for (int c0 = -9; c0 <= 9; c0 += 1)
+ for (int c1 = max(1, -c0 + 1); c1 <= min(10, -c0 + 10); c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m3-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m3-0.in
new file mode 100644
index 00000000000..82e109311bc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m3-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : In_2 >= 1 - In_1 and In_2 >= 1 and In_2 <= 10 - In_1 and In_2 <= 10 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m4-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m4-0.c
new file mode 100644
index 00000000000..a5280732a46
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m4-0.c
@@ -0,0 +1,5 @@
+for (int c0 = 1; c0 <= 9; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(c1, c0);
+ s1(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m4-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m4-0.in
new file mode 100644
index 00000000000..b7912a306b6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m4-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [j, i, 1] : i >= 1 and i <= 9 and j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m4-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/m4-1.c
new file mode 100644
index 00000000000..a5280732a46
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m4-1.c
@@ -0,0 +1,5 @@
+for (int c0 = 1; c0 <= 9; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(c1, c0);
+ s1(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m4-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/m4-1.in
new file mode 100644
index 00000000000..c9e17d93466
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m4-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [j, i, 1] : i >= 1 and i <= 9 and j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m7-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m7-0.c
new file mode 100644
index 00000000000..d9f93d96fcd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m7-0.c
@@ -0,0 +1,6 @@
+for (int c0 = 1; c0 <= 9; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(c1, c0);
+ if (c0 % 2 == 0)
+ s1(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m7-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m7-0.in
new file mode 100644
index 00000000000..45a185043bc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m7-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [j, i, 1] : exists (e0 = [(j)/2]: 2e0 = j and i >= 1 and i <= 9 and j >= 2 and j <= 8) }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m7-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/m7-1.c
new file mode 100644
index 00000000000..a01856e4b4d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m7-1.c
@@ -0,0 +1,10 @@
+for (int c0 = 1; c0 <= 9; c0 += 1) {
+ if (c0 % 2 == 0) {
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(c1, c0);
+ s1(c1, c0);
+ }
+ } else
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s0(c1, c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m7-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/m7-1.in
new file mode 100644
index 00000000000..f4b6f6ffce8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m7-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [j, i, 1] : exists (e0 = [(j)/2]: 2e0 = j and i >= 1 and i <= 9 and j >= 2 and j <= 8) }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m8-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m8-0.c
new file mode 100644
index 00000000000..9aaed9e9636
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m8-0.c
@@ -0,0 +1,6 @@
+for (int c0 = 2; c0 <= 8; c0 += 2)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ if (c0 % 4 == 0)
+ s0(c1, c0);
+ s1(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m8-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m8-0.in
new file mode 100644
index 00000000000..e9a0e39646b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m8-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [j, i, 0] : exists (e0 = [(j)/4]: 4e0 = j and i >= 1 and i <= 9 and j >= 4 and j <= 8); s1[i, j] -> [j, i, 1] : exists (e0 = [(j)/2]: 2e0 = j and i >= 1 and i <= 9 and j >= 2 and j <= 8) }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m8-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/m8-1.c
new file mode 100644
index 00000000000..51c77daeca4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m8-1.c
@@ -0,0 +1,10 @@
+for (int c0 = 2; c0 <= 8; c0 += 2) {
+ if (c0 % 4 == 0) {
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(c1, c0);
+ s1(c1, c0);
+ }
+ } else
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s1(c1, c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m8-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/m8-1.in
new file mode 100644
index 00000000000..80e57e499db
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m8-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [j, i, 0] : exists (e0 = [(j)/4]: 4e0 = j and i >= 1 and i <= 9 and j >= 4 and j <= 8); s1[i, j] -> [j, i, 1] : exists (e0 = [(j)/2]: 2e0 = j and i >= 1 and i <= 9 and j >= 2 and j <= 8) }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m9-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/m9-0.c
new file mode 100644
index 00000000000..a5280732a46
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m9-0.c
@@ -0,0 +1,5 @@
+for (int c0 = 1; c0 <= 9; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(c1, c0);
+ s1(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m9-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/m9-0.in
new file mode 100644
index 00000000000..fc38bf2e486
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m9-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [2j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [2j, i, 1] : i >= 1 and i <= 9 and j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m9-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/m9-1.c
new file mode 100644
index 00000000000..a5280732a46
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m9-1.c
@@ -0,0 +1,5 @@
+for (int c0 = 1; c0 <= 9; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ s0(c1, c0);
+ s1(c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/m9-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/m9-1.in
new file mode 100644
index 00000000000..398e3260abf
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/m9-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [2j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [2j, i, 1] : i >= 1 and i <= 9 and j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/olda-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/olda-0.c
new file mode 100644
index 00000000000..b05f991ad1f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/olda-0.c
@@ -0,0 +1,8 @@
+for (int c0 = 1; c0 <= morb; c0 += 1)
+ for (int c1 = 1; c1 <= np; c1 += 1)
+ for (int c2 = 1; c2 <= np; c2 += 1) {
+ if (c2 >= c1)
+ s0(c2, c1, c0);
+ if (c1 >= c2)
+ s1(c1, c2, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/olda-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/olda-0.in
new file mode 100644
index 00000000000..88f86f558c5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/olda-0.in
@@ -0,0 +1,3 @@
+[np, morb] -> { s0[mp, mq, mi] -> [mi, mq, mp, 0] : mq >= 1 and mq <= mp and mp <= np and mi >= 1 and mi <= morb; s1[mp, mq, mi] -> [mi, mp, mq, 1] : mq >= 1 and mq <= mp and mp <= np and mi >= 1 and mi <= morb }
+{ : }
+[np, morb] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2; [i0, i1, i2, i3] -> separate[o0] : o0 >= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/olda-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/olda-1.c
new file mode 100644
index 00000000000..4b3098068e4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/olda-1.c
@@ -0,0 +1,9 @@
+for (int c0 = 1; c0 <= morb; c0 += 1)
+ for (int c1 = 1; c1 <= np; c1 += 1) {
+ for (int c2 = 1; c2 < c1; c2 += 1)
+ s1(c1, c2, c0);
+ s0(c1, c1, c0);
+ s1(c1, c1, c0);
+ for (int c2 = c1 + 1; c2 <= np; c2 += 1)
+ s0(c2, c1, c0);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/olda-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/olda-1.in
new file mode 100644
index 00000000000..a3a387fbac4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/olda-1.in
@@ -0,0 +1,3 @@
+[np, morb] -> { s0[mp, mq, mi] -> [mi, mq, mp, 0] : mq >= 1 and mq <= mp and mp <= np and mi >= 1 and mi <= morb; s1[mp, mq, mi] -> [mi, mp, mq, 1] : mq >= 1 and mq <= mp and mp <= np and mi >= 1 and mi <= morb }
+{ : }
+[np, morb] -> { [i0, i1, i2, i3] -> atomic[o0] : o0 <= 1; [i0, i1, i2, i3] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/p.delft-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/p.delft-0.c
new file mode 100644
index 00000000000..c676558941f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/p.delft-0.c
@@ -0,0 +1,4 @@
+if (P2 >= 0 && P2 <= 3 && P1 == P2)
+ for (int c0 = 0; c0 <= min(2, -P2 + 4); c0 += 1)
+ for (int c2 = (-P2 - c0 + 6) % 3; c2 <= 3; c2 += 3)
+ s0(c0, c0, c2, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/p.delft-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/p.delft-0.in
new file mode 100644
index 00000000000..5b277a12d78
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/p.delft-0.in
@@ -0,0 +1,3 @@
+[P2, P1] -> { s0[In_1, In_1, In_3, In_3] -> [In_1, In_1, In_3, In_3] : exists (e0 = [(-2P2 - 2In_1 + In_3)/3]: P1 = P2 and 3e0 = -2P2 - 2In_1 + In_3 and P2 >= 0 and P2 <= 3 and In_1 <= 4 - P2 and In_1 >= 0 and In_1 <= 2 and In_3 >= 0 and In_3 <= 3) }
+{ : }
+[P2, P1] -> { [i0, i1, i2, i3] -> separate[o0] : o0 >= 3; [i0, i1, i2, i3] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/p.delft2-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/p.delft2-0.c
new file mode 100644
index 00000000000..ad5a4cab0d6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/p.delft2-0.c
@@ -0,0 +1,10 @@
+if (P1 >= 0 && P1 <= 3 && P2 >= 0 && P2 <= 3)
+ for (int c0 = P1 - 1; c0 <= 3; c0 += 1)
+ for (int c2 = 0; c2 <= 7; c2 += 1)
+ for (int c3 = 0; c3 <= 7; c3 += 1)
+ if ((5 * P2 + 2 * c3) % 9 <= 3) {
+ if (P1 >= 1 && c0 + 1 == P1 && (5 * P1 + 2 * c2) % 9 <= 2) {
+ s0(P1 - 1, P2, c2, c3, ((5 * P1 + 2 * c2) % 9) + 1, (-4 * P2 + 2 * c3 + 9) % 9);
+ } else if (P1 == 0 && c0 == 3 && c2 % 4 == 0)
+ s0(3, P2, c2, c3, (-c2 / 4) + 3, (-4 * P2 + 2 * c3 + 9) % 9);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/p.delft2-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/p.delft2-0.in
new file mode 100644
index 00000000000..f44b9bfdaa9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/p.delft2-0.in
@@ -0,0 +1,3 @@
+[P1, P2] -> { s0[In_1, P2, In_3, In_4, In_5, In_6] -> [In_1, P2, In_3, In_4, In_5, In_6] : (exists (e0 = [(8 + 4In_1 + 16In_3 + In_5)/9], e1 = [(12 - 4P1 + 9e0)/16], e2 = [(-2In_1 - 2In_3 + In_5)/3], e3 = [(-5P2 - 2In_4 + In_6)/9]: 3e2 = -2In_1 - 2In_3 + In_5 and 9e3 = -5P2 - 2In_4 + In_6 and P1 >= 0 and In_1 >= 1 + P1 and In_1 <= 3 and P2 >= 0 and P2 <= 3 and In_6 >= 0 and In_6 <= 3 and In_5 >= 0 and In_5 <= 3 and In_5 >= 1 - 4In_1 - 16In_3 and In_5 <= 126 - 4In_1 - 16In_3 and In_6 <= 126 - 4P2 - 16In_4 and 16e1 <= -4P1 + 9e0 and 2In_6 <= P2 + 4In_4 and 9e0 <= 3 + 4In_1 + 16In_3 + In_5 and 9e0 >= 4In_1 + 16In_3 + In_5 and 16e1 >= -3 - 4P1 + 9e0)) or (exists (e0 = [(8 + 4In_1 + 16In_3 + In_5)/9], e1 = [(12 - 4P1 + 9e0)/16], e2 = [(-2In_1 - 2In_3 + In_5)/3], e3 = [(-5P2 - 2In_4 + In_6)/9]: 3e2 = -2In_1 - 2In_3 + In_5 and 9e3 = -5P2 - 2In_4 + In_6 and In_1 >= 0 and In_1 <= -1 + P1 and P1 <= 3 and In_6 >= 0 and In_6 <= 3 and In_6 <= 1 + 2In_4 and P2 >= 0 and P2 <= 3 and In_5 >= 0 and In_5 <= 3 and In_5 >= 1 - 4In_1 - 16In_3 and In_5 <= 126 - 4In_1 - 16In_3 and In_6 <= 126 - 4P2 - 16In_4 and 16e1 <= -4P1 + 9e0 and 9e0 <= 3 + 4In_1 + 16In_3 + In_5 and 9e0 >= 4In_1 + 16In_3 + In_5 and 16e1 >= -3 - 4P1 + 9e0)) }
+{ : }
+[P1, P2] -> { [i0, i1, i2, i3, i4, i5] -> atomic[o0] : o0 <= 4; [i0, i1, i2, i3, i4, i5] -> separate[o0] : o0 >= 5 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/p6-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/p6-0.c
new file mode 100644
index 00000000000..53995e9e89e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/p6-0.c
@@ -0,0 +1,8 @@
+{
+ for (int c0 = 5; c0 <= 8; c0 += 1)
+ s0(c0);
+ for (int c0 = 10; c0 <= 16; c0 += 2)
+ s0(c0);
+ for (int c0 = 20; c0 <= 25; c0 += 1)
+ s0(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/p6-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/p6-0.in
new file mode 100644
index 00000000000..025da3d30d6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/p6-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1] -> [In_1] : (In_1 >= 5 and In_1 <= 8) or (exists (e0 = [(In_1)/2]: 2e0 = In_1 and In_1 >= 10 and In_1 <= 16)) or (In_1 >= 20 and In_1 <= 25) }
+{ : }
+{ [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/p6-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/p6-1.c
new file mode 100644
index 00000000000..d3d69704165
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/p6-1.c
@@ -0,0 +1,3 @@
+for (int c0 = -9; c0 <= 9; c0 += 1)
+ for (int c1 = max(1, -c0 + 1); c1 <= min(10, -c0 + 10); c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/p6-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/p6-1.in
new file mode 100644
index 00000000000..82e109311bc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/p6-1.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : In_2 >= 1 - In_1 and In_2 >= 1 and In_2 <= 10 - In_1 and In_2 <= 10 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride1-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride1-0.c
new file mode 100644
index 00000000000..c65c2e39fbc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride1-0.c
@@ -0,0 +1,2 @@
+for (int c0 = 3; c0 <= 9; c0 += 3)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride1-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride1-0.in
new file mode 100644
index 00000000000..e09908713f1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride1-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1] -> [In_1] : exists (e0 = [(In_1)/3]: 3e0 = In_1 and In_1 >= 3 and In_1 <= 9) }
+{ : }
+{ [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride2-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride2-0.c
new file mode 100644
index 00000000000..0a7e8e7464d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride2-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= n; c0 += 32)
+ for (int c1 = c0; c1 <= min(n, c0 + 31); c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride2-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride2-0.in
new file mode 100644
index 00000000000..73dc13d60e4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride2-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(In_1)/32]: 32e0 = In_1 and In_2 <= 31 + In_1 and In_1 >= 0 and In_2 >= In_1 and In_2 <= n) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride3-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride3-0.c
new file mode 100644
index 00000000000..8913c802cc0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride3-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 3; c0 <= n; c0 += 32)
+ for (int c1 = c0; c1 <= min(n, c0 + 31); c1 += 1)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride3-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride3-0.in
new file mode 100644
index 00000000000..360d7d01de1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride3-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(-3 + In_1)/32]: 32e0 = -3 + In_1 and In_2 <= 31 + In_1 and In_1 >= 3 and In_2 >= In_1 and In_2 <= n) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride4-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride4-0.c
new file mode 100644
index 00000000000..ed62b592ee2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride4-0.c
@@ -0,0 +1,2 @@
+for (int c0 = 18; c0 <= 98; c0 += 5)
+ s0(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride4-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride4-0.in
new file mode 100644
index 00000000000..8779c3ceffa
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride4-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1] -> [In_1] : exists (e0 = [(-3 + In_1)/5]: 5e0 = -3 + In_1 and In_1 >= 18 and In_1 <= 98) }
+{ : }
+{ [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride5-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride5-0.c
new file mode 100644
index 00000000000..2eeeb5a7b54
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride5-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 2; c0 <= min(100, -2 * n + 400); c0 += 2)
+ for (int c1 = 2 * n + c0; c1 <= 400; c1 += 2)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride5-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride5-0.in
new file mode 100644
index 00000000000..c26c5476b3c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride5-0.in
@@ -0,0 +1,3 @@
+[n] -> { s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(In_1)/2], e1 = [(In_2)/2]: 2e0 = In_1 and 2e1 = In_2 and In_1 >= 2 and In_1 <= 100 and In_2 <= 400 and In_2 >= 2n + In_1) }
+{ : }
+[n] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride6-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-0.c
new file mode 100644
index 00000000000..f4df469cf62
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= 101; c0 += 1)
+ for (int c1 = -((c0 - 1) % 2) + c0 + 1; c1 <= 400; c1 += 2)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride6-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-0.in
new file mode 100644
index 00000000000..16fda744249
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-0.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(In_2)/2]: 2e0 = In_2 and In_1 >= 1 and In_2 >= In_1 and In_2 <= 400 and In_1 <= 101) }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride6-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-1.c
new file mode 100644
index 00000000000..070028f0504
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-1.c
@@ -0,0 +1,3 @@
+for (int c0 = 2; c0 <= 100; c0 += 2)
+ for (int c1 = c0; c1 <= 400; c1 += 2)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride6-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-1.in
new file mode 100644
index 00000000000..91eaab26a32
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-1.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(In_1)/2], e1 = [(In_2)/2]: 2e0 = In_1 and 2e1 = In_2 and In_1 >= 2 and In_2 >= In_1 and In_2 <= 400 and In_1 <= 100) }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride6-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-2.c
new file mode 100644
index 00000000000..070028f0504
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-2.c
@@ -0,0 +1,3 @@
+for (int c0 = 2; c0 <= 100; c0 += 2)
+ for (int c1 = c0; c1 <= 400; c1 += 2)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride6-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-2.in
new file mode 100644
index 00000000000..91eaab26a32
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride6-2.in
@@ -0,0 +1,3 @@
+{ s0[In_1, In_2] -> [In_1, In_2] : exists (e0 = [(In_1)/2], e1 = [(In_2)/2]: 2e0 = In_1 and 2e1 = In_2 and In_1 >= 2 and In_2 >= In_1 and In_2 <= 400 and In_1 <= 100) }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride7-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride7-0.c
new file mode 100644
index 00000000000..7fe17588f3d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride7-0.c
@@ -0,0 +1,14 @@
+for (int c0 = 1; c0 <= 36; c0 += 1) {
+ if (c0 <= 3) {
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s1(c1, c0);
+ } else if (c0 <= 9) {
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ if (c0 % 4 == 0)
+ s0(c1, c0 / 4);
+ s1(c1, c0);
+ }
+ } else if (c0 % 4 == 0)
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s0(c1, c0 / 4);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride7-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride7-0.in
new file mode 100644
index 00000000000..b84f2045fde
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride7-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [4j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [j, i, 1] : i >= 1 and i <= 9 and j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride7-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/stride7-1.c
new file mode 100644
index 00000000000..e79d58deb10
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride7-1.c
@@ -0,0 +1,14 @@
+{
+ for (int c0 = 1; c0 <= 3; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s1(c1, c0);
+ for (int c0 = 4; c0 <= 9; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1) {
+ if (c0 % 4 == 0)
+ s0(c1, c0 / 4);
+ s1(c1, c0);
+ }
+ for (int c0 = 3; c0 <= 9; c0 += 1)
+ for (int c1 = 1; c1 <= 9; c1 += 1)
+ s0(c1, c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/stride7-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/stride7-1.in
new file mode 100644
index 00000000000..3ec82b9c39a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/stride7-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [4j, i, 0] : i >= 1 and i <= 9 and j >= 1 and j <= 9; s1[i, j] -> [j, i, 1] : i >= 1 and i <= 9 and j >= 1 and j <= 9 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 0; [i0, i1, i2] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-0.c
new file mode 100644
index 00000000000..b12c07d3751
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-0.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= 10; c0 += 1)
+ for (int c1 = max(2 * c0 - 4, c0); c1 <= min(2 * c0, c0 + 6); c1 += 1)
+ s0(2 * c0 - c1, -c0 + c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-0.in
new file mode 100644
index 00000000000..f4af71649b6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [i + j, i + 2j] : i >= 0 and i <= 4 and j >= 0 and j <= 6 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-1.c
new file mode 100644
index 00000000000..486514c0433
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-1.c
@@ -0,0 +1,3 @@
+for (int c0 = 0; c0 <= 14; c0 += 1)
+ for (int c1 = max(2 * c0 - 12, -c0 + 3 * floord(c0 - 1, 2) + 3); c1 <= min(2 * c0, c0 / 2 + 9); c1 += 3)
+ s0((2 * c0 - c1) / 3, (-c0 + 2 * c1) / 3);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-1.in
new file mode 100644
index 00000000000..504b220fbef
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [2i + j, i + 2j] : i >= 0 and i <= 4 and j >= 0 and j <= 6 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-2.c
new file mode 100644
index 00000000000..9748950ae52
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-2.c
@@ -0,0 +1,2 @@
+for (int c0 = -3; c0 <= 96; c0 += 1)
+ s0(c0, c0 + 4);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-2.in
new file mode 100644
index 00000000000..bc9af0c0063
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-2.in
@@ -0,0 +1,3 @@
+{ s0[i, 4 + i] -> [i, 4 + i] : i >= -3 and i <= 96 }
+{ : }
+{ [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-3.c b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-3.c
new file mode 100644
index 00000000000..86c197f7a95
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-3.c
@@ -0,0 +1 @@
+s0(n + 19);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-3.in b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-3.in
new file mode 100644
index 00000000000..ea1ac1ab914
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-3.in
@@ -0,0 +1,3 @@
+[n] -> { s0[19 + n] -> [19 + n] }
+{ : }
+[n] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-4.c b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-4.c
new file mode 100644
index 00000000000..27b3199c0c3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-4.c
@@ -0,0 +1 @@
+s0(n + 1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/substitution-4.in b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-4.in
new file mode 100644
index 00000000000..ecb07cd85bd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/substitution-4.in
@@ -0,0 +1,3 @@
+[n] -> { s0[i] -> [i] : exists (e0 = [(-1 - n + i)/18]: 18e0 = -1 - n + i and i <= 16 + n and i >= 1 + n) }
+{ : }
+[n] -> { [i0] -> separate[o0] : o0 >= 0; [i0] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-0.c
new file mode 100644
index 00000000000..bb3ef7fa252
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-0.c
@@ -0,0 +1,4 @@
+for (int c0 = 1; c0 <= min(n, 2 * b - 1); c0 += 1)
+ for (int c1 = max(-n + 1, -b + 1); c1 <= min(b - c0, n - c0); c1 += 1)
+ for (int c2 = max(1, c0 + c1); c2 <= min(n, n + c1); c2 += 1)
+ s0(-c0 - c1 + c2 + 1, -c1 + c2, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-0.in
new file mode 100644
index 00000000000..28a7deb1f05
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-0.in
@@ -0,0 +1,3 @@
+[n, b] -> { s0[i, j, k] -> [1 - i + j, -j + k, k] : i >= 1 and j >= i and j <= n and k >= 1 and k <= n and k <= -1 + b + i and k >= 1 - b + j }
+{ : }
+[n, b] -> { [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-1.c
new file mode 100644
index 00000000000..22ec83ec7ee
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-1.c
@@ -0,0 +1,4 @@
+for (int c0 = 1; c0 <= min(n, 2 * b - 1); c0 += 1)
+ for (int c1 = -b + 1; c1 <= b - c0; c1 += 1)
+ for (int c2 = max(1, c0 + c1); c2 <= min(n, n + c1); c2 += 1)
+ s0(-c0 - c1 + c2 + 1, -c1 + c2, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-1.in
new file mode 100644
index 00000000000..496aebe2e8f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-1.in
@@ -0,0 +1,3 @@
+[n, b] -> { s0[i, j, k] -> [1 - i + j, -j + k, k] : i >= 1 and j >= i and j <= n and k >= 1 and k <= n and k <= -1 + b + i and k >= 1 - b + j }
+[b, n] -> { : b >= 1 and n >= b }
+[n, b] -> { [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-2.c b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-2.c
new file mode 100644
index 00000000000..bb3ef7fa252
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-2.c
@@ -0,0 +1,4 @@
+for (int c0 = 1; c0 <= min(n, 2 * b - 1); c0 += 1)
+ for (int c1 = max(-n + 1, -b + 1); c1 <= min(b - c0, n - c0); c1 += 1)
+ for (int c2 = max(1, c0 + c1); c2 <= min(n, n + c1); c2 += 1)
+ s0(-c0 - c1 + c2 + 1, -c1 + c2, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-2.in b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-2.in
new file mode 100644
index 00000000000..28a7deb1f05
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-2.in
@@ -0,0 +1,3 @@
+[n, b] -> { s0[i, j, k] -> [1 - i + j, -j + k, k] : i >= 1 and j >= i and j <= n and k >= 1 and k <= n and k <= -1 + b + i and k >= 1 - b + j }
+{ : }
+[n, b] -> { [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-3.c b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-3.c
new file mode 100644
index 00000000000..22ec83ec7ee
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-3.c
@@ -0,0 +1,4 @@
+for (int c0 = 1; c0 <= min(n, 2 * b - 1); c0 += 1)
+ for (int c1 = -b + 1; c1 <= b - c0; c1 += 1)
+ for (int c2 = max(1, c0 + c1); c2 <= min(n, n + c1); c2 += 1)
+ s0(-c0 - c1 + c2 + 1, -c1 + c2, c2);
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-3.in b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-3.in
new file mode 100644
index 00000000000..496aebe2e8f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/syr2k-3.in
@@ -0,0 +1,3 @@
+[n, b] -> { s0[i, j, k] -> [1 - i + j, -j + k, k] : i >= 1 and j >= i and j <= n and k >= 1 and k <= n and k <= -1 + b + i and k >= 1 - b + j }
+[b, n] -> { : b >= 1 and n >= b }
+[n, b] -> { [i0, i1, i2] -> separate[o0] : o0 >= 2; [i0, i1, i2] -> atomic[o0] : o0 <= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check-sblock-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check-sblock-0.c
new file mode 100644
index 00000000000..c70e95bcb41
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check-sblock-0.c
@@ -0,0 +1,14 @@
+{
+ for (int c1 = 0; c1 <= 1; c1 += 1) {
+ if (c1 == 1) {
+ s0(1, 1, 1, 0, 0);
+ s0(1, 1, 1, N - 1, 0);
+ } else
+ for (int c3 = 0; c3 < N; c3 += 1)
+ s0(1, 0, 1, c3, 0);
+ }
+ for (int c1 = 0; c1 <= floord(T - 1, 1000); c1 += 1)
+ for (int c2 = 1000 * c1 + 1; c2 <= min(N + T - 3, N + 1000 * c1 + 997); c2 += 1)
+ for (int c3 = max(0, -N - 1000 * c1 + c2 + 2); c3 <= min(min(999, T - 1000 * c1 - 1), -1000 * c1 + c2 - 1); c3 += 1)
+ s1(2, 1000 * c1 + c3, 1, -1000 * c1 + c2 - c3, 1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check-sblock-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check-sblock-0.in
new file mode 100644
index 00000000000..b1f92ea71a7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check-sblock-0.in
@@ -0,0 +1,3 @@
+[T, N] -> { s1[2, t, 1, i, 1] -> [2, tb, t + i, t - 1000tb, 0] : 1000tb <= t and 1000tb >= -999 + t and i >= 1 and i <= -2 + N and t >= 0 and t <= -1 + T; s0[1, 0, 1, In_4, 0] -> [1, 0, 1, In_4, 0] : In_4 >= 0 and In_4 <= -1 + N; s0[1, 1, 1, 0, 0] -> [1, 1, 1, 0, 0]; s0[1, 1, 1, -1 + N, 0] -> [1, 1, 1, -1 + N, 0] }
+[T, N] -> { : T >= 0 and N >= 4 }
+[N] -> { [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 3; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check0-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check0-0.c
new file mode 100644
index 00000000000..5cf4bc9f5c8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check0-0.c
@@ -0,0 +1,13 @@
+{
+ for (int c1 = 0; c1 < N; c1 += 1)
+ s0(1, c1, 1, 0, 0);
+ for (int c1 = 0; c1 <= floord(T - 1, 500); c1 += 1)
+ for (int c2 = 1000 * c1; c2 <= min(N + 2 * T - 3, N + 1000 * c1 + 997); c2 += 1) {
+ for (int c3 = max(0, -((N + c2) % 2) - N - 1000 * c1 + c2 + 2); c3 <= min(min(998, 2 * T - 1000 * c1 - 2), -1000 * c1 + c2 - 2); c3 += 2) {
+ s1(2, 1000 * c1 + c3, 0, -1000 * c1 + c2 - c3, 1);
+ s2(2, 1000 * c1 + c3 + 1, 0, -1000 * c1 + c2 - c3 - 1, 1);
+ }
+ if (2 * T >= c2 + 1 && 1000 * c1 + 999 >= c2)
+ s1(2, -(c2 % 2) + c2, 0, c2 % 2, 1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check0-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check0-0.in
new file mode 100644
index 00000000000..ce585b0836c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-check0-0.in
@@ -0,0 +1,3 @@
+[T, N] -> { s1[2, t, 0, i, 1] -> [2, tb, t + i, t - 1000tb, 1] : exists (e0 = [(t - 1000tb)/2]: 2e0 = t - 1000tb and 1000tb <= t and 1000tb >= -999 + t and i >= 0 and i <= -1 + N and t >= 0 and t <= -2 + 2T); s0[1, In_2, 1, 0, 0] -> [1, In_2, 1, 0, 0] : In_2 >= 0 and In_2 <= -1 + N; s2[2, t, 0, i, 1] -> [2, tb, t + i, t - 1000tb, 1] : exists (e0 = [(-1 + t - 1000tb)/2]: 2e0 = -1 + t - 1000tb and 1000tb <= t and 1000tb >= -999 + t and i >= 1 and i <= -2 + N and t >= 1 and t <= -1 + 2T) }
+[T, N] -> { : T >= 0 and N >= 4 }
+[N] -> { [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 3; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-mp-i_ts-m_b-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-mp-i_ts-m_b-0.c
new file mode 100644
index 00000000000..41e3ae6094e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-mp-i_ts-m_b-0.c
@@ -0,0 +1,35 @@
+{
+ for (int c1 = -1; c1 < T; c1 += 1)
+ for (int c2 = 0; c2 < N; c2 += 1) {
+ if (c1 == -1) {
+ s0(1, -1, c2, 0, 0);
+ } else if (c2 == 0) {
+ s0(1, c1, 0, 0, 0);
+ } else if (c2 + 1 == N)
+ s0(1, c1, N - 1, 0, 0);
+ }
+ for (int c1 = 0; c1 <= floord(T - 1, 500); c1 += 1) {
+ for (int c3 = -((c1 + 9) / 8) + 2; c3 <= floord(N - 500 * c1 - 3, 4000) + 1; c3 += 1)
+ for (int c4 = max(500 * c1 + 1, 1000 * c1 + 4000 * c3 - 3999); c4 <= min(min(N + T - 3, 1000 * c1 + 4000 * c3 - 3000), 2 * N - 4000 * c3 + 3995); c4 += 1)
+ for (int c5 = max(0, -N - 500 * c1 + c4 + 2); c5 <= min(min(T - 500 * c1 - 1, -500 * c1 + c4 - 1), -500 * c1 - 2000 * c3 + (c4 + 1) / 2 + 1999); c5 += 1)
+ s1(2, 500 * c1 + c5, 1, -500 * c1 + c4 - c5, 1);
+ for (int c3 = max(-((T + 4000) / 4000) + 2, -((c1 + 9) / 8) + 2); c3 <= floord(N - 500 * c1 - 3, 4000) + 1; c3 += 1)
+ for (int c4 = max(1000 * c1 + 4000 * c3 - 3999, -4000 * c3 + 4000); c4 <= min(min(2 * T + 4000 * c3 - 4000, 1000 * c1 + 4000 * c3 - 3000), 2 * N - 4000 * c3 + 3995); c4 += 1)
+ s2(2, -2000 * c3 + (c4 + 1) / 2 + 1999, 1, 2000 * c3 + c4 - (c4 + 1) / 2 - 1999, 1);
+ for (int c3 = -((c1 + 7) / 8) + 1; c3 <= min(floord(N + T - 1000 * c1 - 1004, 4000) + 1, floord(N - 500 * c1 - 504, 4000) + 1); c3 += 1)
+ for (int c4 = max(500 * c1 + 1, 1000 * c1 + 4000 * c3 - 2999); c4 <= min(min(N + T - 3, N + 500 * c1 + 497), 1000 * c1 + 4000 * c3); c4 += 1)
+ for (int c5 = max(0, -N - 500 * c1 + c4 + 2); c5 <= min(min(499, T - 500 * c1 - 1), -500 * c1 + c4 - 1); c5 += 1)
+ s3(2, 500 * c1 + c5, 1, -500 * c1 + c4 - c5, 1);
+ for (int c3 = max(-((T + 4000) / 4000) + 1, -((c1 + 9) / 8) + 1); c3 <= floord(N - 500 * c1 - 3, 4000); c3 += 1)
+ for (int c4 = max(-4000 * c3, 1000 * c1 + 4000 * c3 + 1); c4 <= min(min(2 * N - 4000 * c3 - 5, 2 * T + 4000 * c3), 1000 * c1 + 4000 * c3 + 1000); c4 += 1)
+ s4(2, -2000 * c3 + (c4 + 1) / 2 - 1, 1, 2000 * c3 + c4 - (c4 + 1) / 2 + 1, 1);
+ for (int c3 = -((c1 + 8) / 8) + 1; c3 <= min(floord(N + T - 1000 * c1 - 4, 4000), floord(N - 500 * c1 + 496, 4000)); c3 += 1)
+ for (int c4 = max(1000 * c1 + 4000 * c3 + 1, -4000 * c3 + 2); c4 <= min(min(min(N + T - 3, N + 500 * c1 + 497), 2 * T + 4000 * c3 - 2), 1000 * c1 + 4000 * c3 + 998); c4 += 1)
+ for (int c5 = max(-N - 500 * c1 + c4 + 2, -500 * c1 - 2000 * c3 + (c4 + 1) / 2); c5 <= min(min(499, T - 500 * c1 - 1), -500 * c1 + c4 - 1); c5 += 1)
+ s5(2, 500 * c1 + c5, 1, -500 * c1 + c4 - c5, 1);
+ }
+ if (T >= 1)
+ for (int c3 = -((T + 3998) / 4000) + 1; c3 <= floord(N - T - 2, 4000) + 1; c3 += 1)
+ for (int c4 = max(T, 2 * T + 4000 * c3 - 4001); c4 < min(N + T - 2, 2 * T + 4000 * c3 - 1); c4 += 1)
+ s6(2, T - 1, 1, -T + c4 + 1, 1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-mp-i_ts-m_b-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-mp-i_ts-m_b-0.in
new file mode 100644
index 00000000000..0f86a1c38b9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-mp-i_ts-m_b-0.in
@@ -0,0 +1,3 @@
+[T, N] -> { s1[2, t, 1, i, 1] -> [2, tb, 1, proc, t + i, t - 500tb, 0] : 4000proc >= 3000 + t + i - 1000tb and 500tb <= t and 4000proc <= 3999 - t + i and i >= 1 and i <= -2 + N and t >= 0 and t <= -1 + T; s0[1, -1, c, 0, 0] -> [1, -1, c, 0, 0, 0, 0] : c >= 0 and c <= -1 + N; s0[1, b, 0, 0, 0] -> [1, b, 0, 0, 0, 0, 0] : b >= 0 and b <= -1 + T; s0[1, b, -1 + N, 0, 0] -> [1, b, -1 + N, 0, 0, 0, 0] : b >= 0 and b <= -1 + T; s6[2, -1 + T, 1, i, 1] -> [3, tb, 7, proc, -1 + T + i, -1 + T - 500tb, 0] : 500tb <= -1 + T and 500tb >= -500 + T and 4000proc >= 1 - T + i and 4000proc <= 4000 - T + i and i >= 1 and i <= -2 + N and T >= 1; s3[2, t, 1, i, 1] -> [2, tb, 3, proc, t + i, t - 500tb, 0] : 500tb <= t and 500tb >= -499 + t and 4000proc <= 2999 + t + i - 1000tb and 4000proc >= t + i - 1000tb and i >= 1 and i <= -2 + N and t >= 0 and t <= -1 + T; s2[2, t, 1, i, 1] -> [2, tb, 2, proc, t + i, t - 500tb, 0] : 500tb <= t and 500tb >= -499 + t and 4000proc <= 3999 - t + i and 4000proc >= 3998 - t + i and i >= 1 and i <= -2 + N and t >= 0 and t <= -1 + T; s4[2, t, 1, i, 1] -> [2, tb, 4, Out_4, t + i, t - 500tb, 0] : 500tb <= t and 500tb >= -499 + t and 4000Out_4 <= -1 - t + i and 4000Out_4 >= -2 - t + i and i >= 1 and i <= -2 + N and t >= 0 and t <= -1 + T; s5[2, t, 1, i, 1] -> [2, tb, 5, proc, t + i, t - 500tb, 0] : 500tb >= -499 + t and 4000proc <= -1 + t + i - 1000tb and 4000proc >= -t + i and i >= 1 and i <= -2 + N and t >= 0 and t <= -1 + T }
+[T, N] -> { : T >= 0 and N >= 4 }
+[N, T] -> { [i0, i1, i2, i3, i4, i5, i6] -> atomic[o0] : o0 <= 5; [i0, i1, i2, i3, i4, i5, i6] -> separate[o0] : o0 >= 6 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-orig0-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-orig0-0.c
new file mode 100644
index 00000000000..9eff756c5bd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-orig0-0.c
@@ -0,0 +1,10 @@
+{
+ for (int c1 = 0; c1 < N; c1 += 1)
+ s0(1, c1, 1, 0, 0);
+ for (int c1 = 0; c1 < T; c1 += 1) {
+ for (int c3 = 0; c3 < N; c3 += 1)
+ s1(2, c1, 0, c3, 1);
+ for (int c3 = 1; c3 < N - 1; c3 += 1)
+ s2(2, c1, 1, c3, 1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-orig0-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-orig0-0.in
new file mode 100644
index 00000000000..153ba7e9bfe
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/ts1d-orig0-0.in
@@ -0,0 +1,3 @@
+[T, N] -> { s1[2, In_2, 0, In_4, 1] -> [2, In_2, 0, In_4, 1] : In_4 >= 0 and In_4 <= -1 + N and In_2 >= 0 and In_2 <= -1 + T; s0[1, In_2, 1, 0, 0] -> [1, In_2, 1, 0, 0] : In_2 >= 0 and In_2 <= -1 + N; s2[2, In_2, 1, In_4, 1] -> [2, In_2, 1, In_4, 1] : In_4 >= 1 and In_4 <= -2 + N and In_2 >= 0 and In_2 <= -1 + T }
+[T, N] -> { : T >= 0 and N >= 4 }
+[N] -> { [i0, i1, i2, i3, i4] -> separate[o0] : o0 >= 4; [i0, i1, i2, i3, i4] -> atomic[o0] : o0 <= 3 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak1-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/wak1-0.c
new file mode 100644
index 00000000000..2c310e8d2ee
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak1-0.c
@@ -0,0 +1,27 @@
+{
+ for (int c0 = a2; c0 <= min(min(a1 - 1, a3 - 1), b2); c0 += 1)
+ s1(c0);
+ for (int c0 = a1; c0 <= min(b1, a3 - 1); c0 += 1) {
+ s0(c0);
+ if (c0 >= a2 && b2 >= c0)
+ s1(c0);
+ }
+ for (int c0 = max(max(a1, b1 + 1), a2); c0 <= min(a3 - 1, b2); c0 += 1)
+ s1(c0);
+ for (int c0 = a3; c0 <= b3; c0 += 1) {
+ if (c0 >= a1 && b1 >= c0)
+ s0(c0);
+ if (c0 >= a2 && b2 >= c0)
+ s1(c0);
+ s2(c0);
+ }
+ for (int c0 = max(max(a3, b3 + 1), a2); c0 <= min(a1 - 1, b2); c0 += 1)
+ s1(c0);
+ for (int c0 = max(max(a1, a3), b3 + 1); c0 <= b1; c0 += 1) {
+ s0(c0);
+ if (c0 >= a2 && b2 >= c0)
+ s1(c0);
+ }
+ for (int c0 = max(max(max(max(a1, b1 + 1), a3), b3 + 1), a2); c0 <= b2; c0 += 1)
+ s1(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak1-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/wak1-0.in
new file mode 100644
index 00000000000..4cf37cb3192
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak1-0.in
@@ -0,0 +1,3 @@
+[a3, b3, a2, b2, a1, b1] -> { s2[i] -> [i, 2] : i >= a3 and i <= b3; s0[i] -> [i, 0] : i >= a1 and i <= b1; s1[i] -> [i, 1] : i >= a2 and i <= b2 }
+{ : }
+[a1, b1] -> { [i0, i1] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak1-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/wak1-1.c
new file mode 100644
index 00000000000..7fdda1dd58c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak1-1.c
@@ -0,0 +1,55 @@
+{
+ for (int c0 = a2; c0 <= min(min(a1 - 1, a3 - 1), b2); c0 += 1)
+ s1(c0);
+ for (int c0 = a3; c0 <= min(min(a1 - 1, b3), a2 - 1); c0 += 1)
+ s2(c0);
+ for (int c0 = max(a3, a2); c0 <= min(min(a1 - 1, b3), b2); c0 += 1) {
+ s1(c0);
+ s2(c0);
+ }
+ for (int c0 = a1; c0 <= min(min(b1, a3 - 1), a2 - 1); c0 += 1)
+ s0(c0);
+ for (int c0 = max(a1, a2); c0 <= min(min(b1, a3 - 1), b2); c0 += 1) {
+ s0(c0);
+ s1(c0);
+ }
+ for (int c0 = max(max(a1, b1 + 1), a2); c0 <= min(a3 - 1, b2); c0 += 1)
+ s1(c0);
+ for (int c0 = max(a1, a3); c0 <= min(min(b1, b3), a2 - 1); c0 += 1) {
+ s0(c0);
+ s2(c0);
+ }
+ for (int c0 = max(max(a1, b1 + 1), a3); c0 <= min(b3, a2 - 1); c0 += 1)
+ s2(c0);
+ for (int c0 = max(max(a1, a3), a2); c0 <= min(min(b1, b3), b2); c0 += 1) {
+ s0(c0);
+ s1(c0);
+ s2(c0);
+ }
+ for (int c0 = max(max(max(a1, b1 + 1), a3), a2); c0 <= min(b3, b2); c0 += 1) {
+ s1(c0);
+ s2(c0);
+ }
+ for (int c0 = max(max(a3, a2), b2 + 1); c0 <= min(a1 - 1, b3); c0 += 1)
+ s2(c0);
+ for (int c0 = max(max(a1, a2), b2 + 1); c0 <= min(b1, a3 - 1); c0 += 1)
+ s0(c0);
+ for (int c0 = max(max(max(a1, a3), a2), b2 + 1); c0 <= min(b1, b3); c0 += 1) {
+ s0(c0);
+ s2(c0);
+ }
+ for (int c0 = max(max(max(max(a1, b1 + 1), a3), a2), b2 + 1); c0 <= b3; c0 += 1)
+ s2(c0);
+ for (int c0 = max(max(a3, b3 + 1), a2); c0 <= min(a1 - 1, b2); c0 += 1)
+ s1(c0);
+ for (int c0 = max(max(a1, a3), b3 + 1); c0 <= min(b1, a2 - 1); c0 += 1)
+ s0(c0);
+ for (int c0 = max(max(max(a1, a3), b3 + 1), a2); c0 <= min(b1, b2); c0 += 1) {
+ s0(c0);
+ s1(c0);
+ }
+ for (int c0 = max(max(max(max(a1, b1 + 1), a3), b3 + 1), a2); c0 <= b2; c0 += 1)
+ s1(c0);
+ for (int c0 = max(max(max(max(a1, a3), b3 + 1), a2), b2 + 1); c0 <= b1; c0 += 1)
+ s0(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak1-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/wak1-1.in
new file mode 100644
index 00000000000..75c96d49895
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak1-1.in
@@ -0,0 +1,3 @@
+[a3, b3, a2, b2, a1, b1] -> { s2[i] -> [i, 2] : i >= a3 and i <= b3; s0[i] -> [i, 0] : i >= a1 and i <= b1; s1[i] -> [i, 1] : i >= a2 and i <= b2 }
+{ : }
+[a1, b1] -> { [i0, i1] -> separate[o0] : o0 >= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak2-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/wak2-0.c
new file mode 100644
index 00000000000..3f51dbca273
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak2-0.c
@@ -0,0 +1,26 @@
+{
+ for (int c0 = a1; c0 <= min(b1, a2 - 1); c0 += 1)
+ for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
+ s0(c0, c1_0);
+ if (c2 >= d2 + 1) {
+ for (int c0 = max(a1, a2); c0 <= min(b1, b2); c0 += 1)
+ for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
+ s0(c0, c1_0);
+ } else
+ for (int c0 = a2; c0 <= b2; c0 += 1) {
+ if (c0 >= a1 && b1 >= c0)
+ for (int c1_0 = c1; c1_0 <= min(d1, c2 - 1); c1_0 += 1)
+ s0(c0, c1_0);
+ for (int c1_0 = c2; c1_0 <= d2; c1_0 += 1) {
+ if (c0 >= a1 && b1 >= c0 && c1_0 >= c1 && d1 >= c1_0)
+ s0(c0, c1_0);
+ s1(c0, c1_0);
+ }
+ if (c0 >= a1 && b1 >= c0)
+ for (int c1_0 = max(c1, d2 + 1); c1_0 <= d1; c1_0 += 1)
+ s0(c0, c1_0);
+ }
+ for (int c0 = max(max(a1, a2), b2 + 1); c0 <= b1; c0 += 1)
+ for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
+ s0(c0, c1_0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak2-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/wak2-0.in
new file mode 100644
index 00000000000..da7a6953bf3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak2-0.in
@@ -0,0 +1,3 @@
+[a2, b2, c2, d2, a1, b1, c1, d1] -> { s0[i, j] -> [i, j, 0] : i >= a1 and i <= b1 and j >= c1 and j <= d1; s1[i, j] -> [i, j, 1] : i >= a2 and i <= b2 and j >= c2 and j <= d2 }
+{ : }
+[a1, b1, c1, d1] -> { [i0, i1, i2] -> separate[o0] : o0 >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak2-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/wak2-1.c
new file mode 100644
index 00000000000..cc20357718a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak2-1.c
@@ -0,0 +1,35 @@
+{
+ for (int c0 = a1; c0 <= min(b1, a2 - 1); c0 += 1)
+ for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
+ s0(c0, c1_0);
+ if (c2 >= d2 + 1) {
+ for (int c0 = max(a1, a2); c0 <= min(b1, b2); c0 += 1)
+ for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
+ s0(c0, c1_0);
+ } else
+ for (int c0 = a2; c0 <= b2; c0 += 1) {
+ if (a1 >= c0 + 1) {
+ for (int c1_0 = c2; c1_0 <= d2; c1_0 += 1)
+ s1(c0, c1_0);
+ } else if (c0 >= b1 + 1) {
+ for (int c1_0 = c2; c1_0 <= d2; c1_0 += 1)
+ s1(c0, c1_0);
+ } else {
+ for (int c1_0 = c1; c1_0 <= min(d1, c2 - 1); c1_0 += 1)
+ s0(c0, c1_0);
+ for (int c1_0 = c2; c1_0 <= min(c1 - 1, d2); c1_0 += 1)
+ s1(c0, c1_0);
+ for (int c1_0 = max(c1, c2); c1_0 <= min(d1, d2); c1_0 += 1) {
+ s0(c0, c1_0);
+ s1(c0, c1_0);
+ }
+ for (int c1_0 = max(c1, d2 + 1); c1_0 <= d1; c1_0 += 1)
+ s0(c0, c1_0);
+ for (int c1_0 = max(max(c1, d1 + 1), c2); c1_0 <= d2; c1_0 += 1)
+ s1(c0, c1_0);
+ }
+ }
+ for (int c0 = max(max(a1, a2), b2 + 1); c0 <= b1; c0 += 1)
+ for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
+ s0(c0, c1_0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak2-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/wak2-1.in
new file mode 100644
index 00000000000..c92ac3c82c8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak2-1.in
@@ -0,0 +1,3 @@
+[a2, b2, c2, d2, a1, b1, c1, d1] -> { s0[i, j] -> [i, j, 0] : i >= a1 and i <= b1 and j >= c1 and j <= d1; s1[i, j] -> [i, j, 1] : i >= a2 and i <= b2 and j >= c2 and j <= d2 }
+{ : }
+[a1, b1, c1, d1] -> { [i0, i1, i2] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak3-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/wak3-0.c
new file mode 100644
index 00000000000..06be04aae78
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak3-0.c
@@ -0,0 +1,8 @@
+for (int c0 = a; c0 <= b + 20; c0 += 1) {
+ if (b >= c0)
+ s0(c0);
+ if (c0 >= a + 10 && b + 10 >= c0)
+ s1(c0);
+ if (c0 >= a + 20)
+ s2(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak3-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/wak3-0.in
new file mode 100644
index 00000000000..a4c4de9c88c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak3-0.in
@@ -0,0 +1,3 @@
+[a, b] -> { s2[i] -> [i, 2] : i >= 20 + a and i <= 20 + b; s0[i] -> [i, 0] : i >= a and i <= b; s1[i] -> [i, 1] : i >= 10 + a and i <= 10 + b }
+{ : }
+[a, b] -> { [i0, i1] -> atomic[o0] : o0 <= 0; [i0, i1] -> separate[o0] : o0 >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak3-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/wak3-1.c
new file mode 100644
index 00000000000..3045b2195cb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak3-1.c
@@ -0,0 +1,21 @@
+{
+ for (int c0 = a; c0 <= min(a + 9, b); c0 += 1)
+ s0(c0);
+ for (int c0 = a + 10; c0 <= min(a + 19, b); c0 += 1) {
+ s0(c0);
+ s1(c0);
+ }
+ for (int c0 = max(a + 10, b + 1); c0 <= min(a + 19, b + 10); c0 += 1)
+ s1(c0);
+ for (int c0 = a + 20; c0 <= b; c0 += 1) {
+ s0(c0);
+ s1(c0);
+ s2(c0);
+ }
+ for (int c0 = max(a + 20, b + 1); c0 <= b + 10; c0 += 1) {
+ s1(c0);
+ s2(c0);
+ }
+ for (int c0 = max(a + 20, b + 11); c0 <= b + 20; c0 += 1)
+ s2(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak3-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/wak3-1.in
new file mode 100644
index 00000000000..ae319e5ddeb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak3-1.in
@@ -0,0 +1,3 @@
+[a, b] -> { s2[i] -> [i, 2] : i >= 20 + a and i <= 20 + b; s0[i] -> [i, 0] : i >= a and i <= b; s1[i] -> [i, 1] : i >= 10 + a and i <= 10 + b }
+{ : }
+[a, b] -> { [i0, i1] -> atomic[o0] : o0 <= -1; [i0, i1] -> separate[o0] : o0 >= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak4-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/wak4-0.c
new file mode 100644
index 00000000000..5cefe4be4d3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak4-0.c
@@ -0,0 +1,4 @@
+for (int c0 = max(max(max(max(a1, a2), a3), a4), a5); c0 <= min(min(min(min(b1, b2), b3), b4), b5); c0 += 1) {
+ s0(c0);
+ s1(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak4-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/wak4-0.in
new file mode 100644
index 00000000000..9862df21458
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak4-0.in
@@ -0,0 +1,3 @@
+[a1, a2, a3, a4, a5, b1, b2, b3, b4, b5] -> { s0[i] -> [i, 0] : i >= a1 and i >= a2 and i >= a3 and i >= a4 and i >= a5 and i <= b1 and i <= b2 and i <= b3 and i <= b4 and i <= b5; s1[i] -> [i, 1] : i >= a1 and i >= a2 and i >= a3 and i >= a4 and i >= a5 and i <= b1 and i <= b2 and i <= b3 and i <= b4 and i <= b5 }
+{ : }
+[a1, a2, a3, a4, a5, b1, b2, b3, b4, b5] -> { [i0, i1] -> separate[o0] : o0 >= 1; [i0, i1] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak4-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/wak4-1.c
new file mode 100644
index 00000000000..5cefe4be4d3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak4-1.c
@@ -0,0 +1,4 @@
+for (int c0 = max(max(max(max(a1, a2), a3), a4), a5); c0 <= min(min(min(min(b1, b2), b3), b4), b5); c0 += 1) {
+ s0(c0);
+ s1(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/wak4-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/wak4-1.in
new file mode 100644
index 00000000000..076cdd1f48a
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/wak4-1.in
@@ -0,0 +1,3 @@
+[a1, a2, a3, a4, a5, b1, b2, b3, b4, b5] -> { s0[i] -> [i, 0] : i >= a1 and i >= a2 and i >= a3 and i >= a4 and i >= a5 and i <= b1 and i <= b2 and i <= b3 and i <= b4 and i <= b5; s1[i] -> [i, 1] : i >= a1 and i >= a2 and i >= a3 and i >= a4 and i >= a5 and i <= b1 and i <= b2 and i <= b3 and i <= b4 and i <= b5 }
+{ : }
+[a1, a2, a3, a4, a5, b1, b2, b3, b4, b5] -> { [i0, i1] -> separate[o0] : o0 >= 0; [i0, i1] -> atomic[o0] : o0 <= -1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/x-0.c b/polly/lib/External/isl/test_inputs/codegen/omega/x-0.c
new file mode 100644
index 00000000000..f890920d709
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/x-0.c
@@ -0,0 +1,14 @@
+for (int c0 = 1; c0 <= 11; c0 += 1) {
+ for (int c1 = max(1, c0 - 3); c1 <= min(c0, -c0 + 8); c1 += 1)
+ s1(c1, c0 - c1 + 1);
+ for (int c1 = max(1, -c0 + 9); c1 <= min(c0 - 4, -c0 + 12); c1 += 1)
+ s0(c1, c0 + c1 - 8);
+ for (int c1 = max(c0 - 3, -c0 + 9); c1 <= min(c0, -c0 + 12); c1 += 1) {
+ s0(c1, c0 + c1 - 8);
+ s1(c1, c0 - c1 + 1);
+ }
+ for (int c1 = max(c0 - 3, -c0 + 13); c1 <= min(8, c0); c1 += 1)
+ s1(c1, c0 - c1 + 1);
+ for (int c1 = max(c0 + 1, -c0 + 9); c1 <= min(8, -c0 + 12); c1 += 1)
+ s0(c1, c0 + c1 - 8);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/x-0.in b/polly/lib/External/isl/test_inputs/codegen/omega/x-0.in
new file mode 100644
index 00000000000..24340efe4d8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/x-0.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [8 - i + j, i, 0] : i >= 1 and i <= 8 and j >= 1 and j <= 4; s1[i, j] -> [-1 + i + j, i, 1] : i >= 1 and i <= 8 and j >= 1 and j <= 4 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/x-1.c b/polly/lib/External/isl/test_inputs/codegen/omega/x-1.c
new file mode 100644
index 00000000000..f890920d709
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/x-1.c
@@ -0,0 +1,14 @@
+for (int c0 = 1; c0 <= 11; c0 += 1) {
+ for (int c1 = max(1, c0 - 3); c1 <= min(c0, -c0 + 8); c1 += 1)
+ s1(c1, c0 - c1 + 1);
+ for (int c1 = max(1, -c0 + 9); c1 <= min(c0 - 4, -c0 + 12); c1 += 1)
+ s0(c1, c0 + c1 - 8);
+ for (int c1 = max(c0 - 3, -c0 + 9); c1 <= min(c0, -c0 + 12); c1 += 1) {
+ s0(c1, c0 + c1 - 8);
+ s1(c1, c0 - c1 + 1);
+ }
+ for (int c1 = max(c0 - 3, -c0 + 13); c1 <= min(8, c0); c1 += 1)
+ s1(c1, c0 - c1 + 1);
+ for (int c1 = max(c0 + 1, -c0 + 9); c1 <= min(8, -c0 + 12); c1 += 1)
+ s0(c1, c0 + c1 - 8);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/omega/x-1.in b/polly/lib/External/isl/test_inputs/codegen/omega/x-1.in
new file mode 100644
index 00000000000..24340efe4d8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/omega/x-1.in
@@ -0,0 +1,3 @@
+{ s0[i, j] -> [8 - i + j, i, 0] : i >= 1 and i <= 8 and j >= 1 and j <= 4; s1[i, j] -> [-1 + i + j, i, 1] : i >= 1 and i <= 8 and j >= 1 and j <= 4 }
+{ : }
+{ [i0, i1, i2] -> separate[o0] : o0 >= 1; [i0, i1, i2] -> atomic[o0] : o0 <= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/README b/polly/lib/External/isl/test_inputs/codegen/pldi2012/README
new file mode 100644
index 00000000000..316e8387782
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/README
@@ -0,0 +1,2 @@
+These examples are taken from the "Polyhedra Scanning Revisited" paper
+by Chun Chen.
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_b.c b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_b.c
new file mode 100644
index 00000000000..18ca3702186
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_b.c
@@ -0,0 +1,9 @@
+for (int c0 = 1; c0 <= 100; c0 += 1) {
+ if (n >= 2)
+ s0(c0);
+ for (int c1 = 1; c1 <= 100; c1 += 1) {
+ if (n >= 2)
+ s1(c0, c1);
+ s2(c0, c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_b.in b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_b.in
new file mode 100644
index 00000000000..93149176bc4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_b.in
@@ -0,0 +1,5 @@
+[n] -> { s0[i] -> [i,0] : 1 <= i <= 100 and n > 1;
+ s1[i,j] -> [i,j] : 1 <= i,j <= 100 and n > 1;
+ s2[i,j] -> [i,j] : 1 <= i,j <= 100 }
+[n] -> { : }
+[n] -> { [i,j] -> separate[x] : x >= 2 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_c.c b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_c.c
new file mode 100644
index 00000000000..d1ce579aa97
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_c.c
@@ -0,0 +1,11 @@
+for (int c0 = 1; c0 <= 100; c0 += 1) {
+ if (n >= 2) {
+ s0(c0);
+ for (int c1 = 1; c1 <= 100; c1 += 1) {
+ s1(c0, c1);
+ s2(c0, c1);
+ }
+ } else
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ s2(c0, c1);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_c.in b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_c.in
new file mode 100644
index 00000000000..06a32663ec8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_c.in
@@ -0,0 +1,5 @@
+[n] -> { s0[i] -> [i,0] : 1 <= i <= 100 and n > 1;
+ s1[i,j] -> [i,j] : 1 <= i,j <= 100 and n > 1;
+ s2[i,j] -> [i,j] : 1 <= i,j <= 100 }
+[n] -> { : }
+[n] -> { [i,j] -> separate[x] : x >= 1 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_d.c b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_d.c
new file mode 100644
index 00000000000..570cbe5556f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_d.c
@@ -0,0 +1,12 @@
+if (n >= 2) {
+ for (int c0 = 1; c0 <= 100; c0 += 1) {
+ s0(c0);
+ for (int c1 = 1; c1 <= 100; c1 += 1) {
+ s1(c0, c1);
+ s2(c0, c1);
+ }
+ }
+} else
+ for (int c0 = 1; c0 <= 100; c0 += 1)
+ for (int c1 = 1; c1 <= 100; c1 += 1)
+ s2(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_d.in b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_d.in
new file mode 100644
index 00000000000..339e39d8cee
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure7_d.in
@@ -0,0 +1,5 @@
+[n] -> { s0[i] -> [i,0] : 1 <= i <= 100 and n > 1;
+ s1[i,j] -> [i,j] : 1 <= i,j <= 100 and n > 1;
+ s2[i,j] -> [i,j] : 1 <= i,j <= 100 }
+[n] -> { : }
+[n] -> { [i,j] -> separate[x] : x >= 0 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_a.c b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_a.c
new file mode 100644
index 00000000000..4608d61d8db
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_a.c
@@ -0,0 +1,3 @@
+for (int c0 = 1; c0 <= n; c0 += 4)
+ for (int c1 = c0; c1 <= n; c1 += 3)
+ s0(c0, c1);
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_a.in b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_a.in
new file mode 100644
index 00000000000..df6543cce22
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_a.in
@@ -0,0 +1,4 @@
+[n] -> { s0[i,j] -> [i,j] : exists alpha, beta: 1 <= i <= n and i <= j <= n and
+ i = 1 + 4 alpha and j = i + 3 beta}
+[n] -> { : }
+[n] -> {}
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_b.c b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_b.c
new file mode 100644
index 00000000000..d7fa3cd8a37
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_b.c
@@ -0,0 +1,8 @@
+{
+ for (int c0 = 2; c0 < n - 1; c0 += 4) {
+ s1(c0);
+ s0(c0 + 2);
+ }
+ if (n >= 2 && n % 4 >= 2)
+ s1(-(n % 4) + n + 2);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_b.in b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_b.in
new file mode 100644
index 00000000000..2effb0a09cd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/pldi2012/figure8_b.in
@@ -0,0 +1,4 @@
+[n] -> { s0[i] -> [i] : exists alpha: 1 <= i <= n and i = 4 alpha;
+ s1[i] -> [i] : exists alpha: 1 <= i <= n and i = 4 alpha + 2 }
+[n] -> { : }
+[n] -> { }
diff --git a/polly/lib/External/isl/test_inputs/codegen/roman.c b/polly/lib/External/isl/test_inputs/codegen/roman.c
new file mode 100644
index 00000000000..1dd43c52012
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/roman.c
@@ -0,0 +1,32 @@
+{
+ for (int c1 = 0; c1 <= min(np1 - i, -i + 1); c1 += 1) {
+ S_9(c1);
+ S_12(c1);
+ }
+ for (int c1 = max(0, -i + 2); c1 <= -((-np1 + i + 4294967295) % 4294967296) + 4294967295; c1 += 1) {
+ S_9(c1);
+ S_10(c1);
+ for (int c3 = 0; c3 <= min(19, i + c1 - 3); c3 += 1) {
+ S_15(c1, c3);
+ for (int c5 = 0; c5 < c3; c5 += 1) {
+ S_16(c1, c3, c5);
+ S_17(c1, c3, c5);
+ }
+ S_16(c1, c3, c3);
+ S_18(c1, c3);
+ S_24(c1, c3);
+ S_19(c1, c3);
+ }
+ if (np1 >= i && i + c1 <= 21) {
+ S_15(c1, i + c1 - 2);
+ for (int c5 = 0; c5 < i + c1 - 2; c5 += 1) {
+ S_16(c1, i + c1 - 2, c5);
+ S_17(c1, i + c1 - 2, c5);
+ }
+ S_16(c1, i + c1 - 2, i + c1 - 2);
+ S_18(c1, i + c1 - 2);
+ S_24(c1, i + c1 - 2);
+ }
+ S_12(c1);
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/roman.in b/polly/lib/External/isl/test_inputs/codegen/roman.in
new file mode 100644
index 00000000000..55182a6efdb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/roman.in
@@ -0,0 +1,5 @@
+# Older versions of isl would get confused on this input due to disappearing
+# div constraints.
+[np1, i] -> { S_17[i0, i1, i2] -> [0, i0, 2, i1, 1, i2, 1] : exists (e0 = [(np1 - i)/4294967296], e1 = [(-2 + i + i0)/4294967296], e2 = [(i1)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20 and i1 >= 0 and 4294967296e1 <= -2 + i + i0 and 4294967296e1 >= -4294967297 + i + i0 and 4294967296e1 <= -2 + i + i0 - i1 and i1 <= 19 and i2 >= 0 and 4294967296e2 <= i1 and 4294967296e2 >= -4294967295 + i1 and 4294967296e2 <= i1 - i2 and i2 <= 19 and i0 >= 2 - i and i2 <= -1 + i1); S_18[i0, i1] -> [0, i0, 2, i1, 2, 0, 0] : exists (e0 = [(np1 - i)/4294967296], e1 = [(-2 + i + i0)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20 and i1 >= 0 and 4294967296e1 <= -2 + i + i0 and 4294967296e1 >= -4294967297 + i + i0 and 4294967296e1 <= -2 + i + i0 - i1 and i1 <= 19 and i0 >= 2 - i); S_24[i0, i1] -> [0, i0, 2, i1, 3, 0, 0] : exists (e0 = [(np1 - i)/4294967296], e1 = [(-2 + i + i0)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20 and i1 >= 0 and 4294967296e1 <= -2 + i + i0 and 4294967296e1 >= -4294967297 + i + i0 and 4294967296e1 <= -2 + i + i0 - i1 and i1 <= 19 and i0 >= 2 - i); S_15[i0, i1] -> [0, i0, 2, i1, 0, 0, 0] : exists (e0 = [(np1 - i)/4294967296], e1 = [(-2 + i + i0)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20 and i1 >= 0 and 4294967296e1 <= -2 + i + i0 and 4294967296e1 >= -4294967297 + i + i0 and 4294967296e1 <= -2 + i + i0 - i1 and i1 <= 19 and i0 >= 2 - i); S_9[i0] -> [0, i0, 0, 0, 0, 0, 0] : exists (e0 = [(np1 - i)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20); S_10[i0] -> [0, i0, 1, 0, 0, 0, 0] : exists (e0 = [(np1 - i)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20 and i0 >= 2 - i); S_19[i0, i1] -> [0, i0, 2, i1, 4, 0, 0] : exists (e0 = [(np1 - i)/4294967296], e1 = [(-2 + i + i0)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20 and i1 >= 0 and 4294967296e1 <= -2 + i + i0 and 4294967296e1 >= -4294967297 + i + i0 and 4294967296e1 <= -2 + i + i0 - i1 and i1 <= 19 and i0 >= 2 - i and i1 <= -3 + i + i0); S_12[i0] -> [0, i0, 3, 0, 0, 0, 0] : exists (e0 = [(np1 - i)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20); S_16[i0, i1, i2] -> [0, i0, 2, i1, 1, i2, 0] : exists (e0 = [(np1 - i)/4294967296], e1 = [(-2 + i + i0)/4294967296], e2 = [(i1)/4294967296]: i0 >= 0 and 4294967296e0 <= np1 - i and 4294967296e0 >= -4294967295 + np1 - i and 4294967296e0 <= np1 - i - i0 and i0 <= 20 and i1 >= 0 and 4294967296e1 <= -2 + i + i0 and 4294967296e1 >= -4294967297 + i + i0 and 4294967296e1 <= -2 + i + i0 - i1 and i1 <= 19 and i2 >= 0 and 4294967296e2 <= i1 and 4294967296e2 >= -4294967295 + i1 and 4294967296e2 <= i1 - i2 and i2 <= 19 and i0 >= 2 - i) }
+[np1, i] -> { : exists (e0 = [(np1 - i)/4294967296]: 4294967296e0 <= np1 - i and 4294967296e0 >= -20 + np1 - i and np1 >= -2147483648 and np1 <= 2147483647 and i >= -2147483648 and i <= 2147483647) }
+[np1, i] -> { [i0, i1, i2, i3, i4, i5, i6] -> separate[o0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/separate.c b/polly/lib/External/isl/test_inputs/codegen/separate.c
new file mode 100644
index 00000000000..042e3e77c6c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separate.c
@@ -0,0 +1,8 @@
+{
+ a(0);
+ for (int c0 = 1; c0 <= 9; c0 += 1) {
+ b(c0 - 1);
+ a(c0);
+ }
+ b(9);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/separate.in b/polly/lib/External/isl/test_inputs/codegen/separate.in
new file mode 100644
index 00000000000..58486c3d356
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separate.in
@@ -0,0 +1,3 @@
+{ a[i] -> [i] : 0 <= i < 10; b[i] -> [i+1] : 0 <= i < 10 }
+{ : }
+{ [i] -> separate[x] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/separate2.c b/polly/lib/External/isl/test_inputs/codegen/separate2.c
new file mode 100644
index 00000000000..81668215c9e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separate2.c
@@ -0,0 +1,9 @@
+if ((length - 1) % 16 <= 14)
+ for (int c0 = 0; c0 <= 1; c0 += 1)
+ for (int c5 = 0; c5 <= 31; c5 += 1)
+ for (int c6 = max(0, 2 * ((length - 1) % 16) + 2 * c5 - 60); c6 <= 30; c6 += 1) {
+ if (length + c5 >= ((length - 1) % 32) + 2 && (length - 1) % 32 >= c5 && 2 * ((length - 1) % 32) + c6 >= 2 * c5 && 2 * c5 + 30 >= 2 * ((length - 1) % 32) + c6 && 2 * ((length - 1) % 32) + c6 == 2 * ((length - 1) % 16) + 2 * c5 && (2 * c5 - c6) % 32 == 0)
+ S_3(c0, 0, (c6 / 2) - ((length - 1) % 16) + length - 1);
+ if (length <= 16 && length >= c5 + 1 && c6 >= 1 && length >= c6)
+ S_0(c0, c5, c6 - 1);
+ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/separate2.in b/polly/lib/External/isl/test_inputs/codegen/separate2.in
new file mode 100644
index 00000000000..8f4ebf1a5b9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separate2.in
@@ -0,0 +1,4 @@
+# Check that rational affine expressions are printer properly.
+[tsteps, length] -> { S_0[iter, i, j] -> [iter, 0, o2, o3, 0, o5, o6, 4] : exists (e0 = [(o2)/32], e1 = [(o3)/32], e2 = [(-i + o5)/32], e3 = [(-31 + j - o6)/32]: tsteps = 2 and 32e0 = o2 and 32e1 = o3 and 32e2 = -i + o5 and 32e3 = -31 + j - o6 and o2 <= i and o2 >= -31 + i and o3 <= 1 + j and o3 >= -30 + j and o5 >= 0 and o5 <= 31 and o6 >= 0 and o6 <= 31 and i <= -1 + length and i >= 0 and iter >= 0 and iter <= 1 and j <= -1 + length and j >= 0 and o2 >= -31 + length and o3 >= -30 + 2length); S_3[iter, 0, j] -> [iter, 0, o2, o3, o4, o5, o6, 2] : exists (e0 = [(o2)/32], e1 = [(o3)/32], e2 = [(o4)/32], e3 = [(-2o5 + o6)/32], e4 = [(j - o5)/32]: tsteps = 2 and 32e0 = o2 and 32e1 = o3 and 32e2 = o4 and 32e3 = -2o5 + o6 and 32e4 = j - o5 and iter <= 1 and j <= -1 + length and o2 <= j and o2 >= -31 + j and o3 <= 2j and o3 >= -30 + 2j and o4 >= 0 and o4 <= 31 and o5 >= 0 and o5 <= 31 and o6 >= 0 and o6 <= 30 and j >= 1 and iter >= 0 and o2 >= -31 + length and o3 >= -30 + 2length) }
+[tsteps, length] -> { : length >= 1 and length <= 1024 and tsteps = 2 }
+{ [o0,o1,o2,o3,o4,o5,o6,o7] -> separate[x] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/separation_class.c b/polly/lib/External/isl/test_inputs/codegen/separation_class.c
new file mode 100644
index 00000000000..daac0d76a88
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separation_class.c
@@ -0,0 +1,17 @@
+{
+ for (int c0 = 0; c0 <= 8; c0 += 1) {
+ for (int c1 = 0; c1 <= -c0 + 8; c1 += 1)
+ for (int c2 = 10 * c0; c2 <= 10 * c0 + 9; c2 += 1)
+ for (int c3 = 10 * c1; c3 <= 10 * c1 + 9; c3 += 1)
+ A(c2, c3);
+ for (int c1 = -c0 + 9; c1 <= -c0 + 10; c1 += 1)
+ for (int c2 = 10 * c0; c2 <= min(10 * c0 + 9, -10 * c1 + 100); c2 += 1)
+ for (int c3 = 10 * c1; c3 <= min(10 * c1 + 9, -c2 + 100); c3 += 1)
+ A(c2, c3);
+ }
+ for (int c0 = 9; c0 <= 10; c0 += 1)
+ for (int c1 = 0; c1 <= -c0 + 10; c1 += 1)
+ for (int c2 = 10 * c0; c2 <= min(10 * c0 + 9, -10 * c1 + 100); c2 += 1)
+ for (int c3 = 10 * c1; c3 <= min(10 * c1 + 9, -c2 + 100); c3 += 1)
+ A(c2, c3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/separation_class.in b/polly/lib/External/isl/test_inputs/codegen/separation_class.in
new file mode 100644
index 00000000000..f42ea27fa56
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separation_class.in
@@ -0,0 +1,6 @@
+{ A[i,j] -> [([i/10]),[j/10],i,j] : 0 <= i,j and i + j <= 100 }
+{ : }
+{ [a,b,c,d] -> separation_class[[0]->[0]] :
+ exists b': 0 <= 10a,10b' and 10a+9+10b'+9 <= 100;
+ [a,b,c,d] -> separation_class[[1]->[0]] :
+ 0 <= 10a,10b and 10a+9+10b+9 <= 100 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/separation_class2.c b/polly/lib/External/isl/test_inputs/codegen/separation_class2.c
new file mode 100644
index 00000000000..0fdbc3238e3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separation_class2.c
@@ -0,0 +1,15 @@
+{
+ for (int c0 = 0; c0 < -(n % 8) + n; c0 += 8) {
+ for (int c1 = 0; c1 < -(n % 8) + n; c1 += 8)
+ for (int c2 = 0; c2 <= 7; c2 += 1)
+ for (int c3 = 0; c3 <= 7; c3 += 1)
+ A(c0 + c2, c1 + c3);
+ for (int c2 = 0; c2 <= 7; c2 += 1)
+ for (int c3 = 0; c3 < n % 8; c3 += 1)
+ A(c0 + c2, -((n - 1) % 8) + n + c3 - 1);
+ }
+ for (int c1 = 0; c1 < n; c1 += 8)
+ for (int c2 = 0; c2 < n % 8; c2 += 1)
+ for (int c3 = 0; c3 <= min(7, n - c1 - 1); c3 += 1)
+ A(-((n - 1) % 8) + n + c2 - 1, c1 + c3);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/separation_class2.in b/polly/lib/External/isl/test_inputs/codegen/separation_class2.in
new file mode 100644
index 00000000000..5469626ae7e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separation_class2.in
@@ -0,0 +1,3 @@
+[n] -> { A[i,j] -> [it,jt, ip, jp] : 0 <= i,j < n and ip = i % 8 and it = i - ip and jp = j % 8 and jt = j - jp}
+[n] -> { : n >= 10}
+[n] -> { [it, jt, ip, jp] -> separation_class[[x]->[1]]: (exists id, jd: 0 <= x <= 3 and it < n - id and jt < n - jd and id = n %8 and jd = n %8)}
diff --git a/polly/lib/External/isl/test_inputs/codegen/separation_class3.c b/polly/lib/External/isl/test_inputs/codegen/separation_class3.c
new file mode 100644
index 00000000000..d21b19c29bc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separation_class3.c
@@ -0,0 +1,29 @@
+for (int c0 = 0; c0 <= 4; c0 += 1) {
+ if (c0 == 0) {
+ S_0(0, 4);
+ } else {
+ S_0(2 * c0 - 1, 1);
+ if (c0 == 4) {
+ for (int c6 = 3; c6 <= 5; c6 += 1)
+ S_0(7, c6);
+ } else
+ for (int c4 = 2 * c0 - 1; c4 <= 2 * c0; c4 += 1)
+ for (int c6 = -2 * c0 + c4 + 4; c6 <= 2 * c0 - c4 + 4; c6 += 1)
+ S_0(c4, c6);
+ }
+ for (int c4 = max(0, 2 * c0 - 1); c4 <= min(7, 2 * c0); c4 += 1)
+ for (int c6 = -2 * c0 + c4 + 8; c6 <= 8; c6 += 1)
+ S_0(c4, c6);
+ if (c0 >= 1 && c0 <= 3) {
+ for (int c2 = 0; c2 <= 1; c2 += 1)
+ for (int c4 = 2 * c0 - 1; c4 <= 2 * c0; c4 += 1)
+ for (int c6 = 2 * c0 + 4 * c2 - c4 + 1; c6 <= -2 * c0 + 4 * c2 + c4 + 3; c6 += 1)
+ S_0(c4, c6);
+ } else if (c0 == 4) {
+ for (int c2 = 0; c2 <= 1; c2 += 1)
+ S_0(7, 4 * c2 + 2);
+ } else
+ for (int c2 = 0; c2 <= 1; c2 += 1)
+ for (int c6 = 4 * c2 + 1; c6 <= 4 * c2 + 3; c6 += 1)
+ S_0(0, c6);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/separation_class3.in b/polly/lib/External/isl/test_inputs/codegen/separation_class3.in
new file mode 100644
index 00000000000..1aaf2517c18
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separation_class3.in
@@ -0,0 +1,4 @@
+{ S_0[t, i] -> [o0, 1, o2, 0, t, 0, i] : 4o2 >= -4 + t + i - 2o0 and 4o2 >= -3 - t + i + 2o0 and 2o0 <= 1 + t and 2o0 >= t and 4o2 <= -1 + t + i - 2o0 and t >= 0 and t <= 7 and i >= 1 and i <= 8; S_0[t, i] -> [o0, 0, o2, 0, t, 0, i] : 4o2 >= t + i - 2o0 and 4o2 <= -t + i + 2o0 and 2o0 <= 1 + t and 2o0 >= t and t >= 0 and t <= 7 and i >= 1 and i <= 8 }
+{:}
+{ [i0, 1, i2, i3, i4, i5, i6] -> separation_class[[2] -> [0]] : i2 <= 1 and i2 >= 0 and i0 <= 3 and i0 >= 1; [i0, 0, 1, i3, i4, i5, i6] -> separation_class[[2] -> [0]] : i0 <= 3 and i0 >= 1; [i0, i1, i2, i3, i4, i5, i6] -> unroll[1] }
+
diff --git a/polly/lib/External/isl/test_inputs/codegen/separation_class4.c b/polly/lib/External/isl/test_inputs/codegen/separation_class4.c
new file mode 100644
index 00000000000..2ff23642e8d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separation_class4.c
@@ -0,0 +1,20 @@
+for (int c0 = 0; c0 <= 128; c0 += 1) {
+ if (c0 <= 127) {
+ if (c0 == 0) {
+ for (int c3 = 0; c3 <= 1; c3 += 1)
+ for (int c5 = c3 + 58; c5 <= -c3 + 61; c5 += 1)
+ S_0(c3, c5);
+ } else
+ for (int c2 = 1; c2 <= 2; c2 += 1)
+ for (int c3 = max(4 * c0 - 2, 4 * c0 + 6 * c2 - 12); c3 <= min(4 * c0 + 1, 4 * c0 + 6 * c2 - 7); c3 += 1)
+ for (int c5 = max(4 * c0 - c3 + 57, -4 * c0 + c3 + 58); c5 <= min(4 * c0 - c3 + 61, -4 * c0 + c3 + 62); c5 += 1)
+ S_0(c3, c5);
+ for (int c2 = 1; c2 <= 2; c2 += 1)
+ for (int c3 = max(4 * c0, 4 * c0 + 6 * c2 - 10); c3 <= min(4 * c0 + 3, 4 * c0 + 6 * c2 - 5); c3 += 1)
+ for (int c5 = max(-4 * c0 + c3 + 59, 4 * c0 - c3 + 62); c5 <= min(-4 * c0 + c3 + 63, 4 * c0 - c3 + 66); c5 += 1)
+ S_0(c3, c5);
+ } else
+ for (int c3 = 510; c3 <= 511; c3 += 1)
+ for (int c5 = -c3 + 569; c5 < c3 - 449; c5 += 1)
+ S_0(c3, c5);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/separation_class4.in b/polly/lib/External/isl/test_inputs/codegen/separation_class4.in
new file mode 100644
index 00000000000..c04dd79bf23
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/separation_class4.in
@@ -0,0 +1,10 @@
+# Check that isl is not confused by the combination of separation classes
+# and unroll.
+{ S_0[t, i] -> [o0, 1, o9, t] : 4o0 >= -3 + t and 4o0 <= t and i >= 60 and i <= 65 and 6o9 >= 5 + t - 4o0 and 6o9 <= 10 + t - 4o0 and 4o0 <= -62 + t + i and 4o0 >= 59 + t - i and o0 >= 0 and o0 <= 127 and t <= 511 and t >= 0 and 4o0 >= -66 + t + i and 4o0 <= 63 + t - i;
+S_0[t, i] -> [o0, 0, o9, t] : 4o0 >= -1 + t and 4o0 <= 2 + t and i >= 57 and i <= 62 and 6o9 >= 7 + t - 4o0 and 6o9 <= 12 + t - 4o0 and t >= 0 and t <= 511 and 4o0 <= -57 + t + i and 4o0 >= 58 + t - i and o0 >= 0 and o0 <= 128 and 4o0 >= -61 + t + i and 4o0 <= 62 + t - i }
+{ : }
+{ [i0, i1, i2, t] -> unroll[1];
+[i0, 1, i2, t] -> separation_class[[1] -> [0]]
+ : 0 <= i0 <= 127;
+[i0, 0, i2, t] -> separation_class[[1] -> [0]]
+ : 1 <= i0 <= 127}
diff --git a/polly/lib/External/isl/test_inputs/codegen/shift.c b/polly/lib/External/isl/test_inputs/codegen/shift.c
new file mode 100644
index 00000000000..f4156bca99b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/shift.c
@@ -0,0 +1,4 @@
+for (int c0 = 0; c0 <= 9; c0 += 1) {
+ A(c0);
+ B(c0);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/shift.in b/polly/lib/External/isl/test_inputs/codegen/shift.in
new file mode 100644
index 00000000000..702c5275621
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/shift.in
@@ -0,0 +1,3 @@
+{ A[i] -> [2i]: 0 <= i < 10; B[i] -> [2i+1] : 0 <= i < 10 }
+{ : }
+{ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/shift2.c b/polly/lib/External/isl/test_inputs/codegen/shift2.c
new file mode 100644
index 00000000000..30ea633b674
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/shift2.c
@@ -0,0 +1,43 @@
+for (int c0 = 0; c0 <= 1; c0 += 1) {
+ for (int c2 = 0; c2 <= length; c2 += 32) {
+ if (length >= c2 + 1) {
+ for (int c3 = 0; c3 <= length; c3 += 32) {
+ for (int c5 = 0; c5 <= min(31, length - c2 - 1); c5 += 1) {
+ for (int c6 = max(0, -c3 + 1); c6 <= min(min(31, length - c3), 2 * c2 - c3 + 2 * c5 - 1); c6 += 1)
+ S_0(c0, c2 + c5, c3 + c6 - 1);
+ if (c2 + c5 >= 1 && 2 * c2 + 2 * c5 >= c3 && c3 + 30 >= 2 * c2 + 2 * c5) {
+ S_3(c0, 0, c2 + c5);
+ if (length >= 2 * c2 + 2 * c5)
+ S_0(c0, c2 + c5, 2 * c2 + 2 * c5 - 1);
+ }
+ for (int c6 = max(0, 2 * c2 - c3 + 2 * c5 + 1); c6 <= min(31, length - c3); c6 += 1)
+ S_0(c0, c2 + c5, c3 + c6 - 1);
+ }
+ if (length <= 15 && c2 == 0 && c3 == 0)
+ S_4(c0);
+ if (c3 >= 2 * c2 && 2 * c2 + 32 >= c3)
+ for (int c4 = 1; c4 <= min(min(31, length - 2), (c3 / 2) + 14); c4 += 1)
+ for (int c5 = max((c3 / 2) - c2, -c2 + c4 + 1); c5 <= min(length - c2 - 1, (c3 / 2) - c2 + 15); c5 += 1)
+ S_3(c0, c4, c2 + c5);
+ }
+ for (int c3 = max(2 * c2, -(length % 32) + length + 32); c3 <= min(2 * length - 2, 2 * c2 + 62); c3 += 32)
+ for (int c4 = 0; c4 <= min(31, length - 2); c4 += 1) {
+ for (int c5 = max((c3 / 2) - c2, -c2 + c4 + 1); c5 <= min(length - c2 - 1, (c3 / 2) - c2 + 15); c5 += 1)
+ S_3(c0, c4, c2 + c5);
+ if (c3 + 30 >= 2 * length && c4 == 0)
+ S_4(c0);
+ }
+ if (c2 + 16 == length && (length - 16) % 32 == 0)
+ S_4(c0);
+ } else if (length == 0) {
+ S_4(c0);
+ } else
+ S_4(c0);
+ }
+ for (int c1 = 32; c1 < length - 1; c1 += 32)
+ for (int c2 = c1; c2 < length; c2 += 32)
+ for (int c3 = c2; c3 <= min(length - 1, c2 + 31); c3 += 16)
+ for (int c4 = 0; c4 <= min(min(31, length - c1 - 2), -c1 + c3 + 14); c4 += 1)
+ for (int c5 = max(-c2 + c3, c1 - c2 + c4 + 1); c5 <= min(length - c2 - 1, -c2 + c3 + 15); c5 += 1)
+ S_3(c0, c1 + c4, c2 + c5);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/shift2.in b/polly/lib/External/isl/test_inputs/codegen/shift2.in
new file mode 100644
index 00000000000..3c05fac3687
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/shift2.in
@@ -0,0 +1,5 @@
+# Check that the shifting code is not confused by domains that
+# have a non-obviously fixed value.
+[tsteps, length] -> { S_4[iter] -> [iter, 0, o2, o3, 0, o5, o6, 3] : exists (e0 = [(o2)/32], e1 = [(o3)/32], e2 = [(-length + o5)/32], e3 = [(-2length + o6)/32]: tsteps = 2 and 32e0 = o2 and 32e1 = o3 and 32e2 = -length + o5 and 32e3 = -2length + o6 and o2 <= length and o2 >= -31 + length and o3 <= 2length and o3 >= -30 + 2length and o5 >= 0 and o5 <= 31 and o6 >= 0 and o6 <= 30 and iter <= 1 and iter >= 0); S_3[iter, i, j] -> [iter, o1, o2, o3, o4, o5, o6, 2] : exists (e0 = [(o1)/32], e1 = [(o2)/32], e2 = [(o3)/32], e3 = [(-i + o4)/32], e4 = [(-j + o5)/32], e5 = [(-2j + o6)/32]: tsteps = 2 and 32e0 = o1 and 32e1 = o2 and 32e2 = o3 and 32e3 = -i + o4 and 32e4 = -j + o5 and 32e5 = -2j + o6 and o1 <= i and o1 >= -31 + i and o2 <= j and o2 >= -31 + j and o3 <= 2j and o3 >= -30 + 2j and o4 >= 0 and o4 <= 31 and o5 >= 0 and o5 <= 31 and o6 >= 0 and o6 <= 30 and j >= 1 + i and i >= 0 and iter <= 1 and iter >= 0 and j <= -1 + length); S_0[iter, i, j] -> [iter, 0, o2, o3, 0, o5, o6, 4] : exists (e0 = [(o2)/32], e1 = [(o3)/32], e2 = [(-i + o5)/32], e3 = [(-31 + j - o6)/32]: tsteps = 2 and 32e0 = o2 and 32e1 = o3 and 32e2 = -i + o5 and 32e3 = -31 + j - o6 and o2 <= i and o2 >= -31 + i and o3 <= 1 + j and o3 >= -30 + j and o5 >= 0 and o5 <= 31 and o6 >= 0 and o6 <= 31 and i <= -1 + length and i >= 0 and iter >= 0 and iter <= 1 and j <= -1 + length and j >= 0) }
+[tsteps, length] -> { : length >= 0 and length <= 1024 and tsteps = 2 }
+{ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/shift_unroll.c b/polly/lib/External/isl/test_inputs/codegen/shift_unroll.c
new file mode 100644
index 00000000000..2a38286272c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/shift_unroll.c
@@ -0,0 +1,14 @@
+for (int c0 = 0; c0 <= 9; c0 += 1) {
+ A(c0, 0);
+ A(c0, 1);
+ A(c0, 2);
+ A(c0, 3);
+ A(c0, 4);
+ A(c0, 5);
+ A(c0, 6);
+ A(c0, 7);
+ A(c0, 8);
+ A(c0, 9);
+ for (int c2 = 0; c2 <= 9; c2 += 1)
+ B(c0, c2);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/shift_unroll.in b/polly/lib/External/isl/test_inputs/codegen/shift_unroll.in
new file mode 100644
index 00000000000..4b773c27ac3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/shift_unroll.in
@@ -0,0 +1,3 @@
+{ A[i,j] -> [2i,0,j]: 0 <= i,j < 10; B[i,j] -> [2i+1,1,j] : 0 <= i,j < 10 }
+{ : }
+{ [i,0,j] -> unroll[2] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/single_valued.c b/polly/lib/External/isl/test_inputs/codegen/single_valued.c
new file mode 100644
index 00000000000..e071002b79d
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/single_valued.c
@@ -0,0 +1,2 @@
+if (2 * ((t1 - 1) % 64) + 8 >= t1)
+ S(-(2 * ((t1 - 1) % 64)) + t1 + 126);
diff --git a/polly/lib/External/isl/test_inputs/codegen/single_valued.in b/polly/lib/External/isl/test_inputs/codegen/single_valued.in
new file mode 100644
index 00000000000..d729942077e
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/single_valued.in
@@ -0,0 +1,5 @@
+# Check that isl recognizes that the inverse schedule is single-valued
+# and does not end up in an infinite recursion.
+[t1] -> {S[c2] -> [c2]: t1 <= c2 <= 134 and (c2+t1) % 128 = 0 and c2 > 0}
+[t1] -> {: t1 > 0}
+[t1] -> {}
diff --git a/polly/lib/External/isl/test_inputs/codegen/stride.c b/polly/lib/External/isl/test_inputs/codegen/stride.c
new file mode 100644
index 00000000000..5b688292cc5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/stride.c
@@ -0,0 +1,6 @@
+for (int c0 = 0; c0 <= 100; c0 += 2) {
+ for (int c3 = 0; c3 <= 100; c3 += 1)
+ A(c0, c3);
+ for (int c2 = 0; c2 <= 100; c2 += 1)
+ B(c0, c2);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/stride.in b/polly/lib/External/isl/test_inputs/codegen/stride.in
new file mode 100644
index 00000000000..b01c56617d7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/stride.in
@@ -0,0 +1,6 @@
+# Check that we find a common stride on the first dimension
+# even if it is imposed by different inner dimensions
+{ A[i,k] -> [i,0,j,k] : 0 <= i,k <= 100 and i = 2 j;
+ B[i,k] -> [i,1,k,j] : 0 <= i,k <= 100 and i = 2 j }
+{ : }
+{ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/stride5.c b/polly/lib/External/isl/test_inputs/codegen/stride5.c
new file mode 100644
index 00000000000..ee89e367598
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/stride5.c
@@ -0,0 +1,3 @@
+if (n % 2 == 0)
+ for (int c0 = (n / 2) + 2 * floord(-n - 1, 4) + 2; c0 <= 100; c0 += 2)
+ S(c0);
diff --git a/polly/lib/External/isl/test_inputs/codegen/stride5.in b/polly/lib/External/isl/test_inputs/codegen/stride5.in
new file mode 100644
index 00000000000..a67a80276e4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/stride5.in
@@ -0,0 +1,3 @@
+[n] -> { S[t] -> [t] : exists e : 2 t - n = 4e and 0 <= t <= 100 }
+[n] -> { : }
+{ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/stride6.c b/polly/lib/External/isl/test_inputs/codegen/stride6.c
new file mode 100644
index 00000000000..c09e8b5441f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/stride6.c
@@ -0,0 +1,4 @@
+for (int c1 = -1024; c1 <= 0; c1 += 32)
+ for (int c2 = max(-((niter - 1) % 32) + niter - 1, -((niter - c1) % 32) + niter - c1 - 32); c2 <= min(niter + 1022, niter - c1 - 1); c2 += 32)
+ for (int c5 = max(max(0, -c1 - 1023), niter - c1 - c2 - 32); c5 <= min(min(31, -c1), niter - c1 - c2 - 1); c5 += 1)
+ S_4(niter - 1, -c1 - c5);
diff --git a/polly/lib/External/isl/test_inputs/codegen/stride6.in b/polly/lib/External/isl/test_inputs/codegen/stride6.in
new file mode 100644
index 00000000000..86ca54a92c6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/stride6.in
@@ -0,0 +1,3 @@
+[niter] -> { S_4[-1 + niter, i] -> [o0, o1, o2, o3, o4, o5, o6, o7, 4] : exists (e0 = [(o0)/32], e1 = [(o1)/32], e2 = [(o2)/32], e3 = [(o3)/32], e4 = [(-31i + o5)/32], e5 = [(-i - o4 + o6)/32], e6 = [(-o4 + o7)/32], e7 = [(-1 + niter - o4)/32]: 32e0 = o0 and 32e1 = o1 and 32e2 = o2 and 32e3 = o3 and 32e4 = -31i + o5 and 32e5 = -i - o4 + o6 and 32e6 = -o4 + o7 and 32e7 = -1 + niter - o4 and o0 <= -1 + niter and o0 >= -32 + niter and o1 <= -i and o1 >= -31 - i and o2 <= -1 + niter + i and o2 >= -32 + niter + i and o3 <= 1023 + niter and o3 >= 992 + niter and o4 >= 0 and o4 <= 31 and o5 >= 0 and o5 <= 31 and o6 >= 0 and o6 <= 31 and o7 >= 0 and o7 <= 31 and i <= 1023 and i >= 0 and niter >= 1) }
+[niter] -> { : niter <= 8192 and niter >= 1 }
+[niter] -> { }
diff --git a/polly/lib/External/isl/test_inputs/codegen/stride7.c b/polly/lib/External/isl/test_inputs/codegen/stride7.c
new file mode 100644
index 00000000000..b64c66d3810
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/stride7.c
@@ -0,0 +1,6 @@
+for (int c0 = 2; c0 <= 200; c0 += 64) {
+ for (int c2 = c0 - 1; c2 <= 120; c2 += 1)
+ s2(c0, c2);
+ for (int c2 = 122; c2 <= c0 + 62; c2 += 1)
+ s4(c0, c2);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/stride7.in b/polly/lib/External/isl/test_inputs/codegen/stride7.in
new file mode 100644
index 00000000000..cac9caca480
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/stride7.in
@@ -0,0 +1,7 @@
+# Check that no redundant guards are introduced
+{ s4[a, b] -> [a, 2, b] : exists (e0 = floor((-2 + a)/64):
+ 64e0 = -2 + a and a <= 200 and b <= 62 + a and b >= 122);
+ s2[a, b] -> [a, 2, b] : exists (e0 = floor((-2 + a)/64):
+ 64e0 = -2 + a and a >= 2 and b <= 120 and b >= -1 + a and a <= 100) }
+{ : }
+{ }
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll.c b/polly/lib/External/isl/test_inputs/codegen/unroll.c
new file mode 100644
index 00000000000..63594bb6bc7
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll.c
@@ -0,0 +1,5 @@
+{
+ A(0);
+ A(100000000);
+ A(200000000);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll.in b/polly/lib/External/isl/test_inputs/codegen/unroll.in
new file mode 100644
index 00000000000..65561e2b8de
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll.in
@@ -0,0 +1,5 @@
+# Test that unrolling takes into account stride constraints.
+# If it didn't, it would run essentially forever on this example.
+[n] -> { A[i] -> [i] : exists a : i = 100000000 a and 0 <= a <= 2 }
+{:}
+{ [i] -> unroll[0] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll10.c b/polly/lib/External/isl/test_inputs/codegen/unroll10.c
new file mode 100644
index 00000000000..061954ef628
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll10.c
@@ -0,0 +1,29 @@
+if (m >= 1 && n >= 1) {
+ A(0);
+ if (m >= 2 && n >= 2) {
+ A(1);
+ if (m >= 3 && n >= 3) {
+ A(2);
+ if (m >= 4 && n >= 4) {
+ A(3);
+ if (m >= 5 && n >= 5) {
+ A(4);
+ if (m >= 6 && n >= 6) {
+ A(5);
+ if (m >= 7 && n >= 7) {
+ A(6);
+ if (m >= 8 && n >= 8) {
+ A(7);
+ if (m >= 9 && n >= 9) {
+ A(8);
+ if (m >= 10 && n >= 10)
+ A(9);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll10.in b/polly/lib/External/isl/test_inputs/codegen/unroll10.in
new file mode 100644
index 00000000000..5890c4eaaa0
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll10.in
@@ -0,0 +1,4 @@
+# Check that all information is taken into account while trying to unroll
+[m,n] -> { A[i] -> [i] : 0 <= i < n,m }
+[m,n] -> { : m <= 10 or n <= 10 }
+{ [i] -> unroll[x] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll2.c b/polly/lib/External/isl/test_inputs/codegen/unroll2.c
new file mode 100644
index 00000000000..7ae38be1cb1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll2.c
@@ -0,0 +1,11 @@
+{
+ A(0);
+ A(1);
+ A(2);
+ A(3);
+ for (int c0 = 4; c0 <= 99996; c0 += 1)
+ A(c0);
+ A(99997);
+ A(99998);
+ A(99999);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll2.in b/polly/lib/External/isl/test_inputs/codegen/unroll2.in
new file mode 100644
index 00000000000..0fb36ab06dc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll2.in
@@ -0,0 +1,5 @@
+# Check that the different disjuncts in the unroll option
+# are handled separately.
+{ A[i] -> [i] : 0 <= i < 100000 }
+{ : }
+{ [i] -> unroll[0] : i < 4 or i > 99996 }
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll3.c b/polly/lib/External/isl/test_inputs/codegen/unroll3.c
new file mode 100644
index 00000000000..95a30ba7ccc
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll3.c
@@ -0,0 +1,2 @@
+if ((t1 + 121) % 128 <= 123)
+ write_shared_A(((t1 + 125) % 128) - 3);
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll3.in b/polly/lib/External/isl/test_inputs/codegen/unroll3.in
new file mode 100644
index 00000000000..098e5010577
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll3.in
@@ -0,0 +1,6 @@
+# Check that the entire schedule is completely unrolled and
+# in particular that no spurious loop is introduced.
+[t1] -> { write_shared_A[i2] -> [1, 3, 6 + i2, 0, t1] : (exists (e0 = [(-6 + t1 - i2)/128]: 128e0 = -6 + t1 - i2 and i2 <= 122 and i2 >= 1 and t1 >= 0 and t1 <= 127)) or (exists (e0 = [(-6 + t1 - i2)/128]: 128e0 = -6 + t1 - i2 and i2 >= 123 and i2 <= 124 and t1 <= 127 and t1 >= 0 )) }
+[t1] -> { : t1 >= 0 and t1 <= 127 }
+[t1] -> { [i0, i1, i2, i3, i4] -> unroll[o0] }
+
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll4.c b/polly/lib/External/isl/test_inputs/codegen/unroll4.c
new file mode 100644
index 00000000000..8e2ac05ca97
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll4.c
@@ -0,0 +1,22 @@
+{
+ write_shared_A(3, ((t1 + 3) % 4) + 1, ((t2 + 31) % 32) + 1);
+ if (t2 >= 1 && t2 <= 2 && t1 % 3 == 0)
+ write_shared_A(3, (-t1 / 3) + 4, t2 + 32);
+ {
+ int c3 = t2 >= 2 && ((t1 + 3) % 4) + 1 >= t2 ? t2 + 32 : ((t2 + 30) % 32) + 2;
+ if (c3 == t2 + 32 || (c3 == t2 && t2 >= ((t1 + 3) % 4) + ((t2 - 1) % 2) + 2))
+ write_shared_A(3, ((t1 + 3) % 4) + 5, c3);
+ }
+ if (t1 >= 1 && t2 >= t1 + 1 && t2 <= 4)
+ write_shared_A(3, t1 + 4, t2 + 32);
+ write_shared_A(4, ((t1 + 3) % 4) + 1, ((t2 + 31) % 32) + 1);
+ if (t2 >= 1 && t2 <= 2 && t1 % 3 == 0)
+ write_shared_A(4, (-t1 / 3) + 4, t2 + 32);
+ {
+ int c3 = t2 >= 2 && ((t1 + 3) % 4) + 1 >= t2 ? t2 + 32 : ((t2 + 30) % 32) + 2;
+ if (c3 == t2 + 32 || (c3 == t2 && t2 >= ((t1 + 3) % 4) + ((t2 - 1) % 2) + 2))
+ write_shared_A(4, ((t1 + 3) % 4) + 5, c3);
+ }
+ if (t1 >= 1 && t2 >= t1 + 1 && t2 <= 4)
+ write_shared_A(4, t1 + 4, t2 + 32);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll4.in b/polly/lib/External/isl/test_inputs/codegen/unroll4.in
new file mode 100644
index 00000000000..d8be866f948
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll4.in
@@ -0,0 +1,5 @@
+# Check that the generated code does not contain two declarations
+# of the same variable in the same scope.
+[t1, t2, g] -> { write_shared_A[a, b, c] -> [0, a, b, c] : exists (e0, e1 = [(-t1 + b)/4], e2 = [(-t2 + c)/32]: 4e1 = -t1 + b and 32e2 = -t2 + c and e0 <= 2 + 3g and e0 >= 3g and a <= 4 and a >= 3 and t2 >= 0 and t1 <= 3 and 2e0 >= 5 - c + 6g and 2e0 <= 36 - c + 6g and 2e0 >= 5 - b + 6g and 2e0 <= 8 - b + 6g and 2e0 <= 638 - c and 2e0 <= 638 - b and 2e0 >= 2 - a + 6g and 2e0 >= -8 + a + 6g and 2e0 <= 1 + a + 6g and 2e0 <= 11 - a + 6g and e0 >= 0 and e0 <= 254 and t1 >= 0 and t2 <= 31 and b >= 1 and b <= 126 and c >= 1 and c <= 126 and g <= 3 and g >= 0) }
+[t1, t2, g] -> { : g <= 3 and g >= 0 and t1 >= 0 and t1 <= 3 and t2 >= 0 and t2 <= 5 }
+[t1, t2] -> { [i0, i1, i2, i3] -> unroll[x] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll6.c b/polly/lib/External/isl/test_inputs/codegen/unroll6.c
new file mode 100644
index 00000000000..1d8cc5eb771
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll6.c
@@ -0,0 +1,8 @@
+{
+ if (g >= 0 && nn >= 128 * g + 6 && nn >= ((t1 + 127) % 128) + 128 * g + 3)
+ for (int c1 = 393214; c1 < nn - 1; c1 += 393216)
+ A(c1, ((t1 + 127) % 128) + 128 * g + 1, ((t1 + 127) % 128) + 1);
+ if (t1 >= 1 && t1 <= 2 && nn >= t1 + 128 * g + 130 && t1 + 128 * g >= -127)
+ for (int c1 = 393214; c1 < nn - 1; c1 += 393216)
+ A(c1, t1 + 128 * g + 128, t1 + 128);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll6.in b/polly/lib/External/isl/test_inputs/codegen/unroll6.in
new file mode 100644
index 00000000000..b4338e331f9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll6.in
@@ -0,0 +1,7 @@
+# Check that the right lower bound is chosen for unrolling.
+# Older versions of isl would pick a lower bound that resulted
+# in a number of slices that exceeds the maximal value of an integer
+# and then only generated code for a truncated number (zero) of slices.
+[nn, t1, g] -> { A[a, b, c] -> [c] : exists (e0 = [(2 + a)/393216], e1 = [(t1 - c)/128]: 128g = b - c and 393216e0 = 2 + a and 128e1 = t1 - c and c <= 130 and c >= 6 - nn + b and c <= 128 + b and nn >= 137 and t1 >= 0 and c >= 1 and a <= -2 + nn and a >= 1 and nn <= 9223372036854775807 and b >= 1 and b <= -2 + nn and t1 <= 127) }
+[nn, t1, g] -> { : nn <= 9223372036854775807 and nn >= 137 and t1 >= 0 and t1 <= 127 }
+{ [c] -> unroll[x] }
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll7.c b/polly/lib/External/isl/test_inputs/codegen/unroll7.c
new file mode 100644
index 00000000000..8392185f71c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll7.c
@@ -0,0 +1,10 @@
+{
+ S(0, 0);
+ S(0, 3);
+ S(0, 4);
+ S(1, 1);
+ S(1, 4);
+ S(2, 2);
+ S(3, 3);
+ S(4, 4);
+}
diff --git a/polly/lib/External/isl/test_inputs/codegen/unroll7.in b/polly/lib/External/isl/test_inputs/codegen/unroll7.in
new file mode 100644
index 00000000000..494e5975564
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/codegen/unroll7.in
@@ -0,0 +1,5 @@
+# Check that some code is generated.
+# Older versions of isl would abort on unknown divs.
+{ S[i,j] -> [i,j]: exists (alpha, beta: j=i+4alpha +3beta and 0 <= alpha < 24 and 0 <= beta and 0 <= i,j < 5) }
+{ : }
+{ [i,j] -> unroll[x] }
diff --git a/polly/lib/External/isl/test_inputs/convex0.polylib b/polly/lib/External/isl/test_inputs/convex0.polylib
new file mode 100644
index 00000000000..cbc4d3b6ceb
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex0.polylib
@@ -0,0 +1,11 @@
+2 3
+1 1 0
+1 -1 1
+
+2 3
+1 1 -1
+1 -1 2
+
+2 3
+1 1 0
+1 -1 2
diff --git a/polly/lib/External/isl/test_inputs/convex1.polylib b/polly/lib/External/isl/test_inputs/convex1.polylib
new file mode 100644
index 00000000000..b563d8de7ff
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex1.polylib
@@ -0,0 +1,17 @@
+# {j,N | 0<=j<=N-1; 2<=N}
+4 4
+1 1 0 0
+1 -1 1 -1
+1 0 1 -2
+1 0 0 1
+# {j, N | 1<=j<=N; 1<=N}
+4 4
+1 1 0 -1
+1 -1 1 0
+1 0 1 -1
+1 0 0 1
+# {j,N | 0<=j<=N; 2<=j+N}
+3 4
+ 1 1 1 -2
+ 1 1 0 0
+ 1 -1 1 0
diff --git a/polly/lib/External/isl/test_inputs/convex10.polylib b/polly/lib/External/isl/test_inputs/convex10.polylib
new file mode 100644
index 00000000000..3d58cbf70e1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex10.polylib
@@ -0,0 +1,17 @@
+3 4
+1 54 1 -4
+1 2 -1 58
+1 0 -1 6
+
+4 4
+1 54 1 -4
+1 2 -1 58
+1 0 1 -7
+1 -4 1 0
+
+4 4
+1 54 1 -4
+1 2 -1 58
+1 0 -1 116
+1 0 0 1
+
diff --git a/polly/lib/External/isl/test_inputs/convex11.polylib b/polly/lib/External/isl/test_inputs/convex11.polylib
new file mode 100644
index 00000000000..f664114d048
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex11.polylib
@@ -0,0 +1,14 @@
+3 4
+1 0 -1 6
+1 -1 1 1
+1 1 1 -10
+
+3 4
+1 1 0 -4
+1 -1 -1 8
+1 -1 1 1
+
+3 4
+1 0 -1 6
+1 1 0 -4
+1 -1 1 1
diff --git a/polly/lib/External/isl/test_inputs/convex12.polylib b/polly/lib/External/isl/test_inputs/convex12.polylib
new file mode 100644
index 00000000000..e4766307477
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex12.polylib
@@ -0,0 +1,12 @@
+3 5
+1 0 0 1 1
+1 0 1 0 1
+1 -1 -1 0 -2
+
+3 5
+1 0 0 1 2
+1 1 -1 0 0
+1 1 0 0 -1
+
+1 5
+1 0 0 1 2
diff --git a/polly/lib/External/isl/test_inputs/convex13.polylib b/polly/lib/External/isl/test_inputs/convex13.polylib
new file mode 100644
index 00000000000..1b3591200f8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex13.polylib
@@ -0,0 +1,17 @@
+3 5
+1 0 0 -1 3
+1 0 -1 0 2
+1 1 1 1 -4
+
+3 5
+1 0 0 1 0
+1 1 0 0 -1
+1 1 2 0 1
+
+6 5
+1 3 2 0 -1
+1 3 0 2 -3
+1 1 0 1 -1
+1 1 1 1 0
+1 1 1 0 0
+1 1 0 0 1
diff --git a/polly/lib/External/isl/test_inputs/convex14.polylib b/polly/lib/External/isl/test_inputs/convex14.polylib
new file mode 100644
index 00000000000..caaa8f5d316
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex14.polylib
@@ -0,0 +1,14 @@
+3 4
+0 1 0 2
+1 0 1 0
+1 0 -1 2
+
+3 4
+1 1 0 0
+1 0 1 0
+1 0 -1 2
+
+3 4
+1 1 0 2
+1 0 1 0
+1 0 -1 2
diff --git a/polly/lib/External/isl/test_inputs/convex15.polylib b/polly/lib/External/isl/test_inputs/convex15.polylib
new file mode 100644
index 00000000000..0118fa861db
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex15.polylib
@@ -0,0 +1,66 @@
+17 8
+1 -1 -8 0 16 0 0 37
+1 1 0 -48 0 2 0 -3
+1 0 -16 -32 16 1 0 14
+1 -1 24 0 0 1 0 18
+1 -1 8 16 0 0 1 21
+1 0 0 -16 0 1 1 -2
+1 1 32 16 -32 0 0 -1
+1 -1 16 16 0 0 0 28
+1 1 -8 -32 0 1 0 -1
+1 0 0 0 0 1 0 -1
+1 0 16 16 -16 0 1 -1
+1 1 8 0 -16 0 0 0
+1 0 3 2 -2 0 0 0
+1 0 1 2 -1 0 0 0
+1 0 -1 -1 1 0 0 0
+1 -1 8 0 0 1 2 4
+1 -1 -24 -32 32 1 0 36
+
+13 8
+1 -1 0 0 0 1 3 -4
+1 1 0 -48 0 2 0 -2
+1 0 0 0 0 1 0 -1
+1 0 -8 0 0 0 1 -1
+1 0 3 2 -2 0 0 0
+1 1 -16 -16 0 0 0 0
+1 1 -24 0 0 0 0 0
+1 0 1 0 0 0 0 0
+1 0 -3 -2 2 0 0 1
+1 -1 0 16 0 0 2 13
+1 -1 24 0 0 1 0 20
+1 -1 16 16 0 0 0 29
+1 -1 0 48 0 0 0 45
+
+31 8
+ 1 0 1 0 0 0 0 0
+ 1 0 0 -16 0 1 1 -2
+ 1 0 0 0 0 1 0 -1
+ 1 -1 8 0 0 1 2 4
+ 1 0 3 2 -2 0 0 0
+ 1 -1 24 0 0 1 0 20
+ 1 1 0 -48 0 2 0 -2
+ 1 -1 -24 -32 32 1 0 36
+ 1 0 0 0 0 0 1 -1
+ 1 -1 24 64 -16 0 0 45
+ 1 -15 120 112 0 15 38 52
+ 1 1 24 32 -32 0 0 0
+ 1 0 -2 -2 2 0 0 1
+ 1 -1 8 16 0 0 1 21
+ 1 -15 120 352 0 0 23 307
+ 1 1 -8 -32 0 1 0 -1
+ 1 1 -8 0 0 0 0 0
+ 1 1 -8 -16 0 0 0 0
+ 1 0 16 16 -16 0 1 -1
+ 1 -1 16 16 0 0 0 29
+ 1 -1 -8 0 16 0 0 37
+ 1 -1 8 32 0 0 0 37
+ 1 1 8 0 -16 0 0 0
+ 1 -15 360 592 -240 0 23 307
+ 1 -1 -6 2 14 0 2 20
+ 1 -15 360 352 -240 15 38 52
+ 1 -1 8 48 0 0 0 45
+ 1 0 -16 -32 16 1 0 14
+ 1 -1 -6 -14 14 1 3 3
+ 1 1 -38 -78 30 2 0 13
+ 1 1 -3 -50 2 2 0 -1
diff --git a/polly/lib/External/isl/test_inputs/convex2.polylib b/polly/lib/External/isl/test_inputs/convex2.polylib
new file mode 100644
index 00000000000..0bfd737291c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex2.polylib
@@ -0,0 +1,24 @@
+# {i,j,N | 1<=i<=N; 0<=j<=N-1; 2<=N}
+6 5
+1 1 0 0 -1
+1 -1 0 1 0
+1 0 1 0 0
+1 0 -1 1 -1
+1 0 0 1 -2
+1 0 0 0 1
+# {i,j,N | 1<=i<=N; 1<=j<=N; 2<=N}
+6 5
+1 1 0 0 -1
+1 -1 0 1 0
+1 0 1 0 -1
+1 0 -1 1 0
+1 0 0 1 -2
+1 0 0 0 1
+# {i,j,N | 1<=i<=N; 0<=j<=N; 2<=N}
+6 5
+ 1 0 0 1 -2
+ 1 -1 0 1 0
+ 1 0 -1 1 0
+ 1 1 0 0 -1
+ 1 0 1 0 0
+ 1 0 0 0 1
diff --git a/polly/lib/External/isl/test_inputs/convex3.polylib b/polly/lib/External/isl/test_inputs/convex3.polylib
new file mode 100644
index 00000000000..ea612c6b81f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex3.polylib
@@ -0,0 +1,10 @@
+1 4
+1 1 1 -6
+
+3 4
+1 1 1 -3
+1 1 0 -5
+1 -1 0 10
+
+1 4
+1 1 1 -3
diff --git a/polly/lib/External/isl/test_inputs/convex4.polylib b/polly/lib/External/isl/test_inputs/convex4.polylib
new file mode 100644
index 00000000000..0c086538a66
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex4.polylib
@@ -0,0 +1,9 @@
+1 4
+1 1 1 -6
+
+2 4
+0 1 0 -1
+0 0 1 -4
+
+1 4
+1 1 1 -5
diff --git a/polly/lib/External/isl/test_inputs/convex5.polylib b/polly/lib/External/isl/test_inputs/convex5.polylib
new file mode 100644
index 00000000000..3aae7c26bcf
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex5.polylib
@@ -0,0 +1,12 @@
+2 4
+0 1 0 -2
+0 0 1 -6
+
+2 4
+0 1 0 -1
+0 0 1 -4
+
+3 4
+0 -2 1 -2
+1 1 0 -1
+1 -1 0 2
diff --git a/polly/lib/External/isl/test_inputs/convex6.polylib b/polly/lib/External/isl/test_inputs/convex6.polylib
new file mode 100644
index 00000000000..1bdb4e1c9dd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex6.polylib
@@ -0,0 +1,17 @@
+3 4
+1 1 1 -2
+1 -1 1 2
+1 0 -1 2
+
+3 4
+1 0 1 -1
+1 1 -1 1
+1 -1 -1 5
+
+6 4
+1 -1 0 4
+1 1 0 0
+1 1 2 -2
+1 -1 2 2
+1 1 -2 4
+1 -1 -2 8
diff --git a/polly/lib/External/isl/test_inputs/convex7.polylib b/polly/lib/External/isl/test_inputs/convex7.polylib
new file mode 100644
index 00000000000..70eb483175b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex7.polylib
@@ -0,0 +1,9 @@
+1 4
+0 0 1 0
+
+2 4
+1 1 -1 1
+1 -1 -1 1
+
+1 4
+1 0 -1 1
diff --git a/polly/lib/External/isl/test_inputs/convex8.polylib b/polly/lib/External/isl/test_inputs/convex8.polylib
new file mode 100644
index 00000000000..ea1b757108c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex8.polylib
@@ -0,0 +1,24 @@
+4 5
+1 1 1 1 0
+1 0 -1 0 0
+1 -1 0 0 2
+1 1 1 -1 0
+
+4 5
+1 -1 1 0 2
+1 1 -2 -2 -1
+1 -1 0 2 3
+1 1 0 0 -1
+
+10 5
+1 1 0 1 0
+1 1 1 0 0
+1 0 1 1 2
+1 -3 1 -1 8
+1 -3 1 1 8
+1 0 1 -1 2
+1 1 0 -1 0
+1 1 -2 -1 0
+1 -1 -3 2 6
+1 1 -5 -2 2
+
diff --git a/polly/lib/External/isl/test_inputs/convex9.polylib b/polly/lib/External/isl/test_inputs/convex9.polylib
new file mode 100644
index 00000000000..f68fca097a9
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/convex9.polylib
@@ -0,0 +1,14 @@
+4 4
+1 1 0 0
+1 -1 0 1
+1 0 1 0
+1 0 -1 10
+
+2 4
+1 1 0 -10
+0 0 -1 5
+
+3 4
+1 1 0 0
+1 0 1 0
+1 0 -1 10
diff --git a/polly/lib/External/isl/test_inputs/devos.pwqp b/polly/lib/External/isl/test_inputs/devos.pwqp
new file mode 100644
index 00000000000..b4525446904
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/devos.pwqp
@@ -0,0 +1 @@
+[U] -> { [i0] -> ((1/3 * U + 2/3 * i0) - [(U + 2i0)/3]) : 2i0 >= -3 - U and 2i0 <= -U and U >= 0 and U <= 10 }
diff --git a/polly/lib/External/isl/test_inputs/equality1.pwqp b/polly/lib/External/isl/test_inputs/equality1.pwqp
new file mode 100644
index 00000000000..eb16a4ba7b8
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/equality1.pwqp
@@ -0,0 +1 @@
+[n] -> { [x] -> 1 + [(x+1)/3] : exists a : x = 3a +1 && 0 <= x <= n }
diff --git a/polly/lib/External/isl/test_inputs/equality2.pwqp b/polly/lib/External/isl/test_inputs/equality2.pwqp
new file mode 100644
index 00000000000..1629a6549ea
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/equality2.pwqp
@@ -0,0 +1 @@
+[n] -> { [x,y] -> x^2 * y : n = 2x + 4y and 0 <= x,y <= 10 }
diff --git a/polly/lib/External/isl/test_inputs/equality3.pwqp b/polly/lib/External/isl/test_inputs/equality3.pwqp
new file mode 100644
index 00000000000..c6f8c3acf19
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/equality3.pwqp
@@ -0,0 +1 @@
+[m,n] -> { [x,y] -> x^2 * y : n = 2x + 4y and 0 <= x,y <= 10 and 3 n = 5 m }
diff --git a/polly/lib/External/isl/test_inputs/equality4.pwqp b/polly/lib/External/isl/test_inputs/equality4.pwqp
new file mode 100644
index 00000000000..49da2e7eff6
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/equality4.pwqp
@@ -0,0 +1 @@
+[m,n] -> { [x,y] -> x^2 * y + m + 13 * n: n = 2x + 4y and 0 <= x,y <= 10 and 3 n = 5 m }
diff --git a/polly/lib/External/isl/test_inputs/equality5.pwqp b/polly/lib/External/isl/test_inputs/equality5.pwqp
new file mode 100644
index 00000000000..09cb7520113
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/equality5.pwqp
@@ -0,0 +1 @@
+[m,n] -> { [x,y,z] -> x^2 * y + z + m + 13 * n: n = 2x + 4y and 0 <= x,y <= 10 and 3 n = 5 m and z = x + y }
diff --git a/polly/lib/External/isl/test_inputs/esced.pip b/polly/lib/External/isl/test_inputs/esced.pip
new file mode 100644
index 00000000000..dbf56ffa0fd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/esced.pip
@@ -0,0 +1,27 @@
+0 2
+
+-1
+
+16 18
+1 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
+
+
+0 0 0 0 -1 0 0 0 0 1 -1 0 0 0 0 0 0 0
+0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0
+
+0 -1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0
+
+0 0 0 0 0 0 -1 0 0 0 0 0 1 -1 0 -1 0 0
+0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0
+0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0
+
+0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0
+0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0
+
+1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1
+1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1
diff --git a/polly/lib/External/isl/test_inputs/ex.pip b/polly/lib/External/isl/test_inputs/ex.pip
new file mode 100644
index 00000000000..a405450b2ad
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/ex.pip
@@ -0,0 +1,9 @@
+1 5
+1 -1 1 1 0
+
+-1
+
+3 7
+1 0 -1 0 1 0 0
+1 -1 0 0 0 1 0
+1 1 1 -1 0 0 0
diff --git a/polly/lib/External/isl/test_inputs/ex2.pip b/polly/lib/External/isl/test_inputs/ex2.pip
new file mode 100644
index 00000000000..bb59848c8f2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/ex2.pip
@@ -0,0 +1,9 @@
+1 5
+1 -1 1 1 0
+
+-1
+
+3 7
+1 0 -1 0 1 0 0
+1 -1 0 0 0 1 0
+1 1 1 -1 0 0 0
diff --git a/polly/lib/External/isl/test_inputs/faddeev.pwqp b/polly/lib/External/isl/test_inputs/faddeev.pwqp
new file mode 100644
index 00000000000..e7db61d1bc5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/faddeev.pwqp
@@ -0,0 +1 @@
+[N] -> { [i, j, k] -> (((4 + 6 * N + 2 * N^2) + (-2 - 2 * N) * j) + ((-2 - N) + j) * k) : j = 1 + i and k = 1 + i and i >= 3 and N <= 100 and i <= N and N >= 10 }
diff --git a/polly/lib/External/isl/test_inputs/fimmel.pip b/polly/lib/External/isl/test_inputs/fimmel.pip
new file mode 100644
index 00000000000..a6dee417c02
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/fimmel.pip
@@ -0,0 +1,12 @@
+0 4
+
+-1
+
+7 6
+1 2 6 0 0 -9
+1 5 -3 0 0 0
+1 2 -10 0 0 15
+1 -2 6 0 0 -3
+1 -2 -6 0 0 17
+1 0 1 -1 0 0
+1 1 0 0 -1 0
diff --git a/polly/lib/External/isl/test_inputs/gist1.polylib b/polly/lib/External/isl/test_inputs/gist1.polylib
new file mode 100644
index 00000000000..802a4eb6ff2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/gist1.polylib
@@ -0,0 +1,14 @@
+4 5
+0 1 0 0 -1
+0 0 1 0 1
+0 0 0 1 -3
+1 0 0 0 1
+
+4 5
+0 1 0 0 -1
+0 0 1 1 -2
+1 0 0 1 0
+1 0 0 -1 3
+
+1 5
+0 0 1 0 1
diff --git a/polly/lib/External/isl/test_inputs/linearExample.pwqp b/polly/lib/External/isl/test_inputs/linearExample.pwqp
new file mode 100644
index 00000000000..24c53946a0b
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/linearExample.pwqp
@@ -0,0 +1 @@
+[N, M, L] -> { [i, j, k] -> ((1/2 * i + 5 * j) + 1/7 * k) : i >= 0 and k >= -N + i and k >= -M - j and j <= L + i and L >= 0 and L >= -M }
diff --git a/polly/lib/External/isl/test_inputs/max.pip b/polly/lib/External/isl/test_inputs/max.pip
new file mode 100644
index 00000000000..e8af57b9f51
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/max.pip
@@ -0,0 +1,9 @@
+0 3
+
+-1
+
+4 5
+1 -1 0 1 0
+1 0 -1 1 0
+1 -1 3 -2 12
+1 2 -1 -1 3
diff --git a/polly/lib/External/isl/test_inputs/neg.pwqp b/polly/lib/External/isl/test_inputs/neg.pwqp
new file mode 100644
index 00000000000..596a7d77d09
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/neg.pwqp
@@ -0,0 +1 @@
+[n] -> { [i0] -> i0^2 : i0 >= -20 - n and i0 <= n and i0 <= -1 and n >= 0 }
diff --git a/polly/lib/External/isl/test_inputs/negative.pip b/polly/lib/External/isl/test_inputs/negative.pip
new file mode 100644
index 00000000000..45090a59230
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/negative.pip
@@ -0,0 +1,9 @@
+1 3
+# n 1
+1 1 -1 # n >= 1
+-1
+
+2 4
+# i n 1
+1 1 0 1 # i >= -1
+1 -1 1 0 # i <= n
diff --git a/polly/lib/External/isl/test_inputs/philippe.pwqp b/polly/lib/External/isl/test_inputs/philippe.pwqp
new file mode 100644
index 00000000000..1c56e7af707
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/philippe.pwqp
@@ -0,0 +1 @@
+[N] -> { [i, j] -> ((1/2 * i + 1/2 * i^2) + j) : i <= N and j >= 0 and j <= i }
diff --git a/polly/lib/External/isl/test_inputs/philippe3vars.pwqp b/polly/lib/External/isl/test_inputs/philippe3vars.pwqp
new file mode 100644
index 00000000000..8d074962578
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/philippe3vars.pwqp
@@ -0,0 +1 @@
+[N] -> { [i, j, k] -> (((1/2 * i + 1/2 * i^2) + j) + k^3) : i >= 0 and k >= -N + i and k >= -j and j <= i }
diff --git a/polly/lib/External/isl/test_inputs/philippe3vars3pars.pwqp b/polly/lib/External/isl/test_inputs/philippe3vars3pars.pwqp
new file mode 100644
index 00000000000..f81b8cc5a68
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/philippe3vars3pars.pwqp
@@ -0,0 +1 @@
+[N, M, L] -> { [i, j, k] -> (((1/2 * i + 1/2 * i^2) + j) + k^3) : i >= 0 and k >= -N + i and k >= -M - j and j <= L + i and L >= 0 and L >= -M }
diff --git a/polly/lib/External/isl/test_inputs/philippeNeg.pwqp b/polly/lib/External/isl/test_inputs/philippeNeg.pwqp
new file mode 100644
index 00000000000..24dc805ed18
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/philippeNeg.pwqp
@@ -0,0 +1 @@
+[N] -> { [i, j] -> ((1/2 * i + 1/2 * i^2) + j) : i <= N and j >= -1 and j <= i }
diff --git a/polly/lib/External/isl/test_inputs/philippePolynomialCoeff.pwqp b/polly/lib/External/isl/test_inputs/philippePolynomialCoeff.pwqp
new file mode 100644
index 00000000000..e6327c78f35
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/philippePolynomialCoeff.pwqp
@@ -0,0 +1 @@
+[N, M] -> { [i, j] -> ((N * i + (1/5 * N + N^2) * i^2) + 5 * j) : i <= N and j >= 0 and j <= i and M >= 0 }
diff --git a/polly/lib/External/isl/test_inputs/philippePolynomialCoeff1P.pwqp b/polly/lib/External/isl/test_inputs/philippePolynomialCoeff1P.pwqp
new file mode 100644
index 00000000000..ae01d2fcb87
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/philippePolynomialCoeff1P.pwqp
@@ -0,0 +1 @@
+[N] -> { [i, j] -> ((N * i + (1/5 * N + N^2) * i^2) + 5 * j) : i <= N and j >= 0 and j <= i }
diff --git a/polly/lib/External/isl/test_inputs/product.pwqp b/polly/lib/External/isl/test_inputs/product.pwqp
new file mode 100644
index 00000000000..ee48b859ee3
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/product.pwqp
@@ -0,0 +1 @@
+[N] -> { [i0, i1, i2] -> (i0^3 * i1^2 + N * i1 * i2) : i0 >= 0 and i0 <= N and i1 >= 0 and i1 <= N and i2 >= 0 and i2 <= N }
diff --git a/polly/lib/External/isl/test_inputs/seghir-vd.pip b/polly/lib/External/isl/test_inputs/seghir-vd.pip
new file mode 100644
index 00000000000..b5395fbdb38
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/seghir-vd.pip
@@ -0,0 +1,17 @@
+0 6
+
+-1
+
+9 8
+ 0 0 0 1 1 0 0 2
+ 1 2 1 0 0 1 0 0
+ 1 0 1 0 -1 0 0 -1
+ 1 -2 -1 0 0 0 0 -1
+ 1 7 3 0 0 0 0 -1
+ 1 -6 -4 0 1 0 3 1
+ 1 -7 -3 0 0 1 6 4
+ 1 0 0 0 0 0 1 0
+ 1 0 0 0 0 0 0 1
+
+Urs_parms
+Urs_unknowns
diff --git a/polly/lib/External/isl/test_inputs/set.omega b/polly/lib/External/isl/test_inputs/set.omega
new file mode 100644
index 00000000000..ac8485fb9a4
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/set.omega
@@ -0,0 +1 @@
+{[y]: Exists ( alpha : 2alpha = y)}
diff --git a/polly/lib/External/isl/test_inputs/small.pip b/polly/lib/External/isl/test_inputs/small.pip
new file mode 100644
index 00000000000..59557d262bd
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/small.pip
@@ -0,0 +1,9 @@
+0 2
+
+-1
+
+4 4
+1 1 0 0
+1 0 1 0
+1 1 -3 12
+1 -2 1 3
diff --git a/polly/lib/External/isl/test_inputs/sor1d.pip b/polly/lib/External/isl/test_inputs/sor1d.pip
new file mode 100644
index 00000000000..1bef89e5bf1
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/sor1d.pip
@@ -0,0 +1,28 @@
+2 4
+ 1 1 0 0
+ 1 0 1 0
+
+-1
+
+20 8
+
+ 0 -1 0 0 0 0 0 2
+ 0 0 -1 0 0 0 0 1
+ 0 0 0 -1 0 0 0 2
+ 0 0 0 0 -1 0 0 4
+ 1 0 0 0 1 0 0 -2
+ 1 -2 0 2 1 0 0 -4
+ 1 0 0 0 -1 0 1 -1
+ 1 2 0 -2 -1 0 0 5
+ 1 0 0 1 0 0 0 -1
+ 1 0 -2 1 0 0 0 0
+ 1 -2 0 2 0 0 1 -5
+ 1 0 0 -1 0 1 0 0
+ 1 0 2 -1 0 0 0 1
+ 1 2 0 -2 0 0 0 3
+ 1 0 1 0 0 0 0 0
+ 1 -2 4 0 0 0 1 -3
+ 1 0 -2 0 0 1 0 0
+ 1 2 -4 0 0 0 0 3
+ 1 2 0 0 0 0 0 1
+ 1 -2 0 0 0 2 1 -5
diff --git a/polly/lib/External/isl/test_inputs/split.pwqp b/polly/lib/External/isl/test_inputs/split.pwqp
new file mode 100644
index 00000000000..1804563600c
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/split.pwqp
@@ -0,0 +1 @@
+[n] -> { [x] -> -1 + [(x+5)/7] : -n - 20 <= x <= n }
diff --git a/polly/lib/External/isl/test_inputs/square.pip b/polly/lib/External/isl/test_inputs/square.pip
new file mode 100644
index 00000000000..7bb3f0c90b5
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/square.pip
@@ -0,0 +1,9 @@
+0 3
+
+-1
+
+4 5
+1 1 0 0 0
+1 -1 0 1 0
+1 0 1 0 0
+1 0 -1 1 0
diff --git a/polly/lib/External/isl/test_inputs/sven.pip b/polly/lib/External/isl/test_inputs/sven.pip
new file mode 100644
index 00000000000..86027691036
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/sven.pip
@@ -0,0 +1,7 @@
+0 3
+
+-1
+
+2 3
+1 1 -4
+1 -1 10
diff --git a/polly/lib/External/isl/test_inputs/test3Deg3Var.pwqp b/polly/lib/External/isl/test_inputs/test3Deg3Var.pwqp
new file mode 100644
index 00000000000..d9a9ea9da01
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/test3Deg3Var.pwqp
@@ -0,0 +1 @@
+[p] -> { [n, m] -> (n + n^3) : n >= 1 and m >= n and m <= p }
diff --git a/polly/lib/External/isl/test_inputs/tobi.pip b/polly/lib/External/isl/test_inputs/tobi.pip
new file mode 100644
index 00000000000..c31beae1b0f
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/tobi.pip
@@ -0,0 +1,15 @@
+2 3
+1 1 -281
+1 -1 14000
+
+-1
+
+6 6
+0 -392 0 8 -1 0
+0 392 8 0 1 0
+1 -1 0 0 0 0
+1 1 0 0 0 35
+1 392 0 0 1 0
+1 -392 0 0 -1 280
+
+Urs_unknowns
diff --git a/polly/lib/External/isl/test_inputs/toplas.pwqp b/polly/lib/External/isl/test_inputs/toplas.pwqp
new file mode 100644
index 00000000000..9c0999540b2
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/toplas.pwqp
@@ -0,0 +1 @@
+[n] -> { [i0, i1] -> (((4 * n - n^2) + (-3/2 + 2 * n) * i0 - 1/2 * i0^2) - i1) : i1 >= -1 + 3n - i0 and i1 >= -1 + 2n - i0 and i0 >= 0 and i1 <= -2 + 4n - i0 and i0 <= -2 + 4n and i0 <= -1 + 3n and i1 >= 0 and i1 <= -1 + n }
diff --git a/polly/lib/External/isl/test_inputs/unexpanded.pwqp b/polly/lib/External/isl/test_inputs/unexpanded.pwqp
new file mode 100644
index 00000000000..5626d3baa41
--- /dev/null
+++ b/polly/lib/External/isl/test_inputs/unexpanded.pwqp
@@ -0,0 +1 @@
+{ [x, y] -> ((x - x^2) * y + (-x + x^2) * y^2) : x >= 0 and x <= 2 and y >= 0 and y <= 2 }
OpenPOWER on IntegriCloud