From: Mehdi Amini Date: Fri, 21 Apr 2023 07:17:20 +0000 (-0600) Subject: Adopt Properties to store operations inherent Attributes in the Vector dialect X-Git-Tag: upstream/17.0.6~8447 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=51c8af2763dd7820bea5abf28728b400a86d1ba3;p=platform%2Fupstream%2Fllvm.git Adopt Properties to store operations inherent Attributes in the Vector dialect This is part of an on-going migration to adopt Properties inside MLIR. Differential Revision: https://reviews.llvm.org/D148939 --- diff --git a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td index e4909a2..b9bcd2b 100644 --- a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td +++ b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td @@ -29,6 +29,7 @@ def Vector_Dialect : Dialect { 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 index 2d3b27f..5c139b5 100644 --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -1153,8 +1153,9 @@ ExtractOp::inferReturnTypes(MLIRContext *, std::optional, ValueRange operands, DictionaryAttr attributes, OpaqueProperties properties, RegionRange, SmallVectorImpl &inferredReturnTypes) { - ExtractOp::Adaptor op(operands, attributes); - auto vectorType = llvm::cast(op.getVector().getType()); + 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()); } else { @@ -2089,8 +2090,9 @@ ShuffleOp::inferReturnTypes(MLIRContext *, std::optional, ValueRange operands, DictionaryAttr attributes, OpaqueProperties properties, RegionRange, SmallVectorImpl &inferredReturnTypes) { - ShuffleOp::Adaptor op(operands, attributes); - auto v1Type = llvm::cast(op.getV1().getType()); + ShuffleOp::Adaptor op(operands, attributes + *properties.as()); + auto v1Type = op.getV1().getType().cast(); auto v1Rank = v1Type.getRank(); // Construct resulting type: leading dimension matches mask // length, all trailing dimensions match the operands.