blob: 3db439f0d3547a3576bd93c97c30b48cc363b3ab [file] [log] [blame]
Marat Dukhan3b59de22020-06-03 20:15:19 -07001// Copyright 2020 Google LLC
2//
3// This source code is licensed under the BSD-style license found in the
4// LICENSE file in the root directory of this source tree.
5
6#include <math.h>
7#include <stddef.h>
8#include <stdint.h>
9
10#include <xnnpack/common.h>
11#include <xnnpack/log.h>
12#include <xnnpack/subgraph.h>
13
14
Marat Dukhan210e35d2020-06-04 02:45:57 -070015// This function is defined inline when logging is disabled
16#if XNN_LOG_LEVEL > 0
Marat Dukhan3b59de22020-06-03 20:15:19 -070017const char* xnn_operator_type_to_string(enum xnn_operator_type type) {
18 switch (type) {
19 case xnn_operator_type_invalid:
20 return "Invalid";
Marat Dukhan5020b962020-06-08 13:30:10 -070021 case xnn_operator_type_abs_nc_f32:
22 return "Abs (NC, F32)";
Frank Barchard01898c02020-06-23 21:49:50 -070023 case xnn_operator_type_add_nd_f16:
24 return "Add (ND, F16)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070025 case xnn_operator_type_add_nd_f32:
26 return "Add (ND, F32)";
Marat Dukhanff209482020-09-03 14:26:53 -070027 case xnn_operator_type_add_nd_qs8:
28 return "Add (ND, QS8)";
Marat Dukhandb007cd2021-07-20 23:42:39 -070029 case xnn_operator_type_add_nd_qu8:
30 return "Add (ND, QU8)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070031 case xnn_operator_type_argmax_pooling_nhwc_f32:
32 return "ArgMax Pooling (NHWC, F32)";
33 case xnn_operator_type_average_pooling_nhwc_f32:
34 return "Average Pooling (NHWC, F32)";
Marat Dukhan08b7a972020-07-14 18:17:29 -070035 case xnn_operator_type_average_pooling_nhwc_qu8:
36 return "Average Pooling (NHWC, QU8)";
Marat Dukhan64e52512020-06-09 13:41:16 -070037 case xnn_operator_type_bankers_rounding_nc_f32:
38 return "Bankers Rounding (NC, F32)";
39 case xnn_operator_type_ceiling_nc_f32:
40 return "Ceiling (NC, F32)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070041 case xnn_operator_type_channel_shuffle_nc_x8:
42 return "Channel Shuffle (NC, X8)";
Marat Dukhan139e9612021-08-09 09:03:07 -070043 case xnn_operator_type_channel_shuffle_nc_x32:
44 return "Channel Shuffle (NC, X32)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070045 case xnn_operator_type_clamp_nc_f32:
46 return "Clamp (NC, F32)";
Marat Dukhan61c0c9e2021-08-16 23:16:14 -070047 case xnn_operator_type_clamp_nc_s8:
48 return "Clamp (NC, S8)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070049 case xnn_operator_type_clamp_nc_u8:
50 return "Clamp (NC, U8)";
Marat Dukhan139e9612021-08-09 09:03:07 -070051 case xnn_operator_type_constant_pad_nd_x8:
52 return "Constant Pad (ND, X8)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070053 case xnn_operator_type_constant_pad_nd_x32:
54 return "Constant Pad (ND, X32)";
Marat Dukhanaf2ba002021-10-24 14:21:41 -070055 case xnn_operator_type_convert_nc_f16_f32:
56 return "Convert (NC, F16, F32)";
Marat Dukhana0c61682021-11-10 19:23:41 -080057 case xnn_operator_type_convert_nc_f32_f16:
58 return "Convert (NC, F32, F16)";
Frank Barchard49b4dcc2020-06-26 14:07:19 -070059 case xnn_operator_type_convolution_nhwc_f16:
60 return "Convolution (NHWC, F16)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070061 case xnn_operator_type_convolution_nhwc_f32:
62 return "Convolution (NHWC, F32)";
Marat Dukhan97262462021-06-18 16:14:17 -070063 case xnn_operator_type_convolution_nhwc_qc8:
64 return "Convolution (NHWC, QC8)";
Marat Dukhan16f1e1a2020-08-04 16:38:22 -070065 case xnn_operator_type_convolution_nhwc_qs8:
66 return "Convolution (NHWC, QS8)";
Marat Dukhan08b7a972020-07-14 18:17:29 -070067 case xnn_operator_type_convolution_nhwc_qu8:
68 return "Convolution (NHWC, QU8)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070069 case xnn_operator_type_convolution_nchw_f32:
70 return "Convolution (NCHW, F32)";
Marat Dukhan4e21b272020-06-04 18:45:01 -070071 case xnn_operator_type_copy_nc_x32:
72 return "Copy (NC, X32)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070073 case xnn_operator_type_deconvolution_nhwc_f32:
74 return "Deconvolution (NHWC, F32)";
Marat Dukhanbea849a2021-07-30 16:25:30 -070075 case xnn_operator_type_deconvolution_nhwc_qs8:
76 return "Deconvolution (NHWC, QS8)";
Marat Dukhan08b7a972020-07-14 18:17:29 -070077 case xnn_operator_type_deconvolution_nhwc_qu8:
78 return "Deconvolution (NHWC, QU8)";
Artsiom Ablavatskibbe85062020-11-05 14:07:37 -080079 case xnn_operator_type_depth_to_space_nchw2nhwc_x32:
Marat Dukhanbb781b62020-11-12 13:34:05 -080080 return "Depth To Space (NCHW2NHWC, X32)";
Marat Dukhan0e521172020-11-25 13:10:04 -080081 case xnn_operator_type_depth_to_space_nhwc_x32:
82 return "Depth To Space (NHWC, X32)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070083 case xnn_operator_type_divide_nd_f32:
84 return "Divide (ND, F32)";
Marat Dukhanb6bd4bc2020-12-01 17:01:40 -080085 case xnn_operator_type_elu_nc_f32:
86 return "ELU (NC, F32)";
Marat Dukhaneec00522021-09-15 00:01:41 -070087 case xnn_operator_type_elu_nc_qs8:
88 return "ELU (NC, QS8)";
Marat Dukhan64e52512020-06-09 13:41:16 -070089 case xnn_operator_type_floor_nc_f32:
90 return "Floor (NC, F32)";
Marat Dukhanddb3d162021-10-25 17:05:51 -070091 case xnn_operator_type_fully_connected_nc_f16:
92 return "Fully Connected (NC, F16)";
Marat Dukhan3b59de22020-06-03 20:15:19 -070093 case xnn_operator_type_fully_connected_nc_f32:
94 return "Fully Connected (NC, F32)";
Marat Dukhand23cb6e2021-04-01 01:18:58 -070095 case xnn_operator_type_fully_connected_nc_qs8:
96 return "Fully Connected (NC, QS8)";
Marat Dukhan08b7a972020-07-14 18:17:29 -070097 case xnn_operator_type_fully_connected_nc_qu8:
98 return "Fully Connected (NC, QU8)";
Frank Barchard7e2cbb02020-06-12 01:22:13 -070099 case xnn_operator_type_global_average_pooling_nwc_f16:
100 return "Global Average Pooling (NWC, F16)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700101 case xnn_operator_type_global_average_pooling_nwc_f32:
102 return "Global Average Pooling (NWC, F32)";
Marat Dukhan9e0b5392020-08-07 02:29:34 -0700103 case xnn_operator_type_global_average_pooling_nwc_qs8:
104 return "Global Average Pooling (NWC, QS8)";
Marat Dukhan08b7a972020-07-14 18:17:29 -0700105 case xnn_operator_type_global_average_pooling_nwc_qu8:
106 return "Global Average Pooling (NWC, QU8)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700107 case xnn_operator_type_global_average_pooling_ncw_f32:
108 return "Global Average Pooling (NCW, F32)";
Frank Barcharda96948e2020-09-11 15:34:18 -0700109 case xnn_operator_type_hardswish_nc_f16:
110 return "HardSwish (NC, F16)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700111 case xnn_operator_type_hardswish_nc_f32:
112 return "HardSwish (NC, F32)";
Marat Dukhan28813332020-06-10 18:05:38 -0700113 case xnn_operator_type_leaky_relu_nc_f32:
114 return "Leaky ReLU (NC, F32)";
Marat Dukhan08b7a972020-07-14 18:17:29 -0700115 case xnn_operator_type_leaky_relu_nc_qu8:
116 return "Leaky ReLU (NC, QU8)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700117 case xnn_operator_type_max_pooling_nhwc_f32:
118 return "Max Pooling (NHWC, F32)";
Marat Dukhandc5c1482021-08-16 09:03:15 -0700119 case xnn_operator_type_max_pooling_nhwc_s8:
120 return "Max Pooling (NHWC, S8)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700121 case xnn_operator_type_max_pooling_nhwc_u8:
122 return "Max Pooling (NHWC, U8)";
123 case xnn_operator_type_maximum_nd_f32:
124 return "Maximum (ND, F32)";
125 case xnn_operator_type_minimum_nd_f32:
126 return "Minimum (ND, F32)";
Frank Barchard0ea6a772020-09-09 15:26:31 -0700127 case xnn_operator_type_multiply_nd_f16:
128 return "Multiply (ND, F16)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700129 case xnn_operator_type_multiply_nd_f32:
130 return "Multiply (ND, F32)";
Marat Dukhan0853b8a2021-08-03 01:01:53 -0700131 case xnn_operator_type_multiply_nd_qs8:
132 return "Multiply (ND, QS8)";
133 case xnn_operator_type_multiply_nd_qu8:
134 return "Multiply (ND, QU8)";
Marat Dukhan5020b962020-06-08 13:30:10 -0700135 case xnn_operator_type_negate_nc_f32:
136 return "Negate (NC, F32)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700137 case xnn_operator_type_prelu_nc_f32:
138 return "PReLU (NC, F32)";
139 case xnn_operator_type_resize_bilinear_nhwc_f32:
140 return "Resize Bilinear (NHWC, F32)";
Artsiom Ablavatski97918102020-10-27 15:52:59 -0700141 case xnn_operator_type_resize_bilinear_nchw_f32:
142 return "Resize Bilinear (NCHW, F32)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700143 case xnn_operator_type_sigmoid_nc_f32:
144 return "Sigmoid (NC, F32)";
Marat Dukhan71a9bb12021-09-09 08:54:18 -0700145 case xnn_operator_type_sigmoid_nc_qs8:
146 return "Sigmoid (NC, QS8)";
Marat Dukhan08b7a972020-07-14 18:17:29 -0700147 case xnn_operator_type_sigmoid_nc_qu8:
148 return "Sigmoid (NC, QU8)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700149 case xnn_operator_type_softmax_nc_f32:
150 return "Softmax (NC, F32)";
Marat Dukhan08b7a972020-07-14 18:17:29 -0700151 case xnn_operator_type_softmax_nc_qu8:
152 return "Softmax (NC, QU8)";
Marat Dukhan5020b962020-06-08 13:30:10 -0700153 case xnn_operator_type_square_nc_f32:
154 return "Square (NC, F32)";
Marat Dukhan6804bbd2020-06-30 19:26:11 -0700155 case xnn_operator_type_square_root_nc_f32:
156 return "Square Root (NC, F32)";
Marat Dukhanf7399262020-06-05 10:58:44 -0700157 case xnn_operator_type_squared_difference_nd_f32:
158 return "Squared Difference (NC, F32)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700159 case xnn_operator_type_subtract_nd_f32:
160 return "Subtract (ND, F32)";
Marat Dukhan8e2fd202021-09-07 18:42:01 -0700161 case xnn_operator_type_subtract_nd_qs8:
162 return "Subtract (ND, QS8)";
163 case xnn_operator_type_subtract_nd_qu8:
164 return "Subtract (ND, QU8)";
Marat Dukhan5de7bc02021-09-09 19:04:01 -0700165 case xnn_operator_type_tanh_nc_qs8:
166 return "Tanh (NC, QS8)";
167 case xnn_operator_type_tanh_nc_qu8:
168 return "Tanh (NC, QU8)";
Marat Dukhan64e52512020-06-09 13:41:16 -0700169 case xnn_operator_type_truncation_nc_f32:
170 return "Truncation (NC, F32)";
Marat Dukhan3b59de22020-06-03 20:15:19 -0700171 case xnn_operator_type_unpooling_nhwc_x32:
172 return "Unpooling (NHWC, X32)";
173 }
174 XNN_UNREACHABLE;
175 return NULL;
176}
Marat Dukhan210e35d2020-06-04 02:45:57 -0700177#endif // XNN_LOG_LEVEL > 0