// Copyright 2020 Google LLC
//
// This source code is licensed under the BSD-style license found in the
// LICENSE file in the root directory of this source tree.

#include <math.h>
#include <stddef.h>
#include <stdint.h>

#include <xnnpack/common.h>
#include <xnnpack/log.h>
#include <xnnpack/subgraph.h>


// This function is defined inline when logging is disabled
#if XNN_LOG_LEVEL > 0
const char* xnn_node_type_to_string(enum xnn_node_type type) {
  switch (type) {
    case xnn_node_type_invalid:
      return "Invalid";
    case xnn_node_type_abs:
      return "Abs";
    case xnn_node_type_add2:
      return "Add2";
    case xnn_node_type_argmax_pooling_2d:
      return "ArgMax Pooling 2D";
    case xnn_node_type_average_pooling_2d:
      return "Average Pooling 2D";
    case xnn_node_type_bankers_rounding:
      return "Bankers Rounding";
    case xnn_node_type_ceiling:
      return "Ceiling";
    case xnn_node_type_clamp:
      return "Clamp";
    case xnn_node_type_convert:
      return "Convert";
    case xnn_node_type_convolution_2d:
      return "Convolution 2D";
    case xnn_node_type_deconvolution_2d:
      return "Deconvolution 2D";
    case xnn_node_type_depthwise_convolution_2d:
      return "Depthwise Convolution 2D";
    case xnn_node_type_depth_to_space:
      return "Depth To Space";
    case xnn_node_type_divide:
      return "Divide";
    case xnn_node_type_elu:
      return "ELU";
    case xnn_node_type_fully_connected:
      return "Fully Connected";
    case xnn_node_type_floor:
      return "Floor";
    case xnn_node_type_global_average_pooling_2d:
      return "Global Average Pooling 2D";
    case xnn_node_type_hardswish:
      return "HardSwish";
    case xnn_node_type_leaky_relu:
      return "Leaky ReLU";
    case xnn_node_type_maximum2:
      return "Maximum2";
    case xnn_node_type_minimum2:
      return "Minimum2";
    case xnn_node_type_multiply2:
      return "Multiply2";
    case xnn_node_type_max_pooling_2d:
      return "Max Pooling 2D";
    case xnn_node_type_negate:
      return "Negate";
    case xnn_node_type_prelu:
      return "PReLU";
    case xnn_node_type_sigmoid:
      return "Sigmoid";
    case xnn_node_type_softmax:
      return "Softmax";
    case xnn_node_type_static_constant_pad:
      return "Static Constant Pad";
    case xnn_node_type_static_reshape:
      return "Static Reshape";
    case xnn_node_type_static_resize_bilinear_2d:
      return "Static Resize Bilinear 2D";
    case xnn_node_type_square:
      return "Square";
    case xnn_node_type_square_root:
      return "Square Root";
    case xnn_node_type_squared_difference:
      return "Squared Difference";
    case xnn_node_type_subtract:
      return "Subtract";
    case xnn_node_type_unpooling_2d:
      return "Unpooling 2D";
  }
  XNN_UNREACHABLE;
  return NULL;
}
#endif  // XNN_LOG_LEVEL > 0
