message: Micro: Added specific cmsis optimization for convolutions with 1xN filters. Also removed deprecated output depth dependency.
diff: @@ -202,8 +202,8 @@ TfLiteStatus EvalQuantizedPerChannel(
  if (op_params.padding_values.width == 0 &&
  op_params.padding_values.height == 0 && (input_depth % 4 == 0) &&
  - (output_depth % 2 == 0) && op_params.stride_width == 1 &&
  - op_params.stride_height == 1 && filter_width == 1 && filter_height == 1) {
  + op_params.stride_width == 1 && op_params.stride_height == 1 &&
  + filter_width == 1 && filter_height == 1) {
  const int32_t buf_size =
  arm_convolve_1x1_s8_fast_get_buffer_size(input_depth);
  if (get_cmsis_scratch_buffer(context, &buf, buf_size) != kTfLiteOk) {
  @@ -221,6 +221,25 @@ TfLiteStatus EvalQuantizedPerChannel(
  output_height, buf) != ARM_MATH_SUCCESS) {
  return kTfLiteError;
  }
  +
  + } else if (output_height == 1 && input_height == 1 &&
  + filter_height == 1 && (output_width % 4 == 0) &&
  + batches == 1) {
  + const int32_t buf_size = arm_convolve_1_x_n_s8_get_buffer_size(
  + input_depth, filter_width, filter_height);
  + if (get_cmsis_scratch_buffer(context, &buf, buf_size) != kTfLiteOk) {
  + return kTfLiteError;
  + }
  + if (arm_convolve_1_x_n_s8(
  + GetTensorData<int8_t>(input), input_width, input_depth,
  + batches, GetTensorData<int8_t>(filter), output_depth, filter_width,
  + op_params.padding_values.width, op_params.stride_width,
  + GetTensorData<int32_t>(bias), GetTensorData<int8_t>(output),
  + data->per_channel_output_shift, data->per_channel_output_multiplier,
  + op_params.output_offset, op_params.input_offset, output_activation_min,
  + output_activation_max, output_width, buf) != ARM_MATH_SUCCESS) {
  + return kTfLiteError;
  + }
  } else {
  const int32_t buf_size = arm_convolve_s8_get_buffer_size(
  input_depth, filter_width, filter_height);
  