[Mlir-commits] [mlir] [MLIR][Python] fix class name of powf and negf in linalg (PR #97696)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Thu Jul 4 01:51:22 PDT 2024


https://github.com/xurui1995 created https://github.com/llvm/llvm-project/pull/97696

The following logic can lead to a class name mismatch when using `linalg.powf` in Python. This PR fixed the issue and also renamed `NegfOp` to `NegFOp` in linalg to adhere to the naming convention, as exemplified by `arith::NegFOp`.

https://github.com/llvm/llvm-project/blob/173514d58ec4e6166670f1e37a038df3865c8b96/mlir/python/mlir/dialects/linalg/opdsl/lang/dsl.py#L140-L143 
```
# linalg.powf(arg0, arg1, outs=[init_result.result])
NotImplementedError: Unknown named op_name / op_class_name: powf / PowfOp
```

>From 65ef897202ebd1e78838d505e2be20247a544870 Mon Sep 17 00:00:00 2001
From: "Xu, Rui" <rui.xu at intel.com>
Date: Thu, 4 Jul 2024 01:22:22 -0700
Subject: [PATCH 1/2] [MLIR][linalg] fix the class name of negf and powf

---
 .../mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml      | 2 +-
 mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py  | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml b/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
index fad234a9dcae9c..a344add6a4e543 100644
--- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
+++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
@@ -271,7 +271,7 @@ structured_op: !LinalgStructuredOpConfig
 --- !LinalgOpConfig
 metadata: !LinalgOpMetadata
   name: negf
-  cpp_class_name: NegfOp
+  cpp_class_name: NegFOp
   doc: |-
     Applies negf(x) elementwise.
 
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 43410aaa6af1be..cbb2d1cec103c7 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
@@ -96,7 +96,7 @@ def floor(
     O[None] = UnaryFn.floor(I[None])
 
 
- at linalg_structured_op
+ at linalg_structured_op(op_class_name="NegFOp")
 def negf(
     I=TensorDef(T1),
     O=TensorDef(T1, output=True),
@@ -330,7 +330,7 @@ def min(
     O[None] = BinaryFn.min_signed(lhs[None], rhs[None])
 
 
- at linalg_structured_op
+ at linalg_structured_op(op_class_name="PowFOp")
 def powf(
     lhs=TensorDef(T1),
     rhs=TensorDef(T1),

>From 2a0849c8ab09a1eef0bd867e163cc73b7d0b637b Mon Sep 17 00:00:00 2001
From: "Xu, Rui" <rui.xu at intel.com>
Date: Thu, 4 Jul 2024 01:49:48 -0700
Subject: [PATCH 2/2] add test

---
 mlir/test/python/dialects/linalg/opdsl/test_core_named_ops.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/mlir/test/python/dialects/linalg/opdsl/test_core_named_ops.py b/mlir/test/python/dialects/linalg/opdsl/test_core_named_ops.py
index 0dceba9c13a46e..0a068bff7715f6 100644
--- a/mlir/test/python/dialects/linalg/opdsl/test_core_named_ops.py
+++ b/mlir/test/python/dialects/linalg/opdsl/test_core_named_ops.py
@@ -2,3 +2,7 @@
 
 # Just verify that at least one known op is generated.
 # CHECK: name: matmul
+
+# verify some special cases: negf->NegFOp, powf->PowFOp
+# CHECK cpp_class_name: NegFOp
+# CHECK cpp_class_name: PowFOp
\ No newline at end of file



More information about the Mlir-commits mailing list