[Mlir-commits] [mlir] ce5c702 - [mlir][linalg][nfc] Fix formatting for linalg.elementwise

Andrzej Warzynski llvmlistbot at llvm.org
Fri Feb 21 07:51:59 PST 2025


Author: Andrzej Warzynski
Date: 2025-02-21T15:50:24Z
New Revision: ce5c702d8443fa91524cd768ee9998f3f101bad8

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

LOG: [mlir][linalg][nfc] Fix formatting for linalg.elementwise

Follow-up to #124661 to address minor formatting inconsistencies.

**Changes:**
1. Standardized test file names by using hyphens (`-`) instead of
   underscores (`_`).
2. Renamed `"round-trip.mlir"` to `"roundtrip.mlir"` for consistency
   with similar tests.
3. Normalized indentation.

For **(3)**, I ensured we follow the pre-existing formatting style
introduced with `linalg.generic`, where all new lines are indented by
**8 spaces**.  Thus, the formatting is now:

```mlir
  %r = linalg.elementwise
      kind=#linalg.elementwise_kind<sub>
      indexing_maps = [affine_map<(d0, d1) -> (d1, d0)>,
                       affine_map<(d0, d1) -> (d0, d1)>,
                       affine_map<(d0, d1) -> (d0, d1)>]
      ins(%A, %B: tensor<8x16xf32>, tensor<16x8xf32>)
      outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
```

instead of:

```mlir
  %r = linalg.elementwise
               kind=#linalg.elementwise_kind<sub>
               indexing_maps = [affine_map<(d0, d1) -> (d1, d0)>,
                                affine_map<(d0, d1) -> (d0, d1)>,
                                affine_map<(d0, d1) -> (d0, d1)>]
               ins(%A, %B: tensor<8x16xf32>, tensor<16x8xf32>)
               outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
```

Submitting this without a review, as these are straightforward changes,
and I want to reduce PR traffic/noise. However, please let me know if
you prefer changes like these to go through a formal PR review.

Added: 
    mlir/test/Dialect/Linalg/elementwise/generalize-named-ops.mlir
    mlir/test/Dialect/Linalg/elementwise/roundtrip.mlir

Modified: 
    mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
    mlir/test/Dialect/Linalg/elementwise/invalid.mlir

Removed: 
    mlir/test/Dialect/Linalg/elementwise/generalize_named_ops.mlir
    mlir/test/Dialect/Linalg/elementwise/round-trip.mlir


################################################################################
diff  --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td b/mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
index ce6e9e7bb28c4..e4dd458eaff84 100644
--- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
+++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
@@ -566,20 +566,20 @@ def ElementwiseOp : LinalgStructuredBase_Op<"elementwise", [
     Example:
 
     Defining a unary linalg.elemwise with default indexing-map:
-      ```mlir
-      %exp = linalg.elemwise
-             kind=#linalg.elemwise_kind<exp>
-             ins(%x : tensor<4x16x8xf32>)
-             outs(%y: tensor<4x16x8xf32>) -> tensor<4x16x8xf32>
-      ```
+    ```mlir
+    %exp = linalg.elemwise
+        kind=#linalg.elemwise_kind<exp>
+        ins(%x : tensor<4x16x8xf32>)
+        outs(%y: tensor<4x16x8xf32>) -> tensor<4x16x8xf32>
+    ```
 
     Defining a binary linalg.elemwise with user-defined indexing-map:
     ```mlir
     %add = linalg.elemwise
-            kind=#linalg.elemwise_kind<add>
-            indexing_maps = [#transpose, #broadcast, #identity]
-            ins(%exp, %arg1 : tensor<4x16x8xf32>, tensor<4x16xf32>)
-            outs(%arg2: tensor<4x8x16xf32>) -> tensor<4x8x16xf32>
+        kind=#linalg.elemwise_kind<add>
+        indexing_maps = [#transpose, #broadcast, #identity]
+        ins(%exp, %arg1 : tensor<4x16x8xf32>, tensor<4x16xf32>)
+        outs(%arg2: tensor<4x8x16xf32>) -> tensor<4x8x16xf32>
     ```
   }];
 

