blob: a5f7ad88a83467e20f8f7aba2cf6ad6d4c2285e2 [file] [log] [blame]
Ryan OShea3c2795a2022-11-03 17:51:52 +00001//
Tianle Chengfa62fdc2023-12-15 12:38:40 +00002// Copyright © 2022-2024 Arm Ltd and Contributors. All rights reserved.
Ryan OShea3c2795a2022-11-03 17:51:52 +00003// SPDX-License-Identifier: MIT
4//
5
6#include "backendsCommon/test/EndToEndTestImpl.hpp"
7
Teresa Charlina42e0062024-04-23 13:03:40 +01008#include "backendsCommon/test/ActivationEndToEndTestImpl.hpp"
Ryan OShea3c2795a2022-11-03 17:51:52 +00009#include "backendsCommon/test/AdditionEndToEndTestImpl.hpp"
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +000010#include "backendsCommon/test/Convolution2dEndToEndTestImpl.hpp"
Kevin May5b58e312022-12-15 10:15:21 +000011#include "backendsCommon/test/ConcatEndToEndTestImpl.hpp"
Tianle Cheng7790dc62023-12-12 13:52:22 +000012#include "backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp"
13#include "backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp"
Nikhil Raj9a339462022-12-05 11:24:35 +000014#include "backendsCommon/test/MultiplicationEndToEndTestImpl.hpp"
Cathal Corbettbd18eab2022-11-15 12:56:16 +000015#include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp"
Teresa Charlinca5a23a2023-12-15 14:20:47 +000016#include "backendsCommon/test/QuantizationEndToEndTestImpl.hpp"
Cathal Corbettb30e6552022-12-07 11:50:50 +000017#include "backendsCommon/test/ReshapeEndToEndTestImpl.hpp"
Teresa Charlince655882023-11-21 15:44:13 +000018#include "backendsCommon/test/ResizeEndToEndTestImpl.hpp"
Cathal Corbett3b9acd52022-12-09 12:17:27 +000019#include "backendsCommon/test/SliceEndToEndTestImpl.hpp"
Kevin May1bea6be2023-12-12 11:18:46 +000020#include "backendsCommon/test/SplitterEndToEndTestImpl.hpp"
Nikhil Raj9a339462022-12-05 11:24:35 +000021#include "backendsCommon/test/SubtractionEndToEndTestImpl.hpp"
Matthew Sloyanfc9d5e72022-12-08 13:38:23 +000022#include "backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp"
Cathal Corbett0bb096d2022-12-22 13:09:38 +000023#include "backendsCommon/test/TransposeEndToEndTestImpl.hpp"
Ryan OShea3c2795a2022-11-03 17:51:52 +000024
25#include <doctest/doctest.h>
26
27TEST_SUITE("TosaRefEndToEnd")
28{
Tracy Narine10403ec2023-11-28 11:55:08 +000029static std::vector<BackendId> tosaDefaultBackends = { "TosaRef" };
Ryan OShea3c2795a2022-11-03 17:51:52 +000030
Teresa Charlina42e0062024-04-23 13:03:40 +010031// Activation
32//LeakyRelu
33TEST_CASE("TosaRefLeakyReluActivationFloat32")
34{
35 ActivationEndToEndTest<DataType::Float32>(tosaDefaultBackends, ActivationFunction::LeakyReLu, 1.f, 0, 0.01f);
36}
37TEST_CASE("TosaRefLeakyReluActivationFloat16")
38{
39 ActivationEndToEndTest<DataType::Float16>(tosaDefaultBackends, ActivationFunction::LeakyReLu, 0.3f, 5, 0.01f);
40}
41TEST_CASE("TosaRefLeakyReluActivationInt8")
42{
43 ActivationEndToEndTest<DataType::QAsymmS8>(tosaDefaultBackends, ActivationFunction::LeakyReLu, 0.6f, 7, 0.01f);
44}
45TEST_CASE("TosaRefLeakyReluActivationInt16")
46{
47 ActivationEndToEndTest<DataType::QSymmS16>(tosaDefaultBackends, ActivationFunction::LeakyReLu, 0.15f, 0, 0.01f);
48}
49
Ryan OShea3c2795a2022-11-03 17:51:52 +000050// Addition
Cathal Corbettbd18eab2022-11-15 12:56:16 +000051TEST_CASE("TosaRefAdditionEndtoEndTestFloat32")
Ryan OShea3c2795a2022-11-03 17:51:52 +000052{
Cathal Corbettbd18eab2022-11-15 12:56:16 +000053 AdditionEndToEnd<DataType::Float32>(tosaDefaultBackends);
Ryan OShea3c2795a2022-11-03 17:51:52 +000054}
55
Cathal Corbettbd18eab2022-11-15 12:56:16 +000056TEST_CASE("TosaRefAdditionEndtoEndTestInt32")
Matthew Sloyan2523b792022-11-14 10:18:01 +000057{
Cathal Corbettbd18eab2022-11-15 12:56:16 +000058 AdditionEndToEnd<DataType::Signed32>(tosaDefaultBackends);
Matthew Sloyan2523b792022-11-14 10:18:01 +000059}
60
Cathal Corbettbd18eab2022-11-15 12:56:16 +000061TEST_CASE("TosaRefAdditionEndtoEndTestFloat16")
Matthew Sloyan2523b792022-11-14 10:18:01 +000062{
Cathal Corbettbd18eab2022-11-15 12:56:16 +000063 AdditionEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
64}
65
Kevin May5b58e312022-12-15 10:15:21 +000066// Concat
67TEST_CASE("TosaRefConcatEndToEndDim0TestFloat32")
68{
69 ConcatDim0EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
70}
71
72TEST_CASE("TosaRefConcatEndToEndDim0TestInt32")
73{
74 ConcatDim0EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
75}
76
77TEST_CASE("TosaRefConcatEndToEndDim1TestFloat32")
78{
79 ConcatDim1EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
80}
81
82TEST_CASE("TosaRefConcatEndToEndDim1TestInt32")
83{
84 ConcatDim1EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
85}
86
87TEST_CASE("TosaRefConcatEndToEndDim2TestFloat32")
88{
89 ConcatDim2EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
90}
91
92TEST_CASE("TosaRefConcatEndToEndDim2TestInt32")
93{
94 ConcatDim2EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
95}
96
97TEST_CASE("TosaRefConcatEndToEndDim3TestFloat32")
98{
99 ConcatDim3EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
100}
101
102TEST_CASE("TosaRefConcatEndToEndDim3TestInt32")
103{
104 ConcatDim3EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
105}
106
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +0000107// Conv2d
108TEST_CASE("TosaRefConv2dEndtoEndTestFloat32")
109{
110 Convolution2dEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends, armnn::DataLayout::NHWC);
111}
112
113TEST_CASE("TosaRefConv2dWithoutBiasEndtoEndTestFloat32")
114{
115 Convolution2dEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends, armnn::DataLayout::NHWC, false);
116}
117
John Mcloughlinceb44282024-04-23 16:47:04 +0100118TEST_CASE("TosaRefConv2dEndtoEndTestInt8")
119{
120 Convolution2dEndToEnd<armnn::DataType::QSymmS8,
121 armnn::DataType::QSymmS8,
122 armnn::DataType::Signed32>(tosaDefaultBackends, armnn::DataLayout::NHWC);
123}
124
125TEST_CASE("TosaRefConv2dWithoutBiasEndtoEndTestInt8")
126{
127 Convolution2dEndToEnd<armnn::DataType::QSymmS8,
128 armnn::DataType::QSymmS8,
129 armnn::DataType::Signed32>(tosaDefaultBackends, armnn::DataLayout::NHWC, false);
130}
131
Teresa Charlina52bca22024-02-01 17:36:48 +0000132// Maximum
133TEST_CASE("TosaRefMaximumEndtoEndTestInt8")
134{
135 ElementwiseBinarySimpleNoReshapeEndToEnd<DataType::Signed32>(tosaDefaultBackends,
136 armnn::BinaryOperation::Maximum);
137}
138
139// Pooling
Cathal Corbettbd18eab2022-11-15 12:56:16 +0000140// Average Pool 2D
141TEST_CASE("TosaRefAvgPool2DEndtoEndTestFloat32")
142{
143 AvgPool2dEndToEnd<DataType::Float32>(tosaDefaultBackends);
144}
145
146TEST_CASE("TosaRefAvgPool2DEndtoEndTestFloat16")
147{
148 AvgPool2dEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
149}
150
151TEST_CASE("TosaRefAvgPool2DIgnoreValueEndtoEndTestFloat32")
152{
153 AvgPool2dEndToEnd<DataType::Float32>(tosaDefaultBackends, PaddingMethod::IgnoreValue);
Matthew Sloyan2523b792022-11-14 10:18:01 +0000154}
155
Teresa Charlin3fbad942022-12-15 10:35:37 +0000156// Max Pool 2D
157TEST_CASE("TosaRefMaxPool2DEndtoEndTestFloat32")
158{
159 MaxPool2dEndToEnd<DataType::Float32>(tosaDefaultBackends);
160}
161
162TEST_CASE("TosaRefMaxPool2DEndtoEndTestFloat16")
163{
164 MaxPool2dEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
165}
166
167TEST_CASE("TosaRefMaxPool2DIgnoreValueEndtoEndTestFloat32")
168{
169 MaxPool2dEndToEnd<DataType::Float32>(tosaDefaultBackends, PaddingMethod::IgnoreValue);
170}
171
Tianle Chengfa62fdc2023-12-15 12:38:40 +0000172TEST_CASE("TosaRefMaxPool2DTwoLayerEndtoEndTestFloat32")
173{
174 MaxPool2dTwoLayerEndToEnd<DataType::Float32>(tosaDefaultBackends);
175}
176
177TEST_CASE("TosaRefMaxPool2DThreeLayerEndtoEndTestFloat32")
178{
179 MaxPool2dThreeLayerEndToEnd<DataType::Float32>(tosaDefaultBackends);
180}
181
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000182// Quantization
183TEST_CASE("TosaRefQuantizeFromFloat32ToInt8")
184{
185 QuantizationEndToEndFloat32<DataType::QAsymmS8>(tosaDefaultBackends);
186}
187
188TEST_CASE("TosaRefQuantizeFromFloat32ToInt16")
189{
190 QuantizationEndToEndFloat32<DataType::QSymmS16>(tosaDefaultBackends);
191}
192
193TEST_CASE("TosaRefQuantizeFromFloat32ToInt32")
194{
195 QuantizationEndToEndFloat32<DataType::Signed32>(tosaDefaultBackends);
196}
197
198TEST_CASE("TosaRefQuantizeFromFloat16ToInt8")
199{
200 QuantizationEndToEndFloat16<DataType::QAsymmS8>(tosaDefaultBackends);
201}
202
203TEST_CASE("TosaRefQuantizeFromFloat16ToInt16")
204{
205 QuantizationEndToEndFloat16<DataType::QSymmS16>(tosaDefaultBackends);
206}
207
208TEST_CASE("TosaRefQuantizeFromFloat16ToInt32")
209{
210 QuantizationEndToEndFloat16<DataType::Signed32>(tosaDefaultBackends);
211}
212
Cathal Corbettb30e6552022-12-07 11:50:50 +0000213// Reshape
214TEST_CASE("TosaRefReshapeEndtoEndTestFloat32")
215{
216 ReshapeEndToEnd<DataType::Float32>(tosaDefaultBackends);
217}
218
219TEST_CASE("TosaRefReshapeEndtoEndTestInt32")
220{
221 ReshapeEndToEnd<DataType::Signed32>(tosaDefaultBackends);
222}
223
224TEST_CASE("TosaRefReshapeEndtoEndTestFloat16")
225{
226 ReshapeEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
227}
228
David Monahand7fca092023-01-12 14:53:34 +0000229TEST_CASE("TosaRefRsqrtEndtoEndTestFloat32")
230{
231 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends,
232 UnaryOperation::Rsqrt);
233}
234
Teresa Charlince655882023-11-21 15:44:13 +0000235// Resize
236TEST_CASE("TosaRefResizeNearestNeighborEndToEndFloat32AlignCornersNhwcTest")
237{
238 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends, armnn::DataLayout::NHWC, true, false);
239}
240
241TEST_CASE("TosaRefResizeNearestNeighborEndToEndFloat32HalfPixelNhwcTest")
242{
243 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends, armnn::DataLayout::NHWC, false, true);
244}
245
246TEST_CASE("TosaRefResizeNearestNeighborEndToEndFloat16AlignCornersNhwcTest")
247{
248 ResizeNearestNeighborEndToEnd<armnn::DataType::Float16>(tosaDefaultBackends, armnn::DataLayout::NHWC, true, false);
249}
250
251TEST_CASE("TosaRefResizeNearestNeighborEndToEndFloat16HalfPixelNhwcTest")
252{
253 ResizeNearestNeighborEndToEnd<armnn::DataType::Float16>(tosaDefaultBackends, armnn::DataLayout::NHWC, false, true);
254}
255
256TEST_CASE("TosaRefResizeNearestNeighborEndToEndInt8AlignCornersNhwcTest")
257{
258 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS8>(tosaDefaultBackends, armnn::DataLayout::NHWC, true, false);
259}
260
261TEST_CASE("TosaRefResizeNearestNeighborEndToEndInt8HalfPixelNhwcTest")
262{
263 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS8>(tosaDefaultBackends, armnn::DataLayout::NHWC, false, true);
264}
265
266TEST_CASE("TosaRefResizeNearestNeighborEndToEndInt16AlignCornersNhwcTest")
267{
268 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(tosaDefaultBackends, armnn::DataLayout::NHWC, true, false);
269}
270
271TEST_CASE("TosaRefResizeNearestNeighborEndToEndInt16HalfPixelNhwcTest")
272{
273 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(tosaDefaultBackends, armnn::DataLayout::NHWC, false, true);
274}
275
Cathal Corbett3b9acd52022-12-09 12:17:27 +0000276// Slice
277TEST_CASE("TosaRefSliceEndtoEndTestFloat32")
278{
279 SliceEndToEnd<DataType::Float32>(tosaDefaultBackends);
280}
281
282TEST_CASE("TosaRefSliceEndtoEndTestInt32")
283{
284 SliceEndToEnd<DataType::Signed32>(tosaDefaultBackends);
285}
286
287TEST_CASE("TosaRefSliceEndtoEndTestFloat16")
288{
289 SliceEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
290}
Kevin May1bea6be2023-12-12 11:18:46 +0000291
292// Split
293TEST_CASE("TosaRefSplit1dEndtoEndTestBoolean")
294{
295 Splitter1dEndToEnd<DataType::Boolean>(tosaDefaultBackends);
296}
297
298TEST_CASE("TosaRefSplit1dEndtoEndTestInt8")
299{
300 Splitter1dEndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
301}
302
303TEST_CASE("TosaRefSplit1dEndtoEndTestSigned16")
304{
305 Splitter1dEndToEnd<DataType::QSymmS16>(tosaDefaultBackends);
306}
307
308TEST_CASE("TosaRefSplit1dEndtoEndTestInt32")
309{
310 Splitter1dEndToEnd<DataType::Signed32>(tosaDefaultBackends);
311}
312
313TEST_CASE("TosaRefSplit1dEndtoEndTestFloat16")
314{
315 Splitter1dEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
316}
317
318TEST_CASE("TosaRefSplit1dEndToEndFloat32")
319{
320 Splitter1dEndToEnd<DataType::Float32>(tosaDefaultBackends);
321}
322
323TEST_CASE("TosaRefSplit2dDim0EndtoEndTestFloat32")
324{
325 Splitter2dDim0EndToEnd<DataType::Float32>(tosaDefaultBackends);
326}
327
328TEST_CASE("TosaRefSplit2dDim1EndtoEndTestFloat32")
329{
330 Splitter2dDim1EndToEnd<DataType::Float32>(tosaDefaultBackends);
331}
332
333TEST_CASE("TosaRefSplit3dDim0EndtoEndTestFloat32")
334{
335 Splitter3dDim0EndToEnd<DataType::Float32>(tosaDefaultBackends);
336}
337
338TEST_CASE("TosaRefSplit3dDim1EndtoEndTestFloat32")
339{
340 Splitter3dDim1EndToEnd<DataType::Float32>(tosaDefaultBackends);
341}
342
343TEST_CASE("TosaRefSplit3dDim1EndtoEndTestFloat16")
344{
345 Splitter3dDim1EndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
346}
347
348TEST_CASE("TosaRefSplit3dDim1EndtoEndTestBoolean")
349{
350 Splitter3dDim1EndToEnd<DataType::Boolean>(tosaDefaultBackends);
351}
352
353TEST_CASE("TosaRefSplit3dDim1EndtoEndTestInt8")
354{
355 Splitter3dDim1EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
356}
357
358TEST_CASE("TosaRefSplit3dDim1EndtoEndTestSigned16")
359{
360 Splitter3dDim1EndToEnd<DataType::QSymmS16>(tosaDefaultBackends);
361}
362
363TEST_CASE("TosaRefSplit3dDim1EndtoEndTestInt32")
364{
365 Splitter3dDim1EndToEnd<DataType::Signed32>(tosaDefaultBackends);
366}
367
368TEST_CASE("TosaRefSplit3dDim2EndtoEndTestInt8")
369{
370 Splitter3dDim2EndToEnd<DataType::QAsymmS8>(tosaDefaultBackends);
371}
372
373TEST_CASE("TosaRefSplit4dDim0EndtoEndTestInt8")
374{
375 Splitter4dDim0EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
376}
377
378TEST_CASE("TosaRefSplit4dDim1EndtoEndTestInt8")
379{
380 Splitter4dDim1EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
381}
382
383TEST_CASE("TosaRefSplit4dDim2EndtoEndTestBoolean")
384{
385 Splitter4dDim2EndToEnd<DataType::Boolean>(tosaDefaultBackends);
386}
387
388TEST_CASE("TosaRefSplit4dDim2EndtoEndTestInt8")
389{
390 Splitter4dDim2EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
391}
392
393TEST_CASE("TosaRefSplit4dDim2EndtoEndTestInt16")
394{
395 Splitter4dDim2EndToEnd<DataType::QSymmS16>(tosaDefaultBackends);
396}
397
398TEST_CASE("TosaRefSplit4dDim2EndtoEndTestInt32")
399{
400 Splitter4dDim2EndToEnd<DataType::Signed32>(tosaDefaultBackends);
401}
402
403TEST_CASE("TosaRefSplit4dDim2EndtoEndTestFloat16")
404{
405 Splitter4dDim2EndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
406}
407
408TEST_CASE("TosaRefSplit4dDim3EndtoEndTestInt8")
409{
410 Splitter4dDim3EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
411}
412
413// Subtraction
Nikhil Raj9a339462022-12-05 11:24:35 +0000414TEST_CASE("TosaRefSubtractionEndtoEndTestFloat32")
415{
416 SubtractionEndToEnd<DataType::Float32>(tosaDefaultBackends);
417}
418
419TEST_CASE("TosaRefSubtractionEndtoEndTestInt32")
420{
421 SubtractionEndToEnd<DataType::Signed32>(tosaDefaultBackends);
422}
423
424TEST_CASE("TosaRefSubtractionEndtoEndTestFloat16")
425{
426 SubtractionEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
427}
428
429TEST_CASE("TosaRefMultiplicationEndtoEndTestFloat32")
430{
431 MultiplicationEndToEnd<DataType::Float32>(tosaDefaultBackends);
432}
433
434TEST_CASE("TosaRefMultiplicationEndtoEndTestInt32")
435{
436 MultiplicationEndToEnd<DataType::Signed32>(tosaDefaultBackends);
437}
438
439TEST_CASE("TosaRefMultiplicationEndtoEndTestFloat16")
440{
441 MultiplicationEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
442}
Cathal Corbett3b9acd52022-12-09 12:17:27 +0000443
Matthew Sloyanfc9d5e72022-12-08 13:38:23 +0000444// TransposeConvolution2d
445TEST_CASE("TosaRefTransposeConvolution2dEndToEndFloatNhwcTest")
446{
447 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
448 tosaDefaultBackends, armnn::DataLayout::NHWC);
449}
450
451TEST_CASE("TosaRefSimpleTransposeConvolution2dEndToEndFloatNhwcTest")
452{
453 SimpleTransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
454 tosaDefaultBackends, armnn::DataLayout::NHWC);
455}
456
Cathal Corbett0bb096d2022-12-22 13:09:38 +0000457// Transpose
458TEST_CASE("TosaRefTransposeEndtoEndTestFloat32")
459{
460 TransposeEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
461}
462
Ryan OShea3c2795a2022-11-03 17:51:52 +0000463}