blob: f5edfb0e0b1a08781ff1016c1885570463022ec9 [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
8#include "backendsCommon/test/AdditionEndToEndTestImpl.hpp"
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +00009#include "backendsCommon/test/Convolution2dEndToEndTestImpl.hpp"
Kevin May5b58e312022-12-15 10:15:21 +000010#include "backendsCommon/test/ConcatEndToEndTestImpl.hpp"
Tianle Cheng7790dc62023-12-12 13:52:22 +000011#include "backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp"
12#include "backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp"
Nikhil Raj9a339462022-12-05 11:24:35 +000013#include "backendsCommon/test/MultiplicationEndToEndTestImpl.hpp"
Cathal Corbettbd18eab2022-11-15 12:56:16 +000014#include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp"
Teresa Charlinca5a23a2023-12-15 14:20:47 +000015#include "backendsCommon/test/QuantizationEndToEndTestImpl.hpp"
Cathal Corbettb30e6552022-12-07 11:50:50 +000016#include "backendsCommon/test/ReshapeEndToEndTestImpl.hpp"
Teresa Charlince655882023-11-21 15:44:13 +000017#include "backendsCommon/test/ResizeEndToEndTestImpl.hpp"
Cathal Corbett3b9acd52022-12-09 12:17:27 +000018#include "backendsCommon/test/SliceEndToEndTestImpl.hpp"
Kevin May1bea6be2023-12-12 11:18:46 +000019#include "backendsCommon/test/SplitterEndToEndTestImpl.hpp"
Nikhil Raj9a339462022-12-05 11:24:35 +000020#include "backendsCommon/test/SubtractionEndToEndTestImpl.hpp"
Matthew Sloyanfc9d5e72022-12-08 13:38:23 +000021#include "backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp"
Cathal Corbett0bb096d2022-12-22 13:09:38 +000022#include "backendsCommon/test/TransposeEndToEndTestImpl.hpp"
Ryan OShea3c2795a2022-11-03 17:51:52 +000023
24#include <doctest/doctest.h>
25
26TEST_SUITE("TosaRefEndToEnd")
27{
Tracy Narine10403ec2023-11-28 11:55:08 +000028static std::vector<BackendId> tosaDefaultBackends = { "TosaRef" };
Ryan OShea3c2795a2022-11-03 17:51:52 +000029
30// Addition
Cathal Corbettbd18eab2022-11-15 12:56:16 +000031TEST_CASE("TosaRefAdditionEndtoEndTestFloat32")
Ryan OShea3c2795a2022-11-03 17:51:52 +000032{
Cathal Corbettbd18eab2022-11-15 12:56:16 +000033 AdditionEndToEnd<DataType::Float32>(tosaDefaultBackends);
Ryan OShea3c2795a2022-11-03 17:51:52 +000034}
35
Cathal Corbettbd18eab2022-11-15 12:56:16 +000036TEST_CASE("TosaRefAdditionEndtoEndTestInt32")
Matthew Sloyan2523b792022-11-14 10:18:01 +000037{
Cathal Corbettbd18eab2022-11-15 12:56:16 +000038 AdditionEndToEnd<DataType::Signed32>(tosaDefaultBackends);
Matthew Sloyan2523b792022-11-14 10:18:01 +000039}
40
Cathal Corbettbd18eab2022-11-15 12:56:16 +000041TEST_CASE("TosaRefAdditionEndtoEndTestFloat16")
Matthew Sloyan2523b792022-11-14 10:18:01 +000042{
Cathal Corbettbd18eab2022-11-15 12:56:16 +000043 AdditionEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
44}
45
Kevin May5b58e312022-12-15 10:15:21 +000046// Concat
47TEST_CASE("TosaRefConcatEndToEndDim0TestFloat32")
48{
49 ConcatDim0EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
50}
51
52TEST_CASE("TosaRefConcatEndToEndDim0TestInt32")
53{
54 ConcatDim0EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
55}
56
57TEST_CASE("TosaRefConcatEndToEndDim1TestFloat32")
58{
59 ConcatDim1EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
60}
61
62TEST_CASE("TosaRefConcatEndToEndDim1TestInt32")
63{
64 ConcatDim1EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
65}
66
67TEST_CASE("TosaRefConcatEndToEndDim2TestFloat32")
68{
69 ConcatDim2EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
70}
71
72TEST_CASE("TosaRefConcatEndToEndDim2TestInt32")
73{
74 ConcatDim2EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
75}
76
77TEST_CASE("TosaRefConcatEndToEndDim3TestFloat32")
78{
79 ConcatDim3EndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
80}
81
82TEST_CASE("TosaRefConcatEndToEndDim3TestInt32")
83{
84 ConcatDim3EndToEnd<armnn::DataType::Signed32>(tosaDefaultBackends);
85}
86
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +000087// Conv2d
88TEST_CASE("TosaRefConv2dEndtoEndTestFloat32")
89{
90 Convolution2dEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends, armnn::DataLayout::NHWC);
91}
92
93TEST_CASE("TosaRefConv2dWithoutBiasEndtoEndTestFloat32")
94{
95 Convolution2dEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends, armnn::DataLayout::NHWC, false);
96}
97
John Mcloughlinceb44282024-04-23 16:47:04 +010098TEST_CASE("TosaRefConv2dEndtoEndTestInt8")
99{
100 Convolution2dEndToEnd<armnn::DataType::QSymmS8,
101 armnn::DataType::QSymmS8,
102 armnn::DataType::Signed32>(tosaDefaultBackends, armnn::DataLayout::NHWC);
103}
104
105TEST_CASE("TosaRefConv2dWithoutBiasEndtoEndTestInt8")
106{
107 Convolution2dEndToEnd<armnn::DataType::QSymmS8,
108 armnn::DataType::QSymmS8,
109 armnn::DataType::Signed32>(tosaDefaultBackends, armnn::DataLayout::NHWC, false);
110}
111
Teresa Charlina52bca22024-02-01 17:36:48 +0000112// Maximum
113TEST_CASE("TosaRefMaximumEndtoEndTestInt8")
114{
115 ElementwiseBinarySimpleNoReshapeEndToEnd<DataType::Signed32>(tosaDefaultBackends,
116 armnn::BinaryOperation::Maximum);
117}
118
119// Pooling
Cathal Corbettbd18eab2022-11-15 12:56:16 +0000120// Average Pool 2D
121TEST_CASE("TosaRefAvgPool2DEndtoEndTestFloat32")
122{
123 AvgPool2dEndToEnd<DataType::Float32>(tosaDefaultBackends);
124}
125
126TEST_CASE("TosaRefAvgPool2DEndtoEndTestFloat16")
127{
128 AvgPool2dEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
129}
130
131TEST_CASE("TosaRefAvgPool2DIgnoreValueEndtoEndTestFloat32")
132{
133 AvgPool2dEndToEnd<DataType::Float32>(tosaDefaultBackends, PaddingMethod::IgnoreValue);
Matthew Sloyan2523b792022-11-14 10:18:01 +0000134}
135
Teresa Charlin3fbad942022-12-15 10:35:37 +0000136// Max Pool 2D
137TEST_CASE("TosaRefMaxPool2DEndtoEndTestFloat32")
138{
139 MaxPool2dEndToEnd<DataType::Float32>(tosaDefaultBackends);
140}
141
142TEST_CASE("TosaRefMaxPool2DEndtoEndTestFloat16")
143{
144 MaxPool2dEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
145}
146
147TEST_CASE("TosaRefMaxPool2DIgnoreValueEndtoEndTestFloat32")
148{
149 MaxPool2dEndToEnd<DataType::Float32>(tosaDefaultBackends, PaddingMethod::IgnoreValue);
150}
151
Tianle Chengfa62fdc2023-12-15 12:38:40 +0000152TEST_CASE("TosaRefMaxPool2DTwoLayerEndtoEndTestFloat32")
153{
154 MaxPool2dTwoLayerEndToEnd<DataType::Float32>(tosaDefaultBackends);
155}
156
157TEST_CASE("TosaRefMaxPool2DThreeLayerEndtoEndTestFloat32")
158{
159 MaxPool2dThreeLayerEndToEnd<DataType::Float32>(tosaDefaultBackends);
160}
161
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000162// Quantization
163TEST_CASE("TosaRefQuantizeFromFloat32ToInt8")
164{
165 QuantizationEndToEndFloat32<DataType::QAsymmS8>(tosaDefaultBackends);
166}
167
168TEST_CASE("TosaRefQuantizeFromFloat32ToInt16")
169{
170 QuantizationEndToEndFloat32<DataType::QSymmS16>(tosaDefaultBackends);
171}
172
173TEST_CASE("TosaRefQuantizeFromFloat32ToInt32")
174{
175 QuantizationEndToEndFloat32<DataType::Signed32>(tosaDefaultBackends);
176}
177
178TEST_CASE("TosaRefQuantizeFromFloat16ToInt8")
179{
180 QuantizationEndToEndFloat16<DataType::QAsymmS8>(tosaDefaultBackends);
181}
182
183TEST_CASE("TosaRefQuantizeFromFloat16ToInt16")
184{
185 QuantizationEndToEndFloat16<DataType::QSymmS16>(tosaDefaultBackends);
186}
187
188TEST_CASE("TosaRefQuantizeFromFloat16ToInt32")
189{
190 QuantizationEndToEndFloat16<DataType::Signed32>(tosaDefaultBackends);
191}
192
Cathal Corbettb30e6552022-12-07 11:50:50 +0000193// Reshape
194TEST_CASE("TosaRefReshapeEndtoEndTestFloat32")
195{
196 ReshapeEndToEnd<DataType::Float32>(tosaDefaultBackends);
197}
198
199TEST_CASE("TosaRefReshapeEndtoEndTestInt32")
200{
201 ReshapeEndToEnd<DataType::Signed32>(tosaDefaultBackends);
202}
203
204TEST_CASE("TosaRefReshapeEndtoEndTestFloat16")
205{
206 ReshapeEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
207}
208
David Monahand7fca092023-01-12 14:53:34 +0000209TEST_CASE("TosaRefRsqrtEndtoEndTestFloat32")
210{
211 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends,
212 UnaryOperation::Rsqrt);
213}
214
Teresa Charlince655882023-11-21 15:44:13 +0000215// Resize
216TEST_CASE("TosaRefResizeNearestNeighborEndToEndFloat32AlignCornersNhwcTest")
217{
218 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends, armnn::DataLayout::NHWC, true, false);
219}
220
221TEST_CASE("TosaRefResizeNearestNeighborEndToEndFloat32HalfPixelNhwcTest")
222{
223 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends, armnn::DataLayout::NHWC, false, true);
224}
225
226TEST_CASE("TosaRefResizeNearestNeighborEndToEndFloat16AlignCornersNhwcTest")
227{
228 ResizeNearestNeighborEndToEnd<armnn::DataType::Float16>(tosaDefaultBackends, armnn::DataLayout::NHWC, true, false);
229}
230
231TEST_CASE("TosaRefResizeNearestNeighborEndToEndFloat16HalfPixelNhwcTest")
232{
233 ResizeNearestNeighborEndToEnd<armnn::DataType::Float16>(tosaDefaultBackends, armnn::DataLayout::NHWC, false, true);
234}
235
236TEST_CASE("TosaRefResizeNearestNeighborEndToEndInt8AlignCornersNhwcTest")
237{
238 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS8>(tosaDefaultBackends, armnn::DataLayout::NHWC, true, false);
239}
240
241TEST_CASE("TosaRefResizeNearestNeighborEndToEndInt8HalfPixelNhwcTest")
242{
243 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS8>(tosaDefaultBackends, armnn::DataLayout::NHWC, false, true);
244}
245
246TEST_CASE("TosaRefResizeNearestNeighborEndToEndInt16AlignCornersNhwcTest")
247{
248 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(tosaDefaultBackends, armnn::DataLayout::NHWC, true, false);
249}
250
251TEST_CASE("TosaRefResizeNearestNeighborEndToEndInt16HalfPixelNhwcTest")
252{
253 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(tosaDefaultBackends, armnn::DataLayout::NHWC, false, true);
254}
255
Cathal Corbett3b9acd52022-12-09 12:17:27 +0000256// Slice
257TEST_CASE("TosaRefSliceEndtoEndTestFloat32")
258{
259 SliceEndToEnd<DataType::Float32>(tosaDefaultBackends);
260}
261
262TEST_CASE("TosaRefSliceEndtoEndTestInt32")
263{
264 SliceEndToEnd<DataType::Signed32>(tosaDefaultBackends);
265}
266
267TEST_CASE("TosaRefSliceEndtoEndTestFloat16")
268{
269 SliceEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
270}
Kevin May1bea6be2023-12-12 11:18:46 +0000271
272// Split
273TEST_CASE("TosaRefSplit1dEndtoEndTestBoolean")
274{
275 Splitter1dEndToEnd<DataType::Boolean>(tosaDefaultBackends);
276}
277
278TEST_CASE("TosaRefSplit1dEndtoEndTestInt8")
279{
280 Splitter1dEndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
281}
282
283TEST_CASE("TosaRefSplit1dEndtoEndTestSigned16")
284{
285 Splitter1dEndToEnd<DataType::QSymmS16>(tosaDefaultBackends);
286}
287
288TEST_CASE("TosaRefSplit1dEndtoEndTestInt32")
289{
290 Splitter1dEndToEnd<DataType::Signed32>(tosaDefaultBackends);
291}
292
293TEST_CASE("TosaRefSplit1dEndtoEndTestFloat16")
294{
295 Splitter1dEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
296}
297
298TEST_CASE("TosaRefSplit1dEndToEndFloat32")
299{
300 Splitter1dEndToEnd<DataType::Float32>(tosaDefaultBackends);
301}
302
303TEST_CASE("TosaRefSplit2dDim0EndtoEndTestFloat32")
304{
305 Splitter2dDim0EndToEnd<DataType::Float32>(tosaDefaultBackends);
306}
307
308TEST_CASE("TosaRefSplit2dDim1EndtoEndTestFloat32")
309{
310 Splitter2dDim1EndToEnd<DataType::Float32>(tosaDefaultBackends);
311}
312
313TEST_CASE("TosaRefSplit3dDim0EndtoEndTestFloat32")
314{
315 Splitter3dDim0EndToEnd<DataType::Float32>(tosaDefaultBackends);
316}
317
318TEST_CASE("TosaRefSplit3dDim1EndtoEndTestFloat32")
319{
320 Splitter3dDim1EndToEnd<DataType::Float32>(tosaDefaultBackends);
321}
322
323TEST_CASE("TosaRefSplit3dDim1EndtoEndTestFloat16")
324{
325 Splitter3dDim1EndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
326}
327
328TEST_CASE("TosaRefSplit3dDim1EndtoEndTestBoolean")
329{
330 Splitter3dDim1EndToEnd<DataType::Boolean>(tosaDefaultBackends);
331}
332
333TEST_CASE("TosaRefSplit3dDim1EndtoEndTestInt8")
334{
335 Splitter3dDim1EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
336}
337
338TEST_CASE("TosaRefSplit3dDim1EndtoEndTestSigned16")
339{
340 Splitter3dDim1EndToEnd<DataType::QSymmS16>(tosaDefaultBackends);
341}
342
343TEST_CASE("TosaRefSplit3dDim1EndtoEndTestInt32")
344{
345 Splitter3dDim1EndToEnd<DataType::Signed32>(tosaDefaultBackends);
346}
347
348TEST_CASE("TosaRefSplit3dDim2EndtoEndTestInt8")
349{
350 Splitter3dDim2EndToEnd<DataType::QAsymmS8>(tosaDefaultBackends);
351}
352
353TEST_CASE("TosaRefSplit4dDim0EndtoEndTestInt8")
354{
355 Splitter4dDim0EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
356}
357
358TEST_CASE("TosaRefSplit4dDim1EndtoEndTestInt8")
359{
360 Splitter4dDim1EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
361}
362
363TEST_CASE("TosaRefSplit4dDim2EndtoEndTestBoolean")
364{
365 Splitter4dDim2EndToEnd<DataType::Boolean>(tosaDefaultBackends);
366}
367
368TEST_CASE("TosaRefSplit4dDim2EndtoEndTestInt8")
369{
370 Splitter4dDim2EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
371}
372
373TEST_CASE("TosaRefSplit4dDim2EndtoEndTestInt16")
374{
375 Splitter4dDim2EndToEnd<DataType::QSymmS16>(tosaDefaultBackends);
376}
377
378TEST_CASE("TosaRefSplit4dDim2EndtoEndTestInt32")
379{
380 Splitter4dDim2EndToEnd<DataType::Signed32>(tosaDefaultBackends);
381}
382
383TEST_CASE("TosaRefSplit4dDim2EndtoEndTestFloat16")
384{
385 Splitter4dDim2EndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
386}
387
388TEST_CASE("TosaRefSplit4dDim3EndtoEndTestInt8")
389{
390 Splitter4dDim3EndToEnd<DataType::QSymmS8>(tosaDefaultBackends);
391}
392
393// Subtraction
Nikhil Raj9a339462022-12-05 11:24:35 +0000394TEST_CASE("TosaRefSubtractionEndtoEndTestFloat32")
395{
396 SubtractionEndToEnd<DataType::Float32>(tosaDefaultBackends);
397}
398
399TEST_CASE("TosaRefSubtractionEndtoEndTestInt32")
400{
401 SubtractionEndToEnd<DataType::Signed32>(tosaDefaultBackends);
402}
403
404TEST_CASE("TosaRefSubtractionEndtoEndTestFloat16")
405{
406 SubtractionEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
407}
408
409TEST_CASE("TosaRefMultiplicationEndtoEndTestFloat32")
410{
411 MultiplicationEndToEnd<DataType::Float32>(tosaDefaultBackends);
412}
413
414TEST_CASE("TosaRefMultiplicationEndtoEndTestInt32")
415{
416 MultiplicationEndToEnd<DataType::Signed32>(tosaDefaultBackends);
417}
418
419TEST_CASE("TosaRefMultiplicationEndtoEndTestFloat16")
420{
421 MultiplicationEndToEndFloat16<DataType::Float16>(tosaDefaultBackends);
422}
Cathal Corbett3b9acd52022-12-09 12:17:27 +0000423
Matthew Sloyanfc9d5e72022-12-08 13:38:23 +0000424// TransposeConvolution2d
425TEST_CASE("TosaRefTransposeConvolution2dEndToEndFloatNhwcTest")
426{
427 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
428 tosaDefaultBackends, armnn::DataLayout::NHWC);
429}
430
431TEST_CASE("TosaRefSimpleTransposeConvolution2dEndToEndFloatNhwcTest")
432{
433 SimpleTransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
434 tosaDefaultBackends, armnn::DataLayout::NHWC);
435}
436
Cathal Corbett0bb096d2022-12-22 13:09:38 +0000437// Transpose
438TEST_CASE("TosaRefTransposeEndtoEndTestFloat32")
439{
440 TransposeEndToEnd<armnn::DataType::Float32>(tosaDefaultBackends);
441}
442
Ryan OShea3c2795a2022-11-03 17:51:52 +0000443}