blob: fab1ad83c1820d0eced6ff3afbf32f9da4ff5e72 [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"
Ellen Norris-Thompsonc4223d12019-06-10 14:15:12 +010013#include "TensorUtils.hpp"
14#include "Permute.hpp"
telsoa014fcda012018-03-09 14:13:49 +000015
Francis Murtagh46c09d02019-05-28 08:15:28 +010016#include <backendsCommon/CpuTensorHandle.hpp>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000017#include <backendsCommon/IBackendInternal.hpp>
18#include <backendsCommon/IMemoryManager.hpp>
Francis Murtagh46c09d02019-05-28 08:15:28 +010019#include <reference/workloads/Decoders.hpp>
20#include <reference/workloads/Encoders.hpp>
21#include <test/TensorHelpers.hpp>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000022
telsoa014fcda012018-03-09 14:13:49 +000023#include <boost/multi_array.hpp>
24#include <boost/assert.hpp>
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000025
telsoa014fcda012018-03-09 14:13:49 +000026#include <array>
27
telsoa01c577f2c2018-08-31 09:22:23 +010028// Layer callables.
telsoa014fcda012018-03-09 14:13:49 +000029
30namespace armnn
31{
32class IWorkloadFactory;
33}
34
35template <std::size_t n>
36boost::array<unsigned int, n> GetTensorShapeAsArray(const armnn::TensorInfo& tensorInfo)
37{
38 BOOST_ASSERT_MSG(n == tensorInfo.GetNumDimensions(),
39 "Attempting to construct a shape array of mismatching size");
40
41 boost::array<unsigned int, n> shape;
42 for (unsigned int i = 0; i < n; i++)
43 {
44 shape[i] = tensorInfo.GetShape()[i];
45 }
46 return shape;
47}
48
49template <typename T, std::size_t n>
50struct LayerTestResult
51{
52 LayerTestResult(const armnn::TensorInfo& outputInfo)
53 {
54 auto shape( GetTensorShapeAsArray<n>(outputInfo) );
55 output.resize(shape);
56 outputExpected.resize(shape);
57 supported = true;
kevmay012b4d88e2019-01-24 14:05:09 +000058 compareBoolean = false;
telsoa014fcda012018-03-09 14:13:49 +000059 }
60
61 boost::multi_array<T, n> output;
62 boost::multi_array<T, n> outputExpected;
63 bool supported;
kevmay012b4d88e2019-01-24 14:05:09 +000064 bool compareBoolean;
telsoa014fcda012018-03-09 14:13:49 +000065};
66
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000067LayerTestResult<float, 4> SimpleConvolution2d3x5Test(
68 armnn::IWorkloadFactory& workloadFactory,
69 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
70 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +000071 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +000072
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000073LayerTestResult<float, 4> SimpleConvolution2d3x3Test(
74 armnn::IWorkloadFactory& workloadFactory,
75 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
76 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +000077 const armnn::DataLayout layout);
Francis Murtaghd59116e2018-10-04 16:03:07 +010078
Mike Kelly7332ed82018-12-20 17:03:06 +000079LayerTestResult<float, 4> SimpleConvolution2d3x3Stride2x2Test(
80 armnn::IWorkloadFactory& workloadFactory,
81 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
82 bool biasEnabled,
83 const armnn::DataLayout layout);
84
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000085LayerTestResult<float, 4> SimpleConvolution2d3x3NhwcTest(
86 armnn::IWorkloadFactory& workloadFactory,
87 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
88 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +000089
90LayerTestResult<float, 4>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000091Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest(
92 armnn::IWorkloadFactory& workloadFactory,
93 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +000094 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +000095
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000096LayerTestResult<float, 4> Convolution2dAsymmetricPaddingTest(
97 armnn::IWorkloadFactory& workloadFactory,
98 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +000099 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +0000100
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000101LayerTestResult<float, 4> Convolution1dTest(
102 armnn::IWorkloadFactory& workloadFactory,
103 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
104 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000105
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000106LayerTestResult<uint8_t, 4> Convolution1dUint8Test(
107 armnn::IWorkloadFactory& workloadFactory,
108 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
109 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000110
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000111LayerTestResult<float, 4> DepthwiseConvolution2dTest(
112 armnn::IWorkloadFactory& workloadFactory,
113 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
114 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000115 const armnn::DataLayout layout);
Nikhil Rajcec6b652018-10-12 13:51:57 +0100116
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000117LayerTestResult<float, 4> DepthwiseConvolution2dDepthNhwcTest(
118 armnn::IWorkloadFactory& workloadFactory,
119 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
120 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +0000121
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000122LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul1Test(
123 armnn::IWorkloadFactory& workloadFactory,
124 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
125 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000126 const armnn::DataLayout layout);
surmeh013537c2c2018-05-18 16:31:43 +0100127
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000128LayerTestResult<float, 4> DepthwiseConvolution2dAsymmetricTest(
129 armnn::IWorkloadFactory& workloadFactory,
130 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
131 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +0000132 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +0000133
Bruno Goncalves22972f02019-04-26 21:03:24 -0300134LayerTestResult<float, 4> SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest(armnn::IWorkloadFactory& workloadFactory,
135 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
136
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000137LayerTestResult<float, 4> CompareDepthwiseConvolution2dFloatTest(
138 armnn::IWorkloadFactory& workloadFactory,
139 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
140 armnn::IWorkloadFactory& refWorkloadFactory,
141 const armnn::DataLayout layout);
142
143LayerTestResult<uint8_t, 4> CompareDepthwiseConvolution2dUint8Test(
144 armnn::IWorkloadFactory& workloadFactory,
145 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
146 armnn::IWorkloadFactory& refWorkloadFactory,
147 const armnn::DataLayout layout);
148
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000149LayerTestResult<float, 4> SimpleMaxPooling2dSize2x2Stride2x2Test(
150 armnn::IWorkloadFactory& workloadFactory,
151 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
152 bool forceNoPadding);
James Conroy45a9b772018-10-31 11:47:53 +0000153
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000154LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize2x2Stride2x2Uint8Test(
155 armnn::IWorkloadFactory& workloadFactory,
156 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
157 bool forceNoPadding);
James Conroy45a9b772018-10-31 11:47:53 +0000158
Teresa Charlin0434df62019-06-06 13:40:35 +0100159LayerTestResult<int16_t, 4> SimpleMaxPooling2dSize2x2Stride2x2Int16Test(
160 armnn::IWorkloadFactory& workloadFactory,
161 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
162 bool forceNoPadding);
163
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000164LayerTestResult<float, 4> SimpleMaxPooling2dSize3x3Stride2x4Test(
165 armnn::IWorkloadFactory& workloadFactory,
166 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
167 bool forceNoPadding);
168
169LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize3x3Stride2x4Uint8Test(
170 armnn::IWorkloadFactory& workloadFactory,
171 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
172 bool forceNoPadding );
173
Teresa Charlin0434df62019-06-06 13:40:35 +0100174LayerTestResult<int16_t, 4> SimpleMaxPooling2dSize3x3Stride2x4Int16Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000175 armnn::IWorkloadFactory& workloadFactory,
Teresa Charlin0434df62019-06-06 13:40:35 +0100176 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
177 bool forceNoPadding );
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000178
179LayerTestResult<float, 4> SimpleMaxPooling2dTest(
180 armnn::IWorkloadFactory& workloadFactory,
181 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000182 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000183
184LayerTestResult<uint8_t, 4> SimpleMaxPooling2dUint8Test(
185 armnn::IWorkloadFactory& workloadFactory,
186 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000187 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000188
Teresa Charlin0434df62019-06-06 13:40:35 +0100189LayerTestResult<int16_t, 4> SimpleMaxPooling2dInt16Test(
190 armnn::IWorkloadFactory& workloadFactory,
191 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
192 const armnn::DataLayout dataLayout);
193
194LayerTestResult<float, 4> IgnorePaddingSimpleMaxPooling2dTest(
195 armnn::IWorkloadFactory& workloadFactory,
196 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
197
198LayerTestResult<uint8_t, 4> IgnorePaddingSimpleMaxPooling2dUint8Test(
199 armnn::IWorkloadFactory& workloadFactory,
200 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
201
202LayerTestResult<int16_t, 4> IgnorePaddingSimpleMaxPooling2dInt16Test(
203 armnn::IWorkloadFactory& workloadFactory,
204 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
205
206LayerTestResult<float, 4> IgnorePaddingMaxPooling2dSize3Test(
207 armnn::IWorkloadFactory& workloadFactory,
208 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
209
210LayerTestResult<uint8_t, 4> IgnorePaddingMaxPooling2dSize3Uint8Test(
211 armnn::IWorkloadFactory& workloadFactory,
212 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
213
214LayerTestResult<int16_t, 4> IgnorePaddingMaxPooling2dSize3Int16Test(
215 armnn::IWorkloadFactory& workloadFactory,
216 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
217
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000218LayerTestResult<float, 4> SimpleAveragePooling2dTest(
219 armnn::IWorkloadFactory& workloadFactory,
220 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000221 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000222
223LayerTestResult<uint8_t, 4> SimpleAveragePooling2dUint8Test(
224 armnn::IWorkloadFactory& workloadFactory,
225 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000226 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000227
Teresa Charlin0434df62019-06-06 13:40:35 +0100228LayerTestResult<int16_t, 4> SimpleAveragePooling2dInt16Test(
229 armnn::IWorkloadFactory& workloadFactory,
230 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
231 const armnn::DataLayout dataLayout);
232
233LayerTestResult<float, 4> LargeTensorsAveragePooling2dTest(
234 armnn::IWorkloadFactory& workloadFactory,
235 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
236
237LayerTestResult<uint8_t, 4> LargeTensorsAveragePooling2dUint8Test(
238 armnn::IWorkloadFactory& workloadFactory,
239 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
240
241LayerTestResult<int16_t, 4> LargeTensorsAveragePooling2dInt16Test(
242 armnn::IWorkloadFactory& workloadFactory,
243 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
244
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000245LayerTestResult<float, 4> IgnorePaddingAveragePooling2dSize3x2Stride2x2Test(
246 armnn::IWorkloadFactory& workloadFactory,
247 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
248 bool forceNoPadding);
249
250LayerTestResult<float, 4> IgnorePaddingSimpleAveragePooling2dTest(
251 armnn::IWorkloadFactory& workloadFactory,
252 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
253
254LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dUint8Test(
255 armnn::IWorkloadFactory& workloadFactory,
256 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
257
Teresa Charlin0434df62019-06-06 13:40:35 +0100258LayerTestResult<int16_t, 4> IgnorePaddingSimpleAveragePooling2dInt16Test(
259 armnn::IWorkloadFactory& workloadFactory,
260 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
261
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000262LayerTestResult<float, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingTest(
263 armnn::IWorkloadFactory& workloadFactory,
264 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
265
telsoa014fcda012018-03-09 14:13:49 +0000266LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingUint8Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000267 armnn::IWorkloadFactory& workloadFactory,
268 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000269
Teresa Charlin0434df62019-06-06 13:40:35 +0100270LayerTestResult<int16_t, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingInt16Test(
271 armnn::IWorkloadFactory& workloadFactory,
272 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
273
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000274LayerTestResult<float, 4> IgnorePaddingAveragePooling2dSize3Test(
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> IgnorePaddingAveragePooling2dSize3Uint8Test(
279 armnn::IWorkloadFactory& workloadFactory,
280 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000281
Teresa Charlin0434df62019-06-06 13:40:35 +0100282LayerTestResult<int16_t, 4> IgnorePaddingAveragePooling2dSize3Int16Test(
283 armnn::IWorkloadFactory& workloadFactory,
284 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
285
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000286LayerTestResult<float, 4> SimpleL2Pooling2dTest(
287 armnn::IWorkloadFactory& workloadFactory,
288 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000289 const armnn::DataLayout dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000290
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000291LayerTestResult<uint8_t, 4> SimpleL2Pooling2dUint8Test(
292 armnn::IWorkloadFactory& workloadFactory,
293 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000294 const armnn::DataLayout dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000295
Teresa Charlin0434df62019-06-06 13:40:35 +0100296LayerTestResult<int16_t, 4> SimpleL2Pooling2dInt16Test(
297 armnn::IWorkloadFactory& workloadFactory,
298 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
299 const armnn::DataLayout dataLayout);
300
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000301LayerTestResult<float, 4> L2Pooling2dSize3Stride1Test(
302 armnn::IWorkloadFactory& workloadFactory,
303 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000304
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000305LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride1Uint8Test(
306 armnn::IWorkloadFactory& workloadFactory,
307 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000308
Teresa Charlin0434df62019-06-06 13:40:35 +0100309LayerTestResult<int16_t, 4> L2Pooling2dSize3Stride1Int16Test(
310 armnn::IWorkloadFactory& workloadFactory,
311 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
312
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000313LayerTestResult<float, 4> L2Pooling2dSize3Stride3Test(
314 armnn::IWorkloadFactory& workloadFactory,
315 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000316
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000317LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride3Uint8Test(
318 armnn::IWorkloadFactory& workloadFactory,
319 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000320
Teresa Charlin0434df62019-06-06 13:40:35 +0100321LayerTestResult<int16_t, 4> L2Pooling2dSize3Stride3Int16Test(
322 armnn::IWorkloadFactory& workloadFactory,
323 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
324
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000325LayerTestResult<float, 4> L2Pooling2dSize3Stride4Test(
326 armnn::IWorkloadFactory& workloadFactory,
327 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000328
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000329LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride4Uint8Test(
330 armnn::IWorkloadFactory& workloadFactory,
331 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000332
Teresa Charlin0434df62019-06-06 13:40:35 +0100333LayerTestResult<int16_t, 4> L2Pooling2dSize3Stride4Int16Test(
334 armnn::IWorkloadFactory& workloadFactory,
335 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
336
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000337LayerTestResult<float, 4> L2Pooling2dSize7Test(
338 armnn::IWorkloadFactory& workloadFactory,
339 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000340
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000341LayerTestResult<uint8_t, 4> L2Pooling2dSize7Uint8Test(
342 armnn::IWorkloadFactory& workloadFactory,
343 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000344
Teresa Charlin0434df62019-06-06 13:40:35 +0100345LayerTestResult<int16_t, 4> L2Pooling2dSize7Int16Test(
346 armnn::IWorkloadFactory& workloadFactory,
347 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
348
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000349LayerTestResult<float, 4> L2Pooling2dSize9Test(
350 armnn::IWorkloadFactory& workloadFactory,
351 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000352
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000353LayerTestResult<uint8_t, 4> L2Pooling2dSize9Uint8Test(
354 armnn::IWorkloadFactory& workloadFactory,
355 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
356
Teresa Charlin0434df62019-06-06 13:40:35 +0100357LayerTestResult<int16_t, 4> L2Pooling2dSize9Int16Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000358 armnn::IWorkloadFactory& workloadFactory,
359 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
360
361LayerTestResult<float, 4> IgnorePaddingSimpleL2Pooling2dTest(
362 armnn::IWorkloadFactory& workloadFactory,
363 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
364
365LayerTestResult<uint8_t, 4> IgnorePaddingSimpleL2Pooling2dUint8Test(
366 armnn::IWorkloadFactory& workloadFactory,
367 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
368
Teresa Charlin0434df62019-06-06 13:40:35 +0100369LayerTestResult<int16_t, 4> IgnorePaddingSimpleL2Pooling2dInt16Test(
370 armnn::IWorkloadFactory& workloadFactory,
371 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
372
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000373LayerTestResult<float, 4> IgnorePaddingL2Pooling2dSize3Test(
374 armnn::IWorkloadFactory& workloadFactory,
375 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
376
377LayerTestResult<uint8_t, 4> IgnorePaddingL2Pooling2dSize3Uint8Test(
378 armnn::IWorkloadFactory& workloadFactory,
379 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
380
Teresa Charlin0434df62019-06-06 13:40:35 +0100381LayerTestResult<int16_t, 4> IgnorePaddingL2Pooling2dSize3Int16Test(
382 armnn::IWorkloadFactory& workloadFactory,
383 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
384
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000385LayerTestResult<float, 4> AsymmetricNonSquarePooling2dTest(
386 armnn::IWorkloadFactory& workloadFactory,
387 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
388
389LayerTestResult<uint8_t, 4> AsymmetricNonSquarePooling2dUint8Test(
390 armnn::IWorkloadFactory& workloadFactory,
391 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
392
Teresa Charlin0434df62019-06-06 13:40:35 +0100393LayerTestResult<int16_t, 4> AsymmetricNonSquarePooling2dInt16Test(
394 armnn::IWorkloadFactory& workloadFactory,
395 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
396
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000397LayerTestResult<float, 4> ComparePooling2dTest(
398 armnn::IWorkloadFactory& workloadFactory,
399 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
400 armnn::IWorkloadFactory& refWorkloadFactory,
401 armnn::PoolingAlgorithm poolingType);
402
403LayerTestResult<uint8_t, 4> ComparePooling2dUint8Test(
404 armnn::IWorkloadFactory& workloadFactory,
405 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
406 armnn::IWorkloadFactory& refWorkloadFactory,
407 armnn::PoolingAlgorithm poolingType);
408
Teresa Charlin0434df62019-06-06 13:40:35 +0100409LayerTestResult<int16_t, 4> ComparePooling2dInt16Test(
410 armnn::IWorkloadFactory& workloadFactory,
411 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
412 armnn::IWorkloadFactory& refWorkloadFactory,
413 armnn::PoolingAlgorithm poolingType);
414
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000415LayerTestResult<float, 4> ConstantLinearActivationTest(
416 armnn::IWorkloadFactory& workloadFactory,
417 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
418
419LayerTestResult<float, 4> SimpleNormalizationAcrossTest(
420 armnn::IWorkloadFactory& workloadFactory,
421 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
422
423LayerTestResult<float, 4> SimpleNormalizationWithinTest(
424 armnn::IWorkloadFactory& workloadFactory,
425 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
426
427LayerTestResult<float,4> SimpleNormalizationAcrossNhwcTest(
428 armnn::IWorkloadFactory& workloadFactory,
429 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
430
431LayerTestResult<float, 2> SimpleSoftmaxTest(
432 armnn::IWorkloadFactory& workloadFactory,
433 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
434 float beta);
435
Narumol Prangnawarat65d30962019-03-14 11:55:03 +0000436LayerTestResult<float, 3> Simple3dSoftmaxTest(
437 armnn::IWorkloadFactory& workloadFactory,
438 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
439 float beta);
440
441LayerTestResult<float, 4> Simple4dSoftmaxTest(
442 armnn::IWorkloadFactory& workloadFactory,
443 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
444 float beta);
445
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000446LayerTestResult<uint8_t, 2> SimpleSoftmaxUint8Test(
447 armnn::IWorkloadFactory& workloadFactory,
448 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
449 float beta);
450
Narumol Prangnawarat65d30962019-03-14 11:55:03 +0000451LayerTestResult<uint8_t,3> Simple3dSoftmaxUint8Test(
452 armnn::IWorkloadFactory& workloadFactory,
453 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
454 float beta);
455
456LayerTestResult<uint8_t,4> Simple4dSoftmaxUint8Test(
457 armnn::IWorkloadFactory& workloadFactory,
458 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
459 float beta);
460
nikraj01248683f2019-05-29 16:46:50 +0100461LayerTestResult<int16_t,2> SimpleSoftmaxUint16Test(
462 armnn::IWorkloadFactory& workloadFactory,
463 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
464 float beta);
465
466LayerTestResult<int16_t,3> Simple3dSoftmaxUint16Test(
467 armnn::IWorkloadFactory& workloadFactory,
468 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
469 float beta);
470
471LayerTestResult<int16_t,4> Simple4dSoftmaxUint16Test(
472 armnn::IWorkloadFactory& workloadFactory,
473 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
474 float beta);
475
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000476LayerTestResult<float, 4> SimpleSigmoidTest(
477 armnn::IWorkloadFactory& workloadFactory,
478 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
479
Nina Drozd8ed4b8c2019-05-29 10:41:04 +0100480template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
481LayerTestResult<T, 4> SimpleReshapeTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000482 armnn::IWorkloadFactory& workloadFactory,
483 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
484
485LayerTestResult<float, 4> SimpleFloorTest(
486 armnn::IWorkloadFactory& workloadFactory,
487 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
488
489LayerTestResult<float, 1> Concatenation1dTest(
490 armnn::IWorkloadFactory& workloadFactory,
491 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
492
493LayerTestResult<float, 2> Concatenation2dDim0Test(
494 armnn::IWorkloadFactory& workloadFactory,
495 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
496
497LayerTestResult<float, 2> Concatenation2dDim1Test(
498 armnn::IWorkloadFactory& workloadFactory,
499 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
500
501LayerTestResult<float, 2> Concatenation2dDim0DiffInputDimsTest(
502 armnn::IWorkloadFactory& workloadFactory,
503 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
504
505LayerTestResult<float, 2> Concatenation2dDim1DiffInputDimsTest(
506 armnn::IWorkloadFactory& workloadFactory,
507 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
508
509LayerTestResult<float, 3> Concatenation3dDim0Test(
510 armnn::IWorkloadFactory& workloadFactory,
511 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
512
513LayerTestResult<float, 3> Concatenation3dDim1Test(
514 armnn::IWorkloadFactory& workloadFactory,
515 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
516
517LayerTestResult<float, 3> Concatenation3dDim2Test(
518 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +0000519 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
520 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000521
522LayerTestResult<float, 3> Concatenation3dDim0DiffInputDimsTest(
523 armnn::IWorkloadFactory& workloadFactory,
524 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
525
526LayerTestResult<float, 3> Concatenation3dDim1DiffInputDimsTest(
527 armnn::IWorkloadFactory& workloadFactory,
528 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
529
530LayerTestResult<float, 3> Concatenation3dDim2DiffInputDimsTest(
531 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +0000532 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
533 bool useSubtensor);
534
535LayerTestResult<float, 4> Concatenation4dDim0Test(
536 armnn::IWorkloadFactory& workloadFactory,
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000537 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
538
narpra015cdda352018-11-19 15:30:27 +0000539LayerTestResult<float, 4> Concatenation4dDim1Test(
540 armnn::IWorkloadFactory& workloadFactory,
541 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
542
543LayerTestResult<float, 4> Concatenation4dDim2Test(
544 armnn::IWorkloadFactory& workloadFactory,
545 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
546
547LayerTestResult<float, 4> Concatenation4dDim3Test(
548 armnn::IWorkloadFactory& workloadFactory,
549 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
550 bool useSubtensor);
551
552LayerTestResult<float, 4> Concatenation4dDiffShapeDim0Test(
553 armnn::IWorkloadFactory& workloadFactory,
554 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
555
556LayerTestResult<float, 4> Concatenation4dDiffShapeDim1Test(
557 armnn::IWorkloadFactory& workloadFactory,
558 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
559
560LayerTestResult<float, 4> Concatenation4dDiffShapeDim2Test(
561 armnn::IWorkloadFactory& workloadFactory,
562 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
563
564LayerTestResult<float, 4> Concatenation4dDiffShapeDim3Test(
565 armnn::IWorkloadFactory& workloadFactory,
566 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
567 bool useSubtensor);
568
569LayerTestResult<uint8_t, 4> Concatenation4dDim0Uint8Test(
570 armnn::IWorkloadFactory& workloadFactory,
571 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
572
573LayerTestResult<uint8_t, 4> Concatenation4dDim1Uint8Test(
574 armnn::IWorkloadFactory& workloadFactory,
575 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
576
577LayerTestResult<uint8_t, 4> Concatenation4dDim2Uint8Test(
578 armnn::IWorkloadFactory& workloadFactory,
579 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
580
581LayerTestResult<uint8_t, 4> Concatenation4dDim3Uint8Test(
582 armnn::IWorkloadFactory& workloadFactory,
583 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
584 bool useSubtensor);
585
586LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim0Uint8Test(
587 armnn::IWorkloadFactory& workloadFactory,
588 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
589
590LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim1Uint8Test(
591 armnn::IWorkloadFactory& workloadFactory,
592 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
593
594LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim2Uint8Test(
595 armnn::IWorkloadFactory& workloadFactory,
596 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
597
598LayerTestResult<uint8_t, 4> Concatenation4dDiffShapeDim3Uint8Test(
599 armnn::IWorkloadFactory& workloadFactory,
600 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
601 bool useSubtensor);
602
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000603LayerTestResult<uint8_t, 4> SimpleSigmoidUint8Test(
604 armnn::IWorkloadFactory& workloadFactory,
605 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
606
Teresa Charlin18515e22019-04-24 10:17:46 +0100607LayerTestResult<int16_t, 4> SimpleSigmoidInt16Test(
608 armnn::IWorkloadFactory& workloadFactory,
609 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
610
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000611LayerTestResult<float, 4> CompareConvolution2dTest(
612 armnn::IWorkloadFactory& workloadFactory,
613 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
telsoa014fcda012018-03-09 14:13:49 +0000614 armnn::IWorkloadFactory& refWorkloadFactory);
615
616template<typename T>
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000617LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest(
618 armnn::IWorkloadFactory& workloadFactory,
619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
620 armnn::IWorkloadFactory& refWorkloadFactory,
Matthew Bentham8800c002018-11-19 13:19:28 +0000621 const armnn::DataLayout layout);
telsoa014fcda012018-03-09 14:13:49 +0000622
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000623LayerTestResult<float, 4> CompareNormalizationTest(
624 armnn::IWorkloadFactory& workloadFactory,
625 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
626 armnn::IWorkloadFactory& refWorkloadFactory,
627 armnn::NormalizationAlgorithmChannel normChannel,
628 armnn::NormalizationAlgorithmMethod normMethod);
telsoa014fcda012018-03-09 14:13:49 +0000629
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000630LayerTestResult<float, 2> CompareSoftmaxTest(
631 armnn::IWorkloadFactory& workloadFactory,
632 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
telsoa014fcda012018-03-09 14:13:49 +0000633 armnn::IWorkloadFactory& refWorkloadFactory,
634 float beta);
635
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000636LayerTestResult<float, 2> FullyConnectedFloat32Test(
637 armnn::IWorkloadFactory& workloadFactory,
638 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
639 bool biasEnabled,
640 bool transposeWeights);
telsoa014fcda012018-03-09 14:13:49 +0000641
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000642std::vector<LayerTestResult<float, 3>> SplitterTest(
643 armnn::IWorkloadFactory& workloadFactory,
644 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
David Beck5cd01f32018-09-12 16:00:08 +0100645
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000646LayerTestResult<float, 3> CopyViaSplitterTest(
647 armnn::IWorkloadFactory& workloadFactory,
648 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000649
Jim Flynn4ed6c832019-05-20 11:02:46 +0100650LayerTestResult<float, 3> ConcatTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000651 armnn::IWorkloadFactory& workloadFactory,
652 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000653
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000654LayerTestResult<float, 4> AdditionTest(
655 armnn::IWorkloadFactory& workloadFactory,
656 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000657
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000658LayerTestResult<float, 4> AdditionBroadcast1ElementTest(
659 armnn::IWorkloadFactory& workloadFactory,
660 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000661
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000662LayerTestResult<float, 4> AdditionBroadcastTest(
663 armnn::IWorkloadFactory& workloadFactory,
664 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000665
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000666LayerTestResult<float, 4> CompareAdditionTest(
667 armnn::IWorkloadFactory& workloadFactory,
668 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
669 armnn::IWorkloadFactory& refWorkloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000670
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000671LayerTestResult<float, 4> SubtractionTest(
672 armnn::IWorkloadFactory& workloadFactory,
673 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000674
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000675LayerTestResult<float, 4> SubtractionBroadcast1ElementTest(
676 armnn::IWorkloadFactory& workloadFactory,
677 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000678
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000679LayerTestResult<float, 4> SubtractionBroadcastTest(
680 armnn::IWorkloadFactory& workloadFactory,
681 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000682
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000683LayerTestResult<float, 4> CompareActivationTest(
684 armnn::IWorkloadFactory& workloadFactory,
685 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
686 armnn::IWorkloadFactory& refWorkloadFactory,
687 armnn::ActivationFunction f,
688 unsigned int batchSize);
telsoa014fcda012018-03-09 14:13:49 +0000689
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000690LayerTestResult<float, 4> DivisionTest(
691 armnn::IWorkloadFactory& workloadFactory,
692 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa014fcda012018-03-09 14:13:49 +0000693
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000694LayerTestResult<float, 4> DivisionByZeroTest(
695 armnn::IWorkloadFactory& workloadFactory,
696 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +0100697
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000698LayerTestResult<float, 4> DivisionBroadcast1ElementTest(
699 armnn::IWorkloadFactory& workloadFactory,
700 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +0100701
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000702LayerTestResult<float, 4> DivisionBroadcast1DVectorTest(
703 armnn::IWorkloadFactory& workloadFactory,
704 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa01c577f2c2018-08-31 09:22:23 +0100705
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000706LayerTestResult<float, 4> MultiplicationTest(
707 armnn::IWorkloadFactory& workloadFactory,
708 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
telsoa01c577f2c2018-08-31 09:22:23 +0100709
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000710LayerTestResult<float, 4> MultiplicationBroadcast1ElementTest(
711 armnn::IWorkloadFactory& workloadFactory,
712 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra011e4c31d2018-09-28 11:07:51 +0100713
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000714LayerTestResult<float, 4> MultiplicationBroadcast1DVectorTest(
715 armnn::IWorkloadFactory& workloadFactory,
716 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra011e4c31d2018-09-28 11:07:51 +0100717
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000718LayerTestResult<float, 4> CompareMultiplicationTest(
719 armnn::IWorkloadFactory& workloadFactory,
720 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
721 armnn::IWorkloadFactory& refWorkloadFactory);
Matteo Martincigh28dcab62018-10-19 16:40:03 +0100722
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000723LayerTestResult<float, 4> BatchNormTest(
724 armnn::IWorkloadFactory& workloadFactory,
725 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000726
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000727LayerTestResult<float, 4> BatchNormNhwcTest(
728 armnn::IWorkloadFactory& workloadFactory,
729 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000730
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000731LayerTestResult<float, 4> CompareBatchNormTest(
732 armnn::IWorkloadFactory& workloadFactory,
733 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
734 armnn::IWorkloadFactory& refWorkloadFactory);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000735
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000736LayerTestResult<float, 4> BoundedReLuUpperAndLowerBoundTest(
737 armnn::IWorkloadFactory& workloadFactory,
738 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000739
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000740LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperAndLowerBoundTest(
741 armnn::IWorkloadFactory& workloadFactor,
742 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManagery);
Éanna Ó Catháin4e1e1362018-11-12 11:36:34 +0000743
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000744LayerTestResult<float, 4> BoundedReLuUpperBoundOnlyTest(
745 armnn::IWorkloadFactory& workloadFactory,
746 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Éanna Ó Catháin4e1e1362018-11-12 11:36:34 +0000747
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000748LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperBoundOnlyTest(
749 armnn::IWorkloadFactory& workloadFactory,
750 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Éanna Ó Catháin262553e2018-11-14 11:26:23 +0000751
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000752LayerTestResult<float, 4> CompareBoundedReLuTest(
753 armnn::IWorkloadFactory& workloadFactory,
754 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
755 armnn::IWorkloadFactory& refWorkloadFactory,
756 float upperBound,
757 float lowerBound);
758
konsof017f6db402019-06-07 15:15:58 +0100759LayerTestResult<float, 4> ReLuTest(
760 armnn::IWorkloadFactory& workloadFactory,
761 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
762
763LayerTestResult<uint8_t, 4> ReLuUint8Test(
764 armnn::IWorkloadFactory& workloadFactory,
765 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Teresa Charlin18515e22019-04-24 10:17:46 +0100766
767LayerTestResult<int16_t, 4> ReLuInt16Test(
768 armnn::IWorkloadFactory& workloadFactory,
769 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
770
771LayerTestResult<int16_t, 4> BoundedReLuInt16Test(
772 armnn::IWorkloadFactory& workloadFactory,
773 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
774
konsof017f6db402019-06-07 15:15:58 +0100775LayerTestResult<float, 4> SoftReLuTest(
776 armnn::IWorkloadFactory& workloadFactory,
777 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
778
779LayerTestResult<uint8_t, 4> SoftReLuUint8Test(
780 armnn::IWorkloadFactory& workloadFactory,
781 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
782
Teresa Charlin18515e22019-04-24 10:17:46 +0100783LayerTestResult<int16_t, 4> SoftReLuInt16Test(
784 armnn::IWorkloadFactory& workloadFactory,
785 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
786
konsof017f6db402019-06-07 15:15:58 +0100787LayerTestResult<float, 4> LeakyReLuTest(
788 armnn::IWorkloadFactory& workloadFactory,
789 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
790
791LayerTestResult<uint8_t, 4> LeakyReLuUint8Test(
792 armnn::IWorkloadFactory& workloadFactory,
793 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
794
Teresa Charlin18515e22019-04-24 10:17:46 +0100795LayerTestResult<int16_t, 4> LeakyReLuInt16Test(
796 armnn::IWorkloadFactory& workloadFactory,
797 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
798
konsof017f6db402019-06-07 15:15:58 +0100799LayerTestResult<float, 4> AbsTest(
800 armnn::IWorkloadFactory& workloadFactory,
801 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
802
803LayerTestResult<uint8_t, 4> AbsUint8Test(
804 armnn::IWorkloadFactory& workloadFactory,
805 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
806
Teresa Charlin18515e22019-04-24 10:17:46 +0100807LayerTestResult<int16_t, 4> AbsInt16Test(
808 armnn::IWorkloadFactory& workloadFactory,
809 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
810
konsof017f6db402019-06-07 15:15:58 +0100811LayerTestResult<float, 4> SqrtTest(
812 armnn::IWorkloadFactory& workloadFactory,
813 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
814
815LayerTestResult<uint8_t, 4> SqrtUint8Test(
816 armnn::IWorkloadFactory& workloadFactory,
817 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
818
Teresa Charlin18515e22019-04-24 10:17:46 +0100819LayerTestResult<int16_t, 4> SqrtInt16Test(
820 armnn::IWorkloadFactory& workloadFactory,
821 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
822
konsof017f6db402019-06-07 15:15:58 +0100823LayerTestResult<float, 4> SquareTest(
824 armnn::IWorkloadFactory& workloadFactory,
825 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
826
827LayerTestResult<uint8_t, 4> SquareUint8Test(
828 armnn::IWorkloadFactory& workloadFactory,
829 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
830
Teresa Charlin18515e22019-04-24 10:17:46 +0100831LayerTestResult<int16_t, 4> SquareInt16Test(
832 armnn::IWorkloadFactory& workloadFactory,
833 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
834
konsof017f6db402019-06-07 15:15:58 +0100835LayerTestResult<float, 4> TanhTest(
836 armnn::IWorkloadFactory& workloadFactory,
837 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
838
839LayerTestResult<uint8_t, 4> TanhUint8Test(
840 armnn::IWorkloadFactory& workloadFactory,
841 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
842
Teresa Charlin18515e22019-04-24 10:17:46 +0100843LayerTestResult<int16_t, 4> TanhInt16Test(
844 armnn::IWorkloadFactory& workloadFactory,
845 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
846
847
Ellen Norris-Thompsonc4223d12019-06-10 14:15:12 +0100848/// Tests that the output should be identical to the input when the output dimensions match the input ones.
849template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
850LayerTestResult<T, 4> ResizeBilinearNopTest(
851 armnn::IWorkloadFactory& workloadFactory,
852 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
853 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000854
855// Tests the behaviour of the resize bilinear operation when rescaling a 2x2 image into a 1x1 image.
Ellen Norris-Thompsonc4223d12019-06-10 14:15:12 +0100856template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
857LayerTestResult<T, 4> SimpleResizeBilinearTest(
858 armnn::IWorkloadFactory& workloadFactory,
859 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
860 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000861
862// Tests the resize bilinear for minification of a square input matrix (also: input dimensions are a
863// multiple of output dimensions).
Ellen Norris-Thompsonc4223d12019-06-10 14:15:12 +0100864template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
865LayerTestResult<T, 4> ResizeBilinearSqMinTest(
866 armnn::IWorkloadFactory& workloadFactory,
867 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
868 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000869
870// Tests the resize bilinear for minification (output dimensions smaller than input dimensions).
Ellen Norris-Thompsonc4223d12019-06-10 14:15:12 +0100871template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
872LayerTestResult<T, 4> ResizeBilinearMinTest(
873 armnn::IWorkloadFactory& workloadFactory,
874 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
875 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000876
877// Tests the resize bilinear for magnification (output dimensions bigger than input dimensions).
Ellen Norris-Thompsonc4223d12019-06-10 14:15:12 +0100878template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
879LayerTestResult<T, 4> ResizeBilinearMagTest(
880 armnn::IWorkloadFactory& workloadFactory,
881 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
882 const armnn::DataLayout dataLayout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000883
nikraj0193f84a92019-06-05 10:48:46 +0100884template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
885LayerTestResult<T, 2> Rsqrt2dTestCommon(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000886 armnn::IWorkloadFactory& workloadFactory,
887 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
888 const armnn::TensorInfo inputTensorInfo,
889 const armnn::TensorInfo outputTensorInfo,
nikraj010421e7f2019-06-14 09:40:34 +0100890 const std::vector<float>& inputValues,
891 const std::vector<float>& expectedOutputValues);
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000892
nikraj0193f84a92019-06-05 10:48:46 +0100893template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
894LayerTestResult<T, 2> Rsqrt2dTest(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000895 armnn::IWorkloadFactory& workloadFactory,
896 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
897
nikraj0193f84a92019-06-05 10:48:46 +0100898template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
899LayerTestResult<T, 3> Rsqrt3dTest(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000900 armnn::IWorkloadFactory& workloadFactory,
901 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
902
nikraj0193f84a92019-06-05 10:48:46 +0100903template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
904LayerTestResult<T, 2> RsqrtZeroTest(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000905 armnn::IWorkloadFactory& workloadFactory,
906 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
907
nikraj0193f84a92019-06-05 10:48:46 +0100908template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
909LayerTestResult<T, 2> RsqrtNegativeTest(
Mohamed Nour Abouelseouda1d3c6a2018-12-27 12:39:16 +0000910 armnn::IWorkloadFactory& workloadFactory,
911 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
912
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000913LayerTestResult<float, 4> BatchNormTest(
914 armnn::IWorkloadFactory& workloadFactory,
915 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
916
917LayerTestResult<float, 4> BatchNormNhwcTest(
918 armnn::IWorkloadFactory& workloadFactory,
919 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
920
921LayerTestResult<float, 2> FakeQuantizationTest(
922 armnn::IWorkloadFactory& workloadFactory,
923 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
924
925LayerTestResult<float, 4> L2Normalization1dTest(
926 armnn::IWorkloadFactory& workloadFactory,
927 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000928 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000929
Ferran Balaguerd73d14f2019-06-10 10:29:54 +0100930LayerTestResult<int16_t, 4> L2Normalization1dInt16Test(
931 armnn::IWorkloadFactory& workloadFactory,
932 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
933 const armnn::DataLayout layout);
934
Ferran Balaguerc6138d82019-06-13 17:23:50 +0100935LayerTestResult<uint8_t, 4> L2Normalization1dUint8Test(
936 armnn::IWorkloadFactory& workloadFactory,
937 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
938 const armnn::DataLayout layout);
939
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000940LayerTestResult<float, 4> L2Normalization2dTest(
941 armnn::IWorkloadFactory& workloadFactory,
942 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000943 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000944
Ferran Balaguerd73d14f2019-06-10 10:29:54 +0100945LayerTestResult<int16_t, 4> L2Normalization2dInt16Test(
946 armnn::IWorkloadFactory& workloadFactory,
947 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
948 const armnn::DataLayout layout);
949
Ferran Balaguerc6138d82019-06-13 17:23:50 +0100950LayerTestResult<uint8_t, 4> L2Normalization2dUint8Test(
951 armnn::IWorkloadFactory& workloadFactory,
952 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
953 const armnn::DataLayout layout);
954
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000955LayerTestResult<float, 4> L2Normalization3dTest(
956 armnn::IWorkloadFactory& workloadFactory,
957 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000958 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000959
Ferran Balaguerd73d14f2019-06-10 10:29:54 +0100960LayerTestResult<int16_t, 4> L2Normalization3dInt16Test(
961 armnn::IWorkloadFactory& workloadFactory,
962 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
963 const armnn::DataLayout layout);
964
Ferran Balaguerc6138d82019-06-13 17:23:50 +0100965LayerTestResult<uint8_t, 4> L2Normalization3dUint8Test(
966 armnn::IWorkloadFactory& workloadFactory,
967 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
968 const armnn::DataLayout layout);
969
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000970LayerTestResult<float, 4> L2Normalization4dTest(
971 armnn::IWorkloadFactory& workloadFactory,
972 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Matthew Bentham8800c002018-11-19 13:19:28 +0000973 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000974
Ferran Balaguerd73d14f2019-06-10 10:29:54 +0100975LayerTestResult<int16_t, 4> L2Normalization4dInt16Test(
976 armnn::IWorkloadFactory& workloadFactory,
977 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
978 const armnn::DataLayout layout);
979
Ferran Balaguerc6138d82019-06-13 17:23:50 +0100980LayerTestResult<uint8_t, 4> L2Normalization4dUint8Test(
981 armnn::IWorkloadFactory& workloadFactory,
982 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
983 const armnn::DataLayout layout);
984
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000985LayerTestResult<float, 4> ConstantTest(
986 armnn::IWorkloadFactory& workloadFactory,
987 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
988
Nina Drozd58ef2c62019-05-16 12:09:18 +0100989LayerTestResult<uint8_t, 4> ConstantUint8SimpleQuantizationScaleNoOffsetTest(
990 armnn::IWorkloadFactory& workloadFactory,
991 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
992
993LayerTestResult<int16_t, 4> ConstantInt16SimpleQuantizationScaleNoOffsetTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +0000994 armnn::IWorkloadFactory& workloadFactory,
995 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
996
997LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
998 armnn::IWorkloadFactory& workloadFactory,
999 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1000 float upperBound);
1001
1002LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(
1003 armnn::IWorkloadFactory& workloadFactory,
1004 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1005 float upperBound,
1006 float lowerBound);
1007
Francis Murtagh46c09d02019-05-28 08:15:28 +01001008template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1009LayerTestResult<T, 2> FullyConnectedTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001010 armnn::IWorkloadFactory& workloadFactory,
1011 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1012 bool biasEnabled);
1013
1014std::vector<LayerTestResult<uint8_t, 3>> SplitterUint8Test(
1015 armnn::IWorkloadFactory& workloadFactory,
1016 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1017
Ruomei Yan25339c32019-05-28 16:48:20 +01001018std::vector<LayerTestResult<int16_t, 3>> SplitterInt16Test(
1019 armnn::IWorkloadFactory& workloadFactory,
1020 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1021
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001022LayerTestResult<uint8_t, 3> CopyViaSplitterUint8Test(
1023 armnn::IWorkloadFactory& workloadFactory,
1024 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1025
Ruomei Yan25339c32019-05-28 16:48:20 +01001026LayerTestResult<int16_t, 3> CopyViaSplitterInt16Test(
1027 armnn::IWorkloadFactory& workloadFactory,
1028 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1029
Jim Flynn4ed6c832019-05-20 11:02:46 +01001030LayerTestResult<uint8_t, 3> ConcatUint8Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001031 armnn::IWorkloadFactory& workloadFactory,
1032 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1033
Jim Flynn4ed6c832019-05-20 11:02:46 +01001034LayerTestResult<uint16_t, 3> ConcatUint16Test(
Jim Flynncbb66aa2019-05-15 13:03:54 +01001035 armnn::IWorkloadFactory& workloadFactory,
1036 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1037
Jim Flynn4ed6c832019-05-20 11:02:46 +01001038LayerTestResult<uint8_t, 3> ConcatUint8DifferentQParamsTest(
Jim Flynncbb66aa2019-05-15 13:03:54 +01001039 armnn::IWorkloadFactory& workloadFactory,
1040 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Ferran Balaguerb2845652019-02-27 09:42:06 +00001041
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001042LayerTestResult<uint8_t, 4> AdditionUint8Test(
1043 armnn::IWorkloadFactory& workloadFactory,
1044 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1045
1046LayerTestResult<uint8_t, 4> AdditionBroadcast1ElementUint8Test(
1047 armnn::IWorkloadFactory& workloadFactory,
1048 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1049
1050LayerTestResult<uint8_t, 4> AdditionBroadcastUint8Test(
1051 armnn::IWorkloadFactory& workloadFactory,
1052 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1053
Sadik Armagan2999a022019-04-09 14:20:12 +01001054LayerTestResult<int16_t, 4> AdditionInt16Test(
1055 armnn::IWorkloadFactory& workloadFactory,
1056 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1057
1058LayerTestResult<int16_t, 4> AdditionBroadcastInt16Test(
1059 armnn::IWorkloadFactory& workloadFactory,
1060 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1061
1062LayerTestResult<int16_t, 4> AdditionBroadcast1ElementInt16Test(
1063 armnn::IWorkloadFactory& workloadFactory,
1064 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1065
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001066LayerTestResult<uint8_t, 4> SubtractionUint8Test(
1067 armnn::IWorkloadFactory& workloadFactory,
1068 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1069
1070LayerTestResult<uint8_t, 4> SubtractionBroadcast1ElementUint8Test(
1071 armnn::IWorkloadFactory& workloadFactory,
1072 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1073
1074LayerTestResult<uint8_t, 4> SubtractionBroadcastUint8Test(
1075 armnn::IWorkloadFactory& workloadFactory,
1076 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1077
Sadik Armagan2999a022019-04-09 14:20:12 +01001078LayerTestResult<int16_t, 4> SubtractionInt16Test(
1079 armnn::IWorkloadFactory& workloadFactory,
1080 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1081
1082LayerTestResult<int16_t, 4> SubtractionBroadcast1ElementInt16Test(
1083 armnn::IWorkloadFactory& workloadFactory,
1084 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1085
1086LayerTestResult<int16_t, 4> SubtractionBroadcastInt16Test(
1087 armnn::IWorkloadFactory& workloadFactory,
1088 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1089
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001090LayerTestResult<uint8_t, 4> CompareActivationUint8Test(
1091 armnn::IWorkloadFactory& workloadFactory,
1092 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1093 armnn::IWorkloadFactory& refWorkloadFactory,
1094 armnn::ActivationFunction f);
1095
Teresa Charlin18515e22019-04-24 10:17:46 +01001096LayerTestResult<int16_t, 4> CompareActivationInt16Test(
1097 armnn::IWorkloadFactory& workloadFactory,
1098 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1099 armnn::IWorkloadFactory& refWorkloadFactory,
1100 armnn::ActivationFunction f);
1101
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001102LayerTestResult<uint8_t, 2> CompareSoftmaxUint8Test(
1103 armnn::IWorkloadFactory& workloadFactory,
1104 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1105 armnn::IWorkloadFactory& refWorkloadFactory,
1106 float beta);
1107
1108LayerTestResult<uint8_t, 4> MultiplicationUint8Test(
1109 armnn::IWorkloadFactory& workloadFactory,
1110 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1111
1112LayerTestResult<uint8_t, 4> MultiplicationBroadcast1ElementUint8Test(
1113 armnn::IWorkloadFactory& workloadFactory,
1114 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1115
1116LayerTestResult<uint8_t, 4> MultiplicationBroadcast1DVectorUint8Test(
1117 armnn::IWorkloadFactory& workloadFactory,
1118 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1119
Sadik Armagan2999a022019-04-09 14:20:12 +01001120LayerTestResult<int16_t, 4> MultiplicationInt16Test(
1121 armnn::IWorkloadFactory& workloadFactory,
1122 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1123
1124LayerTestResult<int16_t, 4> MultiplicationBroadcast1ElementInt16Test(
1125 armnn::IWorkloadFactory& workloadFactory,
1126 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1127
1128LayerTestResult<int16_t, 4> MultiplicationBroadcast1DVectorInt16Test(
1129 armnn::IWorkloadFactory& workloadFactory,
1130 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1131
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001132LayerTestResult<uint8_t, 4> DivisionUint8Test(
1133 armnn::IWorkloadFactory& workloadFactory,
1134 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1135
1136LayerTestResult<uint8_t, 4> DivisionBroadcast1ElementUint8Test(
1137 armnn::IWorkloadFactory& workloadFactory,
1138 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1139
1140LayerTestResult<uint8_t, 4> DivisionBroadcast1DVectorUint8Test(
1141 armnn::IWorkloadFactory& workloadFactory,
1142 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1143
Sadik Armagan2999a022019-04-09 14:20:12 +01001144LayerTestResult<int16_t, 4> DivisionInt16Test(
1145 armnn::IWorkloadFactory& workloadFactory,
1146 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1147
1148LayerTestResult<int16_t, 4> DivisionBroadcast1ElementInt16Test(
1149 armnn::IWorkloadFactory& workloadFactory,
1150 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1151
1152LayerTestResult<int16_t, 4> DivisionBroadcast1DVectorInt16Test(
1153 armnn::IWorkloadFactory& workloadFactory,
1154 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1155
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001156LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test(
1157 armnn::IWorkloadFactory& workloadFactory,
1158 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1159 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +00001160 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001161
1162LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test(
1163 armnn::IWorkloadFactory& workloadFactory,
1164 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1165 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +00001166 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001167
Mike Kelly2f80f6e2019-05-16 12:41:34 +01001168LayerTestResult<int16_t, 4> SimpleConvolution2d3x5QSymm16Test(
1169 armnn::IWorkloadFactory& workloadFactory,
1170 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1171 bool biasEnabled,
1172 const armnn::DataLayout layout);
1173
1174LayerTestResult<int16_t, 4> SimpleConvolution2d3x3QSymm16Test(
1175 armnn::IWorkloadFactory& workloadFactory,
1176 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1177 bool biasEnabled,
1178 const armnn::DataLayout layout);
1179
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001180LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test(
1181 armnn::IWorkloadFactory& workloadFactory,
1182 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1183 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +00001184 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001185
1186LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test(
1187 armnn::IWorkloadFactory& workloadFactory,
1188 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1189 bool biasEnabled,
Matthew Bentham8800c002018-11-19 13:19:28 +00001190 const armnn::DataLayout layout);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001191
Ruomei Yan88d44b82019-05-23 14:29:06 +01001192LayerTestResult<int16_t, 4> DepthwiseConvolution2dInt16Test(
1193 armnn::IWorkloadFactory& workloadFactory,
1194 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1195 bool biasEnabled,
1196 const armnn::DataLayout layout);
1197
1198LayerTestResult<int16_t, 4> DepthwiseConvolution2dDepthMul1Int16Test(
1199 armnn::IWorkloadFactory& workloadFactory,
1200 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1201 bool biasEnabled,
1202 const armnn::DataLayout layout);
1203
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001204LayerTestResult<uint8_t, 4> ConstantLinearActivationUint8Test(
1205 armnn::IWorkloadFactory& workloadFactory,
1206 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1207
Teresa Charlin18515e22019-04-24 10:17:46 +01001208LayerTestResult<int16_t, 4> ConstantLinearActivationInt16Test(
1209 armnn::IWorkloadFactory& workloadFactory,
1210 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1211
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001212LayerTestResult<uint8_t, 4> BatchNormUint8Test(
1213 armnn::IWorkloadFactory& workloadFactory,
1214 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1215
1216LayerTestResult<uint8_t, 4> BatchNormUint8NhwcTest(
1217 armnn::IWorkloadFactory& workloadFactory,
1218 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1219
Matteo Martincighf5507132019-06-04 10:59:47 +01001220LayerTestResult<int16_t, 4> BatchNormInt16Test(
1221 armnn::IWorkloadFactory& workloadFactory,
1222 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1223
1224LayerTestResult<int16_t, 4> BatchNormInt16NhwcTest(
1225 armnn::IWorkloadFactory& workloadFactory,
1226 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1227
Nina Drozd58ef2c62019-05-16 12:09:18 +01001228LayerTestResult<uint8_t, 4> ConstantUint8CustomQuantizationScaleAndOffsetTest(
1229 armnn::IWorkloadFactory& workloadFactory,
1230 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1231
1232LayerTestResult<int16_t, 4> ConstantInt16CustomQuantizationScaleAndOffsetTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001233 armnn::IWorkloadFactory& workloadFactory,
1234 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1235
1236LayerTestResult<uint8_t, 1> Concatenation1dUint8Test(
1237 armnn::IWorkloadFactory& workloadFactory,
1238 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1239
1240LayerTestResult<uint8_t, 2> Concatenation2dDim0Uint8Test(
1241 armnn::IWorkloadFactory& workloadFactory,
1242 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1243
1244LayerTestResult<uint8_t, 2> Concatenation2dDim1Uint8Test(
1245 armnn::IWorkloadFactory& workloadFactory,
1246 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1247
1248LayerTestResult<uint8_t, 2> Concatenation2dDim0DiffInputDimsUint8Test(
1249 armnn::IWorkloadFactory& workloadFactory,
1250 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1251
1252LayerTestResult<uint8_t, 2> Concatenation2dDim1DiffInputDimsUint8Test(
1253 armnn::IWorkloadFactory& workloadFactory,
1254 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1255
1256LayerTestResult<uint8_t, 3> Concatenation3dDim0Uint8Test(
1257 armnn::IWorkloadFactory& workloadFactory,
1258 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1259
1260LayerTestResult<uint8_t, 3> Concatenation3dDim1Uint8Test(
1261 armnn::IWorkloadFactory& workloadFactory,
1262 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1263
1264LayerTestResult<uint8_t, 3> Concatenation3dDim2Uint8Test(
1265 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +00001266 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1267 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001268
1269LayerTestResult<uint8_t, 3> Concatenation3dDim0DiffInputDimsUint8Test(
1270 armnn::IWorkloadFactory& workloadFactory,
1271 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1272
1273LayerTestResult<uint8_t, 3> Concatenation3dDim1DiffInputDimsUint8Test(
1274 armnn::IWorkloadFactory& workloadFactory,
1275 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1276
1277LayerTestResult<uint8_t, 3> Concatenation3dDim2DiffInputDimsUint8Test(
1278 armnn::IWorkloadFactory& workloadFactory,
narpra015cdda352018-11-19 15:30:27 +00001279 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1280 bool useSubtensor);
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001281
kevmay012b4d88e2019-01-24 14:05:09 +00001282LayerTestResult<uint8_t, 4> EqualSimpleTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001283 armnn::IWorkloadFactory& workloadFactory,
1284 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1285
kevmay012b4d88e2019-01-24 14:05:09 +00001286LayerTestResult<uint8_t, 4> EqualBroadcast1ElementTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001287 armnn::IWorkloadFactory& workloadFactory,
1288 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1289
kevmay012b4d88e2019-01-24 14:05:09 +00001290LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorTest(
FrancisMurtagh30cdfca2018-12-18 12:57:35 +00001291 armnn::IWorkloadFactory& workloadFactory,
1292 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1293
1294LayerTestResult<uint8_t, 4> EqualUint8Test(
1295 armnn::IWorkloadFactory& workloadFactory,
1296 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1297
1298LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
1299 armnn::IWorkloadFactory& workloadFactory,
1300 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1301
1302LayerTestResult<uint8_t, 4> EqualBroadcast1DVectorUint8Test(
1303 armnn::IWorkloadFactory& workloadFactory,
1304 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1305
kevmay012b4d88e2019-01-24 14:05:09 +00001306LayerTestResult<uint8_t, 4> GreaterSimpleTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001307 armnn::IWorkloadFactory& workloadFactory,
1308 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1309
kevmay012b4d88e2019-01-24 14:05:09 +00001310LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001311 armnn::IWorkloadFactory& workloadFactory,
1312 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1313
kevmay012b4d88e2019-01-24 14:05:09 +00001314LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorTest(
FrancisMurtagh878f0232018-12-19 10:56:15 +00001315 armnn::IWorkloadFactory& workloadFactory,
1316 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1317
1318LayerTestResult<uint8_t, 4> GreaterUint8Test(
1319 armnn::IWorkloadFactory& workloadFactory,
1320 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1321
1322LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
1323 armnn::IWorkloadFactory& workloadFactory,
1324 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1325
1326LayerTestResult<uint8_t, 4> GreaterBroadcast1DVectorUint8Test(
1327 armnn::IWorkloadFactory& workloadFactory,
1328 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1329
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001330LayerTestResult<float, 2> FullyConnectedLargeTest(
1331 armnn::IWorkloadFactory& workloadFactory,
1332 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1333 bool transposeWeights);
1334
1335LayerTestResult<float, 4> SimplePermuteFloat32Test(
1336 armnn::IWorkloadFactory& workloadFactory,
1337 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1338
1339LayerTestResult<uint8_t, 4> SimplePermuteUint8Test(
1340 armnn::IWorkloadFactory& workloadFactory,
1341 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1342
1343LayerTestResult<uint8_t, 2> PadUint82dTest(
1344 armnn::IWorkloadFactory& workloadFactory,
1345 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1346
1347LayerTestResult<uint8_t, 3> PadUint83dTest(
1348 armnn::IWorkloadFactory& workloadFactory,
1349 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1350
1351LayerTestResult<uint8_t, 4> PadUint84dTest(
1352 armnn::IWorkloadFactory& workloadFactory,
1353 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1354
1355LayerTestResult<float, 2> PadFloat322dTest(
1356 armnn::IWorkloadFactory& workloadFactory,
1357 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1358
1359LayerTestResult<float, 3> PadFloat323dTest(
1360 armnn::IWorkloadFactory& workloadFactory,
1361 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1362
1363LayerTestResult<float, 4> PadFloat324dTest(
1364 armnn::IWorkloadFactory& workloadFactory,
1365 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1366
1367LayerTestResult<float, 4> PermuteFloat32ValueSet1Test(
1368 armnn::IWorkloadFactory& workloadFactory,
1369 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1370
1371LayerTestResult<float, 4> PermuteFloat32ValueSet2Test(
1372 armnn::IWorkloadFactory& workloadFactory,
1373 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1374
1375LayerTestResult<float, 4> PermuteFloat32ValueSet3Test(
1376 armnn::IWorkloadFactory& workloadFactory,
1377 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1378
1379LayerTestResult<float, 2> LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest(
1380 armnn::IWorkloadFactory& workloadFactory,
1381 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1382
1383LayerTestResult<float, 2> LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest(
1384 armnn::IWorkloadFactory& workloadFactory,
1385 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1386
1387LayerTestResult<float, 2> LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest(
1388 armnn::IWorkloadFactory& workloadFactory,
1389 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1390
Conor Kennedyb9971c92019-05-07 07:14:23 +01001391LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionTest(
1392 armnn::IWorkloadFactory& workloadFactory,
1393 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1394
1395LayerTestResult<int16_t, 2> LstmLayerInt16WithCifgWithPeepholeNoProjectionTest(
1396 armnn::IWorkloadFactory& workloadFactory,
1397 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1398
1399LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgWithPeepholeWithProjectionTest(
1400 armnn::IWorkloadFactory& workloadFactory,
1401 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1402
1403LayerTestResult<int16_t, 2> LstmLayerInt16NoCifgNoPeepholeNoProjectionInt16ConstantTest(
1404 armnn::IWorkloadFactory& workloadFactory,
1405 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1406
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001407LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(
1408 armnn::IWorkloadFactory& workloadFactory,
1409 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1410
1411LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(
1412 armnn::IWorkloadFactory& workloadFactory,
1413 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1414
Éanna Ó Catháinde705582018-12-03 13:04:22 +00001415LayerTestResult<float, 4> MaximumSimpleTest(
1416 armnn::IWorkloadFactory& workloadFactory,
1417 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1418
1419LayerTestResult<float, 4> MaximumBroadcast1ElementTest(
1420 armnn::IWorkloadFactory& workloadFactory,
1421 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1422
1423LayerTestResult<float, 4> MaximumBroadcast1DVectorTest(
1424 armnn::IWorkloadFactory& workloadFactory,
1425 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1426
1427LayerTestResult<uint8_t , 4> MaximumUint8Test(
1428 armnn::IWorkloadFactory& workloadFactory,
1429 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1430
1431LayerTestResult<uint8_t, 4> MaximumBroadcast1ElementUint8Test(
1432 armnn::IWorkloadFactory& workloadFactory,
1433 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1434
1435LayerTestResult<uint8_t, 4> MaximumBroadcast1DVectorUint8Test(
1436 armnn::IWorkloadFactory& workloadFactory,
1437 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1438
Sadik Armagan2999a022019-04-09 14:20:12 +01001439LayerTestResult<int16_t , 4> MaximumInt16Test(
1440 armnn::IWorkloadFactory& workloadFactory,
1441 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1442
1443LayerTestResult<int16_t, 4> MaximumBroadcast1ElementInt16Test(
1444 armnn::IWorkloadFactory& workloadFactory,
1445 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1446
1447LayerTestResult<int16_t, 4> MaximumBroadcast1DVectorInt16Test(
1448 armnn::IWorkloadFactory& workloadFactory,
1449 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1450
James Conroy4d1ff582019-06-10 17:06:39 +01001451template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1452LayerTestResult<T, 1> MeanSimpleTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001453 armnn::IWorkloadFactory& workloadFactory,
1454 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1455
James Conroy4d1ff582019-06-10 17:06:39 +01001456template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1457LayerTestResult<T, 3> MeanSimpleAxisTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001458 armnn::IWorkloadFactory& workloadFactory,
1459 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1460
James Conroy4d1ff582019-06-10 17:06:39 +01001461template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1462LayerTestResult<T, 4> MeanKeepDimsTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001463 armnn::IWorkloadFactory& workloadFactory,
1464 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1465
James Conroy4d1ff582019-06-10 17:06:39 +01001466template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1467LayerTestResult<T, 4> MeanMultipleDimsTest(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001468 armnn::IWorkloadFactory& workloadFactory,
1469 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1470
James Conroy4d1ff582019-06-10 17:06:39 +01001471template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1472LayerTestResult<T, 1> MeanVts1Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001473 armnn::IWorkloadFactory& workloadFactory,
1474 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1475
James Conroy4d1ff582019-06-10 17:06:39 +01001476template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1477LayerTestResult<T, 3> MeanVts2Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001478 armnn::IWorkloadFactory& workloadFactory,
1479 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1480
James Conroy4d1ff582019-06-10 17:06:39 +01001481template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1482LayerTestResult<T, 3> MeanVts3Test(
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001483 armnn::IWorkloadFactory& workloadFactory,
1484 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1485
Éanna Ó Catháin20e58802018-12-04 10:29:06 +00001486LayerTestResult<float, 4> MinimumBroadcast1ElementTest1(
1487 armnn::IWorkloadFactory& workloadFactory,
1488 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1489
1490LayerTestResult<float, 4> MinimumBroadcast1ElementTest2(
1491 armnn::IWorkloadFactory& workloadFactory,
1492 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1493
1494LayerTestResult<uint8_t, 4> MinimumBroadcast1DVectorUint8Test(
1495 armnn::IWorkloadFactory & workloadFactory,
1496 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1497
Sadik Armagan2999a022019-04-09 14:20:12 +01001498LayerTestResult<int16_t , 4> MinimumInt16Test(
1499 armnn::IWorkloadFactory& workloadFactory,
1500 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1501
1502LayerTestResult<int16_t, 4> MinimumBroadcast1ElementInt16Test(
1503 armnn::IWorkloadFactory& workloadFactory,
1504 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1505
1506LayerTestResult<int16_t, 4> MinimumBroadcast1DVectorInt16Test(
1507 armnn::IWorkloadFactory& workloadFactory,
1508 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1509
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001510LayerTestResult<float, 4> AdditionAfterMaxPoolTest(
1511 armnn::IWorkloadFactory& workloadFactory,
1512 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1513
1514LayerTestResult<float, 4> SpaceToBatchNdSimpleFloat32Test(
1515 armnn::IWorkloadFactory& workloadFactory,
1516 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1517
1518LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsFloat32Test(
1519 armnn::IWorkloadFactory& workloadFactory,
1520 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1521
1522LayerTestResult<float, 4> SpaceToBatchNdMultiBlockFloat32Test(
1523 armnn::IWorkloadFactory& workloadFactory,
1524 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1525
1526LayerTestResult<float, 4> SpaceToBatchNdPaddingFloat32Test(
1527 armnn::IWorkloadFactory& workloadFactory,
1528 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1529
1530LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleUint8Test(
1531 armnn::IWorkloadFactory& workloadFactory,
1532 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1533
1534LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsUint8Test(
1535 armnn::IWorkloadFactory& workloadFactory,
1536 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1537
1538LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockUint8Test(
1539 armnn::IWorkloadFactory& workloadFactory,
1540 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1541
1542LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingUint8Test(
1543 armnn::IWorkloadFactory& workloadFactory,
1544 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1545
1546LayerTestResult<float, 4> SpaceToBatchNdSimpleNHWCFloat32Test(
1547 armnn::IWorkloadFactory& workloadFactory,
1548 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1549
1550LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsNHWCFloat32Test(
1551 armnn::IWorkloadFactory& workloadFactory,
1552 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1553
1554LayerTestResult<float, 4> SpaceToBatchNdMultiBlockNHWCFloat32Test(
1555 armnn::IWorkloadFactory& workloadFactory,
1556 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1557
1558LayerTestResult<float, 4> SpaceToBatchNdPaddingNHWCFloat32Test(
1559 armnn::IWorkloadFactory& workloadFactory,
1560 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1561
1562LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleNHWCUint8Test(
1563 armnn::IWorkloadFactory& workloadFactory,
1564 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1565
1566LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsNHWCUint8Test(
1567 armnn::IWorkloadFactory& workloadFactory,
1568 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1569
1570LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockNHWCUint8Test(
1571 armnn::IWorkloadFactory& workloadFactory,
1572 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1573
1574LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingNHWCUint8Test(
1575 armnn::IWorkloadFactory& workloadFactory,
1576 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1577
nikraj01120522a2019-05-31 11:33:07 +01001578LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleUint16Test(
1579 armnn::IWorkloadFactory& workloadFactory,
1580 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1581
1582LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsUint16Test(
1583 armnn::IWorkloadFactory& workloadFactory,
1584 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1585
1586LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockUint16Test(
1587 armnn::IWorkloadFactory& workloadFactory,
1588 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1589
1590LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingUint16Test(
1591 armnn::IWorkloadFactory& workloadFactory,
1592 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1593
1594LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleNHWCUint16Test(
1595 armnn::IWorkloadFactory& workloadFactory,
1596 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1597
1598LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsNHWCUint16Test(
1599 armnn::IWorkloadFactory& workloadFactory,
1600 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1601
1602LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockNHWCUint16Test(
1603 armnn::IWorkloadFactory& workloadFactory,
1604 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1605
1606LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingNHWCUint16Test(
1607 armnn::IWorkloadFactory& workloadFactory,
1608 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1609
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001610LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test1(
1611 armnn::IWorkloadFactory& workloadFactory,
1612 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1613
1614LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test2(
1615 armnn::IWorkloadFactory& workloadFactory,
1616 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1617
1618LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test3(
1619 armnn::IWorkloadFactory& workloadFactory,
1620 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1621
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001622LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test4(
1623 armnn::IWorkloadFactory& workloadFactory,
1624 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1625
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001626LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test1(
1627 armnn::IWorkloadFactory &workloadFactory,
1628 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1629
Mike Kelly831faed2018-11-28 11:52:08 +00001630LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001631 armnn::IWorkloadFactory &workloadFactory,
1632 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001633
1634LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001635 armnn::IWorkloadFactory &workloadFactory,
1636 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001637
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +00001638LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest1(
1639 armnn::IWorkloadFactory &workloadFactory,
1640 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001641
Mike Kelly831faed2018-11-28 11:52:08 +00001642LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001643 armnn::IWorkloadFactory &workloadFactory,
1644 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001645
1646LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001647 armnn::IWorkloadFactory &workloadFactory,
1648 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001649
1650LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest1(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001651 armnn::IWorkloadFactory &workloadFactory,
1652 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001653
1654LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest2(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001655 armnn::IWorkloadFactory &workloadFactory,
1656 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001657
1658LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest3(
Nattapat Chaimanowong3ee14222019-02-27 10:28:09 +00001659 armnn::IWorkloadFactory &workloadFactory,
1660 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1661
1662LayerTestResult<uint8_t, 4> BatchToSpaceNdNchwUintTest4(
1663 armnn::IWorkloadFactory &workloadFactory,
1664 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Mike Kelly831faed2018-11-28 11:52:08 +00001665
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001666LayerTestResult<float, 4> StridedSlice4DFloat32Test(
1667 armnn::IWorkloadFactory& workloadFactory,
1668 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001669
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001670LayerTestResult<float, 4> StridedSlice4DReverseFloat32Test(
1671 armnn::IWorkloadFactory& workloadFactory,
1672 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1673
1674LayerTestResult<float, 4> StridedSliceSimpleStrideFloat32Test(
1675 armnn::IWorkloadFactory& workloadFactory,
1676 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1677
1678LayerTestResult<float, 4> StridedSliceSimpleRangeMaskFloat32Test(
1679 armnn::IWorkloadFactory& workloadFactory,
1680 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1681
1682LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test(
1683 armnn::IWorkloadFactory& workloadFactory,
1684 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1685
1686LayerTestResult<float, 3> StridedSlice3DFloat32Test(
1687 armnn::IWorkloadFactory& workloadFactory,
1688 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1689
1690LayerTestResult<float, 3> StridedSlice3DReverseFloat32Test(
1691 armnn::IWorkloadFactory& workloadFactory,
1692 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1693
1694LayerTestResult<float, 2> StridedSlice2DFloat32Test(
1695 armnn::IWorkloadFactory& workloadFactory,
1696 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1697
1698LayerTestResult<float, 2> StridedSlice2DReverseFloat32Test(
1699 armnn::IWorkloadFactory& workloadFactory,
1700 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1701
1702LayerTestResult<uint8_t, 4> StridedSlice4DUint8Test(
1703 armnn::IWorkloadFactory& workloadFactory,
1704 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1705
1706LayerTestResult<uint8_t, 4> StridedSlice4DReverseUint8Test(
1707 armnn::IWorkloadFactory& workloadFactory,
1708 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1709
1710LayerTestResult<uint8_t, 4> StridedSliceSimpleStrideUint8Test(
1711 armnn::IWorkloadFactory& workloadFactory,
1712 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1713
1714LayerTestResult<uint8_t, 4> StridedSliceSimpleRangeMaskUint8Test(
1715 armnn::IWorkloadFactory& workloadFactory,
1716 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1717
1718LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test(
1719 armnn::IWorkloadFactory& workloadFactory,
1720 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1721
1722LayerTestResult<uint8_t, 3> StridedSlice3DUint8Test(
1723 armnn::IWorkloadFactory& workloadFactory,
1724 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1725
1726LayerTestResult<uint8_t, 3> StridedSlice3DReverseUint8Test(
1727 armnn::IWorkloadFactory& workloadFactory,
1728 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1729
1730LayerTestResult<uint8_t, 2> StridedSlice2DUint8Test(
1731 armnn::IWorkloadFactory& workloadFactory,
1732 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1733
1734LayerTestResult<uint8_t, 2> StridedSlice2DReverseUint8Test(
1735 armnn::IWorkloadFactory& workloadFactory,
1736 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001737
Matteo Martincigh42666a12019-05-29 08:53:41 +01001738LayerTestResult<int16_t, 4> StridedSlice4DInt16Test(
1739 armnn::IWorkloadFactory& workloadFactory,
1740 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1741
1742LayerTestResult<int16_t, 4> StridedSlice4DReverseInt16Test(
1743 armnn::IWorkloadFactory& workloadFactory,
1744 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1745
1746LayerTestResult<int16_t, 4> StridedSliceSimpleStrideInt16Test(
1747 armnn::IWorkloadFactory& workloadFactory,
1748 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1749
1750LayerTestResult<int16_t, 4> StridedSliceSimpleRangeMaskInt16Test(
1751 armnn::IWorkloadFactory& workloadFactory,
1752 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1753
1754LayerTestResult<int16_t, 2> StridedSliceShrinkAxisMaskInt16Test(
1755 armnn::IWorkloadFactory& workloadFactory,
1756 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1757
1758LayerTestResult<int16_t, 3> StridedSlice3DInt16Test(
1759 armnn::IWorkloadFactory& workloadFactory,
1760 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1761
1762LayerTestResult<int16_t, 3> StridedSlice3DReverseInt16Test(
1763 armnn::IWorkloadFactory& workloadFactory,
1764 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1765
1766LayerTestResult<int16_t, 2> StridedSlice2DInt16Test(
1767 armnn::IWorkloadFactory& workloadFactory,
1768 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1769
1770LayerTestResult<int16_t, 2> StridedSlice2DReverseInt16Test(
1771 armnn::IWorkloadFactory& workloadFactory,
1772 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1773
Nattapat Chaimanowongcfdcadf2018-12-06 11:54:33 +00001774LayerTestResult<float, 4> Debug4DFloat32Test(
1775 armnn::IWorkloadFactory& workloadFactory,
1776 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1777
1778LayerTestResult<float, 3> Debug3DFloat32Test(
1779 armnn::IWorkloadFactory& workloadFactory,
1780 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1781
1782LayerTestResult<float, 2> Debug2DFloat32Test(
1783 armnn::IWorkloadFactory& workloadFactory,
1784 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1785
1786LayerTestResult<float, 1> Debug1DFloat32Test(
1787 armnn::IWorkloadFactory& workloadFactory,
1788 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1789
1790LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1791 armnn::IWorkloadFactory& workloadFactory,
1792 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1793
1794LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1795 armnn::IWorkloadFactory& workloadFactory,
1796 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1797
1798LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1799 armnn::IWorkloadFactory& workloadFactory,
1800 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1801
1802LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1803 armnn::IWorkloadFactory& workloadFactory,
1804 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Matteo Martincigh49124022019-01-11 13:25:59 +00001805
1806LayerTestResult<uint8_t, 4> PreCompiledConvolution2dTest(
1807 armnn::IWorkloadFactory& workloadFactory,
1808 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1809
1810LayerTestResult<uint8_t, 4> PreCompiledConvolution2dStride2x2Test(
1811 armnn::IWorkloadFactory& workloadFactory,
1812 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1813
1814LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dTest(
1815 armnn::IWorkloadFactory & workloadFactory,
1816 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1817
1818LayerTestResult<uint8_t, 4> PreCompiledDepthwiseConvolution2dStride2x2Test(
1819 armnn::IWorkloadFactory & workloadFactory,
1820 const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager);
1821
1822LayerTestResult<uint8_t, 4> PreCompiledMaxPooling2dTest(
1823 armnn::IWorkloadFactory& workloadFactory,
1824 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1825
1826LayerTestResult<float, 4> Debug4DFloat32Test(
1827 armnn::IWorkloadFactory& workloadFactory,
1828 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1829
1830LayerTestResult<float, 3> Debug3DFloat32Test(
1831 armnn::IWorkloadFactory& workloadFactory,
1832 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1833
1834LayerTestResult<float, 2> Debug2DFloat32Test(
1835 armnn::IWorkloadFactory& workloadFactory,
1836 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1837
1838LayerTestResult<float, 1> Debug1DFloat32Test(
1839 armnn::IWorkloadFactory& workloadFactory,
1840 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1841
1842LayerTestResult<uint8_t, 4> Debug4DUint8Test(
1843 armnn::IWorkloadFactory& workloadFactory,
1844 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1845
1846LayerTestResult<uint8_t, 3> Debug3DUint8Test(
1847 armnn::IWorkloadFactory& workloadFactory,
1848 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1849
1850LayerTestResult<uint8_t, 2> Debug2DUint8Test(
1851 armnn::IWorkloadFactory& workloadFactory,
1852 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1853
1854LayerTestResult<uint8_t, 1> Debug1DUint8Test(
1855 armnn::IWorkloadFactory& workloadFactory,
1856 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
narpra014951d842019-01-18 16:53:53 +00001857
1858LayerTestResult<float, 1> Gather1DParamsFloatTest(
1859 armnn::IWorkloadFactory& workloadFactory,
1860 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1861
1862LayerTestResult<uint8_t, 1> Gather1DParamsUint8Test(
1863 armnn::IWorkloadFactory& workloadFactory,
1864 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1865
1866LayerTestResult<float, 2> GatherMultiDimParamsFloatTest(
1867 armnn::IWorkloadFactory& workloadFactory,
1868 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1869
1870LayerTestResult<uint8_t, 2> GatherMultiDimParamsUint8Test(
1871 armnn::IWorkloadFactory& workloadFactory,
1872 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1873
1874LayerTestResult<float, 4> GatherMultiDimParamsMultiDimIndicesFloatTest(
1875 armnn::IWorkloadFactory& workloadFactory,
1876 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1877
1878LayerTestResult<uint8_t, 4> GatherMultiDimParamsMultiDimIndicesUint8Test(
1879 armnn::IWorkloadFactory& workloadFactory,
1880 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowong8a54ac02019-03-29 15:25:04 +00001881
Nattapat Chaimanowongafa4e3a2019-04-02 11:41:45 +01001882LayerTestResult<float, 4> DequantizeSimpleUint8Test(
1883 armnn::IWorkloadFactory& workloadFactory,
1884 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1885
1886LayerTestResult<float, 4> DequantizeOffsetUint8Test(
1887 armnn::IWorkloadFactory& workloadFactory,
1888 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1889
1890LayerTestResult<float, 4> DequantizeSimpleInt16Test(
Nattapat Chaimanowong8a54ac02019-03-29 15:25:04 +00001891 armnn::IWorkloadFactory& workloadFactory,
1892 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Nattapat Chaimanowonga0beb3b2019-04-01 17:04:53 +01001893
1894LayerTestResult<uint8_t, 4> QuantizeSimpleUint8Test(
1895 armnn::IWorkloadFactory& workloadFactory,
1896 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1897
1898LayerTestResult<uint8_t, 4> QuantizeClampUint8Test(
1899 armnn::IWorkloadFactory& workloadFactory,
1900 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
1901
1902LayerTestResult<int16_t, 4> QuantizeClampInt16Test(
1903 armnn::IWorkloadFactory& workloadFactory,
1904 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
Francis Murtagh46c09d02019-05-28 08:15:28 +01001905
1906template<typename T, typename B>
1907LayerTestResult<T, 2> SimpleFullyConnectedTestImpl(
1908 armnn::IWorkloadFactory& workloadFactory,
1909 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1910 armnn::TensorInfo inputTensorInfo,
1911 armnn::TensorInfo outputTensorInfo,
1912 armnn::TensorInfo weightsDesc,
1913 armnn::TensorInfo biasesDesc,
1914 boost::multi_array<T, 2>& weights,
1915 boost::multi_array<B, 1>& bias,
1916 boost::multi_array<T, 4>& input,
1917 bool biasEnabled,
1918 bool transposeWeights)
1919{
1920 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1921 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1922
1923 armnn::FullyConnectedQueueDescriptor data;
1924 armnn::WorkloadInfo info;
1925 armnn::ScopedCpuTensorHandle weightsTensor(weightsDesc);
1926 armnn::ScopedCpuTensorHandle biasTensor(biasesDesc);
1927
1928 AllocateAndCopyDataToITensorHandle(&weightsTensor, &weights[0][0]);
1929 AllocateAndCopyDataToITensorHandle(&biasTensor, &bias[0]);
1930
1931 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
1932 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
1933 data.m_Weight = &weightsTensor;
1934 data.m_Bias = &biasTensor;
1935 data.m_Parameters.m_BiasEnabled = biasEnabled;
1936 data.m_Parameters.m_TransposeWeightMatrix = transposeWeights;
1937
1938 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFullyConnected(data, info);
1939 LayerTestResult<T, 2> result(outputTensorInfo);
1940
1941 inputHandle->Allocate();
1942 outputHandle->Allocate();
1943 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
1944
1945 ExecuteWorkload(*workload, memoryManager);
1946
1947 CopyDataFromITensorHandle(&result.output[0][0], outputHandle.get());
1948
1949 return result;
1950}
1951
1952template <armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
1953std::vector<T> ConvertToDataType(const std::vector<float>& input,
1954 const armnn::TensorInfo& inputTensorInfo)
1955{
1956 std::vector<T> output(input.size());
1957 auto outputTensorInfo = inputTensorInfo;
1958 outputTensorInfo.SetDataType(ArmnnType);
1959
1960 std::unique_ptr<armnn::Encoder<float>> pOutputEncoder = armnn::MakeEncoder<float>(outputTensorInfo, output.data());
1961 armnn::Encoder<float>& rOutputEncoder = *pOutputEncoder;
1962
1963 for (auto it = input.begin(); it != input.end(); ++it)
1964 {
1965 rOutputEncoder.Set(*it);
1966 ++rOutputEncoder;
1967 }
1968 return output;
1969}
1970
nikraj010421e7f2019-06-14 09:40:34 +01001971template<armnn::DataType ArmnnType, typename T>
nikraj0193f84a92019-06-05 10:48:46 +01001972LayerTestResult<T, 2> Rsqrt2dTestCommon(
1973 armnn::IWorkloadFactory& workloadFactory,
1974 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1975 const armnn::TensorInfo inputTensorInfo,
1976 const armnn::TensorInfo outputTensorInfo,
nikraj010421e7f2019-06-14 09:40:34 +01001977 const std::vector<float>& inputValues,
1978 const std::vector<float>& expectedOutputValues)
nikraj0193f84a92019-06-05 10:48:46 +01001979{
nikraj010421e7f2019-06-14 09:40:34 +01001980 auto inputTensor = MakeTensor<T, 2>(inputTensorInfo, ConvertToDataType<ArmnnType>(inputValues,inputTensorInfo));
nikraj0193f84a92019-06-05 10:48:46 +01001981
1982 LayerTestResult<T, 2> result(outputTensorInfo);
nikraj010421e7f2019-06-14 09:40:34 +01001983
1984 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
1985 ConvertToDataType<ArmnnType>(expectedOutputValues,outputTensorInfo));
nikraj0193f84a92019-06-05 10:48:46 +01001986
1987 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
1988 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
1989
1990 armnn::RsqrtQueueDescriptor descriptor;
1991
1992 armnn::WorkloadInfo info;
1993
1994 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
1995 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
1996
1997 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateRsqrt(descriptor, info);
1998
1999 inputHandle->Allocate();
2000 outputHandle->Allocate();
2001
2002 CopyDataToITensorHandle(inputHandle.get(), &inputTensor[0][0]);
2003
2004 workload->PostAllocationConfigure();
2005 workload->Execute();
2006
2007 CopyDataFromITensorHandle(&result.output[0][0], outputHandle.get());
2008
2009 return result;
2010}
2011
2012template<armnn::DataType ArmnnType, typename T>
2013LayerTestResult<T, 2> Rsqrt2dTest(
2014 armnn::IWorkloadFactory& workloadFactory,
2015 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2016{
2017 const armnn::TensorShape inputShape{ 2, 2 };
2018 const armnn::TensorShape outputShape{ 2, 2 };
2019
nikraj010421e7f2019-06-14 09:40:34 +01002020 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
2021 inputTensorInfo.SetQuantizationScale(0.1f);
2022 inputTensorInfo.SetQuantizationOffset(0);
nikraj0193f84a92019-06-05 10:48:46 +01002023
nikraj010421e7f2019-06-14 09:40:34 +01002024 armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType);
2025 outputTensorInfo.SetQuantizationScale(0.1f);
2026 outputTensorInfo.SetQuantizationOffset(0);
nikraj0193f84a92019-06-05 10:48:46 +01002027
nikraj010421e7f2019-06-14 09:40:34 +01002028 std::vector<float> inputValues
2029 {
2030 1.f, 4.f,
2031 16.f, 25.f
2032 };
nikraj0193f84a92019-06-05 10:48:46 +01002033
nikraj010421e7f2019-06-14 09:40:34 +01002034 std::vector<float> expectedOutputValues
2035 {
2036 1.f, 0.5f,
2037 0.25f, 0.2f
2038 };
2039
2040 return Rsqrt2dTestCommon<ArmnnType>(workloadFactory, memoryManager,
nikraj0193f84a92019-06-05 10:48:46 +01002041 inputTensorInfo, outputTensorInfo,
2042 inputValues, expectedOutputValues);
2043}
2044
2045template<armnn::DataType ArmnnType, typename T>
2046LayerTestResult<T, 3> Rsqrt3dTest(
2047 armnn::IWorkloadFactory& workloadFactory,
2048 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2049{
2050 const armnn::TensorShape inputShape{ 3, 1, 2 };
2051 const armnn::TensorShape outputShape{ 3, 1, 2 };
2052
nikraj010421e7f2019-06-14 09:40:34 +01002053 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
2054 inputTensorInfo.SetQuantizationScale(0.1f);
2055 inputTensorInfo.SetQuantizationOffset(0);
nikraj0193f84a92019-06-05 10:48:46 +01002056
nikraj010421e7f2019-06-14 09:40:34 +01002057 armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType);
2058 outputTensorInfo.SetQuantizationScale(0.1f);
2059 outputTensorInfo.SetQuantizationOffset(0);
nikraj0193f84a92019-06-05 10:48:46 +01002060
nikraj010421e7f2019-06-14 09:40:34 +01002061 std::vector<float> inputValues
2062 {
2063 1.f, 4.f, 16.f,
2064 25.f, 64.f, 100.f
2065 };
nikraj0193f84a92019-06-05 10:48:46 +01002066
nikraj010421e7f2019-06-14 09:40:34 +01002067 std::vector<float> expectedOutputValues
2068 {
2069 1.f, 0.5f, 0.25f,
2070 0.2f, 0.125f, 0.1f
2071 };
2072
2073 auto inputTensor = MakeTensor<T, 3>(inputTensorInfo, ConvertToDataType<ArmnnType>(inputValues,inputTensorInfo));
nikraj0193f84a92019-06-05 10:48:46 +01002074
2075 LayerTestResult<T, 3> result(outputTensorInfo);
nikraj010421e7f2019-06-14 09:40:34 +01002076 result.outputExpected = MakeTensor<T, 3>(outputTensorInfo,
2077 ConvertToDataType<ArmnnType>(expectedOutputValues,outputTensorInfo));
nikraj0193f84a92019-06-05 10:48:46 +01002078
2079 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2080 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2081
2082 armnn::RsqrtQueueDescriptor descriptor;
2083
2084 armnn::WorkloadInfo info;
2085
2086 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
2087 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
2088
2089 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateRsqrt(descriptor, info);
2090
2091 inputHandle->Allocate();
2092 outputHandle->Allocate();
2093
2094 CopyDataToITensorHandle(inputHandle.get(), &inputTensor[0][0][0]);
2095
2096 workload->PostAllocationConfigure();
2097 workload->Execute();
2098
2099 CopyDataFromITensorHandle(&result.output[0][0][0], outputHandle.get());
2100
2101 return result;
2102}
2103
2104template<armnn::DataType ArmnnType, typename T>
2105LayerTestResult<T, 2> RsqrtZeroTest(
2106 armnn::IWorkloadFactory& workloadFactory,
2107 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2108{
2109 const armnn::TensorShape inputShape{ 1, 2 };
2110 const armnn::TensorShape outputShape{ 1, 2 };
2111
nikraj010421e7f2019-06-14 09:40:34 +01002112 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
2113 inputTensorInfo.SetQuantizationScale(0.1f);
nikraj0193f84a92019-06-05 10:48:46 +01002114
nikraj010421e7f2019-06-14 09:40:34 +01002115 armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType);
2116 outputTensorInfo.SetQuantizationScale(0.1f);
nikraj0193f84a92019-06-05 10:48:46 +01002117
nikraj010421e7f2019-06-14 09:40:34 +01002118 std::vector<float> inputValues
2119 {
2120 0.f, -0.f
2121 };
nikraj0193f84a92019-06-05 10:48:46 +01002122
nikraj010421e7f2019-06-14 09:40:34 +01002123 std::vector<float> expectedOutputValues
2124 {
2125 INFINITY, -INFINITY
2126 };
2127
2128 return Rsqrt2dTestCommon<ArmnnType>(workloadFactory, memoryManager,
nikraj0193f84a92019-06-05 10:48:46 +01002129 inputTensorInfo, outputTensorInfo,
2130 inputValues, expectedOutputValues);
2131}
2132
2133template<armnn::DataType ArmnnType, typename T>
2134LayerTestResult<T, 2> RsqrtNegativeTest(
2135 armnn::IWorkloadFactory& workloadFactory,
2136 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2137{
2138 const armnn::TensorShape inputShape{ 1, 2 };
2139 const armnn::TensorShape outputShape{ 1, 2 };
2140
nikraj010421e7f2019-06-14 09:40:34 +01002141 armnn::TensorInfo inputTensorInfo(inputShape, ArmnnType);
2142 inputTensorInfo.SetQuantizationScale(0.1f);
2143 inputTensorInfo.SetQuantizationOffset(0);
nikraj0193f84a92019-06-05 10:48:46 +01002144
nikraj010421e7f2019-06-14 09:40:34 +01002145 armnn::TensorInfo outputTensorInfo(outputShape, ArmnnType);
2146 outputTensorInfo.SetQuantizationScale(0.1f);
2147 outputTensorInfo.SetQuantizationOffset(0);
nikraj0193f84a92019-06-05 10:48:46 +01002148
nikraj010421e7f2019-06-14 09:40:34 +01002149 std::vector<float> inputValues
2150 {
2151 -25.f, -16.f
2152 };
nikraj0193f84a92019-06-05 10:48:46 +01002153
nikraj010421e7f2019-06-14 09:40:34 +01002154 std::vector<float> expectedOutputValues
2155 {
2156 -NAN, -NAN
2157 };
2158
2159 return Rsqrt2dTestCommon<ArmnnType>(workloadFactory, memoryManager,
nikraj0193f84a92019-06-05 10:48:46 +01002160 inputTensorInfo, outputTensorInfo,
2161 inputValues, expectedOutputValues);
2162}
2163
2164template<typename T>
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01002165LayerTestResult<T, 4> SimpleReshapeTestImpl(
2166 armnn::IWorkloadFactory& workloadFactory,
2167 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2168 armnn::TensorInfo inputTensorInfo,
2169 armnn::TensorInfo outputTensorInfo,
2170 const std::vector<T>& inputData,
2171 const std::vector<T>& outputExpectedData)
2172{
2173 auto input = MakeTensor<T, 4>(inputTensorInfo, inputData);
2174
2175 LayerTestResult<T, 4> ret(outputTensorInfo);
2176 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, outputExpectedData);
2177
2178 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2179 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2180
2181 armnn::ReshapeQueueDescriptor data;
2182 armnn::WorkloadInfo info;
2183 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
2184 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
2185
2186 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateReshape(data, info);
2187
2188 inputHandle->Allocate();
2189 outputHandle->Allocate();
2190
2191 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2192
2193 workload->Execute();
2194
2195 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
2196
2197 return ret;
2198}
2199
Francis Murtagh46c09d02019-05-28 08:15:28 +01002200template<armnn::DataType ArmnnType, typename T>
2201LayerTestResult<T, 2> FullyConnectedTest(
2202 armnn::IWorkloadFactory& workloadFactory,
2203 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2204 bool biasEnabled)
2205{
2206 constexpr static unsigned int inputWidth = 3u;
2207 constexpr static unsigned int inputHeight = 2u;
2208 constexpr static unsigned int inputChannels = 1u;
2209
2210 constexpr static unsigned int inputSize = inputWidth * inputHeight * inputChannels;
2211
2212 constexpr static unsigned int outputChannels = 2u;
2213
2214 armnn::TensorInfo inputTensorInfo({ 1, inputChannels, inputHeight, inputWidth }, ArmnnType);
2215 inputTensorInfo.SetQuantizationScale(0.1f);
2216 inputTensorInfo.SetQuantizationOffset(63);
2217
2218 armnn::TensorInfo outputTensorInfo({ 1, outputChannels }, ArmnnType);
2219 outputTensorInfo.SetQuantizationScale(5.f);
2220 outputTensorInfo.SetQuantizationOffset(biasEnabled ? -50 : 10);
2221
2222 armnn::TensorInfo weightsDesc({ outputChannels, inputSize }, ArmnnType);
2223 weightsDesc.SetQuantizationScale(0.2f);
2224 weightsDesc.SetQuantizationOffset(93);
2225
2226 armnn::TensorInfo biasesDesc({ outputChannels }, GetBiasTypeFromWeightsType(weightsDesc.GetDataType()).value());
2227 biasesDesc.SetQuantizationScale(inputTensorInfo.GetQuantizationScale() * weightsDesc.GetQuantizationScale());
2228 biasesDesc.SetQuantizationOffset(0);
2229
2230 LayerTestResult<T, 2> result(outputTensorInfo);
2231
2232 auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
2233 {
2234 -1.2f, 6.1f, -3.5f,
2235 18.8f, -5.5f, 2.9f
2236 },
2237 inputTensorInfo));
2238
2239 auto weights = MakeTensor<T, 2>(weightsDesc, ConvertToDataType<ArmnnType>(
2240 {
2241 -8.4f, 20.0f, -10.4f, -8, 16.4f, -11.8f,
2242 23.4f, 10.4f, -14.0f, -3.8f, -11.8f, 11.4f
2243 },
2244 weightsDesc));
2245
2246 auto bias = MakeTensor<int32_t, 1>(biasesDesc, std::vector<int32_t>{9250, 67500});
2247
2248 result = SimpleFullyConnectedTestImpl<T>(
2249 workloadFactory,
2250 memoryManager,
2251 inputTensorInfo, outputTensorInfo,
2252 weightsDesc, biasesDesc,
2253 weights, bias, input,
2254 biasEnabled, true
2255 );
2256
2257 if (biasEnabled)
2258 {
2259 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
2260 ConvertToDataType<ArmnnType>({80.f, 1460.f}, outputTensorInfo));
2261 }
2262 else
2263 {
2264 result.outputExpected = MakeTensor<T, 2>(outputTensorInfo,
2265 ConvertToDataType<ArmnnType>({-107.04f, 110.f}, outputTensorInfo));
2266 }
2267
2268 return result;
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01002269}
2270
Nina Drozd8ed4b8c2019-05-29 10:41:04 +01002271template<armnn::DataType ArmnnType, typename T>
2272LayerTestResult<T, 4> SimpleReshapeTest(
2273 armnn::IWorkloadFactory& workloadFactory,
2274 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2275{
2276 armnn::TensorInfo inputTensorInfo;
2277 armnn::TensorInfo outputTensorInfo;
2278
2279 unsigned int inputShape[] = { 2, 2, 3, 3 };
2280 unsigned int outputShape[] = { 2, 2, 9, 1 };
2281
2282 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
2283 inputTensorInfo.SetQuantizationScale(1.0f);
2284 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
2285 outputTensorInfo.SetQuantizationScale(1.0f);
2286
2287 auto input = ConvertToDataType<ArmnnType>(
2288 {
2289 0.0f, 1.0f, 2.0f,
2290 3.0f, 4.0f, 5.0f,
2291 6.0f, 7.0f, 8.0f,
2292
2293 9.0f, 10.0f, 11.0f,
2294 12.0f, 13.0f, 14.0f,
2295 15.0f, 16.0f, 17.0f,
2296
2297 18.0f, 19.0f, 20.0f,
2298 21.0f, 22.0f, 23.0f,
2299 24.0f, 25.0f, 26.0f,
2300
2301 27.0f, 28.0f, 29.0f,
2302 30.0f, 31.0f, 32.0f,
2303 33.0f, 34.0f, 35.0f,
2304 },
2305 inputTensorInfo);
2306
2307 auto outputExpected = ConvertToDataType<ArmnnType>(
2308 {
2309 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f,
2310
2311 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f,
2312
2313 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f,
2314
2315 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f,
2316 },
2317 outputTensorInfo);
2318
2319 return SimpleReshapeTestImpl<T>(
2320 workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected);
Matteo Martincigh42666a12019-05-29 08:53:41 +01002321}
James Conroy83735b12019-05-30 16:36:59 +01002322
2323template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
2324LayerTestResult<T, 4> SimpleFloorTest(
2325 armnn::IWorkloadFactory& workloadFactory,
2326 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2327{
James Conroyb40d7102019-06-04 12:32:09 +01002328 armnn::TensorInfo inputTensorInfo({1, 3, 2, 3}, ArmnnType);
2329 inputTensorInfo.SetQuantizationScale(0.1f);
2330
2331 armnn::TensorInfo outputTensorInfo(inputTensorInfo);
2332 outputTensorInfo.SetQuantizationScale(0.1f);
James Conroy83735b12019-05-30 16:36:59 +01002333
2334 auto input = MakeTensor<T, 4>(inputTensorInfo, ConvertToDataType<ArmnnType>(
2335 { -37.5f, -15.2f, -8.76f, -2.0f, -1.5f, -1.3f, -0.5f, -0.4f, 0.0f,
2336 1.0f, 0.4f, 0.5f, 1.3f, 1.5f, 2.0f, 8.76f, 15.2f, 37.5f },
2337 inputTensorInfo));
2338
2339 LayerTestResult<T, 4> ret(outputTensorInfo);
2340 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, ConvertToDataType<ArmnnType>(
2341 { -38.0f, -16.0f, -9.0f, -2.0f, -2.0f, -2.0f, -1.0f, -1.0f, 0.0f,
2342 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 2.0f, 8.0f, 15.0f, 37.0f },
2343 outputTensorInfo));
2344
2345 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2346 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2347
2348 armnn::FloorQueueDescriptor data;
2349 armnn::WorkloadInfo info;
2350 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
2351 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
2352
2353 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFloor(data, info);
2354
2355 inputHandle->Allocate();
2356 outputHandle->Allocate();
2357
2358 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2359
2360 workload->Execute();
2361
2362 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
2363
2364 return ret;
Matteo Martincighf5507132019-06-04 10:59:47 +01002365}
Ellen Norris-Thompsonc4223d12019-06-10 14:15:12 +01002366
2367
2368template<armnn::DataType ArmnnType, typename T>
2369LayerTestResult<T, 4> ResizeBilinearNopTest(
2370 armnn::IWorkloadFactory& workloadFactory,
2371 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2372 const armnn::DataLayout dataLayout)
2373{
2374 armnn::TensorInfo inputTensorInfo = armnn::IsQuantizedType<T>()
2375 ? armnnUtils::GetTensorInfo(1, 1, 4, 4, dataLayout, ArmnnType)
2376 : armnnUtils::GetTensorInfo(1, 2, 4, 4, dataLayout, ArmnnType);
2377 armnn::TensorInfo outputTensorInfo = armnn::IsQuantizedType<T>()
2378 ? armnnUtils::GetTensorInfo(1, 1, 4, 4, dataLayout, ArmnnType)
2379 : armnnUtils::GetTensorInfo(1, 2, 4, 4, dataLayout, ArmnnType);
2380 if (armnn::IsQuantizedType<T>())
2381 {
2382 inputTensorInfo.SetQuantizationScale(1.5f);
2383 inputTensorInfo.SetQuantizationOffset(-3);
2384 outputTensorInfo.SetQuantizationScale(1.5f);
2385 outputTensorInfo.SetQuantizationOffset(-3);
2386 }
2387
2388 std::vector<float> inputData = armnn::IsQuantizedType<T>()
2389 ? std::initializer_list<float>
2390 {
2391 1, 2, 3, 4,
2392 2, 3, 4, 5,
2393 3, 4, 5, 6,
2394 4, 5, 6, 7
2395 }
2396 : std::initializer_list<float>
2397 {
2398 1.0f, 2.0f, 3.0f, 4.0f,
2399 2.0f, 3.0f, 4.0f, 5.0f,
2400 3.0f, 4.0f, 5.0f, 6.0f,
2401 4.0f, 5.0f, 6.0f, 7.0f,
2402
2403 1.0f, 2.0f, 3.0f, 4.0f,
2404 2.0f, 3.0f, 4.0f, 5.0f,
2405 3.0f, 4.0f, 5.0f, 6.0f,
2406 4.0f, 5.0f, 6.0f, 7.0f
2407 };
2408
2409 const armnn::PermutationVector NCHWToNHWC = { 0, 3, 1, 2 };
2410 if (dataLayout == armnn::DataLayout::NHWC)
2411 {
2412 std::vector<float> tmp(inputData.size());
2413 armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data(), sizeof(float));
2414 inputData = tmp;
2415 }
2416
2417 auto input = MakeTensor<T, 4>(inputTensorInfo, QuantizedVector<T>(inputTensorInfo.GetQuantizationScale(),
2418 inputTensorInfo.GetQuantizationOffset(),
2419 inputData));
2420
2421 LayerTestResult<T, 4> result(outputTensorInfo);
2422 result.outputExpected = input;
2423
2424 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2425 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2426
2427 armnn::ResizeBilinearQueueDescriptor descriptor;
2428 descriptor.m_Parameters.m_DataLayout = dataLayout;
2429 armnn::WorkloadInfo info;
2430 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
2431 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
2432
2433 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateResizeBilinear(descriptor, info);
2434
2435 inputHandle->Allocate();
2436 outputHandle->Allocate();
2437 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2438
2439 workload->PostAllocationConfigure();
2440 workload->Execute();
2441
2442 CopyDataFromITensorHandle(&result.output[0][0][0][0], outputHandle.get());
2443 return result;
2444}
2445
2446template LayerTestResult<typename armnn::ResolveType<armnn::DataType::Float32>, 4>
2447ResizeBilinearNopTest<armnn::DataType::Float32>(
2448 armnn::IWorkloadFactory& workloadFactory,
2449 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2450 const armnn::DataLayout dataLayout);
2451
2452template LayerTestResult<typename armnn::ResolveType<armnn::DataType::QuantisedAsymm8>, 4>
2453ResizeBilinearNopTest<armnn::DataType::QuantisedAsymm8>(
2454 armnn::IWorkloadFactory& workloadFactory,
2455 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2456 const armnn::DataLayout dataLayout);
2457
2458template<armnn::DataType ArmnnType, typename T>
2459LayerTestResult<T, 4> SimpleResizeBilinearTest(
2460 armnn::IWorkloadFactory& workloadFactory,
2461 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2462 const armnn::DataLayout dataLayout)
2463{
2464 armnn::TensorInfo inputTensorInfo = armnn::IsQuantizedType<T>()
2465 ? armnnUtils::GetTensorInfo(1, 1, 2, 2, dataLayout, ArmnnType)
2466 : armnnUtils::GetTensorInfo(1, 2, 2, 2, dataLayout, ArmnnType);
2467 armnn::TensorInfo outputTensorInfo = armnn::IsQuantizedType<T>()
2468 ? armnnUtils::GetTensorInfo(1, 1, 1, 1, dataLayout, ArmnnType)
2469 : armnnUtils::GetTensorInfo(1, 2, 1, 1, dataLayout, ArmnnType);
2470
2471 if (armnn::IsQuantizedType<T>())
2472 {
2473 inputTensorInfo.SetQuantizationScale(0.1567f);
2474 inputTensorInfo.SetQuantizationOffset(1);
2475 outputTensorInfo.SetQuantizationScale(0.1567f);
2476 outputTensorInfo.SetQuantizationOffset(1);
2477 }
2478
2479 std::vector<float> inputData = armnn::IsQuantizedType<T>()
2480 ? std::initializer_list<float>
2481 {
2482 1, 255,
2483 200, 250
2484 }
2485 : std::initializer_list<float>
2486 {
2487 1.0f, 255.0f,
2488 200.0f, 250.0f,
2489
2490 250.0f, 200.0f,
2491 250.0f, 1.0f
2492 };
2493
2494 // The 'resize bilinear' operation projects the top-left corner of output texels into the input image,
2495 // then figures out the interpolants and weights. Note this is different to projecting the centre of the
2496 // output texel. Thus, for a input matrix of 2x2, we'll expect the output 1x1 matrix to contain, as
2497 // its single element, the value that was at position (0,0) of the input matrix (rather than an average,
2498 // which we would expect if projecting the centre).
2499
2500 std::vector<float> outputData = armnn::IsQuantizedType<T>()
2501 ? std::initializer_list<float>
2502 {
2503 1
2504 }
2505 : std::initializer_list<float>
2506 {
2507 1.0f,
2508
2509 250.0f
2510 };
2511
2512 const armnn::PermutationVector NCHWToNHWC = { 0, 3, 1, 2 };
2513 if (dataLayout == armnn::DataLayout::NHWC)
2514 {
2515 std::vector<float> tmp(inputData.size());
2516 armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data(), sizeof(float));
2517 inputData = tmp;
2518
2519 std::vector<float> tmp1(outputData.size());
2520 armnnUtils::Permute(outputTensorInfo.GetShape(), NCHWToNHWC, outputData.data(), tmp1.data(), sizeof(float));
2521 outputData = tmp1;
2522 }
2523
2524 auto input = MakeTensor<T, 4>(inputTensorInfo, QuantizedVector<T>(inputTensorInfo.GetQuantizationScale(),
2525 inputTensorInfo.GetQuantizationOffset(),
2526 inputData));
2527
2528 LayerTestResult<T, 4> result(outputTensorInfo);
2529 result.outputExpected = MakeTensor<T, 4>(outputTensorInfo,
2530 QuantizedVector<T>(outputTensorInfo.GetQuantizationScale(),
2531 outputTensorInfo.GetQuantizationOffset(),
2532 outputData));
2533
2534 std::unique_ptr <armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2535 std::unique_ptr <armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2536
2537 armnn::ResizeBilinearQueueDescriptor descriptor;
2538 descriptor.m_Parameters.m_DataLayout = dataLayout;
2539 armnn::WorkloadInfo info;
2540 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
2541 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
2542
2543 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateResizeBilinear(descriptor, info);
2544
2545 inputHandle->Allocate();
2546 outputHandle->Allocate();
2547 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2548
2549 workload->PostAllocationConfigure();
2550 workload->Execute();
2551
2552 CopyDataFromITensorHandle(&result.output[0][0][0][0], outputHandle.get());
2553 return result;
2554}
2555
2556template LayerTestResult<typename armnn::ResolveType<armnn::DataType::Float32>, 4>
2557SimpleResizeBilinearTest<armnn::DataType::Float32>(
2558 armnn::IWorkloadFactory& workloadFactory,
2559 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2560 const armnn::DataLayout dataLayout);
2561
2562template LayerTestResult<typename armnn::ResolveType<armnn::DataType::QuantisedAsymm8>, 4>
2563SimpleResizeBilinearTest<armnn::DataType::QuantisedAsymm8>(
2564 armnn::IWorkloadFactory& workloadFactory,
2565 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2566 const armnn::DataLayout dataLayout);
2567
2568template<armnn::DataType ArmnnType, typename T>
2569LayerTestResult<T, 4> ResizeBilinearSqMinTest(
2570 armnn::IWorkloadFactory& workloadFactory,
2571 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2572 const armnn::DataLayout dataLayout)
2573{
2574 armnn::TensorInfo inputTensorInfo = armnn::IsQuantizedType<T>()
2575 ? armnnUtils::GetTensorInfo(1, 1, 4, 4, dataLayout, ArmnnType)
2576 : armnnUtils::GetTensorInfo(1, 2, 4, 4, dataLayout, ArmnnType);
2577 armnn::TensorInfo outputTensorInfo = armnn::IsQuantizedType<T>()
2578 ? armnnUtils::GetTensorInfo(1, 1, 2, 2, dataLayout, ArmnnType)
2579 : armnnUtils::GetTensorInfo(1, 2, 2, 2, dataLayout, ArmnnType);
2580
2581 if (armnn::IsQuantizedType<T>())
2582 {
2583 inputTensorInfo.SetQuantizationScale(3.141592f);
2584 inputTensorInfo.SetQuantizationOffset(3);
2585 outputTensorInfo.SetQuantizationScale(3.141592f);
2586 outputTensorInfo.SetQuantizationOffset(3);
2587 }
2588
2589 std::vector<float> inputData = armnn::IsQuantizedType<T>()
2590 ? std::initializer_list<float>
2591 {
2592 1, 2, 3, 4,
2593 2, 3, 4, 5,
2594 3, 4, 5, 6,
2595 4, 5, 6, 7
2596 }
2597 : std::initializer_list<float>
2598 {
2599 1.0f, 2.0f, 3.0f, 4.0f,
2600 2.0f, 3.0f, 4.0f, 5.0f,
2601 3.0f, 4.0f, 5.0f, 6.0f,
2602 4.0f, 5.0f, 6.0f, 7.0f,
2603
2604 7.0f, 6.0f, 5.0f, 4.0f,
2605 6.0f, 5.0f, 4.0f, 3.0f,
2606 5.0f, 4.0f, 3.0f, 2.0f,
2607 4.0f, 3.0f, 2.0f, 1.0f
2608 };
2609
2610 std::vector<float> outputData = armnn::IsQuantizedType<T>()
2611 ? std::initializer_list<float>
2612 {
2613 1, 3,
2614 3, 5
2615 }
2616 : std::initializer_list<float>
2617 {
2618 1.0f, 3.0f,
2619 3.0f, 5.0f,
2620
2621 7.0f, 5.0f,
2622 5.0f, 3.0f
2623 };
2624
2625 const armnn::PermutationVector NCHWToNHWC = { 0, 3, 1, 2 };
2626 if (dataLayout == armnn::DataLayout::NHWC)
2627 {
2628 std::vector<float> tmp(inputData.size());
2629 armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data(), sizeof(float));
2630 inputData = tmp;
2631
2632 std::vector<float> tmp1(outputData.size());
2633 armnnUtils::Permute(outputTensorInfo.GetShape(), NCHWToNHWC, outputData.data(), tmp1.data(), sizeof(float));
2634 outputData = tmp1;
2635 }
2636
2637 auto input = MakeTensor<T, 4>(inputTensorInfo, QuantizedVector<T>(inputTensorInfo.GetQuantizationScale(),
2638 inputTensorInfo.GetQuantizationOffset(),
2639 inputData));
2640
2641 LayerTestResult<T, 4> result(outputTensorInfo);
2642 result.outputExpected = MakeTensor<T, 4>(outputTensorInfo,
2643 QuantizedVector<T>(outputTensorInfo.GetQuantizationScale(),
2644 outputTensorInfo.GetQuantizationOffset(),
2645 outputData));
2646
2647 std::unique_ptr <armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2648 std::unique_ptr <armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2649
2650 armnn::ResizeBilinearQueueDescriptor descriptor;
2651 descriptor.m_Parameters.m_DataLayout = dataLayout;
2652 armnn::WorkloadInfo info;
2653 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
2654 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
2655
2656 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateResizeBilinear(descriptor, info);
2657
2658 inputHandle->Allocate();
2659 outputHandle->Allocate();
2660 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2661
2662 workload->PostAllocationConfigure();
2663 workload->Execute();
2664
2665 CopyDataFromITensorHandle(&result.output[0][0][0][0], outputHandle.get());
2666 return result;
2667}
2668
2669template LayerTestResult<typename armnn::ResolveType<armnn::DataType::Float32>, 4>
2670ResizeBilinearSqMinTest<armnn::DataType::Float32>(
2671 armnn::IWorkloadFactory& workloadFactory,
2672 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2673 const armnn::DataLayout dataLayout);
2674
2675template LayerTestResult<typename armnn::ResolveType<armnn::DataType::QuantisedAsymm8>, 4>
2676ResizeBilinearSqMinTest<armnn::DataType::QuantisedAsymm8>(
2677 armnn::IWorkloadFactory& workloadFactory,
2678 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2679 const armnn::DataLayout dataLayout);
2680
2681template<armnn::DataType ArmnnType, typename T>
2682LayerTestResult<T, 4> ResizeBilinearMinTest(
2683 armnn::IWorkloadFactory& workloadFactory,
2684 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2685 const armnn::DataLayout dataLayout)
2686{
2687 armnn::TensorInfo inputTensorInfo = armnn::IsQuantizedType<T>()
2688 ? armnnUtils::GetTensorInfo(1, 1, 2, 3, dataLayout, ArmnnType)
2689 : armnnUtils::GetTensorInfo(1, 2, 3, 5, dataLayout, ArmnnType);
2690 armnn::TensorInfo outputTensorInfo = armnn::IsQuantizedType<T>()
2691 ? armnnUtils::GetTensorInfo(1, 1, 1, 2, dataLayout, ArmnnType)
2692 : armnnUtils::GetTensorInfo(1, 2, 2, 3, dataLayout, ArmnnType);
2693
2694 if (armnn::IsQuantizedType<T>())
2695 {
2696 inputTensorInfo.SetQuantizationScale(1.5f);
2697 inputTensorInfo.SetQuantizationOffset(-1);
2698 outputTensorInfo.SetQuantizationScale(1.5f);
2699 outputTensorInfo.SetQuantizationOffset(-1);
2700 }
2701
2702 std::vector<float> inputData = armnn::IsQuantizedType<T>()
2703 ? std::initializer_list<float>
2704 {
2705 3.0f, 4.5f, 6.0f, // 1, 2, 3, : Expected quantised values
2706 9.0f, 13.5f, 21.0f // 5, 8, 13
2707 }
2708 : std::initializer_list<float>
2709 {
2710 1.0f, 2.0f, 3.0f, 5.0f, 8.0f,
2711 13.0f, 21.0f, 34.0f, 55.0f, 89.0f,
2712 144.0f, 233.0f, 377.0f, 610.0f, 987.0f,
2713
2714 987.0f, 610.0f, 377.0f, 233.0f, 144.0f,
2715 89.0f, 55.0f, 34.0f, 21.0f, 13.0f,
2716 8.0f, 5.0f, 3.0f, 2.0f, 1.0f
2717 };
2718
2719 std::vector<float> outputData = armnn::IsQuantizedType<T>()
2720 ? std::initializer_list<float>
2721 {
2722 3.0f, 5.25f // 1, 3
2723 }
2724 : std::initializer_list<float>
2725 {
2726 1.0f, 2.6666f, 6.00f,
2727 78.5f, 179.3333f, 401.00f,
2728
2729 987.0f, 454.6670f, 203.33f,
2730 48.5f, 22.3333f, 10.00f
2731 };
2732
2733 const armnn::PermutationVector NCHWToNHWC = { 0, 3, 1, 2 };
2734 if (dataLayout == armnn::DataLayout::NHWC)
2735 {
2736 std::vector<float> tmp(inputData.size());
2737 armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data(), sizeof(float));
2738 inputData = tmp;
2739
2740 std::vector<float> tmp1(outputData.size());
2741 armnnUtils::Permute(outputTensorInfo.GetShape(), NCHWToNHWC, outputData.data(), tmp1.data(), sizeof(float));
2742 outputData = tmp1;
2743 }
2744
2745 auto input = MakeTensor<T, 4>(inputTensorInfo, QuantizedVector<T>(inputTensorInfo.GetQuantizationScale(),
2746 inputTensorInfo.GetQuantizationOffset(),
2747 inputData));
2748
2749 LayerTestResult<T, 4> result(outputTensorInfo);
2750 result.outputExpected = MakeTensor<T, 4>(outputTensorInfo,
2751 QuantizedVector<T>(outputTensorInfo.GetQuantizationScale(),
2752 outputTensorInfo.GetQuantizationOffset(),
2753 outputData));
2754
2755 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2756 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2757
2758 armnn::ResizeBilinearQueueDescriptor descriptor;
2759 descriptor.m_Parameters.m_DataLayout = dataLayout;
2760 armnn::WorkloadInfo info;
2761 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
2762 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
2763
2764 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateResizeBilinear(descriptor, info);
2765
2766 inputHandle->Allocate();
2767 outputHandle->Allocate();
2768 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2769
2770 workload->PostAllocationConfigure();
2771 workload->Execute();
2772
2773 CopyDataFromITensorHandle(&result.output[0][0][0][0], outputHandle.get());
2774 return result;
2775}
2776
2777template LayerTestResult<typename armnn::ResolveType<armnn::DataType::Float32>, 4>
2778ResizeBilinearMinTest<armnn::DataType::Float32>(
2779 armnn::IWorkloadFactory& workloadFactory,
2780 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2781 const armnn::DataLayout dataLayout);
2782
2783template LayerTestResult<typename armnn::ResolveType<armnn::DataType::QuantisedAsymm8>, 4>
2784ResizeBilinearMinTest<armnn::DataType::QuantisedAsymm8>(
2785 armnn::IWorkloadFactory& workloadFactory,
2786 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2787 const armnn::DataLayout dataLayout);
2788
2789template<armnn::DataType ArmnnType, typename T>
2790LayerTestResult<T, 4> ResizeBilinearMagTest(
2791 armnn::IWorkloadFactory& workloadFactory,
2792 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2793 const armnn::DataLayout dataLayout)
2794{
2795 armnn::TensorInfo inputTensorInfo = armnn::IsQuantizedType<T>()
2796 ? armnnUtils::GetTensorInfo(1, 1, 3, 2, dataLayout, ArmnnType)
2797 : armnnUtils::GetTensorInfo(1, 2, 3, 2, dataLayout, ArmnnType);
2798 armnn::TensorInfo outputTensorInfo = armnn::IsQuantizedType<T>()
2799 ? armnnUtils::GetTensorInfo(1, 1, 3, 5, dataLayout, ArmnnType)
2800 : armnnUtils::GetTensorInfo(1, 2, 3, 5, dataLayout, ArmnnType);
2801
2802 if (armnn::IsQuantizedType<T>())
2803 {
2804 inputTensorInfo.SetQuantizationScale(0.010765f);
2805 inputTensorInfo.SetQuantizationOffset(7);
2806 outputTensorInfo.SetQuantizationScale(0.010132f);
2807 outputTensorInfo.SetQuantizationOffset(-18);
2808 }
2809
2810 std::vector<float> inputData = armnn::IsQuantizedType<T>()
2811 ? std::initializer_list<float>
2812 {
2813 0.183005f, 2.379065f, // 24, 228, : Expected quantised values
2814 1.05497f, 1.302565f, // 105, 128,
2815 2.400595f, 0.68896f // 230, 71
2816 }
2817 : std::initializer_list<float>
2818 {
2819 1.0f, 2.0f,
2820 13.0f, 21.0f,
2821 144.0f, 233.0f,
2822
2823 233.0f, 144.0f,
2824 21.0f, 13.0f,
2825 2.0f, 1.0f
2826 };
2827 std::vector<float> outputData = armnn::IsQuantizedType<T>()
2828 ? std::initializer_list<float>
2829 {
2830 0.18300501f, 1.06142902f, 1.93985295f, 2.37906504f, 2.37906504f,
2831 1.05497003f, 1.15400803f, 1.25304604f, 1.30256498f, 1.30256498f,
2832 2.40059495f, 1.71594095f, 1.03128707f, 0.68896002f, 0.68896002f
2833 // 0, 87, 173, 217, 217, : Expected quantised values
2834 // 86, 96, 106, 111, 111,
2835 // 219, 151, 84, 50, 50
2836 }
2837 : std::initializer_list<float>
2838 {
2839 1.0f, 1.4f, 1.8f, 2.0f, 2.0f,
2840 13.0f, 16.2f, 19.4f, 21.0f, 21.0f,
2841 144.0f, 179.6f, 215.2f, 233.0f, 233.0f,
2842
2843 233.0f, 197.4f, 161.8f, 144.0f, 144.0f,
2844 21.0f, 17.8f, 14.6f, 13.0f, 13.0f,
2845 2.0f, 1.6f, 1.2f, 1.0f, 1.0f
2846 };
2847
2848 const armnn::PermutationVector NCHWToNHWC = { 0, 3, 1, 2 };
2849 if (dataLayout == armnn::DataLayout::NHWC)
2850 {
2851 std::vector<float> tmp(inputData.size());
2852 armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data(), sizeof(float));
2853 inputData = tmp;
2854
2855 std::vector<float> tmp1(outputData.size());
2856 armnnUtils::Permute(outputTensorInfo.GetShape(), NCHWToNHWC, outputData.data(), tmp1.data(), sizeof(float));
2857 outputData = tmp1;
2858 }
2859
2860 auto input = MakeTensor<T, 4>(inputTensorInfo, QuantizedVector<T>(inputTensorInfo.GetQuantizationScale(),
2861 inputTensorInfo.GetQuantizationOffset(),
2862 inputData));
2863
2864 LayerTestResult<T, 4> result(outputTensorInfo);
2865 result.outputExpected = MakeTensor<T, 4>(outputTensorInfo,
2866 QuantizedVector<T>(outputTensorInfo.GetQuantizationScale(),
2867 outputTensorInfo.GetQuantizationOffset(),
2868 outputData));
2869
2870 std::unique_ptr <armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2871 std::unique_ptr <armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2872
2873 armnn::ResizeBilinearQueueDescriptor descriptor;
2874 descriptor.m_Parameters.m_DataLayout = dataLayout;
2875 armnn::WorkloadInfo info;
2876 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
2877 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
2878
2879 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateResizeBilinear(descriptor, info);
2880
2881 inputHandle->Allocate();
2882 outputHandle->Allocate();
2883 CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
2884
2885 workload->PostAllocationConfigure();
2886 workload->Execute();
2887
2888 CopyDataFromITensorHandle(&result.output[0][0][0][0], outputHandle.get());
2889 return result;
2890}
2891
2892template LayerTestResult<typename armnn::ResolveType<armnn::DataType::Float32>, 4>
2893ResizeBilinearMagTest<armnn::DataType::Float32>(
2894 armnn::IWorkloadFactory& workloadFactory,
2895 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2896 const armnn::DataLayout dataLayout);
2897
2898template LayerTestResult<typename armnn::ResolveType<armnn::DataType::QuantisedAsymm8>, 4>
2899ResizeBilinearMagTest<armnn::DataType::QuantisedAsymm8>(
2900 armnn::IWorkloadFactory& workloadFactory,
2901 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
James Conroy4d1ff582019-06-10 17:06:39 +01002902 const armnn::DataLayout dataLayout);
2903
2904template<armnn::DataType ArmnnType, typename T, std::size_t InputDim, std::size_t OutputDim>
2905LayerTestResult<T, OutputDim> MeanTestHelper(
2906 armnn::IWorkloadFactory& workloadFactory,
2907 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
2908 const unsigned int* inputShape,
2909 const std::vector<float>& inputData,
2910 const std::vector<unsigned int>& axis,
2911 bool keepDims,
2912 const unsigned int* outputShape,
2913 const std::vector<float>& outputData,
2914 float scale = 1.0f,
2915 int32_t offset = 0)
2916{
2917 armnn::TensorInfo inputTensorInfo(InputDim, inputShape, ArmnnType);
2918 armnn::TensorInfo outputTensorInfo(OutputDim, outputShape, ArmnnType);
2919
2920 inputTensorInfo.SetQuantizationScale(scale);
2921 inputTensorInfo.SetQuantizationOffset(offset);
2922
2923 outputTensorInfo.SetQuantizationScale(scale);
2924 outputTensorInfo.SetQuantizationOffset(offset);
2925
2926 auto input = MakeTensor<T, InputDim>(inputTensorInfo, ConvertToDataType<ArmnnType>(inputData, inputTensorInfo));
2927
2928 LayerTestResult<T, OutputDim> result(outputTensorInfo);
2929 result.outputExpected = MakeTensor<T, OutputDim>(
2930 outputTensorInfo, ConvertToDataType<ArmnnType>(outputData, outputTensorInfo));
2931
2932 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
2933 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
2934
2935 armnn::MeanQueueDescriptor data;
2936 data.m_Parameters.m_Axis = axis;
2937 data.m_Parameters.m_KeepDims = keepDims;
2938 armnn::WorkloadInfo info;
2939 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
2940 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
2941
2942 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateMean(data, info);
2943
2944 inputHandle->Allocate();
2945 outputHandle->Allocate();
2946
2947 CopyDataToITensorHandle(inputHandle.get(), input.origin());
2948
2949 workload->PostAllocationConfigure();
2950 workload->Execute();
2951
2952 CopyDataFromITensorHandle(result.output.origin(), outputHandle.get());
2953
2954 return result;
2955}
2956
2957template<armnn::DataType ArmnnType, typename T>
2958LayerTestResult<T, 1> MeanSimpleTest(
2959 armnn::IWorkloadFactory& workloadFactory,
2960 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2961{
2962 const unsigned int inputShape[] = { 3, 2 };
2963 const unsigned int outputShape[] = { 1 };
2964
2965 std::vector<float> input({ 1.5f, 1.5f, 2.5f, 2.5f, 3.5f, 3.5f });
2966 std::vector<float> output({ 2.5f });
2967
2968 return MeanTestHelper<ArmnnType, T, 2, 1>(
2969 workloadFactory, memoryManager, inputShape, input, {}, false, outputShape, output);
2970}
2971
2972template<armnn::DataType ArmnnType, typename T>
2973LayerTestResult<T, 3> MeanSimpleAxisTest(
2974 armnn::IWorkloadFactory& workloadFactory,
2975 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2976{
2977 const unsigned int inputShape[] = { 2, 3, 1, 2 };
2978 const unsigned int outputShape[] = { 3, 1, 2 };
2979
2980 std::vector<float> input({ 1.5f, 2.5f, 3.5f, 4.5f, 5.5f, 6.5f, 1.5f, 2.5f, 3.5f, 4.5f, 5.5f, 6.5f });
2981 std::vector<float> output({ 1.5f, 2.5f, 3.5f, 4.5f, 5.5f, 6.5f });
2982
2983 return MeanTestHelper<ArmnnType, T, 4, 3>(
2984 workloadFactory, memoryManager, inputShape, input, { 0 }, false, outputShape, output);
2985}
2986
2987template<armnn::DataType ArmnnType, typename T>
2988LayerTestResult<T, 4> MeanKeepDimsTest(
2989 armnn::IWorkloadFactory& workloadFactory,
2990 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
2991{
2992 const unsigned int inputShape[] = { 1, 1, 3, 2 };
2993 const unsigned int outputShape[] = { 1, 1, 1, 2 };
2994
2995 std::vector<float> input({ 1.5f, 1.5f, 2.5f, 2.5f, 3.5f, 3.5f });
2996 std::vector<float> output({ 2.5f, 2.5f });
2997
2998 return MeanTestHelper<ArmnnType, T, 4, 4>(
2999 workloadFactory, memoryManager, inputShape, input, { 2 }, true, outputShape, output);
3000}
3001
3002template<armnn::DataType ArmnnType, typename T>
3003LayerTestResult<T, 4> MeanMultipleDimsTest(
3004 armnn::IWorkloadFactory& workloadFactory,
3005 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
3006{
3007 const unsigned int inputShape[] = { 2, 3, 1, 2 };
3008 const unsigned int outputShape[] = { 1, 3, 1, 1 };
3009
3010 std::vector<float> input({ 1.5f, 2.5f, 3.5f, 4.5f, 5.5f, 6.5f, 1.5f, 2.5f, 3.5f, 4.5f, 5.5f, 6.5 });
3011 std::vector<float> output({ 2.0f, 4.0f, 6.0f });
3012
3013 return MeanTestHelper<ArmnnType, T, 4, 4>(
3014 workloadFactory, memoryManager, inputShape, input, { 0, 3 }, true, outputShape, output);
3015}
3016
3017template<armnn::DataType ArmnnType, typename T>
3018LayerTestResult<T, 1> MeanVts1Test(
3019 armnn::IWorkloadFactory& workloadFactory,
3020 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
3021{
3022 const unsigned int inputShape[] = { 4, 3, 2 };
3023 const unsigned int outputShape[] = { 2 };
3024
3025 std::vector<float> input({ 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f,
3026 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f });
3027 std::vector<float> output({ 12.0f, 13.0f });
3028
3029 return MeanTestHelper<ArmnnType, T, 3, 1>(
3030 workloadFactory, memoryManager, inputShape, input, { 0, 1 }, false, outputShape, output);
3031}
3032
3033template<armnn::DataType ArmnnType, typename T>
3034LayerTestResult<T, 3> MeanVts2Test(
3035 armnn::IWorkloadFactory& workloadFactory,
3036 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
3037{
3038 const unsigned int inputShape[] = { 4, 3, 2 };
3039 const unsigned int outputShape[] = { 1, 3, 1 };
3040
3041 std::vector<float> input({ 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f,
3042 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f });
3043 std::vector<float> output({ 10.5f, 12.5f, 14.5f });
3044
3045 return MeanTestHelper<ArmnnType, T, 3, 3>(
3046 workloadFactory, memoryManager, inputShape, input, { 0, 2 }, true, outputShape, output);
3047}
3048
3049template<armnn::DataType ArmnnType, typename T>
3050LayerTestResult<T, 3> MeanVts3Test(
3051 armnn::IWorkloadFactory& workloadFactory,
3052 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
3053{
3054 const unsigned int inputShape[] = { 1, 2, 2, 1 };
3055 const unsigned int outputShape[] = { 1, 2, 1 };
3056
3057 std::vector<float> input({ 1.0f, 2.0f, 3.0f, 4.0f });
3058 std::vector<float> output({ 1.5f, 3.5f });
3059
3060 return MeanTestHelper<ArmnnType, T, 4, 3>(
3061 workloadFactory, memoryManager, inputShape, input, { 2 }, false, outputShape, output);
3062}