blob: e582fadf1108e92a7e32b52b7e6cc7055470f74d [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Teresa Charlinc17a35f2023-01-12 14:13:09 +00002// Copyright © 2017-2023 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>
John Mcloughlin34c1c382023-05-17 15:08:36 +010017#include <backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060018#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010019#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010020#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Nikhil Raj1c8adac2019-07-22 11:27:29 +010021#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010022#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Francis Murtaghb3fc2522019-08-09 13:20:50 +010023#include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
Teresa Charlinc17a35f2023-01-12 14:13:09 +000024#include <backendsCommon/test/ReduceEndToEndTestImpl.hpp>
25#include <backendsCommon/test/ReshapeEndToEndTestImpl.hpp>
Ryan OShea980446b2023-06-08 16:23:28 +010026#include <backendsCommon/test/SliceEndToEndTestImpl.hpp>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010027#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010028#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly4cc341c2023-07-07 15:43:06 +010029#include <backendsCommon/test/SubgraphUtilsTest.hpp>
David Monahan36e6eae2023-07-26 18:37:45 +010030#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010031#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000032#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010033
Sadik Armagan1625efc2021-06-10 18:24:34 +010034#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010035
Sadik Armagan1625efc2021-06-10 18:24:34 +010036TEST_SUITE("NeonEndToEnd")
37{
38std::vector<armnn::BackendId> neonDefaultBackends = {armnn::Compute::CpuAcc};
narpra01b9546cf2018-11-20 15:21:28 +000039
David Monahand7fca092023-01-12 14:53:34 +000040// ElementwiseUnary
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010041// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010042TEST_CASE("NeonAbsEndToEndTestFloat32")
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010043{
Sadik Armagan1625efc2021-06-10 18:24:34 +010044 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000045 UnaryOperation::Abs);
46}
47// Rsqrt
48TEST_CASE("NeonRsqrtEndToEndTestFloat32")
49{
50 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
51 UnaryOperation::Rsqrt);
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010052}
53
54// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +010055TEST_CASE("ConstantUsage_Neon_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010056{
Sadik Armagan1625efc2021-06-10 18:24:34 +010057 CHECK(ConstantUsageFloat32Test(neonDefaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010058}
59
Matteo Martincighdb16dd32019-08-27 16:41:11 +010060#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010061
62// This test unit needs the reference backend, it's not available if the reference backend is not built
63
Sadik Armagan1625efc2021-06-10 18:24:34 +010064TEST_CASE("FallbackToCpuRef")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010065{
66 using namespace armnn;
67
68 // Create runtime in which test will run and allow fallback to CpuRef.
69 IRuntime::CreationOptions options;
70 IRuntimePtr runtime(IRuntime::Create(options));
71
72 // Builds up the structure of the network.
73 INetworkPtr net(INetwork::Create());
74
75 IConnectableLayer* input = net->AddInputLayer(0);
76
77 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
78 NormalizationDescriptor descriptor;
79 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
80
81 IConnectableLayer* output = net->AddOutputLayer(0);
82
83 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
84 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
85
86 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
87 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
88
89 // optimize the network
90 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
91 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
92
93 // Load it into the runtime. It should pass.
94 NetworkId netId;
Sadik Armagan1625efc2021-06-10 18:24:34 +010095 CHECK(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +010096}
97
Matteo Martincighe67edb22019-08-14 14:05:46 +010098#endif
99
Sadik Armagan1625efc2021-06-10 18:24:34 +0100100TEST_CASE("NeonGreaterSimpleEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +0000101{
102 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
103 0, 0, 0, 0, 0, 0, 0, 0 });
104
Sadik Armagan1625efc2021-06-10 18:24:34 +0100105 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100106 ComparisonOperation::Greater,
107 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000108}
109
Sadik Armagan1625efc2021-06-10 18:24:34 +0100110TEST_CASE("NeonGreaterSimpleEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000111{
112 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
113 0, 0, 0, 0, 0, 0, 0, 0 });
114
Sadik Armagan1625efc2021-06-10 18:24:34 +0100115 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100116 ComparisonOperation::Greater,
117 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000118}
119
Sadik Armagan1625efc2021-06-10 18:24:34 +0100120TEST_CASE("NeonGreaterBroadcastEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +0000121{
122 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
123 1, 1, 1, 1, 1, 1 });
124
Sadik Armagan1625efc2021-06-10 18:24:34 +0100125 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100126 ComparisonOperation::Greater,
127 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000128}
129
Sadik Armagan1625efc2021-06-10 18:24:34 +0100130TEST_CASE("NeonGreaterBroadcastEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000131{
132 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
133 1, 1, 1, 1, 1, 1 });
134
Sadik Armagan1625efc2021-06-10 18:24:34 +0100135 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100136 ComparisonOperation::Greater,
137 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000138}
139
John Mcloughlin34c1c382023-05-17 15:08:36 +0100140// ElementwiseBinary
141// Add
Ryan OShea3c2795a2022-11-03 17:51:52 +0000142TEST_CASE("NeonAdditionEndToEndFloat32Test")
143{
144 AdditionEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
145}
146
147TEST_CASE("NeonAdditionEndToEndUint8Test")
148{
149 AdditionEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
150}
151
John Mcloughlin34c1c382023-05-17 15:08:36 +0100152// Power
Mike Kelly4cc341c2023-07-07 15:43:06 +0100153TEST_CASE("NeonPowerEndToEndTestFloat32")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100154{
155 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, BinaryOperation::Power);
156}
157
158// SqDiff
Mike Kelly4cc341c2023-07-07 15:43:06 +0100159TEST_CASE("NeonSquaredDifferenceEndToEndTestFloat32")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100160{
161 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, BinaryOperation::SqDiff);
162}
163
Mike Kelly4cc341c2023-07-07 15:43:06 +0100164TEST_CASE("NeonSquaredDifferenceEndToEndTestUint8")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100165{
166 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, BinaryOperation::SqDiff);
167}
168
169// Batch Mat Mul
Teresa Charlina38da592022-10-31 22:09:23 +0000170TEST_CASE("NeonBatchMatMulEndToEndFloat32Test")
171{
172 BatchMatMulEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
173}
174
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000175TEST_CASE("NeonBatchMatMulEndToEndInt8Test")
176{
177 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(neonDefaultBackends);
178}
179
John Mcloughlin34c1c382023-05-17 15:08:36 +0100180// Concat
Sadik Armagan1625efc2021-06-10 18:24:34 +0100181TEST_CASE("NeonConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000182{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100183 ConcatDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000184}
185
Sadik Armagan1625efc2021-06-10 18:24:34 +0100186TEST_CASE("NeonConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000187{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100188 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000189}
190
Sadik Armagan1625efc2021-06-10 18:24:34 +0100191TEST_CASE("NeonConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000192{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100193 ConcatDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000194}
195
Sadik Armagan1625efc2021-06-10 18:24:34 +0100196TEST_CASE("NeonConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000197{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100198 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000199}
200
Sadik Armagan1625efc2021-06-10 18:24:34 +0100201TEST_CASE("NeonConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000202{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100203 ConcatDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000204}
205
Sadik Armagan1625efc2021-06-10 18:24:34 +0100206TEST_CASE("NeonConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000207{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100208 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000209}
210
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100211// DepthToSpace
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000212TEST_CASE("NeonDephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100213{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100214 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100215}
216
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000217TEST_CASE("NeonDephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100218{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100219 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100220}
221
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000222TEST_CASE("NeonDephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100223{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100224 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100225}
226
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000227TEST_CASE("NeonDephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100228{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100229 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100230}
231
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000232TEST_CASE("NeonDephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100233{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100234 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100235}
236
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000237TEST_CASE("NeonDephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100238{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100239 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100240}
241
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000242TEST_CASE("NeonDephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100243{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100244 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100245}
246
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000247TEST_CASE("NeonDephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100248{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100249 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100250}
251
252// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100253TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100254{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100255 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100256}
257
Sadik Armagan1625efc2021-06-10 18:24:34 +0100258TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100259{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100260 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100261}
262
Sadik Armagan1625efc2021-06-10 18:24:34 +0100263TEST_CASE("NeonEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000264{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100265 EluEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000266}
267
Sadik Armagan1625efc2021-06-10 18:24:34 +0100268TEST_CASE("NeonEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000269{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100270 EluEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000271}
272
Jan Eilersa83af7b2020-03-18 15:58:11 +0000273// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +0100274TEST_CASE("NeonHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000275{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100276 HardSwishEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000277}
278
Sadik Armagan1625efc2021-06-10 18:24:34 +0100279TEST_CASE("NeonHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000280{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100281 HardSwishEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000282}
283
Sadik Armagan1625efc2021-06-10 18:24:34 +0100284TEST_CASE("NeonHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000285{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100286 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000287}
288
Sadik Armagan1625efc2021-06-10 18:24:34 +0100289TEST_CASE("NeonHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000290{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100291 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000292}
293
Sadik Armagan1625efc2021-06-10 18:24:34 +0100294TEST_CASE("NeonPreluEndToEndFloat32Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100295{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100296 PreluEndToEndNegativeTest<armnn::DataType::Float32>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100297}
298
Sadik Armagan1625efc2021-06-10 18:24:34 +0100299TEST_CASE("NeonPreluEndToEndTestUint8Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100300{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100301 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100302}
303
Sadik Armagan1625efc2021-06-10 18:24:34 +0100304TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100305{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100306 SpaceToDepthNhwcEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100307}
308
Sadik Armagan1625efc2021-06-10 18:24:34 +0100309TEST_CASE("NeonSpaceToDepthNchwEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100310{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100311 SpaceToDepthNchwEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100312}
313
Sadik Armagan1625efc2021-06-10 18:24:34 +0100314TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100315{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100316 SpaceToDepthNhwcEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100317}
318
Sadik Armagan1625efc2021-06-10 18:24:34 +0100319TEST_CASE("NeonSpaceToDepthNchwEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100320{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100321 SpaceToDepthNchwEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100322}
323
Sadik Armagan1625efc2021-06-10 18:24:34 +0100324TEST_CASE("NeonSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100325{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100326 Splitter1dEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100327}
328
Sadik Armagan1625efc2021-06-10 18:24:34 +0100329TEST_CASE("NeonSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100330{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100331 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100332}
333
Sadik Armagan1625efc2021-06-10 18:24:34 +0100334TEST_CASE("NeonSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100335{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100336 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100337}
338
Sadik Armagan1625efc2021-06-10 18:24:34 +0100339TEST_CASE("NeonSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100340{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100341 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100342}
343
Sadik Armagan1625efc2021-06-10 18:24:34 +0100344TEST_CASE("NeonSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100345{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100346 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100347}
348
Sadik Armagan1625efc2021-06-10 18:24:34 +0100349TEST_CASE("NeonSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100350{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100351 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100352}
353
Sadik Armagan1625efc2021-06-10 18:24:34 +0100354TEST_CASE("NeonSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100355{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100356 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100357}
358
Sadik Armagan1625efc2021-06-10 18:24:34 +0100359TEST_CASE("NeonSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100360{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100361 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100362}
363
Sadik Armagan1625efc2021-06-10 18:24:34 +0100364TEST_CASE("NeonSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100365{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100366 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100367}
368
Sadik Armagan1625efc2021-06-10 18:24:34 +0100369TEST_CASE("NeonSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100370{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100371 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100372}
373
Sadik Armagan1625efc2021-06-10 18:24:34 +0100374TEST_CASE("NeonSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100375{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100376 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100377}
378
Sadik Armagan1625efc2021-06-10 18:24:34 +0100379TEST_CASE("NeonSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100380{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100381 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100382}
383
Sadik Armagan1625efc2021-06-10 18:24:34 +0100384TEST_CASE("NeonSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100385{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100386 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100387}
388
Sadik Armagan1625efc2021-06-10 18:24:34 +0100389TEST_CASE("NeonSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100390{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100391 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100392}
393
Sadik Armagan1625efc2021-06-10 18:24:34 +0100394TEST_CASE("NeonSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100395{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100396 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100397}
398
Sadik Armagan1625efc2021-06-10 18:24:34 +0100399TEST_CASE("NeonSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100400{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100401 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100402}
403
Sadik Armagan1625efc2021-06-10 18:24:34 +0100404TEST_CASE("NeonSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100405{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100406 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100407}
408
Sadik Armagan1625efc2021-06-10 18:24:34 +0100409TEST_CASE("NeonSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100410{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100411 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100412}
413
Sadik Armagan1625efc2021-06-10 18:24:34 +0100414TEST_CASE("NeonSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100415{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100416 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100417}
418
Sadik Armagan1625efc2021-06-10 18:24:34 +0100419TEST_CASE("NeonSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100420{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100421 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100422}
423
David Monahan36e6eae2023-07-26 18:37:45 +0100424// Tile
425TEST_CASE("NeonTileEndToEndFloat32")
426{
427 TileEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
428}
429TEST_CASE("NeonTileEndToEndFloat16")
430{
431 TileEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
432}
433TEST_CASE("NeonTileEndToEndQAsymmS8")
434{
435 TileEndToEnd<armnn::DataType::QAsymmS8>(neonDefaultBackends);
436}
437TEST_CASE("NeonTileEndToEndQAsymmU8")
438{
439 TileEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
440}
441TEST_CASE("NeonTileEndToEndQSymmS8")
442{
443 TileEndToEnd<armnn::DataType::QSymmS8>(neonDefaultBackends);
444}
445TEST_CASE("NeonTileEndToEndQSymmS16")
446{
447 TileEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends);
448}
449TEST_CASE("NeonTileEndToEndSigned32")
450{
451 TileEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
452}
453
Sadik Armagan1625efc2021-06-10 18:24:34 +0100454TEST_CASE("NeonQuantizedLstmEndToEndTest")
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100455{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100456 QuantizedLstmEndToEnd(neonDefaultBackends);
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100457}
458
Sadik Armagan1625efc2021-06-10 18:24:34 +0100459TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100460{
461 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100462 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100463}
464
Sadik Armagan1625efc2021-06-10 18:24:34 +0100465TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100466{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000467 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100468 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100469}
470
Sadik Armagan1625efc2021-06-10 18:24:34 +0100471TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100472{
473 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100474 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100475}
476
Sadik Armagan1625efc2021-06-10 18:24:34 +0100477TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100478{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000479 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100480 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100481}
482
Teresa Charlin6bc85252022-12-06 20:43:06 +0000483// Transpose
484TEST_CASE("NeonTransposeEndToEndTest")
485{
486 TransposeEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
487}
488
Sadik Armagan1625efc2021-06-10 18:24:34 +0100489TEST_CASE("NeonImportNonAlignedInputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100490{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100491 ImportNonAlignedInputPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100492}
493
Sadik Armagan1625efc2021-06-10 18:24:34 +0100494TEST_CASE("NeonExportNonAlignedOutputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100495{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100496 ExportNonAlignedOutputPointerTest(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100497}
498
Sadik Armagan1625efc2021-06-10 18:24:34 +0100499TEST_CASE("NeonImportAlignedPointerTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100500{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100501 ImportAlignedPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100502}
503
Sadik Armagan1625efc2021-06-10 18:24:34 +0100504TEST_CASE("NeonImportOnlyWorkload")
David Monahan3fb7e102019-08-20 11:25:29 +0100505{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100506 ImportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100507}
David Monahan3fb7e102019-08-20 11:25:29 +0100508
Sadik Armagan1625efc2021-06-10 18:24:34 +0100509TEST_CASE("NeonExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100510{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100511 ExportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100512}
David Monahan3fb7e102019-08-20 11:25:29 +0100513
Sadik Armagan1625efc2021-06-10 18:24:34 +0100514TEST_CASE("NeonImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100515{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100516 ImportAndExportWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100517}
David Monahan3fb7e102019-08-20 11:25:29 +0100518
Sadik Armagan1625efc2021-06-10 18:24:34 +0100519TEST_CASE("NeonExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100520{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100521 ExportOutputWithSeveralOutputSlotConnectionsTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100522}
523
Sadik Armagan062e0e92019-10-14 10:31:43 +0100524// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +0100525TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100526{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100527 InstanceNormalizationNchwEndToEndTest1(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100528}
529
Sadik Armagan1625efc2021-06-10 18:24:34 +0100530TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100531{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100532 InstanceNormalizationNchwEndToEndTest2(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100533}
534
Teresa Charlin44088502020-07-27 11:27:19 +0100535// Fill
Sadik Armagan1625efc2021-06-10 18:24:34 +0100536TEST_CASE("NeonFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100537{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100538 FillEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100539}
540
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000541TEST_CASE("NeonFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100542{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100543 FillEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100544}
545
Sadik Armagan1625efc2021-06-10 18:24:34 +0100546TEST_CASE("NeonFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100547{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100548 FillEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100549}
550
James Conroy68a4dbc2019-11-13 15:35:59 +0000551// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +0100552TEST_CASE("NeonArgMaxSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000553{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100554 ArgMaxEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000555}
556
Sadik Armagan1625efc2021-06-10 18:24:34 +0100557TEST_CASE("NeonArgMinSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000558{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100559 ArgMinEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000560}
561
Sadik Armagan1625efc2021-06-10 18:24:34 +0100562TEST_CASE("NeonArgMaxAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000563{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100564 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000565}
566
Sadik Armagan1625efc2021-06-10 18:24:34 +0100567TEST_CASE("NeonArgMinAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000568{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100569 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000570}
571
Sadik Armagan1625efc2021-06-10 18:24:34 +0100572TEST_CASE("NeonArgMaxAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000573{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100574 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000575}
576
Sadik Armagan1625efc2021-06-10 18:24:34 +0100577TEST_CASE("NeonArgMinAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000578{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100579 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000580}
581
Sadik Armagan1625efc2021-06-10 18:24:34 +0100582TEST_CASE("NeonArgMaxAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000583{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100584 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000585}
586
Sadik Armagan1625efc2021-06-10 18:24:34 +0100587TEST_CASE("NeonArgMinAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000588{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100589 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000590}
591
Sadik Armagan1625efc2021-06-10 18:24:34 +0100592TEST_CASE("NeonArgMaxAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000593{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100594 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000595}
596
Sadik Armagan1625efc2021-06-10 18:24:34 +0100597TEST_CASE("NeonArgMinAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000598{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100599 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000600}
601
Sadik Armagan1625efc2021-06-10 18:24:34 +0100602TEST_CASE("NeonArgMaxSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000603{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100604 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000605}
606
Sadik Armagan1625efc2021-06-10 18:24:34 +0100607TEST_CASE("NeonArgMinSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000608{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100609 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000610}
611
Sadik Armagan1625efc2021-06-10 18:24:34 +0100612TEST_CASE("NeonArgMaxAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000613{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100614 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000615}
616
Sadik Armagan1625efc2021-06-10 18:24:34 +0100617TEST_CASE("NeonArgMinAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000618{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100619 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000620}
621
Sadik Armagan1625efc2021-06-10 18:24:34 +0100622TEST_CASE("NeonArgMaxAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000623{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100624 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000625}
626
Sadik Armagan1625efc2021-06-10 18:24:34 +0100627TEST_CASE("NeonArgMinAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000628{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100629 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000630}
631
Sadik Armagan1625efc2021-06-10 18:24:34 +0100632TEST_CASE("NeonArgMaxAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000633{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100634 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000635}
636
Sadik Armagan1625efc2021-06-10 18:24:34 +0100637TEST_CASE("NeonArgMinAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000638{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100639 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000640}
641
Sadik Armagan1625efc2021-06-10 18:24:34 +0100642TEST_CASE("NeonArgMaxAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000643{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100644 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000645}
646
Sadik Armagan1625efc2021-06-10 18:24:34 +0100647TEST_CASE("NeonArgMinAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000648{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100649 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000650}
651
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000652// Reduce
653TEST_CASE("NeonReduceEndToEndTest")
654{
655 ReduceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
656}
657
658TEST_CASE("NeonReduceEndToEndTestFloat16")
659{
660 ReduceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
661}
662
663// Reshape
664TEST_CASE("NeonReshapeEndToEndTest")
665{
666 ReshapeEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
667}
668
669TEST_CASE("NeonReshapeEndToEndTestFloat16")
670{
671 ReshapeEndToEndFloat16<armnn::DataType::Float16>(neonDefaultBackends);
672}
673
Ryan OShea980446b2023-06-08 16:23:28 +0100674// Slice
675TEST_CASE("NeonSliceEndtoEndTestFloat32")
676{
677 SliceEndToEnd<DataType::Float32>(neonDefaultBackends);
678}
679
680TEST_CASE("NeonSliceEndtoEndTestInt32")
681{
682 SliceEndToEnd<DataType::Signed32>(neonDefaultBackends);
683}
684
685TEST_CASE("NeonSliceEndtoEndTestFloat16")
686{
687 SliceEndToEndFloat16<DataType::Float16>(neonDefaultBackends);
688}
689
Sadik Armagan1625efc2021-06-10 18:24:34 +0100690TEST_CASE("NeonStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +0000691{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100692 StridedSliceInvalidSliceEndToEndTest(neonDefaultBackends);
David Monahan0a99a142020-03-13 07:52:54 +0000693}
694
Colm Doneland7ceec52022-07-06 12:09:05 +0100695TEST_CASE("NeonForceImportWithAlignedBuffersEndToEndTest"
696 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
697 // will always fail.
698 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000699{
700 ForceImportWithAlignedBuffersEndToEndTest(neonDefaultBackends);
701}
702
Colm Doneland7ceec52022-07-06 12:09:05 +0100703TEST_CASE("NeonForceImportWithMisalignedInputBuffersEndToEndTest"
704 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
705 // will always fail.
706 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000707{
708 ForceImportWithMisalignedInputBuffersEndToEndTest(neonDefaultBackends);
709}
710
Colm Doneland7ceec52022-07-06 12:09:05 +0100711TEST_CASE("NeonForceImportWithMisalignedOutputBuffersEndToEndTest"
712 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
713 // will always fail.
714 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000715{
716 ForceImportWithMisalignedOutputBuffersEndToEndTest(neonDefaultBackends);
717}
718
719TEST_CASE("NeonForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
720{
721 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(neonDefaultBackends);
722}
723
Sadik Armagan1625efc2021-06-10 18:24:34 +0100724// DISABLED
725//TEST_CASE("NeonDetectionPostProcessRegularNmsTest")
726//{
727// std::vector<float> boxEncodings({
728// 0.0f, 0.0f, 0.0f, 0.0f,
729// 0.0f, 1.0f, 0.0f, 0.0f,
730// 0.0f, -1.0f, 0.0f, 0.0f,
731// 0.0f, 0.0f, 0.0f, 0.0f,
732// 0.0f, 1.0f, 0.0f, 0.0f,
733// 0.0f, 0.0f, 0.0f, 0.0f
734// });
735// std::vector<float> scores({
736// 0.0f, 0.9f, 0.8f,
737// 0.0f, 0.75f, 0.72f,
738// 0.0f, 0.6f, 0.5f,
739// 0.0f, 0.93f, 0.95f,
740// 0.0f, 0.5f, 0.4f,
741// 0.0f, 0.3f, 0.2f
742// });
743// std::vector<float> anchors({
744// 0.5f, 0.5f, 1.0f, 1.0f,
745// 0.5f, 0.5f, 1.0f, 1.0f,
746// 0.5f, 0.5f, 1.0f, 1.0f,
747// 0.5f, 10.5f, 1.0f, 1.0f,
748// 0.5f, 10.5f, 1.0f, 1.0f,
749// 0.5f, 100.5f, 1.0f, 1.0f
750// });
751// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
752// boxEncodings,
753// scores,
754// anchors);
755//}
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000756
757inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
758{
759 for (size_t i = 0; i < info.GetNumElements(); i++)
760 {
761 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
762 }
763}
764
Sadik Armagan1625efc2021-06-10 18:24:34 +0100765// DISABLED
766//TEST_CASE("NeonDetectionPostProcessRegularNmsUint8Test")
767//{
768// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
769// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
770// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
771//
772// boxEncodingsInfo.SetQuantizationScale(1.0f);
773// boxEncodingsInfo.SetQuantizationOffset(1);
774// scoresInfo.SetQuantizationScale(0.01f);
775// scoresInfo.SetQuantizationOffset(0);
776// anchorsInfo.SetQuantizationScale(0.5f);
777// anchorsInfo.SetQuantizationOffset(0);
778//
779// std::vector<float> boxEncodings({
780// 0.0f, 0.0f, 0.0f, 0.0f,
781// 0.0f, 1.0f, 0.0f, 0.0f,
782// 0.0f, -1.0f, 0.0f, 0.0f,
783// 0.0f, 0.0f, 0.0f, 0.0f,
784// 0.0f, 1.0f, 0.0f, 0.0f,
785// 0.0f, 0.0f, 0.0f, 0.0f
786// });
787// std::vector<float> scores({
788// 0.0f, 0.9f, 0.8f,
789// 0.0f, 0.75f, 0.72f,
790// 0.0f, 0.6f, 0.5f,
791// 0.0f, 0.93f, 0.95f,
792// 0.0f, 0.5f, 0.4f,
793// 0.0f, 0.3f, 0.2f
794// });
795// std::vector<float> anchors({
796// 0.5f, 0.5f, 1.0f, 1.0f,
797// 0.5f, 0.5f, 1.0f, 1.0f,
798// 0.5f, 0.5f, 1.0f, 1.0f,
799// 0.5f, 10.5f, 1.0f, 1.0f,
800// 0.5f, 10.5f, 1.0f, 1.0f,
801// 0.5f, 100.5f, 1.0f, 1.0f
802// });
803//
804// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
805// std::vector<uint8_t> qScores(scores.size(), 0);
806// std::vector<uint8_t> qAnchors(anchors.size(), 0);
807// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
808// QuantizeData(qScores.data(), scores.data(), scoresInfo);
809// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
810// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
811// qScores, qAnchors,
812// 1.0f, 1, 0.01f, 0, 0.5f, 0);
813//}
814//
815//TEST_CASE("NeonDetectionPostProcessFastNmsTest")
816//{
817// std::vector<float> boxEncodings({
818// 0.0f, 0.0f, 0.0f, 0.0f,
819// 0.0f, 1.0f, 0.0f, 0.0f,
820// 0.0f, -1.0f, 0.0f, 0.0f,
821// 0.0f, 0.0f, 0.0f, 0.0f,
822// 0.0f, 1.0f, 0.0f, 0.0f,
823// 0.0f, 0.0f, 0.0f, 0.0f
824// });
825// std::vector<float> scores({
826// 0.0f, 0.9f, 0.8f,
827// 0.0f, 0.75f, 0.72f,
828// 0.0f, 0.6f, 0.5f,
829// 0.0f, 0.93f, 0.95f,
830// 0.0f, 0.5f, 0.4f,
831// 0.0f, 0.3f, 0.2f
832// });
833// std::vector<float> anchors({
834// 0.5f, 0.5f, 1.0f, 1.0f,
835// 0.5f, 0.5f, 1.0f, 1.0f,
836// 0.5f, 0.5f, 1.0f, 1.0f,
837// 0.5f, 10.5f, 1.0f, 1.0f,
838// 0.5f, 10.5f, 1.0f, 1.0f,
839// 0.5f, 100.5f, 1.0f, 1.0f
840// });
841// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
842// boxEncodings,
843// scores,
844// anchors);
845//}
846//
847// DISABLED
848//TEST_CASE("NeonDetectionPostProcessFastNmsUint8Test")
849//{
850// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
851// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
852// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
853//
854// boxEncodingsInfo.SetQuantizationScale(1.0f);
855// boxEncodingsInfo.SetQuantizationOffset(1);
856// scoresInfo.SetQuantizationScale(0.01f);
857// scoresInfo.SetQuantizationOffset(0);
858// anchorsInfo.SetQuantizationScale(0.5f);
859// anchorsInfo.SetQuantizationOffset(0);
860//
861// std::vector<float> boxEncodings({
862// 0.0f, 0.0f, 0.0f, 0.0f,
863// 0.0f, 1.0f, 0.0f, 0.0f,
864// 0.0f, -1.0f, 0.0f, 0.0f,
865// 0.0f, 0.0f, 0.0f, 0.0f,
866// 0.0f, 1.0f, 0.0f, 0.0f,
867// 0.0f, 0.0f, 0.0f, 0.0f
868// });
869// std::vector<float> scores({
870// 0.0f, 0.9f, 0.8f,
871// 0.0f, 0.75f, 0.72f,
872// 0.0f, 0.6f, 0.5f,
873// 0.0f, 0.93f, 0.95f,
874// 0.0f, 0.5f, 0.4f,
875// 0.0f, 0.3f, 0.2f
876// });
877// std::vector<float> anchors({
878// 0.5f, 0.5f, 1.0f, 1.0f,
879// 0.5f, 0.5f, 1.0f, 1.0f,
880// 0.5f, 0.5f, 1.0f, 1.0f,
881// 0.5f, 10.5f, 1.0f, 1.0f,
882// 0.5f, 10.5f, 1.0f, 1.0f,
883// 0.5f, 100.5f, 1.0f, 1.0f
884// });
885//
886// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
887// std::vector<uint8_t> qScores(scores.size(), 0);
888// std::vector<uint8_t> qAnchors(anchors.size(), 0);
889// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
890// QuantizeData(qScores.data(), scores.data(), scoresInfo);
891// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
892// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
893// qScores, qAnchors,
894// 1.0f, 1, 0.01f, 0, 0.5f, 0);
895//}
896
897TEST_CASE("NeonQLstmEndToEndTest")
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000898{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100899 QLstmEndToEnd(neonDefaultBackends);
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000900}
901
Mike Kelly4cc341c2023-07-07 15:43:06 +0100902TEST_CASE("NeonReshapeRemovalSimpleCaseEndToEnd")
903{
904 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
905}
906
907TEST_CASE("NeonReshapeRemovalNCHWFirstEndToEnd")
908{
909 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, false, true);
910}
911
912TEST_CASE("NeonReshapeRemovalNCHWSecondEndToEnd")
913{
914 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, false, false);
915}
916
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000917}