blob: c38d84fac27adaa7a39559c1f0a992e3d9a78c1d [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>
telsoa014fcda012018-03-09 14:13:49 +000011
12#include <boost/multi_array.hpp>
13#include <boost/assert.hpp>
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000014
telsoa014fcda012018-03-09 14:13:49 +000015#include <array>
16
telsoa01c577f2c2018-08-31 09:22:23 +010017// Layer callables.
telsoa014fcda012018-03-09 14:13:49 +000018
19namespace armnn
20{
21class IWorkloadFactory;
22}
23
24template <std::size_t n>
25boost::array<unsigned int, n> GetTensorShapeAsArray(const armnn::TensorInfo& tensorInfo)
26{
27 BOOST_ASSERT_MSG(n == tensorInfo.GetNumDimensions(),
28 "Attempting to construct a shape array of mismatching size");
29
30 boost::array<unsigned int, n> shape;
31 for (unsigned int i = 0; i < n; i++)
32 {
33 shape[i] = tensorInfo.GetShape()[i];
34 }
35 return shape;
36}
37
38template <typename T, std::size_t n>
39struct LayerTestResult
40{
41 LayerTestResult(const armnn::TensorInfo& outputInfo)
42 {
43 auto shape( GetTensorShapeAsArray<n>(outputInfo) );
44 output.resize(shape);
45 outputExpected.resize(shape);
46 supported = true;
47 }
48
49 boost::multi_array<T, n> output;
50 boost::multi_array<T, n> outputExpected;
51 bool supported;
52};
53
54LayerTestResult<float, 4> SimpleConvolution2d3x5Test(armnn::IWorkloadFactory& workloadFactory,
jimfly010a088a62018-10-25 17:05:05 +010055 bool biasEnabled,
56 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +000057
58LayerTestResult<float, 4> SimpleConvolution2d3x3Test(armnn::IWorkloadFactory& workloadFactory,
narpra015f703182018-10-26 16:24:58 +010059 bool biasEnabled,
60 const armnn::DataLayoutIndexed& layout);
Francis Murtaghd59116e2018-10-04 16:03:07 +010061
62LayerTestResult<float, 4> SimpleConvolution2d3x3NhwcTest(armnn::IWorkloadFactory& workloadFactory,
63 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +000064
65LayerTestResult<float, 4>
narpra015f703182018-10-26 16:24:58 +010066Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest(armnn::IWorkloadFactory& workloadFactory,
67 const armnn::DataLayoutIndexed& layout);
68LayerTestResult<float, 4> Convolution2dAsymmetricPaddingTest(armnn::IWorkloadFactory& workloadFactory,
69 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +000070
71
narpra015f703182018-10-26 16:24:58 +010072LayerTestResult<float, 4> Convolution1dTest(armnn::IWorkloadFactory& workloadFactory,
73 bool biasEnabled);
74LayerTestResult<uint8_t, 4> Convolution1dUint8Test(armnn::IWorkloadFactory& workloadFactory,
75 bool biasEnabled);
telsoa014fcda012018-03-09 14:13:49 +000076
jimfly01d84216a2018-10-26 12:56:21 +010077LayerTestResult<float, 4> DepthwiseConvolution2dTest(armnn::IWorkloadFactory& workloadFactory,
78 bool biasEnabled,
79 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +000080
Nikhil Rajcec6b652018-10-12 13:51:57 +010081LayerTestResult<float, 4> DepthwiseConvolution2dDepthNhwcTest(armnn::IWorkloadFactory& workloadFactory,
82 bool biasEnabled);
83
telsoa014fcda012018-03-09 14:13:49 +000084LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul1Test(armnn::IWorkloadFactory& workloadFactory,
jimfly01b9c89632018-10-26 16:50:13 +010085 bool biasEnabled,
86 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +000087
surmeh013537c2c2018-05-18 16:31:43 +010088LayerTestResult<float, 4> DepthwiseConvolution2dAsymmetricTest(armnn::IWorkloadFactory& workloadFactory,
jimfly01382a91d2018-10-26 15:55:50 +010089 bool biasEnabled,
90 const armnn::DataLayoutIndexed& layout);
surmeh013537c2c2018-05-18 16:31:43 +010091
telsoa014fcda012018-03-09 14:13:49 +000092LayerTestResult<float, 4> SimpleMaxPooling2dSize2x2Stride2x2Test(armnn::IWorkloadFactory& workloadFactory,
93 bool forceNoPadding);
94LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize2x2Stride2x2Uint8Test(armnn::IWorkloadFactory& workloadFactory,
95 bool forceNoPadding);
96LayerTestResult<float, 4> SimpleMaxPooling2dSize3x3Stride2x4Test(armnn::IWorkloadFactory& workloadFactory,
97 bool forceNoPadding);
98LayerTestResult<uint8_t, 4> SimpleMaxPooling2dSize3x3Stride2x4Uint8Test(armnn::IWorkloadFactory& workloadFactory,
99 bool forceNoPadding );
100LayerTestResult<float, 4> IgnorePaddingSimpleMaxPooling2dTest(armnn::IWorkloadFactory& workloadFactory);
101LayerTestResult<uint8_t, 4> IgnorePaddingSimpleMaxPooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory);
102LayerTestResult<float, 4> IgnorePaddingMaxPooling2dSize3Test(armnn::IWorkloadFactory& workloadFactory);
103LayerTestResult<uint8_t, 4> IgnorePaddingMaxPooling2dSize3Uint8Test(armnn::IWorkloadFactory& workloadFactory);
104
James Conroy45a9b772018-10-31 11:47:53 +0000105LayerTestResult<float, 4> SimpleMaxPooling2dTest(armnn::IWorkloadFactory& workloadFactory,
106 const armnn::DataLayoutIndexed& dataLayout);
107LayerTestResult<uint8_t, 4> SimpleMaxPooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory,
108 const armnn::DataLayoutIndexed& dataLayout);
109
110LayerTestResult<float, 4> SimpleAveragePooling2dTest(armnn::IWorkloadFactory& workloadFactory,
111 const armnn::DataLayoutIndexed& dataLayout);
112LayerTestResult<uint8_t, 4> SimpleAveragePooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory,
113 const armnn::DataLayoutIndexed& dataLayout);
114
surmeh01bceff2f2018-03-29 16:29:27 +0100115LayerTestResult<float, 4> IgnorePaddingAveragePooling2dSize3x2Stride2x2Test(armnn::IWorkloadFactory& workloadFactory,
116 bool forceNoPadding);
telsoa014fcda012018-03-09 14:13:49 +0000117LayerTestResult<float, 4> IgnorePaddingSimpleAveragePooling2dTest(armnn::IWorkloadFactory& workloadFactory);
118LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory);
119LayerTestResult<float, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingTest(armnn::IWorkloadFactory& workloadFactory);
120LayerTestResult<uint8_t, 4> IgnorePaddingSimpleAveragePooling2dNoPaddingUint8Test(
121 armnn::IWorkloadFactory& workloadFactory);
122LayerTestResult<float, 4> IgnorePaddingAveragePooling2dSize3Test(armnn::IWorkloadFactory& workloadFactory);
123LayerTestResult<uint8_t, 4> IgnorePaddingAveragePooling2dSize3Uint8Test(armnn::IWorkloadFactory& workloadFactory);
124
James Conroy45a9b772018-10-31 11:47:53 +0000125LayerTestResult<float, 4> SimpleL2Pooling2dTest(armnn::IWorkloadFactory& workloadFactory,
126 const armnn::DataLayoutIndexed& dataLayout);
127LayerTestResult<uint8_t, 4> SimpleL2Pooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory,
128 const armnn::DataLayoutIndexed& dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000129
130LayerTestResult<float, 4> L2Pooling2dSize3Stride1Test(armnn::IWorkloadFactory& workloadFactory);
131LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride1Uint8Test(armnn::IWorkloadFactory& workloadFactory);
132LayerTestResult<float, 4> L2Pooling2dSize3Stride3Test(armnn::IWorkloadFactory& workloadFactory);
133LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride3Uint8Test(armnn::IWorkloadFactory& workloadFactory);
134LayerTestResult<float, 4> L2Pooling2dSize3Stride4Test(armnn::IWorkloadFactory& workloadFactory);
135LayerTestResult<uint8_t, 4> L2Pooling2dSize3Stride4Uint8Test(armnn::IWorkloadFactory& workloadFactory);
136LayerTestResult<float, 4> L2Pooling2dSize7Test(armnn::IWorkloadFactory& workloadFactory);
137LayerTestResult<uint8_t, 4> L2Pooling2dSize7Uint8Test(armnn::IWorkloadFactory& workloadFactory);
138LayerTestResult<float, 4> L2Pooling2dSize9Test(armnn::IWorkloadFactory& workloadFactory);
139LayerTestResult<uint8_t, 4> L2Pooling2dSize9Uint8Test(armnn::IWorkloadFactory& workloadFactory);
140LayerTestResult<float, 4> LargeTensorsAveragePooling2dTest(armnn::IWorkloadFactory& workloadFactory);
141LayerTestResult<uint8_t, 4> LargeTensorsAveragePooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory);
142
143LayerTestResult<float, 4> IgnorePaddingSimpleL2Pooling2dTest(armnn::IWorkloadFactory& workloadFactory);
144LayerTestResult<uint8_t, 4> IgnorePaddingSimpleL2Pooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory);
145LayerTestResult<float, 4> IgnorePaddingL2Pooling2dSize3Test(armnn::IWorkloadFactory& workloadFactory);
146LayerTestResult<uint8_t, 4> IgnorePaddingL2Pooling2dSize3Uint8Test(armnn::IWorkloadFactory& workloadFactory);
147
148LayerTestResult<float, 4> AsymmetricNonSquarePooling2dTest(armnn::IWorkloadFactory& workloadFactory);
149LayerTestResult<uint8_t, 4> AsymmetricNonSquarePooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory);
150
151LayerTestResult<float, 4> ComparePooling2dTest(armnn::IWorkloadFactory& workloadFactory,
152 armnn::IWorkloadFactory& refWorkloadFactory,
153 armnn::PoolingAlgorithm poolingType);
154LayerTestResult<uint8_t, 4> ComparePooling2dUint8Test(armnn::IWorkloadFactory& workloadFactory,
155 armnn::IWorkloadFactory& refWorkloadFactory,
156 armnn::PoolingAlgorithm poolingType);
157
158LayerTestResult<float, 4> ConstantLinearActivationTest(armnn::IWorkloadFactory& workloadFactory);
159
160LayerTestResult<float, 4> SimpleNormalizationAcrossTest(armnn::IWorkloadFactory& workloadFactory);
161LayerTestResult<float, 4> SimpleNormalizationWithinTest(armnn::IWorkloadFactory& workloadFactory);
narpra0155a97bc2018-10-02 14:35:53 +0100162LayerTestResult<float,4> SimpleNormalizationAcrossNhwcTest(armnn::IWorkloadFactory& workloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000163
164LayerTestResult<float, 2> SimpleSoftmaxTest(armnn::IWorkloadFactory& workloadFactory, float beta);
165LayerTestResult<uint8_t, 2> SimpleSoftmaxUint8Test(armnn::IWorkloadFactory& workloadFactory, float beta);
166
167LayerTestResult<float, 4> SimpleSigmoidTest(armnn::IWorkloadFactory& workloadFactory);
168
169LayerTestResult<float, 4> SimpleReshapeFloat32Test(armnn::IWorkloadFactory& workloadFactory);
170LayerTestResult<uint8_t, 4> SimpleReshapeUint8Test(armnn::IWorkloadFactory& workloadFactory);
171
172LayerTestResult<float, 4> SimpleFloorTest(armnn::IWorkloadFactory& workloadFactory);
173
174LayerTestResult<float, 1> Concatenation1dTest(armnn::IWorkloadFactory& workloadFactory);
175LayerTestResult<float, 2> Concatenation2dDim0Test(armnn::IWorkloadFactory& workloadFactory);
176LayerTestResult<float, 2> Concatenation2dDim1Test(armnn::IWorkloadFactory& workloadFactory);
177LayerTestResult<float, 2> Concatenation2dDim0DiffInputDimsTest(armnn::IWorkloadFactory& workloadFactory);
178LayerTestResult<float, 2> Concatenation2dDim1DiffInputDimsTest(armnn::IWorkloadFactory& workloadFactory);
179LayerTestResult<float, 3> Concatenation3dDim0Test(armnn::IWorkloadFactory& workloadFactory);
180LayerTestResult<float, 3> Concatenation3dDim1Test(armnn::IWorkloadFactory& workloadFactory);
181LayerTestResult<float, 3> Concatenation3dDim2Test(armnn::IWorkloadFactory& workloadFactory);
182LayerTestResult<float, 3> Concatenation3dDim0DiffInputDimsTest(armnn::IWorkloadFactory& workloadFactory);
183LayerTestResult<float, 3> Concatenation3dDim1DiffInputDimsTest(armnn::IWorkloadFactory& workloadFactory);
184LayerTestResult<float, 3> Concatenation3dDim2DiffInputDimsTest(armnn::IWorkloadFactory& workloadFactory);
185
186LayerTestResult<uint8_t, 4> SimpleSigmoidUint8Test(armnn::IWorkloadFactory& workloadFactory);
187
188LayerTestResult<float, 4> CompareConvolution2dTest(armnn::IWorkloadFactory& workloadFactory,
189 armnn::IWorkloadFactory& refWorkloadFactory);
190
191template<typename T>
192LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest(armnn::IWorkloadFactory& workloadFactory,
jimfly017af00da2018-10-31 14:43:53 +0000193 armnn::IWorkloadFactory& refWorkloadFactory,
194 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +0000195
196LayerTestResult<float, 4> CompareNormalizationTest(armnn::IWorkloadFactory& workloadFactory,
197 armnn::IWorkloadFactory& refWorkloadFactory,
198 armnn::NormalizationAlgorithmChannel normChannel,
199 armnn::NormalizationAlgorithmMethod normMethod);
200
201LayerTestResult<float, 2> CompareSoftmaxTest(armnn::IWorkloadFactory& workloadFactory,
202 armnn::IWorkloadFactory& refWorkloadFactory, float beta);
203
204LayerTestResult<float, 2> FullyConnectedFloat32Test(armnn::IWorkloadFactory& workloadFactory,
205 bool biasEnabled,
206 bool transposeWeights);
207
208std::vector<LayerTestResult<float, 3>> SplitterTest(armnn::IWorkloadFactory& workloadFactory);
209LayerTestResult<float, 3> CopyViaSplitterTest(armnn::IWorkloadFactory& workloadFactory);
210
211LayerTestResult<float, 3> MergerTest(armnn::IWorkloadFactory& workloadFactory);
212
213LayerTestResult<float, 4> AdditionTest(armnn::IWorkloadFactory& workloadFactory);
214LayerTestResult<float, 4> AdditionBroadcast1ElementTest(armnn::IWorkloadFactory& workloadFactory);
215LayerTestResult<float, 4> AdditionBroadcastTest(armnn::IWorkloadFactory& workloadFactory);
216
217LayerTestResult<float, 4> CompareAdditionTest(armnn::IWorkloadFactory& workloadFactory,
David Beckf195f032018-09-06 16:46:34 +0100218 armnn::IWorkloadFactory& refWorkloadFactory);
219
220LayerTestResult<float, 4> SubtractionTest(armnn::IWorkloadFactory& workloadFactory);
221LayerTestResult<float, 4> SubtractionBroadcast1ElementTest(armnn::IWorkloadFactory& workloadFactory);
222LayerTestResult<float, 4> SubtractionBroadcastTest(armnn::IWorkloadFactory& workloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000223
224LayerTestResult<float, 4> CompareActivationTest(armnn::IWorkloadFactory& workloadFactory,
225 armnn::IWorkloadFactory& refWorkloadFactory,
226 armnn::ActivationFunction f,
227 unsigned int batchSize);
228
Francis Murtaghe7a86a42018-08-29 12:42:10 +0100229LayerTestResult<float, 4> DivisionTest(armnn::IWorkloadFactory& workloadFactory);
Francis Murtagh8c5e3dc2018-08-30 17:18:37 +0100230LayerTestResult<float, 4> DivisionByZeroTest(armnn::IWorkloadFactory& workloadFactory);
Francis Murtaghe7a86a42018-08-29 12:42:10 +0100231LayerTestResult<float, 4> DivisionBroadcast1ElementTest(armnn::IWorkloadFactory& workloadFactory);
232LayerTestResult<float, 4> DivisionBroadcast1DVectorTest(armnn::IWorkloadFactory& workloadFactory);
233
telsoa014fcda012018-03-09 14:13:49 +0000234LayerTestResult<float, 4> MultiplicationTest(armnn::IWorkloadFactory& workloadFactory);
surmeh01bceff2f2018-03-29 16:29:27 +0100235LayerTestResult<float, 4> MultiplicationBroadcast1ElementTest(armnn::IWorkloadFactory& workloadFactory);
236LayerTestResult<float, 4> MultiplicationBroadcast1DVectorTest(armnn::IWorkloadFactory& workloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000237
238LayerTestResult<float, 4> CompareMultiplicationTest(armnn::IWorkloadFactory& workloadFactory,
239 armnn::IWorkloadFactory& refWorkloadFactory);
240
241LayerTestResult<float, 4> BatchNormTest(armnn::IWorkloadFactory& workloadFactory);
Matteo Martincigh8eb675e2018-10-17 14:43:29 +0100242LayerTestResult<float, 4> BatchNormNhwcTest(armnn::IWorkloadFactory& workloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000243
244LayerTestResult<float, 4> CompareBatchNormTest(armnn::IWorkloadFactory& workloadFactory,
245 armnn::IWorkloadFactory& refWorkloadFactory);
246
247LayerTestResult<float, 4> BoundedReLuUpperAndLowerBoundTest(armnn::IWorkloadFactory& workloadFactory);
248LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperAndLowerBoundTest(armnn::IWorkloadFactory& workloadFactory);
249LayerTestResult<float, 4> BoundedReLuUpperBoundOnlyTest(armnn::IWorkloadFactory& workloadFactory);
250LayerTestResult<uint8_t, 4> BoundedReLuUint8UpperBoundOnlyTest(armnn::IWorkloadFactory& workloadFactory);
251
252LayerTestResult<float, 4> CompareBoundedReLuTest(armnn::IWorkloadFactory& workloadFactory,
253 armnn::IWorkloadFactory& refWorkloadFactory,
254 float upperBound,
255 float lowerBound);
256
telsoa01c577f2c2018-08-31 09:22:23 +0100257// Tests that the output should be identical to the input when the output dimensions match the input ones.
James Conroy6b965822018-11-01 11:33:09 +0000258LayerTestResult<float, 4> ResizeBilinearNopTest(armnn::IWorkloadFactory& workloadFactory,
259 const armnn::DataLayoutIndexed& dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000260
telsoa01c577f2c2018-08-31 09:22:23 +0100261// Tests the behaviour of the resize bilinear operation when rescaling a 2x2 image into a 1x1 image.
James Conroy6b965822018-11-01 11:33:09 +0000262LayerTestResult<float, 4> SimpleResizeBilinearTest(armnn::IWorkloadFactory& workloadFactory,
263 const armnn::DataLayoutIndexed& dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000264
telsoa01c577f2c2018-08-31 09:22:23 +0100265// Tests the resize bilinear for minification of a square input matrix (also: input dimensions are a
266// multiple of output dimensions).
James Conroy6b965822018-11-01 11:33:09 +0000267LayerTestResult<float, 4> ResizeBilinearSqMinTest(armnn::IWorkloadFactory& workloadFactory,
268 const armnn::DataLayoutIndexed& dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000269
telsoa01c577f2c2018-08-31 09:22:23 +0100270// Tests the resize bilinear for minification (output dimensions smaller than input dimensions).
James Conroy6b965822018-11-01 11:33:09 +0000271LayerTestResult<float, 4> ResizeBilinearMinTest(armnn::IWorkloadFactory& workloadFactory,
272 const armnn::DataLayoutIndexed& dataLayout);
telsoa014fcda012018-03-09 14:13:49 +0000273
telsoa01c577f2c2018-08-31 09:22:23 +0100274// Tests the resize bilinear for magnification (output dimensions bigger than input dimensions).
James Conroy6b965822018-11-01 11:33:09 +0000275LayerTestResult<float, 4> ResizeBilinearMagTest(armnn::IWorkloadFactory& workloadFactory,
276 const armnn::DataLayoutIndexed& dataLayout);
James Conroy074f3712018-10-03 09:32:03 +0100277
telsoa014fcda012018-03-09 14:13:49 +0000278LayerTestResult<float, 4> BatchNormTest(armnn::IWorkloadFactory& workloadFactory);
Nikhil Rajd1340932018-10-18 14:27:50 +0100279LayerTestResult<float, 4> BatchNormNhwcTest(armnn::IWorkloadFactory& workloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000280
281LayerTestResult<float, 2> FakeQuantizationTest(armnn::IWorkloadFactory& workloadFactory);
282
jimfly013aab7c32018-11-12 13:32:08 +0000283LayerTestResult<float, 4> L2Normalization1dTest(armnn::IWorkloadFactory& workloadFactory,
284 const armnn::DataLayoutIndexed& layout);
285LayerTestResult<float, 4> L2Normalization2dTest(armnn::IWorkloadFactory& workloadFactory,
286 const armnn::DataLayoutIndexed& layout);
287LayerTestResult<float, 4> L2Normalization3dTest(armnn::IWorkloadFactory& workloadFactory,
288 const armnn::DataLayoutIndexed& layout);
289LayerTestResult<float, 4> L2Normalization4dTest(armnn::IWorkloadFactory& workloadFactory,
290 const armnn::DataLayoutIndexed& layout);
Matteo Martincigh539b44d2018-10-01 09:26:39 +0100291
telsoa014fcda012018-03-09 14:13:49 +0000292LayerTestResult<float, 4> ConstantTest(armnn::IWorkloadFactory& workloadFactory);
293
294LayerTestResult<uint8_t, 4> ConstantTestUint8(armnn::IWorkloadFactory& workloadFactory);
295
296LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(armnn::IWorkloadFactory& workloadFactory, float upperBound);
297LayerTestResult<uint8_t, 4> BoundedReLuUint8Test(armnn::IWorkloadFactory& workloadFactory,
298 float upperBound,
299 float lowerBound);
300
301LayerTestResult<uint8_t, 2> FullyConnectedUint8Test(armnn::IWorkloadFactory& workloadFactory, bool biasEnabled);
302
303std::vector<LayerTestResult<uint8_t, 3>> SplitterUint8Test(armnn::IWorkloadFactory& workloadFactory);
304LayerTestResult<uint8_t, 3> CopyViaSplitterUint8Test(armnn::IWorkloadFactory& workloadFactory);
305
306LayerTestResult<uint8_t, 3> MergerUint8Test(armnn::IWorkloadFactory& workloadFactory);
307
308LayerTestResult<uint8_t, 4> AdditionUint8Test(armnn::IWorkloadFactory& workloadFactory);
309LayerTestResult<uint8_t, 4> AdditionBroadcast1ElementUint8Test(armnn::IWorkloadFactory& workloadFactory);
310LayerTestResult<uint8_t, 4> AdditionBroadcastUint8Test(armnn::IWorkloadFactory& workloadFactory);
311
David Beckf195f032018-09-06 16:46:34 +0100312LayerTestResult<uint8_t, 4> SubtractionUint8Test(armnn::IWorkloadFactory& workloadFactory);
313LayerTestResult<uint8_t, 4> SubtractionBroadcast1ElementUint8Test(armnn::IWorkloadFactory& workloadFactory);
314LayerTestResult<uint8_t, 4> SubtractionBroadcastUint8Test(armnn::IWorkloadFactory& workloadFactory);
315
telsoa014fcda012018-03-09 14:13:49 +0000316LayerTestResult<uint8_t, 4> CompareActivationUint8Test(armnn::IWorkloadFactory& workloadFactory,
317 armnn::IWorkloadFactory& refWorkloadFactory,
318 armnn::ActivationFunction f);
319
320LayerTestResult<uint8_t, 2> CompareSoftmaxUint8Test(armnn::IWorkloadFactory& workloadFactory,
321 armnn::IWorkloadFactory& refWorkloadFactory,
322 float beta);
323
324LayerTestResult<uint8_t, 4> MultiplicationUint8Test(armnn::IWorkloadFactory& workloadFactory);
surmeh01bceff2f2018-03-29 16:29:27 +0100325LayerTestResult<uint8_t, 4> MultiplicationBroadcast1ElementUint8Test(armnn::IWorkloadFactory& workloadFactory);
326LayerTestResult<uint8_t, 4> MultiplicationBroadcast1DVectorUint8Test(armnn::IWorkloadFactory& workloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000327
David Beck5cd01f32018-09-12 16:00:08 +0100328LayerTestResult<uint8_t, 4> DivisionUint8Test(armnn::IWorkloadFactory& workloadFactory);
329LayerTestResult<uint8_t, 4> DivisionBroadcast1ElementUint8Test(armnn::IWorkloadFactory& workloadFactory);
330LayerTestResult<uint8_t, 4> DivisionBroadcast1DVectorUint8Test(armnn::IWorkloadFactory& workloadFactory);
331
telsoa014fcda012018-03-09 14:13:49 +0000332LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test(armnn::IWorkloadFactory& workloadFactory,
jimfly010a088a62018-10-25 17:05:05 +0100333 bool biasEnabled,
334 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +0000335
336LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test(armnn::IWorkloadFactory& workloadFactory,
narpra015f703182018-10-26 16:24:58 +0100337 bool biasEnabled,
338 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +0000339
340LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test(armnn::IWorkloadFactory& workloadFactory,
jimfly01d84216a2018-10-26 12:56:21 +0100341 bool biasEnabled,
342 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +0000343
344LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test(armnn::IWorkloadFactory& workloadFactory,
jimfly01b9c89632018-10-26 16:50:13 +0100345 bool biasEnabled,
346 const armnn::DataLayoutIndexed& layout);
telsoa014fcda012018-03-09 14:13:49 +0000347
348LayerTestResult<uint8_t, 4> ConstantLinearActivationUint8Test(armnn::IWorkloadFactory& workloadFactory);
349
350LayerTestResult<uint8_t, 4> ResizeBilinearNopUint8Test(armnn::IWorkloadFactory& workloadFactory);
351LayerTestResult<uint8_t, 4> SimpleResizeBilinearUint8Test(armnn::IWorkloadFactory& workloadFactory);
352LayerTestResult<uint8_t, 4> ResizeBilinearSqMinUint8Test(armnn::IWorkloadFactory& workloadFactory);
353LayerTestResult<uint8_t, 4> ResizeBilinearMinUint8Test(armnn::IWorkloadFactory& workloadFactory);
354LayerTestResult<uint8_t, 4> ResizeBilinearMagUint8Test(armnn::IWorkloadFactory& workloadFactory);
355
356LayerTestResult<uint8_t, 4> BatchNormUint8Test(armnn::IWorkloadFactory& workloadFactory);
Matteo Martincigh8eb675e2018-10-17 14:43:29 +0100357LayerTestResult<uint8_t, 4> BatchNormUint8NhwcTest(armnn::IWorkloadFactory& workloadFactory);
telsoa014fcda012018-03-09 14:13:49 +0000358
359LayerTestResult<uint8_t, 4> ConstantUint8Test(armnn::IWorkloadFactory& workloadFactory);
360
361LayerTestResult<uint8_t, 1> Concatenation1dUint8Test(armnn::IWorkloadFactory& workloadFactory);
362LayerTestResult<uint8_t, 2> Concatenation2dDim0Uint8Test(armnn::IWorkloadFactory& workloadFactory);
363LayerTestResult<uint8_t, 2> Concatenation2dDim1Uint8Test(armnn::IWorkloadFactory& workloadFactory);
364LayerTestResult<uint8_t, 2> Concatenation2dDim0DiffInputDimsUint8Test(armnn::IWorkloadFactory& workloadFactory);
365LayerTestResult<uint8_t, 2> Concatenation2dDim1DiffInputDimsUint8Test(armnn::IWorkloadFactory& workloadFactory);
366LayerTestResult<uint8_t, 3> Concatenation3dDim0Uint8Test(armnn::IWorkloadFactory& workloadFactory);
367LayerTestResult<uint8_t, 3> Concatenation3dDim1Uint8Test(armnn::IWorkloadFactory& workloadFactory);
368LayerTestResult<uint8_t, 3> Concatenation3dDim2Uint8Test(armnn::IWorkloadFactory& workloadFactory);
369LayerTestResult<uint8_t, 3> Concatenation3dDim0DiffInputDimsUint8Test(armnn::IWorkloadFactory& workloadFactory);
370LayerTestResult<uint8_t, 3> Concatenation3dDim1DiffInputDimsUint8Test(armnn::IWorkloadFactory& workloadFactory);
371LayerTestResult<uint8_t, 3> Concatenation3dDim2DiffInputDimsUint8Test(armnn::IWorkloadFactory& workloadFactory);
372
373
374LayerTestResult<float, 2> FullyConnectedLargeTest(armnn::IWorkloadFactory& workloadFactory,
375 bool transposeWeights);
376LayerTestResult<float, 4> SimplePermuteFloat32Test(armnn::IWorkloadFactory& workloadFactory);
377LayerTestResult<uint8_t, 4> SimplePermuteUint8Test(armnn::IWorkloadFactory& workloadFactory);
378
Mohamed Nour Abouelseouddd6acea2018-10-18 12:26:19 +0100379LayerTestResult<uint8_t, 2> PadUint82dTest(armnn::IWorkloadFactory& workloadFactory);
380LayerTestResult<uint8_t, 3> PadUint83dTest(armnn::IWorkloadFactory& workloadFactory);
381LayerTestResult<uint8_t, 4> PadUint84dTest(armnn::IWorkloadFactory& workloadFactory);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +0100382
Mohamed Nour Abouelseouddd6acea2018-10-18 12:26:19 +0100383LayerTestResult<float, 2> PadFloat322dTest(armnn::IWorkloadFactory& workloadFactory);
384LayerTestResult<float, 3> PadFloat323dTest(armnn::IWorkloadFactory& workloadFactory);
385LayerTestResult<float, 4> PadFloat324dTest(armnn::IWorkloadFactory& workloadFactory);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +0100386
surmeh01bceff2f2018-03-29 16:29:27 +0100387LayerTestResult<float, 4> PermuteFloat32ValueSet1Test(armnn::IWorkloadFactory& workloadFactory);
388LayerTestResult<float, 4> PermuteFloat32ValueSet2Test(armnn::IWorkloadFactory& workloadFactory);
389LayerTestResult<float, 4> PermuteFloat32ValueSet3Test(armnn::IWorkloadFactory& workloadFactory);
telsoa01c577f2c2018-08-31 09:22:23 +0100390
391LayerTestResult<float, 2> LstmLayerFloat32WithCifgWithPeepholeNoProjectionTest
392 (armnn::IWorkloadFactory& workloadFactory);
393LayerTestResult<float, 2>
394 LstmLayerFloat32NoCifgNoPeepholeNoProjectionTest(armnn::IWorkloadFactory& workloadFactory);
395LayerTestResult<float, 2>
396LstmLayerFloat32NoCifgWithPeepholeWithProjectionTest(armnn::IWorkloadFactory& workloadFactory);
397
398LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(armnn::IWorkloadFactory& workloadFactory);
399LayerTestResult<armnn::Half, 4> SimpleConvertFp32ToFp16Test(armnn::IWorkloadFactory& workloadFactory);
narpra011e4c31d2018-09-28 11:07:51 +0100400
401
402LayerTestResult<uint8_t, 1> MeanUint8SimpleTest(armnn::IWorkloadFactory& workloadFactory);
403LayerTestResult<uint8_t, 3> MeanUint8SimpleAxisTest(armnn::IWorkloadFactory& workloadFactory);
404LayerTestResult<uint8_t, 4> MeanUint8KeepDimsTest(armnn::IWorkloadFactory& workloadFactory);
405LayerTestResult<uint8_t, 4> MeanUint8MultipleDimsTest(armnn::IWorkloadFactory& workloadFactory);
406LayerTestResult<uint8_t, 1> MeanVtsUint8Test(armnn::IWorkloadFactory& workloadFactory);
407LayerTestResult<float, 1> MeanFloatSimpleTest(armnn::IWorkloadFactory& workloadFactory);
408LayerTestResult<float, 3> MeanFloatSimpleAxisTest(armnn::IWorkloadFactory& workloadFactory);
409LayerTestResult<float, 4> MeanFloatKeepDimsTest(armnn::IWorkloadFactory& workloadFactory);
410LayerTestResult<float, 4> MeanFloatMultipleDimsTest(armnn::IWorkloadFactory& workloadFactory);
411LayerTestResult<float, 1> MeanVtsFloat1Test(armnn::IWorkloadFactory& workloadFactory);
412LayerTestResult<float, 3> MeanVtsFloat2Test(armnn::IWorkloadFactory& workloadFactory);
Matteo Martincigh28dcab62018-10-19 16:40:03 +0100413LayerTestResult<float, 3> MeanVtsFloat3Test(armnn::IWorkloadFactory& workloadFactory);
414
Matteo Martincigh8eb675e2018-10-17 14:43:29 +0100415LayerTestResult<float, 4> AdditionAfterMaxPoolTest(armnn::IWorkloadFactory& workloadFactory);
Nattapat Chaimanowong3ea76d52018-11-09 14:10:38 +0000416
417LayerTestResult<float, 4> SpaceToBatchNdSimpleFloat32Test(armnn::IWorkloadFactory& workloadFactory);
418LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsFloat32Test(armnn::IWorkloadFactory& workloadFactory);
419LayerTestResult<float, 4> SpaceToBatchNdMultiBlockFloat32Test(armnn::IWorkloadFactory& workloadFactory);
420LayerTestResult<float, 4> SpaceToBatchNdPaddingFloat32Test(armnn::IWorkloadFactory& workloadFactory);
421
422LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleUint8Test(armnn::IWorkloadFactory& workloadFactory);
423LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsUint8Test(armnn::IWorkloadFactory& workloadFactory);
424LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockUint8Test(armnn::IWorkloadFactory& workloadFactory);
425LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingUint8Test(armnn::IWorkloadFactory& workloadFactory);
426
427LayerTestResult<float, 4> SpaceToBatchNdSimpleNHWCFloat32Test(armnn::IWorkloadFactory& workloadFactory);
428LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsNHWCFloat32Test(armnn::IWorkloadFactory& workloadFactory);
429LayerTestResult<float, 4> SpaceToBatchNdMultiBlockNHWCFloat32Test(armnn::IWorkloadFactory& workloadFactory);
430LayerTestResult<float, 4> SpaceToBatchNdPaddingNHWCFloat32Test(armnn::IWorkloadFactory& workloadFactory);
431
432LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleNHWCUint8Test(armnn::IWorkloadFactory& workloadFactory);
433LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsNHWCUint8Test(armnn::IWorkloadFactory& workloadFactory);
434LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockNHWCUint8Test(armnn::IWorkloadFactory& workloadFactory);
435LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingNHWCUint8Test(armnn::IWorkloadFactory& workloadFactory);
Éanna Ó Catháin4e1e1362018-11-12 11:36:34 +0000436
437LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test1(armnn::IWorkloadFactory& workloadFactory);
438LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test2(armnn::IWorkloadFactory& workloadFactory);
439LayerTestResult<float, 4> BatchToSpaceNdNhwcFloat32Test3(armnn::IWorkloadFactory& workloadFactory);
440
441LayerTestResult<float, 4> BatchToSpaceNdNchwFloat32Test1(armnn::IWorkloadFactory &workloadFactory);
Éanna Ó Catháin262553e2018-11-14 11:26:23 +0000442
443LayerTestResult<uint8_t, 4> BatchToSpaceNdNhwcUintTest1(armnn::IWorkloadFactory &workloadFactory);