blob: a64e42688e0b96afd81754d9d92ca2362234eb28 [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Teresa Charlin6bc85252022-12-06 20:43:06 +00002// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tar70104002018-10-24 15:33:28 +01003// 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>
Ryan OShea3c2795a2022-11-03 17:51:52 +00009#include <backendsCommon/test/AdditionEndToEndTestImpl.hpp>
James Conroy68a4dbc2019-11-13 15:35:59 +000010#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Teresa Charlina38da592022-10-31 22:09:23 +000011#include <backendsCommon/test/BatchMatMulEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010012#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010013#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010014#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010015#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Derek Lamberti6a5e5e82019-12-05 14:41:20 +000016#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060017#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010018#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010019#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Nikhil Raj1c8adac2019-07-22 11:27:29 +010020#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010021#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Francis Murtaghb3fc2522019-08-09 13:20:50 +010022#include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010023#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010024#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010025#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000026#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010027
Sadik Armagan1625efc2021-06-10 18:24:34 +010028#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010029
Sadik Armagan1625efc2021-06-10 18:24:34 +010030TEST_SUITE("NeonEndToEnd")
31{
32std::vector<armnn::BackendId> neonDefaultBackends = {armnn::Compute::CpuAcc};
narpra01b9546cf2018-11-20 15:21:28 +000033
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010034// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010035TEST_CASE("NeonAbsEndToEndTestFloat32")
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010036{
josh minor4a3c6102020-01-06 16:40:46 -060037 std::vector<float> expectedOutput =
38 {
39 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
40 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
41 };
42
Sadik Armagan1625efc2021-06-10 18:24:34 +010043 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
josh minor4a3c6102020-01-06 16:40:46 -060044 UnaryOperation::Abs,
45 expectedOutput);
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010046}
47
48// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +010049TEST_CASE("ConstantUsage_Neon_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010050{
Sadik Armagan1625efc2021-06-10 18:24:34 +010051 CHECK(ConstantUsageFloat32Test(neonDefaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010052}
53
Matteo Martincighdb16dd32019-08-27 16:41:11 +010054#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010055
56// This test unit needs the reference backend, it's not available if the reference backend is not built
57
Sadik Armagan1625efc2021-06-10 18:24:34 +010058TEST_CASE("FallbackToCpuRef")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010059{
60 using namespace armnn;
61
62 // Create runtime in which test will run and allow fallback to CpuRef.
63 IRuntime::CreationOptions options;
64 IRuntimePtr runtime(IRuntime::Create(options));
65
66 // Builds up the structure of the network.
67 INetworkPtr net(INetwork::Create());
68
69 IConnectableLayer* input = net->AddInputLayer(0);
70
71 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
72 NormalizationDescriptor descriptor;
73 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
74
75 IConnectableLayer* output = net->AddOutputLayer(0);
76
77 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
78 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
79
80 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
81 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
82
83 // optimize the network
84 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
85 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
86
87 // Load it into the runtime. It should pass.
88 NetworkId netId;
Sadik Armagan1625efc2021-06-10 18:24:34 +010089 CHECK(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +010090}
91
Matteo Martincighe67edb22019-08-14 14:05:46 +010092#endif
93
Sadik Armagan1625efc2021-06-10 18:24:34 +010094TEST_CASE("NeonGreaterSimpleEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +000095{
96 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
97 0, 0, 0, 0, 0, 0, 0, 0 });
98
Sadik Armagan1625efc2021-06-10 18:24:34 +010099 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100100 ComparisonOperation::Greater,
101 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000102}
103
Sadik Armagan1625efc2021-06-10 18:24:34 +0100104TEST_CASE("NeonGreaterSimpleEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000105{
106 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
107 0, 0, 0, 0, 0, 0, 0, 0 });
108
Sadik Armagan1625efc2021-06-10 18:24:34 +0100109 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100110 ComparisonOperation::Greater,
111 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000112}
113
Sadik Armagan1625efc2021-06-10 18:24:34 +0100114TEST_CASE("NeonGreaterBroadcastEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +0000115{
116 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
117 1, 1, 1, 1, 1, 1 });
118
Sadik Armagan1625efc2021-06-10 18:24:34 +0100119 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100120 ComparisonOperation::Greater,
121 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000122}
123
Sadik Armagan1625efc2021-06-10 18:24:34 +0100124TEST_CASE("NeonGreaterBroadcastEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000125{
126 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
127 1, 1, 1, 1, 1, 1 });
128
Sadik Armagan1625efc2021-06-10 18:24:34 +0100129 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100130 ComparisonOperation::Greater,
131 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000132}
133
Ryan OShea3c2795a2022-11-03 17:51:52 +0000134TEST_CASE("NeonAdditionEndToEndFloat32Test")
135{
136 AdditionEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
137}
138
139TEST_CASE("NeonAdditionEndToEndUint8Test")
140{
141 AdditionEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
142}
143
Teresa Charlina38da592022-10-31 22:09:23 +0000144TEST_CASE("NeonBatchMatMulEndToEndFloat32Test")
145{
146 BatchMatMulEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
147}
148
Sadik Armagan1625efc2021-06-10 18:24:34 +0100149TEST_CASE("NeonConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000150{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100151 ConcatDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000152}
153
Sadik Armagan1625efc2021-06-10 18:24:34 +0100154TEST_CASE("NeonConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000155{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100156 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000157}
158
Sadik Armagan1625efc2021-06-10 18:24:34 +0100159TEST_CASE("NeonConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000160{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100161 ConcatDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000162}
163
Sadik Armagan1625efc2021-06-10 18:24:34 +0100164TEST_CASE("NeonConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000165{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100166 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000167}
168
Sadik Armagan1625efc2021-06-10 18:24:34 +0100169TEST_CASE("NeonConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000170{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100171 ConcatDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000172}
173
Sadik Armagan1625efc2021-06-10 18:24:34 +0100174TEST_CASE("NeonConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000175{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100176 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000177}
178
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100179// DepthToSpace
Sadik Armagan1625efc2021-06-10 18:24:34 +0100180TEST_CASE("DephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100181{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100182 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100183}
184
Sadik Armagan1625efc2021-06-10 18:24:34 +0100185TEST_CASE("DephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100186{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100187 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100188}
189
Sadik Armagan1625efc2021-06-10 18:24:34 +0100190TEST_CASE("DephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100191{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100192 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100193}
194
Sadik Armagan1625efc2021-06-10 18:24:34 +0100195TEST_CASE("DephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100196{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100197 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100198}
199
Sadik Armagan1625efc2021-06-10 18:24:34 +0100200TEST_CASE("DephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100201{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100202 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100203}
204
Sadik Armagan1625efc2021-06-10 18:24:34 +0100205TEST_CASE("DephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100206{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100207 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100208}
209
Sadik Armagan1625efc2021-06-10 18:24:34 +0100210TEST_CASE("DephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100211{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100212 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100213}
214
Sadik Armagan1625efc2021-06-10 18:24:34 +0100215TEST_CASE("DephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100216{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100217 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100218}
219
220// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100221TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100222{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100223 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100224}
225
Sadik Armagan1625efc2021-06-10 18:24:34 +0100226TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100227{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100228 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100229}
230
Sadik Armagan1625efc2021-06-10 18:24:34 +0100231TEST_CASE("NeonEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000232{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100233 EluEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000234}
235
Sadik Armagan1625efc2021-06-10 18:24:34 +0100236TEST_CASE("NeonEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000237{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100238 EluEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000239}
240
Jan Eilersa83af7b2020-03-18 15:58:11 +0000241// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +0100242TEST_CASE("NeonHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000243{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100244 HardSwishEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000245}
246
Sadik Armagan1625efc2021-06-10 18:24:34 +0100247TEST_CASE("NeonHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000248{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100249 HardSwishEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000250}
251
Sadik Armagan1625efc2021-06-10 18:24:34 +0100252TEST_CASE("NeonHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000253{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100254 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000255}
256
Sadik Armagan1625efc2021-06-10 18:24:34 +0100257TEST_CASE("NeonHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000258{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100259 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000260}
261
Sadik Armagan1625efc2021-06-10 18:24:34 +0100262TEST_CASE("NeonPreluEndToEndFloat32Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100263{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100264 PreluEndToEndNegativeTest<armnn::DataType::Float32>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100265}
266
Sadik Armagan1625efc2021-06-10 18:24:34 +0100267TEST_CASE("NeonPreluEndToEndTestUint8Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100268{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100269 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100270}
271
Sadik Armagan1625efc2021-06-10 18:24:34 +0100272TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100273{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100274 SpaceToDepthNhwcEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100275}
276
Sadik Armagan1625efc2021-06-10 18:24:34 +0100277TEST_CASE("NeonSpaceToDepthNchwEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100278{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100279 SpaceToDepthNchwEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100280}
281
Sadik Armagan1625efc2021-06-10 18:24:34 +0100282TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100283{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100284 SpaceToDepthNhwcEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100285}
286
Sadik Armagan1625efc2021-06-10 18:24:34 +0100287TEST_CASE("NeonSpaceToDepthNchwEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100288{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100289 SpaceToDepthNchwEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100290}
291
Sadik Armagan1625efc2021-06-10 18:24:34 +0100292TEST_CASE("NeonSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100293{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100294 Splitter1dEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100295}
296
Sadik Armagan1625efc2021-06-10 18:24:34 +0100297TEST_CASE("NeonSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100298{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100299 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100300}
301
Sadik Armagan1625efc2021-06-10 18:24:34 +0100302TEST_CASE("NeonSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100303{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100304 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100305}
306
Sadik Armagan1625efc2021-06-10 18:24:34 +0100307TEST_CASE("NeonSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100308{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100309 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100310}
311
Sadik Armagan1625efc2021-06-10 18:24:34 +0100312TEST_CASE("NeonSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100313{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100314 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100315}
316
Sadik Armagan1625efc2021-06-10 18:24:34 +0100317TEST_CASE("NeonSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100318{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100319 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100320}
321
Sadik Armagan1625efc2021-06-10 18:24:34 +0100322TEST_CASE("NeonSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100323{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100324 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100325}
326
Sadik Armagan1625efc2021-06-10 18:24:34 +0100327TEST_CASE("NeonSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100328{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100329 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100330}
331
Sadik Armagan1625efc2021-06-10 18:24:34 +0100332TEST_CASE("NeonSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100333{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100334 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100335}
336
Sadik Armagan1625efc2021-06-10 18:24:34 +0100337TEST_CASE("NeonSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100338{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100339 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100340}
341
Sadik Armagan1625efc2021-06-10 18:24:34 +0100342TEST_CASE("NeonSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100343{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100344 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100345}
346
Sadik Armagan1625efc2021-06-10 18:24:34 +0100347TEST_CASE("NeonSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100348{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100349 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100350}
351
Sadik Armagan1625efc2021-06-10 18:24:34 +0100352TEST_CASE("NeonSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100353{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100354 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100355}
356
Sadik Armagan1625efc2021-06-10 18:24:34 +0100357TEST_CASE("NeonSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100358{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100359 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100360}
361
Sadik Armagan1625efc2021-06-10 18:24:34 +0100362TEST_CASE("NeonSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100363{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100364 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100365}
366
Sadik Armagan1625efc2021-06-10 18:24:34 +0100367TEST_CASE("NeonSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100368{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100369 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100370}
371
Sadik Armagan1625efc2021-06-10 18:24:34 +0100372TEST_CASE("NeonSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100373{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100374 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100375}
376
Sadik Armagan1625efc2021-06-10 18:24:34 +0100377TEST_CASE("NeonSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100378{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100379 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100380}
381
Sadik Armagan1625efc2021-06-10 18:24:34 +0100382TEST_CASE("NeonSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100383{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100384 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100385}
386
Sadik Armagan1625efc2021-06-10 18:24:34 +0100387TEST_CASE("NeonSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100388{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100389 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100390}
391
Sadik Armagan1625efc2021-06-10 18:24:34 +0100392TEST_CASE("NeonQuantizedLstmEndToEndTest")
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100393{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100394 QuantizedLstmEndToEnd(neonDefaultBackends);
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100395}
396
Sadik Armagan1625efc2021-06-10 18:24:34 +0100397TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100398{
399 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100400 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100401}
402
Sadik Armagan1625efc2021-06-10 18:24:34 +0100403TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100404{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000405 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100406 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100407}
408
Sadik Armagan1625efc2021-06-10 18:24:34 +0100409TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100410{
411 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100412 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100413}
414
Sadik Armagan1625efc2021-06-10 18:24:34 +0100415TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100416{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000417 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100418 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100419}
420
Teresa Charlin6bc85252022-12-06 20:43:06 +0000421// Transpose
422TEST_CASE("NeonTransposeEndToEndTest")
423{
424 TransposeEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
425}
426
Sadik Armagan1625efc2021-06-10 18:24:34 +0100427TEST_CASE("NeonImportNonAlignedInputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100428{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100429 ImportNonAlignedInputPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100430}
431
Sadik Armagan1625efc2021-06-10 18:24:34 +0100432TEST_CASE("NeonExportNonAlignedOutputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100433{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100434 ExportNonAlignedOutputPointerTest(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100435}
436
Sadik Armagan1625efc2021-06-10 18:24:34 +0100437TEST_CASE("NeonImportAlignedPointerTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100438{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100439 ImportAlignedPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100440}
441
Sadik Armagan1625efc2021-06-10 18:24:34 +0100442TEST_CASE("NeonImportOnlyWorkload")
David Monahan3fb7e102019-08-20 11:25:29 +0100443{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100444 ImportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100445}
David Monahan3fb7e102019-08-20 11:25:29 +0100446
Sadik Armagan1625efc2021-06-10 18:24:34 +0100447TEST_CASE("NeonExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100448{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100449 ExportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100450}
David Monahan3fb7e102019-08-20 11:25:29 +0100451
Sadik Armagan1625efc2021-06-10 18:24:34 +0100452TEST_CASE("NeonImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100453{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100454 ImportAndExportWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100455}
David Monahan3fb7e102019-08-20 11:25:29 +0100456
Sadik Armagan1625efc2021-06-10 18:24:34 +0100457TEST_CASE("NeonExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100458{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100459 ExportOutputWithSeveralOutputSlotConnectionsTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100460}
461
Sadik Armagan062e0e92019-10-14 10:31:43 +0100462// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +0100463TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100464{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100465 InstanceNormalizationNchwEndToEndTest1(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100466}
467
Sadik Armagan1625efc2021-06-10 18:24:34 +0100468TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100469{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100470 InstanceNormalizationNchwEndToEndTest2(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100471}
472
Teresa Charlin44088502020-07-27 11:27:19 +0100473// Fill
Sadik Armagan1625efc2021-06-10 18:24:34 +0100474TEST_CASE("NeonFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100475{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100476 FillEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100477}
478
Sadik Armagan1625efc2021-06-10 18:24:34 +0100479TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100480{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100481 FillEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100482}
483
Sadik Armagan1625efc2021-06-10 18:24:34 +0100484TEST_CASE("NeonFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100485{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100486 FillEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100487}
488
James Conroy68a4dbc2019-11-13 15:35:59 +0000489// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +0100490TEST_CASE("NeonArgMaxSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000491{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100492 ArgMaxEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000493}
494
Sadik Armagan1625efc2021-06-10 18:24:34 +0100495TEST_CASE("NeonArgMinSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000496{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100497 ArgMinEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000498}
499
Sadik Armagan1625efc2021-06-10 18:24:34 +0100500TEST_CASE("NeonArgMaxAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000501{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100502 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000503}
504
Sadik Armagan1625efc2021-06-10 18:24:34 +0100505TEST_CASE("NeonArgMinAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000506{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100507 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000508}
509
Sadik Armagan1625efc2021-06-10 18:24:34 +0100510TEST_CASE("NeonArgMaxAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000511{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100512 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000513}
514
Sadik Armagan1625efc2021-06-10 18:24:34 +0100515TEST_CASE("NeonArgMinAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000516{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100517 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000518}
519
Sadik Armagan1625efc2021-06-10 18:24:34 +0100520TEST_CASE("NeonArgMaxAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000521{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100522 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000523}
524
Sadik Armagan1625efc2021-06-10 18:24:34 +0100525TEST_CASE("NeonArgMinAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000526{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100527 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000528}
529
Sadik Armagan1625efc2021-06-10 18:24:34 +0100530TEST_CASE("NeonArgMaxAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000531{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100532 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000533}
534
Sadik Armagan1625efc2021-06-10 18:24:34 +0100535TEST_CASE("NeonArgMinAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000536{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100537 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000538}
539
Sadik Armagan1625efc2021-06-10 18:24:34 +0100540TEST_CASE("NeonArgMaxSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000541{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100542 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000543}
544
Sadik Armagan1625efc2021-06-10 18:24:34 +0100545TEST_CASE("NeonArgMinSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000546{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100547 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000548}
549
Sadik Armagan1625efc2021-06-10 18:24:34 +0100550TEST_CASE("NeonArgMaxAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000551{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100552 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000553}
554
Sadik Armagan1625efc2021-06-10 18:24:34 +0100555TEST_CASE("NeonArgMinAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000556{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100557 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000558}
559
Sadik Armagan1625efc2021-06-10 18:24:34 +0100560TEST_CASE("NeonArgMaxAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000561{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100562 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000563}
564
Sadik Armagan1625efc2021-06-10 18:24:34 +0100565TEST_CASE("NeonArgMinAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000566{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100567 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000568}
569
Sadik Armagan1625efc2021-06-10 18:24:34 +0100570TEST_CASE("NeonArgMaxAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000571{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100572 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000573}
574
Sadik Armagan1625efc2021-06-10 18:24:34 +0100575TEST_CASE("NeonArgMinAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000576{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100577 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000578}
579
Sadik Armagan1625efc2021-06-10 18:24:34 +0100580TEST_CASE("NeonArgMaxAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000581{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100582 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000583}
584
Sadik Armagan1625efc2021-06-10 18:24:34 +0100585TEST_CASE("NeonArgMinAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000586{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100587 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000588}
589
Sadik Armagan1625efc2021-06-10 18:24:34 +0100590TEST_CASE("NeonStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +0000591{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100592 StridedSliceInvalidSliceEndToEndTest(neonDefaultBackends);
David Monahan0a99a142020-03-13 07:52:54 +0000593}
594
Colm Doneland7ceec52022-07-06 12:09:05 +0100595TEST_CASE("NeonForceImportWithAlignedBuffersEndToEndTest"
596 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
597 // will always fail.
598 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000599{
600 ForceImportWithAlignedBuffersEndToEndTest(neonDefaultBackends);
601}
602
Colm Doneland7ceec52022-07-06 12:09:05 +0100603TEST_CASE("NeonForceImportWithMisalignedInputBuffersEndToEndTest"
604 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
605 // will always fail.
606 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000607{
608 ForceImportWithMisalignedInputBuffersEndToEndTest(neonDefaultBackends);
609}
610
Colm Doneland7ceec52022-07-06 12:09:05 +0100611TEST_CASE("NeonForceImportWithMisalignedOutputBuffersEndToEndTest"
612 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
613 // will always fail.
614 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000615{
616 ForceImportWithMisalignedOutputBuffersEndToEndTest(neonDefaultBackends);
617}
618
619TEST_CASE("NeonForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
620{
621 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(neonDefaultBackends);
622}
623
Sadik Armagan1625efc2021-06-10 18:24:34 +0100624// DISABLED
625//TEST_CASE("NeonDetectionPostProcessRegularNmsTest")
626//{
627// std::vector<float> boxEncodings({
628// 0.0f, 0.0f, 0.0f, 0.0f,
629// 0.0f, 1.0f, 0.0f, 0.0f,
630// 0.0f, -1.0f, 0.0f, 0.0f,
631// 0.0f, 0.0f, 0.0f, 0.0f,
632// 0.0f, 1.0f, 0.0f, 0.0f,
633// 0.0f, 0.0f, 0.0f, 0.0f
634// });
635// std::vector<float> scores({
636// 0.0f, 0.9f, 0.8f,
637// 0.0f, 0.75f, 0.72f,
638// 0.0f, 0.6f, 0.5f,
639// 0.0f, 0.93f, 0.95f,
640// 0.0f, 0.5f, 0.4f,
641// 0.0f, 0.3f, 0.2f
642// });
643// std::vector<float> anchors({
644// 0.5f, 0.5f, 1.0f, 1.0f,
645// 0.5f, 0.5f, 1.0f, 1.0f,
646// 0.5f, 0.5f, 1.0f, 1.0f,
647// 0.5f, 10.5f, 1.0f, 1.0f,
648// 0.5f, 10.5f, 1.0f, 1.0f,
649// 0.5f, 100.5f, 1.0f, 1.0f
650// });
651// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
652// boxEncodings,
653// scores,
654// anchors);
655//}
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000656
657inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
658{
659 for (size_t i = 0; i < info.GetNumElements(); i++)
660 {
661 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
662 }
663}
664
Sadik Armagan1625efc2021-06-10 18:24:34 +0100665// DISABLED
666//TEST_CASE("NeonDetectionPostProcessRegularNmsUint8Test")
667//{
668// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
669// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
670// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
671//
672// boxEncodingsInfo.SetQuantizationScale(1.0f);
673// boxEncodingsInfo.SetQuantizationOffset(1);
674// scoresInfo.SetQuantizationScale(0.01f);
675// scoresInfo.SetQuantizationOffset(0);
676// anchorsInfo.SetQuantizationScale(0.5f);
677// anchorsInfo.SetQuantizationOffset(0);
678//
679// std::vector<float> boxEncodings({
680// 0.0f, 0.0f, 0.0f, 0.0f,
681// 0.0f, 1.0f, 0.0f, 0.0f,
682// 0.0f, -1.0f, 0.0f, 0.0f,
683// 0.0f, 0.0f, 0.0f, 0.0f,
684// 0.0f, 1.0f, 0.0f, 0.0f,
685// 0.0f, 0.0f, 0.0f, 0.0f
686// });
687// std::vector<float> scores({
688// 0.0f, 0.9f, 0.8f,
689// 0.0f, 0.75f, 0.72f,
690// 0.0f, 0.6f, 0.5f,
691// 0.0f, 0.93f, 0.95f,
692// 0.0f, 0.5f, 0.4f,
693// 0.0f, 0.3f, 0.2f
694// });
695// std::vector<float> anchors({
696// 0.5f, 0.5f, 1.0f, 1.0f,
697// 0.5f, 0.5f, 1.0f, 1.0f,
698// 0.5f, 0.5f, 1.0f, 1.0f,
699// 0.5f, 10.5f, 1.0f, 1.0f,
700// 0.5f, 10.5f, 1.0f, 1.0f,
701// 0.5f, 100.5f, 1.0f, 1.0f
702// });
703//
704// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
705// std::vector<uint8_t> qScores(scores.size(), 0);
706// std::vector<uint8_t> qAnchors(anchors.size(), 0);
707// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
708// QuantizeData(qScores.data(), scores.data(), scoresInfo);
709// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
710// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
711// qScores, qAnchors,
712// 1.0f, 1, 0.01f, 0, 0.5f, 0);
713//}
714//
715//TEST_CASE("NeonDetectionPostProcessFastNmsTest")
716//{
717// std::vector<float> boxEncodings({
718// 0.0f, 0.0f, 0.0f, 0.0f,
719// 0.0f, 1.0f, 0.0f, 0.0f,
720// 0.0f, -1.0f, 0.0f, 0.0f,
721// 0.0f, 0.0f, 0.0f, 0.0f,
722// 0.0f, 1.0f, 0.0f, 0.0f,
723// 0.0f, 0.0f, 0.0f, 0.0f
724// });
725// std::vector<float> scores({
726// 0.0f, 0.9f, 0.8f,
727// 0.0f, 0.75f, 0.72f,
728// 0.0f, 0.6f, 0.5f,
729// 0.0f, 0.93f, 0.95f,
730// 0.0f, 0.5f, 0.4f,
731// 0.0f, 0.3f, 0.2f
732// });
733// std::vector<float> anchors({
734// 0.5f, 0.5f, 1.0f, 1.0f,
735// 0.5f, 0.5f, 1.0f, 1.0f,
736// 0.5f, 0.5f, 1.0f, 1.0f,
737// 0.5f, 10.5f, 1.0f, 1.0f,
738// 0.5f, 10.5f, 1.0f, 1.0f,
739// 0.5f, 100.5f, 1.0f, 1.0f
740// });
741// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
742// boxEncodings,
743// scores,
744// anchors);
745//}
746//
747// DISABLED
748//TEST_CASE("NeonDetectionPostProcessFastNmsUint8Test")
749//{
750// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
751// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
752// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
753//
754// boxEncodingsInfo.SetQuantizationScale(1.0f);
755// boxEncodingsInfo.SetQuantizationOffset(1);
756// scoresInfo.SetQuantizationScale(0.01f);
757// scoresInfo.SetQuantizationOffset(0);
758// anchorsInfo.SetQuantizationScale(0.5f);
759// anchorsInfo.SetQuantizationOffset(0);
760//
761// std::vector<float> boxEncodings({
762// 0.0f, 0.0f, 0.0f, 0.0f,
763// 0.0f, 1.0f, 0.0f, 0.0f,
764// 0.0f, -1.0f, 0.0f, 0.0f,
765// 0.0f, 0.0f, 0.0f, 0.0f,
766// 0.0f, 1.0f, 0.0f, 0.0f,
767// 0.0f, 0.0f, 0.0f, 0.0f
768// });
769// std::vector<float> scores({
770// 0.0f, 0.9f, 0.8f,
771// 0.0f, 0.75f, 0.72f,
772// 0.0f, 0.6f, 0.5f,
773// 0.0f, 0.93f, 0.95f,
774// 0.0f, 0.5f, 0.4f,
775// 0.0f, 0.3f, 0.2f
776// });
777// std::vector<float> anchors({
778// 0.5f, 0.5f, 1.0f, 1.0f,
779// 0.5f, 0.5f, 1.0f, 1.0f,
780// 0.5f, 0.5f, 1.0f, 1.0f,
781// 0.5f, 10.5f, 1.0f, 1.0f,
782// 0.5f, 10.5f, 1.0f, 1.0f,
783// 0.5f, 100.5f, 1.0f, 1.0f
784// });
785//
786// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
787// std::vector<uint8_t> qScores(scores.size(), 0);
788// std::vector<uint8_t> qAnchors(anchors.size(), 0);
789// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
790// QuantizeData(qScores.data(), scores.data(), scoresInfo);
791// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
792// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
793// qScores, qAnchors,
794// 1.0f, 1, 0.01f, 0, 0.5f, 0);
795//}
796
797TEST_CASE("NeonQLstmEndToEndTest")
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000798{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100799 QLstmEndToEnd(neonDefaultBackends);
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000800}
801
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000802}