blob: 4f3b8ec832efabafdedc66fbcf401ec2bc1ca945 [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>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010026#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010027#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly4cc341c2023-07-07 15:43:06 +010028#include <backendsCommon/test/SubgraphUtilsTest.hpp>
David Monahan36e6eae2023-07-26 18:37:45 +010029#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010030#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000031#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010032
Sadik Armagan1625efc2021-06-10 18:24:34 +010033#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010034
Sadik Armagan1625efc2021-06-10 18:24:34 +010035TEST_SUITE("NeonEndToEnd")
36{
37std::vector<armnn::BackendId> neonDefaultBackends = {armnn::Compute::CpuAcc};
narpra01b9546cf2018-11-20 15:21:28 +000038
David Monahand7fca092023-01-12 14:53:34 +000039// ElementwiseUnary
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010040// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010041TEST_CASE("NeonAbsEndToEndTestFloat32")
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010042{
Sadik Armagan1625efc2021-06-10 18:24:34 +010043 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000044 UnaryOperation::Abs);
45}
46// Rsqrt
47TEST_CASE("NeonRsqrtEndToEndTestFloat32")
48{
49 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
50 UnaryOperation::Rsqrt);
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010051}
52
53// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +010054TEST_CASE("ConstantUsage_Neon_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010055{
Sadik Armagan1625efc2021-06-10 18:24:34 +010056 CHECK(ConstantUsageFloat32Test(neonDefaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010057}
58
Matteo Martincighdb16dd32019-08-27 16:41:11 +010059#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010060
61// This test unit needs the reference backend, it's not available if the reference backend is not built
62
Sadik Armagan1625efc2021-06-10 18:24:34 +010063TEST_CASE("FallbackToCpuRef")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010064{
65 using namespace armnn;
66
67 // Create runtime in which test will run and allow fallback to CpuRef.
68 IRuntime::CreationOptions options;
69 IRuntimePtr runtime(IRuntime::Create(options));
70
71 // Builds up the structure of the network.
72 INetworkPtr net(INetwork::Create());
73
74 IConnectableLayer* input = net->AddInputLayer(0);
75
76 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
77 NormalizationDescriptor descriptor;
78 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
79
80 IConnectableLayer* output = net->AddOutputLayer(0);
81
82 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
83 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
84
85 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
86 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
87
88 // optimize the network
89 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
90 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
91
92 // Load it into the runtime. It should pass.
93 NetworkId netId;
Sadik Armagan1625efc2021-06-10 18:24:34 +010094 CHECK(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +010095}
96
Matteo Martincighe67edb22019-08-14 14:05:46 +010097#endif
98
Sadik Armagan1625efc2021-06-10 18:24:34 +010099TEST_CASE("NeonGreaterSimpleEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +0000100{
101 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
102 0, 0, 0, 0, 0, 0, 0, 0 });
103
Sadik Armagan1625efc2021-06-10 18:24:34 +0100104 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100105 ComparisonOperation::Greater,
106 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000107}
108
Sadik Armagan1625efc2021-06-10 18:24:34 +0100109TEST_CASE("NeonGreaterSimpleEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000110{
111 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
112 0, 0, 0, 0, 0, 0, 0, 0 });
113
Sadik Armagan1625efc2021-06-10 18:24:34 +0100114 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100115 ComparisonOperation::Greater,
116 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000117}
118
Sadik Armagan1625efc2021-06-10 18:24:34 +0100119TEST_CASE("NeonGreaterBroadcastEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +0000120{
121 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
122 1, 1, 1, 1, 1, 1 });
123
Sadik Armagan1625efc2021-06-10 18:24:34 +0100124 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100125 ComparisonOperation::Greater,
126 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000127}
128
Sadik Armagan1625efc2021-06-10 18:24:34 +0100129TEST_CASE("NeonGreaterBroadcastEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000130{
131 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
132 1, 1, 1, 1, 1, 1 });
133
Sadik Armagan1625efc2021-06-10 18:24:34 +0100134 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100135 ComparisonOperation::Greater,
136 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000137}
138
John Mcloughlin34c1c382023-05-17 15:08:36 +0100139// ElementwiseBinary
140// Add
Ryan OShea3c2795a2022-11-03 17:51:52 +0000141TEST_CASE("NeonAdditionEndToEndFloat32Test")
142{
143 AdditionEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
144}
145
146TEST_CASE("NeonAdditionEndToEndUint8Test")
147{
148 AdditionEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
149}
150
John Mcloughlin34c1c382023-05-17 15:08:36 +0100151// Power
Mike Kelly4cc341c2023-07-07 15:43:06 +0100152TEST_CASE("NeonPowerEndToEndTestFloat32")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100153{
154 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, BinaryOperation::Power);
155}
156
157// SqDiff
Mike Kelly4cc341c2023-07-07 15:43:06 +0100158TEST_CASE("NeonSquaredDifferenceEndToEndTestFloat32")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100159{
160 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, BinaryOperation::SqDiff);
161}
162
Mike Kelly4cc341c2023-07-07 15:43:06 +0100163TEST_CASE("NeonSquaredDifferenceEndToEndTestUint8")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100164{
165 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, BinaryOperation::SqDiff);
166}
167
168// Batch Mat Mul
Teresa Charlina38da592022-10-31 22:09:23 +0000169TEST_CASE("NeonBatchMatMulEndToEndFloat32Test")
170{
171 BatchMatMulEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
172}
173
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000174TEST_CASE("NeonBatchMatMulEndToEndInt8Test")
175{
176 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(neonDefaultBackends);
177}
178
John Mcloughlin34c1c382023-05-17 15:08:36 +0100179// Concat
Sadik Armagan1625efc2021-06-10 18:24:34 +0100180TEST_CASE("NeonConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000181{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100182 ConcatDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000183}
184
Sadik Armagan1625efc2021-06-10 18:24:34 +0100185TEST_CASE("NeonConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000186{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100187 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000188}
189
Sadik Armagan1625efc2021-06-10 18:24:34 +0100190TEST_CASE("NeonConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000191{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100192 ConcatDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000193}
194
Sadik Armagan1625efc2021-06-10 18:24:34 +0100195TEST_CASE("NeonConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000196{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100197 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000198}
199
Sadik Armagan1625efc2021-06-10 18:24:34 +0100200TEST_CASE("NeonConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000201{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100202 ConcatDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000203}
204
Sadik Armagan1625efc2021-06-10 18:24:34 +0100205TEST_CASE("NeonConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000206{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100207 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000208}
209
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100210// DepthToSpace
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000211TEST_CASE("NeonDephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100212{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100213 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100214}
215
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000216TEST_CASE("NeonDephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100217{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100218 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100219}
220
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000221TEST_CASE("NeonDephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100222{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100223 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100224}
225
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000226TEST_CASE("NeonDephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100227{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100228 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100229}
230
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000231TEST_CASE("NeonDephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100232{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100233 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100234}
235
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000236TEST_CASE("NeonDephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100237{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100238 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100239}
240
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000241TEST_CASE("NeonDephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100242{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100243 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100244}
245
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000246TEST_CASE("NeonDephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100247{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100248 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100249}
250
251// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100252TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100253{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100254 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100255}
256
Sadik Armagan1625efc2021-06-10 18:24:34 +0100257TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100258{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100259 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100260}
261
Sadik Armagan1625efc2021-06-10 18:24:34 +0100262TEST_CASE("NeonEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000263{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100264 EluEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000265}
266
Sadik Armagan1625efc2021-06-10 18:24:34 +0100267TEST_CASE("NeonEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000268{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100269 EluEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000270}
271
Jan Eilersa83af7b2020-03-18 15:58:11 +0000272// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +0100273TEST_CASE("NeonHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000274{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100275 HardSwishEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000276}
277
Sadik Armagan1625efc2021-06-10 18:24:34 +0100278TEST_CASE("NeonHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000279{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100280 HardSwishEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000281}
282
Sadik Armagan1625efc2021-06-10 18:24:34 +0100283TEST_CASE("NeonHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000284{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100285 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000286}
287
Sadik Armagan1625efc2021-06-10 18:24:34 +0100288TEST_CASE("NeonHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000289{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100290 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000291}
292
Sadik Armagan1625efc2021-06-10 18:24:34 +0100293TEST_CASE("NeonPreluEndToEndFloat32Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100294{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100295 PreluEndToEndNegativeTest<armnn::DataType::Float32>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100296}
297
Sadik Armagan1625efc2021-06-10 18:24:34 +0100298TEST_CASE("NeonPreluEndToEndTestUint8Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100299{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100300 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100301}
302
Sadik Armagan1625efc2021-06-10 18:24:34 +0100303TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100304{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100305 SpaceToDepthNhwcEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100306}
307
Sadik Armagan1625efc2021-06-10 18:24:34 +0100308TEST_CASE("NeonSpaceToDepthNchwEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100309{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100310 SpaceToDepthNchwEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100311}
312
Sadik Armagan1625efc2021-06-10 18:24:34 +0100313TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100314{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100315 SpaceToDepthNhwcEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100316}
317
Sadik Armagan1625efc2021-06-10 18:24:34 +0100318TEST_CASE("NeonSpaceToDepthNchwEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100319{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100320 SpaceToDepthNchwEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100321}
322
Sadik Armagan1625efc2021-06-10 18:24:34 +0100323TEST_CASE("NeonSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100324{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100325 Splitter1dEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100326}
327
Sadik Armagan1625efc2021-06-10 18:24:34 +0100328TEST_CASE("NeonSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100329{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100330 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100331}
332
Sadik Armagan1625efc2021-06-10 18:24:34 +0100333TEST_CASE("NeonSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100334{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100335 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100336}
337
Sadik Armagan1625efc2021-06-10 18:24:34 +0100338TEST_CASE("NeonSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100339{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100340 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100341}
342
Sadik Armagan1625efc2021-06-10 18:24:34 +0100343TEST_CASE("NeonSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100344{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100345 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100346}
347
Sadik Armagan1625efc2021-06-10 18:24:34 +0100348TEST_CASE("NeonSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100349{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100350 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100351}
352
Sadik Armagan1625efc2021-06-10 18:24:34 +0100353TEST_CASE("NeonSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100354{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100355 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100356}
357
Sadik Armagan1625efc2021-06-10 18:24:34 +0100358TEST_CASE("NeonSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100359{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100360 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100361}
362
Sadik Armagan1625efc2021-06-10 18:24:34 +0100363TEST_CASE("NeonSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100364{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100365 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100366}
367
Sadik Armagan1625efc2021-06-10 18:24:34 +0100368TEST_CASE("NeonSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100369{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100370 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100371}
372
Sadik Armagan1625efc2021-06-10 18:24:34 +0100373TEST_CASE("NeonSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100374{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100375 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100376}
377
Sadik Armagan1625efc2021-06-10 18:24:34 +0100378TEST_CASE("NeonSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100379{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100380 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100381}
382
Sadik Armagan1625efc2021-06-10 18:24:34 +0100383TEST_CASE("NeonSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100384{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100385 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100386}
387
Sadik Armagan1625efc2021-06-10 18:24:34 +0100388TEST_CASE("NeonSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100389{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100390 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100391}
392
Sadik Armagan1625efc2021-06-10 18:24:34 +0100393TEST_CASE("NeonSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100394{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100395 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100396}
397
Sadik Armagan1625efc2021-06-10 18:24:34 +0100398TEST_CASE("NeonSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100399{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100400 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100401}
402
Sadik Armagan1625efc2021-06-10 18:24:34 +0100403TEST_CASE("NeonSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100404{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100405 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100406}
407
Sadik Armagan1625efc2021-06-10 18:24:34 +0100408TEST_CASE("NeonSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100409{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100410 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100411}
412
Sadik Armagan1625efc2021-06-10 18:24:34 +0100413TEST_CASE("NeonSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100414{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100415 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100416}
417
Sadik Armagan1625efc2021-06-10 18:24:34 +0100418TEST_CASE("NeonSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100419{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100420 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100421}
422
David Monahan36e6eae2023-07-26 18:37:45 +0100423// Tile
424TEST_CASE("NeonTileEndToEndFloat32")
425{
426 TileEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
427}
428TEST_CASE("NeonTileEndToEndFloat16")
429{
430 TileEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
431}
432TEST_CASE("NeonTileEndToEndQAsymmS8")
433{
434 TileEndToEnd<armnn::DataType::QAsymmS8>(neonDefaultBackends);
435}
436TEST_CASE("NeonTileEndToEndQAsymmU8")
437{
438 TileEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
439}
440TEST_CASE("NeonTileEndToEndQSymmS8")
441{
442 TileEndToEnd<armnn::DataType::QSymmS8>(neonDefaultBackends);
443}
444TEST_CASE("NeonTileEndToEndQSymmS16")
445{
446 TileEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends);
447}
448TEST_CASE("NeonTileEndToEndSigned32")
449{
450 TileEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
451}
452
Sadik Armagan1625efc2021-06-10 18:24:34 +0100453TEST_CASE("NeonQuantizedLstmEndToEndTest")
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100454{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100455 QuantizedLstmEndToEnd(neonDefaultBackends);
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100456}
457
Sadik Armagan1625efc2021-06-10 18:24:34 +0100458TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100459{
460 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100461 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100462}
463
Sadik Armagan1625efc2021-06-10 18:24:34 +0100464TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100465{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000466 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100467 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100468}
469
Sadik Armagan1625efc2021-06-10 18:24:34 +0100470TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100471{
472 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100473 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100474}
475
Sadik Armagan1625efc2021-06-10 18:24:34 +0100476TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100477{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000478 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100479 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100480}
481
Teresa Charlin6bc85252022-12-06 20:43:06 +0000482// Transpose
483TEST_CASE("NeonTransposeEndToEndTest")
484{
485 TransposeEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
486}
487
Sadik Armagan1625efc2021-06-10 18:24:34 +0100488TEST_CASE("NeonImportNonAlignedInputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100489{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100490 ImportNonAlignedInputPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100491}
492
Sadik Armagan1625efc2021-06-10 18:24:34 +0100493TEST_CASE("NeonExportNonAlignedOutputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100494{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100495 ExportNonAlignedOutputPointerTest(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100496}
497
Sadik Armagan1625efc2021-06-10 18:24:34 +0100498TEST_CASE("NeonImportAlignedPointerTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100499{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100500 ImportAlignedPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100501}
502
Sadik Armagan1625efc2021-06-10 18:24:34 +0100503TEST_CASE("NeonImportOnlyWorkload")
David Monahan3fb7e102019-08-20 11:25:29 +0100504{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100505 ImportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100506}
David Monahan3fb7e102019-08-20 11:25:29 +0100507
Sadik Armagan1625efc2021-06-10 18:24:34 +0100508TEST_CASE("NeonExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100509{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100510 ExportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100511}
David Monahan3fb7e102019-08-20 11:25:29 +0100512
Sadik Armagan1625efc2021-06-10 18:24:34 +0100513TEST_CASE("NeonImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100514{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100515 ImportAndExportWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100516}
David Monahan3fb7e102019-08-20 11:25:29 +0100517
Sadik Armagan1625efc2021-06-10 18:24:34 +0100518TEST_CASE("NeonExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100519{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100520 ExportOutputWithSeveralOutputSlotConnectionsTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100521}
522
Sadik Armagan062e0e92019-10-14 10:31:43 +0100523// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +0100524TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100525{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100526 InstanceNormalizationNchwEndToEndTest1(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100527}
528
Sadik Armagan1625efc2021-06-10 18:24:34 +0100529TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100530{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100531 InstanceNormalizationNchwEndToEndTest2(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100532}
533
Teresa Charlin44088502020-07-27 11:27:19 +0100534// Fill
Sadik Armagan1625efc2021-06-10 18:24:34 +0100535TEST_CASE("NeonFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100536{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100537 FillEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100538}
539
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000540TEST_CASE("NeonFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100541{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100542 FillEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100543}
544
Sadik Armagan1625efc2021-06-10 18:24:34 +0100545TEST_CASE("NeonFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100546{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100547 FillEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100548}
549
James Conroy68a4dbc2019-11-13 15:35:59 +0000550// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +0100551TEST_CASE("NeonArgMaxSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000552{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100553 ArgMaxEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000554}
555
Sadik Armagan1625efc2021-06-10 18:24:34 +0100556TEST_CASE("NeonArgMinSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000557{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100558 ArgMinEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000559}
560
Sadik Armagan1625efc2021-06-10 18:24:34 +0100561TEST_CASE("NeonArgMaxAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000562{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100563 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000564}
565
Sadik Armagan1625efc2021-06-10 18:24:34 +0100566TEST_CASE("NeonArgMinAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000567{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100568 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000569}
570
Sadik Armagan1625efc2021-06-10 18:24:34 +0100571TEST_CASE("NeonArgMaxAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000572{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100573 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000574}
575
Sadik Armagan1625efc2021-06-10 18:24:34 +0100576TEST_CASE("NeonArgMinAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000577{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100578 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000579}
580
Sadik Armagan1625efc2021-06-10 18:24:34 +0100581TEST_CASE("NeonArgMaxAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000582{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100583 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000584}
585
Sadik Armagan1625efc2021-06-10 18:24:34 +0100586TEST_CASE("NeonArgMinAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000587{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100588 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000589}
590
Sadik Armagan1625efc2021-06-10 18:24:34 +0100591TEST_CASE("NeonArgMaxAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000592{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100593 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000594}
595
Sadik Armagan1625efc2021-06-10 18:24:34 +0100596TEST_CASE("NeonArgMinAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000597{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100598 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000599}
600
Sadik Armagan1625efc2021-06-10 18:24:34 +0100601TEST_CASE("NeonArgMaxSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000602{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100603 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000604}
605
Sadik Armagan1625efc2021-06-10 18:24:34 +0100606TEST_CASE("NeonArgMinSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000607{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100608 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000609}
610
Sadik Armagan1625efc2021-06-10 18:24:34 +0100611TEST_CASE("NeonArgMaxAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000612{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100613 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000614}
615
Sadik Armagan1625efc2021-06-10 18:24:34 +0100616TEST_CASE("NeonArgMinAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000617{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100618 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000619}
620
Sadik Armagan1625efc2021-06-10 18:24:34 +0100621TEST_CASE("NeonArgMaxAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000622{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100623 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000624}
625
Sadik Armagan1625efc2021-06-10 18:24:34 +0100626TEST_CASE("NeonArgMinAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000627{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100628 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000629}
630
Sadik Armagan1625efc2021-06-10 18:24:34 +0100631TEST_CASE("NeonArgMaxAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000632{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100633 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000634}
635
Sadik Armagan1625efc2021-06-10 18:24:34 +0100636TEST_CASE("NeonArgMinAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000637{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100638 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000639}
640
Sadik Armagan1625efc2021-06-10 18:24:34 +0100641TEST_CASE("NeonArgMaxAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000642{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100643 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000644}
645
Sadik Armagan1625efc2021-06-10 18:24:34 +0100646TEST_CASE("NeonArgMinAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000647{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100648 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000649}
650
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000651// Reduce
652TEST_CASE("NeonReduceEndToEndTest")
653{
654 ReduceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
655}
656
657TEST_CASE("NeonReduceEndToEndTestFloat16")
658{
659 ReduceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
660}
661
662// Reshape
663TEST_CASE("NeonReshapeEndToEndTest")
664{
665 ReshapeEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
666}
667
668TEST_CASE("NeonReshapeEndToEndTestFloat16")
669{
670 ReshapeEndToEndFloat16<armnn::DataType::Float16>(neonDefaultBackends);
671}
672
Sadik Armagan1625efc2021-06-10 18:24:34 +0100673TEST_CASE("NeonStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +0000674{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100675 StridedSliceInvalidSliceEndToEndTest(neonDefaultBackends);
David Monahan0a99a142020-03-13 07:52:54 +0000676}
677
Colm Doneland7ceec52022-07-06 12:09:05 +0100678TEST_CASE("NeonForceImportWithAlignedBuffersEndToEndTest"
679 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
680 // will always fail.
681 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000682{
683 ForceImportWithAlignedBuffersEndToEndTest(neonDefaultBackends);
684}
685
Colm Doneland7ceec52022-07-06 12:09:05 +0100686TEST_CASE("NeonForceImportWithMisalignedInputBuffersEndToEndTest"
687 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
688 // will always fail.
689 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000690{
691 ForceImportWithMisalignedInputBuffersEndToEndTest(neonDefaultBackends);
692}
693
Colm Doneland7ceec52022-07-06 12:09:05 +0100694TEST_CASE("NeonForceImportWithMisalignedOutputBuffersEndToEndTest"
695 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
696 // will always fail.
697 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000698{
699 ForceImportWithMisalignedOutputBuffersEndToEndTest(neonDefaultBackends);
700}
701
702TEST_CASE("NeonForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
703{
704 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(neonDefaultBackends);
705}
706
Sadik Armagan1625efc2021-06-10 18:24:34 +0100707// DISABLED
708//TEST_CASE("NeonDetectionPostProcessRegularNmsTest")
709//{
710// std::vector<float> boxEncodings({
711// 0.0f, 0.0f, 0.0f, 0.0f,
712// 0.0f, 1.0f, 0.0f, 0.0f,
713// 0.0f, -1.0f, 0.0f, 0.0f,
714// 0.0f, 0.0f, 0.0f, 0.0f,
715// 0.0f, 1.0f, 0.0f, 0.0f,
716// 0.0f, 0.0f, 0.0f, 0.0f
717// });
718// std::vector<float> scores({
719// 0.0f, 0.9f, 0.8f,
720// 0.0f, 0.75f, 0.72f,
721// 0.0f, 0.6f, 0.5f,
722// 0.0f, 0.93f, 0.95f,
723// 0.0f, 0.5f, 0.4f,
724// 0.0f, 0.3f, 0.2f
725// });
726// std::vector<float> anchors({
727// 0.5f, 0.5f, 1.0f, 1.0f,
728// 0.5f, 0.5f, 1.0f, 1.0f,
729// 0.5f, 0.5f, 1.0f, 1.0f,
730// 0.5f, 10.5f, 1.0f, 1.0f,
731// 0.5f, 10.5f, 1.0f, 1.0f,
732// 0.5f, 100.5f, 1.0f, 1.0f
733// });
734// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
735// boxEncodings,
736// scores,
737// anchors);
738//}
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000739
740inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
741{
742 for (size_t i = 0; i < info.GetNumElements(); i++)
743 {
744 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
745 }
746}
747
Sadik Armagan1625efc2021-06-10 18:24:34 +0100748// DISABLED
749//TEST_CASE("NeonDetectionPostProcessRegularNmsUint8Test")
750//{
751// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
752// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
753// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
754//
755// boxEncodingsInfo.SetQuantizationScale(1.0f);
756// boxEncodingsInfo.SetQuantizationOffset(1);
757// scoresInfo.SetQuantizationScale(0.01f);
758// scoresInfo.SetQuantizationOffset(0);
759// anchorsInfo.SetQuantizationScale(0.5f);
760// anchorsInfo.SetQuantizationOffset(0);
761//
762// std::vector<float> boxEncodings({
763// 0.0f, 0.0f, 0.0f, 0.0f,
764// 0.0f, 1.0f, 0.0f, 0.0f,
765// 0.0f, -1.0f, 0.0f, 0.0f,
766// 0.0f, 0.0f, 0.0f, 0.0f,
767// 0.0f, 1.0f, 0.0f, 0.0f,
768// 0.0f, 0.0f, 0.0f, 0.0f
769// });
770// std::vector<float> scores({
771// 0.0f, 0.9f, 0.8f,
772// 0.0f, 0.75f, 0.72f,
773// 0.0f, 0.6f, 0.5f,
774// 0.0f, 0.93f, 0.95f,
775// 0.0f, 0.5f, 0.4f,
776// 0.0f, 0.3f, 0.2f
777// });
778// std::vector<float> anchors({
779// 0.5f, 0.5f, 1.0f, 1.0f,
780// 0.5f, 0.5f, 1.0f, 1.0f,
781// 0.5f, 0.5f, 1.0f, 1.0f,
782// 0.5f, 10.5f, 1.0f, 1.0f,
783// 0.5f, 10.5f, 1.0f, 1.0f,
784// 0.5f, 100.5f, 1.0f, 1.0f
785// });
786//
787// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
788// std::vector<uint8_t> qScores(scores.size(), 0);
789// std::vector<uint8_t> qAnchors(anchors.size(), 0);
790// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
791// QuantizeData(qScores.data(), scores.data(), scoresInfo);
792// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
793// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
794// qScores, qAnchors,
795// 1.0f, 1, 0.01f, 0, 0.5f, 0);
796//}
797//
798//TEST_CASE("NeonDetectionPostProcessFastNmsTest")
799//{
800// std::vector<float> boxEncodings({
801// 0.0f, 0.0f, 0.0f, 0.0f,
802// 0.0f, 1.0f, 0.0f, 0.0f,
803// 0.0f, -1.0f, 0.0f, 0.0f,
804// 0.0f, 0.0f, 0.0f, 0.0f,
805// 0.0f, 1.0f, 0.0f, 0.0f,
806// 0.0f, 0.0f, 0.0f, 0.0f
807// });
808// std::vector<float> scores({
809// 0.0f, 0.9f, 0.8f,
810// 0.0f, 0.75f, 0.72f,
811// 0.0f, 0.6f, 0.5f,
812// 0.0f, 0.93f, 0.95f,
813// 0.0f, 0.5f, 0.4f,
814// 0.0f, 0.3f, 0.2f
815// });
816// std::vector<float> anchors({
817// 0.5f, 0.5f, 1.0f, 1.0f,
818// 0.5f, 0.5f, 1.0f, 1.0f,
819// 0.5f, 0.5f, 1.0f, 1.0f,
820// 0.5f, 10.5f, 1.0f, 1.0f,
821// 0.5f, 10.5f, 1.0f, 1.0f,
822// 0.5f, 100.5f, 1.0f, 1.0f
823// });
824// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
825// boxEncodings,
826// scores,
827// anchors);
828//}
829//
830// DISABLED
831//TEST_CASE("NeonDetectionPostProcessFastNmsUint8Test")
832//{
833// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
834// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
835// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
836//
837// boxEncodingsInfo.SetQuantizationScale(1.0f);
838// boxEncodingsInfo.SetQuantizationOffset(1);
839// scoresInfo.SetQuantizationScale(0.01f);
840// scoresInfo.SetQuantizationOffset(0);
841// anchorsInfo.SetQuantizationScale(0.5f);
842// anchorsInfo.SetQuantizationOffset(0);
843//
844// std::vector<float> boxEncodings({
845// 0.0f, 0.0f, 0.0f, 0.0f,
846// 0.0f, 1.0f, 0.0f, 0.0f,
847// 0.0f, -1.0f, 0.0f, 0.0f,
848// 0.0f, 0.0f, 0.0f, 0.0f,
849// 0.0f, 1.0f, 0.0f, 0.0f,
850// 0.0f, 0.0f, 0.0f, 0.0f
851// });
852// std::vector<float> scores({
853// 0.0f, 0.9f, 0.8f,
854// 0.0f, 0.75f, 0.72f,
855// 0.0f, 0.6f, 0.5f,
856// 0.0f, 0.93f, 0.95f,
857// 0.0f, 0.5f, 0.4f,
858// 0.0f, 0.3f, 0.2f
859// });
860// std::vector<float> anchors({
861// 0.5f, 0.5f, 1.0f, 1.0f,
862// 0.5f, 0.5f, 1.0f, 1.0f,
863// 0.5f, 0.5f, 1.0f, 1.0f,
864// 0.5f, 10.5f, 1.0f, 1.0f,
865// 0.5f, 10.5f, 1.0f, 1.0f,
866// 0.5f, 100.5f, 1.0f, 1.0f
867// });
868//
869// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
870// std::vector<uint8_t> qScores(scores.size(), 0);
871// std::vector<uint8_t> qAnchors(anchors.size(), 0);
872// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
873// QuantizeData(qScores.data(), scores.data(), scoresInfo);
874// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
875// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
876// qScores, qAnchors,
877// 1.0f, 1, 0.01f, 0, 0.5f, 0);
878//}
879
880TEST_CASE("NeonQLstmEndToEndTest")
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000881{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100882 QLstmEndToEnd(neonDefaultBackends);
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000883}
884
Mike Kelly4cc341c2023-07-07 15:43:06 +0100885TEST_CASE("NeonReshapeRemovalSimpleCaseEndToEnd")
886{
887 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
888}
889
890TEST_CASE("NeonReshapeRemovalNCHWFirstEndToEnd")
891{
892 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, false, true);
893}
894
895TEST_CASE("NeonReshapeRemovalNCHWSecondEndToEnd")
896{
897 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, false, false);
898}
899
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000900}