Home | History | Annotate | Download | only in dist

Lines Matching refs:bmap1

279 /* Do "bmap1" and "bmap2" have the same parameters?
281 static isl_bool isl_basic_map_has_equal_params(__isl_keep isl_basic_map *bmap1,
286 space1 = isl_basic_map_peek_space(bmap1);
1575 /* Check that "bmap1" and "bmap2" have the same parameters,
1579 __isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
1583 match = isl_basic_map_has_equal_params(bmap1, bmap2);
1587 isl_die(isl_basic_map_get_ctx(bmap1), isl_error_invalid,
1947 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2,
1957 if (!bmap1 || !space)
1960 total = isl_basic_map_dim(bmap1, isl_dim_all);
1963 o_in = isl_basic_map_offset(bmap1, isl_dim_in) - 1 + i_pos;
1965 o_out = isl_basic_map_offset(bmap1, isl_dim_out) - 1 + o_pos;
1969 ctx = isl_basic_map_get_ctx(bmap1);
1976 return isl_basic_map_add_constraints_dim_map(bmap1, bmap2, dim_map);
1978 isl_basic_map_free(bmap1);
3708 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
3714 if (isl_basic_map_check_equal_params(bmap1, bmap2) < 0)
3716 space1 = isl_basic_map_peek_space(bmap1);
3725 return isl_basic_map_intersect(bmap2, bmap1);
3728 isl_basic_map_check_equal_space(bmap1, bmap2) < 0)
3731 if (isl_basic_map_plain_is_empty(bmap1)) {
3733 return bmap1;
3736 isl_basic_map_free(bmap1);
3740 if (bmap1->sample &&
3741 isl_basic_map_contains(bmap1, bmap1->sample) > 0 &&
3742 isl_basic_map_contains(bmap2, bmap1->sample) > 0)
3743 sample = isl_vec_copy(bmap1->sample);
3745 isl_basic_map_contains(bmap1, bmap2->sample) > 0 &&
3749 bmap1 = isl_basic_map_cow(bmap1);
3750 if (!bmap1)
3752 bmap1 = isl_basic_map_extend(bmap1,
3754 bmap1 = add_constraints(bmap1, bmap2, 0, 0);
3756 if (!bmap1)
3759 isl_vec_free(bmap1->sample);
3760 bmap1->sample = sample;
3763 bmap1 = isl_basic_map_simplify(bmap1);
3764 return isl_basic_map_finalize(bmap1);
3768 isl_basic_map_free(bmap1);
4773 /* Does "bmap2" apply to the range of "bmap1" (ignoring parameters)?
4775 isl_bool isl_basic_map_applies_range(__isl_keep isl_basic_map *bmap1,
4780 space1 = isl_basic_map_peek_space(bmap1);
4786 /* Check that "bmap2" applies to the range of "bmap1" (ignoring parameters).
4789 __isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
4793 equal = isl_basic_map_applies_range(bmap1, bmap2);
4797 isl_die(isl_basic_map_get_ctx(bmap1), isl_error_invalid,
4803 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
4811 if (isl_basic_map_check_equal_params(bmap1, bmap2) < 0)
4813 if (isl_basic_map_check_applies_range(bmap1, bmap2) < 0)
4816 n_in = isl_basic_map_dim(bmap1, isl_dim_in);
4818 n = isl_basic_map_dim(bmap1, isl_dim_out);
4819 nparam = isl_basic_map_dim(bmap1, isl_dim_param);
4823 space_result = isl_space_join(isl_basic_map_get_space(bmap1),
4826 total = nparam + n_in + n_out + bmap1->n_div + bmap2->n_div + n;
4827 dim_map1 = isl_dim_map_alloc(bmap1->ctx, total);
4828 dim_map2 = isl_dim_map_alloc(bmap1->ctx, total);
4829 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_param, pos = 0);
4831 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_in, pos += nparam);
4833 isl_dim_map_div(dim_map1, bmap1, pos += n_out);
4834 isl_dim_map_div(dim_map2, bmap2, pos += bmap1->n_div);
4835 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_out, pos += bmap2->n_div);
4839 bmap1->n_div + bmap2->n_div + n,
4840 bmap1->n_eq + bmap2->n_eq,
4841 bmap1->n_ineq + bmap2->n_ineq);
4842 bmap = isl_basic_map_add_constraints_dim_map(bmap, bmap1, dim_map1);
4849 isl_basic_map_free(bmap1);
4869 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
4871 if (isl_basic_map_check_equal_params(bmap1, bmap2) < 0)
4873 if (!isl_space_tuple_is_equal(bmap1->dim, isl_dim_in,
4875 isl_die(isl_basic_map_get_ctx(bmap1), isl_error_invalid,
4878 bmap1 = isl_basic_map_reverse(bmap1);
4879 bmap1 = isl_basic_map_apply_range(bmap1, bmap2);
4880 return isl_basic_map_reverse(bmap1);
4882 isl_basic_map_free(bmap1);
4890 __isl_give isl_basic_map *isl_basic_map_sum(__isl_take isl_basic_map *bmap1,
4899 if (isl_basic_map_check_equal_space(bmap1, bmap2) < 0)
4902 nparam = isl_basic_map_dim(bmap1, isl_dim_param);
4903 n_in = isl_basic_map_dim(bmap1, isl_dim_in);
4904 n_out = isl_basic_map_dim(bmap1, isl_dim_out);
4908 total = nparam + n_in + n_out + bmap1->n_div + bmap2->n_div + 2 * n_out;
4909 dim_map1 = isl_dim_map_alloc(bmap1->ctx, total);
4911 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_param, pos = 0);
4913 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_in, pos += nparam);
4915 isl_dim_map_div(dim_map1, bmap1, pos += n_in + n_out);
4916 isl_dim_map_div(dim_map2, bmap2, pos += bmap1->n_div);
4917 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_out, pos += bmap2->n_div);
4920 bmap = isl_basic_map_alloc_space(isl_space_copy(bmap1->dim),
4921 bmap1->n_div + bmap2->n_div + 2 * n_out,
4922 bmap1->n_eq + bmap2->n_eq + n_out,
4923 bmap1->n_ineq + bmap2->n_ineq);
4933 bmap = isl_basic_map_add_constraints_dim_map(bmap, bmap1, dim_map1);
4941 isl_basic_map_free(bmap1);
9173 isl_bool isl_basic_map_is_subset(__isl_keep isl_basic_map *bmap1,
9180 if (!bmap1 || !bmap2)
9183 map1 = isl_map_from_basic_map(isl_basic_map_copy(bmap1));
9200 isl_bool isl_basic_map_is_equal(__isl_keep isl_basic_map *bmap1,
9205 if (!bmap1 || !bmap2)
9207 is_subset = isl_basic_map_is_subset(bmap1, bmap2);
9210 is_subset = isl_basic_map_is_subset(bmap2, bmap1);
9332 isl_bool isl_basic_map_is_strict_subset(__isl_keep isl_basic_map *bmap1,
9337 if (!bmap1 || !bmap2)
9339 is_subset = isl_basic_map_is_subset(bmap1, bmap2);
9342 is_subset = isl_basic_map_is_subset(bmap2, bmap1);
9548 __isl_give isl_map *isl_basic_map_union(__isl_take isl_basic_map *bmap1,
9553 if (isl_basic_map_check_equal_space(bmap1, bmap2) < 0)
9556 map = isl_map_alloc_space(isl_space_copy(bmap1->dim), 2, 0);
9559 map = isl_map_add_basic_map(map, bmap1);
9563 isl_basic_map_free(bmap1);
9951 isl_basic_map *bmap1;
9954 bmap1 = isl_basic_map_from_range(isl_basic_set_copy(bset1));
9956 bmap1 = isl_basic_map_move_dims(bmap1, isl_dim_in, 0,
9960 return isl_basic_map_range_product(bmap1, bmap2);
9971 isl_basic_map *bmap1;
9984 bmap1 = join_initial(bset1, bset2, pos);
9985 total = isl_basic_map_dim(bmap1, isl_dim_all);
9989 ctx = bmap1->ctx;
9996 res = isl_basic_map_solve_lp(bmap1, 1, obj->block.data, ctx->one,
9998 isl_basic_map_free(bmap1);
10002 isl_basic_map_free(bmap1);
10410 int isl_basic_map_plain_cmp(__isl_keep isl_basic_map *bmap1,
10417 if (!bmap1 || !bmap2)
10420 if (bmap1 == bmap2)
10422 space1 = isl_basic_map_peek_space(bmap1);
10427 if (ISL_F_ISSET(bmap1, ISL_BASIC_MAP_RATIONAL) !=
10429 return ISL_F_ISSET(bmap1, ISL_BASIC_MAP_RATIONAL) ? -1 : 1;
10430 if (ISL_F_ISSET(bmap1, ISL_BASIC_MAP_EMPTY) &&
10433 if (ISL_F_ISSET(bmap1, ISL_BASIC_MAP_EMPTY))
10437 if (bmap1->n_eq != bmap2->n_eq)
10438 return bmap1->n_eq - bmap2->n_eq;
10439 if (bmap1->n_ineq != bmap2->n_ineq)
10440 return bmap1->n_ineq - bmap2->n_ineq;
10441 if (bmap1->n_div != bmap2->n_div)
10442 return bmap1->n_div - bmap2->n_div;
10443 total = isl_basic_map_dim(bmap1, isl_dim_all);
10446 for (i = 0; i < bmap1->n_eq; ++i) {
10447 cmp = isl_seq_cmp(bmap1->eq[i], bmap2->eq[i], 1+total);
10451 for (i = 0; i < bmap1->n_ineq; ++i) {
10452 cmp = isl_seq_cmp(bmap1->ineq[i], bmap2->ineq[i], 1+total);
10456 for (i = 0; i < bmap1->n_div; ++i) {
10459 unknown1 = isl_basic_map_div_is_marked_unknown(bmap1, i);
10469 cmp = isl_seq_cmp(bmap1->div[i], bmap2->div[i], 1+1+total);
10500 isl_bool isl_basic_map_plain_is_equal(__isl_keep isl_basic_map *bmap1,
10503 if (!bmap1 || !bmap2)
10505 return isl_basic_map_plain_cmp(bmap1, bmap2) == 0;
10517 isl_basic_map *bmap1 = *(isl_basic_map **) p1;
10520 return isl_basic_map_plain_cmp(bmap1, bmap2);
10793 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
10800 if (isl_basic_map_check_equal_params(bmap1, bmap2) < 0)
10802 space_result = isl_space_product(isl_space_copy(bmap1->dim),
10805 in1 = isl_basic_map_dim(bmap1, isl_dim_in);
10807 out1 = isl_basic_map_dim(bmap1, isl_dim_out);
10809 nparam = isl_basic_map_dim(bmap1, isl_dim_param);
10811 total = nparam + in1 + in2 + out1 + out2 + bmap1->n_div + bmap2->n_div;
10812 dim_map1 = isl_dim_map_alloc(bmap1->ctx, total);
10813 dim_map2 = isl_dim_map_alloc(bmap1->ctx, total);
10814 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_param, pos = 0);
10816 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_in, pos += nparam);
10818 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_out, pos += in2);
10820 isl_dim_map_div(dim_map1, bmap1, pos += out2);
10821 isl_dim_map_div(dim_map2, bmap2, pos += bmap1->n_div);
10824 bmap1->n_div + bmap2->n_div,
10825 bmap1->n_eq + bmap2->n_eq,
10826 bmap1->n_ineq + bmap2->n_ineq);
10827 bmap = isl_basic_map_add_constraints_dim_map(bmap, bmap1, dim_map1);
10832 isl_basic_map_free(bmap1);
10838 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
10842 prod = isl_basic_map_product(bmap1, bmap2);
10854 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
10863 in1 = isl_basic_map_dim(bmap1, isl_dim_in);
10865 out = isl_basic_map_dim(bmap1, isl_dim_out);
10866 nparam = isl_basic_map_dim(bmap1, isl_dim_param);
10870 space1 = isl_basic_map_get_space(bmap1);
10874 total = nparam + in1 + in2 + out + bmap1->n_div + bmap2->n_div;
10875 dim_map1 = isl_dim_map_alloc(bmap1->ctx, total);
10876 dim_map2 = isl_dim_map_alloc(bmap1->ctx, total);
10877 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_param, pos = 0);
10879 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_in, pos += nparam);
10881 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_out, pos += in2);
10883 isl_dim_map_div(dim_map1, bmap1, pos += out);
10884 isl_dim_map_div(dim_map2, bmap2, pos += bmap1->n_div);
10887 bmap1->n_div + bmap2->n_div,
10888 bmap1->n_eq + bmap2->n_eq,
10889 bmap1->n_ineq + bmap2->n_ineq);
10890 bmap = isl_basic_map_add_constraints_dim_map(bmap, bmap1, dim_map1);
10895 isl_basic_map_free(bmap1);
10901 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
10910 rational = isl_basic_map_is_rational(bmap1);
10913 in = isl_basic_map_dim(bmap1, isl_dim_in);
10914 out1 = isl_basic_map_dim(bmap1, isl_dim_out);
10916 nparam = isl_basic_map_dim(bmap1, isl_dim_param);
10920 if (isl_basic_map_check_equal_params(bmap1, bmap2) < 0)
10923 space_result = isl_space_range_product(isl_space_copy(bmap1->dim),
10926 total = nparam + in + out1 + out2 + bmap1->n_div + bmap2->n_div;
10927 dim_map1 = isl_dim_map_alloc(bmap1->ctx, total);
10928 dim_map2 = isl_dim_map_alloc(bmap1->ctx, total);
10929 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_param, pos = 0);
10931 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_in, pos += nparam);
10933 isl_dim_map_dim(dim_map1, bmap1->dim, isl_dim_out, pos += in);
10935 isl_dim_map_div(dim_map1, bmap1, pos += out2);
10936 isl_dim_map_div(dim_map2, bmap2, pos += bmap1->n_div);
10939 bmap1->n_div + bmap2->n_div,
10940 bmap1->n_eq + bmap2->n_eq,
10941 bmap1->n_ineq + bmap2->n_ineq);
10942 bmap = isl_basic_map_add_constraints_dim_map(bmap, bmap1, dim_map1);
10949 isl_basic_map_free(bmap1);
10955 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
10959 prod = isl_basic_map_range_product(bmap1, bmap2);
14493 * expressions at position "pos1" in "bmap1" and "pos2" in "bmap2" equal
14498 isl_bool isl_basic_map_equal_div_expr_part(__isl_keep isl_basic_map *bmap1,
14502 if (isl_basic_map_check_range(bmap1, isl_dim_div, pos1, 1) < 0)
14506 return isl_seq_eq(bmap1->div[pos1] + first,
14510 /* Are the integer division expressions at position "pos1" in "bmap1" and
14515 __isl_keep isl_basic_map *bmap1, int pos1,
14521 total = isl_basic_map_dim(bmap1, isl_dim_all);
14526 isl_die(isl_basic_map_get_ctx(bmap1), isl_error_invalid,
14528 equal = isl_basic_map_equal_div_expr_part(bmap1, pos1, bmap2, pos2,
14532 equal = isl_basic_map_equal_div_expr_part(bmap1, pos1, bmap2, pos2,
14536 return isl_basic_map_equal_div_expr_part(bmap1, pos1, bmap2, pos2,