92 int j, first = 1, number=1;
96 for (j = 0; j < level; j++)
100 fprintf(file,
"+-- osl_loop_t\n");
102 fprintf(file,
"+-- NULL loop\n");
104 while (loop != NULL) {
108 for (j = 0; j < level; j++)
109 fprintf(file,
"|\t");
111 fprintf(file,
"| osl_loop_t (node %d)\n", number);
117 for (j = 0; j <= level+1; j++)
118 fprintf(file,
"|\t");
122 for (j = 0; j <= level; j++)
123 fprintf(file,
"|\t");
124 fprintf(file,
"+--iterator: %s\n", loop->
iter);
126 for (j = 0; j <= level; j++)
127 fprintf(file,
"|\t");
128 fprintf(file,
"+--nb_stmts: %zu\n", loop->
nb_stmts);
131 for (j = 0; j <= level; j++)
132 fprintf(file,
"|\t");
133 fprintf(file,
"+--stmt_ids:");
134 for(i = 0; i < loop->
nb_stmts; i++) {
136 fprintf(file,
"%2d, ", loop->
stmt_ids[i]);
141 for (j = 0; j <= level; j++)
142 fprintf(file,
"|\t");
143 fprintf(file,
"+--private_vars: %s\n", loop->
private_vars);
145 for (j = 0; j <= level; j++)
146 fprintf(file,
"|\t");
147 fprintf(file,
"+--directive: %d\n", loop->
directive);
149 for (j = 0; j <= level; j++)
150 fprintf(file,
"|\t");
151 fprintf(file,
"+--user: %s\n", loop->
user);
158 for (j = 0; j <= level; j++)
159 fprintf(file,
"|\t");
160 fprintf(file,
"V\n");
165 for (j = 0; j <= level; j++)
166 fprintf(file,
"|\t");
198 OSL_malloc(
string,
char *, high_water_mark *
sizeof(
char));
204 while (loop != NULL) {
205 sprintf(buffer,
"# ===========================================\n");
208 sprintf(buffer,
"# Loop number %d \n", ++nloop);
211 sprintf(buffer,
"# Iterator name\n");
213 sprintf(buffer,
"%s\n", loop->
iter);
216 sprintf(buffer,
"# Number of stmts\n");
218 sprintf(buffer,
"%zu\n", loop->
nb_stmts);
222 sprintf(buffer,
"# Statement identifiers\n");
225 for (i = 0; i < loop->
nb_stmts; i++) {
226 sprintf(buffer,
"%d\n", loop->
stmt_ids[i]);
230 sprintf(buffer,
"# Private variables\n");
235 sprintf(buffer,
"# Directive\n");
242 sprintf(buffer,
" %s", loop->
user);
245 sprintf(buffer,
"\n");
251 OSL_realloc(
string,
char *, (strlen(
string) + 1) *
sizeof(
char));
291 while (nb_loops != 0) {
297 for (i = 0; i < loop->
nb_stmts; i++)
311 if (!strcmp(loop->
user,
"(null)")) {
366 while (loop != NULL) {
406 for (i = 0; i < loop->
nb_stmts; i++) {
415 if(loop->
user != NULL)
469 if (((a1 == NULL) && (a2 != NULL)) || ((a1 != NULL) && (a2 == NULL))) {
486 for (i = 0; i < a1->
nb_stmts; i++) {
488 for (j = 0; j < a2->
nb_stmts; j++) {
540 if (((a1 == NULL) && (a2 != NULL)) || ((a1 != NULL) && (a2 == NULL))) {
541 OSL_info(
"lists of loops are not the same (compare with NULL)");
546 OSL_info(
"list of loops are not the same");
563 OSL_info(
"list of loops are not the same");
int * stmt_ids
Array of statement identifiers.
int directive
Loop directive to implement.
osl_loop_p osl_loop_clone(osl_loop_p loop)
int osl_loop_equal_one(osl_loop_p a1, osl_loop_p a2)
void *(* osl_clone_f)(void *)
void *(* osl_sread_f)(char **)
int osl_util_read_int(FILE *file, char **str)
size_t nb_stmts
Number of statements in the loop.
void(* osl_idump_f)(FILE *, void *, int)
#define OSL_LOOP_DIRECTIVE_USER
osl_interface_p osl_interface_malloc(void)
int osl_loop_equal(osl_loop_p a1, osl_loop_p a2)
char * osl_loop_sprint(osl_loop_p loop)
char * private_vars
\0 terminated variable names
void osl_util_safe_strcat(char **dst, char *src, size_t *hwm)
char *(* osl_sprint_f)(void *)
char * iter
\0 terminated iterator name
void osl_loop_dump(FILE *file, osl_loop_p loop)
osl_loop_p osl_loop_malloc(void)
#define OSL_strdup(destination, source)
void *(* osl_malloc_f)(void)
osl_interface_p osl_loop_interface(void)
char * osl_util_read_string(FILE *file, char **str)
#define OSL_realloc(ptr, type, size)
osl_loop_p osl_loop_clone_one(osl_loop_p loop)
void osl_loop_idump(FILE *file, osl_loop_p loop, int level)
int(* osl_equal_f)(void *, void *)
void osl_loop_free(osl_loop_p loop)
void(* osl_free_f)(void *)
char * user
\0 terminated user string
osl_loop_p osl_loop_sread(char **input)
int osl_loop_count(osl_loop_p ll)
void osl_loop_add(osl_loop_p loop, osl_loop_p *ll)
char * osl_util_read_line(FILE *file, char **str)
#define OSL_malloc(ptr, type, size)