Skip to content
Snippets Groups Projects
Commit c6d0b3a2 authored by Daniel Maier's avatar Daniel Maier
Browse files

info2

parent 880e6d66
No related branches found
No related tags found
No related merge requests found
#include <iostream>
#include <osl/osl.h>
int main(int argc, char *argv[]) {
if(argc != 2) {
std::cerr << "usage: <SCOP>\n";
return -1;
}
auto *fp = fopen(argv[1], "r");
if(!fp) {
std::cerr << "openscop read failed\n";
return -1;
}
auto scop = osl_scop_read(fp);
fclose(fp);
#if 0
int i = 0;
for(auto s = scop->statement; s; s = s->next, i++) {
for(int j = 0; j < s->domain->nb_output_dims; j++) {
std::cout << i << " " << j << "\n";
}
}
#endif
/* want: list of statements to perforate
* scop0 statement0 statement1 statement2
*/
int i = 0, i_ = 0, j = 0;
auto s = scop->statement;
auto print_scop = [&s, &i, &i_, &j]() {
std::cout << "scop" << j << ";";
for(int x = i_; x < i; x++) {
std::cout << " " << x;
}
std::cout << ";" << s->domain->nb_output_dims << "\n";
};
osl_statement_p current_scop = NULL;
while(s) {
if(!current_scop || !osl_relation_equal(current_scop->domain, s->domain)) {
/* new scop */
if(current_scop) {
print_scop();
i_ = i;
}
current_scop = s;
j++;
}
i++;
if(!s->next) /* only advance pointer if it is not the last element */
break;
s = s->next;
}
print_scop();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment