Skip to content
Snippets Groups Projects
main.cpp 1.07 KiB
#include <iostream>
#include <osl/osl.h>

void
perforate(osl_relation_p rel, int i) {
    int r = rel->nb_rows;
    int c = rel->nb_columns-2;

    osl_relation_insert_blank_row(rel, r);
    osl_relation_insert_blank_column(rel, c);
    rel->nb_local_dims++;

    auto row = rel->m[r];
    osl_int_set_si(rel->precision, &row[c], 2);
    osl_int_set_si(rel->precision, &row[1+i], -1);

    osl_relation_dump(stdout, rel);
}

int main() {
    osl_scop_p scop;


    FILE *fp = fopen("acc.openscop", "r");
    if(!fp) {
        std::cerr << "openscop read failed\n";
        return -1;
    }
    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;

        //osl_relation_free(d);

    }
    
    fp = fopen("perf.openscop", "w");
    osl_scop_print(fp, scop);
    fclose(fp);


    // Dump the content of the scop data structure.
    //osl_scop_dump(stdout, scop);
    // Save the planet.
    osl_scop_free(scop);
}