From 114acd2424e4dd93266614afec522eda022533dd Mon Sep 17 00:00:00 2001 From: Alan Kelly Date: Fri, 7 Feb 2025 02:49:43 -0800 Subject: [PATCH] FC supports all variants of Conv2D so re-write all suitable Convs as FC PiperOrigin-RevId: 724272831 --- src/subgraph/convolution-2d.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/subgraph/convolution-2d.c b/src/subgraph/convolution-2d.c index 2c65e9d08b6..6c84eebe25c 100644 --- a/src/subgraph/convolution-2d.c +++ b/src/subgraph/convolution-2d.c @@ -1300,21 +1300,13 @@ enum xnn_status xnn_define_convolution_2d( } } - const enum xnn_datatype input_datatype = input_value->datatype; - const enum xnn_datatype output_datatype = output_value->datatype; - if (input_datatype == xnn_datatype_fp32 - || input_datatype == xnn_datatype_fp16 - || input_datatype == xnn_datatype_qint8) { - if (input_value->datatype == output_datatype) { - const bool unit_subsampling = (subsampling_width | subsampling_height) == 1; - const size_t kernel_size = kernel_height * kernel_width; - if (groups == 1 && kernel_size == 1 && unit_subsampling && !any_padding) { - // Check if the convolution can take the vmulcaddc path. - if (group_input_channels + group_output_channels > 2) { - return xnn_define_fully_connected(subgraph, output_min, output_max, - input_id, filter_id, bias_id, output_id, /*flags=*/0); - } - } + const bool unit_subsampling = (subsampling_width | subsampling_height) == 1; + const size_t kernel_size = kernel_height * kernel_width; + if (groups == 1 && kernel_size == 1 && unit_subsampling && !any_padding) { + // Check if the convolution can take the vmulcaddc path. + if (group_input_channels + group_output_channels > 2) { + return xnn_define_fully_connected(subgraph, output_min, output_max, + input_id, filter_id, bias_id, output_id, /*flags=*/0); } } struct xnn_node* node = xnn_subgraph_new_node(subgraph);