示例#1
0
文件: test_isl.py 项目: egnlife/islpy
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] :  }")
示例#2
0
文件: test_isl.py 项目: egnlife/islpy
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)] }")
示例#3
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)
示例#4
0
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)
示例#5
0
文件: test_isl.py 项目: egnlife/islpy
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)