xref: /llvm-project/mlir/test/python/dialects/pdl_types.py (revision ed21c9276a4cc88d60cbaddc56132b1793ca30c7)
1# RUN: %PYTHON %s | FileCheck %s
2
3from mlir.ir import *
4from mlir.dialects import pdl
5
6
7def run(f):
8  print("\nTEST:", f.__name__)
9  f()
10  return f
11
12
13# CHECK-LABEL: TEST: test_attribute_type
14@run
15def test_attribute_type():
16  with Context():
17    parsedType = Type.parse("!pdl.attribute")
18    constructedType = pdl.AttributeType.get()
19
20    assert pdl.AttributeType.isinstance(parsedType)
21    assert not pdl.OperationType.isinstance(parsedType)
22    assert not pdl.RangeType.isinstance(parsedType)
23    assert not pdl.TypeType.isinstance(parsedType)
24    assert not pdl.ValueType.isinstance(parsedType)
25
26    assert pdl.AttributeType.isinstance(constructedType)
27    assert not pdl.OperationType.isinstance(constructedType)
28    assert not pdl.RangeType.isinstance(constructedType)
29    assert not pdl.TypeType.isinstance(constructedType)
30    assert not pdl.ValueType.isinstance(constructedType)
31
32    assert parsedType == constructedType
33
34    # CHECK: !pdl.attribute
35    print(parsedType)
36    # CHECK: !pdl.attribute
37    print(constructedType)
38
39
40# CHECK-LABEL: TEST: test_operation_type
41@run
42def test_operation_type():
43  with Context():
44    parsedType = Type.parse("!pdl.operation")
45    constructedType = pdl.OperationType.get()
46
47    assert not pdl.AttributeType.isinstance(parsedType)
48    assert pdl.OperationType.isinstance(parsedType)
49    assert not pdl.RangeType.isinstance(parsedType)
50    assert not pdl.TypeType.isinstance(parsedType)
51    assert not pdl.ValueType.isinstance(parsedType)
52
53    assert not pdl.AttributeType.isinstance(constructedType)
54    assert pdl.OperationType.isinstance(constructedType)
55    assert not pdl.RangeType.isinstance(constructedType)
56    assert not pdl.TypeType.isinstance(constructedType)
57    assert not pdl.ValueType.isinstance(constructedType)
58
59    assert parsedType == constructedType
60
61    # CHECK: !pdl.operation
62    print(parsedType)
63    # CHECK: !pdl.operation
64    print(constructedType)
65
66
67# CHECK-LABEL: TEST: test_range_type
68@run
69def test_range_type():
70  with Context():
71    typeType = Type.parse("!pdl.type")
72    parsedType = Type.parse("!pdl.range<type>")
73    constructedType = pdl.RangeType.get(typeType)
74    elementType = constructedType.element_type
75
76    assert not pdl.AttributeType.isinstance(parsedType)
77    assert not pdl.OperationType.isinstance(parsedType)
78    assert pdl.RangeType.isinstance(parsedType)
79    assert not pdl.TypeType.isinstance(parsedType)
80    assert not pdl.ValueType.isinstance(parsedType)
81
82    assert not pdl.AttributeType.isinstance(constructedType)
83    assert not pdl.OperationType.isinstance(constructedType)
84    assert pdl.RangeType.isinstance(constructedType)
85    assert not pdl.TypeType.isinstance(constructedType)
86    assert not pdl.ValueType.isinstance(constructedType)
87
88    assert parsedType == constructedType
89    assert elementType == typeType
90
91    # CHECK: !pdl.range<type>
92    print(parsedType)
93    # CHECK: !pdl.range<type>
94    print(constructedType)
95    # CHECK: !pdl.type
96    print(elementType)
97
98
99# CHECK-LABEL: TEST: test_type_type
100@run
101def test_type_type():
102  with Context():
103    parsedType = Type.parse("!pdl.type")
104    constructedType = pdl.TypeType.get()
105
106    assert not pdl.AttributeType.isinstance(parsedType)
107    assert not pdl.OperationType.isinstance(parsedType)
108    assert not pdl.RangeType.isinstance(parsedType)
109    assert pdl.TypeType.isinstance(parsedType)
110    assert not pdl.ValueType.isinstance(parsedType)
111
112    assert not pdl.AttributeType.isinstance(constructedType)
113    assert not pdl.OperationType.isinstance(constructedType)
114    assert not pdl.RangeType.isinstance(constructedType)
115    assert pdl.TypeType.isinstance(constructedType)
116    assert not pdl.ValueType.isinstance(constructedType)
117
118    assert parsedType == constructedType
119
120    # CHECK: !pdl.type
121    print(parsedType)
122    # CHECK: !pdl.type
123    print(constructedType)
124
125
126# CHECK-LABEL: TEST: test_value_type
127@run
128def test_value_type():
129  with Context():
130    parsedType = Type.parse("!pdl.value")
131    constructedType = pdl.ValueType.get()
132
133    assert not pdl.AttributeType.isinstance(parsedType)
134    assert not pdl.OperationType.isinstance(parsedType)
135    assert not pdl.RangeType.isinstance(parsedType)
136    assert not pdl.TypeType.isinstance(parsedType)
137    assert pdl.ValueType.isinstance(parsedType)
138
139    assert not pdl.AttributeType.isinstance(constructedType)
140    assert not pdl.OperationType.isinstance(constructedType)
141    assert not pdl.RangeType.isinstance(constructedType)
142    assert not pdl.TypeType.isinstance(constructedType)
143    assert pdl.ValueType.isinstance(constructedType)
144
145    assert parsedType == constructedType
146
147    # CHECK: !pdl.value
148    print(parsedType)
149    # CHECK: !pdl.value
150    print(constructedType)
151