summaryrefslogtreecommitdiff
path: root/mlir/python
diff options
context:
space:
mode:
authorgysit <gysit@google.com>2022-03-08 15:33:47 +0000
committergysit <gysit@google.com>2022-03-08 15:48:02 +0000
commitf4ae02afe7c40890977f4d7222761876ce9475f8 (patch)
treecdbe12f330a3738e24f55bdd4701aa3810912acb /mlir/python
parent95c0f2d115e29e3429226cccc1209f5640dd1b6a (diff)
[mlir][linalg] Add a FillOpInterface.
Add a FillOpInterface similar to the contraction and convolution op interfaces. The FillOpInterface is a preparation step to replace linalg.fill by its OpDSL version linalg.fill_tensor. The interface implements the `value()`, `output()`, and `result()` methods that by default are not available on linalg.fill_tensor. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D120725
Diffstat (limited to 'mlir/python')
-rw-r--r--mlir/python/mlir/dialects/linalg/opdsl/lang/comprehension.py1
-rw-r--r--mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py1
2 files changed, 2 insertions, 0 deletions
diff --git a/mlir/python/mlir/dialects/linalg/opdsl/lang/comprehension.py b/mlir/python/mlir/dialects/linalg/opdsl/lang/comprehension.py
index 7de0a76e87b7..1de5449e27e3 100644
--- a/mlir/python/mlir/dialects/linalg/opdsl/lang/comprehension.py
+++ b/mlir/python/mlir/dialects/linalg/opdsl/lang/comprehension.py
@@ -686,6 +686,7 @@ class OpInterfaceDef:
ContractionOpInterface = OpInterfaceDef("LinalgContractionOpInterface")
ConvolutionOpInterface = OpInterfaceDef("LinalgConvolutionOpInterface")
+FillOpInterface = OpInterfaceDef("LinalgFillOpInterface")
class OpMetadataDef(YAMLObject):
diff --git a/mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py b/mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
index 0ef40613a7ba..7798d7f9498e 100644
--- a/mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
+++ b/mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py
@@ -671,6 +671,7 @@ def fill_tensor(value=ScalarDef(T1), O=TensorDef(U, output=True)):
accesses only and is thus rank polymorphic. Numeric casting is performed on
the value operand, promoting it to the same data type as the output.
"""
+ implements(FillOpInterface)
O[None] = TypeFn.cast_signed(U, value)