[mlir][linalg] Explicitly instantiate DownscaleSizeOneWindowed2DConvolution
authorBenjamin Kramer <benny.kra@googlemail.com>
Mon, 12 Sep 2022 16:46:35 +0000 (18:46 +0200)
committerBenjamin Kramer <benny.kra@googlemail.com>
Mon, 12 Sep 2022 16:49:19 +0000 (18:49 +0200)
It's not possible to use a template with no definition from another
translation unit. Fixes the shared library build.

mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp

index e6a1b07..9586815 100644 (file)
@@ -776,6 +776,11 @@ private:
   LinalgTransformationFilter filter;
 };
 
+extern template struct DownscaleSizeOneWindowed2DConvolution<Conv2DNhwcHwcfOp,
+                                                             Conv1DNwcWcfOp>;
+extern template struct DownscaleSizeOneWindowed2DConvolution<Conv2DNchwFchwOp,
+                                                             Conv1DNcwFcwOp>;
+
 /// Rewrites 2-D depthwise convolution ops with size-1 (w, kw) or (h, kh)
 /// dimensions into 1-D depthwise convolution ops.
 struct DownscaleDepthwiseConv2DNhwcHwcOp final
index 1c4ceaa..31136dd 100644 (file)
@@ -920,6 +920,11 @@ FailureOr<Conv1DOp> DownscaleSizeOneWindowed2DConvolution<Conv2DOp, Conv1DOp>::
   return conv1DOp;
 }
 
+template struct linalg::DownscaleSizeOneWindowed2DConvolution<Conv2DNhwcHwcfOp,
+                                                              Conv1DNwcWcfOp>;
+template struct linalg::DownscaleSizeOneWindowed2DConvolution<Conv2DNchwFchwOp,
+                                                              Conv1DNcwFcwOp>;
+
 FailureOr<DepthwiseConv1DNwcWcOp>
 DownscaleDepthwiseConv2DNhwcHwcOp::returningMatchAndRewrite(
     DepthwiseConv2DNhwcHwcOp convOp, PatternRewriter &rewriter) const {