26 template<
typename Float32Func,
typename Uint8Func,
typename ... Params>
27 bool IsSupportedForDataTypeRef(Optional<std::string&> reasonIfUnsupported,
29 Float32Func floatFuncPtr,
30 Uint8Func uint8FuncPtr,
35 &FalseFunc<Params...>,
38 &FalseFunc<Params...>,
39 &FalseFunc<Params...>,
40 std::forward<Params>(params)...);
48 std::string CreateIncorrectDimensionsErrorMsg(
unsigned int expected,
50 std::string& layerStr,
51 std::string& tensorName)
53 std::string errorMsg =
"Reference " + layerStr +
": Expected " + std::to_string(expected) +
" dimensions but got" +
54 " " + std::to_string(actual) +
" dimensions instead, for the '" + tensorName +
"' tensor.";
62 const std::vector<TensorInfo>& infos,
73 *(PolymorphicDowncast<const ActivationDescriptor*>(&
descriptor)),
80 *(PolymorphicDowncast<const ArgMinMaxDescriptor*>(&
descriptor)),
86 *(PolymorphicDowncast<const BatchMatMulDescriptor*>(&
descriptor)),
95 *(PolymorphicDowncast<const BatchNormalizationDescriptor*>
101 *(PolymorphicDowncast<const BatchToSpaceNdDescriptor*>(&
descriptor)),
107 *(PolymorphicDowncast<const ComparisonDescriptor*>(&
descriptor)),
111 std::vector<const TensorInfo*> inputInfos;
112 for (uint32_t i = 0; i < (infos.size() - 1); i++)
114 inputInfos.push_back(&infos[i]);
117 infos[infos.size() - 1],
118 *(PolymorphicDowncast<const OriginsDescriptor*>(&
descriptor)),
129 if (infos.size() != 4)
132 "TensorInfos should be of format: {input, output, weights, biases}.");
135 auto desc = *(PolymorphicDowncast<const Convolution2dDescriptor*>(&
descriptor));
158 *(PolymorphicDowncast<const DepthToSpaceDescriptor*>(&
descriptor)),
162 if (infos.size() != 4)
165 "TensorInfos should be of format: {input, output, weights, biases}.");
168 auto desc = *(PolymorphicDowncast<const DepthwiseConvolution2dDescriptor*>(&
descriptor));
194 std::array<DataType, 7> supportedTypes =
204 bool supported =
true;
206 "Reference elementwise unary: input type not supported");
209 "Reference elementwise unary: input type not supported");
212 "Reference elementwise unary: output type not supported");
215 "Reference elementwise unary: input types not matching");
218 "Reference elementwise unary: input and output types not matching");
225 *(PolymorphicDowncast<const ElementwiseUnaryDescriptor*>(&
descriptor)),
230 *(PolymorphicDowncast<const FillDescriptor*>(&
descriptor)),
239 *(PolymorphicDowncast<const FullyConnectedDescriptor*>(&
descriptor)),
245 *(PolymorphicDowncast<const GatherDescriptor*>(&
descriptor)),
257 *(PolymorphicDowncast<const InstanceNormalizationDescriptor*>
263 *(PolymorphicDowncast<const L2NormalizationDescriptor*>(&
descriptor)),
269 *(PolymorphicDowncast<const LogicalBinaryDescriptor*>(&
descriptor)),
274 *(PolymorphicDowncast<const LogSoftmaxDescriptor*>(&
descriptor)),
284 *(PolymorphicDowncast<const LstmDescriptor*>(&
descriptor)),
285 lstmParamsInfo.
value(),
294 *(PolymorphicDowncast<const QLstmDescriptor*>(&
descriptor)),
295 lstmParamsInfo.
value(),
302 *(PolymorphicDowncast<const MeanDescriptor*>(&
descriptor)),
311 *(PolymorphicDowncast<const NormalizationDescriptor*>(&
descriptor)),
318 *(PolymorphicDowncast<const PadDescriptor*>(&
descriptor)),
323 *(PolymorphicDowncast<const PermuteDescriptor*>(&
descriptor)),
328 *(PolymorphicDowncast<const Pooling2dDescriptor*>(&
descriptor)),
337 *(PolymorphicDowncast<const ReshapeDescriptor*>(&
descriptor)),
342 *(PolymorphicDowncast<const ResizeDescriptor*>(&
descriptor)),
347 *(PolymorphicDowncast<const ReduceDescriptor*>(&
descriptor)),
352 *(PolymorphicDowncast<const SliceDescriptor*>(&
descriptor)),
357 *(PolymorphicDowncast<const SoftmaxDescriptor*>(&
descriptor)),
362 *(PolymorphicDowncast<const SpaceToBatchNdDescriptor*>(&
descriptor)),
367 *(PolymorphicDowncast<const SpaceToDepthDescriptor*>(&
descriptor)),
371 std::vector<TensorInfo> outputInfos;
372 for (uint32_t i = 1; i < infos.size(); i++)
374 outputInfos.push_back(infos[i]);
377 {outputInfos.begin(), outputInfos.end()},
378 *(PolymorphicDowncast<const ViewsDescriptor*>(&
descriptor)),
383 std::vector<const TensorInfo*> inputInfos;
384 for (uint32_t i = 0; i < infos.size() - 1; i++)
386 inputInfos.push_back(&infos[i]);
389 infos[infos.size() - 1],
390 *(PolymorphicDowncast<const StackDescriptor*>(&
descriptor)),
396 *(PolymorphicDowncast<const StridedSliceDescriptor*>(&
descriptor)),
403 *(PolymorphicDowncast<const TransposeDescriptor*>(&
descriptor)),
407 if (infos.size() != 4)
410 "TensorInfos should be of format: {input, output, weights, biases}.");
413 auto desc = *(PolymorphicDowncast<const TransposeConvolution2dDescriptor*>(&
descriptor));
438 *(PolymorphicDowncast<const ChannelShuffleDescriptor*>(&
descriptor)),
442 if (infos.size() != 4)
445 "TensorInfos should be of format: {input, output, weights, biases}.");
448 auto desc = *(PolymorphicDowncast<const Convolution3dDescriptor*>(&
descriptor));
478 *(PolymorphicDowncast<const DetectionPostProcessDescriptor*>
483 *(PolymorphicDowncast<const FakeQuantizationDescriptor*>(&
descriptor)),
493 if (infos.size() != 6)
496 "should be of format: {input, outputStateIn, cellStateIn, "
497 "hiddenStateOutputVal, cellStateOutputVal, output}");
499 auto desc = *(PolymorphicDowncast<const UnidirectionalSequenceLstmDescriptor*>(&
descriptor));
507 lstmParamsInfo.
value(),
513 *(PolymorphicDowncast<const Pooling3dDescriptor*>(&
descriptor)),
529 quantizedLstmInputParamsInfo.
value(),
543 bool supported =
true;
546 std::array<DataType,6> supportedTypes = {
555 "Reference activation: input type not supported.");
558 "Reference activation: output type not supported.");
561 "Reference activation: input and output types mismatched.");
564 "Reference activation: input and output shapes are of different rank.");
567 struct ActivationFunctionSupported :
public Rule
600 "Reference activation: function not supported.");
610 bool supported =
true;
612 std::array<DataType,7> supportedTypes = {
622 "Reference addition: input 0 is not a supported type.");
625 "Reference addition: input 1 is not a supported type.");
628 "Reference addition: output is not a supported type.");
631 "Reference addition: input 0 and Input 1 types are mismatched");
634 "Reference addition: input and output types are mismatched");
637 "Reference addition: shapes are not suitable for implicit broadcast.");
648 std::array<DataType, 8> supportedInputTypes =
659 std::array<DataType,2> supportedOutputTypes = {
664 bool supported =
true;
667 "Reference ArgMinMax: input is not a supported type.");
669 "Reference ArgMinMax: output type not supported");
682 std::array<DataType, 6> supportedTypes =
691 bool supported =
true;
694 "Reference batch matrix multiplication: input X is not a supported type");
697 "Reference batch matrix multiplication: input Y is not a supported type");
700 "Reference batch matrix multiplication: output is not a supported type");
703 "Reference batch matrix multiplication: input X and input Y types are mismatched");
706 "Reference batch matrix multiplication: inputs and output types are mismatched");
710 "Reference batch matrix multiplication: input X is not of rank 2 or greater");
714 "Reference batch matrix multiplication: input Y is not of rank 2 or greater");
730 std::array<DataType, 6> supportedTypes =
739 bool supported =
true;
742 "Reference batch normalization: input is not a supported type.");
745 "Reference batch normalization: output is not a supported type.");
748 "Reference batch normalization: input and output types are mismatched");
751 "Reference batch normalization: mean is not a supported type.");
754 "Reference batch normalization: variance is not a supported type.");
757 "Reference batch normalization: beta is not a supported type.");
760 "Reference batch normalization: gamma is not a supported type.");
772 bool supported =
true;
774 std::string batchToSpaceNdLayerStr =
"batchToSpaceNd";
775 std::string inputTensorStr =
"input";
776 std::string outputTensorStr =
"output";
779 std::array<DataType,6> supportedTypes =
789 "Reference BatchToSpaceNd: input type not supported.");
792 "Reference BatchToSpaceNd: output type not supported.");
795 "Reference BatchToSpaceNd: input and output types mismatched.");
799 CreateIncorrectDimensionsErrorMsg(4,
801 batchToSpaceNdLayerStr,
802 outputTensorStr).data());
806 CreateIncorrectDimensionsErrorMsg(4,
808 batchToSpaceNdLayerStr,
809 inputTensorStr).data());
818 std::array<DataType, 9> supportedInputTypes =
829 bool supported =
true;
831 "Reference cast: input is not a supported type");
835 "Reference cast: output is not a supported type");
838 "Reference cast: input and output shapes have different number of total elements");
849 bool supported =
true;
852 std::array<DataType, 7> supportedTypes =
863 "Reference ChannelShuffle: input is not a supported type.");
866 "Reference ChannelShuffle: output is not a supported type.");
869 "Reference ChannelShuffle: input and output types are mismatched.");
882 std::array<DataType, 8> supportedInputTypes =
893 bool supported =
true;
895 "Reference comparison: input 0 is not a supported type");
898 "Reference comparison: input 0 and Input 1 types are mismatched");
901 "Reference comparison: output is not of type Boolean");
913 bool supported =
true;
914 std::array<DataType,7> supportedTypes =
925 "Reference concatenation: output type not supported");
930 "Reference concatenation: input type not supported");
933 "Reference concatenation: input and output types mismatched.");
942 std::array<DataType,8> supportedTypes =
954 "Reference constant: output is not a supported type.");
964 &FalseInputFuncF32<>,
970 &FalseOutputFuncF16<>,
983 &FalseInputFuncF16<>,
991 &FalseOutputFuncF32<>,
1004 bool supported =
true;
1007 std::array<DataType,7> supportedTypes =
1018 "Reference Convolution2d: input is not a supported type.");
1021 "Reference Convolution2d: output is not a supported type.");
1024 "Reference Convolution2d: input and output types mismatched.");
1030 std::array<DataType, 3> supportedWeightTypes =
1038 "Reference Convolution2d: weights type not supported for quantized input.");
1043 "Reference Convolution2d: weights is not a supported type.");
1046 "Reference Convolution2d: input and weights types mismatched.");
1051 std::array<DataType,4> biasesSupportedTypes =
1059 "Reference Convolution2d: biases is not a supported type.");
1073 bool supported =
true;
1076 std::array<DataType,7> supportedTypes =
1087 "Reference Convolution3d: input is not a supported type.");
1090 "Reference Convolution3d: output is not a supported type.");
1093 "Reference Convolution3d: input and output types mismatched.");
1098 std::array<DataType, 3> supportedWeightTypes =
1106 "Reference Convolution3d: weights type not supported for quantized input.");
1111 "Reference Convolution3d: weights is not a supported type.");
1114 "Reference Convolution3d: input and weights types mismatched.");
1119 std::array<DataType,4> biasesSupportedTypes =
1127 "Reference Convolution3d: biases is not a supported type.");
1138 bool supported =
true;
1140 std::array<DataType, 8> supportedTypes =
1153 "Reference for Debug layer: input type not supported");
1156 "Reference for Debug layer: output type not supported");
1159 "Reference for Debug layer: input and output types are mismatched");
1170 bool supported =
true;
1172 std::array<DataType,6> supportedTypes =
1182 "Reference DepthToSpace: input type not supported");
1185 "Reference DepthToSpace: output type not supported");
1188 "Reference DepthToSpace: input and output types are mismatched");
1201 bool supported =
true;
1204 std::array<DataType,7> supportedTypes =
1215 "Reference DepthwiseConvolution2d: input is not a supported type.");
1218 "Reference DepthwiseConvolution2d: output is not a supported type.");
1221 "Reference DepthwiseConvolution2d: input and output types mismatched.");
1226 std::array<DataType, 3> supportedWeightTypes =
1234 "Reference DepthwiseConvolution2d: weights type not supported for "
1235 "quantized input.");
1240 "Reference DepthwiseConvolution2d: weights is not a supported type.");
1243 "Reference DepthwiseConvolution2d: input and weights types mismatched.");
1248 std::array<DataType,4> biasesSupportedTypes =
1255 "Reference DepthwiseConvolution2d: biases is not a supported type.");
1266 bool supported =
true;
1268 std::array<DataType,5> supportedInputTypes = {
1277 "Reference for Dequantize layer: input type not supported.");
1280 "Reference for Dequantize layer: per-axis quantized input not supported.");
1282 std::array<DataType,3> supportedOutputTypes = {
1288 "Reference for Dequantize layer: output type not supported.");
1291 "Reference for Dequantize layer: input/output shapes have different num total "
1309 bool supported =
true;
1311 std::array<DataType,6> supportedInputTypes =
1321 "Reference DetectionPostProcess: input 0 is not a supported type.");
1324 "Reference DetectionPostProcess: input 1 is not a supported type.");
1344 bool supported =
true;
1346 std::array<DataType,7> supportedTypes = {
1356 "Reference division: input 0 is not a supported type.");
1359 "Reference division: input 1 is not a supported type.");
1362 "Reference division: output is not a supported type.");
1365 "Reference division: input 0 and Input 1 types are mismatched");
1368 "Reference division: input and output types are mismatched");
1371 "Reference division: shapes are not suitable for implicit broadcast.");
1383 std::array<DataType, 7> supportedTypes =
1393 std::array<DataType, 1> logicalSupportedTypes =
1398 bool supported =
true;
1403 "Reference elementwise unary: input type not supported");
1406 "Reference elementwise unary: output type not supported");
1411 "Reference elementwise unary: input type not supported");
1414 "Reference elementwise unary: output type not supported");
1418 "Reference elementwise unary: input and output types not matching");
1421 "Reference elementwise unary: input and output shapes"
1422 "have different number of total elements");
1432 bool supported =
true;
1434 std::array<DataType,1> supportedTypes =
1440 "Reference fake quantization: input type not supported.");
1453 bool supported =
true;
1455 std::array<DataType,3> supportedTypes =
1463 "Reference Fill: input type not supported.");
1466 "Reference Fill: output type not supported.");
1475 bool supported =
true;
1477 std::array<DataType,3> supportedTypes =
1484 "Reference Floor: input type not supported.");
1487 "Reference Floor: output type not supported.");
1499 bool supported =
true;
1502 std::array<DataType,6> supportedTypes =
1512 "Reference Fully Connected: input type not supported.");
1515 "Reference Fully Connected: output type not supported.");
1518 "Reference Fully Connected: weights type not supported.");
1521 "Reference Fully Connected: input and output types mismatched.");
1524 "Reference Fully Connected: weights is not a supported type.");
1527 "Reference Fully Connected: input and weights types mismatched.");
1532 std::array<DataType, 5>
1533 supportedBiasTypes =
1542 "Reference Fully Connected: bias type not supported.");
1545 "Reference Fully Connected: bias and weight types mismatch.");
1548 "Reference Fully Connected: bias type inferred from weights is incompatible.");
1551 "Reference Fully Connected: bias must have 1 dimension.");
1563 bool supported =
true;
1564 std::array<DataType,7> supportedTypes =
1575 "Reference GatherNd: input type not supported");
1578 "Reference GatherNd: output type not supported");
1581 "Reference GatherNd: indices (input1) type not supported");
1584 "Reference GatherNd: input and output types not matching");
1595 bool supported =
true;
1596 std::array<DataType,7> supportedTypes =
1608 "Reference Gather: input type not supported");
1611 "Reference Gather: output type not supported");
1614 "Reference Gather: indices (input1) type not supported");
1617 "Reference Gather: input and output types not matching");
1635 std::array<DataType, 3> supportedTypes =
1641 bool supported =
true;
1644 "Reference Instance Normalization: input type not supported.");
1647 "Reference Instance Normalization: output type not supported.");
1650 "Reference Instance Normalization: input and output types mismatched.");
1653 "Reference Instance Normalization: input and output shapes have different "
1654 "num total elements.");
1666 std::array<DataType, 6> supportedTypes =
1675 bool supported =
true;
1678 "Reference L2normalization: input type not supported.");
1681 "Reference L2normalization: output type not supported.");
1684 "Reference L2normalization: input and output types mismatched.");
1687 "Reference L2normalization: input and output shapes have different "
1688 "num total elements.");
1701 std::array<DataType, 1> supportedTypes =
1706 bool supported =
true;
1708 "Reference LogicalBinary: input 0 type not supported");
1710 "Reference LogicalBinary: input 1 type not supported");
1713 "Reference LogicalBinary: input and output types do not match");
1725 std::array<DataType, 3> supportedTypes =
1731 bool supported =
true;
1733 "Reference LogSoftmax: input type not supported");
1736 "Reference LogSoftmax: output type not supported");
1739 "Reference LogSoftmax: input and output types do not match");
1758 bool supported =
true;
1760 std::array<DataType,3> supportedTypes = {
1767 "Reference Lstm: input is not a supported type.");
1769 "Reference Lstm: input and outputStateIn types are mismatched");
1771 "Reference Lstm: input and cellStateIn types are mismatched");
1773 "Reference Lstm: input and scratchBuffer types are mismatched");
1775 "Reference Lstm: input and outputStateOut types are mismatched");
1777 "Reference Lstm: input and cellStateOut types are mismatched");
1780 "Reference Lstm: input and output types are mismatched");
1783 "Reference Lstm: input and InputToForgetWeights types are mismatched");
1785 "Reference Lstm: input and InputToCellWeights types are mismatched");
1787 "Reference Lstm: input and InputToOutputWeights types are mismatched");
1789 "Reference Lstm: input and RecurrentToForgetWeights types are mismatched");
1791 "Reference Lstm: input and RecurrentToCellWeights types are mismatched");
1793 "Reference Lstm: input and RecurrentToOutputWeights types are mismatched");
1795 "Reference Lstm: input and ForgetGateBias types are mismatched");
1797 "Reference Lstm: input and CellBias types are mismatched");
1799 "Reference Lstm: input and OutputGateBias types are mismatched");
1803 "Reference Lstm: input and InputToInputWeights types are mismatched");
1806 "Reference Lstm: input and RecurrentToInputWeights types are mismatched");
1808 "Reference Lstm: input and InputGateBias types are mismatched");
1813 "Reference Lstm: input and CellToInputWeights types are mismatched");
1819 "Reference Lstm: input and CellToForgetWeights types are mismatched");
1821 "Reference Lstm: input and CellToOutputWeights types are mismatched");
1826 "Reference Lstm: input and mProjectionWeights types are mismatched");
1830 "Reference Lstm: input and ProjectionBias types are mismatched");
1839 "Reference Lstm: input and InputLayerNormWeights types are mismatched");
1843 "Reference Lstm: input and ForgetLayerNormWeights types are mismatched");
1846 "Reference Lstm: input and CellLayerNormWeights types are mismatched");
1849 "Reference Lstm: input and OutputLayerNormWeights types are mismatched");
1860 bool supported =
true;
1862 std::array<DataType,7> supportedTypes = {
1872 "Reference maximum: input 0 is not a supported type.");
1875 "Reference maximum: input 1 is not a supported type.");
1878 "Reference maximum: output is not a supported type.");
1881 "Reference maximum: input 0 and Input 1 types are mismatched");
1884 "Reference maximum: input and output types are mismatched");
1887 "Reference maximum: shapes are not suitable for implicit broadcast.");
1897 bool supported =
true;
1898 std::string meanLayerStr =
"Mean";
1899 std::string outputTensorStr =
"output";
1901 std::array<DataType,6> supportedTypes =
1911 "Reference Mean: input type not supported.");
1914 "Reference Mean: input and output types are mismatched");
1922 meanLayerStr, outputTensorStr).data());
1929 meanLayerStr, outputTensorStr).data());
1940 meanLayerStr, outputTensorStr).data());
1947 meanLayerStr, outputTensorStr).data());
1958 bool supported =
true;
1960 std::array<DataType,7> supportedTypes =
1972 "Reference MemCopy: input type not supported");
1975 "Reference MemCopy: output type not supported");
1978 "Reference MemCopy: input and output types are mismatched");
1988 bool supported =
true;
1990 std::array<DataType,7> supportedTypes = {
2000 "Reference minimum: input 0 is not a supported type.");
2003 "Reference minimum: input 1 is not a supported type.");
2006 "Reference minimum: output is not a supported type.");
2009 "Reference minimum: input 0 and Input 1 types are mismatched");
2012 "Reference minimum: input and output types are mismatched");
2015 "Reference minimum: shapes are not suitable for implicit broadcast.");
2025 bool supported =
true;
2027 std::array<DataType,7> supportedTypes = {
2037 "Reference multiplication: input 0 is not a supported type.");
2040 "Reference multiplication: input 1 is not a supported type.");
2043 "Reference multiplication: output is not a supported type.");
2046 "Reference multiplication: input 0 and Input 1 types are mismatched");
2049 "Reference multiplication: input and output types are mismatched");
2052 "Reference multiplication: shapes are not suitable for implicit broadcast.");
2065 std::array<DataType, 6> supportedTypes =
2074 bool supported =
true;
2077 "Reference normalization: input type not supported.");
2080 "Reference normalization: output type not supported.");
2083 "Reference normalization: input and output shapes have different "
2084 "num total elements.");
2101 bool supported =
true;
2104 std::array<DataType,6> supportedTypes =
2114 "Reference pad: input is not a supported type.");
2117 "Reference pad: output is not a supported type.");
2120 "Reference pad: input and output types are mismatched.");
2131 bool supported =
true;
2134 std::array<DataType, 6> supportedTypes =
2145 "Reference permute: input is not a supported type.");
2148 "Reference permute: output is not a supported type.");
2151 "Reference permute: input and output types are mismatched.");
2162 bool supported =
true;
2165 std::array<DataType,6> supportedTypes =
2175 "Reference poolind2d: input is not a supported type.");
2178 "Reference poolind2d: output is not a supported type.");
2181 "Reference poolind2d: input and output types are mismatched.");
2192 bool supported =
true;
2195 std::array<DataType,6> supportedTypes =
2205 "Reference poolind3d: input is not a supported type.");
2208 "Reference poolind3d: output is not a supported type.");
2211 "Reference poolind3d: input and output types are mismatched.");
2245 bool supported =
true;
2248 std::array<DataType,7> supportedInputTypes = {
2258 "Reference quantize: input type not supported.");
2261 std::array<DataType,4> supportedOutputTypes = {
2268 "Reference quantize: output type not supported.");
2271 "Reference quantize: input and output shapes have different num total elements.");
2282 std::array<DataType,1> supportedOutputTypes =
2288 "Reference rank: input type not supported.");
2297 bool supported =
true;
2298 std::array<DataType,7> supportedTypes =
2309 "Reference Reduce: input type not supported");
2312 "Reference Reduce: output type not supported");
2315 "Reference Reduce: input and output types not matching");
2328 std::array<DataType,8> supportedOutputTypes =
2341 "Reference reshape: input type not supported.");
2350 bool supported =
true;
2351 std::array<DataType,6> supportedTypes =
2362 "Reference Resize: input type not supported");
2365 "Reference Resize: output type not supported");
2368 "Reference Resize: input and output types not matching");
2378 bool supported =
true;
2380 std::array<DataType, 1> supportedTypes =
2386 "Reference Shape: output type not supported");
2397 bool supported =
true;
2399 std::array<DataType, 5> supportedTypes =
2408 "Reference Slice: input type not supported");
2411 "Reference Slice: output type not supported");
2414 "Reference Slice: input and output types are mismatched");
2425 bool supported =
true;
2426 std::array<DataType,7> supportedTypes =
2437 "Reference Softmax: output type not supported");
2440 "Reference Softmax: input type not supported");
2443 "Reference Softmax: input type not supported");
2454 bool supported =
true;
2455 std::array<DataType,6> supportedTypes =
2465 "Reference SpaceToBatchNd: input type not supported");
2468 "Reference SpaceToBatchNd: output type not supported");
2471 "Reference SpaceToBatchNd: input and output types are mismatched");
2483 bool supported =
true;
2485 std::array<DataType,6> supportedTypes =
2495 "Reference SpaceToDepth: input type not supported");
2498 "Reference SpaceToDepth: output type not supported");
2501 "Reference SpaceToDepth: input and output types are mismatched");
2507 const std::vector<std::reference_wrapper<TensorInfo>>& outputs,
2512 bool supported =
true;
2513 std::array<DataType,6> supportedTypes =
2523 "Reference splitter: output type not supported");
2527 "Reference splitter: input type not supported");
2530 "Reference splitter: input and output types mismatched.");
2543 bool supported =
true;
2544 std::array<DataType,7> supportedTypes =
2555 "Reference stack: output type not supported");
2560 "Reference stack: input type not supported");
2563 "Reference stack: input and output types mismatched.");
2575 bool supported =
true;
2577 std::array<DataType,5> supportedTypes =
2586 "Reference StridedSlice: input type not supported");
2589 "Reference StridedSlice: output type not supported");
2592 "Reference StridedSlice: input and output types are mismatched");
2602 bool supported =
true;
2604 std::array<DataType,7> supportedTypes = {
2614 "Reference subtraction: input 0 is not a supported type.");
2617 "Reference subtraction: input 1 is not a supported type.");
2620 "Reference subtraction: output is not a supported type.");
2623 "Reference subtraction: input 0 and Input 1 types are mismatched");
2626 "Reference subtraction: input and output types are mismatched");
2629 "Reference subtraction: shapes are not suitable for implicit broadcast.");
2639 bool supported =
true;
2641 std::array<DataType, 6> supportedTypes
2651 "PReLU: input is not a supported type.");
2654 "PReLU: alpha is not a supported type.");
2657 "PReLU: output is not a supported type.");
2660 "PReLU: input, alpha and output types are mismatched");
2663 "PReLU: shapes are not suitable for implicit broadcast");
2676 bool supported =
true;
2678 std::array<DataType,7> supportedTypes =
2689 "Reference TransposeConvolution2d: input is not a supported type.");
2692 "Reference TransposeConvolution2d: output is not a supported type.");
2695 "Reference TransposeConvolution2d: input and output types mismatched.");
2701 std::array<DataType, 3> supportedWeightTypes =
2709 "Reference TransposeConvolution2d: weights type not supported for "
2710 "quantized input.");
2715 "Reference TransposeConvolution2d: weights is not a supported type.");
2718 "Reference TransposeConvolution2d: input and weights types mismatched.");
2723 std::array<DataType,4> biasesSupportedTypes =
2730 "Reference TransposeConvolution2d: biases is not a supported type.");
2742 bool supported =
true;
2745 std::array<DataType, 6> supportedTypes =
2756 "Reference transpose: input is not a supported type.");
2759 "Reference transpose: output is not a supported type.");
2762 "Reference transpose: input and output types are mismatched.");
2784 bool supported =
true;
2786 std::array<DataType, 2> supportedTypes =
2792 std::array<DataType, 2> supportedWeightTypes =
2798 std::array<DataType, 3> supportedBiasTypes =
2807 "Reference UnidirectionalSequenceLstm: input is not a supported type.");
2809 "Reference UnidirectionalSequenceLstm: output is not a supported type.");
2814 "Reference UnidirectionalSequenceLstm: InputToForgetWeights "
2815 "is not a supported type.");
2818 "Reference UnidirectionalSequenceLstm: InputToCellWeights is not a supported type.");
2821 "Reference UnidirectionalSequenceLstm: InputToOutputWeights "
2822 "is not a supported type.");
2825 "Reference UnidirectionalSequenceLstm: RecurrentToForgetWeights "
2826 "is not a supported type.");
2829 "Reference UnidirectionalSequenceLstm: RecurrentToCellWeights "
2830 "is not a supported type.");
2833 "Reference UnidirectionalSequenceLstm: RecurrentToOutputWeights "
2834 "is not a supported type.");
2837 "Reference UnidirectionalSequenceLstm: ForgetGateBias is not a supported type.");
2839 "Reference UnidirectionalSequenceLstm: CellBias is not a supported type.");
2841 "Reference UnidirectionalSequenceLstm: OutputGateBias is not a supported type.");
2846 "Reference UnidirectionalSequenceLstm: InputToInputWeights "
2847 "is not a supported type.");
2850 "Reference UnidirectionalSequenceLstm: RecurrentToInputWeights "
2851 "is not a supported type.");
2853 "Reference UnidirectionalSequenceLstm: InputGateBias is not a supported type.");
2858 "Reference UnidirectionalSequenceLstm: CellToInputWeights "
2859 "is not a supported type.");
2866 "Reference UnidirectionalSequenceLstm: CellToForgetWeights "
2867 "is not a supported type.");
2870 "Reference UnidirectionalSequenceLstm: CellToOutputWeights "
2871 "is not a supported type.");
2877 "Reference UnidirectionalSequenceLstm: ProjectionWeights "
2878 "is not a supported type.");
2882 "Reference UnidirectionalSequenceLstm: input and ProjectionBias types "
2892 "Reference UnidirectionalSequenceLstm: InputLayerNormWeights "
2893 "is not a supported type.");
2897 "Reference UnidirectionalSequenceLstm: ForgetLayerNormWeights "
2898 "is not a supported type.");
2901 "Reference UnidirectionalSequenceLstm: CellLayerNormWeights "
2902 "is not a supported type.");
2905 "Reference UnidirectionalSequenceLstm: OutputLayerNormWeights "
2906 "is not a supported type.");