-
Notifications
You must be signed in to change notification settings - Fork 71
/
test_affine.py
69 lines (58 loc) · 2.29 KB
/
test_affine.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import pytest
from xdsl.dialects.affine import For, Yield
from xdsl.dialects.builtin import IndexType, IntegerAttr, IntegerType
from xdsl.ir import Region, OpResult, Block
def test_simple_for():
f = For.from_callable([], 0, 5, lambda x: [])
assert f.lower_bound.value.data == 0
assert f.upper_bound.value.data == 5
def test_for_mismatch_operands_results_counts():
attributes = {
"lower_bound": IntegerAttr.from_index_int_value(0),
"upper_bound": IntegerAttr.from_index_int_value(5),
"step": IntegerAttr.from_index_int_value(1)
}
f = For.create(operands=[],
regions=[Region.from_block_list([])],
attributes=attributes,
result_types=[IndexType])
with pytest.raises(Exception) as e:
f.verify()
assert e.value.args[
0] == "Expected the same amount of operands and results"
def test_for_mismatch_operands_results_types():
attributes = {
"lower_bound": IntegerAttr.from_index_int_value(0),
"upper_bound": IntegerAttr.from_index_int_value(5),
"step": IntegerAttr.from_index_int_value(1)
}
inp = OpResult(IntegerType.from_width(32), [], [])
f = For.create(operands=[inp],
regions=[Region.from_block_list([])],
attributes=attributes,
result_types=[IndexType])
with pytest.raises(Exception) as e:
f.verify()
assert e.value.args[
0] == "Expected all operands and result pairs to have matching types"
def test_for_mismatch_blockargs():
attributes = {
"lower_bound": IntegerAttr.from_index_int_value(0),
"upper_bound": IntegerAttr.from_index_int_value(5),
"step": IntegerAttr.from_index_int_value(1)
}
inp = OpResult(IndexType, [], [])
f = For.create(operands=[inp],
regions=[
Region.from_block_list(
[Block.from_callable([], lambda: [])])
],
attributes=attributes,
result_types=[IndexType])
with pytest.raises(Exception) as e:
f.verify()
assert e.value.args[
0] == "Expected BlockArguments to have the same types as the operands"
def test_yield():
yield_ = Yield.get()
assert yield_.arguments == ()