This test tries to validate all example transformations in pluto's repo.
For each example:
- it runs pluto on the
.c
file, generating two openscop, for before and after scheduling each.- run pluto with
--dumpscop --nointratileopt --nodiamond-tile --noprevector --smartfuse --nounrolljam --noparallel --notile --rar
- run pluto with
- it reads the two openscop file to polyhedral models, omitting the actual instruction (supposing the access function overapproximate instruction's dynamic semantics)
- run validate on two models (bidirectionally), produce output
Note that, validator's algorithm only guarantee "all WR/WW dependences have same directions" for two polyhedral models. Invoking the validator without verifying the instruction-language's semantics, leaving the following reponsibility to the user:
- Checking that read/write access functions are correct to each instruction's semantics.
- Certifying that no memory cells can alias each other with different identifier or index lists (for
a[i][j]
andi=0, j=1
, the memory cell for the access isa[1][1]
,a
the identifier,[1;1]
the access list. Different memory cell (fora[1][1]
anda[2][0]
, index overflow may lead to aliasing; fora
andb
, identifier alias may cause aliasing; many other cases) should not alias each other).