aboutsummaryrefslogtreecommitdiff
path: root/mlir
diff options
context:
space:
mode:
authorAdrian Kuegel <akuegel@google.com>2022-08-02 14:56:24 +0200
committerAdrian Kuegel <akuegel@google.com>2022-08-04 08:39:41 +0200
commit84d4bb78e0af85709b4c91643c9abf6518a41d13 (patch)
tree54f42dbd357e10cbb99162b53e2c5323d7b39cf2 /mlir
parentb19de814add2c2d9496c0b2fcc8a47024a58e491 (diff)
[mlir][Linalg] Inline an interface method to its only user.
It seems only the default implementation is ever used, so it doesn't seem necessary to include this method in the interface. Differential Revision: https://reviews.llvm.org/D130986
Diffstat (limited to 'mlir')
-rw-r--r--mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td20
-rw-r--r--mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp13
2 files changed, 12 insertions, 21 deletions
diff --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td b/mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
index d6bc06218a91..e01e30b73bff 100644
--- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
+++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
@@ -985,26 +985,6 @@ def LinalgStructuredInterface : OpInterface<"LinalgOp"> {
>,
InterfaceMethod<
/*desc=*/[{
- Return the range of position in the result of the affine map
- computed by getLoopsToShapesMap() which correspond to the
- AffineExprs used to access the outputs of the operation.
- }],
- /*retTy=*/"std::pair<int64_t, int64_t>",
- /*methodName=*/"getResultsPositionInLoopsToShapeMap",
- /*args=*/(ins),
- /*methodBody=*/"",
- /*defaultImplementation=*/[{
- int64_t inputRankSum = 0;
- int64_t outputRankSum = 0;
- for(OpOperand *input : getInputOperands())
- inputRankSum += getRank(input);
- for(OpOperand *output : getOutputOperands())
- outputRankSum += getRank(output);
- return {inputRankSum, inputRankSum + outputRankSum};
- }]
- >,
- InterfaceMethod<
- /*desc=*/[{
Like `getShape`, but only returns statically-known information, without
generating any new IR. For each shape dimension, returns >=0 if that
dimension is statically known, or ShapeType::kDynamicSize otherwise.
diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
index f389c18efe5e..3b63824b829a 100644
--- a/mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
+++ b/mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
@@ -566,6 +566,17 @@ private:
llvm::SmallBitVector positions;
};
+static std::pair<int64_t, int64_t>
+getResultsPositionInLoopsToShapeMap(LinalgOp &op) {
+ int64_t inputRankSum = 0;
+ int64_t outputRankSum = 0;
+ for (OpOperand *input : op.getInputOperands())
+ inputRankSum += op.getRank(input);
+ for (OpOperand *output : op.getOutputOperands())
+ outputRankSum += op.getRank(output);
+ return {inputRankSum, inputRankSum + outputRankSum};
+}
+
LogicalResult
LinalgOp::reifyResultShapes(OpBuilder &b,
ReifiedRankedShapedTypeDims &reifiedReturnShapes) {
@@ -582,7 +593,7 @@ LinalgOp::reifyResultShapes(OpBuilder &b,
// Find the position in the above map that represents the shape of the
// result:dim being inferred.
- auto resultShapesSubMapPos = getResultsPositionInLoopsToShapeMap();
+ auto resultShapesSubMapPos = getResultsPositionInLoopsToShapeMap(*this);
/// From loopsToShapesMap extract the submap that represents the shape of the
/// (resultIdx, dim) needed.