diff --git a/mlir/python/mlir/dialects/_arith_ops_ext.py b/mlir/python/mlir/dialects/_arith_ops_ext.py --- a/mlir/python/mlir/dialects/_arith_ops_ext.py +++ b/mlir/python/mlir/dialects/_arith_ops_ext.py @@ -7,6 +7,7 @@ from ._ods_common import get_default_loc_context as _get_default_loc_context from typing import Any, List, Union + import builtins except ImportError as e: raise RuntimeError("Error loading imports from extension module") from e @@ -60,6 +61,10 @@ def type(self): return self.results[0].type + @builtins.property + def value(self): + return Attribute(self.operation.attributes["value"]) + @property def literal_value(self) -> Union[int, float]: if _is_integer_like_type(self.type): diff --git a/mlir/test/python/dialects/arith_dialect.py b/mlir/test/python/dialects/arith_dialect.py new file mode 100644 --- /dev/null +++ b/mlir/test/python/dialects/arith_dialect.py @@ -0,0 +1,25 @@ +# RUN: %PYTHON %s | FileCheck %s + +from mlir.ir import * +import mlir.dialects.func as func +import mlir.dialects.arith as arith + +def run(f): + print("\nTEST:", f.__name__) + f() + +# CHECK-LABEL: TEST: testConstantOp +@run +def testConstantOps(): + with Context() as ctx, Location.unknown(): + module = Module.create() + with InsertionPoint(module.body): + @func.FuncOp.from_py_func() + def emit_constant_float(): + return arith.ConstantOp(value=42.42, result=F32Type.get()) + + # CHECK-LABEL: func @emit_constant_float + # CHECK: %cst = arith.constant 4.242000e+01 : f32 + # CHECK: return + # CHECK: } + print(module)