[Mlir-commits] [mlir] a590ff5 - [mlir] regenerate linalg named ops yaml (#65475)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Sep 20 09:53:33 PDT 2023


Author: Oleksandr "Alex" Zinenko
Date: 2023-09-20T18:53:29+02:00
New Revision: a590ff589c8dfe24560865dbb787bbfe2717ae88

URL: https://github.com/llvm/llvm-project/commit/a590ff589c8dfe24560865dbb787bbfe2717ae88
DIFF: https://github.com/llvm/llvm-project/commit/a590ff589c8dfe24560865dbb787bbfe2717ae88.diff

LOG: [mlir] regenerate linalg named ops yaml (#65475)

The Linalg named ops specification went out of sync with the OpDSL
description, presumably due to direct manual modifications of the yaml
file.

Additionally, the unsigned division has been generating the signed
scalar instruction, which is now fixed.

Added: 
    

Modified: 
    mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
    mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py

Removed: 
    


################################################################################
diff  --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml b/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
index 37ff88087bc69c4..44bcbbab2bbe9de 100644
--- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
+++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml
@@ -156,12 +156,12 @@ structured_op: !LinalgStructuredOpConfig
   assignments:
   - !ScalarAssign
     arg: O
-    value: !Scalarlogression
+    value: !ScalarExpression
       scalar_fn:
         kind: unary
         fn_name: log
         operands:
-        - !Scalarlogression
+        - !ScalarExpression
           scalar_arg: I
 --- !LinalgOpConfig
 metadata: !LinalgOpMetadata
@@ -191,7 +191,7 @@ structured_op: !LinalgStructuredOpConfig
   assignments:
   - !ScalarAssign
     arg: O
-    value: !Scalarabsression
+    value: !ScalarExpression
       scalar_fn:
         kind: unary
         fn_name: abs
@@ -226,12 +226,12 @@ structured_op: !LinalgStructuredOpConfig
   assignments:
   - !ScalarAssign
     arg: O
-    value: !Scalarceilression
+    value: !ScalarExpression
       scalar_fn:
         kind: unary
         fn_name: ceil
         operands:
-        - !Scalarceilression
+        - !ScalarExpression
           scalar_arg: I
 --- !LinalgOpConfig
 metadata: !LinalgOpMetadata
@@ -261,17 +261,17 @@ structured_op: !LinalgStructuredOpConfig
   assignments:
   - !ScalarAssign
     arg: O
-    value: !Scalarfloorression
+    value: !ScalarExpression
       scalar_fn:
         kind: unary
         fn_name: floor
         operands:
-        - !Scalarfloorression
+        - !ScalarExpression
           scalar_arg: I
 --- !LinalgOpConfig
 metadata: !LinalgOpMetadata
   name: negf
-  cpp_class_name: NegFOp
+  cpp_class_name: NegfOp
   doc: |-
     Applies negf(x) elementwise.
 
@@ -296,7 +296,7 @@ structured_op: !LinalgStructuredOpConfig
   assignments:
   - !ScalarAssign
     arg: O
-    value: !Scalarnegfression
+    value: !ScalarExpression
       scalar_fn:
         kind: unary
         fn_name: negf
@@ -386,17 +386,17 @@ structured_op: !LinalgStructuredOpConfig
   - !LinalgOperandDefConfig
     name: lhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
     name: rhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
-    name: out
+    name: O
     kind: output_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   indexing_maps: !LinalgIndexingMapsConfig
     static_indexing_maps:
@@ -406,7 +406,7 @@ structured_op: !LinalgStructuredOpConfig
   iterator_types: []
   assignments:
   - !ScalarAssign
-    arg: out
+    arg: O
     value: !ScalarExpression
       scalar_fn:
         kind: binary
@@ -435,17 +435,17 @@ structured_op: !LinalgStructuredOpConfig
   - !LinalgOperandDefConfig
     name: lhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
     name: rhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
-    name: out
+    name: O
     kind: output_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   indexing_maps: !LinalgIndexingMapsConfig
     static_indexing_maps:
@@ -455,7 +455,7 @@ structured_op: !LinalgStructuredOpConfig
   iterator_types: []
   assignments:
   - !ScalarAssign
-    arg: out
+    arg: O
     value: !ScalarExpression
       scalar_fn:
         kind: binary
@@ -470,7 +470,7 @@ metadata: !LinalgOpMetadata
   name: mul
   cpp_class_name: MulOp
   doc: |-
-    Multiply two tensors elementwise.
+    Multiplies two tensors elementwise.
 
     The shapes and element types must be identical. The appropriate casts,
     broadcasts and reductions should be done previously to calling this op.
@@ -484,17 +484,17 @@ structured_op: !LinalgStructuredOpConfig
   - !LinalgOperandDefConfig
     name: lhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
     name: rhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
-    name: out
+    name: O
     kind: output_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   indexing_maps: !LinalgIndexingMapsConfig
     static_indexing_maps:
@@ -504,7 +504,7 @@ structured_op: !LinalgStructuredOpConfig
   iterator_types: []
   assignments:
   - !ScalarAssign
-    arg: out
+    arg: O
     value: !ScalarExpression
       scalar_fn:
         kind: binary
@@ -519,8 +519,7 @@ metadata: !LinalgOpMetadata
   name: div
   cpp_class_name: DivOp
   doc: |-
-    Divides the first tensor by the second tensor, elementwise. For integer
-    types, performs a signed division.
+    Divides the first tensor by the second tensor, elementwise.
 
     The shapes and element types must be identical. The appropriate casts,
     broadcasts and reductions should be done previously to calling this op.
@@ -534,17 +533,17 @@ structured_op: !LinalgStructuredOpConfig
   - !LinalgOperandDefConfig
     name: lhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
     name: rhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
-    name: out
+    name: O
     kind: output_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   indexing_maps: !LinalgIndexingMapsConfig
     static_indexing_maps:
@@ -554,7 +553,7 @@ structured_op: !LinalgStructuredOpConfig
   iterator_types: []
   assignments:
   - !ScalarAssign
-    arg: out
+    arg: O
     value: !ScalarExpression
       scalar_fn:
         kind: binary
@@ -567,7 +566,7 @@ structured_op: !LinalgStructuredOpConfig
 --- !LinalgOpConfig
 metadata: !LinalgOpMetadata
   name: div_unsigned
-  cpp_class_name: DivUOp
+  cpp_class_name: DivUnsignedOp
   doc: |-
     Divides the first tensor by the second tensor, elementwise. For integer
     types, performs an unsigned division.
@@ -584,17 +583,17 @@ structured_op: !LinalgStructuredOpConfig
   - !LinalgOperandDefConfig
     name: lhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
     name: rhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
-    name: out
+    name: O
     kind: output_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   indexing_maps: !LinalgIndexingMapsConfig
     static_indexing_maps:
@@ -604,7 +603,7 @@ structured_op: !LinalgStructuredOpConfig
   iterator_types: []
   assignments:
   - !ScalarAssign
-    arg: out
+    arg: O
     value: !ScalarExpression
       scalar_fn:
         kind: binary
@@ -619,7 +618,7 @@ metadata: !LinalgOpMetadata
   name: max
   cpp_class_name: MaxOp
   doc: |-
-    Takes the max (signed) between the input and a constant.
+    Takes the max (signed) between two inputs, elementwise.
 
     The shapes and element types must be identical. The appropriate casts,
     broadcasts and reductions should be done previously to calling this op.
@@ -633,17 +632,17 @@ structured_op: !LinalgStructuredOpConfig
   - !LinalgOperandDefConfig
     name: lhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
     name: rhs
     kind: input_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   - !LinalgOperandDefConfig
-    name: out
+    name: O
     kind: output_tensor
-    type_var: T
+    type_var: T1
     shape_map: affine_map<() -> ()>
   indexing_maps: !LinalgIndexingMapsConfig
     static_indexing_maps:
@@ -653,7 +652,7 @@ structured_op: !LinalgStructuredOpConfig
   iterator_types: []
   assignments:
   - !ScalarAssign
-    arg: out
+    arg: O
     value: !ScalarExpression
       scalar_fn:
         kind: binary
@@ -668,14 +667,10 @@ metadata: !LinalgOpMetadata
   name: matmul
   cpp_class_name: MatmulOp
   doc: |-
-    Performs an accumulative (C += A*B) matrix multiplication of two 2D inputs.
+    Performs a matrix multiplication of two 2D inputs.
 
     Numeric casting is performed on the operands to the inner multiply, promoting
     them to the same data type as the accumulator/output.
-
-    Note this operation represents an accumulative matrix multiplication, `C +=
-    A*B` (as opposed to `C = A*B`). The appropriate initialisation of the output
-    matrix should be done prior to calling this Op.
   implements:
   - LinalgContractionOpInterface
 structured_op: !LinalgStructuredOpConfig
@@ -1141,8 +1136,8 @@ metadata: !LinalgOpMetadata
   name: batch_mmt4d
   cpp_class_name: BatchMmt4DOp
   doc: |-
-    Performs a batched matrix-matrix-transpose multiplication of two batched-4D
-    (5D) inputs.
+    Performs a batched matrix-matrix-transpose multiplication of two
+    batched-4D (5D) inputs.
 
     Besides the outermost batch dimension has the same semantic as
     linalg.batch_matmul, the 
diff erences from linalg.batch_matmul in the

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 dee0c3e3fe3f4c0..6eae3d916c92882 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
@@ -217,7 +217,7 @@ def div_unsigned(
     a `linalg.broadcast` + `linalg.div` sequence can be lowered to a
     `linalg.generic` with 
diff erent affine maps for the two operands.
     """
-    O[None] = lhs[None] / rhs[None]
+    O[None] = BinaryFn.div_unsigned(lhs[None], rhs[None])
 
 
 @linalg_structured_op


        


More information about the Mlir-commits mailing list