/* This function prints the i'th block size multiplied by the i'th grid size, * where i (a parameter to this function) is one of the possible dimensions of * grid sizes and block sizes. * If the dimension of block sizes is not equal to the dimension of grid sizes * the output is calculated as follows: * * Suppose that: * block_sizes[dim1] is the list of blocks sizes and it contains dim1 elements. * grid_sizes[dim2] is the list of grid sizes and it contains dim2 elements. * * The output is: * If (i > dim2) then the output is block_sizes[i] * If (i > dim1) then the output is grid_sizes[i] */ static __isl_give isl_printer *opencl_print_total_number_of_work_items_for_dim( __isl_take isl_printer *p, struct ppcg_kernel *kernel, int i) { int grid_dim, block_dim; isl_pw_aff *bound_grid; grid_dim = isl_multi_pw_aff_dim(kernel->grid_size, isl_dim_set); block_dim = kernel->n_block; if (i < min(grid_dim, block_dim)) { bound_grid = isl_multi_pw_aff_get_pw_aff(kernel->grid_size, i); p = isl_printer_print_str(p, "("); p = isl_printer_print_pw_aff(p, bound_grid); p = isl_printer_print_str(p, ") * "); p = isl_printer_print_int(p, kernel->block_dim[i]); isl_pw_aff_free(bound_grid); } else if (i >= grid_dim) p = isl_printer_print_int(p, kernel->block_dim[i]); else { bound_grid = isl_multi_pw_aff_get_pw_aff(kernel->grid_size, i); p = isl_printer_print_pw_aff(p, bound_grid); isl_pw_aff_free(bound_grid); } return p; }
void isl_stream_error(struct isl_stream *s, struct isl_token *tok, char *msg) { int line = tok ? tok->line : s->line; int col = tok ? tok->col : s->col; fprintf(stderr, "syntax error (%d, %d): %s\n", line, col, msg); if (tok) { if (tok->type < 256) fprintf(stderr, "got '%c'\n", tok->type); else if (tok->type == ISL_TOKEN_IDENT) fprintf(stderr, "got ident '%s'\n", tok->u.s); else if (tok->is_keyword) fprintf(stderr, "got keyword '%s'\n", tok->u.s); else if (tok->type == ISL_TOKEN_VALUE) { fprintf(stderr, "got value '"); isl_int_print(stderr, tok->u.v, 0); fprintf(stderr, "'\n"); } else if (tok->type == ISL_TOKEN_MAP) { isl_printer *p; fprintf(stderr, "got map '"); p = isl_printer_to_file(s->ctx, stderr); p = isl_printer_print_map(p, tok->u.map); isl_printer_free(p); fprintf(stderr, "'\n"); } else if (tok->type == ISL_TOKEN_AFF) { isl_printer *p; fprintf(stderr, "got affine expression '"); p = isl_printer_to_file(s->ctx, stderr); p = isl_printer_print_pw_aff(p, tok->u.pwaff); isl_printer_free(p); fprintf(stderr, "'\n"); } else if (tok->u.s) fprintf(stderr, "got token '%s'\n", tok->u.s); else fprintf(stderr, "got token type %d\n", tok->type); } }