message: Enable int8 input and int16 output for cmsis-nn softmax.
diff: @@ -36,8 +36,15 @@ TfLiteStatus CalculateSoftmaxParams(TfLiteContext* context,
  TF_LITE_ENSURE_EQ(context, output->params.zero_point, 0);
  } else {
  TF_LITE_ENSURE_TYPES_EQ(context, input->type, kTfLiteInt8);
  + if (output->type == kTfLiteInt16) {
  + TF_LITE_ENSURE_EQ(context, output->params.zero_point, -32768);
  + // NOTE: Current int16 softmax output does not require symmetric scaling
  + // - so no need to verify scale here.
  + } else {
  TF_LITE_ENSURE_TYPES_EQ(context, output->type, kTfLiteInt8);
  TF_LITE_ENSURE_EQ(context, output->params.zero_point, -128);
  + TF_LITE_ENSURE(context, output->params.scale == 1.f / 256);
  + }
  }
  TF_LITE_ENSURE(context, (output->params.scale == 1.f / 256) ||
  (output->params.scale == 1.f / 255));
  @@ -89,6 +96,11 @@ void SoftmaxQuantized(const TfLiteTensor* input, TfLiteTensor* output,
  tflite::reference_ops::Softmax(op_data, input_shape,
  GetTensorData<uint8_t>(input), output_shape,
  GetTensorData<uint8_t>(output));
  + } else {
  + if (output->type == kTfLiteInt16) {
  + tflite::reference_ops::Softmax(
  + op_data, GetTensorShape(input), GetTensorData<int8_t>(input),
  + GetTensorShape(output), GetTensorData<int16_t>(output));
  } else {
  const unsigned int num_dims = NumDimensions(input);
  @@ -103,6 +115,7 @@ void SoftmaxQuantized(const TfLiteTensor* input, TfLiteTensor* output,
  op_data.diff_min, GetTensorData<int8_t>(output));
  }
  }
  +}
  TfLiteStatus SoftmaxEval(TfLiteContext* context, TfLiteNode* node) {
  auto* params = static_cast<TfLiteSoftmaxParams*>(node->builtin_data);
  