[Mlir-commits] [mlir] [mlir][tensor][linalg] Move Pack/Unpack Ops to Linalg (PR #123902)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Jan 22 00:15:08 PST 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff d839c06719128700bdd033361b20aa6899f6620a c05d6be2d2fd1f39c34dd5b0d6af0d0cbd2db79c --extensions h,cpp -- mlir/include/mlir/Dialect/Linalg/IR/Linalg.h mlir/include/mlir/Dialect/Linalg/Transforms/TilingInterfaceImpl.h mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h mlir/include/mlir/Dialect/Linalg/Utils/Utils.h mlir/include/mlir/Dialect/Tensor/Transforms/Transforms.h mlir/include/mlir/Dialect/Tensor/Utils/Utils.h mlir/lib/Dialect/Linalg/IR/LinalgDialect.cpp mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp mlir/lib/Dialect/Linalg/Transforms/BlockPackMatmul.cpp mlir/lib/Dialect/Linalg/Transforms/DataLayoutPropagation.cpp mlir/lib/Dialect/Linalg/Transforms/TilingInterfaceImpl.cpp mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp mlir/lib/Dialect/Linalg/Utils/Utils.cpp mlir/lib/Dialect/Tensor/IR/TensorDialect.cpp mlir/lib/Dialect/Tensor/IR/TensorOps.cpp mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.cpp mlir/lib/Dialect/Tensor/TransformOps/TensorTransformOps.cpp mlir/lib/Dialect/Tensor/Transforms/EmptyOpPatterns.cpp mlir/lib/Dialect/Tensor/Utils/Utils.cpp mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp mlir/test/lib/Dialect/Tensor/TestTensorTransforms.cpp mlir/lib/Dialect/Linalg/Transforms/PackAndUnpackPatterns.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
index a32f913d46..3dd18b44a4 100644
--- a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
+++ b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
@@ -1892,7 +1892,7 @@ void populateFoldIntoPackAndUnpackPatterns(RewritePatternSet &patterns);
/// Populates `patterns` with patterns that fold operations like `linalg.pack`
/// and `linalg.unpack` into `tensor.empty`.
-void populateFoldPackUnpackIntoTensorEmptyPatterns(RewritePatternSet &patterns);
+void populateFoldPackUnpackIntoTensorEmptyPatterns(RewritePatternSet &patterns);
/// Populates `patterns` with patterns that simplify `tensor.pack` and
/// `tensor.unpack` operations.
diff --git a/mlir/include/mlir/Dialect/Linalg/Utils/Utils.h b/mlir/include/mlir/Dialect/Linalg/Utils/Utils.h
index cab8f23084..80aa034d21 100644
--- a/mlir/include/mlir/Dialect/Linalg/Utils/Utils.h
+++ b/mlir/include/mlir/Dialect/Linalg/Utils/Utils.h
@@ -52,7 +52,6 @@ SmallVector<int64_t> getUnPackInverseSrcPerm(linalg::UnPackOp unpackOp);
SmallVector<int64_t> getUnPackInverseSrcPerm(linalg::UnPackOp,
PackingMetadata &metadata);
-
//===----------------------------------------------------------------------===//
// General utilities
//===----------------------------------------------------------------------===//
diff --git a/mlir/include/mlir/Dialect/Tensor/Utils/Utils.h b/mlir/include/mlir/Dialect/Tensor/Utils/Utils.h
index c28aaeb2c7..311554753e 100644
--- a/mlir/include/mlir/Dialect/Tensor/Utils/Utils.h
+++ b/mlir/include/mlir/Dialect/Tensor/Utils/Utils.h
@@ -55,9 +55,8 @@ bool isCastLikeExtractSliceOp(ExtractSliceOp op);
/// Removes the op and replaces the constant with a new constant of the result
/// shape. When an optional cst attribute is passed, it is reshaped only if the
/// splat value matches the value in the attribute.
-OpFoldResult
-reshapeConstantSource(DenseElementsAttr source, TensorType result,
- std::optional<Attribute> cst = std::nullopt);
+OpFoldResult reshapeConstantSource(DenseElementsAttr source, TensorType result,
+ std::optional<Attribute> cst = std::nullopt);
} // namespace tensor
} // namespace mlir
diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
index 84f8894549..045b844de3 100644
--- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
+++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
@@ -4122,7 +4122,8 @@ Value PackOp::createDestinationTensor(OpBuilder &b, Location loc, Value source,
for (auto [index, value] : llvm::enumerate(
llvm::cast<RankedTensorType>(source.getType()).getShape())) {
if (ShapedType::isDynamic(value))
- mixedSizes.push_back(b.create<tensor::DimOp>(loc, source, index).getResult());
+ mixedSizes.push_back(
+ b.create<tensor::DimOp>(loc, source, index).getResult());
else
mixedSizes.push_back(b.getIndexAttr(value));
}
diff --git a/mlir/lib/Dialect/Linalg/Transforms/PackAndUnpackPatterns.cpp b/mlir/lib/Dialect/Linalg/Transforms/PackAndUnpackPatterns.cpp
index 56f5bf87f8..0984b6988b 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/PackAndUnpackPatterns.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/PackAndUnpackPatterns.cpp
@@ -224,7 +224,8 @@ struct FoldPadWithPackOp : public OpRewritePattern<PackOp> {
/// Fold a `unpack` -> `extract_slice` into the `unpack` since it already
/// has extract_slice semantics.
-struct FoldUnpackWithExtractSliceOp : public OpRewritePattern<tensor::ExtractSliceOp> {
+struct FoldUnpackWithExtractSliceOp
+ : public OpRewritePattern<tensor::ExtractSliceOp> {
using OpRewritePattern<tensor::ExtractSliceOp>::OpRewritePattern;
LogicalResult matchAndRewrite(tensor::ExtractSliceOp sliceOp,
@@ -499,7 +500,6 @@ struct FoldEmptyTensorWithPackOp : public OpRewritePattern<PackOp> {
}
};
-
/// tensor.empty does not define any tensor contents, so an unpack
/// can be folded away.
struct FoldEmptyTensorWithUnPackOp : public OpRewritePattern<UnPackOp> {
diff --git a/mlir/lib/Dialect/Linalg/Transforms/TilingInterfaceImpl.cpp b/mlir/lib/Dialect/Linalg/Transforms/TilingInterfaceImpl.cpp
index 6906bb4f1a..faa7bbf9d1 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/TilingInterfaceImpl.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/TilingInterfaceImpl.cpp
@@ -831,8 +831,8 @@ struct PackOpTiling
SmallVector<OpFoldResult> strides(inputRank, oneAttr);
SmallVector<Value> tiledOperands;
- auto sourceSlice = b.create<tensor::ExtractSliceOp>(loc, packOp.getSource(),
- offsets, sizes, strides);
+ auto sourceSlice = b.create<tensor::ExtractSliceOp>(
+ loc, packOp.getSource(), offsets, sizes, strides);
tiledOperands.push_back(sourceSlice);
SmallVector<OpFoldResult> outerDimOffsets, outerDimSizes;
@@ -1035,21 +1035,21 @@ struct UnPackOpTiling
sliceSrcSizes.append(unpackOp.getMixedTiles());
sliceSrcStrides.append(numInnerTiles, oneAttr);
SmallVector<Operation *> generatedSlices;
- tensor::ExtractSliceOp sliceSource =
- b.create<tensor::ExtractSliceOp>(loc, unpackOp.getSource(), sliceSrcIndices,
- sliceSrcSizes, sliceSrcStrides);
+ tensor::ExtractSliceOp sliceSource = b.create<tensor::ExtractSliceOp>(
+ loc, unpackOp.getSource(), sliceSrcIndices, sliceSrcSizes,
+ sliceSrcStrides);
generatedSlices.push_back(sliceSource);
SmallVector<OpFoldResult> destStrides(destRank, oneAttr);
Value sliceDest;
if (isPerfectTilingCase) {
- auto destSliceOp = b.create<tensor::ExtractSliceOp>(loc, unpackOp.getDest(),
- offsets, sizes, destStrides);
+ auto destSliceOp = b.create<tensor::ExtractSliceOp>(
+ loc, unpackOp.getDest(), offsets, sizes, destStrides);
sliceDest = destSliceOp;
generatedSlices.push_back(destSliceOp);
} else {
- sliceDest = b.create<tensor::EmptyOp>(loc, destExpandedSizes,
- unpackOp.getDestType().getElementType());
+ sliceDest = b.create<tensor::EmptyOp>(
+ loc, destExpandedSizes, unpackOp.getDestType().getElementType());
}
SmallVector<Value> tiledOperands = {sliceSource.getResult(), sliceDest};
@@ -1064,9 +1064,9 @@ struct UnPackOpTiling
SmallVector<Value>(tiledUnpackOp->getResults()),
generatedSlices};
- auto extractSlice =
- b.create<tensor::ExtractSliceOp>(loc, tiledUnpackOp->getResult(0),
- resultOffsetsFromDest, sizes, destStrides);
+ auto extractSlice = b.create<tensor::ExtractSliceOp>(
+ loc, tiledUnpackOp->getResult(0), resultOffsetsFromDest, sizes,
+ destStrides);
return TilingResult{
{tiledUnpackOp}, {extractSlice.getResult()}, generatedSlices};
}
@@ -1208,7 +1208,6 @@ struct UnPackOpTiling
}
};
-
} // namespace
template <typename OpType>
diff --git a/mlir/lib/Dialect/Linalg/Utils/Utils.cpp b/mlir/lib/Dialect/Linalg/Utils/Utils.cpp
index 03da2d5454..d3d301ca09 100644
--- a/mlir/lib/Dialect/Linalg/Utils/Utils.cpp
+++ b/mlir/lib/Dialect/Linalg/Utils/Utils.cpp
@@ -190,9 +190,8 @@ SmallVector<int64_t> getUnPackInverseSrcPerm(UnPackOp unpackOp) {
return getUnPackInverseSrcPerm(unpackOp, metadata);
}
-SmallVector<int64_t>
-getUnPackInverseSrcPerm(UnPackOp unpackOp,
- PackingMetadata &metadata) {
+SmallVector<int64_t> getUnPackInverseSrcPerm(UnPackOp unpackOp,
+ PackingMetadata &metadata) {
int64_t unpackRank = unpackOp.getSourceType().getRank();
ArrayRef<int64_t> innerDimPos = unpackOp.getInnerDimsPos();
ArrayRef<int64_t> outerPerm = unpackOp.getOuterDimsPerm();
``````````
</details>
https://github.com/llvm/llvm-project/pull/123902
More information about the Mlir-commits
mailing list