diff --git a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td --- a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td +++ b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td @@ -29,6 +29,7 @@ let useDefaultAttributePrinterParser = 1; let hasConstantMaterializer = 1; + let usePropertiesForAttributes = 1; let dependentDialects = ["arith::ArithDialect"]; } diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -1154,7 +1154,8 @@ ValueRange operands, DictionaryAttr attributes, OpaqueProperties properties, RegionRange, SmallVectorImpl &inferredReturnTypes) { - ExtractOp::Adaptor op(operands, attributes); + ExtractOp::Adaptor op(operands, attributes, + *properties.as()); auto vectorType = op.getVector().getType().cast(); if (static_cast(op.getPosition().size()) == vectorType.getRank()) { inferredReturnTypes.push_back(vectorType.getElementType()); @@ -2086,7 +2087,8 @@ ValueRange operands, DictionaryAttr attributes, OpaqueProperties properties, RegionRange, SmallVectorImpl &inferredReturnTypes) { - ShuffleOp::Adaptor op(operands, attributes); + ShuffleOp::Adaptor op(operands, attributes, + *properties.as()); auto v1Type = op.getV1().getType().cast(); auto v1Rank = v1Type.getRank(); // Construct resulting type: leading dimension matches mask