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));
195 *(PolymorphicDowncast<const ElementwiseUnaryDescriptor*>(&
descriptor)),
200 *(PolymorphicDowncast<const FillDescriptor*>(&
descriptor)),
209 *(PolymorphicDowncast<const FullyConnectedDescriptor*>(&
descriptor)),
215 *(PolymorphicDowncast<const GatherDescriptor*>(&
descriptor)),
227 *(PolymorphicDowncast<const InstanceNormalizationDescriptor*>
233 *(PolymorphicDowncast<const L2NormalizationDescriptor*>(&
descriptor)),
239 *(PolymorphicDowncast<const LogicalBinaryDescriptor*>(&
descriptor)),
244 *(PolymorphicDowncast<const LogSoftmaxDescriptor*>(&
descriptor)),
254 *(PolymorphicDowncast<const LstmDescriptor*>(&
descriptor)),
255 lstmParamsInfo.
value(),
264 *(PolymorphicDowncast<const QLstmDescriptor*>(&
descriptor)),
265 lstmParamsInfo.
value(),
272 *(PolymorphicDowncast<const MeanDescriptor*>(&
descriptor)),
281 *(PolymorphicDowncast<const NormalizationDescriptor*>(&
descriptor)),
288 *(PolymorphicDowncast<const PadDescriptor*>(&
descriptor)),
293 *(PolymorphicDowncast<const PermuteDescriptor*>(&
descriptor)),
298 *(PolymorphicDowncast<const Pooling2dDescriptor*>(&
descriptor)),
307 *(PolymorphicDowncast<const ReshapeDescriptor*>(&
descriptor)),
312 *(PolymorphicDowncast<const ResizeDescriptor*>(&
descriptor)),
317 *(PolymorphicDowncast<const ReduceDescriptor*>(&
descriptor)),
322 *(PolymorphicDowncast<const SliceDescriptor*>(&
descriptor)),
327 *(PolymorphicDowncast<const SoftmaxDescriptor*>(&
descriptor)),
332 *(PolymorphicDowncast<const SpaceToBatchNdDescriptor*>(&
descriptor)),
337 *(PolymorphicDowncast<const SpaceToDepthDescriptor*>(&
descriptor)),
341 std::vector<TensorInfo> outputInfos;
342 for (uint32_t i = 1; i < infos.size(); i++)
344 outputInfos.push_back(infos[i]);
347 {outputInfos.begin(), outputInfos.end()},
348 *(PolymorphicDowncast<const ViewsDescriptor*>(&
descriptor)),
353 std::vector<const TensorInfo*> inputInfos;
354 for (uint32_t i = 0; i < infos.size() - 1; i++)
356 inputInfos.push_back(&infos[i]);
359 infos[infos.size() - 1],
360 *(PolymorphicDowncast<const StackDescriptor*>(&
descriptor)),
366 *(PolymorphicDowncast<const StridedSliceDescriptor*>(&
descriptor)),
373 *(PolymorphicDowncast<const TransposeDescriptor*>(&
descriptor)),
377 if (infos.size() != 4)
380 "TensorInfos should be of format: {input, output, weights, biases}.");
383 auto desc = *(PolymorphicDowncast<const TransposeConvolution2dDescriptor*>(&
descriptor));
408 *(PolymorphicDowncast<const ChannelShuffleDescriptor*>(&
descriptor)),
412 if (infos.size() != 4)
415 "TensorInfos should be of format: {input, output, weights, biases}.");
418 auto desc = *(PolymorphicDowncast<const Convolution3dDescriptor*>(&
descriptor));
448 *(PolymorphicDowncast<const DetectionPostProcessDescriptor*>
453 *(PolymorphicDowncast<const FakeQuantizationDescriptor*>(&
descriptor)),
463 if (infos.size() != 6)
466 "should be of format: {input, outputStateIn, cellStateIn, "
467 "hiddenStateOutputVal, cellStateOutputVal, output}");
469 auto desc = *(PolymorphicDowncast<const UnidirectionalSequenceLstmDescriptor*>(&
descriptor));
477 lstmParamsInfo.
value(),
483 *(PolymorphicDowncast<const Pooling3dDescriptor*>(&
descriptor)),
499 quantizedLstmInputParamsInfo.
value(),
513 bool supported =
true;
516 std::array<DataType,6> supportedTypes = {
525 "Reference activation: input type not supported.");
528 "Reference activation: output type not supported.");
531 "Reference activation: input and output types mismatched.");
534 "Reference activation: input and output shapes are of different rank.");
537 struct ActivationFunctionSupported :
public Rule
570 "Reference activation: function not supported.");
580 bool supported =
true;
582 std::array<DataType,7> supportedTypes = {
592 "Reference addition: input 0 is not a supported type.");
595 "Reference addition: input 1 is not a supported type.");
598 "Reference addition: output is not a supported type.");
601 "Reference addition: input 0 and Input 1 types are mismatched");
604 "Reference addition: input and output types are mismatched");
607 "Reference addition: shapes are not suitable for implicit broadcast.");
618 std::array<DataType, 8> supportedInputTypes =
629 std::array<DataType,2> supportedOutputTypes = {
634 bool supported =
true;
637 "Reference ArgMinMax: input is not a supported type.");
639 "Reference ArgMinMax: output type not supported");
652 std::array<DataType, 6> supportedTypes =
661 bool supported =
true;
664 "Reference batch matrix multiplication: input X is not a supported type");
667 "Reference batch matrix multiplication: input Y is not a supported type");
670 "Reference batch matrix multiplication: output is not a supported type");
673 "Reference batch matrix multiplication: input X and input Y types are mismatched");
676 "Reference batch matrix multiplication: inputs and output types are mismatched");
680 "Reference batch matrix multiplication: input X is not of rank 2 or greater");
684 "Reference batch matrix multiplication: input Y is not of rank 2 or greater");
700 std::array<DataType, 6> supportedTypes =
709 bool supported =
true;
712 "Reference batch normalization: input is not a supported type.");
715 "Reference batch normalization: output is not a supported type.");
718 "Reference batch normalization: input and output types are mismatched");
721 "Reference batch normalization: mean is not a supported type.");
724 "Reference batch normalization: variance is not a supported type.");
727 "Reference batch normalization: beta is not a supported type.");
730 "Reference batch normalization: gamma is not a supported type.");
742 bool supported =
true;
744 std::string batchToSpaceNdLayerStr =
"batchToSpaceNd";
745 std::string inputTensorStr =
"input";
746 std::string outputTensorStr =
"output";
749 std::array<DataType,6> supportedTypes =
759 "Reference BatchToSpaceNd: input type not supported.");
762 "Reference BatchToSpaceNd: output type not supported.");
765 "Reference BatchToSpaceNd: input and output types mismatched.");
769 CreateIncorrectDimensionsErrorMsg(4,
771 batchToSpaceNdLayerStr,
772 outputTensorStr).data());
776 CreateIncorrectDimensionsErrorMsg(4,
778 batchToSpaceNdLayerStr,
779 inputTensorStr).data());
788 std::array<DataType, 9> supportedInputTypes =
799 bool supported =
true;
801 "Reference cast: input is not a supported type");
805 "Reference cast: output is not a supported type");
808 "Reference cast: input and output shapes have different number of total elements");
819 bool supported =
true;
822 std::array<DataType, 7> supportedTypes =
833 "Reference ChannelShuffle: input is not a supported type.");
836 "Reference ChannelShuffle: output is not a supported type.");
839 "Reference ChannelShuffle: input and output types are mismatched.");
852 std::array<DataType, 8> supportedInputTypes =
863 bool supported =
true;
865 "Reference comparison: input 0 is not a supported type");
868 "Reference comparison: input 0 and Input 1 types are mismatched");
871 "Reference comparison: output is not of type Boolean");
883 bool supported =
true;
884 std::array<DataType,7> supportedTypes =
895 "Reference concatenation: output type not supported");
900 "Reference concatenation: input type not supported");
903 "Reference concatenation: input and output types mismatched.");
912 std::array<DataType,8> supportedTypes =
924 "Reference constant: output is not a supported type.");
934 &FalseInputFuncF32<>,
940 &FalseOutputFuncF16<>,
953 &FalseInputFuncF16<>,
961 &FalseOutputFuncF32<>,
974 bool supported =
true;
977 std::array<DataType,7> supportedTypes =
988 "Reference Convolution2d: input is not a supported type.");
991 "Reference Convolution2d: output is not a supported type.");
994 "Reference Convolution2d: input and output types mismatched.");
1000 std::array<DataType, 3> supportedWeightTypes =
1008 "Reference Convolution2d: weights type not supported for quantized input.");
1013 "Reference Convolution2d: weights is not a supported type.");
1016 "Reference Convolution2d: input and weights types mismatched.");
1021 std::array<DataType,4> biasesSupportedTypes =
1029 "Reference Convolution2d: biases is not a supported type.");
1043 bool supported =
true;
1046 std::array<DataType,7> supportedTypes =
1057 "Reference Convolution3d: input is not a supported type.");
1060 "Reference Convolution3d: output is not a supported type.");
1063 "Reference Convolution3d: input and output types mismatched.");
1068 std::array<DataType, 3> supportedWeightTypes =
1076 "Reference Convolution3d: weights type not supported for quantized input.");
1081 "Reference Convolution3d: weights is not a supported type.");
1084 "Reference Convolution3d: input and weights types mismatched.");
1089 std::array<DataType,4> biasesSupportedTypes =
1097 "Reference Convolution3d: biases is not a supported type.");
1108 bool supported =
true;
1110 std::array<DataType, 8> supportedTypes =
1123 "Reference for Debug layer: input type not supported");
1126 "Reference for Debug layer: output type not supported");
1129 "Reference for Debug layer: input and output types are mismatched");
1140 bool supported =
true;
1142 std::array<DataType,6> supportedTypes =
1152 "Reference DepthToSpace: input type not supported");
1155 "Reference DepthToSpace: output type not supported");
1158 "Reference DepthToSpace: input and output types are mismatched");
1171 bool supported =
true;
1174 std::array<DataType,7> supportedTypes =
1185 "Reference DepthwiseConvolution2d: input is not a supported type.");
1188 "Reference DepthwiseConvolution2d: output is not a supported type.");
1191 "Reference DepthwiseConvolution2d: input and output types mismatched.");
1196 std::array<DataType, 3> supportedWeightTypes =
1204 "Reference DepthwiseConvolution2d: weights type not supported for "
1205 "quantized input.");
1210 "Reference DepthwiseConvolution2d: weights is not a supported type.");
1213 "Reference DepthwiseConvolution2d: input and weights types mismatched.");
1218 std::array<DataType,4> biasesSupportedTypes =
1225 "Reference DepthwiseConvolution2d: biases is not a supported type.");
1236 bool supported =
true;
1238 std::array<DataType,5> supportedInputTypes = {
1247 "Reference for Dequantize layer: input type not supported.");
1250 "Reference for Dequantize layer: per-axis quantized input not supported.");
1252 std::array<DataType,3> supportedOutputTypes = {
1258 "Reference for Dequantize layer: output type not supported.");
1261 "Reference for Dequantize layer: input/output shapes have different num total "
1279 bool supported =
true;
1281 std::array<DataType,6> supportedInputTypes =
1291 "Reference DetectionPostProcess: input 0 is not a supported type.");
1294 "Reference DetectionPostProcess: input 1 is not a supported type.");
1314 bool supported =
true;
1316 std::array<DataType,7> supportedTypes = {
1326 "Reference division: input 0 is not a supported type.");
1329 "Reference division: input 1 is not a supported type.");
1332 "Reference division: output is not a supported type.");
1335 "Reference division: input 0 and Input 1 types are mismatched");
1338 "Reference division: input and output types are mismatched");
1341 "Reference division: shapes are not suitable for implicit broadcast.");
1353 std::array<DataType, 7> supportedTypes =
1363 std::array<DataType, 1> logicalSupportedTypes =
1368 bool supported =
true;
1373 "Reference elementwise unary: input type not supported");
1376 "Reference elementwise unary: output type not supported");
1381 "Reference elementwise unary: input type not supported");
1384 "Reference elementwise unary: output type not supported");
1388 "Reference elementwise unary: input and output types not matching");
1391 "Reference elementwise unary: input and output shapes"
1392 "have different number of total elements");
1402 bool supported =
true;
1404 std::array<DataType,1> supportedTypes =
1410 "Reference fake quantization: input type not supported.");
1423 bool supported =
true;
1425 std::array<DataType,3> supportedTypes =
1433 "Reference Fill: input type not supported.");
1436 "Reference Fill: output type not supported.");
1445 bool supported =
true;
1447 std::array<DataType,3> supportedTypes =
1454 "Reference Floor: input type not supported.");
1457 "Reference Floor: output type not supported.");
1469 bool supported =
true;
1472 std::array<DataType,6> supportedTypes =
1482 "Reference Fully Connected: input type not supported.");
1485 "Reference Fully Connected: output type not supported.");
1488 "Reference Fully Connected: weights type not supported.");
1491 "Reference Fully Connected: input and output types mismatched.");
1494 "Reference Fully Connected: weights is not a supported type.");
1497 "Reference Fully Connected: input and weights types mismatched.");
1502 std::array<DataType, 5>
1503 supportedBiasTypes =
1512 "Reference Fully Connected: bias type not supported.");
1515 "Reference Fully Connected: bias and weight types mismatch.");
1518 "Reference Fully Connected: bias type inferred from weights is incompatible.");
1521 "Reference Fully Connected: bias must have 1 dimension.");
1533 bool supported =
true;
1534 std::array<DataType,7> supportedTypes =
1545 "Reference GatherNd: input type not supported");
1548 "Reference GatherNd: output type not supported");
1551 "Reference GatherNd: indices (input1) type not supported");
1554 "Reference GatherNd: input and output types not matching");
1565 bool supported =
true;
1566 std::array<DataType,7> supportedTypes =
1578 "Reference Gather: input type not supported");
1581 "Reference Gather: output type not supported");
1584 "Reference Gather: indices (input1) type not supported");
1587 "Reference Gather: input and output types not matching");
1605 std::array<DataType, 3> supportedTypes =
1611 bool supported =
true;
1614 "Reference Instance Normalization: input type not supported.");
1617 "Reference Instance Normalization: output type not supported.");
1620 "Reference Instance Normalization: input and output types mismatched.");
1623 "Reference Instance Normalization: input and output shapes have different "
1624 "num total elements.");
1636 std::array<DataType, 6> supportedTypes =
1645 bool supported =
true;
1648 "Reference L2normalization: input type not supported.");
1651 "Reference L2normalization: output type not supported.");
1654 "Reference L2normalization: input and output types mismatched.");
1657 "Reference L2normalization: input and output shapes have different "
1658 "num total elements.");
1671 std::array<DataType, 1> supportedTypes =
1676 bool supported =
true;
1678 "Reference LogicalBinary: input 0 type not supported");
1680 "Reference LogicalBinary: input 1 type not supported");
1683 "Reference LogicalBinary: input and output types do not match");
1695 std::array<DataType, 3> supportedTypes =
1701 bool supported =
true;
1703 "Reference LogSoftmax: input type not supported");
1706 "Reference LogSoftmax: output type not supported");
1709 "Reference LogSoftmax: input and output types do not match");
1728 bool supported =
true;
1730 std::array<DataType,3> supportedTypes = {
1737 "Reference Lstm: input is not a supported type.");
1739 "Reference Lstm: input and outputStateIn types are mismatched");
1741 "Reference Lstm: input and cellStateIn types are mismatched");
1743 "Reference Lstm: input and scratchBuffer types are mismatched");
1745 "Reference Lstm: input and outputStateOut types are mismatched");
1747 "Reference Lstm: input and cellStateOut types are mismatched");
1750 "Reference Lstm: input and output types are mismatched");
1753 "Reference Lstm: input and InputToForgetWeights types are mismatched");
1755 "Reference Lstm: input and InputToCellWeights types are mismatched");
1757 "Reference Lstm: input and InputToOutputWeights types are mismatched");
1759 "Reference Lstm: input and RecurrentToForgetWeights types are mismatched");
1761 "Reference Lstm: input and RecurrentToCellWeights types are mismatched");
1763 "Reference Lstm: input and RecurrentToOutputWeights types are mismatched");
1765 "Reference Lstm: input and ForgetGateBias types are mismatched");
1767 "Reference Lstm: input and CellBias types are mismatched");
1769 "Reference Lstm: input and OutputGateBias types are mismatched");
1773 "Reference Lstm: input and InputToInputWeights types are mismatched");
1776 "Reference Lstm: input and RecurrentToInputWeights types are mismatched");
1778 "Reference Lstm: input and InputGateBias types are mismatched");
1783 "Reference Lstm: input and CellToInputWeights types are mismatched");
1789 "Reference Lstm: input and CellToForgetWeights types are mismatched");
1791 "Reference Lstm: input and CellToOutputWeights types are mismatched");
1796 "Reference Lstm: input and mProjectionWeights types are mismatched");
1800 "Reference Lstm: input and ProjectionBias types are mismatched");
1809 "Reference Lstm: input and InputLayerNormWeights types are mismatched");
1813 "Reference Lstm: input and ForgetLayerNormWeights types are mismatched");
1816 "Reference Lstm: input and CellLayerNormWeights types are mismatched");
1819 "Reference Lstm: input and OutputLayerNormWeights types are mismatched");
1830 bool supported =
true;
1832 std::array<DataType,7> supportedTypes = {
1842 "Reference maximum: input 0 is not a supported type.");
1845 "Reference maximum: input 1 is not a supported type.");
1848 "Reference maximum: output is not a supported type.");
1851 "Reference maximum: input 0 and Input 1 types are mismatched");
1854 "Reference maximum: input and output types are mismatched");
1857 "Reference maximum: shapes are not suitable for implicit broadcast.");
1867 bool supported =
true;
1868 std::string meanLayerStr =
"Mean";
1869 std::string outputTensorStr =
"output";
1871 std::array<DataType,6> supportedTypes =
1881 "Reference Mean: input type not supported.");
1884 "Reference Mean: input and output types are mismatched");
1892 meanLayerStr, outputTensorStr).data());
1899 meanLayerStr, outputTensorStr).data());
1910 meanLayerStr, outputTensorStr).data());
1917 meanLayerStr, outputTensorStr).data());
1928 bool supported =
true;
1930 std::array<DataType,7> supportedTypes =
1942 "Reference MemCopy: input type not supported");
1945 "Reference MemCopy: output type not supported");
1948 "Reference MemCopy: input and output types are mismatched");
1958 bool supported =
true;
1960 std::array<DataType,7> supportedTypes = {
1970 "Reference minimum: input 0 is not a supported type.");
1973 "Reference minimum: input 1 is not a supported type.");
1976 "Reference minimum: output is not a supported type.");
1979 "Reference minimum: input 0 and Input 1 types are mismatched");
1982 "Reference minimum: input and output types are mismatched");
1985 "Reference minimum: shapes are not suitable for implicit broadcast.");
1995 bool supported =
true;
1997 std::array<DataType,7> supportedTypes = {
2007 "Reference multiplication: input 0 is not a supported type.");
2010 "Reference multiplication: input 1 is not a supported type.");
2013 "Reference multiplication: output is not a supported type.");
2016 "Reference multiplication: input 0 and Input 1 types are mismatched");
2019 "Reference multiplication: input and output types are mismatched");
2022 "Reference multiplication: shapes are not suitable for implicit broadcast.");
2035 std::array<DataType, 6> supportedTypes =
2044 bool supported =
true;
2047 "Reference normalization: input type not supported.");
2050 "Reference normalization: output type not supported.");
2053 "Reference normalization: input and output shapes have different "
2054 "num total elements.");
2071 bool supported =
true;
2074 std::array<DataType,6> supportedTypes =
2084 "Reference pad: input is not a supported type.");
2087 "Reference pad: output is not a supported type.");
2090 "Reference pad: input and output types are mismatched.");
2101 bool supported =
true;
2104 std::array<DataType, 6> supportedTypes =
2115 "Reference permute: input is not a supported type.");
2118 "Reference permute: output is not a supported type.");
2121 "Reference permute: input and output types are mismatched.");
2132 bool supported =
true;
2135 std::array<DataType,6> supportedTypes =
2145 "Reference poolind2d: input is not a supported type.");
2148 "Reference poolind2d: output is not a supported type.");
2151 "Reference poolind2d: input and output types are mismatched.");
2162 bool supported =
true;
2165 std::array<DataType,6> supportedTypes =
2175 "Reference poolind3d: input is not a supported type.");
2178 "Reference poolind3d: output is not a supported type.");
2181 "Reference poolind3d: input and output types are mismatched.");
2215 bool supported =
true;
2218 std::array<DataType,7> supportedInputTypes = {
2228 "Reference quantize: input type not supported.");
2231 std::array<DataType,4> supportedOutputTypes = {
2238 "Reference quantize: output type not supported.");
2241 "Reference quantize: input and output shapes have different num total elements.");
2252 std::array<DataType,1> supportedOutputTypes =
2258 "Reference rank: input type not supported.");
2267 bool supported =
true;
2268 std::array<DataType,7> supportedTypes =
2279 "Reference Reduce: input type not supported");
2282 "Reference Reduce: output type not supported");
2285 "Reference Reduce: input and output types not matching");
2298 std::array<DataType,8> supportedOutputTypes =
2311 "Reference reshape: input type not supported.");
2320 bool supported =
true;
2321 std::array<DataType,6> supportedTypes =
2332 "Reference Resize: input type not supported");
2335 "Reference Resize: output type not supported");
2338 "Reference Resize: input and output types not matching");
2348 bool supported =
true;
2350 std::array<DataType, 1> supportedTypes =
2356 "Reference Shape: output type not supported");
2367 bool supported =
true;
2369 std::array<DataType, 5> supportedTypes =
2378 "Reference Slice: input type not supported");
2381 "Reference Slice: output type not supported");
2384 "Reference Slice: input and output types are mismatched");
2395 bool supported =
true;
2396 std::array<DataType,7> supportedTypes =
2407 "Reference Softmax: output type not supported");
2410 "Reference Softmax: input type not supported");
2413 "Reference Softmax: input type not supported");
2424 bool supported =
true;
2425 std::array<DataType,6> supportedTypes =
2435 "Reference SpaceToBatchNd: input type not supported");
2438 "Reference SpaceToBatchNd: output type not supported");
2441 "Reference SpaceToBatchNd: input and output types are mismatched");
2453 bool supported =
true;
2455 std::array<DataType,6> supportedTypes =
2465 "Reference SpaceToDepth: input type not supported");
2468 "Reference SpaceToDepth: output type not supported");
2471 "Reference SpaceToDepth: input and output types are mismatched");
2477 const std::vector<std::reference_wrapper<TensorInfo>>& outputs,
2482 bool supported =
true;
2483 std::array<DataType,6> supportedTypes =
2493 "Reference splitter: output type not supported");
2497 "Reference splitter: input type not supported");
2500 "Reference splitter: input and output types mismatched.");
2513 bool supported =
true;
2514 std::array<DataType,7> supportedTypes =
2525 "Reference stack: output type not supported");
2530 "Reference stack: input type not supported");
2533 "Reference stack: input and output types mismatched.");
2545 bool supported =
true;
2547 std::array<DataType,5> supportedTypes =
2556 "Reference StridedSlice: input type not supported");
2559 "Reference StridedSlice: output type not supported");
2562 "Reference StridedSlice: input and output types are mismatched");
2572 bool supported =
true;
2574 std::array<DataType,7> supportedTypes = {
2584 "Reference subtraction: input 0 is not a supported type.");
2587 "Reference subtraction: input 1 is not a supported type.");
2590 "Reference subtraction: output is not a supported type.");
2593 "Reference subtraction: input 0 and Input 1 types are mismatched");
2596 "Reference subtraction: input and output types are mismatched");
2599 "Reference subtraction: shapes are not suitable for implicit broadcast.");
2609 bool supported =
true;
2611 std::array<DataType, 6> supportedTypes
2621 "PReLU: input is not a supported type.");
2624 "PReLU: alpha is not a supported type.");
2627 "PReLU: output is not a supported type.");
2630 "PReLU: input, alpha and output types are mismatched");
2633 "PReLU: shapes are not suitable for implicit broadcast");
2646 bool supported =
true;
2648 std::array<DataType,7> supportedTypes =
2659 "Reference TransposeConvolution2d: input is not a supported type.");
2662 "Reference TransposeConvolution2d: output is not a supported type.");
2665 "Reference TransposeConvolution2d: input and output types mismatched.");
2671 std::array<DataType, 3> supportedWeightTypes =
2679 "Reference TransposeConvolution2d: weights type not supported for "
2680 "quantized input.");
2685 "Reference TransposeConvolution2d: weights is not a supported type.");
2688 "Reference TransposeConvolution2d: input and weights types mismatched.");
2693 std::array<DataType,4> biasesSupportedTypes =
2700 "Reference TransposeConvolution2d: biases is not a supported type.");
2712 bool supported =
true;
2715 std::array<DataType, 6> supportedTypes =
2726 "Reference transpose: input is not a supported type.");
2729 "Reference transpose: output is not a supported type.");
2732 "Reference transpose: input and output types are mismatched.");
2754 bool supported =
true;
2756 std::array<DataType, 2> supportedTypes =
2762 std::array<DataType, 2> supportedWeightTypes =
2768 std::array<DataType, 3> supportedBiasTypes =
2777 "Reference UnidirectionalSequenceLstm: input is not a supported type.");
2779 "Reference UnidirectionalSequenceLstm: output is not a supported type.");
2784 "Reference UnidirectionalSequenceLstm: InputToForgetWeights "
2785 "is not a supported type.");
2788 "Reference UnidirectionalSequenceLstm: InputToCellWeights is not a supported type.");
2791 "Reference UnidirectionalSequenceLstm: InputToOutputWeights "
2792 "is not a supported type.");
2795 "Reference UnidirectionalSequenceLstm: RecurrentToForgetWeights "
2796 "is not a supported type.");
2799 "Reference UnidirectionalSequenceLstm: RecurrentToCellWeights "
2800 "is not a supported type.");
2803 "Reference UnidirectionalSequenceLstm: RecurrentToOutputWeights "
2804 "is not a supported type.");
2807 "Reference UnidirectionalSequenceLstm: ForgetGateBias is not a supported type.");
2809 "Reference UnidirectionalSequenceLstm: CellBias is not a supported type.");
2811 "Reference UnidirectionalSequenceLstm: OutputGateBias is not a supported type.");
2816 "Reference UnidirectionalSequenceLstm: InputToInputWeights "
2817 "is not a supported type.");
2820 "Reference UnidirectionalSequenceLstm: RecurrentToInputWeights "
2821 "is not a supported type.");
2823 "Reference UnidirectionalSequenceLstm: InputGateBias is not a supported type.");
2828 "Reference UnidirectionalSequenceLstm: CellToInputWeights "
2829 "is not a supported type.");
2836 "Reference UnidirectionalSequenceLstm: CellToForgetWeights "
2837 "is not a supported type.");
2840 "Reference UnidirectionalSequenceLstm: CellToOutputWeights "
2841 "is not a supported type.");
2847 "Reference UnidirectionalSequenceLstm: ProjectionWeights "
2848 "is not a supported type.");
2852 "Reference UnidirectionalSequenceLstm: input and ProjectionBias types "
2862 "Reference UnidirectionalSequenceLstm: InputLayerNormWeights "
2863 "is not a supported type.");
2867 "Reference UnidirectionalSequenceLstm: ForgetLayerNormWeights "
2868 "is not a supported type.");
2871 "Reference UnidirectionalSequenceLstm: CellLayerNormWeights "
2872 "is not a supported type.");
2875 "Reference UnidirectionalSequenceLstm: OutputLayerNormWeights "
2876 "is not a supported type.");