~ubuntu-branches/ubuntu/trusty/cloog/trusty

« back to all changes in this revision

Viewing changes to source/isl/constraints.c

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2011-12-15 18:39:17 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20111215183917-uqggmujou8wna9js
Tags: 0.17.0-1
New upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
450
450
        cloog_int_t c;
451
451
        struct clast_reduction *r;
452
452
        struct clast_expr *e = NULL;
453
 
        struct isl_div *div;
 
453
        isl_aff *div;
454
454
 
455
 
        div = isl_constraint_div(cloog_constraint_to_isl(constraint), pos);
 
455
        div = isl_constraint_get_div(cloog_constraint_to_isl(constraint), pos);
456
456
 
457
457
        cloog_int_init(c);
458
458
        for (i = 0, nb_elts = 0; i < dim; ++i) {
459
459
                struct cloog_isl_dim dim;
460
460
 
461
461
                dim = constraint_cloog_dim_to_isl_dim(constraint, i);
462
 
                isl_div_get_coefficient(div, dim.type, dim.pos, &c);
 
462
                if (dim.type == isl_dim_set)
 
463
                        dim.type = isl_dim_in;
 
464
                isl_aff_get_coefficient(div, dim.type, dim.pos, &c);
463
465
                if (!cloog_int_is_zero(c))
464
466
                        ++nb_elts;
465
467
        }
466
 
        isl_div_get_constant(div, &c);
 
468
        isl_aff_get_constant(div, &c);
467
469
        if (!cloog_int_is_zero(c))
468
470
                ++nb_elts;
469
471
 
473
475
                struct cloog_isl_dim dim;
474
476
 
475
477
                dim = constraint_cloog_dim_to_isl_dim(constraint, i);
476
 
                isl_div_get_coefficient(div, dim.type, dim.pos, &c);
 
478
                if (dim.type == isl_dim_set)
 
479
                        dim.type = isl_dim_in;
 
480
                isl_aff_get_coefficient(div, dim.type, dim.pos, &c);
477
481
                if (cloog_int_is_zero(c))
478
482
                        continue;
479
483
 
481
485
 
482
486
                r->elts[nb_elts++] = &new_clast_term(c, v)->expr;
483
487
        }
484
 
        isl_div_get_constant(div, &c);
 
488
        isl_aff_get_constant(div, &c);
485
489
        if (!cloog_int_is_zero(c))
486
490
                r->elts[nb_elts++] = &new_clast_term(c, NULL)->expr;
487
491
 
488
 
        isl_div_get_denominator(div, &c);
 
492
        isl_aff_get_denominator(div, &c);
489
493
        e = &new_clast_binary(clast_bin_fdiv, &r->expr, c)->expr;
490
494
 
491
495
        cloog_int_clear(c);
492
496
 
493
 
        isl_div_free(div);
 
497
        isl_aff_free(div);
494
498
 
495
499
        return e;
496
500
}
763
767
        int level, CloogEqualities *equal, int nb_par, cloog_int_t *bound)
764
768
{
765
769
        int j;
766
 
        isl_ctx *ctx;
767
 
        isl_dim *idim;
 
770
        isl_space *idim;
768
771
        struct isl_basic_set *eq;
769
772
        struct isl_basic_map *id;
770
773
        struct cloog_isl_dim dim;
771
774
        struct isl_constraint *c;
772
 
        struct isl_div *div;
773
775
        unsigned constraints_dim;
774
776
        unsigned n_div;
775
777
        isl_basic_set *bset, *orig;
776
 
        isl_aff *aff;
777
778
 
778
779
        bset = cloog_constraints_set_to_isl(constraints);
779
780
        orig = isl_basic_set_copy(bset);
780
 
        ctx = isl_basic_set_get_ctx(bset);
781
781
        dim = set_cloog_dim_to_isl_dim(constraints, level - 1);
782
782
        assert(dim.type == isl_dim_set);
783
783
 
797
797
                return cloog_constraint_set_from_isl_basic_set(bset);
798
798
        }
799
799
 
800
 
        idim = isl_dim_map_from_set(isl_basic_set_get_dim(bset));
 
800
        idim = isl_space_map_from_set(isl_basic_set_get_space(bset));
801
801
        id = isl_basic_map_identity(idim);
802
802
        id = isl_basic_map_remove_dims(id, isl_dim_out, dim.pos, 1);
803
803
        bset = isl_basic_set_apply(bset, isl_basic_map_copy(id));
817
817
                return cloog_constraint_set_from_isl_basic_set(bset);
818
818
        }
819
819
 
820
 
        div = isl_basic_set_div(isl_basic_set_copy(bset), 0);
821
 
        aff = isl_aff_from_div(div);
822
 
        aff = isl_aff_add_coefficient_si(aff, isl_dim_set, dim.pos, -1);
823
 
        c = isl_equality_from_aff(aff);
 
820
        c = isl_equality_alloc(isl_basic_set_get_local_space(bset));
 
821
        c = isl_constraint_set_coefficient_si(c, isl_dim_div, 0, 1);
 
822
        c = isl_constraint_set_coefficient_si(c, isl_dim_set, dim.pos, -1);
824
823
        bset = isl_basic_set_add_constraint(bset, c);
825
824
 
826
825
        isl_int_set_si(*bound, 0);
894
893
        int level, CloogStride *stride)
895
894
{
896
895
        int i;
897
 
        isl_dim *dim = isl_constraint_get_dim(c);
898
 
        isl_local_space *ls = isl_local_space_from_dim(dim);
899
 
        isl_aff *offset = isl_aff_zero(ls);
 
896
        isl_space *dim = isl_constraint_get_space(c);
 
897
        isl_local_space *ls = isl_local_space_from_space(dim);
 
898
        isl_aff *offset = isl_aff_zero_on_domain(ls);
900
899
        isl_int u;
901
900
        unsigned nparam, nvar;
902
901
 
915
914
                        continue;
916
915
                isl_constraint_get_coefficient(c, isl_dim_set, i, &u);
917
916
                isl_int_mul(u, u, stride->factor);
918
 
                offset = isl_aff_set_coefficient(offset, isl_dim_set, i, u);
 
917
                offset = isl_aff_set_coefficient(offset, isl_dim_in, i, u);
919
918
        }
920
919
        isl_constraint_get_constant(c, &u);
921
920
        isl_int_mul(u, u, stride->factor);
959
958
        lower = isl_aff_scale(lower, stride->stride);
960
959
        lower = isl_aff_add(lower, offset);
961
960
        lower = isl_aff_neg(lower);
962
 
        lower = isl_aff_add_coefficient_si(lower, isl_dim_set, level - 1, 1);
 
961
        lower = isl_aff_add_coefficient_si(lower, isl_dim_in, level - 1, 1);
963
962
 
964
963
        bound = isl_inequality_from_aff(lower);
965
964