blob: 081b8af60acb3789ef23c9dcea38b4333ceefc81 [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00006#include <backendsCommon/test/EndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +01007
James Conroy68a4dbc2019-11-13 15:35:59 +00008#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +01009#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010010#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010011#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010012#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Derek Lamberti6a5e5e82019-12-05 14:41:20 +000013#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060014#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010015#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Nikhil Raj1c8adac2019-07-22 11:27:29 +010016#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
Francis Murtaghb3fc2522019-08-09 13:20:50 +010017#include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010018#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010019#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010020#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010021
22#include <boost/test/unit_test.hpp>
23
24BOOST_AUTO_TEST_SUITE(NeonEndToEnd)
25
narpra01b9546cf2018-11-20 15:21:28 +000026std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuAcc};
27
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010028// Abs
29BOOST_AUTO_TEST_CASE(NeonAbsEndToEndTestFloat32)
30{
josh minor4a3c6102020-01-06 16:40:46 -060031 std::vector<float> expectedOutput =
32 {
33 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
34 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
35 };
36
37 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
38 UnaryOperation::Abs,
39 expectedOutput);
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010040}
41
42// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010043BOOST_AUTO_TEST_CASE(ConstantUsage_Neon_Float32)
44{
narpra01b9546cf2018-11-20 15:21:28 +000045 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010046}
47
Matteo Martincighdb16dd32019-08-27 16:41:11 +010048#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010049
50// This test unit needs the reference backend, it's not available if the reference backend is not built
51
Aron Virginas-Tar70104002018-10-24 15:33:28 +010052BOOST_AUTO_TEST_CASE(FallbackToCpuRef)
53{
54 using namespace armnn;
55
56 // Create runtime in which test will run and allow fallback to CpuRef.
57 IRuntime::CreationOptions options;
58 IRuntimePtr runtime(IRuntime::Create(options));
59
60 // Builds up the structure of the network.
61 INetworkPtr net(INetwork::Create());
62
63 IConnectableLayer* input = net->AddInputLayer(0);
64
65 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
66 NormalizationDescriptor descriptor;
67 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
68
69 IConnectableLayer* output = net->AddOutputLayer(0);
70
71 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
72 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
73
74 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
75 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
76
77 // optimize the network
78 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
79 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
80
81 // Load it into the runtime. It should pass.
82 NetworkId netId;
83 BOOST_TEST(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
84}
85
Matteo Martincighe67edb22019-08-14 14:05:46 +010086#endif
87
kevmay01eed85922019-01-28 08:37:25 +000088BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndTest)
89{
90 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
91 0, 0, 0, 0, 0, 0, 0, 0 });
92
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010093 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
94 ComparisonOperation::Greater,
95 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +000096}
97
98BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndUint8Test)
99{
100 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
101 0, 0, 0, 0, 0, 0, 0, 0 });
102
Derek Lambertif90c56d2020-01-10 17:14:08 +0000103 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100104 ComparisonOperation::Greater,
105 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000106}
107
108BOOST_AUTO_TEST_CASE(NeonGreaterBroadcastEndToEndTest)
109{
110 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
111 1, 1, 1, 1, 1, 1 });
112
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100113 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
114 ComparisonOperation::Greater,
115 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000116}
117
118BOOST_AUTO_TEST_CASE(NeonGreaterBroadcastEndToEndUint8Test)
119{
120 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
121 1, 1, 1, 1, 1, 1 });
122
Derek Lambertif90c56d2020-01-10 17:14:08 +0000123 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100124 ComparisonOperation::Greater,
125 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000126}
127
Jim Flynne242f2d2019-05-22 14:24:13 +0100128BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000129{
Jim Flynne242f2d2019-05-22 14:24:13 +0100130 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000131}
132
Jim Flynne242f2d2019-05-22 14:24:13 +0100133BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000134{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000135 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000136}
137
Jim Flynne242f2d2019-05-22 14:24:13 +0100138BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000139{
Jim Flynne242f2d2019-05-22 14:24:13 +0100140 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000141}
142
Jim Flynne242f2d2019-05-22 14:24:13 +0100143BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000144{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000145 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000146}
147
Jim Flynne242f2d2019-05-22 14:24:13 +0100148BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000149{
Jim Flynne242f2d2019-05-22 14:24:13 +0100150 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000151}
152
Jim Flynne242f2d2019-05-22 14:24:13 +0100153BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000154{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000155 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000156}
157
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100158// DepthToSpace
159BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
160{
161 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
162}
163
164BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
165{
166 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
167}
168
169BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
170{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000171 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100172}
173
174BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
175{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000176 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100177}
178
179BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
180{
181 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
182}
183
184BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
185{
186 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
187}
188
189BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
190{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000191 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100192}
193
194BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
195{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000196 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100197}
198
199// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100200BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
201{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000202 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100203}
204
205BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
206{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000207 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100208}
209
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100210BOOST_AUTO_TEST_CASE(NeonPreluEndToEndFloat32Test)
211{
212 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
213}
214
215BOOST_AUTO_TEST_CASE(NeonPreluEndToEndTestUint8Test)
216{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000217 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100218}
219
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100220BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNhwcEndToEndTest1)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100221{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100222 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100223}
224
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100225BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNchwEndToEndTest1)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100226{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100227 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100228}
229
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100230BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNhwcEndToEndTest2)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100231{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100232 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100233}
234
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100235BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNchwEndToEndTest2)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100236{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100237 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100238}
239
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100240BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100241{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100242 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100243}
244
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100245BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100246{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000247 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100248}
249
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100250BOOST_AUTO_TEST_CASE(NeonSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100251{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100252 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100253}
254
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100255BOOST_AUTO_TEST_CASE(NeonSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100256{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100257 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100258}
259
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100260BOOST_AUTO_TEST_CASE(NeonSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100261{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000262 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100263}
264
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100265BOOST_AUTO_TEST_CASE(NeonSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100266{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000267 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100268}
269
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100270BOOST_AUTO_TEST_CASE(NeonSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100271{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100272 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100273}
274
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100275BOOST_AUTO_TEST_CASE(NeonSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100276{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100277 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
278}
279
280BOOST_AUTO_TEST_CASE(NeonSplitter3dDim2EndToEndTest)
281{
282 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
283}
284
285BOOST_AUTO_TEST_CASE(NeonSplitter3dDim0EndToEndUint8Test)
286{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000287 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100288}
289
290BOOST_AUTO_TEST_CASE(NeonSplitter3dDim1EndToEndUint8Test)
291{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000292 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100293}
294
295BOOST_AUTO_TEST_CASE(NeonSplitter3dDim2EndToEndUint8Test)
296{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000297 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100298}
299
300BOOST_AUTO_TEST_CASE(NeonSplitter4dDim0EndToEndTest)
301{
302 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
303}
304
305BOOST_AUTO_TEST_CASE(NeonSplitter4dDim1EndToEndTest)
306{
307 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
308}
309
310BOOST_AUTO_TEST_CASE(NeonSplitter4dDim2EndToEndTest)
311{
312 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
313}
314
315BOOST_AUTO_TEST_CASE(NeonSplitter4dDim3EndToEndTest)
316{
317 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
318}
319
320BOOST_AUTO_TEST_CASE(NeonSplitter4dDim0EndToEndUint8Test)
321{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000322 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100323}
324
325BOOST_AUTO_TEST_CASE(NeonSplitter4dDim1EndToEndUint8Test)
326{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000327 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100328}
329
330BOOST_AUTO_TEST_CASE(NeonSplitter4dDim2EndToEndUint8Test)
331{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000332 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100333}
334
335BOOST_AUTO_TEST_CASE(NeonSplitter4dDim3EndToEndUint8Test)
336{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000337 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100338}
339
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100340BOOST_AUTO_TEST_CASE(NeonQuantizedLstmEndToEndTest)
341{
342 QuantizedLstmEndToEnd(defaultBackends);
343}
344
Sadik Armagan581742d2019-08-12 14:11:37 +0100345BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndFloatNchwTest)
346{
347 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
348 defaultBackends, armnn::DataLayout::NCHW);
349}
350
351BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndUint8NchwTest)
352{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000353 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan581742d2019-08-12 14:11:37 +0100354 defaultBackends, armnn::DataLayout::NCHW);
355}
356
357BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndFloatNhwcTest)
358{
359 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
360 defaultBackends, armnn::DataLayout::NHWC);
361}
362
363BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndUint8NhwcTest)
364{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000365 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan581742d2019-08-12 14:11:37 +0100366 defaultBackends, armnn::DataLayout::NHWC);
367}
368
David Monahan3fb7e102019-08-20 11:25:29 +0100369BOOST_AUTO_TEST_CASE(NeonImportNonAlignedInputPointerTest)
370{
371 ImportNonAlignedInputPointerTest(defaultBackends);
372}
373
Ferran Balaguer83239f92019-09-19 11:49:25 +0100374BOOST_AUTO_TEST_CASE(NeonExportNonAlignedOutputPointerTest)
David Monahan3fb7e102019-08-20 11:25:29 +0100375{
Ferran Balaguer83239f92019-09-19 11:49:25 +0100376 ExportNonAlignedOutputPointerTest(defaultBackends);
377}
378
James Conroyffab16f2019-11-07 14:37:09 +0000379BOOST_AUTO_TEST_CASE(NeonImportAlignedPointerTest, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100380{
381 ImportAlignedPointerTest(defaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100382}
383
James Conroyffab16f2019-11-07 14:37:09 +0000384BOOST_AUTO_TEST_CASE(NeonImportOnlyWorkload, * boost::unit_test::disabled())
David Monahan3fb7e102019-08-20 11:25:29 +0100385{
Ferran Balaguer83239f92019-09-19 11:49:25 +0100386 ImportOnlyWorkload(defaultBackends);
387}
David Monahan3fb7e102019-08-20 11:25:29 +0100388
James Conroyffab16f2019-11-07 14:37:09 +0000389BOOST_AUTO_TEST_CASE(NeonExportOnlyWorkload, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100390{
391 ExportOnlyWorkload(defaultBackends);
392}
David Monahan3fb7e102019-08-20 11:25:29 +0100393
James Conroyffab16f2019-11-07 14:37:09 +0000394BOOST_AUTO_TEST_CASE(NeonImportAndExportWorkload, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100395{
396 ImportAndExportWorkload(defaultBackends);
397}
David Monahan3fb7e102019-08-20 11:25:29 +0100398
James Conroyffab16f2019-11-07 14:37:09 +0000399BOOST_AUTO_TEST_CASE(NeonExportOutputWithSeveralOutputSlotConnectionsTest, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100400{
401 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100402}
403
Sadik Armagan062e0e92019-10-14 10:31:43 +0100404// InstanceNormalization
405BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest1)
406{
407 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
408}
409
410BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest2)
411{
412 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
413}
414
James Conroy68a4dbc2019-11-13 15:35:59 +0000415// ArgMinMax
416BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTest)
417{
418 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
419}
420
421BOOST_AUTO_TEST_CASE(NeonArgMinSimpleTest)
422{
423 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
424}
425
426BOOST_AUTO_TEST_CASE(NeonArgMaxAxis0Test)
427{
428 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
429}
430
431BOOST_AUTO_TEST_CASE(NeonArgMinAxis0Test)
432{
433 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
434}
435
436BOOST_AUTO_TEST_CASE(NeonArgMaxAxis1Test)
437{
438 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
439}
440
441BOOST_AUTO_TEST_CASE(NeonArgMinAxis1Test)
442{
443 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
444}
445
446BOOST_AUTO_TEST_CASE(NeonArgMaxAxis2Test)
447{
448 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
449}
450
451BOOST_AUTO_TEST_CASE(NeonArgMinAxis2Test)
452{
453 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
454}
455
456BOOST_AUTO_TEST_CASE(NeonArgMaxAxis3Test)
457{
458 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
459}
460
461BOOST_AUTO_TEST_CASE(NeonArgMinAxis3Test)
462{
463 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
464}
465
Francis Murtagh52ec3462019-11-19 12:24:19 +0000466BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTestQuantisedAsymm8)
467{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000468 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000469}
470
471BOOST_AUTO_TEST_CASE(NeonArgMinSimpleTestQuantisedAsymm8)
472{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000473 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000474}
475
476BOOST_AUTO_TEST_CASE(NeonArgMaxAxis0TestQuantisedAsymm8)
477{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000478 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000479}
480
481BOOST_AUTO_TEST_CASE(NeonArgMinAxis0TestQuantisedAsymm8)
482{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000483 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000484}
485
486BOOST_AUTO_TEST_CASE(NeonArgMaxAxis1TestQuantisedAsymm8)
487{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000488 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000489}
490
491BOOST_AUTO_TEST_CASE(NeonArgMinAxis1TestQuantisedAsymm8)
492{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000493 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000494}
495
496BOOST_AUTO_TEST_CASE(NeonArgMaxAxis2TestQuantisedAsymm8)
497{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000498 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000499}
500
501BOOST_AUTO_TEST_CASE(NeonArgMinAxis2TestQuantisedAsymm8)
502{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000503 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000504}
505
506BOOST_AUTO_TEST_CASE(NeonArgMaxAxis3TestQuantisedAsymm8)
507{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000508 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000509}
510
511BOOST_AUTO_TEST_CASE(NeonArgMinAxis3TestQuantisedAsymm8)
512{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000513 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000514}
515
David Monahan0a99a142020-03-13 07:52:54 +0000516BOOST_AUTO_TEST_CASE(NeonStridedSliceInvalidSliceEndToEndTest)
517{
518 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
519}
520
James Conroyd9fb6e22020-02-21 16:52:44 +0000521BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessRegularNmsTest, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000522{
523 std::vector<float> boxEncodings({
524 0.0f, 0.0f, 0.0f, 0.0f,
525 0.0f, 1.0f, 0.0f, 0.0f,
526 0.0f, -1.0f, 0.0f, 0.0f,
527 0.0f, 0.0f, 0.0f, 0.0f,
528 0.0f, 1.0f, 0.0f, 0.0f,
529 0.0f, 0.0f, 0.0f, 0.0f
530 });
531 std::vector<float> scores({
532 0.0f, 0.9f, 0.8f,
533 0.0f, 0.75f, 0.72f,
534 0.0f, 0.6f, 0.5f,
535 0.0f, 0.93f, 0.95f,
536 0.0f, 0.5f, 0.4f,
537 0.0f, 0.3f, 0.2f
538 });
539 std::vector<float> anchors({
540 0.5f, 0.5f, 1.0f, 1.0f,
541 0.5f, 0.5f, 1.0f, 1.0f,
542 0.5f, 0.5f, 1.0f, 1.0f,
543 0.5f, 10.5f, 1.0f, 1.0f,
544 0.5f, 10.5f, 1.0f, 1.0f,
545 0.5f, 100.5f, 1.0f, 1.0f
546 });
547 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
548}
549
550inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
551{
552 for (size_t i = 0; i < info.GetNumElements(); i++)
553 {
554 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
555 }
556}
557
James Conroyd9fb6e22020-02-21 16:52:44 +0000558BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessRegularNmsUint8Test, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000559{
560 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
561 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
562 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
563
564 boxEncodingsInfo.SetQuantizationScale(1.0f);
565 boxEncodingsInfo.SetQuantizationOffset(1);
566 scoresInfo.SetQuantizationScale(0.01f);
567 scoresInfo.SetQuantizationOffset(0);
568 anchorsInfo.SetQuantizationScale(0.5f);
569 anchorsInfo.SetQuantizationOffset(0);
570
571 std::vector<float> boxEncodings({
572 0.0f, 0.0f, 0.0f, 0.0f,
573 0.0f, 1.0f, 0.0f, 0.0f,
574 0.0f, -1.0f, 0.0f, 0.0f,
575 0.0f, 0.0f, 0.0f, 0.0f,
576 0.0f, 1.0f, 0.0f, 0.0f,
577 0.0f, 0.0f, 0.0f, 0.0f
578 });
579 std::vector<float> scores({
580 0.0f, 0.9f, 0.8f,
581 0.0f, 0.75f, 0.72f,
582 0.0f, 0.6f, 0.5f,
583 0.0f, 0.93f, 0.95f,
584 0.0f, 0.5f, 0.4f,
585 0.0f, 0.3f, 0.2f
586 });
587 std::vector<float> anchors({
588 0.5f, 0.5f, 1.0f, 1.0f,
589 0.5f, 0.5f, 1.0f, 1.0f,
590 0.5f, 0.5f, 1.0f, 1.0f,
591 0.5f, 10.5f, 1.0f, 1.0f,
592 0.5f, 10.5f, 1.0f, 1.0f,
593 0.5f, 100.5f, 1.0f, 1.0f
594 });
595
596 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
597 std::vector<uint8_t> qScores(scores.size(), 0);
598 std::vector<uint8_t> qAnchors(anchors.size(), 0);
599 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
600 QuantizeData(qScores.data(), scores.data(), scoresInfo);
601 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000602 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000603 qScores, qAnchors,
604 1.0f, 1, 0.01f, 0, 0.5f, 0);
605}
606
James Conroyd9fb6e22020-02-21 16:52:44 +0000607BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessFastNmsTest, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000608{
609 std::vector<float> boxEncodings({
610 0.0f, 0.0f, 0.0f, 0.0f,
611 0.0f, 1.0f, 0.0f, 0.0f,
612 0.0f, -1.0f, 0.0f, 0.0f,
613 0.0f, 0.0f, 0.0f, 0.0f,
614 0.0f, 1.0f, 0.0f, 0.0f,
615 0.0f, 0.0f, 0.0f, 0.0f
616 });
617 std::vector<float> scores({
618 0.0f, 0.9f, 0.8f,
619 0.0f, 0.75f, 0.72f,
620 0.0f, 0.6f, 0.5f,
621 0.0f, 0.93f, 0.95f,
622 0.0f, 0.5f, 0.4f,
623 0.0f, 0.3f, 0.2f
624 });
625 std::vector<float> anchors({
626 0.5f, 0.5f, 1.0f, 1.0f,
627 0.5f, 0.5f, 1.0f, 1.0f,
628 0.5f, 0.5f, 1.0f, 1.0f,
629 0.5f, 10.5f, 1.0f, 1.0f,
630 0.5f, 10.5f, 1.0f, 1.0f,
631 0.5f, 100.5f, 1.0f, 1.0f
632 });
633 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
634}
635
James Conroyd9fb6e22020-02-21 16:52:44 +0000636BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessFastNmsUint8Test, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000637{
638 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
639 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
640 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
641
642 boxEncodingsInfo.SetQuantizationScale(1.0f);
643 boxEncodingsInfo.SetQuantizationOffset(1);
644 scoresInfo.SetQuantizationScale(0.01f);
645 scoresInfo.SetQuantizationOffset(0);
646 anchorsInfo.SetQuantizationScale(0.5f);
647 anchorsInfo.SetQuantizationOffset(0);
648
649 std::vector<float> boxEncodings({
650 0.0f, 0.0f, 0.0f, 0.0f,
651 0.0f, 1.0f, 0.0f, 0.0f,
652 0.0f, -1.0f, 0.0f, 0.0f,
653 0.0f, 0.0f, 0.0f, 0.0f,
654 0.0f, 1.0f, 0.0f, 0.0f,
655 0.0f, 0.0f, 0.0f, 0.0f
656 });
657 std::vector<float> scores({
658 0.0f, 0.9f, 0.8f,
659 0.0f, 0.75f, 0.72f,
660 0.0f, 0.6f, 0.5f,
661 0.0f, 0.93f, 0.95f,
662 0.0f, 0.5f, 0.4f,
663 0.0f, 0.3f, 0.2f
664 });
665 std::vector<float> anchors({
666 0.5f, 0.5f, 1.0f, 1.0f,
667 0.5f, 0.5f, 1.0f, 1.0f,
668 0.5f, 0.5f, 1.0f, 1.0f,
669 0.5f, 10.5f, 1.0f, 1.0f,
670 0.5f, 10.5f, 1.0f, 1.0f,
671 0.5f, 100.5f, 1.0f, 1.0f
672 });
673
674 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
675 std::vector<uint8_t> qScores(scores.size(), 0);
676 std::vector<uint8_t> qAnchors(anchors.size(), 0);
677 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
678 QuantizeData(qScores.data(), scores.data(), scoresInfo);
679 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000680 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000681 qScores, qAnchors,
682 1.0f, 1, 0.01f, 0, 0.5f, 0);
683}
684
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100685BOOST_AUTO_TEST_SUITE_END()