blob: 37f6d3845bea1485b54571da18f0e66e9e0e0549 [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Tracy Narinee7d27852024-01-26 09:13:19 +00002// Copyright © 2017-2024 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>
Teresa Charlin28658bc2023-12-19 15:49:31 +000026#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Tianle Cheng21a9f332023-11-09 13:56:53 +000027#include <backendsCommon/test/ReverseV2EndToEndTestImpl.hpp>
Ryan OShea980446b2023-06-08 16:23:28 +010028#include <backendsCommon/test/SliceEndToEndTestImpl.hpp>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010029#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010030#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly4cc341c2023-07-07 15:43:06 +010031#include <backendsCommon/test/SubgraphUtilsTest.hpp>
David Monahan36e6eae2023-07-26 18:37:45 +010032#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010033#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000034#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010035
Sadik Armagan1625efc2021-06-10 18:24:34 +010036#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010037
Sadik Armagan1625efc2021-06-10 18:24:34 +010038TEST_SUITE("NeonEndToEnd")
39{
40std::vector<armnn::BackendId> neonDefaultBackends = {armnn::Compute::CpuAcc};
narpra01b9546cf2018-11-20 15:21:28 +000041
David Monahand7fca092023-01-12 14:53:34 +000042// ElementwiseUnary
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010043// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010044TEST_CASE("NeonAbsEndToEndTestFloat32")
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010045{
Sadik Armagan1625efc2021-06-10 18:24:34 +010046 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000047 UnaryOperation::Abs);
48}
49// Rsqrt
50TEST_CASE("NeonRsqrtEndToEndTestFloat32")
51{
52 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
53 UnaryOperation::Rsqrt);
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010054}
55
56// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +010057TEST_CASE("ConstantUsage_Neon_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010058{
Sadik Armagan1625efc2021-06-10 18:24:34 +010059 CHECK(ConstantUsageFloat32Test(neonDefaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010060}
61
Matteo Martincighdb16dd32019-08-27 16:41:11 +010062#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010063
64// This test unit needs the reference backend, it's not available if the reference backend is not built
65
Sadik Armagan1625efc2021-06-10 18:24:34 +010066TEST_CASE("FallbackToCpuRef")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010067{
68 using namespace armnn;
69
70 // Create runtime in which test will run and allow fallback to CpuRef.
71 IRuntime::CreationOptions options;
72 IRuntimePtr runtime(IRuntime::Create(options));
73
74 // Builds up the structure of the network.
75 INetworkPtr net(INetwork::Create());
76
77 IConnectableLayer* input = net->AddInputLayer(0);
78
79 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
80 NormalizationDescriptor descriptor;
81 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
82
83 IConnectableLayer* output = net->AddOutputLayer(0);
84
85 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
86 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
87
88 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
89 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
90
91 // optimize the network
92 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
93 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
94
95 // Load it into the runtime. It should pass.
96 NetworkId netId;
Sadik Armagan1625efc2021-06-10 18:24:34 +010097 CHECK(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +010098}
99
Matteo Martincighe67edb22019-08-14 14:05:46 +0100100#endif
101
Sadik Armagan1625efc2021-06-10 18:24:34 +0100102TEST_CASE("NeonGreaterSimpleEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +0000103{
104 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
105 0, 0, 0, 0, 0, 0, 0, 0 });
106
Sadik Armagan1625efc2021-06-10 18:24:34 +0100107 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100108 ComparisonOperation::Greater,
109 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000110}
111
Sadik Armagan1625efc2021-06-10 18:24:34 +0100112TEST_CASE("NeonGreaterSimpleEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000113{
114 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
115 0, 0, 0, 0, 0, 0, 0, 0 });
116
Sadik Armagan1625efc2021-06-10 18:24:34 +0100117 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100118 ComparisonOperation::Greater,
119 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000120}
121
Sadik Armagan1625efc2021-06-10 18:24:34 +0100122TEST_CASE("NeonGreaterBroadcastEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +0000123{
124 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
125 1, 1, 1, 1, 1, 1 });
126
Sadik Armagan1625efc2021-06-10 18:24:34 +0100127 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100128 ComparisonOperation::Greater,
129 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000130}
131
Sadik Armagan1625efc2021-06-10 18:24:34 +0100132TEST_CASE("NeonGreaterBroadcastEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000133{
134 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
135 1, 1, 1, 1, 1, 1 });
136
Sadik Armagan1625efc2021-06-10 18:24:34 +0100137 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100138 ComparisonOperation::Greater,
139 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000140}
141
John Mcloughlin34c1c382023-05-17 15:08:36 +0100142// ElementwiseBinary
143// Add
Ryan OShea3c2795a2022-11-03 17:51:52 +0000144TEST_CASE("NeonAdditionEndToEndFloat32Test")
145{
146 AdditionEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
147}
148
149TEST_CASE("NeonAdditionEndToEndUint8Test")
150{
151 AdditionEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
152}
153
Tracy Narinee7d27852024-01-26 09:13:19 +0000154TEST_CASE("NeonAdditionEndToEndFloat32Simple3DTest")
155{
156 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, BinaryOperation::Add);
157}
158TEST_CASE("NeonAdditionEndToEndFloat16Simple3DTest")
159{
160 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, BinaryOperation::Add);
161}
162
John Mcloughlin34c1c382023-05-17 15:08:36 +0100163// Power
Mike Kelly4cc341c2023-07-07 15:43:06 +0100164TEST_CASE("NeonPowerEndToEndTestFloat32")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100165{
166 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, BinaryOperation::Power);
167}
168
169// SqDiff
Mike Kelly4cc341c2023-07-07 15:43:06 +0100170TEST_CASE("NeonSquaredDifferenceEndToEndTestFloat32")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100171{
172 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, BinaryOperation::SqDiff);
173}
174
Mike Kelly4cc341c2023-07-07 15:43:06 +0100175TEST_CASE("NeonSquaredDifferenceEndToEndTestUint8")
John Mcloughlin34c1c382023-05-17 15:08:36 +0100176{
177 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, BinaryOperation::SqDiff);
178}
179
John Mcloughlin829e13e2024-01-31 11:00:27 +0000180TEST_CASE("NeonSubtractionEndToEndFloat32Simple3DTest")
181{
182 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, BinaryOperation::Sub);
183}
184TEST_CASE("NeonSubtractionEndToEndFloat16Simple3DTest")
185{
186 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, BinaryOperation::Sub);
187}
188
John Mcloughlin34c1c382023-05-17 15:08:36 +0100189// Batch Mat Mul
Teresa Charlina38da592022-10-31 22:09:23 +0000190TEST_CASE("NeonBatchMatMulEndToEndFloat32Test")
191{
192 BatchMatMulEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
193}
194
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000195TEST_CASE("NeonBatchMatMulEndToEndInt8Test")
196{
197 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(neonDefaultBackends);
198}
199
John Mcloughlin34c1c382023-05-17 15:08:36 +0100200// Concat
Sadik Armagan1625efc2021-06-10 18:24:34 +0100201TEST_CASE("NeonConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000202{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100203 ConcatDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000204}
205
Sadik Armagan1625efc2021-06-10 18:24:34 +0100206TEST_CASE("NeonConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000207{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100208 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000209}
210
Sadik Armagan1625efc2021-06-10 18:24:34 +0100211TEST_CASE("NeonConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000212{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100213 ConcatDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000214}
215
Sadik Armagan1625efc2021-06-10 18:24:34 +0100216TEST_CASE("NeonConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000217{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100218 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000219}
220
Sadik Armagan1625efc2021-06-10 18:24:34 +0100221TEST_CASE("NeonConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000222{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100223 ConcatDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000224}
225
Sadik Armagan1625efc2021-06-10 18:24:34 +0100226TEST_CASE("NeonConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000227{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100228 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000229}
230
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100231// DepthToSpace
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000232TEST_CASE("NeonDephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100233{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100234 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100235}
236
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000237TEST_CASE("NeonDephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100238{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100239 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100240}
241
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000242TEST_CASE("NeonDephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100243{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100244 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100245}
246
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000247TEST_CASE("NeonDephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100248{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100249 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100250}
251
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000252TEST_CASE("NeonDephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100253{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100254 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100255}
256
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000257TEST_CASE("NeonDephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100258{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100259 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100260}
261
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000262TEST_CASE("NeonDephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100263{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100264 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100265}
266
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000267TEST_CASE("NeonDephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100268{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100269 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100270}
271
272// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100273TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100274{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100275 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100276}
277
Sadik Armagan1625efc2021-06-10 18:24:34 +0100278TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100279{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100280 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100281}
282
Sadik Armagan1625efc2021-06-10 18:24:34 +0100283TEST_CASE("NeonEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000284{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100285 EluEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000286}
287
Sadik Armagan1625efc2021-06-10 18:24:34 +0100288TEST_CASE("NeonEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000289{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100290 EluEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000291}
292
Jan Eilersa83af7b2020-03-18 15:58:11 +0000293// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +0100294TEST_CASE("NeonHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000295{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100296 HardSwishEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000297}
298
Sadik Armagan1625efc2021-06-10 18:24:34 +0100299TEST_CASE("NeonHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000300{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100301 HardSwishEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000302}
303
Sadik Armagan1625efc2021-06-10 18:24:34 +0100304TEST_CASE("NeonHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000305{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100306 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000307}
308
Sadik Armagan1625efc2021-06-10 18:24:34 +0100309TEST_CASE("NeonHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000310{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100311 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000312}
313
Sadik Armagan1625efc2021-06-10 18:24:34 +0100314TEST_CASE("NeonPreluEndToEndFloat32Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100315{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100316 PreluEndToEndNegativeTest<armnn::DataType::Float32>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100317}
318
Sadik Armagan1625efc2021-06-10 18:24:34 +0100319TEST_CASE("NeonPreluEndToEndTestUint8Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100320{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100321 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100322}
323
Sadik Armagan1625efc2021-06-10 18:24:34 +0100324TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100325{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100326 SpaceToDepthNhwcEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100327}
328
Sadik Armagan1625efc2021-06-10 18:24:34 +0100329TEST_CASE("NeonSpaceToDepthNchwEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100330{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100331 SpaceToDepthNchwEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100332}
333
Sadik Armagan1625efc2021-06-10 18:24:34 +0100334TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100335{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100336 SpaceToDepthNhwcEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100337}
338
Sadik Armagan1625efc2021-06-10 18:24:34 +0100339TEST_CASE("NeonSpaceToDepthNchwEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100340{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100341 SpaceToDepthNchwEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100342}
343
Sadik Armagan1625efc2021-06-10 18:24:34 +0100344TEST_CASE("NeonSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100345{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100346 Splitter1dEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100347}
348
Sadik Armagan1625efc2021-06-10 18:24:34 +0100349TEST_CASE("NeonSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100350{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100351 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100352}
353
Sadik Armagan1625efc2021-06-10 18:24:34 +0100354TEST_CASE("NeonSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100355{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100356 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100357}
358
Sadik Armagan1625efc2021-06-10 18:24:34 +0100359TEST_CASE("NeonSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100360{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100361 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100362}
363
Sadik Armagan1625efc2021-06-10 18:24:34 +0100364TEST_CASE("NeonSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100365{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100366 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100367}
368
Sadik Armagan1625efc2021-06-10 18:24:34 +0100369TEST_CASE("NeonSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100370{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100371 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100372}
373
Sadik Armagan1625efc2021-06-10 18:24:34 +0100374TEST_CASE("NeonSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100375{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100376 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100377}
378
Sadik Armagan1625efc2021-06-10 18:24:34 +0100379TEST_CASE("NeonSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100380{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100381 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100382}
383
Sadik Armagan1625efc2021-06-10 18:24:34 +0100384TEST_CASE("NeonSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100385{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100386 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100387}
388
Sadik Armagan1625efc2021-06-10 18:24:34 +0100389TEST_CASE("NeonSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100390{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100391 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100392}
393
Sadik Armagan1625efc2021-06-10 18:24:34 +0100394TEST_CASE("NeonSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100395{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100396 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100397}
398
Sadik Armagan1625efc2021-06-10 18:24:34 +0100399TEST_CASE("NeonSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100400{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100401 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100402}
403
Sadik Armagan1625efc2021-06-10 18:24:34 +0100404TEST_CASE("NeonSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100405{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100406 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100407}
408
Sadik Armagan1625efc2021-06-10 18:24:34 +0100409TEST_CASE("NeonSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100410{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100411 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100412}
413
Sadik Armagan1625efc2021-06-10 18:24:34 +0100414TEST_CASE("NeonSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100415{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100416 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100417}
418
Sadik Armagan1625efc2021-06-10 18:24:34 +0100419TEST_CASE("NeonSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100420{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100421 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100422}
423
Sadik Armagan1625efc2021-06-10 18:24:34 +0100424TEST_CASE("NeonSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100425{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100426 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100427}
428
Sadik Armagan1625efc2021-06-10 18:24:34 +0100429TEST_CASE("NeonSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100430{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100431 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100432}
433
Sadik Armagan1625efc2021-06-10 18:24:34 +0100434TEST_CASE("NeonSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100435{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100436 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100437}
438
Sadik Armagan1625efc2021-06-10 18:24:34 +0100439TEST_CASE("NeonSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100440{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100441 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100442}
443
David Monahan36e6eae2023-07-26 18:37:45 +0100444// Tile
445TEST_CASE("NeonTileEndToEndFloat32")
446{
447 TileEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
448}
449TEST_CASE("NeonTileEndToEndFloat16")
450{
451 TileEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
452}
453TEST_CASE("NeonTileEndToEndQAsymmS8")
454{
455 TileEndToEnd<armnn::DataType::QAsymmS8>(neonDefaultBackends);
456}
457TEST_CASE("NeonTileEndToEndQAsymmU8")
458{
459 TileEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
460}
461TEST_CASE("NeonTileEndToEndQSymmS8")
462{
463 TileEndToEnd<armnn::DataType::QSymmS8>(neonDefaultBackends);
464}
465TEST_CASE("NeonTileEndToEndQSymmS16")
466{
467 TileEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends);
468}
469TEST_CASE("NeonTileEndToEndSigned32")
470{
471 TileEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
472}
473
Sadik Armagan1625efc2021-06-10 18:24:34 +0100474TEST_CASE("NeonQuantizedLstmEndToEndTest")
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100475{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100476 QuantizedLstmEndToEnd(neonDefaultBackends);
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100477}
478
Sadik Armagan1625efc2021-06-10 18:24:34 +0100479TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100480{
481 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100482 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100483}
484
Sadik Armagan1625efc2021-06-10 18:24:34 +0100485TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100486{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000487 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100488 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100489}
490
Sadik Armagan1625efc2021-06-10 18:24:34 +0100491TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100492{
493 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100494 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100495}
496
Sadik Armagan1625efc2021-06-10 18:24:34 +0100497TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100498{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000499 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100500 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100501}
502
Teresa Charlin6bc85252022-12-06 20:43:06 +0000503// Transpose
504TEST_CASE("NeonTransposeEndToEndTest")
505{
506 TransposeEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
507}
508
Sadik Armagan1625efc2021-06-10 18:24:34 +0100509TEST_CASE("NeonImportNonAlignedInputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100510{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100511 ImportNonAlignedInputPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100512}
513
Sadik Armagan1625efc2021-06-10 18:24:34 +0100514TEST_CASE("NeonExportNonAlignedOutputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100515{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100516 ExportNonAlignedOutputPointerTest(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100517}
518
Sadik Armagan1625efc2021-06-10 18:24:34 +0100519TEST_CASE("NeonImportAlignedPointerTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100520{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100521 ImportAlignedPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100522}
523
Sadik Armagan1625efc2021-06-10 18:24:34 +0100524TEST_CASE("NeonImportOnlyWorkload")
David Monahan3fb7e102019-08-20 11:25:29 +0100525{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100526 ImportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100527}
David Monahan3fb7e102019-08-20 11:25:29 +0100528
Sadik Armagan1625efc2021-06-10 18:24:34 +0100529TEST_CASE("NeonExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100530{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100531 ExportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100532}
David Monahan3fb7e102019-08-20 11:25:29 +0100533
Sadik Armagan1625efc2021-06-10 18:24:34 +0100534TEST_CASE("NeonImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100535{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100536 ImportAndExportWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100537}
David Monahan3fb7e102019-08-20 11:25:29 +0100538
Sadik Armagan1625efc2021-06-10 18:24:34 +0100539TEST_CASE("NeonExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100540{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100541 ExportOutputWithSeveralOutputSlotConnectionsTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100542}
543
Sadik Armagan062e0e92019-10-14 10:31:43 +0100544// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +0100545TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100546{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100547 InstanceNormalizationNchwEndToEndTest1(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100548}
549
Sadik Armagan1625efc2021-06-10 18:24:34 +0100550TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100551{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100552 InstanceNormalizationNchwEndToEndTest2(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100553}
554
Teresa Charlin44088502020-07-27 11:27:19 +0100555// Fill
Sadik Armagan1625efc2021-06-10 18:24:34 +0100556TEST_CASE("NeonFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100557{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100558 FillEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100559}
560
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000561TEST_CASE("NeonFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100562{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100563 FillEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100564}
565
Sadik Armagan1625efc2021-06-10 18:24:34 +0100566TEST_CASE("NeonFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100567{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100568 FillEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100569}
570
James Conroy68a4dbc2019-11-13 15:35:59 +0000571// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +0100572TEST_CASE("NeonArgMaxSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000573{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100574 ArgMaxEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000575}
576
Sadik Armagan1625efc2021-06-10 18:24:34 +0100577TEST_CASE("NeonArgMinSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000578{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100579 ArgMinEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000580}
581
Sadik Armagan1625efc2021-06-10 18:24:34 +0100582TEST_CASE("NeonArgMaxAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000583{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100584 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000585}
586
Sadik Armagan1625efc2021-06-10 18:24:34 +0100587TEST_CASE("NeonArgMinAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000588{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100589 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000590}
591
Sadik Armagan1625efc2021-06-10 18:24:34 +0100592TEST_CASE("NeonArgMaxAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000593{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100594 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000595}
596
Sadik Armagan1625efc2021-06-10 18:24:34 +0100597TEST_CASE("NeonArgMinAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000598{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100599 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000600}
601
Sadik Armagan1625efc2021-06-10 18:24:34 +0100602TEST_CASE("NeonArgMaxAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000603{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100604 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000605}
606
Sadik Armagan1625efc2021-06-10 18:24:34 +0100607TEST_CASE("NeonArgMinAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000608{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100609 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000610}
611
Sadik Armagan1625efc2021-06-10 18:24:34 +0100612TEST_CASE("NeonArgMaxAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000613{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100614 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000615}
616
Sadik Armagan1625efc2021-06-10 18:24:34 +0100617TEST_CASE("NeonArgMinAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000618{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100619 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000620}
621
Sadik Armagan1625efc2021-06-10 18:24:34 +0100622TEST_CASE("NeonArgMaxSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000623{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100624 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000625}
626
Sadik Armagan1625efc2021-06-10 18:24:34 +0100627TEST_CASE("NeonArgMinSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000628{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100629 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000630}
631
Sadik Armagan1625efc2021-06-10 18:24:34 +0100632TEST_CASE("NeonArgMaxAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000633{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100634 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000635}
636
Sadik Armagan1625efc2021-06-10 18:24:34 +0100637TEST_CASE("NeonArgMinAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000638{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100639 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000640}
641
Sadik Armagan1625efc2021-06-10 18:24:34 +0100642TEST_CASE("NeonArgMaxAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000643{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100644 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000645}
646
Sadik Armagan1625efc2021-06-10 18:24:34 +0100647TEST_CASE("NeonArgMinAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000648{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100649 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000650}
651
Sadik Armagan1625efc2021-06-10 18:24:34 +0100652TEST_CASE("NeonArgMaxAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000653{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100654 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000655}
656
Sadik Armagan1625efc2021-06-10 18:24:34 +0100657TEST_CASE("NeonArgMinAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000658{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100659 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000660}
661
Sadik Armagan1625efc2021-06-10 18:24:34 +0100662TEST_CASE("NeonArgMaxAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000663{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100664 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000665}
666
Sadik Armagan1625efc2021-06-10 18:24:34 +0100667TEST_CASE("NeonArgMinAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000668{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100669 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000670}
671
Teresa Charlinc17a35f2023-01-12 14:13:09 +0000672// Reduce
673TEST_CASE("NeonReduceEndToEndTest")
674{
675 ReduceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
676}
677
678TEST_CASE("NeonReduceEndToEndTestFloat16")
679{
680 ReduceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
681}
682
683// Reshape
684TEST_CASE("NeonReshapeEndToEndTest")
685{
686 ReshapeEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
687}
688
689TEST_CASE("NeonReshapeEndToEndTestFloat16")
690{
691 ReshapeEndToEndFloat16<armnn::DataType::Float16>(neonDefaultBackends);
692}
693
Teresa Charlin28658bc2023-12-19 15:49:31 +0000694// Resize Bilinear
695TEST_CASE("NeonResizeBilinearEndToEndFloatNchwTest")
696{
697 ResizeBilinearEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NCHW);
698}
699
700TEST_CASE("NeonResizeBilinearEndToEndFloatNhwcTest")
701{
702 ResizeBilinearEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC);
703}
704
705// Resize NearestNeighbor
706TEST_CASE("NeonResizeNearestNeighborEndToEndFloatNchwTest")
707{
708 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NCHW);
709}
710
711TEST_CASE("NeonResizeNearestNeighborEndToEndFloatNhwcTest")
712{
713 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC);
714}
715
716TEST_CASE("NeonResizeNearestNeighborEndToEndFloatAlignCornersNhwcTest")
717{
718 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC, true, false);
719}
720
721TEST_CASE("NeonResizeNearestNeighborEndToEndFloatHalfPixelNhwcTest")
722{
723 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC, false, true);
724}
725
Tianle Cheng21a9f332023-11-09 13:56:53 +0000726// ReverseV2
727TEST_CASE("NeonReverseV2EndToEndTest")
728{
729 ReverseV2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
730}
731
Ryan OShea980446b2023-06-08 16:23:28 +0100732// Slice
733TEST_CASE("NeonSliceEndtoEndTestFloat32")
734{
735 SliceEndToEnd<DataType::Float32>(neonDefaultBackends);
736}
737
738TEST_CASE("NeonSliceEndtoEndTestInt32")
739{
740 SliceEndToEnd<DataType::Signed32>(neonDefaultBackends);
741}
742
743TEST_CASE("NeonSliceEndtoEndTestFloat16")
744{
745 SliceEndToEndFloat16<DataType::Float16>(neonDefaultBackends);
746}
747
Sadik Armagan1625efc2021-06-10 18:24:34 +0100748TEST_CASE("NeonStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +0000749{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100750 StridedSliceInvalidSliceEndToEndTest(neonDefaultBackends);
David Monahan0a99a142020-03-13 07:52:54 +0000751}
752
Colm Doneland7ceec52022-07-06 12:09:05 +0100753TEST_CASE("NeonForceImportWithAlignedBuffersEndToEndTest"
754 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
755 // will always fail.
756 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000757{
758 ForceImportWithAlignedBuffersEndToEndTest(neonDefaultBackends);
759}
760
Colm Doneland7ceec52022-07-06 12:09:05 +0100761TEST_CASE("NeonForceImportWithMisalignedInputBuffersEndToEndTest"
762 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
763 // will always fail.
764 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000765{
766 ForceImportWithMisalignedInputBuffersEndToEndTest(neonDefaultBackends);
767}
768
Colm Doneland7ceec52022-07-06 12:09:05 +0100769TEST_CASE("NeonForceImportWithMisalignedOutputBuffersEndToEndTest"
770 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
771 // will always fail.
772 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000773{
774 ForceImportWithMisalignedOutputBuffersEndToEndTest(neonDefaultBackends);
775}
776
777TEST_CASE("NeonForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
778{
779 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(neonDefaultBackends);
780}
781
Sadik Armagan1625efc2021-06-10 18:24:34 +0100782// DISABLED
783//TEST_CASE("NeonDetectionPostProcessRegularNmsTest")
784//{
785// std::vector<float> boxEncodings({
786// 0.0f, 0.0f, 0.0f, 0.0f,
787// 0.0f, 1.0f, 0.0f, 0.0f,
788// 0.0f, -1.0f, 0.0f, 0.0f,
789// 0.0f, 0.0f, 0.0f, 0.0f,
790// 0.0f, 1.0f, 0.0f, 0.0f,
791// 0.0f, 0.0f, 0.0f, 0.0f
792// });
793// std::vector<float> scores({
794// 0.0f, 0.9f, 0.8f,
795// 0.0f, 0.75f, 0.72f,
796// 0.0f, 0.6f, 0.5f,
797// 0.0f, 0.93f, 0.95f,
798// 0.0f, 0.5f, 0.4f,
799// 0.0f, 0.3f, 0.2f
800// });
801// std::vector<float> anchors({
802// 0.5f, 0.5f, 1.0f, 1.0f,
803// 0.5f, 0.5f, 1.0f, 1.0f,
804// 0.5f, 0.5f, 1.0f, 1.0f,
805// 0.5f, 10.5f, 1.0f, 1.0f,
806// 0.5f, 10.5f, 1.0f, 1.0f,
807// 0.5f, 100.5f, 1.0f, 1.0f
808// });
809// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
810// boxEncodings,
811// scores,
812// anchors);
813//}
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000814
815inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
816{
817 for (size_t i = 0; i < info.GetNumElements(); i++)
818 {
819 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
820 }
821}
822
Sadik Armagan1625efc2021-06-10 18:24:34 +0100823// DISABLED
824//TEST_CASE("NeonDetectionPostProcessRegularNmsUint8Test")
825//{
826// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
827// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
828// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
829//
830// boxEncodingsInfo.SetQuantizationScale(1.0f);
831// boxEncodingsInfo.SetQuantizationOffset(1);
832// scoresInfo.SetQuantizationScale(0.01f);
833// scoresInfo.SetQuantizationOffset(0);
834// anchorsInfo.SetQuantizationScale(0.5f);
835// anchorsInfo.SetQuantizationOffset(0);
836//
837// std::vector<float> boxEncodings({
838// 0.0f, 0.0f, 0.0f, 0.0f,
839// 0.0f, 1.0f, 0.0f, 0.0f,
840// 0.0f, -1.0f, 0.0f, 0.0f,
841// 0.0f, 0.0f, 0.0f, 0.0f,
842// 0.0f, 1.0f, 0.0f, 0.0f,
843// 0.0f, 0.0f, 0.0f, 0.0f
844// });
845// std::vector<float> scores({
846// 0.0f, 0.9f, 0.8f,
847// 0.0f, 0.75f, 0.72f,
848// 0.0f, 0.6f, 0.5f,
849// 0.0f, 0.93f, 0.95f,
850// 0.0f, 0.5f, 0.4f,
851// 0.0f, 0.3f, 0.2f
852// });
853// std::vector<float> anchors({
854// 0.5f, 0.5f, 1.0f, 1.0f,
855// 0.5f, 0.5f, 1.0f, 1.0f,
856// 0.5f, 0.5f, 1.0f, 1.0f,
857// 0.5f, 10.5f, 1.0f, 1.0f,
858// 0.5f, 10.5f, 1.0f, 1.0f,
859// 0.5f, 100.5f, 1.0f, 1.0f
860// });
861//
862// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
863// std::vector<uint8_t> qScores(scores.size(), 0);
864// std::vector<uint8_t> qAnchors(anchors.size(), 0);
865// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
866// QuantizeData(qScores.data(), scores.data(), scoresInfo);
867// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
868// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
869// qScores, qAnchors,
870// 1.0f, 1, 0.01f, 0, 0.5f, 0);
871//}
872//
873//TEST_CASE("NeonDetectionPostProcessFastNmsTest")
874//{
875// std::vector<float> boxEncodings({
876// 0.0f, 0.0f, 0.0f, 0.0f,
877// 0.0f, 1.0f, 0.0f, 0.0f,
878// 0.0f, -1.0f, 0.0f, 0.0f,
879// 0.0f, 0.0f, 0.0f, 0.0f,
880// 0.0f, 1.0f, 0.0f, 0.0f,
881// 0.0f, 0.0f, 0.0f, 0.0f
882// });
883// std::vector<float> scores({
884// 0.0f, 0.9f, 0.8f,
885// 0.0f, 0.75f, 0.72f,
886// 0.0f, 0.6f, 0.5f,
887// 0.0f, 0.93f, 0.95f,
888// 0.0f, 0.5f, 0.4f,
889// 0.0f, 0.3f, 0.2f
890// });
891// std::vector<float> anchors({
892// 0.5f, 0.5f, 1.0f, 1.0f,
893// 0.5f, 0.5f, 1.0f, 1.0f,
894// 0.5f, 0.5f, 1.0f, 1.0f,
895// 0.5f, 10.5f, 1.0f, 1.0f,
896// 0.5f, 10.5f, 1.0f, 1.0f,
897// 0.5f, 100.5f, 1.0f, 1.0f
898// });
899// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
900// boxEncodings,
901// scores,
902// anchors);
903//}
904//
905// DISABLED
906//TEST_CASE("NeonDetectionPostProcessFastNmsUint8Test")
907//{
908// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
909// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
910// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
911//
912// boxEncodingsInfo.SetQuantizationScale(1.0f);
913// boxEncodingsInfo.SetQuantizationOffset(1);
914// scoresInfo.SetQuantizationScale(0.01f);
915// scoresInfo.SetQuantizationOffset(0);
916// anchorsInfo.SetQuantizationScale(0.5f);
917// anchorsInfo.SetQuantizationOffset(0);
918//
919// std::vector<float> boxEncodings({
920// 0.0f, 0.0f, 0.0f, 0.0f,
921// 0.0f, 1.0f, 0.0f, 0.0f,
922// 0.0f, -1.0f, 0.0f, 0.0f,
923// 0.0f, 0.0f, 0.0f, 0.0f,
924// 0.0f, 1.0f, 0.0f, 0.0f,
925// 0.0f, 0.0f, 0.0f, 0.0f
926// });
927// std::vector<float> scores({
928// 0.0f, 0.9f, 0.8f,
929// 0.0f, 0.75f, 0.72f,
930// 0.0f, 0.6f, 0.5f,
931// 0.0f, 0.93f, 0.95f,
932// 0.0f, 0.5f, 0.4f,
933// 0.0f, 0.3f, 0.2f
934// });
935// std::vector<float> anchors({
936// 0.5f, 0.5f, 1.0f, 1.0f,
937// 0.5f, 0.5f, 1.0f, 1.0f,
938// 0.5f, 0.5f, 1.0f, 1.0f,
939// 0.5f, 10.5f, 1.0f, 1.0f,
940// 0.5f, 10.5f, 1.0f, 1.0f,
941// 0.5f, 100.5f, 1.0f, 1.0f
942// });
943//
944// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
945// std::vector<uint8_t> qScores(scores.size(), 0);
946// std::vector<uint8_t> qAnchors(anchors.size(), 0);
947// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
948// QuantizeData(qScores.data(), scores.data(), scoresInfo);
949// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
950// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
951// qScores, qAnchors,
952// 1.0f, 1, 0.01f, 0, 0.5f, 0);
953//}
954
955TEST_CASE("NeonQLstmEndToEndTest")
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000956{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100957 QLstmEndToEnd(neonDefaultBackends);
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000958}
959
Mike Kelly4cc341c2023-07-07 15:43:06 +0100960TEST_CASE("NeonReshapeRemovalSimpleCaseEndToEnd")
961{
962 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
963}
964
965TEST_CASE("NeonReshapeRemovalNCHWFirstEndToEnd")
966{
967 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, false, true);
968}
969
970TEST_CASE("NeonReshapeRemovalNCHWSecondEndToEnd")
971{
972 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, false, false);
973}
974
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000975}