diff  --git a/mlir/test/Dialect/Linalg/elementwise/generalize_named_ops.mlir b/mlir/test/Dialect/Linalg/elementwise/generalize-named-ops.mlir
similarity index 74%
rename from mlir/test/Dialect/Linalg/elementwise/generalize_named_ops.mlir
rename to mlir/test/Dialect/Linalg/elementwise/generalize-named-ops.mlir
index 94a46d97e6e86..e884858c016f4 100644
--- a/mlir/test/Dialect/Linalg/elementwise/generalize_named_ops.mlir
+++ b/mlir/test/Dialect/Linalg/elementwise/generalize-named-ops.mlir
@@ -14,9 +14,9 @@
 //
 func.func @unary_exp(%A : tensor<8x16x32xf32>, %B: tensor<8x16x32xf32>) ->  tensor<8x16x32xf32> {
   %r = linalg.elementwise
-               kind=#linalg.elementwise_kind<exp>
-               ins(%A : tensor<8x16x32xf32>)
-               outs(%B: tensor<8x16x32xf32>) -> tensor<8x16x32xf32>
+      kind=#linalg.elementwise_kind<exp>
+      ins(%A : tensor<8x16x32xf32>)
+      outs(%B: tensor<8x16x32xf32>) -> tensor<8x16x32xf32>
   return %r : tensor<8x16x32xf32>
 }
 // -----
@@ -36,11 +36,11 @@ func.func @unary_exp(%A : tensor<8x16x32xf32>, %B: tensor<8x16x32xf32>) ->  tens
 //
 func.func @unary_transpose_broadcast_tanh(%A : tensor<32x16xf32>, %B: tensor<8x16x32xf32>) ->  tensor<8x16x32xf32> {
   %r = linalg.elementwise
-               kind=#linalg.elementwise_kind<tanh>
-               indexing_maps = [affine_map<(d0, d1, d2) -> (d2, d1)>,
-                                affine_map<(d0, d1, d2) -> (d0, d1, d2)>]
-               ins(%A : tensor<32x16xf32>)
-               outs(%B: tensor<8x16x32xf32>) -> tensor<8x16x32xf32>
+      kind=#linalg.elementwise_kind<tanh>
+      indexing_maps = [affine_map<(d0, d1, d2) -> (d2, d1)>,
+                       affine_map<(d0, d1, d2) -> (d0, d1, d2)>]
+      ins(%A : tensor<32x16xf32>)
+      outs(%B: tensor<8x16x32xf32>) -> tensor<8x16x32xf32>
   return %r : tensor<8x16x32xf32>
 }
 // -----
