99 for (j = 0; j < level; j++)
100 fprintf(file,
"|\t");
103 fprintf(file,
"+-- osl_scop_t\n");
105 fprintf(file,
"+-- NULL scop\n");
107 while (scop != NULL) {
110 for (j = 0; j < level; j++)
111 fprintf(file,
"|\t");
112 fprintf(file,
"| osl_scop_t\n");
118 for (j = 0; j <= level+1; j++)
119 fprintf(file,
"|\t");
123 for (j = 0; j < level; j++)
124 fprintf(file,
"|\t");
125 fprintf(file,
"|\tVersion: %d\n", scop->version);
128 for (j = 0; j <= level+1; j++)
129 fprintf(file,
"|\t");
133 for (j = 0; j < level; j++)
134 fprintf(file,
"|\t");
135 fprintf(file,
"|\tLanguage: %s\n", scop->language);
138 for (j = 0; j <= level+1; j++)
139 fprintf(file,
"|\t");
161 for (j = 0; j <= level; j++)
162 fprintf(file,
"|\t");
163 fprintf(file,
"V\n");
168 for (j = 0; j <= level; j++)
169 fprintf(file,
"|\t");
201 &nb_scattdims, &nb_localdims, &array_id);
219 int parameters_backedup = 0;
220 int arrays_backedup = 0;
227 fprintf(file,
"# NULL scop\n");
231 fprintf(file,
"# [File generated by the OpenScop Library %s]\n",
236 OSL_warning(
"OpenScop integrity check failed. Something may go wrong.");
241 while (scop != NULL) {
244 parameters_backedup = 1;
251 if (arrays != NULL) {
253 arrays_backup = names->
arrays;
258 fprintf(file,
"# =============================================== " 260 fprintf(file,
"# Language\n");
261 fprintf(file,
"%s\n\n", scop->language);
263 fprintf(file,
"# Context\n");
272 fprintf(file,
"\n# Number of statements\n");
277 if (scop->extension) {
278 fprintf(file,
"# =============================================== " 285 if (parameters_backedup) {
286 parameters_backedup = 0;
291 if (arrays_backedup) {
294 names->
arrays = arrays_backup;
312 int parameters_backedup = 0;
313 int arrays_backedup = 0;
320 fprintf(file,
"# NULL scop\n");
324 fprintf(file,
"# [File generated by the OpenScop Library %s]\n" 325 "# [SCoPLib format]\n",
330 OSL_error(
"SCoP integrity check failed. Something may go wrong.");
337 while (scop != NULL) {
340 parameters_backedup = 1;
347 if (arrays != NULL) {
349 arrays_backup = names->
arrays;
353 fprintf(file,
"\nSCoP\n\n");
354 fprintf(file,
"# =============================================== " 356 fprintf(file,
"# Language\n");
357 fprintf(file,
"%s\n\n", scop->language);
359 fprintf(file,
"# Context\n");
368 if (scop->parameters) {
369 fprintf(file,
"# Parameter names\n");
373 fprintf(file,
"\n# Number of statements\n");
378 if (scop->extension) {
379 fprintf(file,
"# =============================================== " 385 if (parameters_backedup) {
386 parameters_backedup = 0;
391 if (arrays_backedup) {
394 names->
arrays = arrays_backup;
423 osl_scop_p list = NULL, current = NULL, scop;
458 OSL_error(
"no language (backend) specified");
461 OSL_warning(
"uninterpreted information (after language)");
463 if (language != NULL) {
482 for (i = 0; i < nb_statements; i++) {
485 if (scop->statement == NULL)
486 scop->statement = stmt;
505 current->next = scop;
550 OSL_malloc(scop, osl_scop_p,
sizeof(osl_scop_t));
552 scop->language = NULL;
553 scop->context = NULL;
554 scop->parameters = NULL;
555 scop->statement = NULL;
556 scop->registry = NULL;
557 scop->extension = NULL;
573 while (scop != NULL) {
574 if (scop->language != NULL)
575 free(scop->language);
602 while (*location != NULL)
603 location = &((*location)->next);
619 while (scop != NULL) {
636 osl_scop_p clone = NULL, node, previous = NULL;
639 while (scop != NULL) {
641 node->version = scop->version;
642 if (scop->language != NULL)
656 previous->next = node;
657 previous = previous->next;
675 osl_scop_p new_scop, scop_ptr, result = NULL;
677 for ( ; scop != NULL; scop = scop->next) {
678 statement = scop->statement;
679 scop_statement_ptr = NULL;
682 for ( ; statement != NULL; statement = statement->
next) {
684 if (!scop_statement_ptr) {
685 scop_statement_ptr = new_statement;
686 new_scop->statement = scop_statement_ptr;
688 scop_statement_ptr->
next = new_statement;
689 scop_statement_ptr = scop_statement_ptr->
next;
692 while (scop_statement_ptr && scop_statement_ptr->
next != NULL)
693 scop_statement_ptr = scop_statement_ptr->
next;
697 if (scop->language != NULL) {
698 new_scop->language = (
char *) malloc(strlen(scop->language) + 1);
699 new_scop->language = strcpy(new_scop->language, scop->language);
703 new_scop->version = scop->version;
708 scop_ptr->next = new_scop;
709 scop_ptr = scop_ptr->next;
726 while ((s1 != NULL) && (s2 != NULL)) {
730 if (s1->version != s2->version) {
731 OSL_info(
"versions are not the same");
735 if (strcmp(s1->language, s2->language) != 0) {
736 OSL_info(
"languages are not the same");
741 OSL_info(
"contexts are not the same");
746 OSL_info(
"parameters are not the same");
751 OSL_info(
"statements are not the same");
756 OSL_info(
"registries are not the same");
761 OSL_info(
"extensions are not the same");
769 if (((s1 == NULL) && (s2 != NULL)) || ((s1 != NULL) && (s2 == NULL)))
784 int expected_nb_parameters;
787 while (scop != NULL) {
789 if ((scop->language != NULL) &&
790 (!strcmp(scop->language,
"caml") || !strcmp(scop->language,
"Caml") ||
791 !strcmp(scop->language,
"ocaml") || !strcmp(scop->language,
"OCaml")))
792 fprintf(stderr,
"[OpenScop] Alert: What ?! Caml ?! Are you sure ?!?!\n");
803 if (scop->context != NULL)
804 expected_nb_parameters = scop->context->nb_parameters;
811 expected_nb_parameters))
832 if (scop->next != NULL)
834 if (scop == NULL || scop->statement == NULL)
840 int precision = scop->statement->scattering->
precision;
843 statement = scop->statement;
844 while (statement != NULL) {
848 OSL_error(
"Local dims in scattering matrix");
852 domain = statement->
domain;
853 while (domain != NULL) {
855 OSL_error(
"Local dims in domain matrix");
858 domain = domain->
next;
863 for (i = 0 ; i < scattering->
nb_rows ; i++) {
879 statement = statement->
next;
894 if (scop->context == NULL) {
895 OSL_debug(
"no context domain, assuming 0 parameters");
899 return scop->context->nb_parameters;
915 char * extension_string;
917 if ((interface != NULL) && (scop != NULL)) {
921 if (textual != NULL) {
960 while (scop != NULL) {
962 &local_nb_parameters,
969 &local_nb_parameters,
975 *nb_parameters =
OSL_max(*nb_parameters, local_nb_parameters);
976 *nb_iterators =
OSL_max(*nb_iterators, local_nb_iterators);
977 *nb_scattdims =
OSL_max(*nb_scattdims, local_nb_scattdims);
978 *nb_localdims =
OSL_max(*nb_localdims, local_nb_localdims);
979 *array_id =
OSL_max(*array_id, local_array_id);
993 int max_scattering_dims = 0;
997 if ((scop != NULL) && (scop->statement != NULL)) {
999 statement = scop->statement;
1000 while (statement != NULL) {
1002 max_scattering_dims =
OSL_max(max_scattering_dims,
1005 statement = statement->
next;
1009 statement = scop->statement;
1010 while (statement != NULL) {
1013 max_scattering_dims);
1017 statement = statement->
next;
size_t osl_scop_number(osl_scop_p scop)
osl_interface_p osl_interface_clone(osl_interface_p interface)
osl_scop_p osl_scop_malloc(void)
int osl_util_read_int(FILE *file, char **str)
void * osl_generic_lookup(osl_generic_p x, char const *const URI)
void osl_scop_register_extension(osl_scop_p scop, osl_interface_p interface)
osl_relation_p osl_relation_extend_output(osl_relation_p relation, int dim)
osl_generic_p osl_generic_read_one(FILE *file, osl_interface_p registry)
void osl_scop_free(osl_scop_p scop)
struct osl_statement * next
void osl_scop_idump(FILE *file, osl_scop_p scop, int level)
osl_names_p osl_names_generate(char *parameter_prefix, int nb_parameters, char *iterator_prefix, int nb_iterators, char *scatt_dim_prefix, int nb_scatt_dims, char *local_dim_prefix, int nb_local_dims, char *array_prefix, int nb_arrays)
int osl_statement_number(osl_statement_p statement)
osl_relation_p scattering
osl_statement_p osl_statement_pread(FILE *file, osl_interface_p registry, int precision)
int osl_statement_equal(osl_statement_p s1, osl_statement_p s2)
osl_scop_p osl_scop_remove_unions(osl_scop_p scop)
osl_statement_p osl_statement_clone(osl_statement_p statement)
osl_scop_p osl_scop_clone(osl_scop_p scop)
void osl_relation_free(osl_relation_p relation)
void osl_interface_free(osl_interface_p interface)
void osl_relation_idump(FILE *file, osl_relation_p relation, int level)
osl_generic_p osl_generic_sread(char **input, osl_interface_p registry)
void osl_statement_free(osl_statement_p statement)
osl_generic_p osl_generic_clone(osl_generic_p generic)
void osl_relation_pprint_scoplib(FILE *file, osl_relation_p relation, osl_names_p names, int print_nth_part, int add_fakeiter)
void osl_relation_pprint(FILE *file, osl_relation_p relation, osl_names_p names)
int osl_scop_equal(osl_scop_p s1, osl_scop_p s2)
#define OSL_strdup(destination, source)
void osl_statement_pprint_scoplib(FILE *file, osl_statement_p statement, osl_names_p names)
void osl_scop_add(osl_scop_p *location, osl_scop_p scop)
osl_scop_p osl_scop_pread(FILE *file, osl_interface_p registry, int precision)
osl_names_p osl_scop_names(osl_scop_p scop)
void osl_scop_get_attributes(osl_scop_p scop, int *nb_parameters, int *nb_iterators, int *nb_scattdims, int *nb_localdims, int *array_id)
int osl_generic_equal(osl_generic_p x1, osl_generic_p x2)
osl_relation_p osl_relation_clone(osl_relation_p relation)
int osl_relation_equal(osl_relation_p r1, osl_relation_p r2)
void osl_statement_get_attributes(osl_statement_p statement, int *nb_parameters, int *nb_iterators, int *nb_scattdims, int *nb_localdims, int *array_id)
osl_strings_p osl_strings_read(FILE *file)
osl_statement_p osl_statement_remove_unions(osl_statement_p statement)
void osl_interface_idump(FILE *file, osl_interface_p interface, int level)
int osl_relation_integrity_check(osl_relation_p relation, int expected_type, int expected_nb_output_dims, int expected_nb_input_dims, int expected_nb_parameters)
int osl_statement_integrity_check(osl_statement_p statement, int expected_nb_parameters)
void osl_scop_print_scoplib(FILE *file, osl_scop_p scop)
void osl_names_free(osl_names_p names)
int osl_interface_equal(osl_interface_p interface1, osl_interface_p interface2)
void osl_strings_free(osl_strings_p strings)
void osl_generic_idump(FILE *file, osl_generic_p generic, int level)
void osl_scop_normalize_scattering(osl_scop_p scop)
int osl_int_mone(int precision, osl_const_int_t value)
value == -1
char * osl_util_read_uptotag(FILE *file, char **str, char *name)
int osl_scop_integrity_check(osl_scop_p scop)
void osl_generic_print(FILE *file, osl_generic_p generic)
osl_scop_p osl_scop_read(FILE *foo)
void osl_generic_free(osl_generic_p generic)
void osl_interface_add(osl_interface_p *list, osl_interface_p interface)
size_t osl_strings_size(osl_const_strings_const_p strings)
void osl_statement_pprint(FILE *file, osl_statement_p statement, osl_names_p names)
struct osl_textual * osl_textual_p
void osl_relation_get_attributes(osl_relation_p relation, int *nb_parameters, int *nb_iterators, int *nb_scattdims, int *nb_localdims, int *array_id)
void osl_generic_print_options_scoplib(FILE *file, osl_generic_p generic)
void osl_strings_print(FILE *file, osl_strings_p strings)
void osl_scop_print(FILE *file, osl_scop_p scop)
int osl_util_get_precision(void)
int osl_scop_check_compatible_scoplib(osl_scop_p scop)
int osl_generic_has_URI(osl_const_generic_const_p x, char const *const URI)
osl_relation_p osl_relation_pread(FILE *foo, int precision)
void osl_util_print_provided(FILE *file, int provided, char *title)
osl_interface_p osl_interface_get_default_registry(void)
void osl_scop_dump(FILE *file, osl_scop_p scop)
osl_generic_p osl_generic_read(FILE *file, osl_interface_p registry)
void osl_statement_idump(FILE *file, osl_statement_p statement, int level)
osl_strings_p osl_arrays_to_strings(osl_arrays_p arrays)
int osl_scop_get_nb_parameters(osl_scop_p scop)
void osl_generic_add(osl_generic_p *list, osl_generic_p generic)
struct osl_relation * next
int osl_int_zero(int precision, osl_const_int_t value)
value == 0
#define OSL_malloc(ptr, type, size)