[Mlir-commits] [mlir] 4c15ad2 - [mlir][linalg] Don't drop existing attributes when creating ops
Lei Zhang
llvmlistbot at llvm.org
Tue Aug 17 12:48:31 PDT 2021
Author: Lei Zhang
Date: 2021-08-17T15:44:56-04:00
New Revision: 4c15ad23212a1d588083e2bc65a2bd30dc5ebb6c
URL: https://github.com/llvm/llvm-project/commit/4c15ad23212a1d588083e2bc65a2bd30dc5ebb6c
DIFF: https://github.com/llvm/llvm-project/commit/4c15ad23212a1d588083e2bc65a2bd30dc5ebb6c.diff
LOG: [mlir][linalg] Don't drop existing attributes when creating ops
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D108219
Added:
Modified:
mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
mlir/test/Dialect/Linalg/canonicalize-duplicate-inputs.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
index 8b54b6de8f09..a58d91e98b71 100644
--- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
+++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
@@ -729,6 +729,15 @@ struct DeduplicateGenericOpInputs : public OpRewritePattern<GenericOp> {
outputOperands, rewriter.getAffineMapArrayAttr(newIndexingMaps),
genericOp.iterator_types(), genericOp.docAttr(),
genericOp.library_callAttr());
+
+ // Copy over unknown attributes. They might be load bearing for some flow.
+ ArrayRef<StringRef> odsAttrs = genericOp.getAttributeNames();
+ for (NamedAttribute kv : genericOp->getAttrs()) {
+ if (!llvm::is_contained(odsAttrs, kv.first.c_str())) {
+ newOp->setAttr(kv.first, kv.second);
+ }
+ }
+
rewriter.inlineRegionBefore(genericOp.region(), newOp.region(),
newOp.region().begin());
diff --git a/mlir/test/Dialect/Linalg/canonicalize-duplicate-inputs.mlir b/mlir/test/Dialect/Linalg/canonicalize-duplicate-inputs.mlir
index 73a1031aa68b..4e1e8c75f7d4 100644
--- a/mlir/test/Dialect/Linalg/canonicalize-duplicate-inputs.mlir
+++ b/mlir/test/Dialect/Linalg/canonicalize-duplicate-inputs.mlir
@@ -8,11 +8,12 @@
// CHECK-LABEL: @basic
func @basic(%arg0: tensor<?xf32>) -> tensor<?xf32> {
// CHECK: linalg.generic{{.*}}[#[[$MAP]], #[[$MAP]]]
+ // CHECK: attrs = {someattr}
// CHECK: ^bb0(%[[BBARG:.*]]: f32, %{{.*}}: f32):
// CHECK: addf %[[BBARG]], %[[BBARG]]
%0 = linalg.generic {indexing_maps = [#map, #map, #map], iterator_types = ["parallel"]}
ins(%arg0, %arg0 : tensor<?xf32>, tensor<?xf32>)
- outs(%arg0 : tensor<?xf32>) {
+ outs(%arg0 : tensor<?xf32>) attrs = {someattr} {
^bb0(%arg1: f32, %arg2: f32, %arg3: f32):
%1 = addf %arg1, %arg2 : f32
linalg.yield %1 : f32
More information about the Mlir-commits
mailing list