blob: 487aaeb0c37593a0b7b882eb7dc82defb1054d29 [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
Jan Eilersbca73e12020-03-11 12:52:46 +00008#include <backendsCommon/test/ActivationEndToEndTestImpl.hpp>
James Conroy68a4dbc2019-11-13 15:35:59 +00009#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010010#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010011#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010012#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010013#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Derek Lamberti6a5e5e82019-12-05 14:41:20 +000014#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060015#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010016#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Nikhil Raj1c8adac2019-07-22 11:27:29 +010017#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
Francis Murtaghb3fc2522019-08-09 13:20:50 +010018#include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010019#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010020#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010021#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010022
23#include <boost/test/unit_test.hpp>
24
25BOOST_AUTO_TEST_SUITE(NeonEndToEnd)
26
narpra01b9546cf2018-11-20 15:21:28 +000027std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuAcc};
28
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010029// Abs
30BOOST_AUTO_TEST_CASE(NeonAbsEndToEndTestFloat32)
31{
josh minor4a3c6102020-01-06 16:40:46 -060032 std::vector<float> expectedOutput =
33 {
34 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
35 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
36 };
37
38 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
39 UnaryOperation::Abs,
40 expectedOutput);
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010041}
42
43// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010044BOOST_AUTO_TEST_CASE(ConstantUsage_Neon_Float32)
45{
narpra01b9546cf2018-11-20 15:21:28 +000046 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010047}
48
Matteo Martincighdb16dd32019-08-27 16:41:11 +010049#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010050
51// This test unit needs the reference backend, it's not available if the reference backend is not built
52
Aron Virginas-Tar70104002018-10-24 15:33:28 +010053BOOST_AUTO_TEST_CASE(FallbackToCpuRef)
54{
55 using namespace armnn;
56
57 // Create runtime in which test will run and allow fallback to CpuRef.
58 IRuntime::CreationOptions options;
59 IRuntimePtr runtime(IRuntime::Create(options));
60
61 // Builds up the structure of the network.
62 INetworkPtr net(INetwork::Create());
63
64 IConnectableLayer* input = net->AddInputLayer(0);
65
66 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
67 NormalizationDescriptor descriptor;
68 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
69
70 IConnectableLayer* output = net->AddOutputLayer(0);
71
72 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
73 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
74
75 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
76 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
77
78 // optimize the network
79 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
80 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
81
82 // Load it into the runtime. It should pass.
83 NetworkId netId;
84 BOOST_TEST(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
85}
86
Matteo Martincighe67edb22019-08-14 14:05:46 +010087#endif
88
kevmay01eed85922019-01-28 08:37:25 +000089BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndTest)
90{
91 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
92 0, 0, 0, 0, 0, 0, 0, 0 });
93
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010094 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
95 ComparisonOperation::Greater,
96 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +000097}
98
99BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndUint8Test)
100{
101 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
102 0, 0, 0, 0, 0, 0, 0, 0 });
103
Derek Lambertif90c56d2020-01-10 17:14:08 +0000104 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100105 ComparisonOperation::Greater,
106 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000107}
108
109BOOST_AUTO_TEST_CASE(NeonGreaterBroadcastEndToEndTest)
110{
111 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
112 1, 1, 1, 1, 1, 1 });
113
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100114 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
115 ComparisonOperation::Greater,
116 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000117}
118
119BOOST_AUTO_TEST_CASE(NeonGreaterBroadcastEndToEndUint8Test)
120{
121 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
122 1, 1, 1, 1, 1, 1 });
123
Derek Lambertif90c56d2020-01-10 17:14:08 +0000124 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100125 ComparisonOperation::Greater,
126 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000127}
128
Jim Flynne242f2d2019-05-22 14:24:13 +0100129BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000130{
Jim Flynne242f2d2019-05-22 14:24:13 +0100131 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000132}
133
Jim Flynne242f2d2019-05-22 14:24:13 +0100134BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000135{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000136 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000137}
138
Jim Flynne242f2d2019-05-22 14:24:13 +0100139BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000140{
Jim Flynne242f2d2019-05-22 14:24:13 +0100141 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000142}
143
Jim Flynne242f2d2019-05-22 14:24:13 +0100144BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000145{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000146 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000147}
148
Jim Flynne242f2d2019-05-22 14:24:13 +0100149BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000150{
Jim Flynne242f2d2019-05-22 14:24:13 +0100151 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000152}
153
Jim Flynne242f2d2019-05-22 14:24:13 +0100154BOOST_AUTO_TEST_CASE(NeonConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000155{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000156 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000157}
158
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100159// DepthToSpace
160BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
161{
162 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
163}
164
165BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
166{
167 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
168}
169
170BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
171{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000172 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100173}
174
175BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
176{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000177 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100178}
179
180BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
181{
182 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
183}
184
185BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
186{
187 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
188}
189
190BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
191{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000192 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100193}
194
195BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
196{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000197 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100198}
199
200// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100201BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
202{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000203 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100204}
205
206BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
207{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000208 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100209}
210
Jan Eilersbca73e12020-03-11 12:52:46 +0000211BOOST_AUTO_TEST_CASE(NeonEluEndToEndTestFloat32)
212{
213 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
214}
215
216BOOST_AUTO_TEST_CASE(NeonEluEndToEndTestFloat16)
217{
218 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
219}
220
Jan Eilersa83af7b2020-03-18 15:58:11 +0000221// HardSwish
222BOOST_AUTO_TEST_CASE(NeonHardSwishEndToEndTestFloat32)
223{
224 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
225}
226
227BOOST_AUTO_TEST_CASE(NeonHardSwishEndToEndTestFloat16)
228{
229 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
230}
231
232BOOST_AUTO_TEST_CASE(NeonHardSwishEndToEndTestQAsymmS8)
233{
234 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
235}
236
237BOOST_AUTO_TEST_CASE(NeonHardSwishEndToEndTestQAsymmU8)
238{
239 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
240}
241
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100242BOOST_AUTO_TEST_CASE(NeonPreluEndToEndFloat32Test)
243{
244 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
245}
246
247BOOST_AUTO_TEST_CASE(NeonPreluEndToEndTestUint8Test)
248{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000249 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100250}
251
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100252BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNhwcEndToEndTest1)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100253{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100254 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100255}
256
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100257BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNchwEndToEndTest1)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100258{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100259 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100260}
261
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100262BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNhwcEndToEndTest2)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100263{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100264 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100265}
266
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100267BOOST_AUTO_TEST_CASE(NeonSpaceToDepthNchwEndToEndTest2)
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100268{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100269 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100270}
271
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100272BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100273{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100274 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100275}
276
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100277BOOST_AUTO_TEST_CASE(NeonSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100278{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000279 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100280}
281
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100282BOOST_AUTO_TEST_CASE(NeonSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100283{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100284 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100285}
286
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100287BOOST_AUTO_TEST_CASE(NeonSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100288{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100289 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100290}
291
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100292BOOST_AUTO_TEST_CASE(NeonSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100293{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000294 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100295}
296
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100297BOOST_AUTO_TEST_CASE(NeonSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100298{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000299 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100300}
301
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100302BOOST_AUTO_TEST_CASE(NeonSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100303{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100304 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100305}
306
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100307BOOST_AUTO_TEST_CASE(NeonSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100308{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100309 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
310}
311
312BOOST_AUTO_TEST_CASE(NeonSplitter3dDim2EndToEndTest)
313{
314 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
315}
316
317BOOST_AUTO_TEST_CASE(NeonSplitter3dDim0EndToEndUint8Test)
318{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000319 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100320}
321
322BOOST_AUTO_TEST_CASE(NeonSplitter3dDim1EndToEndUint8Test)
323{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000324 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100325}
326
327BOOST_AUTO_TEST_CASE(NeonSplitter3dDim2EndToEndUint8Test)
328{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000329 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100330}
331
332BOOST_AUTO_TEST_CASE(NeonSplitter4dDim0EndToEndTest)
333{
334 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
335}
336
337BOOST_AUTO_TEST_CASE(NeonSplitter4dDim1EndToEndTest)
338{
339 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
340}
341
342BOOST_AUTO_TEST_CASE(NeonSplitter4dDim2EndToEndTest)
343{
344 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
345}
346
347BOOST_AUTO_TEST_CASE(NeonSplitter4dDim3EndToEndTest)
348{
349 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
350}
351
352BOOST_AUTO_TEST_CASE(NeonSplitter4dDim0EndToEndUint8Test)
353{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000354 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100355}
356
357BOOST_AUTO_TEST_CASE(NeonSplitter4dDim1EndToEndUint8Test)
358{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000359 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100360}
361
362BOOST_AUTO_TEST_CASE(NeonSplitter4dDim2EndToEndUint8Test)
363{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000364 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100365}
366
367BOOST_AUTO_TEST_CASE(NeonSplitter4dDim3EndToEndUint8Test)
368{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000369 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100370}
371
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100372BOOST_AUTO_TEST_CASE(NeonQuantizedLstmEndToEndTest)
373{
374 QuantizedLstmEndToEnd(defaultBackends);
375}
376
Sadik Armagan581742d2019-08-12 14:11:37 +0100377BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndFloatNchwTest)
378{
379 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
380 defaultBackends, armnn::DataLayout::NCHW);
381}
382
383BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndUint8NchwTest)
384{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000385 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan581742d2019-08-12 14:11:37 +0100386 defaultBackends, armnn::DataLayout::NCHW);
387}
388
389BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndFloatNhwcTest)
390{
391 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
392 defaultBackends, armnn::DataLayout::NHWC);
393}
394
395BOOST_AUTO_TEST_CASE(NeonTransposeConvolution2dEndToEndUint8NhwcTest)
396{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000397 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan581742d2019-08-12 14:11:37 +0100398 defaultBackends, armnn::DataLayout::NHWC);
399}
400
David Monahan3fb7e102019-08-20 11:25:29 +0100401BOOST_AUTO_TEST_CASE(NeonImportNonAlignedInputPointerTest)
402{
403 ImportNonAlignedInputPointerTest(defaultBackends);
404}
405
Ferran Balaguer83239f92019-09-19 11:49:25 +0100406BOOST_AUTO_TEST_CASE(NeonExportNonAlignedOutputPointerTest)
David Monahan3fb7e102019-08-20 11:25:29 +0100407{
Ferran Balaguer83239f92019-09-19 11:49:25 +0100408 ExportNonAlignedOutputPointerTest(defaultBackends);
409}
410
James Conroyffab16f2019-11-07 14:37:09 +0000411BOOST_AUTO_TEST_CASE(NeonImportAlignedPointerTest, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100412{
413 ImportAlignedPointerTest(defaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100414}
415
James Conroyffab16f2019-11-07 14:37:09 +0000416BOOST_AUTO_TEST_CASE(NeonImportOnlyWorkload, * boost::unit_test::disabled())
David Monahan3fb7e102019-08-20 11:25:29 +0100417{
Ferran Balaguer83239f92019-09-19 11:49:25 +0100418 ImportOnlyWorkload(defaultBackends);
419}
David Monahan3fb7e102019-08-20 11:25:29 +0100420
James Conroyffab16f2019-11-07 14:37:09 +0000421BOOST_AUTO_TEST_CASE(NeonExportOnlyWorkload, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100422{
423 ExportOnlyWorkload(defaultBackends);
424}
David Monahan3fb7e102019-08-20 11:25:29 +0100425
James Conroyffab16f2019-11-07 14:37:09 +0000426BOOST_AUTO_TEST_CASE(NeonImportAndExportWorkload, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100427{
428 ImportAndExportWorkload(defaultBackends);
429}
David Monahan3fb7e102019-08-20 11:25:29 +0100430
James Conroyffab16f2019-11-07 14:37:09 +0000431BOOST_AUTO_TEST_CASE(NeonExportOutputWithSeveralOutputSlotConnectionsTest, * boost::unit_test::disabled())
Ferran Balaguer83239f92019-09-19 11:49:25 +0100432{
433 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100434}
435
Sadik Armagan062e0e92019-10-14 10:31:43 +0100436// InstanceNormalization
437BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest1)
438{
439 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
440}
441
442BOOST_AUTO_TEST_CASE(NeonInstanceNormalizationNchwEndToEndTest2)
443{
444 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
445}
446
James Conroy68a4dbc2019-11-13 15:35:59 +0000447// ArgMinMax
448BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTest)
449{
450 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
451}
452
453BOOST_AUTO_TEST_CASE(NeonArgMinSimpleTest)
454{
455 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
456}
457
458BOOST_AUTO_TEST_CASE(NeonArgMaxAxis0Test)
459{
460 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
461}
462
463BOOST_AUTO_TEST_CASE(NeonArgMinAxis0Test)
464{
465 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
466}
467
468BOOST_AUTO_TEST_CASE(NeonArgMaxAxis1Test)
469{
470 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
471}
472
473BOOST_AUTO_TEST_CASE(NeonArgMinAxis1Test)
474{
475 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
476}
477
478BOOST_AUTO_TEST_CASE(NeonArgMaxAxis2Test)
479{
480 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
481}
482
483BOOST_AUTO_TEST_CASE(NeonArgMinAxis2Test)
484{
485 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
486}
487
488BOOST_AUTO_TEST_CASE(NeonArgMaxAxis3Test)
489{
490 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
491}
492
493BOOST_AUTO_TEST_CASE(NeonArgMinAxis3Test)
494{
495 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
496}
497
Francis Murtagh52ec3462019-11-19 12:24:19 +0000498BOOST_AUTO_TEST_CASE(NeonArgMaxSimpleTestQuantisedAsymm8)
499{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000500 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000501}
502
503BOOST_AUTO_TEST_CASE(NeonArgMinSimpleTestQuantisedAsymm8)
504{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000505 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000506}
507
508BOOST_AUTO_TEST_CASE(NeonArgMaxAxis0TestQuantisedAsymm8)
509{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000510 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000511}
512
513BOOST_AUTO_TEST_CASE(NeonArgMinAxis0TestQuantisedAsymm8)
514{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000515 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000516}
517
518BOOST_AUTO_TEST_CASE(NeonArgMaxAxis1TestQuantisedAsymm8)
519{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000520 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000521}
522
523BOOST_AUTO_TEST_CASE(NeonArgMinAxis1TestQuantisedAsymm8)
524{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000525 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000526}
527
528BOOST_AUTO_TEST_CASE(NeonArgMaxAxis2TestQuantisedAsymm8)
529{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000530 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000531}
532
533BOOST_AUTO_TEST_CASE(NeonArgMinAxis2TestQuantisedAsymm8)
534{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000535 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000536}
537
538BOOST_AUTO_TEST_CASE(NeonArgMaxAxis3TestQuantisedAsymm8)
539{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000540 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000541}
542
543BOOST_AUTO_TEST_CASE(NeonArgMinAxis3TestQuantisedAsymm8)
544{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000545 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000546}
547
David Monahan0a99a142020-03-13 07:52:54 +0000548BOOST_AUTO_TEST_CASE(NeonStridedSliceInvalidSliceEndToEndTest)
549{
550 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
551}
552
James Conroyd9fb6e22020-02-21 16:52:44 +0000553BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessRegularNmsTest, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000554{
555 std::vector<float> boxEncodings({
556 0.0f, 0.0f, 0.0f, 0.0f,
557 0.0f, 1.0f, 0.0f, 0.0f,
558 0.0f, -1.0f, 0.0f, 0.0f,
559 0.0f, 0.0f, 0.0f, 0.0f,
560 0.0f, 1.0f, 0.0f, 0.0f,
561 0.0f, 0.0f, 0.0f, 0.0f
562 });
563 std::vector<float> scores({
564 0.0f, 0.9f, 0.8f,
565 0.0f, 0.75f, 0.72f,
566 0.0f, 0.6f, 0.5f,
567 0.0f, 0.93f, 0.95f,
568 0.0f, 0.5f, 0.4f,
569 0.0f, 0.3f, 0.2f
570 });
571 std::vector<float> anchors({
572 0.5f, 0.5f, 1.0f, 1.0f,
573 0.5f, 0.5f, 1.0f, 1.0f,
574 0.5f, 0.5f, 1.0f, 1.0f,
575 0.5f, 10.5f, 1.0f, 1.0f,
576 0.5f, 10.5f, 1.0f, 1.0f,
577 0.5f, 100.5f, 1.0f, 1.0f
578 });
579 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
580}
581
582inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
583{
584 for (size_t i = 0; i < info.GetNumElements(); i++)
585 {
586 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
587 }
588}
589
James Conroyd9fb6e22020-02-21 16:52:44 +0000590BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessRegularNmsUint8Test, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000591{
592 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
593 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
594 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
595
596 boxEncodingsInfo.SetQuantizationScale(1.0f);
597 boxEncodingsInfo.SetQuantizationOffset(1);
598 scoresInfo.SetQuantizationScale(0.01f);
599 scoresInfo.SetQuantizationOffset(0);
600 anchorsInfo.SetQuantizationScale(0.5f);
601 anchorsInfo.SetQuantizationOffset(0);
602
603 std::vector<float> boxEncodings({
604 0.0f, 0.0f, 0.0f, 0.0f,
605 0.0f, 1.0f, 0.0f, 0.0f,
606 0.0f, -1.0f, 0.0f, 0.0f,
607 0.0f, 0.0f, 0.0f, 0.0f,
608 0.0f, 1.0f, 0.0f, 0.0f,
609 0.0f, 0.0f, 0.0f, 0.0f
610 });
611 std::vector<float> scores({
612 0.0f, 0.9f, 0.8f,
613 0.0f, 0.75f, 0.72f,
614 0.0f, 0.6f, 0.5f,
615 0.0f, 0.93f, 0.95f,
616 0.0f, 0.5f, 0.4f,
617 0.0f, 0.3f, 0.2f
618 });
619 std::vector<float> anchors({
620 0.5f, 0.5f, 1.0f, 1.0f,
621 0.5f, 0.5f, 1.0f, 1.0f,
622 0.5f, 0.5f, 1.0f, 1.0f,
623 0.5f, 10.5f, 1.0f, 1.0f,
624 0.5f, 10.5f, 1.0f, 1.0f,
625 0.5f, 100.5f, 1.0f, 1.0f
626 });
627
628 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
629 std::vector<uint8_t> qScores(scores.size(), 0);
630 std::vector<uint8_t> qAnchors(anchors.size(), 0);
631 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
632 QuantizeData(qScores.data(), scores.data(), scoresInfo);
633 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000634 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000635 qScores, qAnchors,
636 1.0f, 1, 0.01f, 0, 0.5f, 0);
637}
638
James Conroyd9fb6e22020-02-21 16:52:44 +0000639BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessFastNmsTest, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000640{
641 std::vector<float> boxEncodings({
642 0.0f, 0.0f, 0.0f, 0.0f,
643 0.0f, 1.0f, 0.0f, 0.0f,
644 0.0f, -1.0f, 0.0f, 0.0f,
645 0.0f, 0.0f, 0.0f, 0.0f,
646 0.0f, 1.0f, 0.0f, 0.0f,
647 0.0f, 0.0f, 0.0f, 0.0f
648 });
649 std::vector<float> scores({
650 0.0f, 0.9f, 0.8f,
651 0.0f, 0.75f, 0.72f,
652 0.0f, 0.6f, 0.5f,
653 0.0f, 0.93f, 0.95f,
654 0.0f, 0.5f, 0.4f,
655 0.0f, 0.3f, 0.2f
656 });
657 std::vector<float> anchors({
658 0.5f, 0.5f, 1.0f, 1.0f,
659 0.5f, 0.5f, 1.0f, 1.0f,
660 0.5f, 0.5f, 1.0f, 1.0f,
661 0.5f, 10.5f, 1.0f, 1.0f,
662 0.5f, 10.5f, 1.0f, 1.0f,
663 0.5f, 100.5f, 1.0f, 1.0f
664 });
665 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
666}
667
James Conroyd9fb6e22020-02-21 16:52:44 +0000668BOOST_AUTO_TEST_CASE(NeonDetectionPostProcessFastNmsUint8Test, * boost::unit_test::disabled())
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000669{
670 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
671 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
672 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
673
674 boxEncodingsInfo.SetQuantizationScale(1.0f);
675 boxEncodingsInfo.SetQuantizationOffset(1);
676 scoresInfo.SetQuantizationScale(0.01f);
677 scoresInfo.SetQuantizationOffset(0);
678 anchorsInfo.SetQuantizationScale(0.5f);
679 anchorsInfo.SetQuantizationOffset(0);
680
681 std::vector<float> boxEncodings({
682 0.0f, 0.0f, 0.0f, 0.0f,
683 0.0f, 1.0f, 0.0f, 0.0f,
684 0.0f, -1.0f, 0.0f, 0.0f,
685 0.0f, 0.0f, 0.0f, 0.0f,
686 0.0f, 1.0f, 0.0f, 0.0f,
687 0.0f, 0.0f, 0.0f, 0.0f
688 });
689 std::vector<float> scores({
690 0.0f, 0.9f, 0.8f,
691 0.0f, 0.75f, 0.72f,
692 0.0f, 0.6f, 0.5f,
693 0.0f, 0.93f, 0.95f,
694 0.0f, 0.5f, 0.4f,
695 0.0f, 0.3f, 0.2f
696 });
697 std::vector<float> anchors({
698 0.5f, 0.5f, 1.0f, 1.0f,
699 0.5f, 0.5f, 1.0f, 1.0f,
700 0.5f, 0.5f, 1.0f, 1.0f,
701 0.5f, 10.5f, 1.0f, 1.0f,
702 0.5f, 10.5f, 1.0f, 1.0f,
703 0.5f, 100.5f, 1.0f, 1.0f
704 });
705
706 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
707 std::vector<uint8_t> qScores(scores.size(), 0);
708 std::vector<uint8_t> qAnchors(anchors.size(), 0);
709 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
710 QuantizeData(qScores.data(), scores.data(), scoresInfo);
711 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000712 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000713 qScores, qAnchors,
714 1.0f, 1, 0.01f, 0, 0.5f, 0);
715}
716
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100717BOOST_AUTO_TEST_SUITE_END()