1 // 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
15 // This function is defined inline when logging is disabled
16 #if XNN_LOG_LEVEL > 0
xnn_operator_type_to_string(enum xnn_operator_type type)17 const char* xnn_operator_type_to_string(enum xnn_operator_type type) {
18 switch (type) {
19 case xnn_operator_type_invalid:
20 return "Invalid";
21 case xnn_operator_type_abs_nc_f32:
22 return "Abs (NC, F32)";
23 case xnn_operator_type_add_nd_f16:
24 return "Add (ND, F16)";
25 case xnn_operator_type_add_nd_f32:
26 return "Add (ND, F32)";
27 case xnn_operator_type_add_nd_qs8:
28 return "Add (ND, QS8)";
29 case xnn_operator_type_add_nd_qu8:
30 return "Add (ND, QU8)";
31 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)";
35 case xnn_operator_type_average_pooling_nhwc_qu8:
36 return "Average Pooling (NHWC, QU8)";
37 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)";
41 case xnn_operator_type_channel_shuffle_nc_x8:
42 return "Channel Shuffle (NC, X8)";
43 case xnn_operator_type_channel_shuffle_nc_x32:
44 return "Channel Shuffle (NC, X32)";
45 case xnn_operator_type_clamp_nc_f32:
46 return "Clamp (NC, F32)";
47 case xnn_operator_type_clamp_nc_s8:
48 return "Clamp (NC, S8)";
49 case xnn_operator_type_clamp_nc_u8:
50 return "Clamp (NC, U8)";
51 case xnn_operator_type_constant_pad_nd_x8:
52 return "Constant Pad (ND, X8)";
53 case xnn_operator_type_constant_pad_nd_x16:
54 return "Constant Pad (ND, X16)";
55 case xnn_operator_type_constant_pad_nd_x32:
56 return "Constant Pad (ND, X32)";
57 case xnn_operator_type_convert_nc_f16_f32:
58 return "Convert (NC, F16, F32)";
59 case xnn_operator_type_convert_nc_f32_f16:
60 return "Convert (NC, F32, F16)";
61 case xnn_operator_type_convert_nc_f32_qs8:
62 return "Convert (NC, F32, QS8)";
63 case xnn_operator_type_convert_nc_f32_qu8:
64 return "Convert (NC, F32, QU8)";
65 case xnn_operator_type_convert_nc_qs8_f32:
66 return "Convert (NC, QS8, F32)";
67 case xnn_operator_type_convert_nc_qu8_f32:
68 return "Convert (NC, QU8, F32)";
69 case xnn_operator_type_convolution_nhwc_f16:
70 return "Convolution (NHWC, F16)";
71 case xnn_operator_type_convolution_nhwc_f32:
72 return "Convolution (NHWC, F32)";
73 case xnn_operator_type_convolution_nhwc_qc8:
74 return "Convolution (NHWC, QC8)";
75 case xnn_operator_type_convolution_nhwc_qs8:
76 return "Convolution (NHWC, QS8)";
77 case xnn_operator_type_convolution_nhwc_qu8:
78 return "Convolution (NHWC, QU8)";
79 case xnn_operator_type_convolution_nchw_f32:
80 return "Convolution (NCHW, F32)";
81 case xnn_operator_type_copy_nc_x8:
82 return "Copy (NC, X8)";
83 case xnn_operator_type_copy_nc_x16:
84 return "Copy (NC, X16)";
85 case xnn_operator_type_copy_nc_x32:
86 return "Copy (NC, X32)";
87 case xnn_operator_type_deconvolution_nhwc_f32:
88 return "Deconvolution (NHWC, F32)";
89 case xnn_operator_type_deconvolution_nhwc_qs8:
90 return "Deconvolution (NHWC, QS8)";
91 case xnn_operator_type_deconvolution_nhwc_qu8:
92 return "Deconvolution (NHWC, QU8)";
93 case xnn_operator_type_depth_to_space_nchw2nhwc_x32:
94 return "Depth To Space (NCHW2NHWC, X32)";
95 case xnn_operator_type_depth_to_space_nhwc_x32:
96 return "Depth To Space (NHWC, X32)";
97 case xnn_operator_type_divide_nd_f32:
98 return "Divide (ND, F32)";
99 case xnn_operator_type_elu_nc_f32:
100 return "ELU (NC, F32)";
101 case xnn_operator_type_elu_nc_qs8:
102 return "ELU (NC, QS8)";
103 case xnn_operator_type_floor_nc_f32:
104 return "Floor (NC, F32)";
105 case xnn_operator_type_fully_connected_nc_f16:
106 return "Fully Connected (NC, F16)";
107 case xnn_operator_type_fully_connected_nc_f32:
108 return "Fully Connected (NC, F32)";
109 case xnn_operator_type_fully_connected_nc_qs8:
110 return "Fully Connected (NC, QS8)";
111 case xnn_operator_type_fully_connected_nc_qu8:
112 return "Fully Connected (NC, QU8)";
113 case xnn_operator_type_global_average_pooling_nwc_f16:
114 return "Global Average Pooling (NWC, F16)";
115 case xnn_operator_type_global_average_pooling_nwc_f32:
116 return "Global Average Pooling (NWC, F32)";
117 case xnn_operator_type_global_average_pooling_nwc_qs8:
118 return "Global Average Pooling (NWC, QS8)";
119 case xnn_operator_type_global_average_pooling_nwc_qu8:
120 return "Global Average Pooling (NWC, QU8)";
121 case xnn_operator_type_global_average_pooling_ncw_f32:
122 return "Global Average Pooling (NCW, F32)";
123 case xnn_operator_type_hardswish_nc_f16:
124 return "HardSwish (NC, F16)";
125 case xnn_operator_type_hardswish_nc_f32:
126 return "HardSwish (NC, F32)";
127 case xnn_operator_type_leaky_relu_nc_f32:
128 return "Leaky ReLU (NC, F32)";
129 case xnn_operator_type_leaky_relu_nc_qu8:
130 return "Leaky ReLU (NC, QU8)";
131 case xnn_operator_type_max_pooling_nhwc_f16:
132 return "Max Pooling (NHWC, F16)";
133 case xnn_operator_type_max_pooling_nhwc_f32:
134 return "Max Pooling (NHWC, F32)";
135 case xnn_operator_type_max_pooling_nhwc_s8:
136 return "Max Pooling (NHWC, S8)";
137 case xnn_operator_type_max_pooling_nhwc_u8:
138 return "Max Pooling (NHWC, U8)";
139 case xnn_operator_type_maximum_nd_f32:
140 return "Maximum (ND, F32)";
141 case xnn_operator_type_minimum_nd_f32:
142 return "Minimum (ND, F32)";
143 case xnn_operator_type_multiply_nd_f16:
144 return "Multiply (ND, F16)";
145 case xnn_operator_type_multiply_nd_f32:
146 return "Multiply (ND, F32)";
147 case xnn_operator_type_multiply_nd_qs8:
148 return "Multiply (ND, QS8)";
149 case xnn_operator_type_multiply_nd_qu8:
150 return "Multiply (ND, QU8)";
151 case xnn_operator_type_negate_nc_f32:
152 return "Negate (NC, F32)";
153 case xnn_operator_type_prelu_nc_f16:
154 return "PReLU (NC, F16)";
155 case xnn_operator_type_prelu_nc_f32:
156 return "PReLU (NC, F32)";
157 case xnn_operator_type_resize_bilinear_nhwc_f32:
158 return "Resize Bilinear (NHWC, F32)";
159 case xnn_operator_type_resize_bilinear_nhwc_s8:
160 return "Resize Bilinear (NHWC, S8)";
161 case xnn_operator_type_resize_bilinear_nhwc_u8:
162 return "Resize Bilinear (NHWC, U8)";
163 case xnn_operator_type_resize_bilinear_nchw_f32:
164 return "Resize Bilinear (NCHW, F32)";
165 case xnn_operator_type_sigmoid_nc_f32:
166 return "Sigmoid (NC, F32)";
167 case xnn_operator_type_sigmoid_nc_qs8:
168 return "Sigmoid (NC, QS8)";
169 case xnn_operator_type_sigmoid_nc_qu8:
170 return "Sigmoid (NC, QU8)";
171 case xnn_operator_type_softmax_nc_f32:
172 return "Softmax (NC, F32)";
173 case xnn_operator_type_softmax_nc_qu8:
174 return "Softmax (NC, QU8)";
175 case xnn_operator_type_square_nc_f32:
176 return "Square (NC, F32)";
177 case xnn_operator_type_square_root_nc_f32:
178 return "Square Root (NC, F32)";
179 case xnn_operator_type_squared_difference_nd_f32:
180 return "Squared Difference (NC, F32)";
181 case xnn_operator_type_subtract_nd_f32:
182 return "Subtract (ND, F32)";
183 case xnn_operator_type_subtract_nd_qs8:
184 return "Subtract (ND, QS8)";
185 case xnn_operator_type_subtract_nd_qu8:
186 return "Subtract (ND, QU8)";
187 case xnn_operator_type_tanh_nc_qs8:
188 return "Tanh (NC, QS8)";
189 case xnn_operator_type_tanh_nc_qu8:
190 return "Tanh (NC, QU8)";
191 case xnn_operator_type_truncation_nc_f32:
192 return "Truncation (NC, F32)";
193 case xnn_operator_type_unpooling_nhwc_x32:
194 return "Unpooling (NHWC, X32)";
195 }
196 XNN_UNREACHABLE;
197 return NULL;
198 }
199 #endif // XNN_LOG_LEVEL > 0
200