From: Sven Verdoolaege Date: Thu, 4 Feb 2010 16:46:04 +0000 (+0100) Subject: isl_map_read: use more uniform way of reading in polylib constraint coefficients X-Git-Tag: isl-0.02~118 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5f90cb8301b9a22f9ed10326cab68bda17d121e9;p=platform%2Fupstream%2Fisl.git isl_map_read: use more uniform way of reading in polylib constraint coefficients --- diff --git a/isl_input.c b/isl_input.c index 06267b2..42ab055 100644 --- a/isl_input.c +++ b/isl_input.c @@ -547,6 +547,29 @@ error: return NULL; } +static int polylib_pos_to_isl_pos(__isl_keep isl_basic_map *bmap, int pos) +{ + if (pos < isl_basic_map_dim(bmap, isl_dim_out)) + return 1 + isl_basic_map_dim(bmap, isl_dim_param) + + isl_basic_map_dim(bmap, isl_dim_in) + pos; + pos -= isl_basic_map_dim(bmap, isl_dim_out); + + if (pos < isl_basic_map_dim(bmap, isl_dim_in)) + return 1 + isl_basic_map_dim(bmap, isl_dim_param) + pos; + pos -= isl_basic_map_dim(bmap, isl_dim_in); + + if (pos < isl_basic_map_dim(bmap, isl_dim_div)) + return 1 + isl_basic_map_dim(bmap, isl_dim_param) + + isl_basic_map_dim(bmap, isl_dim_in) + + isl_basic_map_dim(bmap, isl_dim_out) + pos; + pos -= isl_basic_map_dim(bmap, isl_dim_div); + + if (pos < isl_basic_map_dim(bmap, isl_dim_param)) + return 1 + pos; + + return 0; +} + static __isl_give isl_basic_map *basic_map_read_polylib_constraint( struct isl_stream *s, __isl_take isl_basic_map *bmap) { @@ -591,18 +614,8 @@ static __isl_give isl_basic_map *basic_map_read_polylib_constraint( if (k < 0) goto error; - for (j = 0; j < dim; ++j) { - tok = isl_stream_next_token(s); - if (!tok || tok->type != ISL_TOKEN_VALUE) { - isl_stream_error(s, tok, "expecting coefficient"); - if (tok) - isl_stream_push_token(s, tok); - goto error; - } - isl_int_set(c[1 + nparam + j], tok->u.v); - isl_token_free(tok); - } - for (j = 0; j < nparam; ++j) { + for (j = 0; j < 1 + isl_basic_map_total_dim(bmap); ++j) { + int pos; tok = isl_stream_next_token(s); if (!tok || tok->type != ISL_TOKEN_VALUE) { isl_stream_error(s, tok, "expecting coefficient"); @@ -610,18 +623,10 @@ static __isl_give isl_basic_map *basic_map_read_polylib_constraint( isl_stream_push_token(s, tok); goto error; } - isl_int_set(c[1 + j], tok->u.v); + pos = polylib_pos_to_isl_pos(bmap, j); + isl_int_set(c[pos], tok->u.v); isl_token_free(tok); } - tok = isl_stream_next_token(s); - if (!tok || tok->type != ISL_TOKEN_VALUE) { - isl_stream_error(s, tok, "expecting coefficient"); - if (tok) - isl_stream_push_token(s, tok); - goto error; - } - isl_int_set(c[0], tok->u.v); - isl_token_free(tok); return bmap; error: