CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
253 lines
8.4 KiB
Python
253 lines
8.4 KiB
Python
# RUN: %PYTHON %s 2>&1 | FileCheck %s
|
|
|
|
from mlir.ir import *
|
|
from mlir.dialects.irdl import *
|
|
import sys
|
|
|
|
|
|
def run(f):
|
|
print("\nTEST:", f.__name__, file=sys.stderr)
|
|
f()
|
|
|
|
|
|
# CHECK: TEST: testIRDL
|
|
@run
|
|
def testIRDL():
|
|
with Context() as ctx, Location.unknown():
|
|
module = Module.create()
|
|
with InsertionPoint(module.body):
|
|
irdl_test = dialect("irdl_test")
|
|
with InsertionPoint(irdl_test.body):
|
|
op = operation_("test_op")
|
|
with InsertionPoint(op.body):
|
|
f32 = is_(TypeAttr.get(F32Type.get()))
|
|
operands_([f32], ["input"], [Variadicity.single])
|
|
type1 = type_("type1")
|
|
with InsertionPoint(type1.body):
|
|
f32 = is_(TypeAttr.get(F32Type.get()))
|
|
parameters([f32], ["val"])
|
|
attr1 = attribute("attr1")
|
|
with InsertionPoint(attr1.body):
|
|
test = is_(StringAttr.get("test"))
|
|
parameters([test], ["val"])
|
|
|
|
# CHECK: module {
|
|
# CHECK: irdl.dialect @irdl_test {
|
|
# CHECK: irdl.operation @test_op {
|
|
# CHECK: %0 = irdl.is f32
|
|
# CHECK: irdl.operands(input: %0)
|
|
# CHECK: }
|
|
# CHECK: irdl.type @type1 {
|
|
# CHECK: %0 = irdl.is f32
|
|
# CHECK: irdl.parameters(val: %0)
|
|
# CHECK: }
|
|
# CHECK: irdl.attribute @attr1 {
|
|
# CHECK: %0 = irdl.is "test"
|
|
# CHECK: irdl.parameters(val: %0)
|
|
# CHECK: }
|
|
# CHECK: }
|
|
# CHECK: }
|
|
module.operation.verify()
|
|
module.dump()
|
|
|
|
load_dialects(module)
|
|
|
|
m = Module.parse(
|
|
"""
|
|
module {
|
|
%a = arith.constant 1.0 : f32
|
|
"irdl_test.test_op"(%a) : (f32) -> ()
|
|
}
|
|
"""
|
|
)
|
|
# CHECK: module {
|
|
# CHECK: "irdl_test.test_op"(%cst) : (f32) -> ()
|
|
# CHECK: }
|
|
m.dump()
|
|
|
|
|
|
# CHECK: TEST: testIRDLTypes
|
|
@run
|
|
def testIRDLTypes():
|
|
with Context() as ctx, Location.unknown():
|
|
module = Module.create()
|
|
with InsertionPoint(module.body):
|
|
irdl_test = dialect("irdl_type_test")
|
|
with InsertionPoint(irdl_test.body):
|
|
type1 = type_("type1")
|
|
with InsertionPoint(type1.body):
|
|
iattr = base(base_name="#builtin.integer")
|
|
parameters([iattr], ["val"])
|
|
type2 = type_("type2")
|
|
with InsertionPoint(type2.body):
|
|
iattr = base(base_name="#builtin.integer")
|
|
unit = is_(UnitAttr.get())
|
|
parameters([iattr, unit], ["val1", "val2"])
|
|
op1 = operation_("op1")
|
|
with InsertionPoint(op1.body):
|
|
t1 = base(base_ref=["irdl_type_test", "type1"])
|
|
results_([t1], ["res"], [Variadicity.single])
|
|
|
|
# CHECK: module {
|
|
# CHECK: irdl.dialect @irdl_type_test {
|
|
# CHECK: irdl.type @type1 {
|
|
# CHECK: %0 = irdl.base "#builtin.integer"
|
|
# CHECK: irdl.parameters(val: %0)
|
|
# CHECK: }
|
|
# CHECK: irdl.type @type2 {
|
|
# CHECK: %0 = irdl.base "#builtin.integer"
|
|
# CHECK: %1 = irdl.is unit
|
|
# CHECK: irdl.parameters(val1: %0, val2: %1)
|
|
# CHECK: }
|
|
# CHECK: irdl.operation @op1 {
|
|
# CHECK: %0 = irdl.base @irdl_type_test::@type1
|
|
# CHECK: irdl.results(res: %0)
|
|
# CHECK: }
|
|
# CHECK: }
|
|
# CHECK: }
|
|
module.operation.verify()
|
|
module.dump()
|
|
|
|
load_dialects(module)
|
|
|
|
i32 = IntegerType.get(32)
|
|
t1 = DynamicType.get("irdl_type_test.type1", [IntegerAttr.get(i32, 42)])
|
|
# CHECK: !irdl_type_test.type1<42 : i32>
|
|
t1.dump()
|
|
# CHECK: irdl_type_test.type1
|
|
print(t1.type_name, file=sys.stderr)
|
|
# CHECK: 1
|
|
print(len(t1.params), file=sys.stderr)
|
|
# CHECK: 42 : i32
|
|
t1.params[0].dump()
|
|
t2 = DynamicType.get(
|
|
"irdl_type_test.type2", [IntegerAttr.get(i32, 33), UnitAttr.get()]
|
|
)
|
|
# CHECK: !irdl_type_test.type2<33 : i32, unit>
|
|
t2.dump()
|
|
# CHECK: irdl_type_test.type2
|
|
print(t2.type_name, file=sys.stderr)
|
|
# CHECK: 2
|
|
print(len(t2.params), file=sys.stderr)
|
|
# CHECK: 33 : i32
|
|
t2.params[0].dump()
|
|
# CHECK: unit
|
|
t2.params[1].dump()
|
|
|
|
# CHECK: True
|
|
print(
|
|
t2.typeid == DynamicType.lookup_typeid("irdl_type_test.type2"),
|
|
file=sys.stderr,
|
|
)
|
|
# CHECK: False
|
|
print(
|
|
t1.typeid == DynamicType.lookup_typeid("irdl_type_test.type2"),
|
|
file=sys.stderr,
|
|
)
|
|
# CHECK: True
|
|
print(
|
|
t1.typeid == DynamicType.lookup_typeid("irdl_type_test.type1"),
|
|
file=sys.stderr,
|
|
)
|
|
|
|
m = Module.create()
|
|
with InsertionPoint(m.body):
|
|
Operation.create("irdl_type_test.op1", results=[t1])
|
|
|
|
assert m.operation.verify()
|
|
# CHECK: %0 = "irdl_type_test.op1"() : () -> !irdl_type_test.type1<42 : i32>
|
|
m.dump()
|
|
|
|
|
|
# CHECK: TEST: testIRDLAttrs
|
|
@run
|
|
def testIRDLAttrs():
|
|
with Context() as ctx, Location.unknown():
|
|
module = Module.create()
|
|
with InsertionPoint(module.body):
|
|
irdl_test = dialect("irdl_attr_test")
|
|
with InsertionPoint(irdl_test.body):
|
|
attr1 = attribute("attr1")
|
|
with InsertionPoint(attr1.body):
|
|
iattr = base(base_name="#builtin.integer")
|
|
parameters([iattr], ["val"])
|
|
attr2 = attribute("attr2")
|
|
with InsertionPoint(attr2.body):
|
|
iattr = base(base_name="#builtin.integer")
|
|
unit = is_(UnitAttr.get())
|
|
parameters([iattr, unit], ["val1", "val2"])
|
|
op1 = operation_("op1")
|
|
with InsertionPoint(op1.body):
|
|
a1 = base(base_ref=["irdl_attr_test", "attr1"])
|
|
attributes_([a1], ["attr"])
|
|
|
|
# CHECK: module {
|
|
# CHECK: irdl.dialect @irdl_attr_test {
|
|
# CHECK: irdl.attribute @attr1 {
|
|
# CHECK: %0 = irdl.base "#builtin.integer"
|
|
# CHECK: irdl.parameters(val: %0)
|
|
# CHECK: }
|
|
# CHECK: irdl.attribute @attr2 {
|
|
# CHECK: %0 = irdl.base "#builtin.integer"
|
|
# CHECK: %1 = irdl.is unit
|
|
# CHECK: irdl.parameters(val1: %0, val2: %1)
|
|
# CHECK: }
|
|
# CHECK: irdl.operation @op1 {
|
|
# CHECK: %0 = irdl.base @irdl_attr_test::@attr1
|
|
# CHECK: irdl.attributes {"attr" = %0}
|
|
# CHECK: }
|
|
# CHECK: }
|
|
# CHECK: }
|
|
module.operation.verify()
|
|
module.dump()
|
|
|
|
load_dialects(module)
|
|
|
|
i32 = IntegerType.get(32)
|
|
a1 = DynamicAttr.get("irdl_attr_test.attr1", [IntegerAttr.get(i32, 42)])
|
|
# CHECK: #irdl_attr_test.attr1<42 : i32>
|
|
a1.dump()
|
|
# CHECK: irdl_attr_test.attr1
|
|
print(a1.attr_name, file=sys.stderr)
|
|
# CHECK: 1
|
|
print(len(a1.params), file=sys.stderr)
|
|
# CHECK: 42 : i32
|
|
a1.params[0].dump()
|
|
a2 = DynamicAttr.get(
|
|
"irdl_attr_test.attr2", [IntegerAttr.get(i32, 33), UnitAttr.get()]
|
|
)
|
|
# CHECK: #irdl_attr_test.attr2<33 : i32, unit>
|
|
a2.dump()
|
|
# CHECK: irdl_attr_test.attr2
|
|
print(a2.attr_name, file=sys.stderr)
|
|
# CHECK: 2
|
|
print(len(a2.params), file=sys.stderr)
|
|
# CHECK: 33 : i32
|
|
a2.params[0].dump()
|
|
# CHECK: unit
|
|
a2.params[1].dump()
|
|
|
|
# CHECK: True
|
|
print(
|
|
a2.typeid == DynamicAttr.lookup_typeid("irdl_attr_test.attr2"),
|
|
file=sys.stderr,
|
|
)
|
|
# CHECK: False
|
|
print(
|
|
a1.typeid == DynamicAttr.lookup_typeid("irdl_attr_test.attr2"),
|
|
file=sys.stderr,
|
|
)
|
|
# CHECK: True
|
|
print(
|
|
a1.typeid == DynamicAttr.lookup_typeid("irdl_attr_test.attr1"),
|
|
file=sys.stderr,
|
|
)
|
|
|
|
m = Module.create()
|
|
with InsertionPoint(m.body):
|
|
Operation.create("irdl_attr_test.op1", attributes={"attr": a1})
|
|
|
|
assert m.operation.verify()
|
|
# CHECK: "irdl_attr_test.op1"() {attr = #irdl_attr_test.attr1<42 : i32>} : () -> ()
|
|
m.dump()
|