X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_aff.c;h=13060f0f82471253453c9bcc9d278ea7c37f935c;hb=c53ceda9cc1f9556507c9956647975a1d661a380;hp=b7dc28ac705ec02732d3af0b40ce2bb97cb31ddb;hpb=e191c804b86c9d7fccd8f6af8840baeb581c99f9;p=platform%2Fupstream%2Fisl.git diff --git a/isl_aff.c b/isl_aff.c index b7dc28a..13060f0 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -1574,6 +1574,37 @@ __isl_give isl_aff *isl_aff_scale_down(__isl_take isl_aff *aff, isl_int f) return aff; } +/* Divide "aff" by "v". + */ +__isl_give isl_aff *isl_aff_scale_down_val(__isl_take isl_aff *aff, + __isl_take isl_val *v) +{ + if (!aff || !v) + goto error; + + if (isl_val_is_one(v)) { + isl_val_free(v); + return aff; + } + + if (!isl_val_is_rat(v)) + isl_die(isl_aff_get_ctx(aff), isl_error_invalid, + "expecting rational factor", goto error); + if (!isl_val_is_pos(v)) + isl_die(isl_aff_get_ctx(aff), isl_error_invalid, + "factor needs to be positive", goto error); + + aff = isl_aff_scale(aff, v->d); + aff = isl_aff_scale_down(aff, v->n); + + isl_val_free(v); + return aff; +error: + isl_aff_free(aff); + isl_val_free(v); + return NULL; +} + __isl_give isl_aff *isl_aff_scale_down_ui(__isl_take isl_aff *aff, unsigned f) { isl_int v;