Skip to content

Commit

Permalink
FC supports all variants of Conv2D so re-write all suitable Convs as FC
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 724272831
  • Loading branch information
alankelly authored and xnnpack-bot committed Feb 7, 2025
1 parent da19f44 commit 114acd2
Showing 1 changed file with 7 additions and 15 deletions.
22 changes: 7 additions & 15 deletions src/subgraph/convolution-2d.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 114acd2

Please sign in to comment.