blob: be686c141e86ea52c137fb294a7c0b6cb94856a9 [file] [log] [blame]
telsoa014fcda012018-03-09 14:13:49 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beckecb56cd2018-09-05 12:52:57 +01003// SPDX-License-Identifier: MIT
telsoa014fcda012018-03-09 14:13:49 +00004//
5#pragma once
6
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00007#include <armnn/ArmNN.hpp>
8#include <armnn/Tensor.hpp>
9
10#include <Half.hpp>
Francis Murtagh46c09d02019-05-28 08:15:28 +010011#include "TensorCopyUtils.hpp"
12#include "WorkloadTestUtils.hpp"
telsoa014fcda012018-03-09 14:13:49 +000013
Francis Murtagh46c09d02019-05-28 08:15:28 +010014#include <backendsCommon/CpuTensorHandle.hpp>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000015#include <backendsCommon/IBackendInternal.hpp>
16#include <backendsCommon/IMemoryManager.hpp>
Francis Murtagh46c09d02019-05-28 08:15:28 +010017#include <reference/workloads/Decoders.hpp>
18#include <reference/workloads/Encoders.hpp>
19#include <test/TensorHelpers.hpp>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000020
telsoa014fcda012018-03-09 14:13:49 +000021#include <boost/multi_array.hpp>
22#include <boost/assert.hpp>
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000023
telsoa014fcda012018-03-09 14:13:49 +000024#include <array>
25
telsoa01c577f2c2018-08-31 09:22:23 +010026// Layer callables.
telsoa014fcda012018-03-09 14:13:49 +000027
28namespace armnn
29{
30class IWorkloadFactory;
31}
32
33template <std::size_t n>
34boost::array<unsigned int, n> GetTensorShapeAsArray(const armnn::TensorInfo& tensorInfo)
35{
36 BOOST_ASSERT_MSG(n == tensorInfo.GetNumDimensions(),
37 "Attempting to construct a shape array of mismatching size");
38
39 boost::array<unsigned int, n> shape;
40 for (unsigned int i = 0; i < n; i++)
41 {
42 shape[i] = tensorInfo.GetShape()[i];
43 }
44 return shape;
45}
46
47template <typename T, std::size_t n>
48struct LayerTestResult
49{
50 LayerTestResult(const armnn::TensorInfo& outputInfo)
51 {
52 auto shape( GetTensorShapeAsArray<n>(outputInfo) );
53 output.resize(shape);
54 outputExpected.resize(shape);
55 supported = true;
kevmay012b4d88e2019-01-24 14:05:09 +000056 compareBoolean = false;
telsoa014fcda012018-03-09 14:13:49 +000057 }
58
59 boost::multi_array<T, n> output;
60 boost::multi_array<T, n> outputExpected;
61 bool supported;
kevmay012b4d88e2019-01-24 14:05:09 +000062 bool compareBoolean;
telsoa014fcda012018-03-09 14:13:49 +000063};
64
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000065LayerTestResult<float, 4> SimpleConvolution2d3x5Test(
66 armnn::IWorkloadFactory& workloadFactory,
67 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
68 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +000069 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +000070
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000071LayerTestResult<float, 4> SimpleConvolution2d3x3Test(
72 armnn::IWorkloadFactory& workloadFactory,
73 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
74 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +000075 const armnn::DataLayout layout);
Francis Murtaghd59116e2018-10-04 16:03:07 +010076
Mike Kelly7332ed82018-12-20 17:03:06 +000077LayerTestResult<float, 4> SimpleConvolution2d3x3Stride2x2Test(
78 armnn::IWorkloadFactory& workloadFactory,
79 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
80 bool biasEnabled,
81 const armnn::DataLayout layout);
82
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000083LayerTestResult<float, 4> SimpleConvolution2d3x3NhwcTest(
84 armnn::IWorkloadFactory& workloadFactory,
85 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
86 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +000087
88LayerTestResult<float, 4>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000089Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest(
90 armnn::IWorkloadFactory& workloadFactory,
91 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +000092 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +000093
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000094LayerTestResult<float, 4> Convolution2dAsymmetricPaddingTest(
95 armnn::IWorkloadFactory& workloadFactory,
96 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +000097 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +000098
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000099LayerTestResult<float, 4> Convolution1dTest(
100 armnn::IWorkloadFactory& workloadFactory,
101 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
102 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000103
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000104LayerTestResult<uint8_t, 4> Convolution1dUint8Test(
105 armnn::IWorkloadFactory& workloadFactory,
106 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
107 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000108
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000109LayerTestResult<float, 4> DepthwiseConvolution2dTest(
110 armnn::IWorkloadFactory& workloadFactory,
111 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
112 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000113 const armnn::DataLayout layout);
Nikhil Rajcec6b652018-10-12 13:51:57 +0100114
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000115LayerTestResult<float, 4> DepthwiseConvolution2dDepthNhwcTest(
116 armnn::IWorkloadFactory& workloadFactory,
117 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
118 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000119
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000120LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul1Test(
121 armnn::IWorkloadFactory& workloadFactory,
122 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
123 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000124 const armnn::DataLayout layout);
surmeh013537c2c2018-05-18 16:31:43 +0100125
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000126LayerTestResult<float, 4> DepthwiseConvolution2dAsymmetricTest(
127 armnn::IWorkloadFactory& workloadFactory,
128 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
129 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000130 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +0000131
Bruno Goncalves22972f02019-04-26 21:03:24 -0300132LayerTestResult<float, 4> SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest(armnn::IWorkloadFactory& workloadFactory,
133 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
134
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000135LayerTestResult<float, 4> CompareDepthwiseConvolution2dFloatTest(
136 armnn::IWorkloadFactory& workloadFactory,
137 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
138 armnn::IWorkloadFactory& refWorkloadFactory,
139 const armnn::DataLayout layout);
140
141LayerTestResult<uint8_t, 4> CompareDepthwiseConvolution2dUint8Test(
142 armnn::IWorkloadFactory& workloadFactory,
143 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
144 armnn::IWorkloadFactory& refWorkloadFactory,
145 const armnn::DataLayout layout);
146
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000147LayerTestResult<float, 4> SimpleMaxPooling2dSize2x2Stride2x2Test(
148 armnn::IWorkloadFactory& workloadFactory,
149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
150 bool forceNoPadding);
James Conroy45a9b772018-10-31 11:47:53 +0000151
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000152LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize2x2Stride2x2Uint8Test(
153 armnn::IWorkloadFactory& workloadFactory,
154 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
155 bool forceNoPadding);
James Conroy45a9b772018-10-31 11:47:53 +0000156
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000157LayerTestResult<float, 4> SimpleMaxPooling2dSize3x3Stride2x4Test(
158 armnn::IWorkloadFactory& workloadFactory,
159 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
160 bool forceNoPadding);
161
162LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize3x3Stride2x4Uint8Test(
163 armnn::IWorkloadFactory& workloadFactory,
164 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
165 bool forceNoPadding );
166
167LayerTestResult<float, 4> IgnorePaddingSimpleMaxPooling2dTest(
168 armnn::IWorkloadFactory& workloadFactory,
169 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
170
171LayerTestResult<uint8_t, 4> IgnorePaddingSimpleMaxPooling2dUint8Test(
172 armnn::IWorkloadFactory& workloadFactory,
173 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
174
175LayerTestResult<float, 4> IgnorePaddingMaxPooling2dSize3Test(
176 armnn::IWorkloadFactory& workloadFactory,
177 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
178
179LayerTestResult<uint8_t, 4> IgnorePaddingMaxPooling2dSize3Uint8Test(
180 armnn::IWorkloadFactory& workloadFactory,
181 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
182
183LayerTestResult<float, 4> SimpleMaxPooling2dTest(
184 armnn::IWorkloadFactory& workloadFactory,
185 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000186 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000187
188LayerTestResult<uint8_t, 4> SimpleMaxPooling2dUint8Test(
189 armnn::IWorkloadFactory& workloadFactory,
190 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000191 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000192
193LayerTestResult<float, 4> SimpleAveragePooling2dTest(
194 armnn::IWorkloadFactory& workloadFactory,
195 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000196 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000197
198LayerTestResult<uint8_t, 4> SimpleAveragePooling2dUint8Test(
199 armnn::IWorkloadFactory& workloadFactory,
200 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000201 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000202
203LayerTestResult<float, 4> IgnorePaddingAveragePooling2dSize3x2Stride2x2Test(
204 armnn::IWorkloadFactory& workloadFactory,
205 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
206 bool forceNoPadding);
207
208LayerTestResult<float, 4> IgnorePaddingSimpleAveragePooling2dTest(
209 armnn::IWorkloadFactory& workloadFactory,
210 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
211
212LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dUint8Test(
213 armnn::IWorkloadFactory& workloadFactory,
214 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
215
216LayerTestResult<float, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingTest(
217 armnn::IWorkloadFactory& workloadFactory,
218 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
219
telsoa014fcda012018-03-09 14:13:49 +0000220LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingUint8Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000221 armnn::IWorkloadFactory& workloadFactory,
222 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000223
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000224LayerTestResult<float, 4> IgnorePaddingAveragePooling2dSize3Test(
225 armnn::IWorkloadFactory& workloadFactory,
226 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000227
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000228LayerTestResult<uint8_t, 4> IgnorePaddingAveragePooling2dSize3Uint8Test(
229 armnn::IWorkloadFactory& workloadFactory,
230 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000231
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000232LayerTestResult<float, 4> SimpleL2Pooling2dTest(
233 armnn::IWorkloadFactory& workloadFactory,
234 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000235 const armnn::DataLayout dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000236
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000237LayerTestResult<uint8_t, 4> SimpleL2Pooling2dUint8Test(
238 armnn::IWorkloadFactory& workloadFactory,
239 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000240 const armnn::DataLayout dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000241
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000242LayerTestResult<float, 4> L2Pooling2dSize3Stride1Test(
243 armnn::IWorkloadFactory& workloadFactory,
244 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000245
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000246LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride1Uint8Test(
247 armnn::IWorkloadFactory& workloadFactory,
248 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000249
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000250LayerTestResult<float, 4> L2Pooling2dSize3Stride3Test(
251 armnn::IWorkloadFactory& workloadFactory,
252 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000253
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000254LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride3Uint8Test(
255 armnn::IWorkloadFactory& workloadFactory,
256 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000257
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000258LayerTestResult<float, 4> L2Pooling2dSize3Stride4Test(
259 armnn::IWorkloadFactory& workloadFactory,
260 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000261
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000262LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride4Uint8Test(
263 armnn::IWorkloadFactory& workloadFactory,
264 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000265
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000266LayerTestResult<float, 4> L2Pooling2dSize7Test(
267 armnn::IWorkloadFactory& workloadFactory,
268 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000269
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000270LayerTestResult<uint8_t, 4> L2Pooling2dSize7Uint8Test(
271 armnn::IWorkloadFactory& workloadFactory,
272 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000273
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000274LayerTestResult<float, 4> L2Pooling2dSize9Test(
275 armnn::IWorkloadFactory& workloadFactory,
276 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000277
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000278LayerTestResult<uint8_t, 4> L2Pooling2dSize9Uint8Test(
279 armnn::IWorkloadFactory& workloadFactory,
280 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
281
282LayerTestResult<float, 4> LargeTensorsAveragePooling2dTest(
283 armnn::IWorkloadFactory& workloadFactory,
284 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
285
286LayerTestResult<uint8_t, 4> LargeTensorsAveragePooling2dUint8Test(
287 armnn::IWorkloadFactory& workloadFactory,
288 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
289
290LayerTestResult<float, 4> IgnorePaddingSimpleL2Pooling2dTest(
291 armnn::IWorkloadFactory& workloadFactory,
292 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
293
294LayerTestResult<uint8_t, 4> IgnorePaddingSimpleL2Pooling2dUint8Test(
295 armnn::IWorkloadFactory& workloadFactory,
296 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
297
298LayerTestResult<float, 4> IgnorePaddingL2Pooling2dSize3Test(
299 armnn::IWorkloadFactory& workloadFactory,
300 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
301
302LayerTestResult<uint8_t, 4> IgnorePaddingL2Pooling2dSize3Uint8Test(
303 armnn::IWorkloadFactory& workloadFactory,
304 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
305
306LayerTestResult<float, 4> AsymmetricNonSquarePooling2dTest(
307 armnn::IWorkloadFactory& workloadFactory,
308 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
309
310LayerTestResult<uint8_t, 4> AsymmetricNonSquarePooling2dUint8Test(
311 armnn::IWorkloadFactory& workloadFactory,
312 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
313
314LayerTestResult<float, 4> ComparePooling2dTest(
315 armnn::IWorkloadFactory& workloadFactory,
316 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
317 armnn::IWorkloadFactory& refWorkloadFactory,
318 armnn::PoolingAlgorithm poolingType);
319
320LayerTestResult<uint8_t, 4> ComparePooling2dUint8Test(
321 armnn::IWorkloadFactory& workloadFactory,
322 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
323 armnn::IWorkloadFactory& refWorkloadFactory,
324 armnn::PoolingAlgorithm poolingType);
325
326LayerTestResult<float, 4> ConstantLinearActivationTest(
327 armnn::IWorkloadFactory& workloadFactory,
328 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
329
330LayerTestResult<float, 4> SimpleNormalizationAcrossTest(
331 armnn::IWorkloadFactory& workloadFactory,
332 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
333
334LayerTestResult<float, 4> SimpleNormalizationWithinTest(
335 armnn::IWorkloadFactory& workloadFactory,
336 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
337
338LayerTestResult<float,4> SimpleNormalizationAcrossNhwcTest(
339 armnn::IWorkloadFactory& workloadFactory,
340 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
341
342LayerTestResult<float, 2> SimpleSoftmaxTest(
343 armnn::IWorkloadFactory& workloadFactory,
344 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
345 float beta);
346
Narumol Prangnawarat65d30962019-03-14 11:55:03 +0000347LayerTestResult<float, 3> Simple3dSoftmaxTest(
348 armnn::IWorkloadFactory& workloadFactory,
349 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
350 float beta);
351
352LayerTestResult<float, 4> Simple4dSoftmaxTest(
353 armnn::IWorkloadFactory& workloadFactory,
354 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
355 float beta);
356
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000357LayerTestResult<uint8_t, 2> SimpleSoftmaxUint8Test(
358 armnn::IWorkloadFactory& workloadFactory,
359 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
360 float beta);
361
Narumol Prangnawarat65d30962019-03-14 11:55:03 +0000362LayerTestResult<uint8_t,3> Simple3dSoftmaxUint8Test(
363 armnn::IWorkloadFactory& workloadFactory,
364 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
365 float beta);
366
367LayerTestResult<uint8_t,4> Simple4dSoftmaxUint8Test(
368 armnn::IWorkloadFactory& workloadFactory,
369 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
370 float beta);
371
nikraj01248683f2019-05-29 16:46:50 +0100372LayerTestResult<int16_t,2> SimpleSoftmaxUint16Test(
373 armnn::IWorkloadFactory& workloadFactory,
374 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
375 float beta);
376
377LayerTestResult<int16_t,3> Simple3dSoftmaxUint16Test(
378 armnn::IWorkloadFactory& workloadFactory,
379 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
380 float beta);
381
382LayerTestResult<int16_t,4> Simple4dSoftmaxUint16Test(
383 armnn::IWorkloadFactory& workloadFactory,
384 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
385 float beta);
386
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000387LayerTestResult<float, 4> SimpleSigmoidTest(
388 armnn::IWorkloadFactory& workloadFactory,
389 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
390
Nina Drozd8ed4b8c2019-05-29 10:41:04 +0100391template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
392LayerTestResult<T, 4> SimpleReshapeTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000393 armnn::IWorkloadFactory& workloadFactory,
394 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
395
396LayerTestResult<float, 4> SimpleFloorTest(
397 armnn::IWorkloadFactory& workloadFactory,
398 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
399
400LayerTestResult<float, 1> Concatenation1dTest(
401 armnn::IWorkloadFactory& workloadFactory,
402 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
403
404LayerTestResult<float, 2> Concatenation2dDim0Test(
405 armnn::IWorkloadFactory& workloadFactory,
406 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
407
408LayerTestResult<float, 2> Concatenation2dDim1Test(
409 armnn::IWorkloadFactory& workloadFactory,
410 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
411
412LayerTestResult<float, 2> Concatenation2dDim0DiffInputDimsTest(
413 armnn::IWorkloadFactory& workloadFactory,
414 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
415
416LayerTestResult<float, 2> Concatenation2dDim1DiffInputDimsTest(
417 armnn::IWorkloadFactory& workloadFactory,
418 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
419
420LayerTestResult<float, 3> Concatenation3dDim0Test(
421 armnn::IWorkloadFactory& workloadFactory,
422 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
423
424LayerTestResult<float, 3> Concatenation3dDim1Test(
425 armnn::IWorkloadFactory& workloadFactory,
426 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
427
428LayerTestResult<float, 3> Concatenation3dDim2Test(
429 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +0000430 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
431 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000432
433LayerTestResult<float, 3> Concatenation3dDim0DiffInputDimsTest(
434 armnn::IWorkloadFactory& workloadFactory,
435 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
436
437LayerTestResult<float, 3> Concatenation3dDim1DiffInputDimsTest(
438 armnn::IWorkloadFactory& workloadFactory,
439 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
440
441LayerTestResult<float, 3> Concatenation3dDim2DiffInputDimsTest(
442 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +0000443 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
444 bool useSubtensor);
445
446LayerTestResult<float, 4> Concatenation4dDim0Test(
447 armnn::IWorkloadFactory& workloadFactory,
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000448 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
449
narpra015cdda352018-11-19 15:30:27 +0000450LayerTestResult<float, 4> Concatenation4dDim1Test(
451 armnn::IWorkloadFactory& workloadFactory,
452 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
453
454LayerTestResult<float, 4> Concatenation4dDim2Test(
455 armnn::IWorkloadFactory& workloadFactory,
456 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
457
458LayerTestResult<float, 4> Concatenation4dDim3Test(
459 armnn::IWorkloadFactory& workloadFactory,
460 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
461 bool useSubtensor);
462
463LayerTestResult<float, 4> Concatenation4dDiffShapeDim0Test(
464 armnn::IWorkloadFactory& workloadFactory,
465 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
466
467LayerTestResult<float, 4> Concatenation4dDiffShapeDim1Test(
468 armnn::IWorkloadFactory& workloadFactory,
469 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
470
471LayerTestResult<float, 4> Concatenation4dDiffShapeDim2Test(
472 armnn::IWorkloadFactory& workloadFactory,
473 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
474
475LayerTestResult<float, 4> Concatenation4dDiffShapeDim3Test(
476 armnn::IWorkloadFactory& workloadFactory,
477 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
478 bool useSubtensor);
479
480LayerTestResult<uint8_t, 4> Concatenation4dDim0Uint8Test(
481 armnn::IWorkloadFactory& workloadFactory,
482 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
483
484LayerTestResult<uint8_t, 4> Concatenation4dDim1Uint8Test(
485 armnn::IWorkloadFactory& workloadFactory,
486 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
487
488LayerTestResult<uint8_t, 4> Concatenation4dDim2Uint8Test(
489 armnn::IWorkloadFactory& workloadFactory,
490 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
491
492LayerTestResult<uint8_t, 4> Concatenation4dDim3Uint8Test(
493 armnn::IWorkloadFactory& workloadFactory,
494 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
495 bool useSubtensor);
496
497LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim0Uint8Test(
498 armnn::IWorkloadFactory& workloadFactory,
499 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
500
501LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim1Uint8Test(
502 armnn::IWorkloadFactory& workloadFactory,
503 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
504
505LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim2Uint8Test(
506 armnn::IWorkloadFactory& workloadFactory,
507 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
508
509LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim3Uint8Test(
510 armnn::IWorkloadFactory& workloadFactory,
511 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
512 bool useSubtensor);
513
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000514LayerTestResult<uint8_t, 4> SimpleSigmoidUint8Test(
515 armnn::IWorkloadFactory& workloadFactory,
516 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
517
Teresa Charlin18515e22019-04-24 10:17:46 +0100518LayerTestResult<int16_t, 4> SimpleSigmoidInt16Test(
519 armnn::IWorkloadFactory& workloadFactory,
520 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
521
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000522LayerTestResult<float, 4> CompareConvolution2dTest(
523 armnn::IWorkloadFactory& workloadFactory,
524 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
telsoa014fcda012018-03-09 14:13:49 +0000525 armnn::IWorkloadFactory& refWorkloadFactory);
526
527template<typename T>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000528LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest(
529 armnn::IWorkloadFactory& workloadFactory,
530 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
531 armnn::IWorkloadFactory& refWorkloadFactory,
Matthew Bentham8800c002018-11-19 13:19:28 +0000532 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +0000533
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000534LayerTestResult<float, 4> CompareNormalizationTest(
535 armnn::IWorkloadFactory& workloadFactory,
536 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
537 armnn::IWorkloadFactory& refWorkloadFactory,
538 armnn::NormalizationAlgorithmChannel normChannel,
539 armnn::NormalizationAlgorithmMethod normMethod);
telsoa014fcda012018-03-09 14:13:49 +0000540
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000541LayerTestResult<float, 2> CompareSoftmaxTest(
542 armnn::IWorkloadFactory& workloadFactory,
543 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
telsoa014fcda012018-03-09 14:13:49 +0000544 armnn::IWorkloadFactory& refWorkloadFactory,
545 float beta);
546
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000547LayerTestResult<float, 2> FullyConnectedFloat32Test(
548 armnn::IWorkloadFactory& workloadFactory,
549 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
550 bool biasEnabled,
551 bool transposeWeights);
telsoa014fcda012018-03-09 14:13:49 +0000552
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000553std::vector<LayerTestResult<float, 3>> SplitterTest(
554 armnn::IWorkloadFactory& workloadFactory,
555 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
David Beck5cd01f32018-09-12 16:00:08 +0100556
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000557LayerTestResult<float, 3> CopyViaSplitterTest(
558 armnn::IWorkloadFactory& workloadFactory,
559 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000560
Jim Flynn4ed6c832019-05-20 11:02:46 +0100561LayerTestResult<float, 3> ConcatTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000562 armnn::IWorkloadFactory& workloadFactory,
563 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000564
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000565LayerTestResult<float, 4> AdditionTest(
566 armnn::IWorkloadFactory& workloadFactory,
567 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000568
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000569LayerTestResult<float, 4> AdditionBroadcast1ElementTest(
570 armnn::IWorkloadFactory& workloadFactory,
571 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000572
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000573LayerTestResult<float, 4> AdditionBroadcastTest(
574 armnn::IWorkloadFactory& workloadFactory,
575 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000576
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000577LayerTestResult<float, 4> CompareAdditionTest(
578 armnn::IWorkloadFactory& workloadFactory,
579 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
580 armnn::IWorkloadFactory& refWorkloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000581
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000582LayerTestResult<float, 4> SubtractionTest(
583 armnn::IWorkloadFactory& workloadFactory,
584 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000585
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000586LayerTestResult<float, 4> SubtractionBroadcast1ElementTest(
587 armnn::IWorkloadFactory& workloadFactory,
588 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000589
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000590LayerTestResult<float, 4> SubtractionBroadcastTest(
591 armnn::IWorkloadFactory& workloadFactory,
592 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000593
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000594LayerTestResult<float, 4> CompareActivationTest(
595 armnn::IWorkloadFactory& workloadFactory,
596 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
597 armnn::IWorkloadFactory& refWorkloadFactory,
598 armnn::ActivationFunction f,
599 unsigned int batchSize);
telsoa014fcda012018-03-09 14:13:49 +0000600
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000601LayerTestResult<float, 4> DivisionTest(
602 armnn::IWorkloadFactory& workloadFactory,
603 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000604
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000605LayerTestResult<float, 4> DivisionByZeroTest(
606 armnn::IWorkloadFactory& workloadFactory,
607 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +0100608
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000609LayerTestResult<float, 4> DivisionBroadcast1ElementTest(
610 armnn::IWorkloadFactory& workloadFactory,
611 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +0100612
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000613LayerTestResult<float, 4> DivisionBroadcast1DVectorTest(
614 armnn::IWorkloadFactory& workloadFactory,
615 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa01c577f2c2018-08-31 09:22:23 +0100616
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000617LayerTestResult<float, 4> MultiplicationTest(
618 armnn::IWorkloadFactory& workloadFactory,
619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa01c577f2c2018-08-31 09:22:23 +0100620
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000621LayerTestResult<float, 4> MultiplicationBroadcast1ElementTest(
622 armnn::IWorkloadFactory& workloadFactory,
623 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra011e4c31d2018-09-28 11:07:51 +0100624
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000625LayerTestResult<float, 4> MultiplicationBroadcast1DVectorTest(
626 armnn::IWorkloadFactory& workloadFactory,
627 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra011e4c31d2018-09-28 11:07:51 +0100628
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000629LayerTestResult<float, 4> CompareMultiplicationTest(
630 armnn::IWorkloadFactory& workloadFactory,
631 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
632 armnn::IWorkloadFactory& refWorkloadFactory);
Matteo Martincigh28dcab62018-10-19 16:40:03 +0100633
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000634LayerTestResult<float, 4> BatchNormTest(
635 armnn::IWorkloadFactory& workloadFactory,
636 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000637
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000638LayerTestResult<float, 4> BatchNormNhwcTest(
639 armnn::IWorkloadFactory& workloadFactory,
640 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000641
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000642LayerTestResult<float, 4> CompareBatchNormTest(
643 armnn::IWorkloadFactory& workloadFactory,
644 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
645 armnn::IWorkloadFactory& refWorkloadFactory);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000646
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000647LayerTestResult<float, 4> BoundedReLuUpperAndLowerBoundTest(
648 armnn::IWorkloadFactory& workloadFactory,
649 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000650
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000651LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperAndLowerBoundTest(
652 armnn::IWorkloadFactory& workloadFactor,
653 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManagery);
Éanna Ó Catháin4e1e1362018-11-12 11:36:34 +0000654
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000655LayerTestResult<float, 4> BoundedReLuUpperBoundOnlyTest(
656 armnn::IWorkloadFactory& workloadFactory,
657 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Éanna Ó Catháin4e1e1362018-11-12 11:36:34 +0000658
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000659LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperBoundOnlyTest(
660 armnn::IWorkloadFactory& workloadFactory,
661 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Éanna Ó Catháin262553e2018-11-14 11:26:23 +0000662
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000663LayerTestResult<float, 4> CompareBoundedReLuTest(
664 armnn::IWorkloadFactory& workloadFactory,
665 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
666 armnn::IWorkloadFactory& refWorkloadFactory,
667 float upperBound,
668 float lowerBound);
669
Teresa Charlin18515e22019-04-24 10:17:46 +0100670
671LayerTestResult<int16_t, 4> ReLuInt16Test(
672 armnn::IWorkloadFactory& workloadFactory,
673 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
674
675LayerTestResult<int16_t, 4> BoundedReLuInt16Test(
676 armnn::IWorkloadFactory& workloadFactory,
677 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
678
679LayerTestResult<int16_t, 4> SoftReLuInt16Test(
680 armnn::IWorkloadFactory& workloadFactory,
681 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
682
683LayerTestResult<int16_t, 4> LeakyReLuInt16Test(
684 armnn::IWorkloadFactory& workloadFactory,
685 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
686
687LayerTestResult<int16_t, 4> AbsInt16Test(
688 armnn::IWorkloadFactory& workloadFactory,
689 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
690
691LayerTestResult<int16_t, 4> SqrtInt16Test(
692 armnn::IWorkloadFactory& workloadFactory,
693 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
694
695LayerTestResult<int16_t, 4> SquareInt16Test(
696 armnn::IWorkloadFactory& workloadFactory,
697 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
698
699LayerTestResult<int16_t, 4> TanhInt16Test(
700 armnn::IWorkloadFactory& workloadFactory,
701 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
702
703
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000704// Tests that the output should be identical to the input when the output dimensions match the input ones.
705LayerTestResult<float, 4> ResizeBilinearNopTest(
706 armnn::IWorkloadFactory& workloadFactory,
707 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000708 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000709
710// Tests the behaviour of the resize bilinear operation when rescaling a 2x2 image into a 1x1 image.
711LayerTestResult<float, 4> SimpleResizeBilinearTest(
712 armnn::IWorkloadFactory& workloadFactory,
713 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000714 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000715
716// Tests the resize bilinear for minification of a square input matrix (also: input dimensions are a
717// multiple of output dimensions).
718LayerTestResult<float, 4> ResizeBilinearSqMinTest(
719 armnn::IWorkloadFactory& workloadFactory,
720 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000721 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000722
723// Tests the resize bilinear for minification (output dimensions smaller than input dimensions).
724LayerTestResult<float, 4> ResizeBilinearMinTest(
725 armnn::IWorkloadFactory& workloadFactory,
726 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000727 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000728
729// Tests the resize bilinear for magnification (output dimensions bigger than input dimensions).
730LayerTestResult<float, 4> ResizeBilinearMagTest(
731 armnn::IWorkloadFactory& workloadFactory,
732 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000733 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000734
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000735LayerTestResult<float, 2> Rsqrt2dTestCommon(
736 armnn::IWorkloadFactory& workloadFactory,
737 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
738 const armnn::TensorInfo inputTensorInfo,
739 const armnn::TensorInfo outputTensorInfo,
740 std::vector<float> inputValues,
741 std::vector<float> expectedOutputValues);
742
743LayerTestResult<float, 2> Rsqrt2dTest(
744 armnn::IWorkloadFactory& workloadFactory,
745 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
746
747LayerTestResult<float, 3> Rsqrt3dTest(
748 armnn::IWorkloadFactory& workloadFactory,
749 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
750
751LayerTestResult<float, 2> RsqrtZeroTest(
752 armnn::IWorkloadFactory& workloadFactory,
753 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
754
755LayerTestResult<float, 2> RsqrtNegativeTest(
756 armnn::IWorkloadFactory& workloadFactory,
757 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
758
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000759LayerTestResult<float, 4> BatchNormTest(
760 armnn::IWorkloadFactory& workloadFactory,
761 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
762
763LayerTestResult<float, 4> BatchNormNhwcTest(
764 armnn::IWorkloadFactory& workloadFactory,
765 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
766
767LayerTestResult<float, 2> FakeQuantizationTest(
768 armnn::IWorkloadFactory& workloadFactory,
769 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
770
771LayerTestResult<float, 4> L2Normalization1dTest(
772 armnn::IWorkloadFactory& workloadFactory,
773 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000774 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000775
776LayerTestResult<float, 4> L2Normalization2dTest(
777 armnn::IWorkloadFactory& workloadFactory,
778 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000779 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000780
781LayerTestResult<float, 4> L2Normalization3dTest(
782 armnn::IWorkloadFactory& workloadFactory,
783 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000784 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000785
786LayerTestResult<float, 4> L2Normalization4dTest(
787 armnn::IWorkloadFactory& workloadFactory,
788 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000789 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000790
791LayerTestResult<float, 4> ConstantTest(
792 armnn::IWorkloadFactory& workloadFactory,
793 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
794
Nina Drozd58ef2c62019-05-16 12:09:18 +0100795LayerTestResult<uint8_t, 4> ConstantUint8SimpleQuantizationScaleNoOffsetTest(
796 armnn::IWorkloadFactory& workloadFactory,
797 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
798
799LayerTestResult<int16_t, 4> ConstantInt16SimpleQuantizationScaleNoOffsetTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000800 armnn::IWorkloadFactory& workloadFactory,
801 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
802
803LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
804 armnn::IWorkloadFactory& workloadFactory,
805 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
806 float upperBound);
807
808LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
809 armnn::IWorkloadFactory& workloadFactory,
810 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
811 float upperBound,
812 float lowerBound);
813
Francis Murtagh46c09d02019-05-28 08:15:28 +0100814template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
815LayerTestResult<T, 2> FullyConnectedTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000816 armnn::IWorkloadFactory& workloadFactory,
817 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
818 bool biasEnabled);
819
820std::vector<LayerTestResult<uint8_t, 3>> SplitterUint8Test(
821 armnn::IWorkloadFactory& workloadFactory,
822 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
823
Ruomei Yan25339c32019-05-28 16:48:20 +0100824std::vector<LayerTestResult<int16_t, 3>> SplitterInt16Test(
825 armnn::IWorkloadFactory& workloadFactory,
826 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
827
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000828LayerTestResult<uint8_t, 3> CopyViaSplitterUint8Test(
829 armnn::IWorkloadFactory& workloadFactory,
830 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
831
Ruomei Yan25339c32019-05-28 16:48:20 +0100832LayerTestResult<int16_t, 3> CopyViaSplitterInt16Test(
833 armnn::IWorkloadFactory& workloadFactory,
834 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
835
Jim Flynn4ed6c832019-05-20 11:02:46 +0100836LayerTestResult<uint8_t, 3> ConcatUint8Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000837 armnn::IWorkloadFactory& workloadFactory,
838 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
839
Jim Flynn4ed6c832019-05-20 11:02:46 +0100840LayerTestResult<uint16_t, 3> ConcatUint16Test(
Jim Flynncbb66aa2019-05-15 13:03:54 +0100841 armnn::IWorkloadFactory& workloadFactory,
842 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
843
Jim Flynn4ed6c832019-05-20 11:02:46 +0100844LayerTestResult<uint8_t, 3> ConcatUint8DifferentQParamsTest(
Jim Flynncbb66aa2019-05-15 13:03:54 +0100845 armnn::IWorkloadFactory& workloadFactory,
846 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Ferran Balaguerb2845652019-02-27 09:42:06 +0000847
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000848LayerTestResult<uint8_t, 4> AdditionUint8Test(
849 armnn::IWorkloadFactory& workloadFactory,
850 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
851
852LayerTestResult<uint8_t, 4> AdditionBroadcast1ElementUint8Test(
853 armnn::IWorkloadFactory& workloadFactory,
854 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
855
856LayerTestResult<uint8_t, 4> AdditionBroadcastUint8Test(
857 armnn::IWorkloadFactory& workloadFactory,
858 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
859
Sadik Armagan2999a022019-04-09 14:20:12 +0100860LayerTestResult<int16_t, 4> AdditionInt16Test(
861 armnn::IWorkloadFactory& workloadFactory,
862 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
863
864LayerTestResult<int16_t, 4> AdditionBroadcastInt16Test(
865 armnn::IWorkloadFactory& workloadFactory,
866 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
867
868LayerTestResult<int16_t, 4> AdditionBroadcast1ElementInt16Test(
869 armnn::IWorkloadFactory& workloadFactory,
870 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
871
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000872LayerTestResult<uint8_t, 4> SubtractionUint8Test(
873 armnn::IWorkloadFactory& workloadFactory,
874 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
875
876LayerTestResult<uint8_t, 4> SubtractionBroadcast1ElementUint8Test(
877 armnn::IWorkloadFactory& workloadFactory,
878 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
879
880LayerTestResult<uint8_t, 4> SubtractionBroadcastUint8Test(
881 armnn::IWorkloadFactory& workloadFactory,
882 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
883
Sadik Armagan2999a022019-04-09 14:20:12 +0100884LayerTestResult<int16_t, 4> SubtractionInt16Test(
885 armnn::IWorkloadFactory& workloadFactory,
886 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
887
888LayerTestResult<int16_t, 4> SubtractionBroadcast1ElementInt16Test(
889 armnn::IWorkloadFactory& workloadFactory,
890 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
891
892LayerTestResult<int16_t, 4> SubtractionBroadcastInt16Test(
893 armnn::IWorkloadFactory& workloadFactory,
894 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
895
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000896LayerTestResult<uint8_t, 4> CompareActivationUint8Test(
897 armnn::IWorkloadFactory& workloadFactory,
898 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
899 armnn::IWorkloadFactory& refWorkloadFactory,
900 armnn::ActivationFunction f);
901
Teresa Charlin18515e22019-04-24 10:17:46 +0100902LayerTestResult<int16_t, 4> CompareActivationInt16Test(
903 armnn::IWorkloadFactory& workloadFactory,
904 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
905 armnn::IWorkloadFactory& refWorkloadFactory,
906 armnn::ActivationFunction f);
907
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000908LayerTestResult<uint8_t, 2> CompareSoftmaxUint8Test(
909 armnn::IWorkloadFactory& workloadFactory,
910 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
911 armnn::IWorkloadFactory& refWorkloadFactory,
912 float beta);
913
914LayerTestResult<uint8_t, 4> MultiplicationUint8Test(
915 armnn::IWorkloadFactory& workloadFactory,
916 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
917
918LayerTestResult<uint8_t, 4> MultiplicationBroadcast1ElementUint8Test(
919 armnn::IWorkloadFactory& workloadFactory,
920 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
921
922LayerTestResult<uint8_t, 4> MultiplicationBroadcast1DVectorUint8Test(
923 armnn::IWorkloadFactory& workloadFactory,
924 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
925
Sadik Armagan2999a022019-04-09 14:20:12 +0100926LayerTestResult<int16_t, 4> MultiplicationInt16Test(
927 armnn::IWorkloadFactory& workloadFactory,
928 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
929
930LayerTestResult<int16_t, 4> MultiplicationBroadcast1ElementInt16Test(
931 armnn::IWorkloadFactory& workloadFactory,
932 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
933
934LayerTestResult<int16_t, 4> MultiplicationBroadcast1DVectorInt16Test(
935 armnn::IWorkloadFactory& workloadFactory,
936 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
937
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000938LayerTestResult<uint8_t, 4> DivisionUint8Test(
939 armnn::IWorkloadFactory& workloadFactory,
940 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
941
942LayerTestResult<uint8_t, 4> DivisionBroadcast1ElementUint8Test(
943 armnn::IWorkloadFactory& workloadFactory,
944 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
945
946LayerTestResult<uint8_t, 4> DivisionBroadcast1DVectorUint8Test(
947 armnn::IWorkloadFactory& workloadFactory,
948 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
949
Sadik Armagan2999a022019-04-09 14:20:12 +0100950LayerTestResult<int16_t, 4> DivisionInt16Test(
951 armnn::IWorkloadFactory& workloadFactory,
952 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
953
954LayerTestResult<int16_t, 4> DivisionBroadcast1ElementInt16Test(
955 armnn::IWorkloadFactory& workloadFactory,
956 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
957
958LayerTestResult<int16_t, 4> DivisionBroadcast1DVectorInt16Test(
959 armnn::IWorkloadFactory& workloadFactory,
960 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
961
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000962LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test(
963 armnn::IWorkloadFactory& workloadFactory,
964 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
965 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000966 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000967
968LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test(
969 armnn::IWorkloadFactory& workloadFactory,
970 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
971 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000972 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000973
Mike Kelly2f80f6e2019-05-16 12:41:34 +0100974LayerTestResult<int16_t, 4> SimpleConvolution2d3x5QSymm16Test(
975 armnn::IWorkloadFactory& workloadFactory,
976 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
977 bool biasEnabled,
978 const armnn::DataLayout layout);
979
980LayerTestResult<int16_t, 4> SimpleConvolution2d3x3QSymm16Test(
981 armnn::IWorkloadFactory& workloadFactory,
982 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
983 bool biasEnabled,
984 const armnn::DataLayout layout);
985
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000986LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test(
987 armnn::IWorkloadFactory& workloadFactory,
988 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
989 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000990 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000991
992LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test(
993 armnn::IWorkloadFactory& workloadFactory,
994 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
995 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000996 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000997
Ruomei Yan88d44b82019-05-23 14:29:06 +0100998LayerTestResult<int16_t, 4> DepthwiseConvolution2dInt16Test(
999 armnn::IWorkloadFactory& workloadFactory,
1000 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1001 bool biasEnabled,
1002 const armnn::DataLayout layout);
1003
1004LayerTestResult<int16_t, 4> DepthwiseConvolution2dDepthMul1Int16Test(
1005 armnn::IWorkloadFactory& workloadFactory,
1006 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1007 bool biasEnabled,
1008 const armnn::DataLayout layout);
1009
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001010LayerTestResult<uint8_t, 4> ConstantLinearActivationUint8Test(
1011 armnn::IWorkloadFactory& workloadFactory,
1012 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1013
Teresa Charlin18515e22019-04-24 10:17:46 +01001014LayerTestResult<int16_t, 4> ConstantLinearActivationInt16Test(
1015 armnn::IWorkloadFactory& workloadFactory,
1016 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1017
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001018LayerTestResult<uint8_t, 4> ResizeBilinearNopUint8Test(
1019 armnn::IWorkloadFactory& workloadFactory,
1020 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1021
1022LayerTestResult<uint8_t, 4> SimpleResizeBilinearUint8Test(
1023 armnn::IWorkloadFactory& workloadFactory,
1024 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1025
1026LayerTestResult<uint8_t, 4> ResizeBilinearSqMinUint8Test(
1027 armnn::IWorkloadFactory& workloadFactory,
1028 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1029
1030LayerTestResult<uint8_t, 4> ResizeBilinearMinUint8Test(
1031 armnn::IWorkloadFactory& workloadFactory,
1032 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1033
1034LayerTestResult<uint8_t, 4> ResizeBilinearMagUint8Test(
1035 armnn::IWorkloadFactory& workloadFactory,
1036 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1037
1038LayerTestResult<uint8_t, 4> BatchNormUint8Test(
1039 armnn::IWorkloadFactory& workloadFactory,
1040 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1041
1042LayerTestResult<uint8_t, 4> BatchNormUint8NhwcTest(
1043 armnn::IWorkloadFactory& workloadFactory,
1044 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1045
Matteo Martincighf5507132019-06-04 10:59:47 +01001046LayerTestResult<int16_t, 4> BatchNormInt16Test(
1047 armnn::IWorkloadFactory& workloadFactory,
1048 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1049
1050LayerTestResult<int16_t, 4> BatchNormInt16NhwcTest(
1051 armnn::IWorkloadFactory& workloadFactory,
1052 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1053
Nina Drozd58ef2c62019-05-16 12:09:18 +01001054LayerTestResult<uint8_t, 4> ConstantUint8CustomQuantizationScaleAndOffsetTest(
1055 armnn::IWorkloadFactory& workloadFactory,
1056 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1057
1058LayerTestResult<int16_t, 4> ConstantInt16CustomQuantizationScaleAndOffsetTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001059 armnn::IWorkloadFactory& workloadFactory,
1060 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1061
1062LayerTestResult<uint8_t, 1> Concatenation1dUint8Test(
1063 armnn::IWorkloadFactory& workloadFactory,
1064 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1065
1066LayerTestResult<uint8_t, 2> Concatenation2dDim0Uint8Test(
1067 armnn::IWorkloadFactory& workloadFactory,
1068 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1069
1070LayerTestResult<uint8_t, 2> Concatenation2dDim1Uint8Test(
1071 armnn::IWorkloadFactory& workloadFactory,
1072 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1073
1074LayerTestResult<uint8_t, 2> Concatenation2dDim0DiffInputDimsUint8Test(
1075 armnn::IWorkloadFactory& workloadFactory,
1076 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1077
1078LayerTestResult<uint8_t, 2> Concatenation2dDim1DiffInputDimsUint8Test(
1079 armnn::IWorkloadFactory& workloadFactory,
1080 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1081
1082LayerTestResult<uint8_t, 3> Concatenation3dDim0Uint8Test(
1083 armnn::IWorkloadFactory& workloadFactory,
1084 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1085
1086LayerTestResult<uint8_t, 3> Concatenation3dDim1Uint8Test(
1087 armnn::IWorkloadFactory& workloadFactory,
1088 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1089
1090LayerTestResult<uint8_t, 3> Concatenation3dDim2Uint8Test(
1091 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +00001092 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1093 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001094
1095LayerTestResult<uint8_t, 3> Concatenation3dDim0DiffInputDimsUint8Test(
1096 armnn::IWorkloadFactory& workloadFactory,
1097 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1098
1099LayerTestResult<uint8_t, 3> Concatenation3dDim1DiffInputDimsUint8Test(
1100 armnn::IWorkloadFactory& workloadFactory,
1101 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1102
1103LayerTestResult<uint8_t, 3> Concatenation3dDim2DiffInputDimsUint8Test(
1104 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +00001105 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1106 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001107
kevmay012b4d88e2019-01-24 14:05:09 +00001108LayerTestResult<uint8_t, 4> EqualSimpleTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001109 armnn::IWorkloadFactory& workloadFactory,
1110 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1111
kevmay012b4d88e2019-01-24 14:05:09 +00001112LayerTestResult<uint8_t, 4> EqualBroadcast1ElementTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001113 armnn::IWorkloadFactory& workloadFactory,
1114 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1115
kevmay012b4d88e2019-01-24 14:05:09 +00001116LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001117 armnn::IWorkloadFactory& workloadFactory,
1118 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1119
1120LayerTestResult<uint8_t, 4> EqualUint8Test(
1121 armnn::IWorkloadFactory& workloadFactory,
1122 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1123
1124LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
1125 armnn::IWorkloadFactory& workloadFactory,
1126 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1127
1128LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorUint8Test(
1129 armnn::IWorkloadFactory& workloadFactory,
1130 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1131
kevmay012b4d88e2019-01-24 14:05:09 +00001132LayerTestResult<uint8_t, 4> GreaterSimpleTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001133 armnn::IWorkloadFactory& workloadFactory,
1134 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1135
kevmay012b4d88e2019-01-24 14:05:09 +00001136LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001137 armnn::IWorkloadFactory& workloadFactory,
1138 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1139
kevmay012b4d88e2019-01-24 14:05:09 +00001140LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001141 armnn::IWorkloadFactory& workloadFactory,
1142 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1143
1144LayerTestResult<uint8_t, 4> GreaterUint8Test(
1145 armnn::IWorkloadFactory& workloadFactory,
1146 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1147
1148LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
1149 armnn::IWorkloadFactory& workloadFactory,
1150 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1151
1152LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorUint8Test(
1153 armnn::IWorkloadFactory& workloadFactory,
1154 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1155
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001156LayerTestResult<float, 2> FullyConnectedLargeTest(
1157 armnn::IWorkloadFactory& workloadFactory,
1158 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1159 bool transposeWeights);
1160
1161LayerTestResult<float, 4> SimplePermuteFloat32Test(
1162 armnn::IWorkloadFactory& workloadFactory,
1163 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1164
1165LayerTestResult<uint8_t, 4> SimplePermuteUint8Test(
1166 armnn::IWorkloadFactory& workloadFactory,
1167 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1168
1169LayerTestResult<uint8_t, 2> PadUint82dTest(
1170 armnn::IWorkloadFactory& workloadFactory,
1171 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1172
1173LayerTestResult<uint8_t, 3> PadUint83dTest(
1174 armnn::IWorkloadFactory& workloadFactory,
1175 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1176
1177LayerTestResult<uint8_t, 4> PadUint84dTest(
1178 armnn::IWorkloadFactory& workloadFactory,
1179 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1180
1181LayerTestResult<float, 2> PadFloat322dTest(
1182 armnn::IWorkloadFactory& workloadFactory,
1183 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1184
1185LayerTestResult<float, 3> PadFloat323dTest(
1186 armnn::IWorkloadFactory& workloadFactory,
1187 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1188
1189LayerTestResult<float, 4> PadFloat324dTest(
1190 armnn::IWorkloadFactory& workloadFactory,
1191 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1192
1193LayerTestResult<float, 4> PermuteFloat32ValueSet1Test(
1194 armnn::IWorkloadFactory& workloadFactory,
1195 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1196
1197LayerTestResult<float, 4> PermuteFloat32ValueSet2Test(
1198 armnn::IWorkloadFactory& workloadFactory,
1199 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1200
1201LayerTestResult<float, 4> PermuteFloat32ValueSet3Test(
1202 armnn::IWorkloadFactory& workloadFactory,
1203 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1204
1205LayerTestResult<float, 2> LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest(
1206 armnn::IWorkloadFactory& workloadFactory,
1207 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1208
1209LayerTestResult<float, 2> LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest(
1210 armnn::IWorkloadFactory& workloadFactory,
1211 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1212
1213LayerTestResult<float, 2> LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest(
1214 armnn::IWorkloadFactory& workloadFactory,
1215 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1216
Conor Kennedyb9971c92019-05-07 07:14:23 +01001217LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionTest(
1218 armnn::IWorkloadFactory& workloadFactory,
1219 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1220
1221LayerTestResult<int16_t, 2> LstmLayerInt16WithCifgWithPeepholeNoProjectionTest(
1222 armnn::IWorkloadFactory& workloadFactory,
1223 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1224
1225LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgWithPeepholeWithProjectionTest(
1226 armnn::IWorkloadFactory& workloadFactory,
1227 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1228
1229LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest(
1230 armnn::IWorkloadFactory& workloadFactory,
1231 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1232
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001233LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(
1234 armnn::IWorkloadFactory& workloadFactory,
1235 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1236
1237LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(
1238 armnn::IWorkloadFactory& workloadFactory,
1239 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1240
Éanna Ó Catháinde705582018-12-03 13:04:22 +00001241LayerTestResult<float, 4> MaximumSimpleTest(
1242 armnn::IWorkloadFactory& workloadFactory,
1243 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1244
1245LayerTestResult<float, 4> MaximumBroadcast1ElementTest(
1246 armnn::IWorkloadFactory& workloadFactory,
1247 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1248
1249LayerTestResult<float, 4> MaximumBroadcast1DVectorTest(
1250 armnn::IWorkloadFactory& workloadFactory,
1251 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1252
1253LayerTestResult<uint8_t , 4> MaximumUint8Test(
1254 armnn::IWorkloadFactory& workloadFactory,
1255 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1256
1257LayerTestResult<uint8_t, 4> MaximumBroadcast1ElementUint8Test(
1258 armnn::IWorkloadFactory& workloadFactory,
1259 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1260
1261LayerTestResult<uint8_t, 4> MaximumBroadcast1DVectorUint8Test(
1262 armnn::IWorkloadFactory& workloadFactory,
1263 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1264
Sadik Armagan2999a022019-04-09 14:20:12 +01001265LayerTestResult<int16_t , 4> MaximumInt16Test(
1266 armnn::IWorkloadFactory& workloadFactory,
1267 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1268
1269LayerTestResult<int16_t, 4> MaximumBroadcast1ElementInt16Test(
1270 armnn::IWorkloadFactory& workloadFactory,
1271 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1272
1273LayerTestResult<int16_t, 4> MaximumBroadcast1DVectorInt16Test(
1274 armnn::IWorkloadFactory& workloadFactory,
1275 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1276
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001277LayerTestResult<uint8_t, 1> MeanUint8SimpleTest(
1278 armnn::IWorkloadFactory& workloadFactory,
1279 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1280
1281LayerTestResult<uint8_t, 3> MeanUint8SimpleAxisTest(
1282 armnn::IWorkloadFactory& workloadFactory,
1283 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1284
1285LayerTestResult<uint8_t, 4> MeanUint8KeepDimsTest(
1286 armnn::IWorkloadFactory& workloadFactory,
1287 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1288
1289LayerTestResult<uint8_t, 4> MeanUint8MultipleDimsTest(
1290 armnn::IWorkloadFactory& workloadFactory,
1291 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1292
1293LayerTestResult<uint8_t, 1> MeanVtsUint8Test(
1294 armnn::IWorkloadFactory& workloadFactory,
1295 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1296
1297LayerTestResult<float, 1> MeanFloatSimpleTest(
1298 armnn::IWorkloadFactory& workloadFactory,
1299 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1300
1301LayerTestResult<float, 3> MeanFloatSimpleAxisTest(
1302 armnn::IWorkloadFactory& workloadFactory,
1303 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1304
1305LayerTestResult<float, 4> MeanFloatKeepDimsTest(
1306 armnn::IWorkloadFactory& workloadFactory,
1307 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1308
1309LayerTestResult<float, 4> MeanFloatMultipleDimsTest(
1310 armnn::IWorkloadFactory& workloadFactory,
1311 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1312
1313LayerTestResult<float, 1> MeanVtsFloat1Test(
1314 armnn::IWorkloadFactory& workloadFactory,
1315 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1316
1317LayerTestResult<float, 3> MeanVtsFloat2Test(
1318 armnn::IWorkloadFactory& workloadFactory,
1319 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1320
1321LayerTestResult<float, 3> MeanVtsFloat3Test(
1322 armnn::IWorkloadFactory& workloadFactory,
1323 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1324
Éanna Ó Catháin20e58802018-12-04 10:29:06 +00001325LayerTestResult<float, 4> MinimumBroadcast1ElementTest1(
1326 armnn::IWorkloadFactory& workloadFactory,
1327 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1328
1329LayerTestResult<float, 4> MinimumBroadcast1ElementTest2(
1330 armnn::IWorkloadFactory& workloadFactory,
1331 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1332
1333LayerTestResult<uint8_t, 4> MinimumBroadcast1DVectorUint8Test(
1334 armnn::IWorkloadFactory & workloadFactory,
1335 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1336
Sadik Armagan2999a022019-04-09 14:20:12 +01001337LayerTestResult<int16_t , 4> MinimumInt16Test(
1338 armnn::IWorkloadFactory& workloadFactory,
1339 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1340
1341LayerTestResult<int16_t, 4> MinimumBroadcast1ElementInt16Test(
1342 armnn::IWorkloadFactory& workloadFactory,
1343 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1344
1345LayerTestResult<int16_t, 4> MinimumBroadcast1DVectorInt16Test(
1346 armnn::IWorkloadFactory& workloadFactory,
1347 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1348
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001349LayerTestResult<float, 4> AdditionAfterMaxPoolTest(
1350 armnn::IWorkloadFactory& workloadFactory,
1351 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1352
1353LayerTestResult<float, 4> SpaceToBatchNdSimpleFloat32Test(
1354 armnn::IWorkloadFactory& workloadFactory,
1355 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1356
1357LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsFloat32Test(
1358 armnn::IWorkloadFactory& workloadFactory,
1359 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1360
1361LayerTestResult<float, 4> SpaceToBatchNdMultiBlockFloat32Test(
1362 armnn::IWorkloadFactory& workloadFactory,
1363 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1364
1365LayerTestResult<float, 4> SpaceToBatchNdPaddingFloat32Test(
1366 armnn::IWorkloadFactory& workloadFactory,
1367 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1368
1369LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleUint8Test(
1370 armnn::IWorkloadFactory& workloadFactory,
1371 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1372
1373LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsUint8Test(
1374 armnn::IWorkloadFactory& workloadFactory,
1375 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1376
1377LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockUint8Test(
1378 armnn::IWorkloadFactory& workloadFactory,
1379 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1380
1381LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingUint8Test(
1382 armnn::IWorkloadFactory& workloadFactory,
1383 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1384
1385LayerTestResult<float, 4> SpaceToBatchNdSimpleNHWCFloat32Test(
1386 armnn::IWorkloadFactory& workloadFactory,
1387 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1388
1389LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsNHWCFloat32Test(
1390 armnn::IWorkloadFactory& workloadFactory,
1391 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1392
1393LayerTestResult<float, 4> SpaceToBatchNdMultiBlockNHWCFloat32Test(
1394 armnn::IWorkloadFactory& workloadFactory,
1395 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1396
1397LayerTestResult<float, 4> SpaceToBatchNdPaddingNHWCFloat32Test(
1398 armnn::IWorkloadFactory& workloadFactory,
1399 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1400
1401LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleNHWCUint8Test(
1402 armnn::IWorkloadFactory& workloadFactory,
1403 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1404
1405LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsNHWCUint8Test(
1406 armnn::IWorkloadFactory& workloadFactory,
1407 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1408
1409LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockNHWCUint8Test(
1410 armnn::IWorkloadFactory& workloadFactory,
1411 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1412
1413LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingNHWCUint8Test(
1414 armnn::IWorkloadFactory& workloadFactory,
1415 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1416
nikraj01120522a2019-05-31 11:33:07 +01001417LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleUint16Test(
1418 armnn::IWorkloadFactory& workloadFactory,
1419 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1420
1421LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsUint16Test(
1422 armnn::IWorkloadFactory& workloadFactory,
1423 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1424
1425LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockUint16Test(
1426 armnn::IWorkloadFactory& workloadFactory,
1427 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1428
1429LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingUint16Test(
1430 armnn::IWorkloadFactory& workloadFactory,
1431 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1432
1433LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleNHWCUint16Test(
1434 armnn::IWorkloadFactory& workloadFactory,
1435 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1436
1437LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsNHWCUint16Test(
1438 armnn::IWorkloadFactory& workloadFactory,
1439 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1440
1441LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockNHWCUint16Test(
1442 armnn::IWorkloadFactory& workloadFactory,
1443 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1444
1445LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingNHWCUint16Test(
1446 armnn::IWorkloadFactory& workloadFactory,
1447 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1448
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001449LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test1(
1450 armnn::IWorkloadFactory& workloadFactory,
1451 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1452
1453LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test2(
1454 armnn::IWorkloadFactory& workloadFactory,
1455 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1456
1457LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test3(
1458 armnn::IWorkloadFactory& workloadFactory,
1459 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1460
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001461LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test4(
1462 armnn::IWorkloadFactory& workloadFactory,
1463 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1464
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001465LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test1(
1466 armnn::IWorkloadFactory &workloadFactory,
1467 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1468
Mike Kelly831faed2018-11-28 11:52:08 +00001469LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001470 armnn::IWorkloadFactory &workloadFactory,
1471 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001472
1473LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001474 armnn::IWorkloadFactory &workloadFactory,
1475 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001476
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001477LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest1(
1478 armnn::IWorkloadFactory &workloadFactory,
1479 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001480
Mike Kelly831faed2018-11-28 11:52:08 +00001481LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001482 armnn::IWorkloadFactory &workloadFactory,
1483 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001484
1485LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001486 armnn::IWorkloadFactory &workloadFactory,
1487 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001488
1489LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest1(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001490 armnn::IWorkloadFactory &workloadFactory,
1491 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001492
1493LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001494 armnn::IWorkloadFactory &workloadFactory,
1495 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001496
1497LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001498 armnn::IWorkloadFactory &workloadFactory,
1499 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1500
1501LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest4(
1502 armnn::IWorkloadFactory &workloadFactory,
1503 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001504
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001505LayerTestResult<float, 4> StridedSlice4DFloat32Test(
1506 armnn::IWorkloadFactory& workloadFactory,
1507 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001508
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001509LayerTestResult<float, 4> StridedSlice4DReverseFloat32Test(
1510 armnn::IWorkloadFactory& workloadFactory,
1511 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1512
1513LayerTestResult<float, 4> StridedSliceSimpleStrideFloat32Test(
1514 armnn::IWorkloadFactory& workloadFactory,
1515 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1516
1517LayerTestResult<float, 4> StridedSliceSimpleRangeMaskFloat32Test(
1518 armnn::IWorkloadFactory& workloadFactory,
1519 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1520
1521LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test(
1522 armnn::IWorkloadFactory& workloadFactory,
1523 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1524
1525LayerTestResult<float, 3> StridedSlice3DFloat32Test(
1526 armnn::IWorkloadFactory& workloadFactory,
1527 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1528
1529LayerTestResult<float, 3> StridedSlice3DReverseFloat32Test(
1530 armnn::IWorkloadFactory& workloadFactory,
1531 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1532
1533LayerTestResult<float, 2> StridedSlice2DFloat32Test(
1534 armnn::IWorkloadFactory& workloadFactory,
1535 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1536
1537LayerTestResult<float, 2> StridedSlice2DReverseFloat32Test(
1538 armnn::IWorkloadFactory& workloadFactory,
1539 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1540
1541LayerTestResult<uint8_t, 4> StridedSlice4DUint8Test(
1542 armnn::IWorkloadFactory& workloadFactory,
1543 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1544
1545LayerTestResult<uint8_t, 4> StridedSlice4DReverseUint8Test(
1546 armnn::IWorkloadFactory& workloadFactory,
1547 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1548
1549LayerTestResult<uint8_t, 4> StridedSliceSimpleStrideUint8Test(
1550 armnn::IWorkloadFactory& workloadFactory,
1551 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1552
1553LayerTestResult<uint8_t, 4> StridedSliceSimpleRangeMaskUint8Test(
1554 armnn::IWorkloadFactory& workloadFactory,
1555 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1556
1557LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test(
1558 armnn::IWorkloadFactory& workloadFactory,
1559 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1560
1561LayerTestResult<uint8_t, 3> StridedSlice3DUint8Test(
1562 armnn::IWorkloadFactory& workloadFactory,
1563 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1564
1565LayerTestResult<uint8_t, 3> StridedSlice3DReverseUint8Test(
1566 armnn::IWorkloadFactory& workloadFactory,
1567 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1568
1569LayerTestResult<uint8_t, 2> StridedSlice2DUint8Test(
1570 armnn::IWorkloadFactory& workloadFactory,
1571 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1572
1573LayerTestResult<uint8_t, 2> StridedSlice2DReverseUint8Test(
1574 armnn::IWorkloadFactory& workloadFactory,
1575 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001576
Matteo Martincigh42666a12019-05-29 08:53:41 +01001577LayerTestResult<int16_t, 4> StridedSlice4DInt16Test(
1578 armnn::IWorkloadFactory& workloadFactory,
1579 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1580
1581LayerTestResult<int16_t, 4> StridedSlice4DReverseInt16Test(
1582 armnn::IWorkloadFactory& workloadFactory,
1583 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1584
1585LayerTestResult<int16_t, 4> StridedSliceSimpleStrideInt16Test(
1586 armnn::IWorkloadFactory& workloadFactory,
1587 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1588
1589LayerTestResult<int16_t, 4> StridedSliceSimpleRangeMaskInt16Test(
1590 armnn::IWorkloadFactory& workloadFactory,
1591 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1592
1593LayerTestResult<int16_t, 2> StridedSliceShrinkAxisMaskInt16Test(
1594 armnn::IWorkloadFactory& workloadFactory,
1595 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1596
1597LayerTestResult<int16_t, 3> StridedSlice3DInt16Test(
1598 armnn::IWorkloadFactory& workloadFactory,
1599 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1600
1601LayerTestResult<int16_t, 3> StridedSlice3DReverseInt16Test(
1602 armnn::IWorkloadFactory& workloadFactory,
1603 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1604
1605LayerTestResult<int16_t, 2> StridedSlice2DInt16Test(
1606 armnn::IWorkloadFactory& workloadFactory,
1607 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1608
1609LayerTestResult<int16_t, 2> StridedSlice2DReverseInt16Test(
1610 armnn::IWorkloadFactory& workloadFactory,
1611 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1612
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001613LayerTestResult<float, 4> Debug4DFloat32Test(
1614 armnn::IWorkloadFactory& workloadFactory,
1615 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1616
1617LayerTestResult<float, 3> Debug3DFloat32Test(
1618 armnn::IWorkloadFactory& workloadFactory,
1619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1620
1621LayerTestResult<float, 2> Debug2DFloat32Test(
1622 armnn::IWorkloadFactory& workloadFactory,
1623 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1624
1625LayerTestResult<float, 1> Debug1DFloat32Test(
1626 armnn::IWorkloadFactory& workloadFactory,
1627 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1628
1629LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1630 armnn::IWorkloadFactory& workloadFactory,
1631 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1632
1633LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1634 armnn::IWorkloadFactory& workloadFactory,
1635 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1636
1637LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1638 armnn::IWorkloadFactory& workloadFactory,
1639 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1640
1641LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1642 armnn::IWorkloadFactory& workloadFactory,
1643 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Matteo Martincigh49124022019-01-11 13:25:59 +00001644
1645LayerTestResult<uint8_t, 4> PreCompiledConvolution2dTest(
1646 armnn::IWorkloadFactory& workloadFactory,
1647 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1648
1649LayerTestResult<uint8_t, 4> PreCompiledConvolution2dStride2x2Test(
1650 armnn::IWorkloadFactory& workloadFactory,
1651 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1652
1653LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dTest(
1654 armnn::IWorkloadFactory & workloadFactory,
1655 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1656
1657LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dStride2x2Test(
1658 armnn::IWorkloadFactory & workloadFactory,
1659 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1660
1661LayerTestResult<uint8_t, 4> PreCompiledMaxPooling2dTest(
1662 armnn::IWorkloadFactory& workloadFactory,
1663 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1664
1665LayerTestResult<float, 4> Debug4DFloat32Test(
1666 armnn::IWorkloadFactory& workloadFactory,
1667 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1668
1669LayerTestResult<float, 3> Debug3DFloat32Test(
1670 armnn::IWorkloadFactory& workloadFactory,
1671 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1672
1673LayerTestResult<float, 2> Debug2DFloat32Test(
1674 armnn::IWorkloadFactory& workloadFactory,
1675 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1676
1677LayerTestResult<float, 1> Debug1DFloat32Test(
1678 armnn::IWorkloadFactory& workloadFactory,
1679 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1680
1681LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1682 armnn::IWorkloadFactory& workloadFactory,
1683 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1684
1685LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1686 armnn::IWorkloadFactory& workloadFactory,
1687 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1688
1689LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1690 armnn::IWorkloadFactory& workloadFactory,
1691 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1692
1693LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1694 armnn::IWorkloadFactory& workloadFactory,
1695 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra014951d842019-01-18 16:53:53 +00001696
1697LayerTestResult<float, 1> Gather1DParamsFloatTest(
1698 armnn::IWorkloadFactory& workloadFactory,
1699 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1700
1701LayerTestResult<uint8_t, 1> Gather1DParamsUint8Test(
1702 armnn::IWorkloadFactory& workloadFactory,
1703 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1704
1705LayerTestResult<float, 2> GatherMultiDimParamsFloatTest(
1706 armnn::IWorkloadFactory& workloadFactory,
1707 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1708
1709LayerTestResult<uint8_t, 2> GatherMultiDimParamsUint8Test(
1710 armnn::IWorkloadFactory& workloadFactory,
1711 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1712
1713LayerTestResult<float, 4> GatherMultiDimParamsMultiDimIndicesFloatTest(
1714 armnn::IWorkloadFactory& workloadFactory,
1715 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1716
1717LayerTestResult<uint8_t, 4> GatherMultiDimParamsMultiDimIndicesUint8Test(
1718 armnn::IWorkloadFactory& workloadFactory,
1719 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong8a54ac02019-03-29 15:25:04 +00001720
Nattapat Chaimanowongafa4e3a2019-04-02 11:41:45 +01001721LayerTestResult<float, 4> DequantizeSimpleUint8Test(
1722 armnn::IWorkloadFactory& workloadFactory,
1723 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1724
1725LayerTestResult<float, 4> DequantizeOffsetUint8Test(
1726 armnn::IWorkloadFactory& workloadFactory,
1727 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1728
1729LayerTestResult<float, 4> DequantizeSimpleInt16Test(
Nattapat Chaimanowong8a54ac02019-03-29 15:25:04 +00001730 armnn::IWorkloadFactory& workloadFactory,
1731 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowonga0beb3b2019-04-01 17:04:53 +01001732
1733LayerTestResult<uint8_t, 4> QuantizeSimpleUint8Test(
1734 armnn::IWorkloadFactory& workloadFactory,
1735 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1736
1737LayerTestResult<uint8_t, 4> QuantizeClampUint8Test(
1738 armnn::IWorkloadFactory& workloadFactory,
1739 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1740
1741LayerTestResult<int16_t, 4> QuantizeClampInt16Test(
1742 armnn::IWorkloadFactory& workloadFactory,
1743 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Francis Murtagh46c09d02019-05-28 08:15:28 +01001744
1745template<typename T, typename B>
1746LayerTestResult<T, 2> SimpleFullyConnectedTestImpl(
1747 armnn::IWorkloadFactory& workloadFactory,
1748 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1749 armnn::TensorInfo inputTensorInfo,
1750 armnn::TensorInfo outputTensorInfo,
1751 armnn::TensorInfo weightsDesc,
1752 armnn::TensorInfo biasesDesc,
1753 boost::multi_array<T, 2>& weights,
1754 boost::multi_array<B, 1>& bias,
1755 boost::multi_array<T, 4>& input,
1756 bool biasEnabled,
1757 bool transposeWeights)
1758{
1759 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1760 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1761
1762 armnn::FullyConnectedQueueDescriptor data;
1763 armnn::WorkloadInfo info;
1764 armnn::ScopedCpuTensorHandle weightsTensor(weightsDesc);
1765 armnn::ScopedCpuTensorHandle biasTensor(biasesDesc);
1766
1767 AllocateAndCopyDataToITensorHandle(&weightsTensor, &weights[0][0]);
1768 AllocateAndCopyDataToITensorHandle(&biasTensor, &bias[0]);
1769
1770 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1771 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1772 data.m_Weight = &weightsTensor;
1773 data.m_Bias = &biasTensor;
1774 data.m_Parameters.m_BiasEnabled = biasEnabled;
1775 data.m_Parameters.m_TransposeWeightMatrix = transposeWeights;
1776
1777 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFullyConnected(data, info);
1778 LayerTestResult<T, 2> result(outputTensorInfo);
1779
1780 inputHandle->Allocate();
1781 outputHandle->Allocate();
1782 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
1783
1784 ExecuteWorkload(*workload, memoryManager);
1785
1786 CopyDataFromITensorHandle(&result.output[0][0], outputHandle.get());
1787
1788 return result;
1789}
1790
1791template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1792std::vector<T> ConvertToDataType(const std::vector<float>& input,
1793 const armnn::TensorInfo& inputTensorInfo)
1794{
1795 std::vector<T> output(input.size());
1796 auto outputTensorInfo = inputTensorInfo;
1797 outputTensorInfo.SetDataType(ArmnnType);
1798
1799 std::unique_ptr<armnn::Encoder<float>> pOutputEncoder = armnn::MakeEncoder<float>(outputTensorInfo, output.data());
1800 armnn::Encoder<float>& rOutputEncoder = *pOutputEncoder;
1801
1802 for (auto it = input.begin(); it != input.end(); ++it)
1803 {
1804 rOutputEncoder.Set(*it);
1805 ++rOutputEncoder;
1806 }
1807 return output;
1808}
1809
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01001810template<typename T>
1811LayerTestResult<T, 4> SimpleReshapeTestImpl(
1812 armnn::IWorkloadFactory& workloadFactory,
1813 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1814 armnn::TensorInfo inputTensorInfo,
1815 armnn::TensorInfo outputTensorInfo,
1816 const std::vector<T>& inputData,
1817 const std::vector<T>& outputExpectedData)
1818{
1819 auto input = MakeTensor<T, 4>(inputTensorInfo, inputData);
1820
1821 LayerTestResult<T, 4> ret(outputTensorInfo);
1822 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, outputExpectedData);
1823
1824 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1825 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1826
1827 armnn::ReshapeQueueDescriptor data;
1828 armnn::WorkloadInfo info;
1829 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1830 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1831
1832 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateReshape(data, info);
1833
1834 inputHandle->Allocate();
1835 outputHandle->Allocate();
1836
1837 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
1838
1839 workload->Execute();
1840
1841 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
1842
1843 return ret;
1844}
1845
Francis Murtagh46c09d02019-05-28 08:15:28 +01001846template<armnn::DataType ArmnnType, typename T>
1847LayerTestResult<T, 2> FullyConnectedTest(
1848 armnn::IWorkloadFactory& workloadFactory,
1849 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1850 bool biasEnabled)
1851{
1852 constexpr static unsigned int inputWidth = 3u;
1853 constexpr static unsigned int inputHeight = 2u;
1854 constexpr static unsigned int inputChannels = 1u;
1855
1856 constexpr static unsigned int inputSize = inputWidth * inputHeight * inputChannels;
1857
1858 constexpr static unsigned int outputChannels = 2u;
1859
1860 armnn::TensorInfo inputTensorInfo({ 1, inputChannels, inputHeight, inputWidth }, ArmnnType);
1861 inputTensorInfo.SetQuantizationScale(0.1f);
1862 inputTensorInfo.SetQuantizationOffset(63);
1863
1864 armnn::TensorInfo outputTensorInfo({ 1, outputChannels }, ArmnnType);
1865 outputTensorInfo.SetQuantizationScale(5.f);
1866 outputTensorInfo.SetQuantizationOffset(biasEnabled ? -50 : 10);
1867
1868 armnn::TensorInfo weightsDesc({ outputChannels, inputSize }, ArmnnType);
1869 weightsDesc.SetQuantizationScale(0.2f);
1870 weightsDesc.SetQuantizationOffset(93);
1871
1872 armnn::TensorInfo biasesDesc({ outputChannels }, GetBiasTypeFromWeightsType(weightsDesc.GetDataType()).value());
1873 biasesDesc.SetQuantizationScale(inputTensorInfo.GetQuantizationScale() * weightsDesc.GetQuantizationScale());
1874 biasesDesc.SetQuantizationOffset(0);
1875
1876 LayerTestResult<T, 2> result(outputTensorInfo);
1877
1878 auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
1879 {
1880 -1.2f, 6.1f, -3.5f,
1881 18.8f, -5.5f, 2.9f
1882 },
1883 inputTensorInfo));
1884
1885 auto weights = MakeTensor<T, 2>(weightsDesc, ConvertToDataType<ArmnnType>(
1886 {
1887 -8.4f, 20.0f, -10.4f, -8, 16.4f, -11.8f,
1888 23.4f, 10.4f, -14.0f, -3.8f, -11.8f, 11.4f
1889 },
1890 weightsDesc));
1891
1892 auto bias = MakeTensor<int32_t, 1>(biasesDesc, std::vector<int32_t>{9250, 67500});
1893
1894 result = SimpleFullyConnectedTestImpl<T>(
1895 workloadFactory,
1896 memoryManager,
1897 inputTensorInfo, outputTensorInfo,
1898 weightsDesc, biasesDesc,
1899 weights, bias, input,
1900 biasEnabled, true
1901 );
1902
1903 if (biasEnabled)
1904 {
1905 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
1906 ConvertToDataType<ArmnnType>({80.f, 1460.f}, outputTensorInfo));
1907 }
1908 else
1909 {
1910 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
1911 ConvertToDataType<ArmnnType>({-107.04f, 110.f}, outputTensorInfo));
1912 }
1913
1914 return result;
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01001915}
1916
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01001917template<armnn::DataType ArmnnType, typename T>
1918LayerTestResult<T, 4> SimpleReshapeTest(
1919 armnn::IWorkloadFactory& workloadFactory,
1920 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
1921{
1922 armnn::TensorInfo inputTensorInfo;
1923 armnn::TensorInfo outputTensorInfo;
1924
1925 unsigned int inputShape[] = { 2, 2, 3, 3 };
1926 unsigned int outputShape[] = { 2, 2, 9, 1 };
1927
1928 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
1929 inputTensorInfo.SetQuantizationScale(1.0f);
1930 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
1931 outputTensorInfo.SetQuantizationScale(1.0f);
1932
1933 auto input = ConvertToDataType<ArmnnType>(
1934 {
1935 0.0f, 1.0f, 2.0f,
1936 3.0f, 4.0f, 5.0f,
1937 6.0f, 7.0f, 8.0f,
1938
1939 9.0f, 10.0f, 11.0f,
1940 12.0f, 13.0f, 14.0f,
1941 15.0f, 16.0f, 17.0f,
1942
1943 18.0f, 19.0f, 20.0f,
1944 21.0f, 22.0f, 23.0f,
1945 24.0f, 25.0f, 26.0f,
1946
1947 27.0f, 28.0f, 29.0f,
1948 30.0f, 31.0f, 32.0f,
1949 33.0f, 34.0f, 35.0f,
1950 },
1951 inputTensorInfo);
1952
1953 auto outputExpected = ConvertToDataType<ArmnnType>(
1954 {
1955 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f,
1956
1957 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f,
1958
1959 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f,
1960
1961 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f,
1962 },
1963 outputTensorInfo);
1964
1965 return SimpleReshapeTestImpl<T>(
1966 workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected);
Matteo Martincigh42666a12019-05-29 08:53:41 +01001967}
James Conroy83735b12019-05-30 16:36:59 +01001968
1969template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1970LayerTestResult<T, 4> SimpleFloorTest(
1971 armnn::IWorkloadFactory& workloadFactory,
1972 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
1973{
James Conroyb40d7102019-06-04 12:32:09 +01001974 armnn::TensorInfo inputTensorInfo({1, 3, 2, 3}, ArmnnType);
1975 inputTensorInfo.SetQuantizationScale(0.1f);
1976
1977 armnn::TensorInfo outputTensorInfo(inputTensorInfo);
1978 outputTensorInfo.SetQuantizationScale(0.1f);
James Conroy83735b12019-05-30 16:36:59 +01001979
1980 auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
1981 { -37.5f, -15.2f, -8.76f, -2.0f, -1.5f, -1.3f, -0.5f, -0.4f, 0.0f,
1982 1.0f, 0.4f, 0.5f, 1.3f, 1.5f, 2.0f, 8.76f, 15.2f, 37.5f },
1983 inputTensorInfo));
1984
1985 LayerTestResult<T, 4> ret(outputTensorInfo);
1986 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, ConvertToDataType<ArmnnType>(
1987 { -38.0f, -16.0f, -9.0f, -2.0f, -2.0f, -2.0f, -1.0f, -1.0f, 0.0f,
1988 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 2.0f, 8.0f, 15.0f, 37.0f },
1989 outputTensorInfo));
1990
1991 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1992 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1993
1994 armnn::FloorQueueDescriptor data;
1995 armnn::WorkloadInfo info;
1996 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1997 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1998
1999 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFloor(data, info);
2000
2001 inputHandle->Allocate();
2002 outputHandle->Allocate();
2003
2004 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2005
2006 workload->Execute();
2007
2008 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
2009
2010 return ret;
Matteo Martincighf5507132019-06-04 10:59:47 +01002011}