1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker
6*89c4ff92SAndroid Build Coastguard Worker #include <armnn/Deprecated.hpp>
7*89c4ff92SAndroid Build Coastguard Worker #include <armnn/Exceptions.hpp>
8*89c4ff92SAndroid Build Coastguard Worker #include <armnn/Types.hpp>
9*89c4ff92SAndroid Build Coastguard Worker
10*89c4ff92SAndroid Build Coastguard Worker #include <backendsCommon/LayerSupportBase.hpp>
11*89c4ff92SAndroid Build Coastguard Worker
12*89c4ff92SAndroid Build Coastguard Worker #include <armnn/utility/IgnoreUnused.hpp>
13*89c4ff92SAndroid Build Coastguard Worker #include <armnn/utility/PolymorphicDowncast.hpp>
14*89c4ff92SAndroid Build Coastguard Worker
15*89c4ff92SAndroid Build Coastguard Worker namespace
16*89c4ff92SAndroid Build Coastguard Worker {
17*89c4ff92SAndroid Build Coastguard Worker
DefaultLayerSupport(const char * func,const char * file,unsigned int line,armnn::Optional<std::string &> reasonIfUnsupported)18*89c4ff92SAndroid Build Coastguard Worker bool DefaultLayerSupport(const char* func,
19*89c4ff92SAndroid Build Coastguard Worker const char* file,
20*89c4ff92SAndroid Build Coastguard Worker unsigned int line,
21*89c4ff92SAndroid Build Coastguard Worker armnn::Optional<std::string&> reasonIfUnsupported)
22*89c4ff92SAndroid Build Coastguard Worker {
23*89c4ff92SAndroid Build Coastguard Worker // NOTE: We only need to return the reason if the optional parameter is not empty
24*89c4ff92SAndroid Build Coastguard Worker if (reasonIfUnsupported)
25*89c4ff92SAndroid Build Coastguard Worker {
26*89c4ff92SAndroid Build Coastguard Worker std::stringstream message;
27*89c4ff92SAndroid Build Coastguard Worker message << func << " is not implemented [" << file << ":" << line << "]";
28*89c4ff92SAndroid Build Coastguard Worker
29*89c4ff92SAndroid Build Coastguard Worker reasonIfUnsupported.value() = message.str();
30*89c4ff92SAndroid Build Coastguard Worker }
31*89c4ff92SAndroid Build Coastguard Worker
32*89c4ff92SAndroid Build Coastguard Worker return false;
33*89c4ff92SAndroid Build Coastguard Worker }
34*89c4ff92SAndroid Build Coastguard Worker
35*89c4ff92SAndroid Build Coastguard Worker } // anonymous namespace
36*89c4ff92SAndroid Build Coastguard Worker
37*89c4ff92SAndroid Build Coastguard Worker namespace armnn
38*89c4ff92SAndroid Build Coastguard Worker {
39*89c4ff92SAndroid Build Coastguard Worker
IsLayerSupported(const LayerType & type,const std::vector<TensorInfo> & infos,const BaseDescriptor & descriptor,const Optional<LstmInputParamsInfo> &,const Optional<QuantizedLstmInputParamsInfo> &,Optional<std::string &> reasonIfUnsupported) const40*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsLayerSupported(const LayerType& type,
41*89c4ff92SAndroid Build Coastguard Worker const std::vector<TensorInfo>& infos,
42*89c4ff92SAndroid Build Coastguard Worker const BaseDescriptor& descriptor,
43*89c4ff92SAndroid Build Coastguard Worker const Optional<LstmInputParamsInfo>&,
44*89c4ff92SAndroid Build Coastguard Worker const Optional<QuantizedLstmInputParamsInfo>&,
45*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
46*89c4ff92SAndroid Build Coastguard Worker {
47*89c4ff92SAndroid Build Coastguard Worker switch(type)
48*89c4ff92SAndroid Build Coastguard Worker {
49*89c4ff92SAndroid Build Coastguard Worker case LayerType::MemCopy:
50*89c4ff92SAndroid Build Coastguard Worker return IsMemCopySupported(infos[0], infos[1], reasonIfUnsupported);
51*89c4ff92SAndroid Build Coastguard Worker case LayerType::MemImport:
52*89c4ff92SAndroid Build Coastguard Worker return IsMemImportSupported(infos[0], infos[1], reasonIfUnsupported);
53*89c4ff92SAndroid Build Coastguard Worker case LayerType::StandIn:
54*89c4ff92SAndroid Build Coastguard Worker {
55*89c4ff92SAndroid Build Coastguard Worker auto desc = *(PolymorphicDowncast<const StandInDescriptor*>(&descriptor));
56*89c4ff92SAndroid Build Coastguard Worker
57*89c4ff92SAndroid Build Coastguard Worker if (infos.size() != (desc.m_NumInputs + desc.m_NumOutputs))
58*89c4ff92SAndroid Build Coastguard Worker {
59*89c4ff92SAndroid Build Coastguard Worker throw InvalidArgumentException("Number of StandIn layer TensorInfos does not equal "
60*89c4ff92SAndroid Build Coastguard Worker "the combined number of input and output slots assigned "
61*89c4ff92SAndroid Build Coastguard Worker "to the StandIn descriptor");
62*89c4ff92SAndroid Build Coastguard Worker }
63*89c4ff92SAndroid Build Coastguard Worker
64*89c4ff92SAndroid Build Coastguard Worker std::vector<const TensorInfo*> inputInfos;
65*89c4ff92SAndroid Build Coastguard Worker for (uint32_t i = 0; i < desc.m_NumInputs; i++)
66*89c4ff92SAndroid Build Coastguard Worker {
67*89c4ff92SAndroid Build Coastguard Worker inputInfos.push_back(&infos[i]);
68*89c4ff92SAndroid Build Coastguard Worker }
69*89c4ff92SAndroid Build Coastguard Worker std::vector<const TensorInfo*> outputInfos;
70*89c4ff92SAndroid Build Coastguard Worker for (uint32_t i = desc.m_NumInputs; i < infos.size(); i++)
71*89c4ff92SAndroid Build Coastguard Worker {
72*89c4ff92SAndroid Build Coastguard Worker outputInfos.push_back(&infos[i]);
73*89c4ff92SAndroid Build Coastguard Worker }
74*89c4ff92SAndroid Build Coastguard Worker
75*89c4ff92SAndroid Build Coastguard Worker return IsStandInSupported(inputInfos,
76*89c4ff92SAndroid Build Coastguard Worker outputInfos,
77*89c4ff92SAndroid Build Coastguard Worker desc,
78*89c4ff92SAndroid Build Coastguard Worker reasonIfUnsupported);
79*89c4ff92SAndroid Build Coastguard Worker }
80*89c4ff92SAndroid Build Coastguard Worker default:
81*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
82*89c4ff92SAndroid Build Coastguard Worker }
83*89c4ff92SAndroid Build Coastguard Worker }
84*89c4ff92SAndroid Build Coastguard Worker
IsActivationSupported(const TensorInfo &,const TensorInfo &,const ActivationDescriptor &,Optional<std::string &> reasonIfUnsupported) const85*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsActivationSupported(const TensorInfo&, // input
86*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, //output
87*89c4ff92SAndroid Build Coastguard Worker const ActivationDescriptor&, // descriptor
88*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
89*89c4ff92SAndroid Build Coastguard Worker {
90*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
91*89c4ff92SAndroid Build Coastguard Worker }
92*89c4ff92SAndroid Build Coastguard Worker
IsAdditionSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const93*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsAdditionSupported(const TensorInfo&, // input0
94*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
95*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
96*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
97*89c4ff92SAndroid Build Coastguard Worker {
98*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
99*89c4ff92SAndroid Build Coastguard Worker }
100*89c4ff92SAndroid Build Coastguard Worker
IsArgMinMaxSupported(const armnn::TensorInfo &,const armnn::TensorInfo &,const armnn::ArgMinMaxDescriptor &,armnn::Optional<std::string &> reasonIfUnsupported) const101*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsArgMinMaxSupported(const armnn::TensorInfo&, // input
102*89c4ff92SAndroid Build Coastguard Worker const armnn::TensorInfo&, // output
103*89c4ff92SAndroid Build Coastguard Worker const armnn::ArgMinMaxDescriptor&, // descriptor
104*89c4ff92SAndroid Build Coastguard Worker armnn::Optional<std::string &> reasonIfUnsupported) const
105*89c4ff92SAndroid Build Coastguard Worker {
106*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
107*89c4ff92SAndroid Build Coastguard Worker }
108*89c4ff92SAndroid Build Coastguard Worker
IsBatchNormalizationSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const BatchNormalizationDescriptor &,Optional<std::string &> reasonIfUnsupported) const109*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsBatchNormalizationSupported(const TensorInfo&, //input
110*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
111*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, //mean
112*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, //var
113*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, //beta
114*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, //gamma
115*89c4ff92SAndroid Build Coastguard Worker const BatchNormalizationDescriptor&, // descriptor
116*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
117*89c4ff92SAndroid Build Coastguard Worker {
118*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
119*89c4ff92SAndroid Build Coastguard Worker }
120*89c4ff92SAndroid Build Coastguard Worker
IsBatchToSpaceNdSupported(const TensorInfo &,const TensorInfo &,const BatchToSpaceNdDescriptor &,Optional<std::string &> reasonIfUnsupported) const121*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsBatchToSpaceNdSupported(const TensorInfo&, // input
122*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
123*89c4ff92SAndroid Build Coastguard Worker const BatchToSpaceNdDescriptor&, //descriptor
124*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
125*89c4ff92SAndroid Build Coastguard Worker {
126*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
127*89c4ff92SAndroid Build Coastguard Worker }
128*89c4ff92SAndroid Build Coastguard Worker
IsCastSupported(const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const129*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsCastSupported(const TensorInfo&, //input
130*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, //output
131*89c4ff92SAndroid Build Coastguard Worker Optional<std::string &> reasonIfUnsupported) const
132*89c4ff92SAndroid Build Coastguard Worker {
133*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
134*89c4ff92SAndroid Build Coastguard Worker }
135*89c4ff92SAndroid Build Coastguard Worker
IsChannelShuffleSupported(const TensorInfo &,const TensorInfo &,const ChannelShuffleDescriptor &,Optional<std::string &> reasonIfUnsupported) const136*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsChannelShuffleSupported(const TensorInfo&, //input
137*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, //output
138*89c4ff92SAndroid Build Coastguard Worker const ChannelShuffleDescriptor&, //descriptor
139*89c4ff92SAndroid Build Coastguard Worker Optional<std::string &> reasonIfUnsupported) const
140*89c4ff92SAndroid Build Coastguard Worker {
141*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
142*89c4ff92SAndroid Build Coastguard Worker }
143*89c4ff92SAndroid Build Coastguard Worker
IsComparisonSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const ComparisonDescriptor &,Optional<std::string &> reasonIfUnsupported) const144*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsComparisonSupported(const TensorInfo&, // input0
145*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
146*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
147*89c4ff92SAndroid Build Coastguard Worker const ComparisonDescriptor&, // descriptor
148*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
149*89c4ff92SAndroid Build Coastguard Worker {
150*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
151*89c4ff92SAndroid Build Coastguard Worker }
152*89c4ff92SAndroid Build Coastguard Worker
IsConcatSupported(const std::vector<const TensorInfo * >,const TensorInfo &,const OriginsDescriptor &,Optional<std::string &> reasonIfUnsupported) const153*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsConcatSupported(const std::vector<const TensorInfo*>, // inputs
154*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
155*89c4ff92SAndroid Build Coastguard Worker const OriginsDescriptor&, // descriptor
156*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
157*89c4ff92SAndroid Build Coastguard Worker {
158*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
159*89c4ff92SAndroid Build Coastguard Worker }
160*89c4ff92SAndroid Build Coastguard Worker
IsConstantSupported(const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const161*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsConstantSupported(const TensorInfo&, // output
162*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
163*89c4ff92SAndroid Build Coastguard Worker {
164*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
165*89c4ff92SAndroid Build Coastguard Worker }
166*89c4ff92SAndroid Build Coastguard Worker
IsConvertFp16ToFp32Supported(const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const167*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsConvertFp16ToFp32Supported(const TensorInfo&, // input
168*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
169*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
170*89c4ff92SAndroid Build Coastguard Worker {
171*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
172*89c4ff92SAndroid Build Coastguard Worker }
173*89c4ff92SAndroid Build Coastguard Worker
IsConvertFp32ToFp16Supported(const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const174*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsConvertFp32ToFp16Supported(const TensorInfo&, // input
175*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
176*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
177*89c4ff92SAndroid Build Coastguard Worker {
178*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
179*89c4ff92SAndroid Build Coastguard Worker }
180*89c4ff92SAndroid Build Coastguard Worker
IsConvolution2dSupported(const TensorInfo &,const TensorInfo &,const Convolution2dDescriptor &,const TensorInfo &,const Optional<TensorInfo> &,Optional<std::string &> reasonIfUnsupported) const181*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsConvolution2dSupported(const TensorInfo&, // input
182*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
183*89c4ff92SAndroid Build Coastguard Worker const Convolution2dDescriptor&, // descriptor
184*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // weights
185*89c4ff92SAndroid Build Coastguard Worker const Optional<TensorInfo>&, // biases
186*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
187*89c4ff92SAndroid Build Coastguard Worker {
188*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
189*89c4ff92SAndroid Build Coastguard Worker }
190*89c4ff92SAndroid Build Coastguard Worker
IsConvolution3dSupported(const TensorInfo &,const TensorInfo &,const Convolution3dDescriptor &,const TensorInfo &,const Optional<TensorInfo> &,Optional<std::string &> reasonIfUnsupported) const191*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsConvolution3dSupported(const TensorInfo&, // input
192*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
193*89c4ff92SAndroid Build Coastguard Worker const Convolution3dDescriptor&, // descriptor
194*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // weights
195*89c4ff92SAndroid Build Coastguard Worker const Optional<TensorInfo>&, // biases
196*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
197*89c4ff92SAndroid Build Coastguard Worker {
198*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
199*89c4ff92SAndroid Build Coastguard Worker }
200*89c4ff92SAndroid Build Coastguard Worker
IsDebugSupported(const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const201*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsDebugSupported(const TensorInfo&, // input
202*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
203*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
204*89c4ff92SAndroid Build Coastguard Worker {
205*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
206*89c4ff92SAndroid Build Coastguard Worker }
207*89c4ff92SAndroid Build Coastguard Worker
IsDepthToSpaceSupported(const TensorInfo &,const TensorInfo &,const DepthToSpaceDescriptor &,Optional<std::string &> reasonIfUnsupported) const208*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsDepthToSpaceSupported(const TensorInfo&, // input
209*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
210*89c4ff92SAndroid Build Coastguard Worker const DepthToSpaceDescriptor&, // descriptor
211*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
212*89c4ff92SAndroid Build Coastguard Worker {
213*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
214*89c4ff92SAndroid Build Coastguard Worker }
215*89c4ff92SAndroid Build Coastguard Worker
IsDepthwiseConvolutionSupported(const TensorInfo &,const TensorInfo &,const DepthwiseConvolution2dDescriptor &,const TensorInfo &,const Optional<TensorInfo> &,Optional<std::string &> reasonIfUnsupported) const216*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsDepthwiseConvolutionSupported(const TensorInfo&, //input
217*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, //output
218*89c4ff92SAndroid Build Coastguard Worker const DepthwiseConvolution2dDescriptor&, // descriptor
219*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // weights
220*89c4ff92SAndroid Build Coastguard Worker const Optional<TensorInfo>&, // biases
221*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
222*89c4ff92SAndroid Build Coastguard Worker {
223*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
224*89c4ff92SAndroid Build Coastguard Worker }
225*89c4ff92SAndroid Build Coastguard Worker
IsDequantizeSupported(const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const226*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsDequantizeSupported(const TensorInfo&, // input
227*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
228*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
229*89c4ff92SAndroid Build Coastguard Worker {
230*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
231*89c4ff92SAndroid Build Coastguard Worker }
232*89c4ff92SAndroid Build Coastguard Worker
IsDetectionPostProcessSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const DetectionPostProcessDescriptor &,Optional<std::string &> reasonIfUnsupported) const233*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsDetectionPostProcessSupported(const TensorInfo&, // boxEncodings
234*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // scores
235*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // anchors
236*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // detectionBoxes
237*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // detectionClasses
238*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // detectionScores
239*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // numDetections
240*89c4ff92SAndroid Build Coastguard Worker const DetectionPostProcessDescriptor&, //descriptor
241*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
242*89c4ff92SAndroid Build Coastguard Worker {
243*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
244*89c4ff92SAndroid Build Coastguard Worker }
245*89c4ff92SAndroid Build Coastguard Worker
IsDilatedDepthwiseConvolutionSupported(const TensorInfo &,const TensorInfo &,const DepthwiseConvolution2dDescriptor &,const TensorInfo &,const Optional<TensorInfo> &,Optional<std::string &> reasonIfUnsupported) const246*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsDilatedDepthwiseConvolutionSupported(const TensorInfo&, // input
247*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
248*89c4ff92SAndroid Build Coastguard Worker const DepthwiseConvolution2dDescriptor&, // descriptor
249*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&,// weights
250*89c4ff92SAndroid Build Coastguard Worker const Optional<TensorInfo>&, // biases
251*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
252*89c4ff92SAndroid Build Coastguard Worker {
253*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
254*89c4ff92SAndroid Build Coastguard Worker }
255*89c4ff92SAndroid Build Coastguard Worker
IsDivisionSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const256*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsDivisionSupported(const TensorInfo&, // input0
257*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
258*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
259*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
260*89c4ff92SAndroid Build Coastguard Worker {
261*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
262*89c4ff92SAndroid Build Coastguard Worker }
263*89c4ff92SAndroid Build Coastguard Worker
IsElementwiseUnarySupported(const TensorInfo &,const TensorInfo &,const ElementwiseUnaryDescriptor &,Optional<std::string &> reasonIfUnsupported) const264*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsElementwiseUnarySupported(const TensorInfo&, // input
265*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
266*89c4ff92SAndroid Build Coastguard Worker const ElementwiseUnaryDescriptor&, // descriptor
267*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
268*89c4ff92SAndroid Build Coastguard Worker {
269*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
270*89c4ff92SAndroid Build Coastguard Worker }
271*89c4ff92SAndroid Build Coastguard Worker
IsFakeQuantizationSupported(const TensorInfo &,const FakeQuantizationDescriptor &,Optional<std::string &> reasonIfUnsupported) const272*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsFakeQuantizationSupported(const TensorInfo&, // input
273*89c4ff92SAndroid Build Coastguard Worker const FakeQuantizationDescriptor&, // descriptor
274*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
275*89c4ff92SAndroid Build Coastguard Worker {
276*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
277*89c4ff92SAndroid Build Coastguard Worker }
278*89c4ff92SAndroid Build Coastguard Worker
IsFillSupported(const TensorInfo &,const TensorInfo &,const FillDescriptor &,Optional<std::string &> reasonIfUnsupported) const279*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsFillSupported(const TensorInfo&, // input
280*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
281*89c4ff92SAndroid Build Coastguard Worker const FillDescriptor&, // descriptor
282*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
283*89c4ff92SAndroid Build Coastguard Worker {
284*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
285*89c4ff92SAndroid Build Coastguard Worker }
286*89c4ff92SAndroid Build Coastguard Worker
IsFloorSupported(const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const287*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsFloorSupported(const TensorInfo&, // input
288*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
289*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
290*89c4ff92SAndroid Build Coastguard Worker {
291*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
292*89c4ff92SAndroid Build Coastguard Worker }
293*89c4ff92SAndroid Build Coastguard Worker
IsFullyConnectedSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const FullyConnectedDescriptor &,Optional<std::string &> reasonIfUnsupported) const294*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsFullyConnectedSupported(const TensorInfo&, // input
295*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
296*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // weights
297*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // biases
298*89c4ff92SAndroid Build Coastguard Worker const FullyConnectedDescriptor&, // descriptor
299*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
300*89c4ff92SAndroid Build Coastguard Worker {
301*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
302*89c4ff92SAndroid Build Coastguard Worker }
303*89c4ff92SAndroid Build Coastguard Worker
IsGatherSupported(const armnn::TensorInfo &,const armnn::TensorInfo &,const armnn::TensorInfo &,const GatherDescriptor &,armnn::Optional<std::string &> reasonIfUnsupported) const304*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsGatherSupported(const armnn::TensorInfo&, // input0
305*89c4ff92SAndroid Build Coastguard Worker const armnn::TensorInfo&, // input1
306*89c4ff92SAndroid Build Coastguard Worker const armnn::TensorInfo&, // output
307*89c4ff92SAndroid Build Coastguard Worker const GatherDescriptor&, // descriptor
308*89c4ff92SAndroid Build Coastguard Worker armnn::Optional<std::string&> reasonIfUnsupported) const
309*89c4ff92SAndroid Build Coastguard Worker {
310*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
311*89c4ff92SAndroid Build Coastguard Worker }
312*89c4ff92SAndroid Build Coastguard Worker
IsInputSupported(const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const313*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsInputSupported(const TensorInfo&, // input
314*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
315*89c4ff92SAndroid Build Coastguard Worker {
316*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
317*89c4ff92SAndroid Build Coastguard Worker }
318*89c4ff92SAndroid Build Coastguard Worker
IsInstanceNormalizationSupported(const TensorInfo &,const TensorInfo &,const InstanceNormalizationDescriptor &,Optional<std::string &> reasonIfUnsupported) const319*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsInstanceNormalizationSupported(const TensorInfo&, // input
320*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
321*89c4ff92SAndroid Build Coastguard Worker const InstanceNormalizationDescriptor&, // descriptor
322*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
323*89c4ff92SAndroid Build Coastguard Worker {
324*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
325*89c4ff92SAndroid Build Coastguard Worker }
326*89c4ff92SAndroid Build Coastguard Worker
IsL2NormalizationSupported(const TensorInfo &,const TensorInfo &,const L2NormalizationDescriptor &,Optional<std::string &> reasonIfUnsupported) const327*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsL2NormalizationSupported(const TensorInfo&, // input
328*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
329*89c4ff92SAndroid Build Coastguard Worker const L2NormalizationDescriptor&, // descriptor
330*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
331*89c4ff92SAndroid Build Coastguard Worker {
332*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
333*89c4ff92SAndroid Build Coastguard Worker }
334*89c4ff92SAndroid Build Coastguard Worker
IsLogicalBinarySupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const LogicalBinaryDescriptor &,Optional<std::string &> reasonIfUnsupported) const335*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsLogicalBinarySupported(const TensorInfo&, // input0
336*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
337*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
338*89c4ff92SAndroid Build Coastguard Worker const LogicalBinaryDescriptor&, // descriptor
339*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
340*89c4ff92SAndroid Build Coastguard Worker {
341*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
342*89c4ff92SAndroid Build Coastguard Worker }
343*89c4ff92SAndroid Build Coastguard Worker
IsLogicalUnarySupported(const TensorInfo &,const TensorInfo &,const ElementwiseUnaryDescriptor &,Optional<std::string &> reasonIfUnsupported) const344*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsLogicalUnarySupported(const TensorInfo&, // input
345*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
346*89c4ff92SAndroid Build Coastguard Worker const ElementwiseUnaryDescriptor&, // descriptor
347*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
348*89c4ff92SAndroid Build Coastguard Worker {
349*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
350*89c4ff92SAndroid Build Coastguard Worker }
351*89c4ff92SAndroid Build Coastguard Worker
IsLogSoftmaxSupported(const TensorInfo &,const TensorInfo &,const LogSoftmaxDescriptor &,Optional<std::string &> reasonIfUnsupported) const352*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsLogSoftmaxSupported(const TensorInfo&, // input
353*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
354*89c4ff92SAndroid Build Coastguard Worker const LogSoftmaxDescriptor&, // descriptor
355*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
356*89c4ff92SAndroid Build Coastguard Worker {
357*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
358*89c4ff92SAndroid Build Coastguard Worker }
359*89c4ff92SAndroid Build Coastguard Worker
IsLstmSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const LstmDescriptor &,const LstmInputParamsInfo &,Optional<std::string &> reasonIfUnsupported) const360*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsLstmSupported(const TensorInfo&, // input
361*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // outputStateIn
362*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // cellStateIn
363*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // scratchBuffer
364*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // outputStateOut
365*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // cellStateOut
366*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
367*89c4ff92SAndroid Build Coastguard Worker const LstmDescriptor&, // descriptor
368*89c4ff92SAndroid Build Coastguard Worker const LstmInputParamsInfo&, // paramsInfo
369*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
370*89c4ff92SAndroid Build Coastguard Worker {
371*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
372*89c4ff92SAndroid Build Coastguard Worker }
373*89c4ff92SAndroid Build Coastguard Worker
IsMaximumSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const374*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsMaximumSupported(const TensorInfo&, // input0
375*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
376*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
377*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
378*89c4ff92SAndroid Build Coastguard Worker {
379*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
380*89c4ff92SAndroid Build Coastguard Worker }
381*89c4ff92SAndroid Build Coastguard Worker
IsMeanSupported(const TensorInfo &,const TensorInfo &,const MeanDescriptor &,Optional<std::string &> reasonIfUnsupported) const382*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsMeanSupported(const TensorInfo&, // input
383*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
384*89c4ff92SAndroid Build Coastguard Worker const MeanDescriptor&, // descriptor
385*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
386*89c4ff92SAndroid Build Coastguard Worker {
387*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
388*89c4ff92SAndroid Build Coastguard Worker }
389*89c4ff92SAndroid Build Coastguard Worker
IsMemCopySupported(const armnn::TensorInfo &,const armnn::TensorInfo &,armnn::Optional<std::string &>) const390*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsMemCopySupported(const armnn::TensorInfo&, // input
391*89c4ff92SAndroid Build Coastguard Worker const armnn::TensorInfo&, // output
392*89c4ff92SAndroid Build Coastguard Worker armnn::Optional<std::string &> ) const // reasonIfUnsupported
393*89c4ff92SAndroid Build Coastguard Worker {
394*89c4ff92SAndroid Build Coastguard Worker return true;
395*89c4ff92SAndroid Build Coastguard Worker }
396*89c4ff92SAndroid Build Coastguard Worker
IsMemImportSupported(const armnn::TensorInfo &,const armnn::TensorInfo &,armnn::Optional<std::string &>) const397*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsMemImportSupported(const armnn::TensorInfo&, // input
398*89c4ff92SAndroid Build Coastguard Worker const armnn::TensorInfo&, // output
399*89c4ff92SAndroid Build Coastguard Worker armnn::Optional<std::string &> ) const // reasonIfUnsupported
400*89c4ff92SAndroid Build Coastguard Worker {
401*89c4ff92SAndroid Build Coastguard Worker return true;
402*89c4ff92SAndroid Build Coastguard Worker }
403*89c4ff92SAndroid Build Coastguard Worker
IsMergeSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const404*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsMergeSupported(const TensorInfo&, // input0
405*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
406*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
407*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
408*89c4ff92SAndroid Build Coastguard Worker {
409*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
410*89c4ff92SAndroid Build Coastguard Worker }
411*89c4ff92SAndroid Build Coastguard Worker
IsMinimumSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const412*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsMinimumSupported(const TensorInfo&, // input0
413*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
414*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
415*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
416*89c4ff92SAndroid Build Coastguard Worker {
417*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
418*89c4ff92SAndroid Build Coastguard Worker }
419*89c4ff92SAndroid Build Coastguard Worker
IsMultiplicationSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const420*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsMultiplicationSupported(const TensorInfo&, // input0
421*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
422*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
423*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
424*89c4ff92SAndroid Build Coastguard Worker {
425*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
426*89c4ff92SAndroid Build Coastguard Worker }
427*89c4ff92SAndroid Build Coastguard Worker
IsNormalizationSupported(const TensorInfo &,const TensorInfo &,const NormalizationDescriptor &,Optional<std::string &> reasonIfUnsupported) const428*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsNormalizationSupported(const TensorInfo&, // input
429*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
430*89c4ff92SAndroid Build Coastguard Worker const NormalizationDescriptor&, // descriptor
431*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
432*89c4ff92SAndroid Build Coastguard Worker {
433*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
434*89c4ff92SAndroid Build Coastguard Worker }
435*89c4ff92SAndroid Build Coastguard Worker
IsOutputSupported(const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const436*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsOutputSupported(const TensorInfo&, // output
437*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
438*89c4ff92SAndroid Build Coastguard Worker {
439*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
440*89c4ff92SAndroid Build Coastguard Worker }
441*89c4ff92SAndroid Build Coastguard Worker
IsPadSupported(const TensorInfo &,const TensorInfo &,const PadDescriptor &,Optional<std::string &> reasonIfUnsupported) const442*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsPadSupported(const TensorInfo&, // input
443*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
444*89c4ff92SAndroid Build Coastguard Worker const PadDescriptor&, // descriptor
445*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
446*89c4ff92SAndroid Build Coastguard Worker {
447*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
448*89c4ff92SAndroid Build Coastguard Worker }
449*89c4ff92SAndroid Build Coastguard Worker
IsPermuteSupported(const TensorInfo &,const TensorInfo &,const PermuteDescriptor &,Optional<std::string &> reasonIfUnsupported) const450*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsPermuteSupported(const TensorInfo&, // input
451*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
452*89c4ff92SAndroid Build Coastguard Worker const PermuteDescriptor&, // descriptor
453*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
454*89c4ff92SAndroid Build Coastguard Worker {
455*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
456*89c4ff92SAndroid Build Coastguard Worker }
457*89c4ff92SAndroid Build Coastguard Worker
IsPooling2dSupported(const TensorInfo &,const TensorInfo &,const Pooling2dDescriptor &,Optional<std::string &> reasonIfUnsupported) const458*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsPooling2dSupported(const TensorInfo&, // input
459*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
460*89c4ff92SAndroid Build Coastguard Worker const Pooling2dDescriptor&, // descriptor
461*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
462*89c4ff92SAndroid Build Coastguard Worker {
463*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
464*89c4ff92SAndroid Build Coastguard Worker }
465*89c4ff92SAndroid Build Coastguard Worker
IsPooling3dSupported(const TensorInfo &,const TensorInfo &,const Pooling3dDescriptor &,Optional<std::string &> reasonIfUnsupported) const466*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsPooling3dSupported(const TensorInfo&, // input
467*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
468*89c4ff92SAndroid Build Coastguard Worker const Pooling3dDescriptor&, // descriptor
469*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
470*89c4ff92SAndroid Build Coastguard Worker {
471*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
472*89c4ff92SAndroid Build Coastguard Worker }
473*89c4ff92SAndroid Build Coastguard Worker
IsPreCompiledSupported(const TensorInfo &,const PreCompiledDescriptor &,Optional<std::string &> reasonIfUnsupported) const474*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsPreCompiledSupported(const TensorInfo&, // input
475*89c4ff92SAndroid Build Coastguard Worker const PreCompiledDescriptor&, // descriptor
476*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
477*89c4ff92SAndroid Build Coastguard Worker {
478*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
479*89c4ff92SAndroid Build Coastguard Worker }
480*89c4ff92SAndroid Build Coastguard Worker
IsPreluSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const481*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsPreluSupported(const TensorInfo&, // input
482*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // alpha
483*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
484*89c4ff92SAndroid Build Coastguard Worker Optional<std::string &> reasonIfUnsupported) const
485*89c4ff92SAndroid Build Coastguard Worker {
486*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
487*89c4ff92SAndroid Build Coastguard Worker }
488*89c4ff92SAndroid Build Coastguard Worker
IsQuantizeSupported(const armnn::TensorInfo &,const armnn::TensorInfo &,armnn::Optional<std::string &> reasonIfUnsupported) const489*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsQuantizeSupported(const armnn::TensorInfo&, // input
490*89c4ff92SAndroid Build Coastguard Worker const armnn::TensorInfo&, // output
491*89c4ff92SAndroid Build Coastguard Worker armnn::Optional<std::string&> reasonIfUnsupported) const
492*89c4ff92SAndroid Build Coastguard Worker {
493*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
494*89c4ff92SAndroid Build Coastguard Worker }
495*89c4ff92SAndroid Build Coastguard Worker
IsQLstmSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const QLstmDescriptor &,const LstmInputParamsInfo &,Optional<std::string &> reasonIfUnsupported) const496*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsQLstmSupported(const TensorInfo&, // input
497*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // previousOutputIn
498*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // previousCellStateIn
499*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // outputStateOut
500*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // cellStateOut
501*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
502*89c4ff92SAndroid Build Coastguard Worker const QLstmDescriptor&, // descriptor
503*89c4ff92SAndroid Build Coastguard Worker const LstmInputParamsInfo&, // paramsInfo
504*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
505*89c4ff92SAndroid Build Coastguard Worker {
506*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
507*89c4ff92SAndroid Build Coastguard Worker }
508*89c4ff92SAndroid Build Coastguard Worker
IsQuantizedLstmSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const QuantizedLstmInputParamsInfo &,Optional<std::string &> reasonIfUnsupported) const509*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsQuantizedLstmSupported(const TensorInfo&, // input
510*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // previousCellStateIn
511*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // previousOutputIn
512*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // cellStateOut
513*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
514*89c4ff92SAndroid Build Coastguard Worker const QuantizedLstmInputParamsInfo&, // paramsInfo
515*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
516*89c4ff92SAndroid Build Coastguard Worker {
517*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
518*89c4ff92SAndroid Build Coastguard Worker }
519*89c4ff92SAndroid Build Coastguard Worker
IsRankSupported(const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const520*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsRankSupported(const TensorInfo&, // input
521*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
522*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
523*89c4ff92SAndroid Build Coastguard Worker {
524*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
525*89c4ff92SAndroid Build Coastguard Worker }
526*89c4ff92SAndroid Build Coastguard Worker
IsReduceSupported(const TensorInfo &,const TensorInfo &,const ReduceDescriptor &,Optional<std::string &> reasonIfUnsupported) const527*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsReduceSupported(const TensorInfo& /*input*/,
528*89c4ff92SAndroid Build Coastguard Worker const TensorInfo& /*output*/,
529*89c4ff92SAndroid Build Coastguard Worker const ReduceDescriptor& /*descriptor*/,
530*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
531*89c4ff92SAndroid Build Coastguard Worker {
532*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
533*89c4ff92SAndroid Build Coastguard Worker }
534*89c4ff92SAndroid Build Coastguard Worker
IsReshapeSupported(const TensorInfo &,const TensorInfo &,const ReshapeDescriptor &,Optional<std::string &> reasonIfUnsupported) const535*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsReshapeSupported(const TensorInfo&, // input
536*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
537*89c4ff92SAndroid Build Coastguard Worker const ReshapeDescriptor&, // descriptor
538*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
539*89c4ff92SAndroid Build Coastguard Worker {
540*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
541*89c4ff92SAndroid Build Coastguard Worker }
542*89c4ff92SAndroid Build Coastguard Worker
IsResizeSupported(const TensorInfo &,const TensorInfo &,const ResizeDescriptor &,Optional<std::string &> reasonIfUnsupported) const543*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsResizeSupported(const TensorInfo&, // input
544*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
545*89c4ff92SAndroid Build Coastguard Worker const ResizeDescriptor&, // descriptor
546*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
547*89c4ff92SAndroid Build Coastguard Worker {
548*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
549*89c4ff92SAndroid Build Coastguard Worker }
550*89c4ff92SAndroid Build Coastguard Worker
IsShapeSupported(const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const551*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsShapeSupported(const TensorInfo&, // input
552*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
553*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
554*89c4ff92SAndroid Build Coastguard Worker {
555*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
556*89c4ff92SAndroid Build Coastguard Worker }
557*89c4ff92SAndroid Build Coastguard Worker
IsSliceSupported(const TensorInfo &,const TensorInfo &,const SliceDescriptor &,Optional<std::string &> reasonIfUnsupported) const558*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsSliceSupported(const TensorInfo&, // input
559*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
560*89c4ff92SAndroid Build Coastguard Worker const SliceDescriptor&, // descriptor
561*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
562*89c4ff92SAndroid Build Coastguard Worker {
563*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
564*89c4ff92SAndroid Build Coastguard Worker }
565*89c4ff92SAndroid Build Coastguard Worker
IsSoftmaxSupported(const TensorInfo &,const TensorInfo &,const SoftmaxDescriptor &,Optional<std::string &> reasonIfUnsupported) const566*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsSoftmaxSupported(const TensorInfo&, // input
567*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
568*89c4ff92SAndroid Build Coastguard Worker const SoftmaxDescriptor&, // descriptor
569*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
570*89c4ff92SAndroid Build Coastguard Worker {
571*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
572*89c4ff92SAndroid Build Coastguard Worker }
573*89c4ff92SAndroid Build Coastguard Worker /**/
IsSpaceToBatchNdSupported(const TensorInfo &,const TensorInfo &,const SpaceToBatchNdDescriptor &,Optional<std::string &> reasonIfUnsupported) const574*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsSpaceToBatchNdSupported(const TensorInfo&, // input
575*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
576*89c4ff92SAndroid Build Coastguard Worker const SpaceToBatchNdDescriptor&, // descriptor
577*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
578*89c4ff92SAndroid Build Coastguard Worker {
579*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
580*89c4ff92SAndroid Build Coastguard Worker }
581*89c4ff92SAndroid Build Coastguard Worker
IsSpaceToDepthSupported(const TensorInfo &,const TensorInfo &,const SpaceToDepthDescriptor &,Optional<std::string &> reasonIfUnsupported) const582*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsSpaceToDepthSupported(const TensorInfo&, // input
583*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
584*89c4ff92SAndroid Build Coastguard Worker const SpaceToDepthDescriptor&, // descriptor
585*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
586*89c4ff92SAndroid Build Coastguard Worker {
587*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
588*89c4ff92SAndroid Build Coastguard Worker }
589*89c4ff92SAndroid Build Coastguard Worker
IsSplitterSupported(const TensorInfo &,const std::vector<std::reference_wrapper<TensorInfo>> &,const ViewsDescriptor &,Optional<std::string &> reasonIfUnsupported) const590*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsSplitterSupported(const TensorInfo&, // input
591*89c4ff92SAndroid Build Coastguard Worker const std::vector<std::reference_wrapper<TensorInfo>>&, // outputs
592*89c4ff92SAndroid Build Coastguard Worker const ViewsDescriptor&, // descriptor
593*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
594*89c4ff92SAndroid Build Coastguard Worker {
595*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
596*89c4ff92SAndroid Build Coastguard Worker }
597*89c4ff92SAndroid Build Coastguard Worker
IsStackSupported(const std::vector<const TensorInfo * > &,const TensorInfo &,const StackDescriptor &,Optional<std::string &> reasonIfUnsupported) const598*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsStackSupported(const std::vector<const TensorInfo*>&, // inputs
599*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
600*89c4ff92SAndroid Build Coastguard Worker const StackDescriptor&, // descriptor
601*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
602*89c4ff92SAndroid Build Coastguard Worker {
603*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
604*89c4ff92SAndroid Build Coastguard Worker }
605*89c4ff92SAndroid Build Coastguard Worker
IsStandInSupported(const std::vector<const TensorInfo * > &,const std::vector<const TensorInfo * > &,const StandInDescriptor &,Optional<std::string &> reasonIfUnsupported) const606*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsStandInSupported(const std::vector<const TensorInfo*>&, // inputs
607*89c4ff92SAndroid Build Coastguard Worker const std::vector<const TensorInfo*>&, // outputs
608*89c4ff92SAndroid Build Coastguard Worker const StandInDescriptor&, // descriptor
609*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
610*89c4ff92SAndroid Build Coastguard Worker {
611*89c4ff92SAndroid Build Coastguard Worker if (reasonIfUnsupported)
612*89c4ff92SAndroid Build Coastguard Worker {
613*89c4ff92SAndroid Build Coastguard Worker std::stringstream message;
614*89c4ff92SAndroid Build Coastguard Worker message << "StandIn layer is not executable via backends";
615*89c4ff92SAndroid Build Coastguard Worker
616*89c4ff92SAndroid Build Coastguard Worker reasonIfUnsupported.value() = message.str();
617*89c4ff92SAndroid Build Coastguard Worker }
618*89c4ff92SAndroid Build Coastguard Worker
619*89c4ff92SAndroid Build Coastguard Worker return false;
620*89c4ff92SAndroid Build Coastguard Worker }
621*89c4ff92SAndroid Build Coastguard Worker
IsStridedSliceSupported(const TensorInfo &,const TensorInfo &,const StridedSliceDescriptor &,Optional<std::string &> reasonIfUnsupported) const622*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsStridedSliceSupported(const TensorInfo&, // input
623*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
624*89c4ff92SAndroid Build Coastguard Worker const StridedSliceDescriptor&, // descriptor
625*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
626*89c4ff92SAndroid Build Coastguard Worker {
627*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
628*89c4ff92SAndroid Build Coastguard Worker }
629*89c4ff92SAndroid Build Coastguard Worker
IsSubtractionSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const630*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsSubtractionSupported(const TensorInfo&, // input0
631*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
632*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
633*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
634*89c4ff92SAndroid Build Coastguard Worker {
635*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
636*89c4ff92SAndroid Build Coastguard Worker }
637*89c4ff92SAndroid Build Coastguard Worker
IsSwitchSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,Optional<std::string &> reasonIfUnsupported) const638*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsSwitchSupported(const TensorInfo&, // input0
639*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // input1
640*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output0
641*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output1
642*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
643*89c4ff92SAndroid Build Coastguard Worker {
644*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
645*89c4ff92SAndroid Build Coastguard Worker }
646*89c4ff92SAndroid Build Coastguard Worker
IsTransposeConvolution2dSupported(const TensorInfo &,const TensorInfo &,const TransposeConvolution2dDescriptor &,const TensorInfo &,const Optional<TensorInfo> &,Optional<std::string &> reasonIfUnsupported) const647*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsTransposeConvolution2dSupported(const TensorInfo&, // input
648*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
649*89c4ff92SAndroid Build Coastguard Worker const TransposeConvolution2dDescriptor&, // descriptor
650*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // weights
651*89c4ff92SAndroid Build Coastguard Worker const Optional<TensorInfo>&, // biases
652*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
653*89c4ff92SAndroid Build Coastguard Worker {
654*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
655*89c4ff92SAndroid Build Coastguard Worker }
656*89c4ff92SAndroid Build Coastguard Worker
IsTransposeSupported(const TensorInfo &,const TensorInfo &,const TransposeDescriptor &,Optional<std::string &> reasonIfUnsupported) const657*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsTransposeSupported(const TensorInfo&, // input
658*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
659*89c4ff92SAndroid Build Coastguard Worker const TransposeDescriptor&, // descriptor
660*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
661*89c4ff92SAndroid Build Coastguard Worker {
662*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
663*89c4ff92SAndroid Build Coastguard Worker }
664*89c4ff92SAndroid Build Coastguard Worker
IsUnidirectionalSequenceLstmSupported(const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const TensorInfo &,const LstmDescriptor &,const LstmInputParamsInfo &,Optional<std::string &> reasonIfUnsupported) const665*89c4ff92SAndroid Build Coastguard Worker bool LayerSupportBase::IsUnidirectionalSequenceLstmSupported(const TensorInfo&, // input
666*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // outputStateIn
667*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // cellStateIn
668*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // outputStateOut
669*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // cellStateOut
670*89c4ff92SAndroid Build Coastguard Worker const TensorInfo&, // output
671*89c4ff92SAndroid Build Coastguard Worker const LstmDescriptor&, // descriptor
672*89c4ff92SAndroid Build Coastguard Worker const LstmInputParamsInfo&, // paramsInfo
673*89c4ff92SAndroid Build Coastguard Worker Optional<std::string&> reasonIfUnsupported) const
674*89c4ff92SAndroid Build Coastguard Worker {
675*89c4ff92SAndroid Build Coastguard Worker return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported);
676*89c4ff92SAndroid Build Coastguard Worker }
677*89c4ff92SAndroid Build Coastguard Worker
678*89c4ff92SAndroid Build Coastguard Worker } // namespace armnn
679