void isl_imath_submul_ui(mp_int rop, mp_int op1, unsigned long op2) { isl_int temp; isl_int_init(temp); isl_int_set_ui(temp, op2); isl_int_submul(rop, op1, temp); isl_int_clear(temp); }
static isl_constraint * build_linearized_memory_access (isl_map *map, poly_dr_p pdr) { isl_constraint *res; isl_local_space *ls = isl_local_space_from_space (isl_map_get_space (map)); unsigned offset, nsubs; int i; isl_int size, subsize; res = isl_equality_alloc (ls); isl_int_init (size); isl_int_set_ui (size, 1); isl_int_init (subsize); isl_int_set_ui (subsize, 1); nsubs = isl_set_dim (pdr->extent, isl_dim_set); /* -1 for the already included L dimension. */ offset = isl_map_dim (map, isl_dim_out) - 1 - nsubs; res = isl_constraint_set_coefficient_si (res, isl_dim_out, offset + nsubs, -1); /* Go through all subscripts from last to first. First dimension is the alias set, ignore it. */ for (i = nsubs - 1; i >= 1; i--) { isl_space *dc; isl_aff *aff; res = isl_constraint_set_coefficient (res, isl_dim_out, offset + i, size); dc = isl_set_get_space (pdr->extent); aff = isl_aff_zero_on_domain (isl_local_space_from_space (dc)); aff = isl_aff_set_coefficient_si (aff, isl_dim_in, i, 1); isl_set_max (pdr->extent, aff, &subsize); isl_aff_free (aff); isl_int_mul (size, size, subsize); } isl_int_clear (subsize); isl_int_clear (size); return res; }