From b284ace68ac680690d81afc57fe3dfd16fbb8387 Mon Sep 17 00:00:00 2001 From: Daniel Maier <daniel.maier@tu-berlin.de> Date: Wed, 12 Sep 2018 15:53:52 +0200 Subject: [PATCH] working and configurable perforation --- main.cpp | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/main.cpp b/main.cpp index 06769e1..863a1a4 100644 --- a/main.cpp +++ b/main.cpp @@ -17,30 +17,50 @@ perforate(osl_relation_p rel, int i) { osl_relation_dump(stdout, rel); } -int main() { - osl_scop_p scop; +int main(int argc, char *argv[]) { + if(argc != 5) { + std::cerr << "usage: <INPUT SCOP> <OUTPUT SCOP> <STATEMENT> <ITERATOR>\n"; + return -1; + } + int statement = atoi(argv[3]); + int iterator = atoi(argv[4]); - FILE *fp = fopen("acc.openscop", "r"); + auto *fp = fopen(argv[1], "r"); if(!fp) { std::cerr << "openscop read failed\n"; return -1; } - scop = osl_scop_read(fp); + auto scop = osl_scop_read(fp); fclose(fp); - for(auto s = scop->statement; s; s = s->next) { - auto d = s->domain; - - osl_relation_dump(stdout, s->domain); - perforate(d); - //s->domain = n; + /* find statement */ + int i = statement; + auto s = scop->statement; + for(; s && i; s = s->next) { + i--; + } + + if(i || !s) { + std::cerr << "statement not found\n"; + return -1; + } - //osl_relation_free(d); + osl_relation_dump(stdout, s->domain); + std::cout << "nb_output_dims " << s->domain->nb_output_dims << " iterator " << iterator << "\n"; + if(s->domain->nb_output_dims <= iterator) { + std::cerr << "iterator not found\n"; + return -1; } + + perforate(s->domain, iterator); - fp = fopen("perf.openscop", "w"); + fp = fopen(argv[2], "w"); + if(!fp) { + std::cerr << "openscop write failed\n"; + return -1; + } osl_scop_print(fp, scop); fclose(fp); -- GitLab