@@ -59,9 +59,9 @@ func.func @unary_transpose_broadcast_tanh(%A : tensor<32x16xf32>, %B: tensor<8x1
 //
 func.func @binary_div_on_memrefs(%A : memref<16x8xf32>, %B: memref<16x8xf32>, %C: memref<16x8xf32>) {
   linalg.elementwise
-               kind=#linalg.elementwise_kind<div>
-               ins(%A, %B: memref<16x8xf32>, memref<16x8xf32>)
-               outs(%C: memref<16x8xf32>)
+      kind=#linalg.elementwise_kind<div>
+      ins(%A, %B: memref<16x8xf32>, memref<16x8xf32>)
+      outs(%C: memref<16x8xf32>)
   return
 }
 // -----
@@ -80,9 +80,9 @@ func.func @binary_div_on_memrefs(%A : memref<16x8xf32>, %B: memref<16x8xf32>, %C
 //
 func.func @binary_mul_on_tensors(%A : tensor<16x8xf32>, %B: tensor<16x8xf32>, %C: tensor<16x8xf32>) ->  tensor<16x8xf32> {
   %r = linalg.elementwise
-               kind=#linalg.elementwise_kind<mul>
-               ins(%A, %B: tensor<16x8xf32>, tensor<16x8xf32>)
-               outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
+      kind=#linalg.elementwise_kind<mul>
+      ins(%A, %B: tensor<16x8xf32>, tensor<16x8xf32>)
+      outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
   return %r : tensor<16x8xf32>
 }
 // -----
@@ -102,12 +102,12 @@ func.func @binary_mul_on_tensors(%A : tensor<16x8xf32>, %B: tensor<16x8xf32>, %C
 //
 func.func @binary_transpose_a(%A : tensor<8x16xf32>, %B: tensor<16x8xf32>, %C: tensor<16x8xf32>) ->  tensor<16x8xf32> {
   %r = linalg.elementwise
-               kind=#linalg.elementwise_kind<sub>
-               indexing_maps = [affine_map<(d0, d1) -> (d1, d0)>,
-                                affine_map<(d0, d1) -> (d0, d1)>,
-                                affine_map<(d0, d1) -> (d0, d1)>]
-               ins(%A, %B: tensor<8x16xf32>, tensor<16x8xf32>)
-               outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
+      kind=#linalg.elementwise_kind<sub>
+      indexing_maps = [affine_map<(d0, d1) -> (d1, d0)>,
+                       affine_map<(d0, d1) -> (d0, d1)>,
+                       affine_map<(d0, d1) -> (d0, d1)>]
+      ins(%A, %B: tensor<8x16xf32>, tensor<16x8xf32>)
+      outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
   return %r : tensor<16x8xf32>
 }
 // -----
@@ -128,12 +128,12 @@ func.func @binary_transpose_a(%A : tensor<8x16xf32>, %B: tensor<16x8xf32>, %C: t
 //
 func.func @binary_transpose_a_broadcast_b(%A : tensor<8x16xf32>, %B: tensor<16xf32>, %C: tensor<16x8xf32>) ->  tensor<16x8xf32> {
   %r = linalg.elementwise
-               kind=#linalg.elementwise_kind<add>
-               indexing_maps = [affine_map<(d0, d1) -> (d1, d0)>,
-                                affine_map<(d0, d1) -> (d0)>,
-                                affine_map<(d0, d1) -> (d0, d1)>]
-               ins(%A, %B: tensor<8x16xf32>, tensor<16xf32>)
-               outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
+      kind=#linalg.elementwise_kind<add>
+      indexing_maps = [affine_map<(d0, d1) -> (d1, d0)>,
+                       affine_map<(d0, d1) -> (d0)>,
+                       affine_map<(d0, d1) -> (d0, d1)>]
+      ins(%A, %B: tensor<8x16xf32>, tensor<16xf32>)
+      outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
   return %r : tensor<16x8xf32>
 }
 // -----
@@ -154,12 +154,12 @@ func.func @binary_transpose_a_broadcast_b(%A : tensor<8x16xf32>, %B: tensor<16xf
 //
 func.func @ternary(%A : tensor<32x16xi1>, %B: tensor<8x16x32xf32>, %C : tensor<8x16x32xf32>, %D : tensor<8x16x32xf32>) ->  tensor<8x16x32xf32> {
   %r = linalg.elementwise
-               kind=#linalg.elementwise_kind<select>
-               indexing_maps = [affine_map<(d0, d1, d2) -> (d2, d1)>,
-                                affine_map<(d0, d1, d2) -> (d0, d1, d2)>,
-                                affine_map<(d0, d1, d2) -> (d0, d1, d2)>,
-                                affine_map<(d0, d1, d2) -> (d0, d1, d2)>]
-               ins(%A, %B, %C : tensor<32x16xi1>, tensor<8x16x32xf32>, tensor<8x16x32xf32>)
-               outs(%D: tensor<8x16x32xf32>) -> tensor<8x16x32xf32>
+      kind=#linalg.elementwise_kind<select>
+      indexing_maps = [affine_map<(d0, d1, d2) -> (d2, d1)>,
+                       affine_map<(d0, d1, d2) -> (d0, d1, d2)>,
+                       affine_map<(d0, d1, d2) -> (d0, d1, d2)>,
+                       affine_map<(d0, d1, d2) -> (d0, d1, d2)>]
+      ins(%A, %B, %C : tensor<32x16xi1>, tensor<8x16x32xf32>, tensor<8x16x32xf32>)
+      outs(%D: tensor<8x16x32xf32>) -> tensor<8x16x32xf32>
   return %r : tensor<8x16x32xf32>
-}
\ No newline at end of file
+}

diff  --git a/mlir/test/Dialect/Linalg/elementwise/invalid.mlir b/mlir/test/Dialect/Linalg/elementwise/invalid.mlir
index 3a47d231017b4..fe03519ae94b8 100644
--- a/mlir/test/Dialect/Linalg/elementwise/invalid.mlir
+++ b/mlir/test/Dialect/Linalg/elementwise/invalid.mlir
@@ -41,7 +41,7 @@ func.func @unary_too_many_args(%A : memref<8x16x32xf32>, %B: memref<8x16x32xf32>
   // expected-error at +3 {{custom op 'linalg.elementwise' [parseNamedStructuredOpRegion] ods-gen generated region expects 2 args, got 3}}
   // expected-error at +2 {{custom op 'linalg.elementwise' unable to parse elemwise op}}
   linalg.elementwise kind=#linalg.elementwise_kind<exp> ins(%A, %B : memref<8x16x32xf32>,  memref<8x16x32xf32>) outs(%C: memref<8x16x32xf32>)
-  return 
+  return
 }
 
 // -----
@@ -50,5 +50,5 @@ func.func @binary_too_few_args(%A : memref<8x16x32xf32>, %B: memref<8x16x32xf32>
   // expected-error at +3 {{custom op 'linalg.elementwise' [parseNamedStructuredOpRegion] ods-gen generated region expects 3 args, got 2}}
   // expected-error at +2 {{custom op 'linalg.elementwise' unable to parse elemwise op}}
   linalg.elementwise kind=#linalg.elementwise_kind<add> ins(%A : memref<8x16x32xf32>) outs(%B: memref<8x16x32xf32>)
-  return 
-}
\ No newline at end of file
+  return
+}

diff  --git a/mlir/test/Dialect/Linalg/elementwise/round-trip.mlir b/mlir/test/Dialect/Linalg/elementwise/roundtrip.mlir
similarity index 76%
rename from mlir/test/Dialect/Linalg/elementwise/round-trip.mlir
rename to mlir/test/Dialect/Linalg/elementwise/roundtrip.mlir
index 6ae2a77eb19f8..20ebdd992b5a1 100644
--- a/mlir/test/Dialect/Linalg/elementwise/round-trip.mlir
+++ b/mlir/test/Dialect/Linalg/elementwise/roundtrip.mlir
@@ -8,9 +8,9 @@
 //
 func.func @unary_identity_exp(%A : tensor<8x16x32xf32>, %B: tensor<8x16x32xf32>) ->  tensor<8x16x32xf32> {
   %r = linalg.elementwise
-         kind=#linalg.elementwise_kind<exp>
-         ins(%A : tensor<8x16x32xf32>)
-         outs(%B: tensor<8x16x32xf32>) -> tensor<8x16x32xf32>
+      kind=#linalg.elementwise_kind<exp>
+      ins(%A : tensor<8x16x32xf32>)
+      outs(%B: tensor<8x16x32xf32>) -> tensor<8x16x32xf32>
   return %r : tensor<8x16x32xf32>
 }
 
@@ -28,11 +28,11 @@ func.func @unary_identity_exp(%A : tensor<8x16x32xf32>, %B: tensor<8x16x32xf32>)
 func.func @unary_projection_tanh(%A: tensor<?x16xf32>,
                                           %B: tensor<8x16x?xf32>) ->  tensor<8x16x?xf32> {
   %r = linalg.elementwise
-         kind=#linalg.elementwise_kind<tanh>
-         indexing_maps = [affine_map<(d0, d1, d2) -> (d2, d1)>,
-                          affine_map<(d0, d1, d2) -> (d0, d1, d2)>]
-         ins(%A : tensor<?x16xf32>)
-         outs(%B: tensor<8x16x?xf32>) -> tensor<8x16x?xf32>
+      kind=#linalg.elementwise_kind<tanh>
+      indexing_maps = [affine_map<(d0, d1, d2) -> (d2, d1)>,
+                       affine_map<(d0, d1, d2) -> (d0, d1, d2)>]
+      ins(%A : tensor<?x16xf32>)
+      outs(%B: tensor<8x16x?xf32>) -> tensor<8x16x?xf32>
   return %r : tensor<8x16x?xf32>
 }
 
@@ -48,9 +48,9 @@ func.func @unary_projection_tanh(%A: tensor<?x16xf32>,
 func.func @binary_identity_div(%A: tensor<16x8xf32>, %B: tensor<16x8xf32>,
                       %C: tensor<16x8xf32>) ->  tensor<16x8xf32> {
   %r = linalg.elementwise
-         kind=#linalg.elementwise_kind<div>
-         ins(%A, %B: tensor<16x8xf32>, tensor<16x8xf32>)
-         outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
+      kind=#linalg.elementwise_kind<div>
+      ins(%A, %B: tensor<16x8xf32>, tensor<16x8xf32>)
+      outs(%C: tensor<16x8xf32>) -> tensor<16x8xf32>
   return %r : tensor<16x8xf32>
 }
 
@@ -67,9 +67,9 @@ func.func @binary_identity_div(%A: tensor<16x8xf32>, %B: tensor<16x8xf32>,
 func.func @binary_identity_mul_5Di(%A: tensor<1x2x3x4x5xi32>, %B: tensor<1x2x3x4x5xi32>,
                                    %C: tensor<1x2x3x4x5xi32>) ->  tensor<1x2x3x4x5xi32> {
   %r = linalg.elementwise
-         kind=#linalg.elementwise_kind<mul>
-         ins(%A, %B: tensor<1x2x3x4x5xi32>, tensor<1x2x3x4x5xi32>)
-         outs(%C: tensor<1x2x3x4x5xi32>) -> tensor<1x2x3x4x5xi32>
+      kind=#linalg.elementwise_kind<mul>
+      ins(%A, %B: tensor<1x2x3x4x5xi32>, tensor<1x2x3x4x5xi32>)
+      outs(%C: tensor<1x2x3x4x5xi32>) -> tensor<1x2x3x4x5xi32>
   return %r : tensor<1x2x3x4x5xi32>
 }
 
@@ -82,9 +82,9 @@ func.func @binary_identity_mul_5Di(%A: tensor<1x2x3x4x5xi32>, %B: tensor<1x2x3x4
 func.func @redundant_maps(%A: tensor<1x2x3x4x5xi32>, %B: tensor<1x2x3x4x5xi32>,
                           %C: tensor<1x2x3x4x5xi32>) ->  tensor<1x2x3x4x5xi32> {
   %r = linalg.elementwise
-         kind=#linalg.elementwise_kind<mul>
-         indexing_maps = [#map, #map, #map]
-         ins(%A, %B: tensor<1x2x3x4x5xi32>, tensor<1x2x3x4x5xi32>)
-         outs(%C: tensor<1x2x3x4x5xi32>) -> tensor<1x2x3x4x5xi32>
+      kind=#linalg.elementwise_kind<mul>
+      indexing_maps = [#map, #map, #map]
+      ins(%A, %B: tensor<1x2x3x4x5xi32>, tensor<1x2x3x4x5xi32>)
+      outs(%C: tensor<1x2x3x4x5xi32>) -> tensor<1x2x3x4x5xi32>
   return %r : tensor<1x2x3x4x5xi32>
 }


        


More information about the Mlir-commits mailing list