[Mlir-commits] [mlir] 61f33de - [mlir][Vector] Make sure that vector.contract preserves extra attributes while parsing
Alex Zinenko
llvmlistbot at llvm.org
Thu Mar 23 03:31:54 PDT 2023
Author: Adam Paszke
Date: 2023-03-23T10:31:46Z
New Revision: 61f33def1375a68afc5681627a62ce24446e45e2
URL: https://github.com/llvm/llvm-project/commit/61f33def1375a68afc5681627a62ce24446e45e2
DIFF: https://github.com/llvm/llvm-project/commit/61f33def1375a68afc5681627a62ce24446e45e2.diff
LOG: [mlir][Vector] Make sure that vector.contract preserves extra attributes while parsing
The old implementation parsed the optional attribute dict, only to replace its
contents by using `assign`.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D146707
Added:
Modified:
mlir/lib/Dialect/Vector/IR/VectorOps.cpp
mlir/test/Dialect/Vector/ops.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
index 9796693b4b6cd..21daff60c7e62 100644
--- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
+++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
@@ -640,7 +640,7 @@ ParseResult ContractionOp::parse(OpAsmParser &parser, OperationState &result) {
auto loc = parser.getCurrentLocation();
DictionaryAttr dictAttr;
// TODO: Unify linalg op attribute parsing.
- if (parser.parseAttribute(dictAttr, "_", result.attributes) ||
+ if (parser.parseAttribute(dictAttr) ||
parser.parseOperand(lhsInfo) || parser.parseComma() ||
parser.parseOperand(rhsInfo) || parser.parseComma() ||
parser.parseOperand(accInfo) ||
@@ -653,7 +653,7 @@ ParseResult ContractionOp::parse(OpAsmParser &parser, OperationState &result) {
parser.resolveOperand(accInfo, resultType, result.operands) ||
parser.addTypeToList(resultType, result.types))
return failure();
- result.attributes.assign(dictAttr.getValue().begin(),
+ result.attributes.append(dictAttr.getValue().begin(),
dictAttr.getValue().end());
// Convert array of string into an array of IteratyType enums. This is needed,
diff --git a/mlir/test/Dialect/Vector/ops.mlir b/mlir/test/Dialect/Vector/ops.mlir
index 60e1507293f7e..4013d5daee8cc 100644
--- a/mlir/test/Dialect/Vector/ops.mlir
+++ b/mlir/test/Dialect/Vector/ops.mlir
@@ -291,6 +291,18 @@ func.func @contraction_to_scalar(%arg0: vector<10xf32>, %arg1: vector<10xf32>) -
return %0 : f32
}
+// CHECK-LABEL: @contraction_extra_attrs
+func.func @contraction_extra_attrs(%arg0: vector<10xf32>, %arg1: vector<10xf32>) -> f32 {
+ // CHECK: %[[C0:.*]] = arith.constant 0.000000e+00 : f32
+ %f0 = arith.constant 0.0: f32
+ // CHECK: %[[X:.*]] = vector.contract {indexing_maps = [#{{.*}}, #{{.*}}, #{{.*}}], iterator_types = ["reduction"], kind = #vector.kind<add>} %{{.*}}, %{{.*}}, %[[C0]] {first_attr = 1 : i32, second_attr = "string"} : vector<10xf32>, vector<10xf32> into f32
+ %0 = vector.contract #contraction_to_scalar_trait %arg0, %arg1, %f0
+ {first_attr = 1 : i32, second_attr = "string"}
+ : vector<10xf32>, vector<10xf32> into f32
+ // CHECK: return %[[X]] : f32
+ return %0 : f32
+}
+
#contraction_to_scalar_max_accesses = [
affine_map<(i) -> (i)>,
affine_map<(i) -> (i)>,
More information about the Mlir-commits
mailing list