IVGCVSW-2467 Remove GetDataType<T> function
[platform/upstream/armnn.git] / src / backends / backendsCommon / test / LayerTests.hpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6
7 #include <armnn/ArmNN.hpp>
8 #include <armnn/Tensor.hpp>
9
10 #include <Half.hpp>
11
12 #include <backendsCommon/IBackendInternal.hpp>
13 #include <backendsCommon/IMemoryManager.hpp>
14
15 #include <boost/multi_array.hpp>
16 #include <boost/assert.hpp>
17
18 #include <array>
19
20 // Layer callables.
21
22 namespace armnn
23 {
24 class IWorkloadFactory;
25 }
26
27 template <std::size_t n>
28 boost::array<unsigned int, n> GetTensorShapeAsArray(const armnn::TensorInfo& tensorInfo)
29 {
30     BOOST_ASSERT_MSG(n == tensorInfo.GetNumDimensions(),
31         "Attempting to construct a shape array of mismatching size");
32
33     boost::array<unsigned int, n> shape;
34     for (unsigned int i = 0; i < n; i++)
35     {
36         shape[i] = tensorInfo.GetShape()[i];
37     }
38     return shape;
39 }
40
41 template <typename T, std::size_t n>
42 struct LayerTestResult
43 {
44     LayerTestResult(const armnn::TensorInfo& outputInfo)
45     {
46         auto shape( GetTensorShapeAsArray<n>(outputInfo) );
47         output.resize(shape);
48         outputExpected.resize(shape);
49         supported = true;
50     }
51
52     boost::multi_array<T, n> output;
53     boost::multi_array<T, n> outputExpected;
54     bool supported;
55 };
56
57 LayerTestResult<float, 4> SimpleConvolution2d3x5Test(
58     armnn::IWorkloadFactory& workloadFactory,
59     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
60     bool biasEnabled,
61     const armnn::DataLayout layout);
62
63 LayerTestResult<float, 4> SimpleConvolution2d3x3Test(
64     armnn::IWorkloadFactory& workloadFactory,
65     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
66     bool biasEnabled,
67     const armnn::DataLayout layout);
68
69 LayerTestResult<float, 4> SimpleConvolution2d3x3Stride2x2Test(
70     armnn::IWorkloadFactory& workloadFactory,
71     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
72     bool biasEnabled,
73     const armnn::DataLayout layout);
74
75 LayerTestResult<float, 4> SimpleConvolution2d3x3NhwcTest(
76     armnn::IWorkloadFactory& workloadFactory,
77     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
78     bool biasEnabled);
79
80 LayerTestResult<float, 4>
81 Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest(
82     armnn::IWorkloadFactory& workloadFactory,
83     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
84     const armnn::DataLayout layout);
85
86 LayerTestResult<float, 4> Convolution2dAsymmetricPaddingTest(
87     armnn::IWorkloadFactory& workloadFactory,
88     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
89     const armnn::DataLayout layout);
90
91 LayerTestResult<float,   4> Convolution1dTest(
92     armnn::IWorkloadFactory& workloadFactory,
93     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
94     bool biasEnabled);
95
96 LayerTestResult<uint8_t, 4> Convolution1dUint8Test(
97     armnn::IWorkloadFactory& workloadFactory,
98     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
99     bool biasEnabled);
100
101 LayerTestResult<float, 4> DepthwiseConvolution2dTest(
102     armnn::IWorkloadFactory& workloadFactory,
103     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
104     bool biasEnabled,
105     const armnn::DataLayout layout);
106
107 LayerTestResult<float, 4> DepthwiseConvolution2dDepthNhwcTest(
108     armnn::IWorkloadFactory& workloadFactory,
109     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
110     bool biasEnabled);
111
112 LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul1Test(
113     armnn::IWorkloadFactory& workloadFactory,
114     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
115     bool biasEnabled,
116     const armnn::DataLayout layout);
117
118 LayerTestResult<float, 4> DepthwiseConvolution2dAsymmetricTest(
119     armnn::IWorkloadFactory& workloadFactory,
120     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
121     bool biasEnabled,
122     const armnn::DataLayout layout);
123
124 LayerTestResult<float, 4> CompareDepthwiseConvolution2dFloatTest(
125     armnn::IWorkloadFactory& workloadFactory,
126     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
127     armnn::IWorkloadFactory& refWorkloadFactory,
128     const armnn::DataLayout layout);
129
130 LayerTestResult<uint8_t, 4> CompareDepthwiseConvolution2dUint8Test(
131     armnn::IWorkloadFactory& workloadFactory,
132     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
133     armnn::IWorkloadFactory& refWorkloadFactory,
134     const armnn::DataLayout layout);
135
136 LayerTestResult<float,   4> SimpleMaxPooling2dSize2x2Stride2x2Test(
137     armnn::IWorkloadFactory& workloadFactory,
138     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
139     bool forceNoPadding);
140
141 LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize2x2Stride2x2Uint8Test(
142     armnn::IWorkloadFactory& workloadFactory,
143     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
144     bool forceNoPadding);
145
146 LayerTestResult<float,   4> SimpleMaxPooling2dSize3x3Stride2x4Test(
147     armnn::IWorkloadFactory& workloadFactory,
148     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
149     bool forceNoPadding);
150
151 LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize3x3Stride2x4Uint8Test(
152     armnn::IWorkloadFactory& workloadFactory,
153     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
154     bool forceNoPadding );
155
156 LayerTestResult<float,   4> IgnorePaddingSimpleMaxPooling2dTest(
157     armnn::IWorkloadFactory& workloadFactory,
158     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
159
160 LayerTestResult<uint8_t, 4> IgnorePaddingSimpleMaxPooling2dUint8Test(
161     armnn::IWorkloadFactory& workloadFactory,
162     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
163
164 LayerTestResult<float,   4> IgnorePaddingMaxPooling2dSize3Test(
165     armnn::IWorkloadFactory& workloadFactory,
166     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
167
168 LayerTestResult<uint8_t, 4> IgnorePaddingMaxPooling2dSize3Uint8Test(
169     armnn::IWorkloadFactory& workloadFactory,
170     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
171
172 LayerTestResult<float,   4> SimpleMaxPooling2dTest(
173     armnn::IWorkloadFactory& workloadFactory,
174     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
175     const armnn::DataLayout dataLayout);
176
177 LayerTestResult<uint8_t, 4> SimpleMaxPooling2dUint8Test(
178     armnn::IWorkloadFactory& workloadFactory,
179     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
180     const armnn::DataLayout dataLayout);
181
182 LayerTestResult<float,   4> SimpleAveragePooling2dTest(
183     armnn::IWorkloadFactory& workloadFactory,
184     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
185     const armnn::DataLayout dataLayout);
186
187 LayerTestResult<uint8_t, 4> SimpleAveragePooling2dUint8Test(
188     armnn::IWorkloadFactory& workloadFactory,
189     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
190     const armnn::DataLayout dataLayout);
191
192 LayerTestResult<float,   4> IgnorePaddingAveragePooling2dSize3x2Stride2x2Test(
193     armnn::IWorkloadFactory& workloadFactory,
194     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
195     bool forceNoPadding);
196
197 LayerTestResult<float,   4> IgnorePaddingSimpleAveragePooling2dTest(
198     armnn::IWorkloadFactory& workloadFactory,
199     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
200
201 LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dUint8Test(
202     armnn::IWorkloadFactory& workloadFactory,
203     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
204
205 LayerTestResult<float, 4>   IgnorePaddingSimpleAveragePooling2dNoPaddingTest(
206     armnn::IWorkloadFactory& workloadFactory,
207     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
208
209 LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingUint8Test(
210     armnn::IWorkloadFactory& workloadFactory,
211     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
212
213 LayerTestResult<float,   4> IgnorePaddingAveragePooling2dSize3Test(
214     armnn::IWorkloadFactory& workloadFactory,
215     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
216
217 LayerTestResult<uint8_t, 4> IgnorePaddingAveragePooling2dSize3Uint8Test(
218     armnn::IWorkloadFactory& workloadFactory,
219     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
220
221 LayerTestResult<float,   4> SimpleL2Pooling2dTest(
222     armnn::IWorkloadFactory& workloadFactory,
223     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
224     const armnn::DataLayout dataLayout);
225
226 LayerTestResult<uint8_t, 4> SimpleL2Pooling2dUint8Test(
227     armnn::IWorkloadFactory& workloadFactory,
228     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
229     const armnn::DataLayout dataLayout);
230
231 LayerTestResult<float,   4> L2Pooling2dSize3Stride1Test(
232     armnn::IWorkloadFactory& workloadFactory,
233     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
234
235 LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride1Uint8Test(
236     armnn::IWorkloadFactory& workloadFactory,
237     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
238
239 LayerTestResult<float,   4> L2Pooling2dSize3Stride3Test(
240     armnn::IWorkloadFactory& workloadFactory,
241     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
242
243 LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride3Uint8Test(
244     armnn::IWorkloadFactory& workloadFactory,
245     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
246
247 LayerTestResult<float,   4> L2Pooling2dSize3Stride4Test(
248     armnn::IWorkloadFactory& workloadFactory,
249     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
250
251 LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride4Uint8Test(
252     armnn::IWorkloadFactory& workloadFactory,
253     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
254
255 LayerTestResult<float,   4> L2Pooling2dSize7Test(
256     armnn::IWorkloadFactory& workloadFactory,
257     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
258
259 LayerTestResult<uint8_t, 4> L2Pooling2dSize7Uint8Test(
260     armnn::IWorkloadFactory& workloadFactory,
261     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
262
263 LayerTestResult<float,   4> L2Pooling2dSize9Test(
264     armnn::IWorkloadFactory& workloadFactory,
265     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
266
267 LayerTestResult<uint8_t, 4> L2Pooling2dSize9Uint8Test(
268     armnn::IWorkloadFactory& workloadFactory,
269     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
270
271 LayerTestResult<float,   4> LargeTensorsAveragePooling2dTest(
272     armnn::IWorkloadFactory& workloadFactory,
273     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
274
275 LayerTestResult<uint8_t, 4> LargeTensorsAveragePooling2dUint8Test(
276     armnn::IWorkloadFactory& workloadFactory,
277     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
278
279 LayerTestResult<float,   4> IgnorePaddingSimpleL2Pooling2dTest(
280     armnn::IWorkloadFactory& workloadFactory,
281     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
282
283 LayerTestResult<uint8_t, 4> IgnorePaddingSimpleL2Pooling2dUint8Test(
284     armnn::IWorkloadFactory& workloadFactory,
285     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
286
287 LayerTestResult<float,   4> IgnorePaddingL2Pooling2dSize3Test(
288     armnn::IWorkloadFactory& workloadFactory,
289     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
290
291 LayerTestResult<uint8_t, 4> IgnorePaddingL2Pooling2dSize3Uint8Test(
292     armnn::IWorkloadFactory& workloadFactory,
293     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
294
295 LayerTestResult<float,   4> AsymmetricNonSquarePooling2dTest(
296     armnn::IWorkloadFactory& workloadFactory,
297     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
298
299 LayerTestResult<uint8_t, 4> AsymmetricNonSquarePooling2dUint8Test(
300     armnn::IWorkloadFactory& workloadFactory,
301     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
302
303 LayerTestResult<float, 4> ComparePooling2dTest(
304     armnn::IWorkloadFactory& workloadFactory,
305     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
306     armnn::IWorkloadFactory& refWorkloadFactory,
307     armnn::PoolingAlgorithm  poolingType);
308
309 LayerTestResult<uint8_t, 4> ComparePooling2dUint8Test(
310     armnn::IWorkloadFactory& workloadFactory,
311     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
312     armnn::IWorkloadFactory& refWorkloadFactory,
313     armnn::PoolingAlgorithm  poolingType);
314
315 LayerTestResult<float, 4> ConstantLinearActivationTest(
316     armnn::IWorkloadFactory& workloadFactory,
317     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
318
319 LayerTestResult<float, 4> SimpleNormalizationAcrossTest(
320     armnn::IWorkloadFactory& workloadFactory,
321     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
322
323 LayerTestResult<float, 4> SimpleNormalizationWithinTest(
324     armnn::IWorkloadFactory& workloadFactory,
325     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
326
327 LayerTestResult<float,4> SimpleNormalizationAcrossNhwcTest(
328     armnn::IWorkloadFactory& workloadFactory,
329     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
330
331 LayerTestResult<float, 2> SimpleSoftmaxTest(
332     armnn::IWorkloadFactory& workloadFactory,
333     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
334     float beta);
335
336 LayerTestResult<uint8_t, 2> SimpleSoftmaxUint8Test(
337     armnn::IWorkloadFactory& workloadFactory,
338     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
339     float beta);
340
341 LayerTestResult<float, 4> SimpleSigmoidTest(
342     armnn::IWorkloadFactory& workloadFactory,
343     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
344
345 LayerTestResult<float, 4> SimpleReshapeFloat32Test(
346     armnn::IWorkloadFactory& workloadFactory,
347     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
348
349 LayerTestResult<uint8_t, 4> SimpleReshapeUint8Test(
350     armnn::IWorkloadFactory& workloadFactory,
351     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
352
353 LayerTestResult<float, 4> SimpleFloorTest(
354     armnn::IWorkloadFactory& workloadFactory,
355     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
356
357 LayerTestResult<float, 1> Concatenation1dTest(
358     armnn::IWorkloadFactory& workloadFactory,
359     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
360
361 LayerTestResult<float, 2> Concatenation2dDim0Test(
362     armnn::IWorkloadFactory& workloadFactory,
363     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
364
365 LayerTestResult<float, 2> Concatenation2dDim1Test(
366     armnn::IWorkloadFactory& workloadFactory,
367     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
368
369 LayerTestResult<float, 2> Concatenation2dDim0DiffInputDimsTest(
370     armnn::IWorkloadFactory& workloadFactory,
371     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
372
373 LayerTestResult<float, 2> Concatenation2dDim1DiffInputDimsTest(
374     armnn::IWorkloadFactory& workloadFactory,
375     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
376
377 LayerTestResult<float, 3> Concatenation3dDim0Test(
378     armnn::IWorkloadFactory& workloadFactory,
379     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
380
381 LayerTestResult<float, 3> Concatenation3dDim1Test(
382     armnn::IWorkloadFactory& workloadFactory,
383     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
384
385 LayerTestResult<float, 3> Concatenation3dDim2Test(
386     armnn::IWorkloadFactory& workloadFactory,
387     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
388     bool useSubtensor);
389
390 LayerTestResult<float, 3> Concatenation3dDim0DiffInputDimsTest(
391     armnn::IWorkloadFactory& workloadFactory,
392     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
393
394 LayerTestResult<float, 3> Concatenation3dDim1DiffInputDimsTest(
395     armnn::IWorkloadFactory& workloadFactory,
396     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
397
398 LayerTestResult<float, 3> Concatenation3dDim2DiffInputDimsTest(
399     armnn::IWorkloadFactory& workloadFactory,
400     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
401     bool useSubtensor);
402
403 LayerTestResult<float, 4> Concatenation4dDim0Test(
404     armnn::IWorkloadFactory& workloadFactory,
405     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
406
407 LayerTestResult<float, 4> Concatenation4dDim1Test(
408     armnn::IWorkloadFactory& workloadFactory,
409     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
410
411 LayerTestResult<float, 4> Concatenation4dDim2Test(
412     armnn::IWorkloadFactory& workloadFactory,
413     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
414
415 LayerTestResult<float, 4> Concatenation4dDim3Test(
416     armnn::IWorkloadFactory& workloadFactory,
417     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
418     bool useSubtensor);
419
420 LayerTestResult<float, 4> Concatenation4dDiffShapeDim0Test(
421     armnn::IWorkloadFactory& workloadFactory,
422     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
423
424 LayerTestResult<float, 4> Concatenation4dDiffShapeDim1Test(
425     armnn::IWorkloadFactory& workloadFactory,
426     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
427
428 LayerTestResult<float, 4> Concatenation4dDiffShapeDim2Test(
429     armnn::IWorkloadFactory& workloadFactory,
430     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
431
432 LayerTestResult<float, 4> Concatenation4dDiffShapeDim3Test(
433     armnn::IWorkloadFactory& workloadFactory,
434     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
435     bool useSubtensor);
436
437 LayerTestResult<uint8_t, 4> Concatenation4dDim0Uint8Test(
438     armnn::IWorkloadFactory& workloadFactory,
439     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
440
441 LayerTestResult<uint8_t, 4> Concatenation4dDim1Uint8Test(
442     armnn::IWorkloadFactory& workloadFactory,
443     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
444
445 LayerTestResult<uint8_t, 4> Concatenation4dDim2Uint8Test(
446     armnn::IWorkloadFactory& workloadFactory,
447     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
448
449 LayerTestResult<uint8_t, 4> Concatenation4dDim3Uint8Test(
450     armnn::IWorkloadFactory& workloadFactory,
451     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
452     bool useSubtensor);
453
454 LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim0Uint8Test(
455     armnn::IWorkloadFactory& workloadFactory,
456     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
457
458 LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim1Uint8Test(
459     armnn::IWorkloadFactory& workloadFactory,
460     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
461
462 LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim2Uint8Test(
463     armnn::IWorkloadFactory& workloadFactory,
464     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
465
466 LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim3Uint8Test(
467     armnn::IWorkloadFactory& workloadFactory,
468     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
469     bool useSubtensor);
470
471 LayerTestResult<uint8_t, 4> SimpleSigmoidUint8Test(
472     armnn::IWorkloadFactory& workloadFactory,
473     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
474
475 LayerTestResult<float, 4> CompareConvolution2dTest(
476     armnn::IWorkloadFactory& workloadFactory,
477     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
478     armnn::IWorkloadFactory& refWorkloadFactory);
479
480 template<typename T>
481 LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest(
482     armnn::IWorkloadFactory& workloadFactory,
483     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
484     armnn::IWorkloadFactory& refWorkloadFactory,
485     const armnn::DataLayout layout);
486
487 LayerTestResult<float, 4> CompareNormalizationTest(
488     armnn::IWorkloadFactory& workloadFactory,
489     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
490     armnn::IWorkloadFactory& refWorkloadFactory,
491     armnn::NormalizationAlgorithmChannel normChannel,
492     armnn::NormalizationAlgorithmMethod normMethod);
493
494 LayerTestResult<float, 2> CompareSoftmaxTest(
495     armnn::IWorkloadFactory& workloadFactory,
496     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
497     armnn::IWorkloadFactory& refWorkloadFactory,
498     float beta);
499
500 LayerTestResult<float, 2> FullyConnectedFloat32Test(
501     armnn::IWorkloadFactory& workloadFactory,
502     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
503     bool biasEnabled,
504     bool transposeWeights);
505
506 std::vector<LayerTestResult<float, 3>> SplitterTest(
507     armnn::IWorkloadFactory& workloadFactory,
508     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
509
510 LayerTestResult<float, 3> CopyViaSplitterTest(
511     armnn::IWorkloadFactory& workloadFactory,
512     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
513
514 LayerTestResult<float, 3> MergerTest(
515     armnn::IWorkloadFactory& workloadFactory,
516     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
517
518 LayerTestResult<float, 4> AdditionTest(
519     armnn::IWorkloadFactory& workloadFactory,
520     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
521
522 LayerTestResult<float, 4> AdditionBroadcast1ElementTest(
523     armnn::IWorkloadFactory& workloadFactory,
524     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
525
526 LayerTestResult<float, 4> AdditionBroadcastTest(
527     armnn::IWorkloadFactory& workloadFactory,
528     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
529
530 LayerTestResult<float, 4> CompareAdditionTest(
531     armnn::IWorkloadFactory& workloadFactory,
532     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
533     armnn::IWorkloadFactory& refWorkloadFactory);
534
535 LayerTestResult<float, 4> SubtractionTest(
536     armnn::IWorkloadFactory& workloadFactory,
537     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
538
539 LayerTestResult<float, 4> SubtractionBroadcast1ElementTest(
540     armnn::IWorkloadFactory& workloadFactory,
541     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
542
543 LayerTestResult<float, 4> SubtractionBroadcastTest(
544     armnn::IWorkloadFactory& workloadFactory,
545     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
546
547 LayerTestResult<float, 4> CompareActivationTest(
548     armnn::IWorkloadFactory& workloadFactory,
549     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
550     armnn::IWorkloadFactory& refWorkloadFactory,
551     armnn::ActivationFunction f,
552     unsigned int batchSize);
553
554 LayerTestResult<float, 4> DivisionTest(
555     armnn::IWorkloadFactory& workloadFactory,
556     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
557
558 LayerTestResult<float, 4> DivisionByZeroTest(
559     armnn::IWorkloadFactory& workloadFactory,
560     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
561
562 LayerTestResult<float, 4> DivisionBroadcast1ElementTest(
563     armnn::IWorkloadFactory& workloadFactory,
564     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
565
566 LayerTestResult<float, 4> DivisionBroadcast1DVectorTest(
567     armnn::IWorkloadFactory& workloadFactory,
568     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
569
570 LayerTestResult<float, 4> MultiplicationTest(
571     armnn::IWorkloadFactory& workloadFactory,
572     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
573
574 LayerTestResult<float, 4> MultiplicationBroadcast1ElementTest(
575     armnn::IWorkloadFactory& workloadFactory,
576     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
577
578 LayerTestResult<float, 4> MultiplicationBroadcast1DVectorTest(
579     armnn::IWorkloadFactory& workloadFactory,
580     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
581
582 LayerTestResult<float, 4> CompareMultiplicationTest(
583     armnn::IWorkloadFactory& workloadFactory,
584     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
585     armnn::IWorkloadFactory& refWorkloadFactory);
586
587 LayerTestResult<float, 4> BatchNormTest(
588     armnn::IWorkloadFactory& workloadFactory,
589     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
590
591 LayerTestResult<float, 4> BatchNormNhwcTest(
592     armnn::IWorkloadFactory& workloadFactory,
593     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
594
595 LayerTestResult<float, 4> CompareBatchNormTest(
596     armnn::IWorkloadFactory& workloadFactory,
597     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
598     armnn::IWorkloadFactory& refWorkloadFactory);
599
600 LayerTestResult<float, 4> BoundedReLuUpperAndLowerBoundTest(
601     armnn::IWorkloadFactory& workloadFactory,
602     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
603
604 LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperAndLowerBoundTest(
605     armnn::IWorkloadFactory& workloadFactor,
606     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManagery);
607
608 LayerTestResult<float, 4> BoundedReLuUpperBoundOnlyTest(
609     armnn::IWorkloadFactory& workloadFactory,
610     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
611
612 LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperBoundOnlyTest(
613     armnn::IWorkloadFactory& workloadFactory,
614     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
615
616 LayerTestResult<float, 4> CompareBoundedReLuTest(
617     armnn::IWorkloadFactory& workloadFactory,
618     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
619     armnn::IWorkloadFactory& refWorkloadFactory,
620     float upperBound,
621     float lowerBound);
622
623 // Tests that the output should be identical to the input when the output dimensions match the input ones.
624 LayerTestResult<float, 4> ResizeBilinearNopTest(
625     armnn::IWorkloadFactory& workloadFactory,
626     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
627     const armnn::DataLayout dataLayout);
628
629 // Tests the behaviour of the resize bilinear operation when rescaling a 2x2 image into a 1x1 image.
630 LayerTestResult<float, 4> SimpleResizeBilinearTest(
631     armnn::IWorkloadFactory& workloadFactory,
632     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
633     const armnn::DataLayout dataLayout);
634
635 // Tests the resize bilinear for minification of a square input matrix (also: input dimensions are a
636 // multiple of output dimensions).
637 LayerTestResult<float, 4> ResizeBilinearSqMinTest(
638     armnn::IWorkloadFactory& workloadFactory,
639     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
640     const armnn::DataLayout dataLayout);
641
642 // Tests the resize bilinear for minification (output dimensions smaller than input dimensions).
643 LayerTestResult<float, 4> ResizeBilinearMinTest(
644     armnn::IWorkloadFactory& workloadFactory,
645     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
646     const armnn::DataLayout dataLayout);
647
648 // Tests the resize bilinear for magnification (output dimensions bigger than input dimensions).
649 LayerTestResult<float, 4> ResizeBilinearMagTest(
650     armnn::IWorkloadFactory& workloadFactory,
651     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
652     const armnn::DataLayout  dataLayout);
653
654 LayerTestResult<float, 2> Rsqrt2dTestCommon(
655         armnn::IWorkloadFactory& workloadFactory,
656         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
657         const armnn::TensorInfo inputTensorInfo,
658         const armnn::TensorInfo outputTensorInfo,
659         std::vector<float> inputValues,
660         std::vector<float> expectedOutputValues);
661
662 LayerTestResult<float, 2> Rsqrt2dTest(
663     armnn::IWorkloadFactory& workloadFactory,
664     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
665
666 LayerTestResult<float, 3> Rsqrt3dTest(
667     armnn::IWorkloadFactory& workloadFactory,
668     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
669
670 LayerTestResult<float, 2> RsqrtZeroTest(
671     armnn::IWorkloadFactory& workloadFactory,
672     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
673
674 LayerTestResult<float, 2> RsqrtNegativeTest(
675     armnn::IWorkloadFactory& workloadFactory,
676     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
677
678 LayerTestResult<float, 4> BatchNormTest(
679     armnn::IWorkloadFactory& workloadFactory,
680     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
681
682 LayerTestResult<float, 4> BatchNormNhwcTest(
683     armnn::IWorkloadFactory& workloadFactory,
684     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
685
686 LayerTestResult<float, 2> FakeQuantizationTest(
687     armnn::IWorkloadFactory& workloadFactory,
688     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
689
690 LayerTestResult<float, 4> L2Normalization1dTest(
691     armnn::IWorkloadFactory& workloadFactory,
692     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
693     const armnn::DataLayout layout);
694
695 LayerTestResult<float, 4> L2Normalization2dTest(
696     armnn::IWorkloadFactory& workloadFactory,
697     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
698     const armnn::DataLayout layout);
699
700 LayerTestResult<float, 4> L2Normalization3dTest(
701     armnn::IWorkloadFactory& workloadFactory,
702     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
703     const armnn::DataLayout layout);
704
705 LayerTestResult<float, 4> L2Normalization4dTest(
706     armnn::IWorkloadFactory& workloadFactory,
707     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
708     const armnn::DataLayout layout);
709
710 LayerTestResult<float, 4> ConstantTest(
711     armnn::IWorkloadFactory& workloadFactory,
712     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
713
714 LayerTestResult<uint8_t, 4> ConstantTestUint8(
715     armnn::IWorkloadFactory& workloadFactory,
716     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
717
718 LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
719     armnn::IWorkloadFactory& workloadFactory,
720     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
721     float upperBound);
722
723 LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
724     armnn::IWorkloadFactory& workloadFactory,
725     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
726     float upperBound,
727     float lowerBound);
728
729 LayerTestResult<uint8_t, 2> FullyConnectedUint8Test(
730     armnn::IWorkloadFactory& workloadFactory,
731     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
732     bool biasEnabled);
733
734 std::vector<LayerTestResult<uint8_t, 3>> SplitterUint8Test(
735     armnn::IWorkloadFactory& workloadFactory,
736     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
737
738 LayerTestResult<uint8_t, 3> CopyViaSplitterUint8Test(
739     armnn::IWorkloadFactory& workloadFactory,
740     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
741
742 LayerTestResult<uint8_t, 3> MergerUint8Test(
743     armnn::IWorkloadFactory& workloadFactory,
744     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
745
746 LayerTestResult<uint8_t, 4> AdditionUint8Test(
747     armnn::IWorkloadFactory& workloadFactory,
748     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
749
750 LayerTestResult<uint8_t, 4> AdditionBroadcast1ElementUint8Test(
751     armnn::IWorkloadFactory& workloadFactory,
752     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
753
754 LayerTestResult<uint8_t, 4> AdditionBroadcastUint8Test(
755     armnn::IWorkloadFactory& workloadFactory,
756     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
757
758 LayerTestResult<uint8_t, 4> SubtractionUint8Test(
759     armnn::IWorkloadFactory& workloadFactory,
760     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
761
762 LayerTestResult<uint8_t, 4> SubtractionBroadcast1ElementUint8Test(
763     armnn::IWorkloadFactory& workloadFactory,
764     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
765
766 LayerTestResult<uint8_t, 4> SubtractionBroadcastUint8Test(
767     armnn::IWorkloadFactory& workloadFactory,
768     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
769
770 LayerTestResult<uint8_t, 4> CompareActivationUint8Test(
771     armnn::IWorkloadFactory& workloadFactory,
772     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
773     armnn::IWorkloadFactory& refWorkloadFactory,
774     armnn::ActivationFunction f);
775
776 LayerTestResult<uint8_t, 2> CompareSoftmaxUint8Test(
777     armnn::IWorkloadFactory& workloadFactory,
778     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
779     armnn::IWorkloadFactory& refWorkloadFactory,
780     float beta);
781
782 LayerTestResult<uint8_t, 4> MultiplicationUint8Test(
783     armnn::IWorkloadFactory& workloadFactory,
784     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
785
786 LayerTestResult<uint8_t, 4> MultiplicationBroadcast1ElementUint8Test(
787     armnn::IWorkloadFactory& workloadFactory,
788     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
789
790 LayerTestResult<uint8_t, 4> MultiplicationBroadcast1DVectorUint8Test(
791     armnn::IWorkloadFactory& workloadFactory,
792     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
793
794 LayerTestResult<uint8_t, 4> DivisionUint8Test(
795     armnn::IWorkloadFactory& workloadFactory,
796     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
797
798 LayerTestResult<uint8_t, 4> DivisionBroadcast1ElementUint8Test(
799     armnn::IWorkloadFactory& workloadFactory,
800     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
801
802 LayerTestResult<uint8_t, 4> DivisionBroadcast1DVectorUint8Test(
803     armnn::IWorkloadFactory& workloadFactory,
804     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
805
806 LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test(
807     armnn::IWorkloadFactory& workloadFactory,
808     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
809     bool biasEnabled,
810     const armnn::DataLayout layout);
811
812 LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test(
813     armnn::IWorkloadFactory& workloadFactory,
814     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
815     bool biasEnabled,
816     const armnn::DataLayout layout);
817
818 LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test(
819     armnn::IWorkloadFactory& workloadFactory,
820     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
821     bool biasEnabled,
822     const armnn::DataLayout layout);
823
824 LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test(
825     armnn::IWorkloadFactory& workloadFactory,
826     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
827     bool biasEnabled,
828     const armnn::DataLayout layout);
829
830 LayerTestResult<uint8_t, 4> ConstantLinearActivationUint8Test(
831     armnn::IWorkloadFactory& workloadFactory,
832     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
833
834 LayerTestResult<uint8_t, 4> ResizeBilinearNopUint8Test(
835     armnn::IWorkloadFactory& workloadFactory,
836     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
837
838 LayerTestResult<uint8_t, 4> SimpleResizeBilinearUint8Test(
839     armnn::IWorkloadFactory& workloadFactory,
840     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
841
842 LayerTestResult<uint8_t, 4> ResizeBilinearSqMinUint8Test(
843     armnn::IWorkloadFactory& workloadFactory,
844     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
845
846 LayerTestResult<uint8_t, 4> ResizeBilinearMinUint8Test(
847     armnn::IWorkloadFactory& workloadFactory,
848     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
849
850 LayerTestResult<uint8_t, 4> ResizeBilinearMagUint8Test(
851     armnn::IWorkloadFactory& workloadFactory,
852     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
853
854 LayerTestResult<uint8_t, 4> BatchNormUint8Test(
855     armnn::IWorkloadFactory& workloadFactory,
856     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
857
858 LayerTestResult<uint8_t, 4> BatchNormUint8NhwcTest(
859     armnn::IWorkloadFactory& workloadFactory,
860     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
861
862 LayerTestResult<uint8_t, 4> ConstantUint8Test(
863     armnn::IWorkloadFactory& workloadFactory,
864     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
865
866 LayerTestResult<uint8_t, 1> Concatenation1dUint8Test(
867     armnn::IWorkloadFactory& workloadFactory,
868     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
869
870 LayerTestResult<uint8_t, 2> Concatenation2dDim0Uint8Test(
871     armnn::IWorkloadFactory& workloadFactory,
872     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
873
874 LayerTestResult<uint8_t, 2> Concatenation2dDim1Uint8Test(
875     armnn::IWorkloadFactory& workloadFactory,
876     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
877
878 LayerTestResult<uint8_t, 2> Concatenation2dDim0DiffInputDimsUint8Test(
879     armnn::IWorkloadFactory& workloadFactory,
880     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
881
882 LayerTestResult<uint8_t, 2> Concatenation2dDim1DiffInputDimsUint8Test(
883     armnn::IWorkloadFactory& workloadFactory,
884     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
885
886 LayerTestResult<uint8_t, 3> Concatenation3dDim0Uint8Test(
887     armnn::IWorkloadFactory& workloadFactory,
888     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
889
890 LayerTestResult<uint8_t, 3> Concatenation3dDim1Uint8Test(
891     armnn::IWorkloadFactory& workloadFactory,
892     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
893
894 LayerTestResult<uint8_t, 3> Concatenation3dDim2Uint8Test(
895     armnn::IWorkloadFactory& workloadFactory,
896     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
897     bool useSubtensor);
898
899 LayerTestResult<uint8_t, 3> Concatenation3dDim0DiffInputDimsUint8Test(
900     armnn::IWorkloadFactory& workloadFactory,
901     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
902
903 LayerTestResult<uint8_t, 3> Concatenation3dDim1DiffInputDimsUint8Test(
904     armnn::IWorkloadFactory& workloadFactory,
905     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
906
907 LayerTestResult<uint8_t, 3> Concatenation3dDim2DiffInputDimsUint8Test(
908     armnn::IWorkloadFactory& workloadFactory,
909     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
910     bool useSubtensor);
911
912 LayerTestResult<float, 4> EqualSimpleTest(
913     armnn::IWorkloadFactory& workloadFactory,
914     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
915
916 LayerTestResult<float, 4> EqualBroadcast1ElementTest(
917     armnn::IWorkloadFactory& workloadFactory,
918     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
919
920 LayerTestResult<float, 4> EqualBroadcast1DVectorTest(
921     armnn::IWorkloadFactory& workloadFactory,
922     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
923
924 LayerTestResult<uint8_t, 4> EqualUint8Test(
925     armnn::IWorkloadFactory& workloadFactory,
926     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
927
928 LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
929     armnn::IWorkloadFactory& workloadFactory,
930     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
931
932 LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorUint8Test(
933     armnn::IWorkloadFactory& workloadFactory,
934     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
935
936 LayerTestResult<float, 4> GreaterSimpleTest(
937     armnn::IWorkloadFactory& workloadFactory,
938     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
939
940 LayerTestResult<float, 4> GreaterBroadcast1ElementTest(
941     armnn::IWorkloadFactory& workloadFactory,
942     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
943
944 LayerTestResult<float, 4> GreaterBroadcast1DVectorTest(
945     armnn::IWorkloadFactory& workloadFactory,
946     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
947
948 LayerTestResult<uint8_t, 4> GreaterUint8Test(
949     armnn::IWorkloadFactory& workloadFactory,
950     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
951
952 LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
953     armnn::IWorkloadFactory& workloadFactory,
954     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
955
956 LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorUint8Test(
957     armnn::IWorkloadFactory& workloadFactory,
958     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
959
960 LayerTestResult<float, 2> FullyConnectedLargeTest(
961     armnn::IWorkloadFactory& workloadFactory,
962     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
963     bool transposeWeights);
964
965 LayerTestResult<float, 4> SimplePermuteFloat32Test(
966     armnn::IWorkloadFactory& workloadFactory,
967     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
968
969 LayerTestResult<uint8_t, 4> SimplePermuteUint8Test(
970     armnn::IWorkloadFactory& workloadFactory,
971     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
972
973 LayerTestResult<uint8_t, 2> PadUint82dTest(
974     armnn::IWorkloadFactory& workloadFactory,
975     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
976
977 LayerTestResult<uint8_t, 3> PadUint83dTest(
978     armnn::IWorkloadFactory& workloadFactory,
979     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
980
981 LayerTestResult<uint8_t, 4> PadUint84dTest(
982     armnn::IWorkloadFactory& workloadFactory,
983     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
984
985 LayerTestResult<float, 2> PadFloat322dTest(
986     armnn::IWorkloadFactory& workloadFactory,
987     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
988
989 LayerTestResult<float, 3> PadFloat323dTest(
990     armnn::IWorkloadFactory& workloadFactory,
991     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
992
993 LayerTestResult<float, 4> PadFloat324dTest(
994     armnn::IWorkloadFactory& workloadFactory,
995     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
996
997 LayerTestResult<float, 4> PermuteFloat32ValueSet1Test(
998     armnn::IWorkloadFactory& workloadFactory,
999     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1000
1001 LayerTestResult<float, 4> PermuteFloat32ValueSet2Test(
1002     armnn::IWorkloadFactory& workloadFactory,
1003     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1004
1005 LayerTestResult<float, 4> PermuteFloat32ValueSet3Test(
1006     armnn::IWorkloadFactory& workloadFactory,
1007     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1008
1009 LayerTestResult<float, 2> LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest(
1010     armnn::IWorkloadFactory& workloadFactory,
1011     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1012
1013 LayerTestResult<float, 2> LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest(
1014     armnn::IWorkloadFactory& workloadFactory,
1015     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1016
1017 LayerTestResult<float, 2> LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest(
1018     armnn::IWorkloadFactory& workloadFactory,
1019     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1020
1021 LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(
1022     armnn::IWorkloadFactory& workloadFactory,
1023     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1024
1025 LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(
1026     armnn::IWorkloadFactory& workloadFactory,
1027     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1028
1029 LayerTestResult<float, 4> MaximumSimpleTest(
1030         armnn::IWorkloadFactory& workloadFactory,
1031         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1032
1033 LayerTestResult<float, 4> MaximumBroadcast1ElementTest(
1034         armnn::IWorkloadFactory& workloadFactory,
1035         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1036
1037 LayerTestResult<float, 4> MaximumBroadcast1DVectorTest(
1038         armnn::IWorkloadFactory& workloadFactory,
1039         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1040
1041 LayerTestResult<uint8_t , 4> MaximumUint8Test(
1042         armnn::IWorkloadFactory& workloadFactory,
1043         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1044
1045 LayerTestResult<uint8_t, 4> MaximumBroadcast1ElementUint8Test(
1046         armnn::IWorkloadFactory& workloadFactory,
1047         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1048
1049 LayerTestResult<uint8_t, 4> MaximumBroadcast1DVectorUint8Test(
1050         armnn::IWorkloadFactory& workloadFactory,
1051         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1052
1053 LayerTestResult<uint8_t, 1> MeanUint8SimpleTest(
1054     armnn::IWorkloadFactory& workloadFactory,
1055     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1056
1057 LayerTestResult<uint8_t, 3> MeanUint8SimpleAxisTest(
1058     armnn::IWorkloadFactory& workloadFactory,
1059     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1060
1061 LayerTestResult<uint8_t, 4> MeanUint8KeepDimsTest(
1062     armnn::IWorkloadFactory& workloadFactory,
1063     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1064
1065 LayerTestResult<uint8_t, 4> MeanUint8MultipleDimsTest(
1066     armnn::IWorkloadFactory& workloadFactory,
1067     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1068
1069 LayerTestResult<uint8_t, 1> MeanVtsUint8Test(
1070     armnn::IWorkloadFactory& workloadFactory,
1071     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1072
1073 LayerTestResult<float, 1> MeanFloatSimpleTest(
1074     armnn::IWorkloadFactory& workloadFactory,
1075     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1076
1077 LayerTestResult<float, 3> MeanFloatSimpleAxisTest(
1078     armnn::IWorkloadFactory& workloadFactory,
1079     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1080
1081 LayerTestResult<float, 4> MeanFloatKeepDimsTest(
1082     armnn::IWorkloadFactory& workloadFactory,
1083     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1084
1085 LayerTestResult<float, 4> MeanFloatMultipleDimsTest(
1086     armnn::IWorkloadFactory& workloadFactory,
1087     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1088
1089 LayerTestResult<float, 1> MeanVtsFloat1Test(
1090     armnn::IWorkloadFactory& workloadFactory,
1091     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1092
1093 LayerTestResult<float, 3> MeanVtsFloat2Test(
1094     armnn::IWorkloadFactory& workloadFactory,
1095     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1096
1097 LayerTestResult<float, 3> MeanVtsFloat3Test(
1098     armnn::IWorkloadFactory& workloadFactory,
1099     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1100
1101 LayerTestResult<float, 4> MinimumBroadcast1ElementTest1(
1102     armnn::IWorkloadFactory& workloadFactory,
1103     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1104
1105 LayerTestResult<float, 4> MinimumBroadcast1ElementTest2(
1106     armnn::IWorkloadFactory& workloadFactory,
1107     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1108
1109 LayerTestResult<uint8_t, 4> MinimumBroadcast1DVectorUint8Test(
1110     armnn::IWorkloadFactory & workloadFactory,
1111     const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1112
1113 LayerTestResult<float, 4> AdditionAfterMaxPoolTest(
1114     armnn::IWorkloadFactory& workloadFactory,
1115     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1116
1117 LayerTestResult<float, 4> SpaceToBatchNdSimpleFloat32Test(
1118     armnn::IWorkloadFactory& workloadFactory,
1119     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1120
1121 LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsFloat32Test(
1122     armnn::IWorkloadFactory& workloadFactory,
1123     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1124
1125 LayerTestResult<float, 4> SpaceToBatchNdMultiBlockFloat32Test(
1126     armnn::IWorkloadFactory& workloadFactory,
1127     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1128
1129 LayerTestResult<float, 4> SpaceToBatchNdPaddingFloat32Test(
1130     armnn::IWorkloadFactory& workloadFactory,
1131     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1132
1133 LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleUint8Test(
1134     armnn::IWorkloadFactory& workloadFactory,
1135     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1136
1137 LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsUint8Test(
1138     armnn::IWorkloadFactory& workloadFactory,
1139     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1140
1141 LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockUint8Test(
1142     armnn::IWorkloadFactory& workloadFactory,
1143     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1144
1145 LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingUint8Test(
1146     armnn::IWorkloadFactory& workloadFactory,
1147     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1148
1149 LayerTestResult<float, 4> SpaceToBatchNdSimpleNHWCFloat32Test(
1150     armnn::IWorkloadFactory& workloadFactory,
1151     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1152
1153 LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsNHWCFloat32Test(
1154     armnn::IWorkloadFactory& workloadFactory,
1155     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1156
1157 LayerTestResult<float, 4> SpaceToBatchNdMultiBlockNHWCFloat32Test(
1158     armnn::IWorkloadFactory& workloadFactory,
1159     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1160
1161 LayerTestResult<float, 4> SpaceToBatchNdPaddingNHWCFloat32Test(
1162     armnn::IWorkloadFactory& workloadFactory,
1163     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1164
1165 LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleNHWCUint8Test(
1166     armnn::IWorkloadFactory& workloadFactory,
1167     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1168
1169 LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsNHWCUint8Test(
1170     armnn::IWorkloadFactory& workloadFactory,
1171     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1172
1173 LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockNHWCUint8Test(
1174     armnn::IWorkloadFactory& workloadFactory,
1175     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1176
1177 LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingNHWCUint8Test(
1178     armnn::IWorkloadFactory& workloadFactory,
1179     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1180
1181 LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test1(
1182     armnn::IWorkloadFactory& workloadFactory,
1183     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1184
1185 LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test2(
1186     armnn::IWorkloadFactory& workloadFactory,
1187     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1188
1189 LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test3(
1190     armnn::IWorkloadFactory& workloadFactory,
1191     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1192
1193 LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test1(
1194     armnn::IWorkloadFactory &workloadFactory,
1195     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1196
1197 LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test2(
1198         armnn::IWorkloadFactory &workloadFactory,
1199         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1200
1201 LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test3(
1202         armnn::IWorkloadFactory &workloadFactory,
1203         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1204
1205 LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest1(
1206     armnn::IWorkloadFactory &workloadFactory,
1207     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1208
1209 LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest2(
1210         armnn::IWorkloadFactory &workloadFactory,
1211         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1212
1213 LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest3(
1214         armnn::IWorkloadFactory &workloadFactory,
1215         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1216
1217 LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest1(
1218         armnn::IWorkloadFactory &workloadFactory,
1219         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1220
1221 LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest2(
1222         armnn::IWorkloadFactory &workloadFactory,
1223         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1224
1225 LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest3(
1226         armnn::IWorkloadFactory &workloadFactory,
1227         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1228
1229 LayerTestResult<float, 4> StridedSlice4DFloat32Test(
1230     armnn::IWorkloadFactory& workloadFactory,
1231     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1232
1233 LayerTestResult<float, 4> StridedSlice4DReverseFloat32Test(
1234     armnn::IWorkloadFactory& workloadFactory,
1235     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1236
1237 LayerTestResult<float, 4> StridedSliceSimpleStrideFloat32Test(
1238     armnn::IWorkloadFactory& workloadFactory,
1239     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1240
1241 LayerTestResult<float, 4> StridedSliceSimpleRangeMaskFloat32Test(
1242     armnn::IWorkloadFactory& workloadFactory,
1243     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1244
1245 LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test(
1246     armnn::IWorkloadFactory& workloadFactory,
1247     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1248
1249 LayerTestResult<float, 3> StridedSlice3DFloat32Test(
1250     armnn::IWorkloadFactory& workloadFactory,
1251     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1252
1253 LayerTestResult<float, 3> StridedSlice3DReverseFloat32Test(
1254     armnn::IWorkloadFactory& workloadFactory,
1255     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1256
1257 LayerTestResult<float, 2> StridedSlice2DFloat32Test(
1258     armnn::IWorkloadFactory& workloadFactory,
1259     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1260
1261 LayerTestResult<float, 2> StridedSlice2DReverseFloat32Test(
1262     armnn::IWorkloadFactory& workloadFactory,
1263     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1264
1265 LayerTestResult<uint8_t, 4> StridedSlice4DUint8Test(
1266     armnn::IWorkloadFactory& workloadFactory,
1267     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1268
1269 LayerTestResult<uint8_t, 4> StridedSlice4DReverseUint8Test(
1270     armnn::IWorkloadFactory& workloadFactory,
1271     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1272
1273 LayerTestResult<uint8_t, 4> StridedSliceSimpleStrideUint8Test(
1274     armnn::IWorkloadFactory& workloadFactory,
1275     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1276
1277 LayerTestResult<uint8_t, 4> StridedSliceSimpleRangeMaskUint8Test(
1278     armnn::IWorkloadFactory& workloadFactory,
1279     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1280
1281 LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test(
1282     armnn::IWorkloadFactory& workloadFactory,
1283     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1284
1285 LayerTestResult<uint8_t, 3> StridedSlice3DUint8Test(
1286     armnn::IWorkloadFactory& workloadFactory,
1287     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1288
1289 LayerTestResult<uint8_t, 3> StridedSlice3DReverseUint8Test(
1290     armnn::IWorkloadFactory& workloadFactory,
1291     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1292
1293 LayerTestResult<uint8_t, 2> StridedSlice2DUint8Test(
1294     armnn::IWorkloadFactory& workloadFactory,
1295     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1296
1297 LayerTestResult<uint8_t, 2> StridedSlice2DReverseUint8Test(
1298     armnn::IWorkloadFactory& workloadFactory,
1299     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1300
1301 LayerTestResult<float, 4> Debug4DFloat32Test(
1302     armnn::IWorkloadFactory& workloadFactory,
1303     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1304
1305 LayerTestResult<float, 3> Debug3DFloat32Test(
1306     armnn::IWorkloadFactory& workloadFactory,
1307     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1308
1309 LayerTestResult<float, 2> Debug2DFloat32Test(
1310     armnn::IWorkloadFactory& workloadFactory,
1311     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1312
1313 LayerTestResult<float, 1> Debug1DFloat32Test(
1314     armnn::IWorkloadFactory& workloadFactory,
1315     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1316
1317 LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1318     armnn::IWorkloadFactory& workloadFactory,
1319     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1320
1321 LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1322     armnn::IWorkloadFactory& workloadFactory,
1323     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1324
1325 LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1326     armnn::IWorkloadFactory& workloadFactory,
1327     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1328
1329 LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1330     armnn::IWorkloadFactory& workloadFactory,
1331     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1332
1333 LayerTestResult<uint8_t, 4> PreCompiledConvolution2dTest(
1334     armnn::IWorkloadFactory& workloadFactory,
1335     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1336
1337 LayerTestResult<uint8_t, 4> PreCompiledConvolution2dStride2x2Test(
1338     armnn::IWorkloadFactory& workloadFactory,
1339     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1340
1341 LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dTest(
1342     armnn::IWorkloadFactory & workloadFactory,
1343     const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1344
1345 LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dStride2x2Test(
1346     armnn::IWorkloadFactory & workloadFactory,
1347     const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1348
1349 LayerTestResult<uint8_t, 4> PreCompiledMaxPooling2dTest(
1350     armnn::IWorkloadFactory& workloadFactory,
1351     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1352
1353 LayerTestResult<float, 4> Debug4DFloat32Test(
1354     armnn::IWorkloadFactory& workloadFactory,
1355     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1356
1357 LayerTestResult<float, 3> Debug3DFloat32Test(
1358     armnn::IWorkloadFactory& workloadFactory,
1359     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1360
1361 LayerTestResult<float, 2> Debug2DFloat32Test(
1362     armnn::IWorkloadFactory& workloadFactory,
1363     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1364
1365 LayerTestResult<float, 1> Debug1DFloat32Test(
1366     armnn::IWorkloadFactory& workloadFactory,
1367     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1368
1369 LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1370     armnn::IWorkloadFactory& workloadFactory,
1371     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1372
1373 LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1374     armnn::IWorkloadFactory& workloadFactory,
1375     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1376
1377 LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1378     armnn::IWorkloadFactory& workloadFactory,
1379     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1380
1381 LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1382     armnn::IWorkloadFactory& workloadFactory,
1383     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);