blob: faeb4dac6cedc6ba514088a4d43daf8b92ac36ac [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Teresa Charlina38da592022-10-31 22:09:23 +00002// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tar70104002018-10-24 15:33:28 +01003// SPDX-License-Identifier: MIT
4//
5
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00006#include <backendsCommon/test/EndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +01007
Jan Eilersbca73e12020-03-11 12:52:46 +00008#include <backendsCommon/test/ActivationEndToEndTestImpl.hpp>
Ryan OShea3c2795a2022-11-03 17:51:52 +00009#include <backendsCommon/test/AdditionEndToEndTestImpl.hpp>
James Conroy68a4dbc2019-11-13 15:35:59 +000010#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Teresa Charlina38da592022-10-31 22:09:23 +000011#include <backendsCommon/test/BatchMatMulEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010012#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010013#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010014#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010015#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Derek Lamberti6a5e5e82019-12-05 14:41:20 +000016#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060017#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010018#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010019#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Nikhil Raj1c8adac2019-07-22 11:27:29 +010020#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010021#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Francis Murtaghb3fc2522019-08-09 13:20:50 +010022#include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
Ellen Norris-Thompson29794572019-06-26 16:40:36 +010023#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010024#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Sadik Armagan581742d2019-08-12 14:11:37 +010025#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010026
Sadik Armagan1625efc2021-06-10 18:24:34 +010027#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010028
Sadik Armagan1625efc2021-06-10 18:24:34 +010029TEST_SUITE("NeonEndToEnd")
30{
31std::vector<armnn::BackendId> neonDefaultBackends = {armnn::Compute::CpuAcc};
narpra01b9546cf2018-11-20 15:21:28 +000032
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010033// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010034TEST_CASE("NeonAbsEndToEndTestFloat32")
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010035{
josh minor4a3c6102020-01-06 16:40:46 -060036 std::vector<float> expectedOutput =
37 {
38 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
39 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
40 };
41
Sadik Armagan1625efc2021-06-10 18:24:34 +010042 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
josh minor4a3c6102020-01-06 16:40:46 -060043 UnaryOperation::Abs,
44 expectedOutput);
Aron Virginas-Tar914e4db2019-09-09 13:36:45 +010045}
46
47// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +010048TEST_CASE("ConstantUsage_Neon_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010049{
Sadik Armagan1625efc2021-06-10 18:24:34 +010050 CHECK(ConstantUsageFloat32Test(neonDefaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010051}
52
Matteo Martincighdb16dd32019-08-27 16:41:11 +010053#if defined(ARMNNREF_ENABLED)
Matteo Martincighe67edb22019-08-14 14:05:46 +010054
55// This test unit needs the reference backend, it's not available if the reference backend is not built
56
Sadik Armagan1625efc2021-06-10 18:24:34 +010057TEST_CASE("FallbackToCpuRef")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010058{
59 using namespace armnn;
60
61 // Create runtime in which test will run and allow fallback to CpuRef.
62 IRuntime::CreationOptions options;
63 IRuntimePtr runtime(IRuntime::Create(options));
64
65 // Builds up the structure of the network.
66 INetworkPtr net(INetwork::Create());
67
68 IConnectableLayer* input = net->AddInputLayer(0);
69
70 // This layer configuration isn't supported by CpuAcc but we allow fallback to CpuRef so it shoud pass.
71 NormalizationDescriptor descriptor;
72 IConnectableLayer* pooling = net->AddNormalizationLayer(descriptor);
73
74 IConnectableLayer* output = net->AddOutputLayer(0);
75
76 input->GetOutputSlot(0).Connect(pooling->GetInputSlot(0));
77 pooling->GetOutputSlot(0).Connect(output->GetInputSlot(0));
78
79 input->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
80 pooling->GetOutputSlot(0).SetTensorInfo(TensorInfo({ 1, 1, 4, 4 }, DataType::Float32));
81
82 // optimize the network
83 std::vector<BackendId> backends = {Compute::CpuAcc, Compute::CpuRef};
84 IOptimizedNetworkPtr optNet = Optimize(*net, backends, runtime->GetDeviceSpec());
85
86 // Load it into the runtime. It should pass.
87 NetworkId netId;
Sadik Armagan1625efc2021-06-10 18:24:34 +010088 CHECK(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +010089}
90
Matteo Martincighe67edb22019-08-14 14:05:46 +010091#endif
92
Sadik Armagan1625efc2021-06-10 18:24:34 +010093TEST_CASE("NeonGreaterSimpleEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +000094{
95 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
96 0, 0, 0, 0, 0, 0, 0, 0 });
97
Sadik Armagan1625efc2021-06-10 18:24:34 +010098 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010099 ComparisonOperation::Greater,
100 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000101}
102
Sadik Armagan1625efc2021-06-10 18:24:34 +0100103TEST_CASE("NeonGreaterSimpleEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000104{
105 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
106 0, 0, 0, 0, 0, 0, 0, 0 });
107
Sadik Armagan1625efc2021-06-10 18:24:34 +0100108 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100109 ComparisonOperation::Greater,
110 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000111}
112
Sadik Armagan1625efc2021-06-10 18:24:34 +0100113TEST_CASE("NeonGreaterBroadcastEndToEndTest")
kevmay01eed85922019-01-28 08:37:25 +0000114{
115 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
116 1, 1, 1, 1, 1, 1 });
117
Sadik Armagan1625efc2021-06-10 18:24:34 +0100118 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100119 ComparisonOperation::Greater,
120 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000121}
122
Sadik Armagan1625efc2021-06-10 18:24:34 +0100123TEST_CASE("NeonGreaterBroadcastEndToEndUint8Test")
kevmay01eed85922019-01-28 08:37:25 +0000124{
125 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
126 1, 1, 1, 1, 1, 1 });
127
Sadik Armagan1625efc2021-06-10 18:24:34 +0100128 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100129 ComparisonOperation::Greater,
130 expectedOutput);
kevmay01eed85922019-01-28 08:37:25 +0000131}
132
Ryan OShea3c2795a2022-11-03 17:51:52 +0000133TEST_CASE("NeonAdditionEndToEndFloat32Test")
134{
135 AdditionEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
136}
137
138TEST_CASE("NeonAdditionEndToEndUint8Test")
139{
140 AdditionEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
141}
142
Teresa Charlina38da592022-10-31 22:09:23 +0000143TEST_CASE("NeonBatchMatMulEndToEndFloat32Test")
144{
145 BatchMatMulEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
146}
147
Sadik Armagan1625efc2021-06-10 18:24:34 +0100148TEST_CASE("NeonConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000149{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100150 ConcatDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000151}
152
Sadik Armagan1625efc2021-06-10 18:24:34 +0100153TEST_CASE("NeonConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000154{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100155 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000156}
157
Sadik Armagan1625efc2021-06-10 18:24:34 +0100158TEST_CASE("NeonConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000159{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100160 ConcatDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000161}
162
Sadik Armagan1625efc2021-06-10 18:24:34 +0100163TEST_CASE("NeonConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000164{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100165 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000166}
167
Sadik Armagan1625efc2021-06-10 18:24:34 +0100168TEST_CASE("NeonConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000169{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100170 ConcatDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000171}
172
Sadik Armagan1625efc2021-06-10 18:24:34 +0100173TEST_CASE("NeonConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000174{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100175 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000176}
177
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100178// DepthToSpace
Sadik Armagan1625efc2021-06-10 18:24:34 +0100179TEST_CASE("DephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100180{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100181 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100182}
183
Sadik Armagan1625efc2021-06-10 18:24:34 +0100184TEST_CASE("DephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100185{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100186 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100187}
188
Sadik Armagan1625efc2021-06-10 18:24:34 +0100189TEST_CASE("DephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100190{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100191 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100192}
193
Sadik Armagan1625efc2021-06-10 18:24:34 +0100194TEST_CASE("DephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100195{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100196 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100197}
198
Sadik Armagan1625efc2021-06-10 18:24:34 +0100199TEST_CASE("DephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100200{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100201 DepthToSpaceEndToEnd<armnn::DataType::Float32>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100202}
203
Sadik Armagan1625efc2021-06-10 18:24:34 +0100204TEST_CASE("DephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100205{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100206 DepthToSpaceEndToEnd<armnn::DataType::Float16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100207}
208
Sadik Armagan1625efc2021-06-10 18:24:34 +0100209TEST_CASE("DephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100210{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100211 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100212}
213
Sadik Armagan1625efc2021-06-10 18:24:34 +0100214TEST_CASE("DephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100215{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100216 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(neonDefaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100217}
218
219// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100220TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100221{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100222 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100223}
224
Sadik Armagan1625efc2021-06-10 18:24:34 +0100225TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100226{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100227 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100228}
229
Sadik Armagan1625efc2021-06-10 18:24:34 +0100230TEST_CASE("NeonEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000231{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100232 EluEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000233}
234
Sadik Armagan1625efc2021-06-10 18:24:34 +0100235TEST_CASE("NeonEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000236{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100237 EluEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersbca73e12020-03-11 12:52:46 +0000238}
239
Jan Eilersa83af7b2020-03-18 15:58:11 +0000240// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +0100241TEST_CASE("NeonHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000242{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100243 HardSwishEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000244}
245
Sadik Armagan1625efc2021-06-10 18:24:34 +0100246TEST_CASE("NeonHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000247{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100248 HardSwishEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000249}
250
Sadik Armagan1625efc2021-06-10 18:24:34 +0100251TEST_CASE("NeonHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000252{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100253 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000254}
255
Sadik Armagan1625efc2021-06-10 18:24:34 +0100256TEST_CASE("NeonHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000257{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100258 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000259}
260
Sadik Armagan1625efc2021-06-10 18:24:34 +0100261TEST_CASE("NeonPreluEndToEndFloat32Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100262{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100263 PreluEndToEndNegativeTest<armnn::DataType::Float32>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100264}
265
Sadik Armagan1625efc2021-06-10 18:24:34 +0100266TEST_CASE("NeonPreluEndToEndTestUint8Test")
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100267{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100268 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Nikhil Raj1c8adac2019-07-22 11:27:29 +0100269}
270
Sadik Armagan1625efc2021-06-10 18:24:34 +0100271TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100272{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100273 SpaceToDepthNhwcEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100274}
275
Sadik Armagan1625efc2021-06-10 18:24:34 +0100276TEST_CASE("NeonSpaceToDepthNchwEndToEndTest1")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100277{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100278 SpaceToDepthNchwEndToEndTest1(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100279}
280
Sadik Armagan1625efc2021-06-10 18:24:34 +0100281TEST_CASE("NeonSpaceToDepthNhwcEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100282{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100283 SpaceToDepthNhwcEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100284}
285
Sadik Armagan1625efc2021-06-10 18:24:34 +0100286TEST_CASE("NeonSpaceToDepthNchwEndToEndTest2")
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100287{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100288 SpaceToDepthNchwEndToEndTest2(neonDefaultBackends);
Ellen Norris-Thompson29794572019-06-26 16:40:36 +0100289}
290
Sadik Armagan1625efc2021-06-10 18:24:34 +0100291TEST_CASE("NeonSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100292{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100293 Splitter1dEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100294}
295
Sadik Armagan1625efc2021-06-10 18:24:34 +0100296TEST_CASE("NeonSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100297{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100298 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100299}
300
Sadik Armagan1625efc2021-06-10 18:24:34 +0100301TEST_CASE("NeonSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100302{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100303 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100304}
305
Sadik Armagan1625efc2021-06-10 18:24:34 +0100306TEST_CASE("NeonSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100307{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100308 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100309}
310
Sadik Armagan1625efc2021-06-10 18:24:34 +0100311TEST_CASE("NeonSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100312{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100313 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100314}
315
Sadik Armagan1625efc2021-06-10 18:24:34 +0100316TEST_CASE("NeonSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100317{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100318 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100319}
320
Sadik Armagan1625efc2021-06-10 18:24:34 +0100321TEST_CASE("NeonSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100322{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100323 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100324}
325
Sadik Armagan1625efc2021-06-10 18:24:34 +0100326TEST_CASE("NeonSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100327{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100328 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100329}
330
Sadik Armagan1625efc2021-06-10 18:24:34 +0100331TEST_CASE("NeonSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100332{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100333 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100334}
335
Sadik Armagan1625efc2021-06-10 18:24:34 +0100336TEST_CASE("NeonSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100337{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100338 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100339}
340
Sadik Armagan1625efc2021-06-10 18:24:34 +0100341TEST_CASE("NeonSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100342{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100343 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100344}
345
Sadik Armagan1625efc2021-06-10 18:24:34 +0100346TEST_CASE("NeonSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100347{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100348 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100349}
350
Sadik Armagan1625efc2021-06-10 18:24:34 +0100351TEST_CASE("NeonSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100352{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100353 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100354}
355
Sadik Armagan1625efc2021-06-10 18:24:34 +0100356TEST_CASE("NeonSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100357{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100358 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100359}
360
Sadik Armagan1625efc2021-06-10 18:24:34 +0100361TEST_CASE("NeonSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100362{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100363 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100364}
365
Sadik Armagan1625efc2021-06-10 18:24:34 +0100366TEST_CASE("NeonSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100367{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100368 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100369}
370
Sadik Armagan1625efc2021-06-10 18:24:34 +0100371TEST_CASE("NeonSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100372{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100373 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100374}
375
Sadik Armagan1625efc2021-06-10 18:24:34 +0100376TEST_CASE("NeonSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100377{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100378 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100379}
380
Sadik Armagan1625efc2021-06-10 18:24:34 +0100381TEST_CASE("NeonSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100382{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100383 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100384}
385
Sadik Armagan1625efc2021-06-10 18:24:34 +0100386TEST_CASE("NeonSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100387{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100388 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100389}
390
Sadik Armagan1625efc2021-06-10 18:24:34 +0100391TEST_CASE("NeonQuantizedLstmEndToEndTest")
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100392{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100393 QuantizedLstmEndToEnd(neonDefaultBackends);
Francis Murtaghb3fc2522019-08-09 13:20:50 +0100394}
395
Sadik Armagan1625efc2021-06-10 18:24:34 +0100396TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100397{
398 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100399 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100400}
401
Sadik Armagan1625efc2021-06-10 18:24:34 +0100402TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NchwTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100403{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000404 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100405 neonDefaultBackends, armnn::DataLayout::NCHW);
Sadik Armagan581742d2019-08-12 14:11:37 +0100406}
407
Sadik Armagan1625efc2021-06-10 18:24:34 +0100408TEST_CASE("NeonTransposeConvolution2dEndToEndFloatNhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100409{
410 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100411 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100412}
413
Sadik Armagan1625efc2021-06-10 18:24:34 +0100414TEST_CASE("NeonTransposeConvolution2dEndToEndUint8NhwcTest")
Sadik Armagan581742d2019-08-12 14:11:37 +0100415{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000416 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Sadik Armagan1625efc2021-06-10 18:24:34 +0100417 neonDefaultBackends, armnn::DataLayout::NHWC);
Sadik Armagan581742d2019-08-12 14:11:37 +0100418}
419
Sadik Armagan1625efc2021-06-10 18:24:34 +0100420TEST_CASE("NeonImportNonAlignedInputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100421{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100422 ImportNonAlignedInputPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100423}
424
Sadik Armagan1625efc2021-06-10 18:24:34 +0100425TEST_CASE("NeonExportNonAlignedOutputPointerTest")
David Monahan3fb7e102019-08-20 11:25:29 +0100426{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100427 ExportNonAlignedOutputPointerTest(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100428}
429
Sadik Armagan1625efc2021-06-10 18:24:34 +0100430TEST_CASE("NeonImportAlignedPointerTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100431{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100432 ImportAlignedPointerTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100433}
434
Sadik Armagan1625efc2021-06-10 18:24:34 +0100435TEST_CASE("NeonImportOnlyWorkload")
David Monahan3fb7e102019-08-20 11:25:29 +0100436{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100437 ImportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100438}
David Monahan3fb7e102019-08-20 11:25:29 +0100439
Sadik Armagan1625efc2021-06-10 18:24:34 +0100440TEST_CASE("NeonExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100441{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100442 ExportOnlyWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100443}
David Monahan3fb7e102019-08-20 11:25:29 +0100444
Sadik Armagan1625efc2021-06-10 18:24:34 +0100445TEST_CASE("NeonImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100446{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100447 ImportAndExportWorkload(neonDefaultBackends);
Ferran Balaguer83239f92019-09-19 11:49:25 +0100448}
David Monahan3fb7e102019-08-20 11:25:29 +0100449
Sadik Armagan1625efc2021-06-10 18:24:34 +0100450TEST_CASE("NeonExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +0100451{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100452 ExportOutputWithSeveralOutputSlotConnectionsTest(neonDefaultBackends);
David Monahan3fb7e102019-08-20 11:25:29 +0100453}
454
Sadik Armagan062e0e92019-10-14 10:31:43 +0100455// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +0100456TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100457{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100458 InstanceNormalizationNchwEndToEndTest1(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100459}
460
Sadik Armagan1625efc2021-06-10 18:24:34 +0100461TEST_CASE("NeonInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +0100462{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100463 InstanceNormalizationNchwEndToEndTest2(neonDefaultBackends);
Sadik Armagan062e0e92019-10-14 10:31:43 +0100464}
465
Teresa Charlin44088502020-07-27 11:27:19 +0100466// Fill
Sadik Armagan1625efc2021-06-10 18:24:34 +0100467TEST_CASE("NeonFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100468{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100469 FillEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100470}
471
Sadik Armagan1625efc2021-06-10 18:24:34 +0100472TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100473{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100474 FillEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100475}
476
Sadik Armagan1625efc2021-06-10 18:24:34 +0100477TEST_CASE("NeonFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100478{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100479 FillEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
Teresa Charlin44088502020-07-27 11:27:19 +0100480}
481
James Conroy68a4dbc2019-11-13 15:35:59 +0000482// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +0100483TEST_CASE("NeonArgMaxSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000484{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100485 ArgMaxEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000486}
487
Sadik Armagan1625efc2021-06-10 18:24:34 +0100488TEST_CASE("NeonArgMinSimpleTest")
James Conroy68a4dbc2019-11-13 15:35:59 +0000489{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100490 ArgMinEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000491}
492
Sadik Armagan1625efc2021-06-10 18:24:34 +0100493TEST_CASE("NeonArgMaxAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000494{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100495 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000496}
497
Sadik Armagan1625efc2021-06-10 18:24:34 +0100498TEST_CASE("NeonArgMinAxis0Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000499{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100500 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000501}
502
Sadik Armagan1625efc2021-06-10 18:24:34 +0100503TEST_CASE("NeonArgMaxAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000504{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100505 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000506}
507
Sadik Armagan1625efc2021-06-10 18:24:34 +0100508TEST_CASE("NeonArgMinAxis1Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000509{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100510 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000511}
512
Sadik Armagan1625efc2021-06-10 18:24:34 +0100513TEST_CASE("NeonArgMaxAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000514{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100515 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000516}
517
Sadik Armagan1625efc2021-06-10 18:24:34 +0100518TEST_CASE("NeonArgMinAxis2Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000519{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100520 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000521}
522
Sadik Armagan1625efc2021-06-10 18:24:34 +0100523TEST_CASE("NeonArgMaxAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000524{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100525 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000526}
527
Sadik Armagan1625efc2021-06-10 18:24:34 +0100528TEST_CASE("NeonArgMinAxis3Test")
James Conroy68a4dbc2019-11-13 15:35:59 +0000529{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100530 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
James Conroy68a4dbc2019-11-13 15:35:59 +0000531}
532
Sadik Armagan1625efc2021-06-10 18:24:34 +0100533TEST_CASE("NeonArgMaxSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000534{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100535 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000536}
537
Sadik Armagan1625efc2021-06-10 18:24:34 +0100538TEST_CASE("NeonArgMinSimpleTestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000539{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100540 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000541}
542
Sadik Armagan1625efc2021-06-10 18:24:34 +0100543TEST_CASE("NeonArgMaxAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000544{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100545 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000546}
547
Sadik Armagan1625efc2021-06-10 18:24:34 +0100548TEST_CASE("NeonArgMinAxis0TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000549{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100550 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000551}
552
Sadik Armagan1625efc2021-06-10 18:24:34 +0100553TEST_CASE("NeonArgMaxAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000554{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100555 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000556}
557
Sadik Armagan1625efc2021-06-10 18:24:34 +0100558TEST_CASE("NeonArgMinAxis1TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000559{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100560 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000561}
562
Sadik Armagan1625efc2021-06-10 18:24:34 +0100563TEST_CASE("NeonArgMaxAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000564{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100565 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000566}
567
Sadik Armagan1625efc2021-06-10 18:24:34 +0100568TEST_CASE("NeonArgMinAxis2TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000569{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100570 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000571}
572
Sadik Armagan1625efc2021-06-10 18:24:34 +0100573TEST_CASE("NeonArgMaxAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000574{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100575 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000576}
577
Sadik Armagan1625efc2021-06-10 18:24:34 +0100578TEST_CASE("NeonArgMinAxis3TestQuantisedAsymm8")
Francis Murtagh52ec3462019-11-19 12:24:19 +0000579{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100580 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
Francis Murtagh52ec3462019-11-19 12:24:19 +0000581}
582
Sadik Armagan1625efc2021-06-10 18:24:34 +0100583TEST_CASE("NeonStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +0000584{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100585 StridedSliceInvalidSliceEndToEndTest(neonDefaultBackends);
David Monahan0a99a142020-03-13 07:52:54 +0000586}
587
Colm Doneland7ceec52022-07-06 12:09:05 +0100588TEST_CASE("NeonForceImportWithAlignedBuffersEndToEndTest"
589 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
590 // will always fail.
591 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000592{
593 ForceImportWithAlignedBuffersEndToEndTest(neonDefaultBackends);
594}
595
Colm Doneland7ceec52022-07-06 12:09:05 +0100596TEST_CASE("NeonForceImportWithMisalignedInputBuffersEndToEndTest"
597 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
598 // will always fail.
599 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000600{
601 ForceImportWithMisalignedInputBuffersEndToEndTest(neonDefaultBackends);
602}
603
Colm Doneland7ceec52022-07-06 12:09:05 +0100604TEST_CASE("NeonForceImportWithMisalignedOutputBuffersEndToEndTest"
605 // Currently, the Neon workload for activation does not support tensor handle replacement so this test case
606 // will always fail.
607 * doctest::skip(true))
David Monahan646bc8a2022-01-31 14:29:14 +0000608{
609 ForceImportWithMisalignedOutputBuffersEndToEndTest(neonDefaultBackends);
610}
611
612TEST_CASE("NeonForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
613{
614 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(neonDefaultBackends);
615}
616
Sadik Armagan1625efc2021-06-10 18:24:34 +0100617// DISABLED
618//TEST_CASE("NeonDetectionPostProcessRegularNmsTest")
619//{
620// std::vector<float> boxEncodings({
621// 0.0f, 0.0f, 0.0f, 0.0f,
622// 0.0f, 1.0f, 0.0f, 0.0f,
623// 0.0f, -1.0f, 0.0f, 0.0f,
624// 0.0f, 0.0f, 0.0f, 0.0f,
625// 0.0f, 1.0f, 0.0f, 0.0f,
626// 0.0f, 0.0f, 0.0f, 0.0f
627// });
628// std::vector<float> scores({
629// 0.0f, 0.9f, 0.8f,
630// 0.0f, 0.75f, 0.72f,
631// 0.0f, 0.6f, 0.5f,
632// 0.0f, 0.93f, 0.95f,
633// 0.0f, 0.5f, 0.4f,
634// 0.0f, 0.3f, 0.2f
635// });
636// std::vector<float> anchors({
637// 0.5f, 0.5f, 1.0f, 1.0f,
638// 0.5f, 0.5f, 1.0f, 1.0f,
639// 0.5f, 0.5f, 1.0f, 1.0f,
640// 0.5f, 10.5f, 1.0f, 1.0f,
641// 0.5f, 10.5f, 1.0f, 1.0f,
642// 0.5f, 100.5f, 1.0f, 1.0f
643// });
644// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
645// boxEncodings,
646// scores,
647// anchors);
648//}
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000649
650inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
651{
652 for (size_t i = 0; i < info.GetNumElements(); i++)
653 {
654 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
655 }
656}
657
Sadik Armagan1625efc2021-06-10 18:24:34 +0100658// DISABLED
659//TEST_CASE("NeonDetectionPostProcessRegularNmsUint8Test")
660//{
661// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
662// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
663// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
664//
665// boxEncodingsInfo.SetQuantizationScale(1.0f);
666// boxEncodingsInfo.SetQuantizationOffset(1);
667// scoresInfo.SetQuantizationScale(0.01f);
668// scoresInfo.SetQuantizationOffset(0);
669// anchorsInfo.SetQuantizationScale(0.5f);
670// anchorsInfo.SetQuantizationOffset(0);
671//
672// std::vector<float> boxEncodings({
673// 0.0f, 0.0f, 0.0f, 0.0f,
674// 0.0f, 1.0f, 0.0f, 0.0f,
675// 0.0f, -1.0f, 0.0f, 0.0f,
676// 0.0f, 0.0f, 0.0f, 0.0f,
677// 0.0f, 1.0f, 0.0f, 0.0f,
678// 0.0f, 0.0f, 0.0f, 0.0f
679// });
680// std::vector<float> scores({
681// 0.0f, 0.9f, 0.8f,
682// 0.0f, 0.75f, 0.72f,
683// 0.0f, 0.6f, 0.5f,
684// 0.0f, 0.93f, 0.95f,
685// 0.0f, 0.5f, 0.4f,
686// 0.0f, 0.3f, 0.2f
687// });
688// std::vector<float> anchors({
689// 0.5f, 0.5f, 1.0f, 1.0f,
690// 0.5f, 0.5f, 1.0f, 1.0f,
691// 0.5f, 0.5f, 1.0f, 1.0f,
692// 0.5f, 10.5f, 1.0f, 1.0f,
693// 0.5f, 10.5f, 1.0f, 1.0f,
694// 0.5f, 100.5f, 1.0f, 1.0f
695// });
696//
697// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
698// std::vector<uint8_t> qScores(scores.size(), 0);
699// std::vector<uint8_t> qAnchors(anchors.size(), 0);
700// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
701// QuantizeData(qScores.data(), scores.data(), scoresInfo);
702// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
703// DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
704// qScores, qAnchors,
705// 1.0f, 1, 0.01f, 0, 0.5f, 0);
706//}
707//
708//TEST_CASE("NeonDetectionPostProcessFastNmsTest")
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// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
735// boxEncodings,
736// scores,
737// anchors);
738//}
739//
740// DISABLED
741//TEST_CASE("NeonDetectionPostProcessFastNmsUint8Test")
742//{
743// armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
744// armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
745// armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
746//
747// boxEncodingsInfo.SetQuantizationScale(1.0f);
748// boxEncodingsInfo.SetQuantizationOffset(1);
749// scoresInfo.SetQuantizationScale(0.01f);
750// scoresInfo.SetQuantizationOffset(0);
751// anchorsInfo.SetQuantizationScale(0.5f);
752// anchorsInfo.SetQuantizationOffset(0);
753//
754// std::vector<float> boxEncodings({
755// 0.0f, 0.0f, 0.0f, 0.0f,
756// 0.0f, 1.0f, 0.0f, 0.0f,
757// 0.0f, -1.0f, 0.0f, 0.0f,
758// 0.0f, 0.0f, 0.0f, 0.0f,
759// 0.0f, 1.0f, 0.0f, 0.0f,
760// 0.0f, 0.0f, 0.0f, 0.0f
761// });
762// std::vector<float> scores({
763// 0.0f, 0.9f, 0.8f,
764// 0.0f, 0.75f, 0.72f,
765// 0.0f, 0.6f, 0.5f,
766// 0.0f, 0.93f, 0.95f,
767// 0.0f, 0.5f, 0.4f,
768// 0.0f, 0.3f, 0.2f
769// });
770// std::vector<float> anchors({
771// 0.5f, 0.5f, 1.0f, 1.0f,
772// 0.5f, 0.5f, 1.0f, 1.0f,
773// 0.5f, 0.5f, 1.0f, 1.0f,
774// 0.5f, 10.5f, 1.0f, 1.0f,
775// 0.5f, 10.5f, 1.0f, 1.0f,
776// 0.5f, 100.5f, 1.0f, 1.0f
777// });
778//
779// std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
780// std::vector<uint8_t> qScores(scores.size(), 0);
781// std::vector<uint8_t> qAnchors(anchors.size(), 0);
782// QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
783// QuantizeData(qScores.data(), scores.data(), scoresInfo);
784// QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
785// DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends, qBoxEncodings,
786// qScores, qAnchors,
787// 1.0f, 1, 0.01f, 0, 0.5f, 0);
788//}
789
790TEST_CASE("NeonQLstmEndToEndTest")
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000791{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100792 QLstmEndToEnd(neonDefaultBackends);
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000793}
794
Derek Lamberti6a5e5e82019-12-05 14:41:20 +0000795}