blob: c62e412caadaa1255fd2f3c0a3a43824be7f83bd [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
nikraj0193f84a92019-06-05 10:48:46 +0100735template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
736LayerTestResult<T, 2> Rsqrt2dTestCommon(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000737 armnn::IWorkloadFactory& workloadFactory,
738 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
739 const armnn::TensorInfo inputTensorInfo,
740 const armnn::TensorInfo outputTensorInfo,
nikraj0193f84a92019-06-05 10:48:46 +0100741 std::vector<T> inputValues,
742 std::vector<T> expectedOutputValues);
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000743
nikraj0193f84a92019-06-05 10:48:46 +0100744template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
745LayerTestResult<T, 2> Rsqrt2dTest(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000746 armnn::IWorkloadFactory& workloadFactory,
747 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
748
nikraj0193f84a92019-06-05 10:48:46 +0100749template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
750LayerTestResult<T, 3> Rsqrt3dTest(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000751 armnn::IWorkloadFactory& workloadFactory,
752 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
753
nikraj0193f84a92019-06-05 10:48:46 +0100754template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
755LayerTestResult<T, 2> RsqrtZeroTest(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000756 armnn::IWorkloadFactory& workloadFactory,
757 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
758
nikraj0193f84a92019-06-05 10:48:46 +0100759template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
760LayerTestResult<T, 2> RsqrtNegativeTest(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000761 armnn::IWorkloadFactory& workloadFactory,
762 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
763
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000764LayerTestResult<float, 4> BatchNormTest(
765 armnn::IWorkloadFactory& workloadFactory,
766 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
767
768LayerTestResult<float, 4> BatchNormNhwcTest(
769 armnn::IWorkloadFactory& workloadFactory,
770 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
771
772LayerTestResult<float, 2> FakeQuantizationTest(
773 armnn::IWorkloadFactory& workloadFactory,
774 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
775
776LayerTestResult<float, 4> L2Normalization1dTest(
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> L2Normalization2dTest(
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> L2Normalization3dTest(
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> L2Normalization4dTest(
792 armnn::IWorkloadFactory& workloadFactory,
793 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000794 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000795
796LayerTestResult<float, 4> ConstantTest(
797 armnn::IWorkloadFactory& workloadFactory,
798 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
799
Nina Drozd58ef2c62019-05-16 12:09:18 +0100800LayerTestResult<uint8_t, 4> ConstantUint8SimpleQuantizationScaleNoOffsetTest(
801 armnn::IWorkloadFactory& workloadFactory,
802 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
803
804LayerTestResult<int16_t, 4> ConstantInt16SimpleQuantizationScaleNoOffsetTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000805 armnn::IWorkloadFactory& workloadFactory,
806 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
807
808LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
809 armnn::IWorkloadFactory& workloadFactory,
810 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
811 float upperBound);
812
813LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
814 armnn::IWorkloadFactory& workloadFactory,
815 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
816 float upperBound,
817 float lowerBound);
818
Francis Murtagh46c09d02019-05-28 08:15:28 +0100819template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
820LayerTestResult<T, 2> FullyConnectedTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000821 armnn::IWorkloadFactory& workloadFactory,
822 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
823 bool biasEnabled);
824
825std::vector<LayerTestResult<uint8_t, 3>> SplitterUint8Test(
826 armnn::IWorkloadFactory& workloadFactory,
827 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
828
Ruomei Yan25339c32019-05-28 16:48:20 +0100829std::vector<LayerTestResult<int16_t, 3>> SplitterInt16Test(
830 armnn::IWorkloadFactory& workloadFactory,
831 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
832
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000833LayerTestResult<uint8_t, 3> CopyViaSplitterUint8Test(
834 armnn::IWorkloadFactory& workloadFactory,
835 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
836
Ruomei Yan25339c32019-05-28 16:48:20 +0100837LayerTestResult<int16_t, 3> CopyViaSplitterInt16Test(
838 armnn::IWorkloadFactory& workloadFactory,
839 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
840
Jim Flynn4ed6c832019-05-20 11:02:46 +0100841LayerTestResult<uint8_t, 3> ConcatUint8Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000842 armnn::IWorkloadFactory& workloadFactory,
843 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
844
Jim Flynn4ed6c832019-05-20 11:02:46 +0100845LayerTestResult<uint16_t, 3> ConcatUint16Test(
Jim Flynncbb66aa2019-05-15 13:03:54 +0100846 armnn::IWorkloadFactory& workloadFactory,
847 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
848
Jim Flynn4ed6c832019-05-20 11:02:46 +0100849LayerTestResult<uint8_t, 3> ConcatUint8DifferentQParamsTest(
Jim Flynncbb66aa2019-05-15 13:03:54 +0100850 armnn::IWorkloadFactory& workloadFactory,
851 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Ferran Balaguerb2845652019-02-27 09:42:06 +0000852
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000853LayerTestResult<uint8_t, 4> AdditionUint8Test(
854 armnn::IWorkloadFactory& workloadFactory,
855 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
856
857LayerTestResult<uint8_t, 4> AdditionBroadcast1ElementUint8Test(
858 armnn::IWorkloadFactory& workloadFactory,
859 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
860
861LayerTestResult<uint8_t, 4> AdditionBroadcastUint8Test(
862 armnn::IWorkloadFactory& workloadFactory,
863 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
864
Sadik Armagan2999a022019-04-09 14:20:12 +0100865LayerTestResult<int16_t, 4> AdditionInt16Test(
866 armnn::IWorkloadFactory& workloadFactory,
867 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
868
869LayerTestResult<int16_t, 4> AdditionBroadcastInt16Test(
870 armnn::IWorkloadFactory& workloadFactory,
871 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
872
873LayerTestResult<int16_t, 4> AdditionBroadcast1ElementInt16Test(
874 armnn::IWorkloadFactory& workloadFactory,
875 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
876
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000877LayerTestResult<uint8_t, 4> SubtractionUint8Test(
878 armnn::IWorkloadFactory& workloadFactory,
879 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
880
881LayerTestResult<uint8_t, 4> SubtractionBroadcast1ElementUint8Test(
882 armnn::IWorkloadFactory& workloadFactory,
883 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
884
885LayerTestResult<uint8_t, 4> SubtractionBroadcastUint8Test(
886 armnn::IWorkloadFactory& workloadFactory,
887 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
888
Sadik Armagan2999a022019-04-09 14:20:12 +0100889LayerTestResult<int16_t, 4> SubtractionInt16Test(
890 armnn::IWorkloadFactory& workloadFactory,
891 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
892
893LayerTestResult<int16_t, 4> SubtractionBroadcast1ElementInt16Test(
894 armnn::IWorkloadFactory& workloadFactory,
895 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
896
897LayerTestResult<int16_t, 4> SubtractionBroadcastInt16Test(
898 armnn::IWorkloadFactory& workloadFactory,
899 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
900
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000901LayerTestResult<uint8_t, 4> CompareActivationUint8Test(
902 armnn::IWorkloadFactory& workloadFactory,
903 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
904 armnn::IWorkloadFactory& refWorkloadFactory,
905 armnn::ActivationFunction f);
906
Teresa Charlin18515e22019-04-24 10:17:46 +0100907LayerTestResult<int16_t, 4> CompareActivationInt16Test(
908 armnn::IWorkloadFactory& workloadFactory,
909 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
910 armnn::IWorkloadFactory& refWorkloadFactory,
911 armnn::ActivationFunction f);
912
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000913LayerTestResult<uint8_t, 2> CompareSoftmaxUint8Test(
914 armnn::IWorkloadFactory& workloadFactory,
915 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
916 armnn::IWorkloadFactory& refWorkloadFactory,
917 float beta);
918
919LayerTestResult<uint8_t, 4> MultiplicationUint8Test(
920 armnn::IWorkloadFactory& workloadFactory,
921 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
922
923LayerTestResult<uint8_t, 4> MultiplicationBroadcast1ElementUint8Test(
924 armnn::IWorkloadFactory& workloadFactory,
925 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
926
927LayerTestResult<uint8_t, 4> MultiplicationBroadcast1DVectorUint8Test(
928 armnn::IWorkloadFactory& workloadFactory,
929 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
930
Sadik Armagan2999a022019-04-09 14:20:12 +0100931LayerTestResult<int16_t, 4> MultiplicationInt16Test(
932 armnn::IWorkloadFactory& workloadFactory,
933 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
934
935LayerTestResult<int16_t, 4> MultiplicationBroadcast1ElementInt16Test(
936 armnn::IWorkloadFactory& workloadFactory,
937 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
938
939LayerTestResult<int16_t, 4> MultiplicationBroadcast1DVectorInt16Test(
940 armnn::IWorkloadFactory& workloadFactory,
941 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
942
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000943LayerTestResult<uint8_t, 4> DivisionUint8Test(
944 armnn::IWorkloadFactory& workloadFactory,
945 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
946
947LayerTestResult<uint8_t, 4> DivisionBroadcast1ElementUint8Test(
948 armnn::IWorkloadFactory& workloadFactory,
949 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
950
951LayerTestResult<uint8_t, 4> DivisionBroadcast1DVectorUint8Test(
952 armnn::IWorkloadFactory& workloadFactory,
953 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
954
Sadik Armagan2999a022019-04-09 14:20:12 +0100955LayerTestResult<int16_t, 4> DivisionInt16Test(
956 armnn::IWorkloadFactory& workloadFactory,
957 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
958
959LayerTestResult<int16_t, 4> DivisionBroadcast1ElementInt16Test(
960 armnn::IWorkloadFactory& workloadFactory,
961 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
962
963LayerTestResult<int16_t, 4> DivisionBroadcast1DVectorInt16Test(
964 armnn::IWorkloadFactory& workloadFactory,
965 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
966
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000967LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test(
968 armnn::IWorkloadFactory& workloadFactory,
969 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
970 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000971 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000972
973LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test(
974 armnn::IWorkloadFactory& workloadFactory,
975 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
976 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000977 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000978
Mike Kelly2f80f6e2019-05-16 12:41:34 +0100979LayerTestResult<int16_t, 4> SimpleConvolution2d3x5QSymm16Test(
980 armnn::IWorkloadFactory& workloadFactory,
981 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
982 bool biasEnabled,
983 const armnn::DataLayout layout);
984
985LayerTestResult<int16_t, 4> SimpleConvolution2d3x3QSymm16Test(
986 armnn::IWorkloadFactory& workloadFactory,
987 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
988 bool biasEnabled,
989 const armnn::DataLayout layout);
990
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000991LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test(
992 armnn::IWorkloadFactory& workloadFactory,
993 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
994 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000995 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000996
997LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test(
998 armnn::IWorkloadFactory& workloadFactory,
999 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1000 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +00001001 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001002
Ruomei Yan88d44b82019-05-23 14:29:06 +01001003LayerTestResult<int16_t, 4> DepthwiseConvolution2dInt16Test(
1004 armnn::IWorkloadFactory& workloadFactory,
1005 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1006 bool biasEnabled,
1007 const armnn::DataLayout layout);
1008
1009LayerTestResult<int16_t, 4> DepthwiseConvolution2dDepthMul1Int16Test(
1010 armnn::IWorkloadFactory& workloadFactory,
1011 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1012 bool biasEnabled,
1013 const armnn::DataLayout layout);
1014
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001015LayerTestResult<uint8_t, 4> ConstantLinearActivationUint8Test(
1016 armnn::IWorkloadFactory& workloadFactory,
1017 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1018
Teresa Charlin18515e22019-04-24 10:17:46 +01001019LayerTestResult<int16_t, 4> ConstantLinearActivationInt16Test(
1020 armnn::IWorkloadFactory& workloadFactory,
1021 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1022
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001023LayerTestResult<uint8_t, 4> ResizeBilinearNopUint8Test(
1024 armnn::IWorkloadFactory& workloadFactory,
1025 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1026
1027LayerTestResult<uint8_t, 4> SimpleResizeBilinearUint8Test(
1028 armnn::IWorkloadFactory& workloadFactory,
1029 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1030
1031LayerTestResult<uint8_t, 4> ResizeBilinearSqMinUint8Test(
1032 armnn::IWorkloadFactory& workloadFactory,
1033 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1034
1035LayerTestResult<uint8_t, 4> ResizeBilinearMinUint8Test(
1036 armnn::IWorkloadFactory& workloadFactory,
1037 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1038
1039LayerTestResult<uint8_t, 4> ResizeBilinearMagUint8Test(
1040 armnn::IWorkloadFactory& workloadFactory,
1041 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1042
1043LayerTestResult<uint8_t, 4> BatchNormUint8Test(
1044 armnn::IWorkloadFactory& workloadFactory,
1045 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1046
1047LayerTestResult<uint8_t, 4> BatchNormUint8NhwcTest(
1048 armnn::IWorkloadFactory& workloadFactory,
1049 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1050
Matteo Martincighf5507132019-06-04 10:59:47 +01001051LayerTestResult<int16_t, 4> BatchNormInt16Test(
1052 armnn::IWorkloadFactory& workloadFactory,
1053 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1054
1055LayerTestResult<int16_t, 4> BatchNormInt16NhwcTest(
1056 armnn::IWorkloadFactory& workloadFactory,
1057 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1058
Nina Drozd58ef2c62019-05-16 12:09:18 +01001059LayerTestResult<uint8_t, 4> ConstantUint8CustomQuantizationScaleAndOffsetTest(
1060 armnn::IWorkloadFactory& workloadFactory,
1061 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1062
1063LayerTestResult<int16_t, 4> ConstantInt16CustomQuantizationScaleAndOffsetTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001064 armnn::IWorkloadFactory& workloadFactory,
1065 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1066
1067LayerTestResult<uint8_t, 1> Concatenation1dUint8Test(
1068 armnn::IWorkloadFactory& workloadFactory,
1069 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1070
1071LayerTestResult<uint8_t, 2> Concatenation2dDim0Uint8Test(
1072 armnn::IWorkloadFactory& workloadFactory,
1073 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1074
1075LayerTestResult<uint8_t, 2> Concatenation2dDim1Uint8Test(
1076 armnn::IWorkloadFactory& workloadFactory,
1077 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1078
1079LayerTestResult<uint8_t, 2> Concatenation2dDim0DiffInputDimsUint8Test(
1080 armnn::IWorkloadFactory& workloadFactory,
1081 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1082
1083LayerTestResult<uint8_t, 2> Concatenation2dDim1DiffInputDimsUint8Test(
1084 armnn::IWorkloadFactory& workloadFactory,
1085 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1086
1087LayerTestResult<uint8_t, 3> Concatenation3dDim0Uint8Test(
1088 armnn::IWorkloadFactory& workloadFactory,
1089 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1090
1091LayerTestResult<uint8_t, 3> Concatenation3dDim1Uint8Test(
1092 armnn::IWorkloadFactory& workloadFactory,
1093 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1094
1095LayerTestResult<uint8_t, 3> Concatenation3dDim2Uint8Test(
1096 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +00001097 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1098 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001099
1100LayerTestResult<uint8_t, 3> Concatenation3dDim0DiffInputDimsUint8Test(
1101 armnn::IWorkloadFactory& workloadFactory,
1102 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1103
1104LayerTestResult<uint8_t, 3> Concatenation3dDim1DiffInputDimsUint8Test(
1105 armnn::IWorkloadFactory& workloadFactory,
1106 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1107
1108LayerTestResult<uint8_t, 3> Concatenation3dDim2DiffInputDimsUint8Test(
1109 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +00001110 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1111 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001112
kevmay012b4d88e2019-01-24 14:05:09 +00001113LayerTestResult<uint8_t, 4> EqualSimpleTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001114 armnn::IWorkloadFactory& workloadFactory,
1115 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1116
kevmay012b4d88e2019-01-24 14:05:09 +00001117LayerTestResult<uint8_t, 4> EqualBroadcast1ElementTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001118 armnn::IWorkloadFactory& workloadFactory,
1119 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1120
kevmay012b4d88e2019-01-24 14:05:09 +00001121LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001122 armnn::IWorkloadFactory& workloadFactory,
1123 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1124
1125LayerTestResult<uint8_t, 4> EqualUint8Test(
1126 armnn::IWorkloadFactory& workloadFactory,
1127 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1128
1129LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
1130 armnn::IWorkloadFactory& workloadFactory,
1131 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1132
1133LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorUint8Test(
1134 armnn::IWorkloadFactory& workloadFactory,
1135 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1136
kevmay012b4d88e2019-01-24 14:05:09 +00001137LayerTestResult<uint8_t, 4> GreaterSimpleTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001138 armnn::IWorkloadFactory& workloadFactory,
1139 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1140
kevmay012b4d88e2019-01-24 14:05:09 +00001141LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001142 armnn::IWorkloadFactory& workloadFactory,
1143 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1144
kevmay012b4d88e2019-01-24 14:05:09 +00001145LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001146 armnn::IWorkloadFactory& workloadFactory,
1147 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1148
1149LayerTestResult<uint8_t, 4> GreaterUint8Test(
1150 armnn::IWorkloadFactory& workloadFactory,
1151 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1152
1153LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
1154 armnn::IWorkloadFactory& workloadFactory,
1155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1156
1157LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorUint8Test(
1158 armnn::IWorkloadFactory& workloadFactory,
1159 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1160
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001161LayerTestResult<float, 2> FullyConnectedLargeTest(
1162 armnn::IWorkloadFactory& workloadFactory,
1163 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1164 bool transposeWeights);
1165
1166LayerTestResult<float, 4> SimplePermuteFloat32Test(
1167 armnn::IWorkloadFactory& workloadFactory,
1168 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1169
1170LayerTestResult<uint8_t, 4> SimplePermuteUint8Test(
1171 armnn::IWorkloadFactory& workloadFactory,
1172 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1173
1174LayerTestResult<uint8_t, 2> PadUint82dTest(
1175 armnn::IWorkloadFactory& workloadFactory,
1176 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1177
1178LayerTestResult<uint8_t, 3> PadUint83dTest(
1179 armnn::IWorkloadFactory& workloadFactory,
1180 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1181
1182LayerTestResult<uint8_t, 4> PadUint84dTest(
1183 armnn::IWorkloadFactory& workloadFactory,
1184 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1185
1186LayerTestResult<float, 2> PadFloat322dTest(
1187 armnn::IWorkloadFactory& workloadFactory,
1188 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1189
1190LayerTestResult<float, 3> PadFloat323dTest(
1191 armnn::IWorkloadFactory& workloadFactory,
1192 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1193
1194LayerTestResult<float, 4> PadFloat324dTest(
1195 armnn::IWorkloadFactory& workloadFactory,
1196 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1197
1198LayerTestResult<float, 4> PermuteFloat32ValueSet1Test(
1199 armnn::IWorkloadFactory& workloadFactory,
1200 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1201
1202LayerTestResult<float, 4> PermuteFloat32ValueSet2Test(
1203 armnn::IWorkloadFactory& workloadFactory,
1204 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1205
1206LayerTestResult<float, 4> PermuteFloat32ValueSet3Test(
1207 armnn::IWorkloadFactory& workloadFactory,
1208 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1209
1210LayerTestResult<float, 2> LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest(
1211 armnn::IWorkloadFactory& workloadFactory,
1212 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1213
1214LayerTestResult<float, 2> LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest(
1215 armnn::IWorkloadFactory& workloadFactory,
1216 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1217
1218LayerTestResult<float, 2> LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest(
1219 armnn::IWorkloadFactory& workloadFactory,
1220 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1221
Conor Kennedyb9971c92019-05-07 07:14:23 +01001222LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionTest(
1223 armnn::IWorkloadFactory& workloadFactory,
1224 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1225
1226LayerTestResult<int16_t, 2> LstmLayerInt16WithCifgWithPeepholeNoProjectionTest(
1227 armnn::IWorkloadFactory& workloadFactory,
1228 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1229
1230LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgWithPeepholeWithProjectionTest(
1231 armnn::IWorkloadFactory& workloadFactory,
1232 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1233
1234LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest(
1235 armnn::IWorkloadFactory& workloadFactory,
1236 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1237
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001238LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(
1239 armnn::IWorkloadFactory& workloadFactory,
1240 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1241
1242LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(
1243 armnn::IWorkloadFactory& workloadFactory,
1244 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1245
Éanna Ó Catháinde705582018-12-03 13:04:22 +00001246LayerTestResult<float, 4> MaximumSimpleTest(
1247 armnn::IWorkloadFactory& workloadFactory,
1248 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1249
1250LayerTestResult<float, 4> MaximumBroadcast1ElementTest(
1251 armnn::IWorkloadFactory& workloadFactory,
1252 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1253
1254LayerTestResult<float, 4> MaximumBroadcast1DVectorTest(
1255 armnn::IWorkloadFactory& workloadFactory,
1256 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1257
1258LayerTestResult<uint8_t , 4> MaximumUint8Test(
1259 armnn::IWorkloadFactory& workloadFactory,
1260 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1261
1262LayerTestResult<uint8_t, 4> MaximumBroadcast1ElementUint8Test(
1263 armnn::IWorkloadFactory& workloadFactory,
1264 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1265
1266LayerTestResult<uint8_t, 4> MaximumBroadcast1DVectorUint8Test(
1267 armnn::IWorkloadFactory& workloadFactory,
1268 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1269
Sadik Armagan2999a022019-04-09 14:20:12 +01001270LayerTestResult<int16_t , 4> MaximumInt16Test(
1271 armnn::IWorkloadFactory& workloadFactory,
1272 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1273
1274LayerTestResult<int16_t, 4> MaximumBroadcast1ElementInt16Test(
1275 armnn::IWorkloadFactory& workloadFactory,
1276 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1277
1278LayerTestResult<int16_t, 4> MaximumBroadcast1DVectorInt16Test(
1279 armnn::IWorkloadFactory& workloadFactory,
1280 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1281
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001282LayerTestResult<uint8_t, 1> MeanUint8SimpleTest(
1283 armnn::IWorkloadFactory& workloadFactory,
1284 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1285
1286LayerTestResult<uint8_t, 3> MeanUint8SimpleAxisTest(
1287 armnn::IWorkloadFactory& workloadFactory,
1288 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1289
1290LayerTestResult<uint8_t, 4> MeanUint8KeepDimsTest(
1291 armnn::IWorkloadFactory& workloadFactory,
1292 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1293
1294LayerTestResult<uint8_t, 4> MeanUint8MultipleDimsTest(
1295 armnn::IWorkloadFactory& workloadFactory,
1296 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1297
1298LayerTestResult<uint8_t, 1> MeanVtsUint8Test(
1299 armnn::IWorkloadFactory& workloadFactory,
1300 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1301
1302LayerTestResult<float, 1> MeanFloatSimpleTest(
1303 armnn::IWorkloadFactory& workloadFactory,
1304 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1305
1306LayerTestResult<float, 3> MeanFloatSimpleAxisTest(
1307 armnn::IWorkloadFactory& workloadFactory,
1308 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1309
1310LayerTestResult<float, 4> MeanFloatKeepDimsTest(
1311 armnn::IWorkloadFactory& workloadFactory,
1312 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1313
1314LayerTestResult<float, 4> MeanFloatMultipleDimsTest(
1315 armnn::IWorkloadFactory& workloadFactory,
1316 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1317
1318LayerTestResult<float, 1> MeanVtsFloat1Test(
1319 armnn::IWorkloadFactory& workloadFactory,
1320 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1321
1322LayerTestResult<float, 3> MeanVtsFloat2Test(
1323 armnn::IWorkloadFactory& workloadFactory,
1324 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1325
1326LayerTestResult<float, 3> MeanVtsFloat3Test(
1327 armnn::IWorkloadFactory& workloadFactory,
1328 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1329
Éanna Ó Catháin20e58802018-12-04 10:29:06 +00001330LayerTestResult<float, 4> MinimumBroadcast1ElementTest1(
1331 armnn::IWorkloadFactory& workloadFactory,
1332 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1333
1334LayerTestResult<float, 4> MinimumBroadcast1ElementTest2(
1335 armnn::IWorkloadFactory& workloadFactory,
1336 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1337
1338LayerTestResult<uint8_t, 4> MinimumBroadcast1DVectorUint8Test(
1339 armnn::IWorkloadFactory & workloadFactory,
1340 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1341
Sadik Armagan2999a022019-04-09 14:20:12 +01001342LayerTestResult<int16_t , 4> MinimumInt16Test(
1343 armnn::IWorkloadFactory& workloadFactory,
1344 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1345
1346LayerTestResult<int16_t, 4> MinimumBroadcast1ElementInt16Test(
1347 armnn::IWorkloadFactory& workloadFactory,
1348 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1349
1350LayerTestResult<int16_t, 4> MinimumBroadcast1DVectorInt16Test(
1351 armnn::IWorkloadFactory& workloadFactory,
1352 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1353
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001354LayerTestResult<float, 4> AdditionAfterMaxPoolTest(
1355 armnn::IWorkloadFactory& workloadFactory,
1356 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1357
1358LayerTestResult<float, 4> SpaceToBatchNdSimpleFloat32Test(
1359 armnn::IWorkloadFactory& workloadFactory,
1360 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1361
1362LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsFloat32Test(
1363 armnn::IWorkloadFactory& workloadFactory,
1364 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1365
1366LayerTestResult<float, 4> SpaceToBatchNdMultiBlockFloat32Test(
1367 armnn::IWorkloadFactory& workloadFactory,
1368 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1369
1370LayerTestResult<float, 4> SpaceToBatchNdPaddingFloat32Test(
1371 armnn::IWorkloadFactory& workloadFactory,
1372 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1373
1374LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleUint8Test(
1375 armnn::IWorkloadFactory& workloadFactory,
1376 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1377
1378LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsUint8Test(
1379 armnn::IWorkloadFactory& workloadFactory,
1380 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1381
1382LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockUint8Test(
1383 armnn::IWorkloadFactory& workloadFactory,
1384 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1385
1386LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingUint8Test(
1387 armnn::IWorkloadFactory& workloadFactory,
1388 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1389
1390LayerTestResult<float, 4> SpaceToBatchNdSimpleNHWCFloat32Test(
1391 armnn::IWorkloadFactory& workloadFactory,
1392 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1393
1394LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsNHWCFloat32Test(
1395 armnn::IWorkloadFactory& workloadFactory,
1396 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1397
1398LayerTestResult<float, 4> SpaceToBatchNdMultiBlockNHWCFloat32Test(
1399 armnn::IWorkloadFactory& workloadFactory,
1400 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1401
1402LayerTestResult<float, 4> SpaceToBatchNdPaddingNHWCFloat32Test(
1403 armnn::IWorkloadFactory& workloadFactory,
1404 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1405
1406LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleNHWCUint8Test(
1407 armnn::IWorkloadFactory& workloadFactory,
1408 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1409
1410LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsNHWCUint8Test(
1411 armnn::IWorkloadFactory& workloadFactory,
1412 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1413
1414LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockNHWCUint8Test(
1415 armnn::IWorkloadFactory& workloadFactory,
1416 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1417
1418LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingNHWCUint8Test(
1419 armnn::IWorkloadFactory& workloadFactory,
1420 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1421
nikraj01120522a2019-05-31 11:33:07 +01001422LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleUint16Test(
1423 armnn::IWorkloadFactory& workloadFactory,
1424 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1425
1426LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsUint16Test(
1427 armnn::IWorkloadFactory& workloadFactory,
1428 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1429
1430LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockUint16Test(
1431 armnn::IWorkloadFactory& workloadFactory,
1432 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1433
1434LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingUint16Test(
1435 armnn::IWorkloadFactory& workloadFactory,
1436 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1437
1438LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleNHWCUint16Test(
1439 armnn::IWorkloadFactory& workloadFactory,
1440 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1441
1442LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsNHWCUint16Test(
1443 armnn::IWorkloadFactory& workloadFactory,
1444 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1445
1446LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockNHWCUint16Test(
1447 armnn::IWorkloadFactory& workloadFactory,
1448 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1449
1450LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingNHWCUint16Test(
1451 armnn::IWorkloadFactory& workloadFactory,
1452 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1453
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001454LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test1(
1455 armnn::IWorkloadFactory& workloadFactory,
1456 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1457
1458LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test2(
1459 armnn::IWorkloadFactory& workloadFactory,
1460 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1461
1462LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test3(
1463 armnn::IWorkloadFactory& workloadFactory,
1464 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1465
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001466LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test4(
1467 armnn::IWorkloadFactory& workloadFactory,
1468 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1469
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001470LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test1(
1471 armnn::IWorkloadFactory &workloadFactory,
1472 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1473
Mike Kelly831faed2018-11-28 11:52:08 +00001474LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001475 armnn::IWorkloadFactory &workloadFactory,
1476 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001477
1478LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001479 armnn::IWorkloadFactory &workloadFactory,
1480 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001481
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001482LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest1(
1483 armnn::IWorkloadFactory &workloadFactory,
1484 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001485
Mike Kelly831faed2018-11-28 11:52:08 +00001486LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001487 armnn::IWorkloadFactory &workloadFactory,
1488 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001489
1490LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001491 armnn::IWorkloadFactory &workloadFactory,
1492 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001493
1494LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest1(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001495 armnn::IWorkloadFactory &workloadFactory,
1496 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001497
1498LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001499 armnn::IWorkloadFactory &workloadFactory,
1500 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001501
1502LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001503 armnn::IWorkloadFactory &workloadFactory,
1504 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1505
1506LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest4(
1507 armnn::IWorkloadFactory &workloadFactory,
1508 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001509
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001510LayerTestResult<float, 4> StridedSlice4DFloat32Test(
1511 armnn::IWorkloadFactory& workloadFactory,
1512 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001513
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001514LayerTestResult<float, 4> StridedSlice4DReverseFloat32Test(
1515 armnn::IWorkloadFactory& workloadFactory,
1516 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1517
1518LayerTestResult<float, 4> StridedSliceSimpleStrideFloat32Test(
1519 armnn::IWorkloadFactory& workloadFactory,
1520 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1521
1522LayerTestResult<float, 4> StridedSliceSimpleRangeMaskFloat32Test(
1523 armnn::IWorkloadFactory& workloadFactory,
1524 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1525
1526LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test(
1527 armnn::IWorkloadFactory& workloadFactory,
1528 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1529
1530LayerTestResult<float, 3> StridedSlice3DFloat32Test(
1531 armnn::IWorkloadFactory& workloadFactory,
1532 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1533
1534LayerTestResult<float, 3> StridedSlice3DReverseFloat32Test(
1535 armnn::IWorkloadFactory& workloadFactory,
1536 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1537
1538LayerTestResult<float, 2> StridedSlice2DFloat32Test(
1539 armnn::IWorkloadFactory& workloadFactory,
1540 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1541
1542LayerTestResult<float, 2> StridedSlice2DReverseFloat32Test(
1543 armnn::IWorkloadFactory& workloadFactory,
1544 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1545
1546LayerTestResult<uint8_t, 4> StridedSlice4DUint8Test(
1547 armnn::IWorkloadFactory& workloadFactory,
1548 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1549
1550LayerTestResult<uint8_t, 4> StridedSlice4DReverseUint8Test(
1551 armnn::IWorkloadFactory& workloadFactory,
1552 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1553
1554LayerTestResult<uint8_t, 4> StridedSliceSimpleStrideUint8Test(
1555 armnn::IWorkloadFactory& workloadFactory,
1556 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1557
1558LayerTestResult<uint8_t, 4> StridedSliceSimpleRangeMaskUint8Test(
1559 armnn::IWorkloadFactory& workloadFactory,
1560 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1561
1562LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test(
1563 armnn::IWorkloadFactory& workloadFactory,
1564 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1565
1566LayerTestResult<uint8_t, 3> StridedSlice3DUint8Test(
1567 armnn::IWorkloadFactory& workloadFactory,
1568 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1569
1570LayerTestResult<uint8_t, 3> StridedSlice3DReverseUint8Test(
1571 armnn::IWorkloadFactory& workloadFactory,
1572 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1573
1574LayerTestResult<uint8_t, 2> StridedSlice2DUint8Test(
1575 armnn::IWorkloadFactory& workloadFactory,
1576 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1577
1578LayerTestResult<uint8_t, 2> StridedSlice2DReverseUint8Test(
1579 armnn::IWorkloadFactory& workloadFactory,
1580 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001581
Matteo Martincigh42666a12019-05-29 08:53:41 +01001582LayerTestResult<int16_t, 4> StridedSlice4DInt16Test(
1583 armnn::IWorkloadFactory& workloadFactory,
1584 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1585
1586LayerTestResult<int16_t, 4> StridedSlice4DReverseInt16Test(
1587 armnn::IWorkloadFactory& workloadFactory,
1588 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1589
1590LayerTestResult<int16_t, 4> StridedSliceSimpleStrideInt16Test(
1591 armnn::IWorkloadFactory& workloadFactory,
1592 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1593
1594LayerTestResult<int16_t, 4> StridedSliceSimpleRangeMaskInt16Test(
1595 armnn::IWorkloadFactory& workloadFactory,
1596 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1597
1598LayerTestResult<int16_t, 2> StridedSliceShrinkAxisMaskInt16Test(
1599 armnn::IWorkloadFactory& workloadFactory,
1600 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1601
1602LayerTestResult<int16_t, 3> StridedSlice3DInt16Test(
1603 armnn::IWorkloadFactory& workloadFactory,
1604 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1605
1606LayerTestResult<int16_t, 3> StridedSlice3DReverseInt16Test(
1607 armnn::IWorkloadFactory& workloadFactory,
1608 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1609
1610LayerTestResult<int16_t, 2> StridedSlice2DInt16Test(
1611 armnn::IWorkloadFactory& workloadFactory,
1612 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1613
1614LayerTestResult<int16_t, 2> StridedSlice2DReverseInt16Test(
1615 armnn::IWorkloadFactory& workloadFactory,
1616 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1617
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001618LayerTestResult<float, 4> Debug4DFloat32Test(
1619 armnn::IWorkloadFactory& workloadFactory,
1620 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1621
1622LayerTestResult<float, 3> Debug3DFloat32Test(
1623 armnn::IWorkloadFactory& workloadFactory,
1624 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1625
1626LayerTestResult<float, 2> Debug2DFloat32Test(
1627 armnn::IWorkloadFactory& workloadFactory,
1628 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1629
1630LayerTestResult<float, 1> Debug1DFloat32Test(
1631 armnn::IWorkloadFactory& workloadFactory,
1632 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1633
1634LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1635 armnn::IWorkloadFactory& workloadFactory,
1636 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1637
1638LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1639 armnn::IWorkloadFactory& workloadFactory,
1640 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1641
1642LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1643 armnn::IWorkloadFactory& workloadFactory,
1644 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1645
1646LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1647 armnn::IWorkloadFactory& workloadFactory,
1648 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Matteo Martincigh49124022019-01-11 13:25:59 +00001649
1650LayerTestResult<uint8_t, 4> PreCompiledConvolution2dTest(
1651 armnn::IWorkloadFactory& workloadFactory,
1652 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1653
1654LayerTestResult<uint8_t, 4> PreCompiledConvolution2dStride2x2Test(
1655 armnn::IWorkloadFactory& workloadFactory,
1656 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1657
1658LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dTest(
1659 armnn::IWorkloadFactory & workloadFactory,
1660 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1661
1662LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dStride2x2Test(
1663 armnn::IWorkloadFactory & workloadFactory,
1664 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1665
1666LayerTestResult<uint8_t, 4> PreCompiledMaxPooling2dTest(
1667 armnn::IWorkloadFactory& workloadFactory,
1668 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1669
1670LayerTestResult<float, 4> Debug4DFloat32Test(
1671 armnn::IWorkloadFactory& workloadFactory,
1672 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1673
1674LayerTestResult<float, 3> Debug3DFloat32Test(
1675 armnn::IWorkloadFactory& workloadFactory,
1676 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1677
1678LayerTestResult<float, 2> Debug2DFloat32Test(
1679 armnn::IWorkloadFactory& workloadFactory,
1680 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1681
1682LayerTestResult<float, 1> Debug1DFloat32Test(
1683 armnn::IWorkloadFactory& workloadFactory,
1684 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1685
1686LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1687 armnn::IWorkloadFactory& workloadFactory,
1688 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1689
1690LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1691 armnn::IWorkloadFactory& workloadFactory,
1692 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1693
1694LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1695 armnn::IWorkloadFactory& workloadFactory,
1696 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1697
1698LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1699 armnn::IWorkloadFactory& workloadFactory,
1700 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra014951d842019-01-18 16:53:53 +00001701
1702LayerTestResult<float, 1> Gather1DParamsFloatTest(
1703 armnn::IWorkloadFactory& workloadFactory,
1704 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1705
1706LayerTestResult<uint8_t, 1> Gather1DParamsUint8Test(
1707 armnn::IWorkloadFactory& workloadFactory,
1708 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1709
1710LayerTestResult<float, 2> GatherMultiDimParamsFloatTest(
1711 armnn::IWorkloadFactory& workloadFactory,
1712 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1713
1714LayerTestResult<uint8_t, 2> GatherMultiDimParamsUint8Test(
1715 armnn::IWorkloadFactory& workloadFactory,
1716 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1717
1718LayerTestResult<float, 4> GatherMultiDimParamsMultiDimIndicesFloatTest(
1719 armnn::IWorkloadFactory& workloadFactory,
1720 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1721
1722LayerTestResult<uint8_t, 4> GatherMultiDimParamsMultiDimIndicesUint8Test(
1723 armnn::IWorkloadFactory& workloadFactory,
1724 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong8a54ac02019-03-29 15:25:04 +00001725
Nattapat Chaimanowongafa4e3a2019-04-02 11:41:45 +01001726LayerTestResult<float, 4> DequantizeSimpleUint8Test(
1727 armnn::IWorkloadFactory& workloadFactory,
1728 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1729
1730LayerTestResult<float, 4> DequantizeOffsetUint8Test(
1731 armnn::IWorkloadFactory& workloadFactory,
1732 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1733
1734LayerTestResult<float, 4> DequantizeSimpleInt16Test(
Nattapat Chaimanowong8a54ac02019-03-29 15:25:04 +00001735 armnn::IWorkloadFactory& workloadFactory,
1736 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowonga0beb3b2019-04-01 17:04:53 +01001737
1738LayerTestResult<uint8_t, 4> QuantizeSimpleUint8Test(
1739 armnn::IWorkloadFactory& workloadFactory,
1740 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1741
1742LayerTestResult<uint8_t, 4> QuantizeClampUint8Test(
1743 armnn::IWorkloadFactory& workloadFactory,
1744 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1745
1746LayerTestResult<int16_t, 4> QuantizeClampInt16Test(
1747 armnn::IWorkloadFactory& workloadFactory,
1748 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Francis Murtagh46c09d02019-05-28 08:15:28 +01001749
1750template<typename T, typename B>
1751LayerTestResult<T, 2> SimpleFullyConnectedTestImpl(
1752 armnn::IWorkloadFactory& workloadFactory,
1753 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1754 armnn::TensorInfo inputTensorInfo,
1755 armnn::TensorInfo outputTensorInfo,
1756 armnn::TensorInfo weightsDesc,
1757 armnn::TensorInfo biasesDesc,
1758 boost::multi_array<T, 2>& weights,
1759 boost::multi_array<B, 1>& bias,
1760 boost::multi_array<T, 4>& input,
1761 bool biasEnabled,
1762 bool transposeWeights)
1763{
1764 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1765 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1766
1767 armnn::FullyConnectedQueueDescriptor data;
1768 armnn::WorkloadInfo info;
1769 armnn::ScopedCpuTensorHandle weightsTensor(weightsDesc);
1770 armnn::ScopedCpuTensorHandle biasTensor(biasesDesc);
1771
1772 AllocateAndCopyDataToITensorHandle(&weightsTensor, &weights[0][0]);
1773 AllocateAndCopyDataToITensorHandle(&biasTensor, &bias[0]);
1774
1775 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1776 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1777 data.m_Weight = &weightsTensor;
1778 data.m_Bias = &biasTensor;
1779 data.m_Parameters.m_BiasEnabled = biasEnabled;
1780 data.m_Parameters.m_TransposeWeightMatrix = transposeWeights;
1781
1782 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFullyConnected(data, info);
1783 LayerTestResult<T, 2> result(outputTensorInfo);
1784
1785 inputHandle->Allocate();
1786 outputHandle->Allocate();
1787 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
1788
1789 ExecuteWorkload(*workload, memoryManager);
1790
1791 CopyDataFromITensorHandle(&result.output[0][0], outputHandle.get());
1792
1793 return result;
1794}
1795
1796template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1797std::vector<T> ConvertToDataType(const std::vector<float>& input,
1798 const armnn::TensorInfo& inputTensorInfo)
1799{
1800 std::vector<T> output(input.size());
1801 auto outputTensorInfo = inputTensorInfo;
1802 outputTensorInfo.SetDataType(ArmnnType);
1803
1804 std::unique_ptr<armnn::Encoder<float>> pOutputEncoder = armnn::MakeEncoder<float>(outputTensorInfo, output.data());
1805 armnn::Encoder<float>& rOutputEncoder = *pOutputEncoder;
1806
1807 for (auto it = input.begin(); it != input.end(); ++it)
1808 {
1809 rOutputEncoder.Set(*it);
1810 ++rOutputEncoder;
1811 }
1812 return output;
1813}
1814
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01001815template<typename T>
nikraj0193f84a92019-06-05 10:48:46 +01001816LayerTestResult<T, 2> Rsqrt2dTestCommon(
1817 armnn::IWorkloadFactory& workloadFactory,
1818 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1819 const armnn::TensorInfo inputTensorInfo,
1820 const armnn::TensorInfo outputTensorInfo,
1821 std::vector<T> inputValues,
1822 std::vector<T> expectedOutputValues)
1823{
1824 auto inputTensor = MakeTensor<T, 2>(inputTensorInfo, std::vector<T>(inputValues));
1825
1826 LayerTestResult<T, 2> result(outputTensorInfo);
1827 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo, std::vector<T>(expectedOutputValues));
1828
1829 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1830 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1831
1832 armnn::RsqrtQueueDescriptor descriptor;
1833
1834 armnn::WorkloadInfo info;
1835
1836 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
1837 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
1838
1839 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateRsqrt(descriptor, info);
1840
1841 inputHandle->Allocate();
1842 outputHandle->Allocate();
1843
1844 CopyDataToITensorHandle(inputHandle.get(), &inputTensor[0][0]);
1845
1846 workload->PostAllocationConfigure();
1847 workload->Execute();
1848
1849 CopyDataFromITensorHandle(&result.output[0][0], outputHandle.get());
1850
1851 return result;
1852}
1853
1854template<armnn::DataType ArmnnType, typename T>
1855LayerTestResult<T, 2> Rsqrt2dTest(
1856 armnn::IWorkloadFactory& workloadFactory,
1857 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
1858{
1859 const armnn::TensorShape inputShape{ 2, 2 };
1860 const armnn::TensorShape outputShape{ 2, 2 };
1861
1862 const armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
1863 const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType);
1864
1865 std::vector<T> inputValues
1866 {
1867 1.f, 4.f,
1868 16.f, 25.f
1869 };
1870
1871 std::vector<T> expectedOutputValues
1872 {
1873 1.f, 0.5f,
1874 0.25f, 0.2f
1875 };
1876
1877 return Rsqrt2dTestCommon<T>(workloadFactory, memoryManager,
1878 inputTensorInfo, outputTensorInfo,
1879 inputValues, expectedOutputValues);
1880}
1881
1882template<armnn::DataType ArmnnType, typename T>
1883LayerTestResult<T, 3> Rsqrt3dTest(
1884 armnn::IWorkloadFactory& workloadFactory,
1885 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
1886{
1887 const armnn::TensorShape inputShape{ 3, 1, 2 };
1888 const armnn::TensorShape outputShape{ 3, 1, 2 };
1889
1890 const armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
1891 const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType);
1892
1893 std::vector<T> inputValues
1894 {
1895 1.f, 4.f, 16.f,
1896 25.f, 64.f, 100.f
1897 };
1898
1899 std::vector<T> expectedOutputValues
1900 {
1901 1.f, 0.5f, 0.25f,
1902 0.2f, 0.125f, 0.1f
1903 };
1904
1905 auto inputTensor = MakeTensor<T, 3>(inputTensorInfo, std::vector<T>(inputValues));
1906
1907 LayerTestResult<T, 3> result(outputTensorInfo);
1908 result.outputExpected = MakeTensor<T, 3>(outputTensorInfo, std::vector<T>(expectedOutputValues));
1909
1910 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1911 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1912
1913 armnn::RsqrtQueueDescriptor descriptor;
1914
1915 armnn::WorkloadInfo info;
1916
1917 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
1918 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
1919
1920 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateRsqrt(descriptor, info);
1921
1922 inputHandle->Allocate();
1923 outputHandle->Allocate();
1924
1925 CopyDataToITensorHandle(inputHandle.get(), &inputTensor[0][0][0]);
1926
1927 workload->PostAllocationConfigure();
1928 workload->Execute();
1929
1930 CopyDataFromITensorHandle(&result.output[0][0][0], outputHandle.get());
1931
1932 return result;
1933}
1934
1935template<armnn::DataType ArmnnType, typename T>
1936LayerTestResult<T, 2> RsqrtZeroTest(
1937 armnn::IWorkloadFactory& workloadFactory,
1938 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
1939{
1940 const armnn::TensorShape inputShape{ 1, 2 };
1941 const armnn::TensorShape outputShape{ 1, 2 };
1942
1943 const armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
1944 const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType);
1945
1946 std::vector<T> inputValues
1947 {
1948 0.f, -0.f
1949 };
1950
1951 std::vector<T> expectedOutputValues
1952 {
1953 INFINITY, -INFINITY
1954 };
1955
1956 return Rsqrt2dTestCommon<T>(workloadFactory, memoryManager,
1957 inputTensorInfo, outputTensorInfo,
1958 inputValues, expectedOutputValues);
1959}
1960
1961template<armnn::DataType ArmnnType, typename T>
1962LayerTestResult<T, 2> RsqrtNegativeTest(
1963 armnn::IWorkloadFactory& workloadFactory,
1964 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
1965{
1966 const armnn::TensorShape inputShape{ 1, 2 };
1967 const armnn::TensorShape outputShape{ 1, 2 };
1968
1969 const armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
1970 const armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType);
1971
1972 std::vector<T> inputValues
1973 {
1974 -25.f, -16.f
1975 };
1976
1977 std::vector<T> expectedOutputValues
1978 {
1979 -NAN, -NAN
1980 };
1981
1982 return Rsqrt2dTestCommon<T>(workloadFactory, memoryManager,
1983 inputTensorInfo, outputTensorInfo,
1984 inputValues, expectedOutputValues);
1985}
1986
1987template<typename T>
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01001988LayerTestResult<T, 4> SimpleReshapeTestImpl(
1989 armnn::IWorkloadFactory& workloadFactory,
1990 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1991 armnn::TensorInfo inputTensorInfo,
1992 armnn::TensorInfo outputTensorInfo,
1993 const std::vector<T>& inputData,
1994 const std::vector<T>& outputExpectedData)
1995{
1996 auto input = MakeTensor<T, 4>(inputTensorInfo, inputData);
1997
1998 LayerTestResult<T, 4> ret(outputTensorInfo);
1999 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, outputExpectedData);
2000
2001 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2002 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2003
2004 armnn::ReshapeQueueDescriptor data;
2005 armnn::WorkloadInfo info;
2006 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
2007 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
2008
2009 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateReshape(data, info);
2010
2011 inputHandle->Allocate();
2012 outputHandle->Allocate();
2013
2014 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2015
2016 workload->Execute();
2017
2018 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
2019
2020 return ret;
2021}
2022
Francis Murtagh46c09d02019-05-28 08:15:28 +01002023template<armnn::DataType ArmnnType, typename T>
2024LayerTestResult<T, 2> FullyConnectedTest(
2025 armnn::IWorkloadFactory& workloadFactory,
2026 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2027 bool biasEnabled)
2028{
2029 constexpr static unsigned int inputWidth = 3u;
2030 constexpr static unsigned int inputHeight = 2u;
2031 constexpr static unsigned int inputChannels = 1u;
2032
2033 constexpr static unsigned int inputSize = inputWidth * inputHeight * inputChannels;
2034
2035 constexpr static unsigned int outputChannels = 2u;
2036
2037 armnn::TensorInfo inputTensorInfo({ 1, inputChannels, inputHeight, inputWidth }, ArmnnType);
2038 inputTensorInfo.SetQuantizationScale(0.1f);
2039 inputTensorInfo.SetQuantizationOffset(63);
2040
2041 armnn::TensorInfo outputTensorInfo({ 1, outputChannels }, ArmnnType);
2042 outputTensorInfo.SetQuantizationScale(5.f);
2043 outputTensorInfo.SetQuantizationOffset(biasEnabled ? -50 : 10);
2044
2045 armnn::TensorInfo weightsDesc({ outputChannels, inputSize }, ArmnnType);
2046 weightsDesc.SetQuantizationScale(0.2f);
2047 weightsDesc.SetQuantizationOffset(93);
2048
2049 armnn::TensorInfo biasesDesc({ outputChannels }, GetBiasTypeFromWeightsType(weightsDesc.GetDataType()).value());
2050 biasesDesc.SetQuantizationScale(inputTensorInfo.GetQuantizationScale() * weightsDesc.GetQuantizationScale());
2051 biasesDesc.SetQuantizationOffset(0);
2052
2053 LayerTestResult<T, 2> result(outputTensorInfo);
2054
2055 auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
2056 {
2057 -1.2f, 6.1f, -3.5f,
2058 18.8f, -5.5f, 2.9f
2059 },
2060 inputTensorInfo));
2061
2062 auto weights = MakeTensor<T, 2>(weightsDesc, ConvertToDataType<ArmnnType>(
2063 {
2064 -8.4f, 20.0f, -10.4f, -8, 16.4f, -11.8f,
2065 23.4f, 10.4f, -14.0f, -3.8f, -11.8f, 11.4f
2066 },
2067 weightsDesc));
2068
2069 auto bias = MakeTensor<int32_t, 1>(biasesDesc, std::vector<int32_t>{9250, 67500});
2070
2071 result = SimpleFullyConnectedTestImpl<T>(
2072 workloadFactory,
2073 memoryManager,
2074 inputTensorInfo, outputTensorInfo,
2075 weightsDesc, biasesDesc,
2076 weights, bias, input,
2077 biasEnabled, true
2078 );
2079
2080 if (biasEnabled)
2081 {
2082 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
2083 ConvertToDataType<ArmnnType>({80.f, 1460.f}, outputTensorInfo));
2084 }
2085 else
2086 {
2087 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
2088 ConvertToDataType<ArmnnType>({-107.04f, 110.f}, outputTensorInfo));
2089 }
2090
2091 return result;
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01002092}
2093
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01002094template<armnn::DataType ArmnnType, typename T>
2095LayerTestResult<T, 4> SimpleReshapeTest(
2096 armnn::IWorkloadFactory& workloadFactory,
2097 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2098{
2099 armnn::TensorInfo inputTensorInfo;
2100 armnn::TensorInfo outputTensorInfo;
2101
2102 unsigned int inputShape[] = { 2, 2, 3, 3 };
2103 unsigned int outputShape[] = { 2, 2, 9, 1 };
2104
2105 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
2106 inputTensorInfo.SetQuantizationScale(1.0f);
2107 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
2108 outputTensorInfo.SetQuantizationScale(1.0f);
2109
2110 auto input = ConvertToDataType<ArmnnType>(
2111 {
2112 0.0f, 1.0f, 2.0f,
2113 3.0f, 4.0f, 5.0f,
2114 6.0f, 7.0f, 8.0f,
2115
2116 9.0f, 10.0f, 11.0f,
2117 12.0f, 13.0f, 14.0f,
2118 15.0f, 16.0f, 17.0f,
2119
2120 18.0f, 19.0f, 20.0f,
2121 21.0f, 22.0f, 23.0f,
2122 24.0f, 25.0f, 26.0f,
2123
2124 27.0f, 28.0f, 29.0f,
2125 30.0f, 31.0f, 32.0f,
2126 33.0f, 34.0f, 35.0f,
2127 },
2128 inputTensorInfo);
2129
2130 auto outputExpected = ConvertToDataType<ArmnnType>(
2131 {
2132 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f,
2133
2134 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f,
2135
2136 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f,
2137
2138 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f,
2139 },
2140 outputTensorInfo);
2141
2142 return SimpleReshapeTestImpl<T>(
2143 workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected);
Matteo Martincigh42666a12019-05-29 08:53:41 +01002144}
James Conroy83735b12019-05-30 16:36:59 +01002145
2146template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
2147LayerTestResult<T, 4> SimpleFloorTest(
2148 armnn::IWorkloadFactory& workloadFactory,
2149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2150{
James Conroyb40d7102019-06-04 12:32:09 +01002151 armnn::TensorInfo inputTensorInfo({1, 3, 2, 3}, ArmnnType);
2152 inputTensorInfo.SetQuantizationScale(0.1f);
2153
2154 armnn::TensorInfo outputTensorInfo(inputTensorInfo);
2155 outputTensorInfo.SetQuantizationScale(0.1f);
James Conroy83735b12019-05-30 16:36:59 +01002156
2157 auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
2158 { -37.5f, -15.2f, -8.76f, -2.0f, -1.5f, -1.3f, -0.5f, -0.4f, 0.0f,
2159 1.0f, 0.4f, 0.5f, 1.3f, 1.5f, 2.0f, 8.76f, 15.2f, 37.5f },
2160 inputTensorInfo));
2161
2162 LayerTestResult<T, 4> ret(outputTensorInfo);
2163 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, ConvertToDataType<ArmnnType>(
2164 { -38.0f, -16.0f, -9.0f, -2.0f, -2.0f, -2.0f, -1.0f, -1.0f, 0.0f,
2165 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 2.0f, 8.0f, 15.0f, 37.0f },
2166 outputTensorInfo));
2167
2168 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2169 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2170
2171 armnn::FloorQueueDescriptor data;
2172 armnn::WorkloadInfo info;
2173 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
2174 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
2175
2176 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFloor(data, info);
2177
2178 inputHandle->Allocate();
2179 outputHandle->Allocate();
2180
2181 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2182
2183 workload->Execute();
2184
2185 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
2186
2187 return ret;
Matteo Martincighf5507132019-06-04 10:59:47 +01002188}