| # 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() |