[Mlir-commits] [mlir] [mlir][tosa] Refactor convolution infer return type (PR #178869)

Iliyan Georgiev llvmlistbot at llvm.org
Tue Feb 10 08:52:28 PST 2026


================
@@ -3435,162 +3435,241 @@ static LogicalResult poolingInferReturnTypes(
   return success();
 }
 
-LogicalResult Conv2DOp::inferReturnTypeComponents(
-    MLIRContext *context, ::std::optional<Location> location,
-    Conv2DOp::Adaptor adaptor,
-    SmallVectorImpl<ShapedTypeComponents> &inferredReturnShapes) {
-  llvm::SmallVector<int64_t> outputShape(4, ShapedType::kDynamic);
+template <typename AdaptorT>
+class ConvInferShapeAdaptor;
 
-  int64_t inputWidth = ShapedType::kDynamic;
-  int64_t inputHeight = ShapedType::kDynamic;
-  int64_t weightWidth = ShapedType::kDynamic;
-  int64_t weightHeight = ShapedType::kDynamic;
-
-  // Input shape describes input width/height and batch.
+class ConvInferShapeAdaptorBase {
----------------
iliyan-georgiev-arm wrote:

nit: 
I'm wondering if its worth having `inferInputShape`,  `inferWeightShape`, `getNumSpatialDims`, `getOutputRank` and `getSpatialParameters` as pure virtuals of `ConvInferShapeAdaptorBase`

It would clarify the base class should not be instantiated and make it a bit neater if more infer adaptors are implemented in the future.

Though not strictly needed looking at usage bellow, so happy to leave as is.

https://github.com/llvm/llvm-project/pull/178869


More information about the Mlir-commits mailing list