Skip to content

Commit

Permalink
[mlir][linalg][nfc] Fix formatting for linalg.elementwise
Browse files Browse the repository at this point in the history
Follow-up to llvm#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.
  • Loading branch information
banach-space committed Feb 21, 2025
1 parent 6dca33c commit ce5c702
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 65 deletions.
20 changes: 10 additions & 10 deletions mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
Original file line number Diff line number Diff line change
Expand Up @@ -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>
```
}];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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>
}
// -----
Expand All @@ -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>
}
// -----
Expand All @@ -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
}
// -----
Expand All @@ -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>
}
// -----
Expand All @@ -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>
}
// -----
Expand All @@ -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>
}
// -----
Expand All @@ -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>
}
}
6 changes: 3 additions & 3 deletions mlir/test/Dialect/Linalg/elementwise/invalid.mlir
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func.func @unary_too_many_args(%A : memref<8x16x32xf32>, %B: memref<8x16x32xf32>
// expected-error@+3 {{custom op 'linalg.elementwise' [parseNamedStructuredOpRegion] ods-gen generated region expects 2 args, got 3}}
// expected-error@+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
}

// -----
Expand All @@ -50,5 +50,5 @@ func.func @binary_too_few_args(%A : memref<8x16x32xf32>, %B: memref<8x16x32xf32>
// expected-error@+3 {{custom op 'linalg.elementwise' [parseNamedStructuredOpRegion] ods-gen generated region expects 3 args, got 2}}
// expected-error@+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
}
return
}
Original file line number Diff line number Diff line change
Expand Up @@ -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>
}

Expand All @@ -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>
}

Expand All @@ -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>
}

Expand All @@ -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>
}

Expand All @@ -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>
}

0 comments on commit ce5c702

Please sign in to comment.