def test_isl_align_two(): a1 = isl.Aff("[t0, t1, t2] -> { [(32)] }") a2 = isl.Aff("[t1, t0] -> { [(0)] }") a1_aligned, a2_aligned = isl.align_two(a1, a2) assert a1_aligned == isl.Aff("[t1, t0, t2] -> { [(32)] }") assert a2_aligned == isl.Aff("[t1, t0, t2] -> { [(0)] }") b1 = isl.BasicSet("[n0, n1, n2] -> { [i0, i1] : }") b2 = isl.BasicSet("[n0, n2, n1, n3] -> { [i1, i0, i2] : }") b1_aligned, b2_aligned = isl.align_two(b1, b2) assert b1_aligned == isl.BasicSet( "[n0, n2, n1, n3] -> { [i1, i0, i2] : }") assert b2_aligned == isl.BasicSet( "[n0, n2, n1, n3] -> { [i1, i0, i2] : }")
def test_align_spaces(): m1 = isl.BasicMap("[m,n] -> {[i,j,k]->[l,o]:}") m2 = isl.BasicMap("[m,n] -> {[j,k,l,i]->[o]:}") result = isl.align_spaces(m1, m2) assert result.get_var_dict() == m2.get_var_dict() a1 = isl.Aff("[t0, t1, t2] -> { [(32)] }") a2 = isl.Aff("[t1, t0] -> { [(0)] }") with pytest.raises(isl.Error): a1_aligned = isl.align_spaces(a1, a2) a1_aligned = isl.align_spaces(a1, a2, obj_bigger_ok=True) a2_aligned = isl.align_spaces(a2, a1) assert a1_aligned == isl.Aff("[t1, t0, t2] -> { [(32)] }") assert a2_aligned == isl.Aff("[t1, t0, t2] -> { [(0)] }")
def test_pickling(): instances = [ isl.Aff("[n] -> { [(-1 - floor((-n)/4))] }"), isl.PwAff("[n] -> { [(0)] : n <= 4 and n >= 1; " "[(-1 + n - floor((3n)/4))] : n >= 5 }"), isl.BasicSet("[n] -> {[i,j,k]: i<=j + k and (exists m: m=j+k) " "and n mod 5 = 17}"), isl.Set("[n] -> {[i,j,k]: (i<=j + k and (exists m: m=j+k)) or (k=j)}") ] from pickle import dumps, loads for inst in instances: inst2 = loads(dumps(inst)) assert inst.space == inst2.space assert inst.is_equal(inst2)
def test_aff_to_expr_2(): from loopy.symbolic import aff_to_expr x = isl.Aff("[n] -> { [i0] -> [(-i0 + 2*floor((i0)/2))] }") from pymbolic import var i0 = var("i0") assert aff_to_expr(x) == (-1) * i0 + 2 * (i0 // 2)
def test_upcast(): a = isl.PwAff("[n] -> { [(-1 - floor((-n)/4))] }") b = isl.Aff("[n] -> { [(-1 - floor((-n)/4))] }") assert b.is_equal(a) assert a.is_equal(b)