blob: 68b7fbff90ee1f2f1576fd6fcfc591e6d7fca6f5 [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Tracy Narine10403ec2023-11-28 11:55:08 +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 Prangnawarat6d302bf2019-02-04 11:46:26 +00007
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>
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +000010#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Francis Murtaghe24e3cd2019-06-25 14:41:55 +010011#include <backendsCommon/test/BatchToSpaceNdEndToEndTestImpl.hpp>
Teresa Charlina38da592022-10-31 22:09:23 +000012#include <backendsCommon/test/BatchMatMulEndToEndTestImpl.hpp>
Idriss Chaouch98e383e2023-08-28 14:28:31 +010013#include <backendsCommon/test/BroadcastToEndToEndTestImpl.hpp>
Teresa Charlin43baf502021-09-27 10:10:39 +010014#include <backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010015#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010016#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +000017#include <backendsCommon/test/Convolution2dEndToEndTestImpl.hpp>
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +010018#include <backendsCommon/test/Convolution3dEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010019#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Tianle Chengfbfa49e2024-01-23 11:21:48 +000020#include <backendsCommon/test/DepthwiseConvolution2dEndToEndTests.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010021#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010022#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
Mike Kelly3ec30772023-03-08 13:47:17 +000023#include <backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060024#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010025#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armaganf0a6dec2021-03-25 07:46:55 +000026#include <backendsCommon/test/FullyConnectedEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000027#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Teresa Charlinb2d3ec52022-04-12 22:07:09 +010028#include <backendsCommon/test/GatherNdEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010029#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010030#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Teresa Charlina52bca22024-02-01 17:36:48 +000031#include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp"
Nikhil Raj747f5862019-07-19 15:15:23 +010032#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010033#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlinca5a23a2023-12-15 14:20:47 +000034#include <backendsCommon/test/QuantizationEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010035#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Teresa Charlinc17a35f2023-01-12 14:13:09 +000036#include <backendsCommon/test/ReduceEndToEndTestImpl.hpp>
37#include <backendsCommon/test/ReshapeEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010038#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Declan-ARM1bf56cd2023-07-20 17:32:57 +010039#include <backendsCommon/test/ReverseV2EndToEndTestImpl.hpp>
Teresa Charlin70dc5e92024-03-05 17:59:27 +000040#include <backendsCommon/test/ScatterNdEndToEndTestImpl.hpp>
Ryan OShea980446b2023-06-08 16:23:28 +010041#include <backendsCommon/test/SliceEndToEndTestImpl.hpp>
John Mcloughlin33753902024-02-07 15:00:57 +000042#include <backendsCommon/test/SoftmaxEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010043#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010044#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly386ff1a2021-03-29 15:04:50 +010045#include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp>
Mike Kelly4cc341c2023-07-07 15:43:06 +010046#include <backendsCommon/test/SubgraphUtilsTest.hpp>
Cian McGriskin160edb32023-07-25 14:15:45 +010047#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010048#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000049#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010050
Sadik Armagan1625efc2021-06-10 18:24:34 +010051#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010052
Sadik Armagan1625efc2021-06-10 18:24:34 +010053TEST_SUITE("RefEndToEnd")
54{
narpra01b9546cf2018-11-20 15:21:28 +000055std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
56
David Monahand7fca092023-01-12 14:53:34 +000057// ElementwiseUnary
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010058// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010059TEST_CASE("RefAbsEndToEndTestFloat32")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010060{
josh minor4a3c6102020-01-06 16:40:46 -060061 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000062 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010063}
64
Sadik Armagan1625efc2021-06-10 18:24:34 +010065TEST_CASE("RefAbsEndToEndTestUint8")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010066{
josh minor4a3c6102020-01-06 16:40:46 -060067 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000068 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010069}
70
Sadik Armagan1625efc2021-06-10 18:24:34 +010071TEST_CASE("RefAbsEndToEndTestInt16")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010072{
josh minor4a3c6102020-01-06 16:40:46 -060073 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000074 UnaryOperation::Abs);
75}
76
77// Rsqrt
78TEST_CASE("RefRsqrtEndToEndTestFloat32")
79{
80 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
81 UnaryOperation::Rsqrt);
82}
83
84TEST_CASE("RefRsqrtEndToEndTestUint8")
85{
86 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
87 UnaryOperation::Rsqrt);
88}
89
90TEST_CASE("RefRsqrtEndToEndTestInt16")
91{
92 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
93 UnaryOperation::Rsqrt);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010094}
95
Ryan OShea3c2795a2022-11-03 17:51:52 +000096// Addition
97TEST_CASE("RefAdditionEndtoEndFloat32")
98{
99 AdditionEndToEnd<armnn::DataType::Float32>(defaultBackends);
100}
101
102TEST_CASE("RefAdditionEndtoEndUint8")
103{
104 AdditionEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
105}
106
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +0100107// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +0100108TEST_CASE("ConstantUsage_Ref_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100109{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100110 CHECK(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100111}
112
Sadik Armagan1625efc2021-06-10 18:24:34 +0100113TEST_CASE("ConstantUsage_Ref_Uint8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100114{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100115 CHECK(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100116}
117
Sadik Armagan1625efc2021-06-10 18:24:34 +0100118TEST_CASE("Unsigned8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100119{
120 using namespace armnn;
121
122 // Create runtime in which test will run
123 armnn::IRuntime::CreationOptions options;
124 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
125
126 // Builds up the structure of the network.
127 armnn::INetworkPtr net(INetwork::Create());
128
129 IConnectableLayer* input = net->AddInputLayer(0, "input");
130 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
131 IConnectableLayer* output = net->AddOutputLayer(0, "output");
132
133 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
134 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
135
136 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000137 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100138 inputTensorInfo.SetQuantizationOffset(100);
139 inputTensorInfo.SetQuantizationScale(10000.0f);
140 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
141
Derek Lambertif90c56d2020-01-10 17:14:08 +0000142 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100143 outputTensorInfo.SetQuantizationOffset(0);
144 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
145 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
146
147 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000148 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100149
150 // Loads it into the runtime.
151 NetworkId netId;
152 auto error = runtime->LoadNetwork(netId, std::move(optNet));
Sadik Armagan1625efc2021-06-10 18:24:34 +0100153 CHECK(error == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100154
155 // Creates structures for input & output.
156 std::vector<uint8_t> inputData
157 {
158 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
159 };
160 std::vector<uint8_t> outputData(5);
161
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100162 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
163 inputTensorInfo2.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100164 armnn::InputTensors inputTensors
165 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100166 {0, armnn::ConstTensor(inputTensorInfo2, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100167 };
168 armnn::OutputTensors outputTensors
169 {
170 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
171 };
172
173 // Does the inference.
174 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
175
176 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100177 CHECK(outputData[0] == 0);
178 CHECK(outputData[1] == 0);
179 CHECK(outputData[2] == 0);
180 CHECK(outputData[3] == 255); // softmax has been saturated.
181 CHECK(outputData[4] == 0);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100182}
183
Sadik Armagan1625efc2021-06-10 18:24:34 +0100184TEST_CASE("TrivialAdd")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100185{
186 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
187
188 using namespace armnn;
189
190 // Create runtime in which test will run
191 armnn::IRuntime::CreationOptions options;
192 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
193
194 // Builds up the structure of the network.
195 armnn::INetworkPtr net(INetwork::Create());
196
197 IConnectableLayer* input1 = net->AddInputLayer(0);
198 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000199 IConnectableLayer* add = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Add));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100200 IConnectableLayer* output = net->AddOutputLayer(0);
201
202 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
203 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
204 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
205
206 // Sets the tensors in the network.
207 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
208 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
209 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
210 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
211
212 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000213 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100214
215 // Loads it into the runtime.
216 NetworkId netId;
217 runtime->LoadNetwork(netId, std::move(optNet));
218
219 // Creates structures for input & output - matching android nn test.
220 std::vector<float> input1Data
221 {
222 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
223 };
224 std::vector<float> input2Data
225 {
226 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
227 };
228 std::vector<float> outputData(12);
229
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100230 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
231 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100232 InputTensors inputTensors
233 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100234 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
235 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100236 };
237 OutputTensors outputTensors
238 {
239 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
240 };
241
242 // Does the inference.
243 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
244
245 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100246 CHECK(outputData[0] == 101);
247 CHECK(outputData[1] == 202);
248 CHECK(outputData[2] == 303);
249 CHECK(outputData[3] == 404);
250 CHECK(outputData[4] == 505);
251 CHECK(outputData[5] == 606);
252 CHECK(outputData[6] == 707);
253 CHECK(outputData[7] == 808);
254 CHECK(outputData[8] == 909);
255 CHECK(outputData[9] == 1010);
256 CHECK(outputData[10] == 1111);
257 CHECK(outputData[11] == 1212);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100258}
259
Sadik Armagan1625efc2021-06-10 18:24:34 +0100260TEST_CASE("MultipleOutputs")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100261{
262 using namespace armnn;
263
264 // Create runtime in which test will run
265 armnn::IRuntime::CreationOptions options;
266 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
267
268 // Builds up the structure of the network.
269 INetworkPtr net(INetwork::Create());
270
271 IConnectableLayer* input = net->AddInputLayer(0);
272
273 // ReLu1
274 ActivationDescriptor activation1Descriptor;
275 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
276 activation1Descriptor.m_A = 1.f;
277 activation1Descriptor.m_B = -1.f;
278 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
279
280 // ReLu6
281 ActivationDescriptor activation2Descriptor;
282 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
283 activation2Descriptor.m_A = 6.0f;
284 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
285
286 // BoundedReLu(min=2, max=5)
287 ActivationDescriptor activation3Descriptor;
288 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
289 activation3Descriptor.m_A = 5.0f;
290 activation3Descriptor.m_B = 2.0f;
291 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
292
293 IConnectableLayer* output1 = net->AddOutputLayer(0);
294 IConnectableLayer* output2 = net->AddOutputLayer(1);
295 IConnectableLayer* output3 = net->AddOutputLayer(2);
296
297 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
298 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
299 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
300
301 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
302 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
303 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
304
305 // Sets the tensors in the network.
306 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
307 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
308 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
309 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
310 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
311
312 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000313 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100314
315 // Loads it into the runtime.
316 NetworkId netId;
317 runtime->LoadNetwork(netId, std::move(optNet));
318
319 // Creates structures for input & output.
320 const std::vector<float> inputData{ 3.f, 5.f, 2.f, 3.f, 7.f, 0.f, -2.f, -1.f, 3.f, 3.f };
321
322 std::vector<float> output1Data(inputData.size());
323 std::vector<float> output2Data(inputData.size());
324 std::vector<float> output3Data(inputData.size());
325
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100326 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
327 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100328 InputTensors inputTensors
329 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100330 {0,armnn::ConstTensor(inputTensorInfo, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100331 };
332 OutputTensors outputTensors
333 {
334 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
335 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
336 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
337 };
338
339 // Does the inference.
340 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
341
342 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100343 CHECK(output1Data == std::vector<float>({ 1.f, 1.f, 1.f, 1.f, 1.f, 0.f, -1.f, -1.f, 1.f, 1.f })); // ReLu1
344 CHECK(output2Data == std::vector<float>({ 3.f, 5.f, 2.f, 3.f, 6.f, 0.f, 0.f, 0.f, 3.f, 3.f })); // ReLu6
345 CHECK(output3Data == std::vector<float>({ 3.f, 5.f, 2.f, 3.f, 5.f, 2.f, 2.f, 2.f, 3.f, 3.f })); // [2, 5]
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100346}
347
Sadik Armagan1625efc2021-06-10 18:24:34 +0100348TEST_CASE("TrivialMin")
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000349{
350 using namespace armnn;
351
352 // Create runtime in which test will run
353 armnn::IRuntime::CreationOptions options;
354 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
355
356 // Builds up the structure of the network.
357 armnn::INetworkPtr net(INetwork::Create());
358
359 IConnectableLayer* input1 = net->AddInputLayer(0);
360 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000361 IConnectableLayer* min = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Minimum));
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000362 IConnectableLayer* output = net->AddOutputLayer(0);
363
364 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
365 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
366 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
367
368 // Sets the tensors in the network.
369 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
370 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
371 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
372 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
373
374 // optimize the network
375 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
376
377 // Loads it into the runtime.
378 NetworkId netId;
379 runtime->LoadNetwork(netId, std::move(optNet));
380
381 // Creates structures for input & output - matching android nn test.
382 std::vector<float> input1Data
383 {
384 1.0f, 2.0f, 3.0f, 4.0f
385 };
386 std::vector<float> input2Data
387 {
388 2.0f, 1.0f, 5.0f, 2.0f
389 };
390 std::vector<float> outputData(4);
391
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100392 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
393 inputTensorInfo.SetConstant(true);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000394 InputTensors inputTensors
395 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100396 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
397 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000398 };
399 OutputTensors outputTensors
400 {
401 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
402 };
403
404 // Does the inference.
405 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
406
407 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100408 CHECK(outputData[0] == 1);
409 CHECK(outputData[1] == 1);
410 CHECK(outputData[2] == 3);
411 CHECK(outputData[3] == 2);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000412}
413
Sadik Armagan1625efc2021-06-10 18:24:34 +0100414TEST_CASE("RefEqualSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000415{
kevmay012b4d88e2019-01-24 14:05:09 +0000416 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
417 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000418
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100419 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
420 ComparisonOperation::Equal,
421 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000422}
423
Sadik Armagan1625efc2021-06-10 18:24:34 +0100424TEST_CASE("RefGreaterSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000425{
kevmay012b4d88e2019-01-24 14:05:09 +0000426 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
427 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000428
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100429 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
430 ComparisonOperation::Greater,
431 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000432}
433
Sadik Armagan1625efc2021-06-10 18:24:34 +0100434TEST_CASE("RefEqualSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000435{
436 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
437 0, 0, 0, 0, 1, 1, 1, 1 });
438
Derek Lambertif90c56d2020-01-10 17:14:08 +0000439 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100440 ComparisonOperation::Equal,
441 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000442}
443
Sadik Armagan1625efc2021-06-10 18:24:34 +0100444TEST_CASE("RefGreaterSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000445{
446 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
447 0, 0, 0, 0, 0, 0, 0, 0 });
448
Derek Lambertif90c56d2020-01-10 17:14:08 +0000449 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100450 ComparisonOperation::Greater,
451 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000452}
453
Sadik Armagan1625efc2021-06-10 18:24:34 +0100454TEST_CASE("RefEqualBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000455{
kevmay012b4d88e2019-01-24 14:05:09 +0000456 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
457 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000458
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100459 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
460 ComparisonOperation::Equal,
461 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000462}
463
Sadik Armagan1625efc2021-06-10 18:24:34 +0100464TEST_CASE("RefGreaterBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000465{
kevmay012b4d88e2019-01-24 14:05:09 +0000466 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
467 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000468
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100469 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
470 ComparisonOperation::Greater,
471 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000472}
473
Sadik Armagan1625efc2021-06-10 18:24:34 +0100474TEST_CASE("RefEqualBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000475{
476 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
477 0, 0, 0, 0, 0, 0 });
478
Derek Lambertif90c56d2020-01-10 17:14:08 +0000479 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100480 ComparisonOperation::Equal,
481 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000482}
483
Sadik Armagan1625efc2021-06-10 18:24:34 +0100484TEST_CASE("RefGreaterBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000485{
486 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
487 1, 1, 1, 1, 1, 1 });
488
Derek Lambertif90c56d2020-01-10 17:14:08 +0000489 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100490 ComparisonOperation::Greater,
491 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000492}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000493
Teresa Charlina38da592022-10-31 22:09:23 +0000494TEST_CASE("RefBatchMatMulEndToEndFloat32Test")
495{
496 BatchMatMulEndToEnd<armnn::DataType::Float32>(defaultBackends);
497}
498
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000499TEST_CASE("RefBatchMatMulEndToEndInt8Test")
500{
501 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
502}
503
Sadik Armagan1625efc2021-06-10 18:24:34 +0100504TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100505{
506 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
507}
508
Sadik Armagan1625efc2021-06-10 18:24:34 +0100509TEST_CASE("RefBatchToSpaceNdEndToEndUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100510{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000511 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100512}
513
Sadik Armagan1625efc2021-06-10 18:24:34 +0100514TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100515{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000516 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100517}
518
Sadik Armagan1625efc2021-06-10 18:24:34 +0100519TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100520{
521 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
522}
523
Sadik Armagan1625efc2021-06-10 18:24:34 +0100524TEST_CASE("RefBatchToSpaceNdEndToEndUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100525{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000526 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100527}
528
Sadik Armagan1625efc2021-06-10 18:24:34 +0100529TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100530{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000531 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100532}
533
Sadik Armagan1625efc2021-06-10 18:24:34 +0100534TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100535{
536 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
537}
538
Sadik Armagan1625efc2021-06-10 18:24:34 +0100539TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100540{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000541 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100542}
543
Sadik Armagan1625efc2021-06-10 18:24:34 +0100544TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100545{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000546 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100547}
548
Sadik Armagan1625efc2021-06-10 18:24:34 +0100549TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100550{
551 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
552}
553
Sadik Armagan1625efc2021-06-10 18:24:34 +0100554TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100555{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000556 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100557}
558
Sadik Armagan1625efc2021-06-10 18:24:34 +0100559TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100560{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000561 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100562}
563
Teresa Charlin43baf502021-09-27 10:10:39 +0100564TEST_CASE("RefChannelShuffleFloatTest")
565{
566 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
567}
568
569TEST_CASE("RefChannelShuffleUint8Test")
570{
571 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
572}
573
Sadik Armagan1625efc2021-06-10 18:24:34 +0100574TEST_CASE("RefConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000575{
Jim Flynne242f2d2019-05-22 14:24:13 +0100576 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000577}
578
Sadik Armagan1625efc2021-06-10 18:24:34 +0100579TEST_CASE("RefConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000580{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000581 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000582}
583
Sadik Armagan1625efc2021-06-10 18:24:34 +0100584TEST_CASE("RefConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000585{
Jim Flynne242f2d2019-05-22 14:24:13 +0100586 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000587}
588
Sadik Armagan1625efc2021-06-10 18:24:34 +0100589TEST_CASE("RefConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000590{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000591 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000592}
593
Sadik Armagan1625efc2021-06-10 18:24:34 +0100594TEST_CASE("RefConcatEndToEndDim2Test")
narpra01b9546cf2018-11-20 15:21:28 +0000595{
Jim Flynne242f2d2019-05-22 14:24:13 +0100596 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000597}
598
Sadik Armagan1625efc2021-06-10 18:24:34 +0100599TEST_CASE("RefConcatEndToEndDim2Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000600{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000601 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000602}
603
Sadik Armagan1625efc2021-06-10 18:24:34 +0100604TEST_CASE("RefConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000605{
Jim Flynne242f2d2019-05-22 14:24:13 +0100606 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000607}
608
Sadik Armagan1625efc2021-06-10 18:24:34 +0100609TEST_CASE("RefConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000610{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000611 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000612}
613
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +0000614TEST_CASE("RefConvolution2dFloat32Test")
615{
616 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
617}
618
619TEST_CASE("RefConvolution2dNchwFloat32Test")
620{
621 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
622}
623
624TEST_CASE("RefConvolution2dFloat16Test")
625{
626 Convolution2dEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
627}
628
John Mcloughlinceb44282024-04-23 16:47:04 +0100629TEST_CASE("RefConvolution2dInt8Test")
630{
631 Convolution2dEndToEnd<armnn::DataType::QSymmS8,
632 armnn::DataType::QSymmS8,
633 armnn::DataType::Signed32>(defaultBackends, armnn::DataLayout::NHWC);
634}
635
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +0100636TEST_CASE("RefConvolution3dFloat32Test")
637{
638 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
639 armnn::DataLayout::NDHWC);
640}
641
642TEST_CASE("RefConvolution3dNcdhwFloat32Test")
643{
644 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
645 armnn::DataLayout::NCDHW);
646}
647
648TEST_CASE("RefConvolution3dFloat16Test")
649{
650 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
651 armnn::DataLayout::NDHWC);
652}
653
654TEST_CASE("RefConvolution3dUint8Test")
655{
656 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
657 armnn::DataLayout::NDHWC);
658}
659
660TEST_CASE("RefConvolution3dInt8Test")
661{
662 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
663 armnn::DataLayout::NDHWC);
664}
665
Tianle Chengfbfa49e2024-01-23 11:21:48 +0000666TEST_CASE("RefDepthwiseConvolution2dEndtoEndFloat32Test")
667{
668 DepthwiseConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
669 armnn::DataLayout::NHWC);
670}
671
Sadik Armagan1625efc2021-06-10 18:24:34 +0100672TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100673{
674 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
675}
676
Sadik Armagan1625efc2021-06-10 18:24:34 +0100677TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100678{
679 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
680}
Teresa Charlin44088502020-07-27 11:27:19 +0100681
Sadik Armagan1625efc2021-06-10 18:24:34 +0100682TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100683{
684 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
685}
686
Matthew Sloyan81beae32021-07-13 19:46:11 +0100687TEST_CASE("RefFullyConnectedEndToEndTestFloat32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000688{
689 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
690}
691
Matthew Sloyan81beae32021-07-13 19:46:11 +0100692TEST_CASE("RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
693{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100694 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100695}
696
697TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
698{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100699 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
Cathal Corbett521032f2021-10-07 11:46:40 +0100700}
701
702TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
703{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100704 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, true, true, false);
705}
706
707TEST_CASE("RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
708{
709 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, false, true, true);
710}
711
712TEST_CASE("RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
713{
714 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, true, false, true);
715}
716
717TEST_CASE("RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
718{
719 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, false, false, true);
720}
721
722TEST_CASE("RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
723{
724 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, false, false, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100725}
726
Sadik Armagan1625efc2021-06-10 18:24:34 +0100727TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000728{
729 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
730}
731
Sadik Armagan1625efc2021-06-10 18:24:34 +0100732TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000733{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000734 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000735}
736
Sadik Armagan1625efc2021-06-10 18:24:34 +0100737TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100738{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000739 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100740}
741
Sadik Armagan1625efc2021-06-10 18:24:34 +0100742TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000743{
744 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
745}
746
Sadik Armagan1625efc2021-06-10 18:24:34 +0100747TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000748{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000749 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000750}
751
Sadik Armagan1625efc2021-06-10 18:24:34 +0100752TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100753{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000754 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100755}
756
Teresa Charlinb2d3ec52022-04-12 22:07:09 +0100757TEST_CASE("RefGatherNdFloatTest")
758{
759 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
760}
761
762TEST_CASE("RefGatherNdUint8Test")
763{
764 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
765}
766
767TEST_CASE("RefGatherNdInt16Test")
768{
769 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
770}
771
772TEST_CASE("RefGatherNdMultiDimFloatTest")
773{
774 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
775}
776
777TEST_CASE("RefGatherNdMultiDimUint8Test")
778{
779 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
780}
781
782TEST_CASE("RefGatherNdMultiDimInt16Test")
783{
784 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
785}
786
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100787// DepthToSpace
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000788TEST_CASE("DepthToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100789{
790 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
791}
792
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000793TEST_CASE("DepthToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100794{
795 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
796}
797
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000798TEST_CASE("DepthToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100799{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000800 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100801}
802
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000803TEST_CASE("DepthToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100804{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000805 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100806}
807
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000808TEST_CASE("DepthToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100809{
810 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
811}
812
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000813TEST_CASE("DepthToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100814{
815 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
816}
817
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000818TEST_CASE("DepthToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100819{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000820 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100821}
822
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000823TEST_CASE("DepthToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100824{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000825 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100826}
827
John Mcloughlinceb44282024-04-23 16:47:04 +0100828// Quantization
829TEST_CASE("RefQuantizeInt8")
830{
831 QuantizationEndToEndInt8(defaultBackends);
832}
833
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100834// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100835TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100836{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000837 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100838}
839
Sadik Armagan1625efc2021-06-10 18:24:34 +0100840TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100841{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000842 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100843}
844
Sadik Armagan1625efc2021-06-10 18:24:34 +0100845TEST_CASE("DequantizeEndToEndSimpleInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100846{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000847 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100848}
849
Sadik Armagan1625efc2021-06-10 18:24:34 +0100850TEST_CASE("DequantizeEndToEndOffsetInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100851{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000852 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100853}
854
Sadik Armagan1625efc2021-06-10 18:24:34 +0100855TEST_CASE("RefDetectionPostProcessRegularNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000856{
857 std::vector<float> boxEncodings({
858 0.0f, 0.0f, 0.0f, 0.0f,
859 0.0f, 1.0f, 0.0f, 0.0f,
860 0.0f, -1.0f, 0.0f, 0.0f,
861 0.0f, 0.0f, 0.0f, 0.0f,
862 0.0f, 1.0f, 0.0f, 0.0f,
863 0.0f, 0.0f, 0.0f, 0.0f
864 });
865 std::vector<float> scores({
866 0.0f, 0.9f, 0.8f,
867 0.0f, 0.75f, 0.72f,
868 0.0f, 0.6f, 0.5f,
869 0.0f, 0.93f, 0.95f,
870 0.0f, 0.5f, 0.4f,
871 0.0f, 0.3f, 0.2f
872 });
873 std::vector<float> anchors({
874 0.5f, 0.5f, 1.0f, 1.0f,
875 0.5f, 0.5f, 1.0f, 1.0f,
876 0.5f, 0.5f, 1.0f, 1.0f,
877 0.5f, 10.5f, 1.0f, 1.0f,
878 0.5f, 10.5f, 1.0f, 1.0f,
879 0.5f, 100.5f, 1.0f, 1.0f
880 });
881 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
882}
883
884inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
885{
886 for (size_t i = 0; i < info.GetNumElements(); i++)
887 {
888 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
889 }
890}
891
Sadik Armagan1625efc2021-06-10 18:24:34 +0100892TEST_CASE("RefDetectionPostProcessRegularNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000893{
894 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
895 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
896 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
897
898 boxEncodingsInfo.SetQuantizationScale(1.0f);
899 boxEncodingsInfo.SetQuantizationOffset(1);
900 scoresInfo.SetQuantizationScale(0.01f);
901 scoresInfo.SetQuantizationOffset(0);
902 anchorsInfo.SetQuantizationScale(0.5f);
903 anchorsInfo.SetQuantizationOffset(0);
904
905 std::vector<float> boxEncodings({
906 0.0f, 0.0f, 0.0f, 0.0f,
907 0.0f, 1.0f, 0.0f, 0.0f,
908 0.0f, -1.0f, 0.0f, 0.0f,
909 0.0f, 0.0f, 0.0f, 0.0f,
910 0.0f, 1.0f, 0.0f, 0.0f,
911 0.0f, 0.0f, 0.0f, 0.0f
912 });
913 std::vector<float> scores({
914 0.0f, 0.9f, 0.8f,
915 0.0f, 0.75f, 0.72f,
916 0.0f, 0.6f, 0.5f,
917 0.0f, 0.93f, 0.95f,
918 0.0f, 0.5f, 0.4f,
919 0.0f, 0.3f, 0.2f
920 });
921 std::vector<float> anchors({
922 0.5f, 0.5f, 1.0f, 1.0f,
923 0.5f, 0.5f, 1.0f, 1.0f,
924 0.5f, 0.5f, 1.0f, 1.0f,
925 0.5f, 10.5f, 1.0f, 1.0f,
926 0.5f, 10.5f, 1.0f, 1.0f,
927 0.5f, 100.5f, 1.0f, 1.0f
928 });
929
930 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
931 std::vector<uint8_t> qScores(scores.size(), 0);
932 std::vector<uint8_t> qAnchors(anchors.size(), 0);
933 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
934 QuantizeData(qScores.data(), scores.data(), scoresInfo);
935 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000936 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000937 qScores, qAnchors,
938 1.0f, 1, 0.01f, 0, 0.5f, 0);
939}
940
Sadik Armagan1625efc2021-06-10 18:24:34 +0100941TEST_CASE("RefDetectionPostProcessFastNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000942{
943 std::vector<float> boxEncodings({
944 0.0f, 0.0f, 0.0f, 0.0f,
945 0.0f, 1.0f, 0.0f, 0.0f,
946 0.0f, -1.0f, 0.0f, 0.0f,
947 0.0f, 0.0f, 0.0f, 0.0f,
948 0.0f, 1.0f, 0.0f, 0.0f,
949 0.0f, 0.0f, 0.0f, 0.0f
950 });
951 std::vector<float> scores({
952 0.0f, 0.9f, 0.8f,
953 0.0f, 0.75f, 0.72f,
954 0.0f, 0.6f, 0.5f,
955 0.0f, 0.93f, 0.95f,
956 0.0f, 0.5f, 0.4f,
957 0.0f, 0.3f, 0.2f
958 });
959 std::vector<float> anchors({
960 0.5f, 0.5f, 1.0f, 1.0f,
961 0.5f, 0.5f, 1.0f, 1.0f,
962 0.5f, 0.5f, 1.0f, 1.0f,
963 0.5f, 10.5f, 1.0f, 1.0f,
964 0.5f, 10.5f, 1.0f, 1.0f,
965 0.5f, 100.5f, 1.0f, 1.0f
966 });
967 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
968}
969
Sadik Armagan1625efc2021-06-10 18:24:34 +0100970TEST_CASE("RefDetectionPostProcessFastNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000971{
972 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
973 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
974 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
975
976 boxEncodingsInfo.SetQuantizationScale(1.0f);
977 boxEncodingsInfo.SetQuantizationOffset(1);
978 scoresInfo.SetQuantizationScale(0.01f);
979 scoresInfo.SetQuantizationOffset(0);
980 anchorsInfo.SetQuantizationScale(0.5f);
981 anchorsInfo.SetQuantizationOffset(0);
982
983 std::vector<float> boxEncodings({
984 0.0f, 0.0f, 0.0f, 0.0f,
985 0.0f, 1.0f, 0.0f, 0.0f,
986 0.0f, -1.0f, 0.0f, 0.0f,
987 0.0f, 0.0f, 0.0f, 0.0f,
988 0.0f, 1.0f, 0.0f, 0.0f,
989 0.0f, 0.0f, 0.0f, 0.0f
990 });
991 std::vector<float> scores({
992 0.0f, 0.9f, 0.8f,
993 0.0f, 0.75f, 0.72f,
994 0.0f, 0.6f, 0.5f,
995 0.0f, 0.93f, 0.95f,
996 0.0f, 0.5f, 0.4f,
997 0.0f, 0.3f, 0.2f
998 });
999 std::vector<float> anchors({
1000 0.5f, 0.5f, 1.0f, 1.0f,
1001 0.5f, 0.5f, 1.0f, 1.0f,
1002 0.5f, 0.5f, 1.0f, 1.0f,
1003 0.5f, 10.5f, 1.0f, 1.0f,
1004 0.5f, 10.5f, 1.0f, 1.0f,
1005 0.5f, 100.5f, 1.0f, 1.0f
1006 });
1007
1008 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
1009 std::vector<uint8_t> qScores(scores.size(), 0);
1010 std::vector<uint8_t> qAnchors(anchors.size(), 0);
1011 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
1012 QuantizeData(qScores.data(), scores.data(), scoresInfo);
1013 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +00001014 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +00001015 qScores, qAnchors,
1016 1.0f, 1, 0.01f, 0, 0.5f, 0);
1017}
1018
Teresa Charlina4b60902024-02-07 20:55:53 +00001019// Activations
1020// Linear
1021TEST_CASE("RefLinearEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001022{
Teresa Charlina4b60902024-02-07 20:55:53 +00001023 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001024}
1025
Teresa Charlina4b60902024-02-07 20:55:53 +00001026TEST_CASE("RefLinearEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001027{
Teresa Charlina4b60902024-02-07 20:55:53 +00001028 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001029}
1030
Teresa Charlina4b60902024-02-07 20:55:53 +00001031TEST_CASE("RefLinearEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001032{
Teresa Charlina4b60902024-02-07 20:55:53 +00001033 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001034}
1035
Teresa Charlina4b60902024-02-07 20:55:53 +00001036TEST_CASE("RefLinearEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001037{
Teresa Charlina4b60902024-02-07 20:55:53 +00001038 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001039}
1040
Teresa Charlina4b60902024-02-07 20:55:53 +00001041TEST_CASE("RefLinearEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001042{
Teresa Charlina4b60902024-02-07 20:55:53 +00001043 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::Linear);
1044}
1045
1046// Sigmoid
1047TEST_CASE("RefSigmoidEndToEndTestFloat32")
1048{
1049 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::Sigmoid);
1050}
1051
1052TEST_CASE("RefSigmoidEndToEndTestFloat16")
1053{
1054 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::Sigmoid);
1055}
1056
1057TEST_CASE("RefSigmoidEndToEndTestQAsymmS8")
1058{
1059 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::Sigmoid);
1060}
1061
1062TEST_CASE("RefSigmoidEndToEndTestQAsymmU8")
1063{
1064 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::Sigmoid, 0.12f, 15);
1065}
1066
1067TEST_CASE("RefSigmoidEndToEndTestQSymmS16")
1068{
1069 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::Sigmoid);
1070}
1071
1072// ReLu
1073TEST_CASE("RefReLuEndToEndTestFloat32")
1074{
1075 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::ReLu);
1076}
1077
1078TEST_CASE("RefReLuEndToEndTestFloat16")
1079{
1080 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::ReLu);
1081}
1082
1083TEST_CASE("RefReLuEndToEndTestQAsymmS8")
1084{
1085 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::ReLu);
1086}
1087
1088TEST_CASE("RefReLuEndToEndTestQAsymmU8")
1089{
1090 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::ReLu);
1091}
1092
1093TEST_CASE("RefReLuEndToEndTestQSymmS16")
1094{
1095 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::ReLu);
1096}
1097
1098// BoundedReLu
1099TEST_CASE("RefBoundedReLuEndToEndTestFloat32")
1100{
1101 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::BoundedReLu);
1102}
1103
1104TEST_CASE("RefBoundedReLuEndToEndTestFloat16")
1105{
1106 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::BoundedReLu);
1107}
1108
1109TEST_CASE("RefBoundedReLuEndToEndTestQAsymmS8")
1110{
1111 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::BoundedReLu);
1112}
1113
1114TEST_CASE("RefBoundedReLuEndToEndTestQAsymmU8")
1115{
1116 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::BoundedReLu);
1117}
1118
1119TEST_CASE("RefBoundedReLuEndToEndTestQSymmS16")
1120{
1121 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::BoundedReLu);
1122}
1123
1124// SoftReLu
1125TEST_CASE("RefSoftReLuEndToEndTestFloat32")
1126{
1127 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::SoftReLu);
1128}
1129
1130TEST_CASE("RefSoftReLuEndToEndTestFloat16")
1131{
1132 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::SoftReLu);
1133}
1134
1135TEST_CASE("RefSoftReLuEndToEndTestQAsymmS8")
1136{
1137 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::SoftReLu);
1138}
1139
1140TEST_CASE("RefSoftReLuEndToEndTestQAsymmU8")
1141{
1142 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::SoftReLu, 0.12f, 15);
1143}
1144
1145TEST_CASE("RefSoftReLuEndToEndTestQSymmS16")
1146{
1147 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::SoftReLu);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001148}
1149
Tracy Narine10403ec2023-11-28 11:55:08 +00001150// LeakyRelu
1151TEST_CASE("RefLeakyReluActivationFloat32")
1152{
Teresa Charlina4b60902024-02-07 20:55:53 +00001153 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::LeakyReLu, 1.f, 0, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001154}
1155
1156TEST_CASE("RefLeakyReluActivationFloat16")
1157{
Teresa Charlina4b60902024-02-07 20:55:53 +00001158 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::LeakyReLu, 0.3f, 5, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001159}
1160
1161TEST_CASE("RefLeakyReluActivationInt8")
1162{
Teresa Charlina4b60902024-02-07 20:55:53 +00001163 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::LeakyReLu, 0.6f, 7, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001164}
1165
1166TEST_CASE("RefLeakyReluActivationUInt8")
1167{
Teresa Charlina4b60902024-02-07 20:55:53 +00001168 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::LeakyReLu, 0.12f, 15, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001169}
1170
1171TEST_CASE("RefLeakyReluActivationInt16")
1172{
Teresa Charlina4b60902024-02-07 20:55:53 +00001173 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::LeakyReLu, 0.15f, 55, 0.01f);
1174}
1175
1176// Elu
1177TEST_CASE("RefEluEndToEndTestFloat32")
1178{
1179 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::Elu);
1180}
1181
1182TEST_CASE("RefEluEndToEndTestFloat16")
1183{
1184 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::Elu);
1185}
1186
1187TEST_CASE("RefEluEndToEndTestQAsymmS8")
1188{
1189 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::Elu);
1190}
1191
1192TEST_CASE("RefEluEndToEndTestQAsymmU8")
1193{
1194 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::Elu);
1195}
1196
1197TEST_CASE("RefEluEndToEndTestQSymmS16")
1198{
1199 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::Elu);
1200}
1201
1202// HardSwish
1203TEST_CASE("RefHardSwishEndToEndTestFloat32")
1204{
1205 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::HardSwish);
1206}
1207
1208TEST_CASE("RefHardSwishEndToEndTestFloat16")
1209{
1210 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::HardSwish);
1211}
1212
1213TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
1214{
1215 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::HardSwish);
1216}
1217
1218TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
1219{
1220 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::HardSwish);
1221}
1222
1223TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
1224{
1225 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::HardSwish);
1226}
1227
1228// TanH
1229TEST_CASE("RefTanHEndToEndTestFloat32")
1230{
1231 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 2, 3);
1232}
1233
1234TEST_CASE("RefTanHEndToEndTestFloat16")
1235{
1236 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 2, 3);
1237}
1238
1239TEST_CASE("RefTanHEndToEndTestQAsymmS8")
1240{
1241 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
1242}
1243
1244TEST_CASE("RefTanHEndToEndTestQAsymmU8")
1245{
1246 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
1247}
1248
1249TEST_CASE("RefTanHEndToEndTestQSymmS16")
1250{
1251 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
Tracy Narine10403ec2023-11-28 11:55:08 +00001252}
1253
Sadik Armagan20bea002019-10-16 09:29:38 +01001254// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001255TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +01001256{
1257 LogSoftmaxEndToEndTest(defaultBackends);
1258}
1259
John Mcloughlin33753902024-02-07 15:00:57 +00001260// Softmax
1261TEST_CASE("RefSoftmaxEndToEndTestFloat32")
1262{
1263 SoftmaxEndToEnd<armnn::DataType::Float32>(defaultBackends);
1264}
1265
Teresa Charlina4b60902024-02-07 20:55:53 +00001266// Prelu
Sadik Armagan1625efc2021-06-10 18:24:34 +01001267TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +01001268{
1269 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1270}
1271
Sadik Armagan1625efc2021-06-10 18:24:34 +01001272TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +01001273{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001274 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001275}
1276
Sadik Armagan1625efc2021-06-10 18:24:34 +01001277TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +01001278{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001279 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001280}
1281
Teresa Charlina52bca22024-02-01 17:36:48 +00001282// Pooling 2D
1283// Average Pool 2D
1284TEST_CASE("RefAvgPool2DEndtoEndTestFloat32")
1285{
1286 AvgPool2dEndToEnd<DataType::Float32>(defaultBackends);
1287}
1288
1289TEST_CASE("RefAvgPool2DEndtoEndTestFloat16")
1290{
1291 AvgPool2dEndToEndFloat16<DataType::Float16>(defaultBackends);
1292}
1293
1294TEST_CASE("RefAvgPool2DIgnoreValueEndtoEndTestFloat32")
1295{
1296 AvgPool2dEndToEnd<DataType::Float32>(defaultBackends, PaddingMethod::IgnoreValue);
1297}
1298
1299// Max Pool 2D
1300TEST_CASE("RefMaxPool2DEndtoEndTestFloat32")
1301{
1302 MaxPool2dEndToEnd<DataType::Float32>(defaultBackends);
1303}
1304
1305TEST_CASE("RefMaxPool2DEndtoEndTestFloat16")
1306{
1307 MaxPool2dEndToEndFloat16<DataType::Float16>(defaultBackends);
1308}
1309
1310TEST_CASE("RefMaxPool2DIgnoreValueEndtoEndTestFloat32")
1311{
1312 MaxPool2dEndToEnd<DataType::Float32>(defaultBackends, PaddingMethod::IgnoreValue);
1313}
1314
1315TEST_CASE("RefMaxPool2DTwoLayerEndtoEndTestFloat32")
1316{
1317 MaxPool2dTwoLayerEndToEnd<DataType::Float32>(defaultBackends);
1318}
1319
1320TEST_CASE("RefMaxPool2DThreeLayerEndtoEndTestFloat32")
1321{
1322 MaxPool2dThreeLayerEndToEnd<DataType::Float32>(defaultBackends);
1323}
1324
Teresa Charlinca5a23a2023-12-15 14:20:47 +00001325// Quantization
1326TEST_CASE("QuantizationEndToEndFloat32_U8Test")
1327{
1328 QuantizationEndToEndFloat32<armnn::DataType::QAsymmU8>(defaultBackends);
1329}
1330
1331TEST_CASE("QuantizationEndToEndFloat32_I8Test")
1332{
1333 QuantizationEndToEndFloat32<armnn::DataType::QAsymmS8>(defaultBackends);
1334}
1335
1336TEST_CASE("QuantizationEndToEndFloat32_S16Test")
1337{
1338 QuantizationEndToEndFloat32<armnn::DataType::QSymmS16>(defaultBackends);
1339}
1340
1341TEST_CASE("QuantizationEndToEndFloat16_U8Test")
1342{
1343 QuantizationEndToEndFloat16<armnn::DataType::QAsymmU8>(defaultBackends);
1344}
1345
1346TEST_CASE("QuantizationEndToEndFloat16_I8Test")
1347{
1348 QuantizationEndToEndFloat16<armnn::DataType::QAsymmS8>(defaultBackends);
1349}
1350
1351TEST_CASE("QuantizationEndToEndFloat16_S16Test")
1352{
1353 QuantizationEndToEndFloat16<armnn::DataType::QSymmS16>(defaultBackends);
1354}
1355
Teresa Charlin70dc5e92024-03-05 17:59:27 +00001356// ScatterNd
1357
1358TEST_CASE("RefScatterNd1DInputEndToEndFloat32Test")
1359{
1360 ScatterNd1DimUpdateWithInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1361}
1362
1363TEST_CASE("RefScatterNd1DInputEndToEndInt8Test")
1364{
1365 ScatterNd1DimUpdateWithInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1366}
1367
1368TEST_CASE("RefScatterNd1DNoInputEndToEndFloat32Test")
1369{
1370 ScatterNd1DimUpdateNoInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1371}
1372
1373TEST_CASE("RefScatterNd1DNoInputEndToEndInt8Test")
1374{
1375 ScatterNd1DimUpdateNoInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1376}
1377
1378TEST_CASE("RefScatterNd2DInputEndToEndFloat32Test")
1379{
1380 ScatterNd2DimUpdateWithInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1381}
1382
1383TEST_CASE("RefScatterNd2DInputEndToEndInt8Test")
1384{
1385 ScatterNd2DimUpdateWithInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1386}
1387
1388TEST_CASE("RefScatterNd2DNoInputEndToEndFloat32Test")
1389{
1390 ScatterNd2DimUpdateNoInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1391}
1392
1393TEST_CASE("RefScatterNd2DNoInputEndToEndInt8Test")
1394{
1395 ScatterNd2DimUpdateNoInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1396}
1397
1398
Teresa Charlinca5a23a2023-12-15 14:20:47 +00001399// SpaceToDepth
Sadik Armagan1625efc2021-06-10 18:24:34 +01001400TEST_CASE("RefSpaceToDepthNhwcEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001401{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001402 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001403}
1404
Sadik Armagan1625efc2021-06-10 18:24:34 +01001405TEST_CASE("RefSpaceToDepthNchwEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001406{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001407 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001408}
1409
Sadik Armagan1625efc2021-06-10 18:24:34 +01001410TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001411{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001412 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001413}
1414
Sadik Armagan1625efc2021-06-10 18:24:34 +01001415TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001416{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001417 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001418}
1419
Kevin May1bea6be2023-12-12 11:18:46 +00001420// Split
1421TEST_CASE("RefSplit1dEndtoEndTestSigned16")
1422{
1423 Splitter1dEndToEnd<DataType::QSymmS16>(defaultBackends);
1424}
1425
Teresa Charlina52bca22024-02-01 17:36:48 +00001426TEST_CASE("RefSplit1dEndtoEndTestFloat16")
Kevin May1bea6be2023-12-12 11:18:46 +00001427{
1428 Splitter1dEndToEndFloat16<DataType::Float16>(defaultBackends);
1429}
1430
Sadik Armagan1625efc2021-06-10 18:24:34 +01001431TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001432{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001433 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001434}
1435
Sadik Armagan1625efc2021-06-10 18:24:34 +01001436TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001437{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001438 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001439}
1440
Sadik Armagan1625efc2021-06-10 18:24:34 +01001441TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001442{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001443 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001444}
1445
Sadik Armagan1625efc2021-06-10 18:24:34 +01001446TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001447{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001448 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001449}
1450
Sadik Armagan1625efc2021-06-10 18:24:34 +01001451TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001452{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001453 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001454}
1455
Sadik Armagan1625efc2021-06-10 18:24:34 +01001456TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001457{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001458 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001459}
1460
Kevin May1bea6be2023-12-12 11:18:46 +00001461TEST_CASE("RefSplit3dDim1EndtoEndTestSigned16")
1462{
1463 Splitter3dDim1EndToEnd<DataType::QSymmS16>(defaultBackends);
1464}
1465
1466TEST_CASE("RefSplit3dDim1EndtoEndTestFloat16")
1467{
1468 Splitter3dDim1EndToEndFloat16<DataType::Float16>(defaultBackends);
1469}
1470
Sadik Armagan1625efc2021-06-10 18:24:34 +01001471TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001472{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001473 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001474}
1475
Sadik Armagan1625efc2021-06-10 18:24:34 +01001476TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001477{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001478 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1479}
1480
Sadik Armagan1625efc2021-06-10 18:24:34 +01001481TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001482{
1483 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1484}
1485
Sadik Armagan1625efc2021-06-10 18:24:34 +01001486TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001487{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001488 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001489}
1490
Sadik Armagan1625efc2021-06-10 18:24:34 +01001491TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001492{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001493 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001494}
1495
Sadik Armagan1625efc2021-06-10 18:24:34 +01001496TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001497{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001498 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001499}
1500
Sadik Armagan1625efc2021-06-10 18:24:34 +01001501TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001502{
1503 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1504}
1505
Sadik Armagan1625efc2021-06-10 18:24:34 +01001506TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001507{
1508 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1509}
1510
Sadik Armagan1625efc2021-06-10 18:24:34 +01001511TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001512{
1513 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1514}
1515
Kevin May1bea6be2023-12-12 11:18:46 +00001516TEST_CASE("RefSplit4dDim2EndtoEndTestFloat16")
1517{
1518 Splitter4dDim2EndToEndFloat16<DataType::Float16>(defaultBackends);
1519}
1520
Sadik Armagan1625efc2021-06-10 18:24:34 +01001521TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001522{
1523 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1524}
1525
Sadik Armagan1625efc2021-06-10 18:24:34 +01001526TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001527{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001528 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001529}
1530
Sadik Armagan1625efc2021-06-10 18:24:34 +01001531TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001532{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001533 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001534}
1535
Sadik Armagan1625efc2021-06-10 18:24:34 +01001536TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001537{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001538 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001539}
1540
Sadik Armagan1625efc2021-06-10 18:24:34 +01001541TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001542{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001543 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001544}
1545
Cian McGriskin160edb32023-07-25 14:15:45 +01001546// Tile
1547TEST_CASE("RefTileEndToEndFloat32")
1548{
1549 TileEndToEnd<armnn::DataType::Float32>(defaultBackends);
1550}
1551
1552TEST_CASE("RefTileEndToEndFloat16")
1553{
1554 TileEndToEnd<armnn::DataType::Float16>(defaultBackends);
1555}
1556
1557TEST_CASE("RefTileEndToEndQAsymmS8")
1558{
1559 TileEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1560}
1561
1562TEST_CASE("RefTileEndToEndQAsymmU8")
1563{
1564 TileEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1565}
1566
1567TEST_CASE("RefTileEndToEndQSymmS8")
1568{
1569 TileEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1570}
1571
1572TEST_CASE("RefTileEndToEndQSymmS16")
1573{
1574 TileEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1575}
1576
1577TEST_CASE("RefTileEndToEndSigned32")
1578{
1579 TileEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1580}
1581
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001582// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001583TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001584{
1585 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1586 defaultBackends, armnn::DataLayout::NCHW);
1587}
1588
Sadik Armagan1625efc2021-06-10 18:24:34 +01001589TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001590{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001591 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001592 defaultBackends, armnn::DataLayout::NCHW);
1593}
1594
Sadik Armagan1625efc2021-06-10 18:24:34 +01001595TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001596{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001597 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001598 defaultBackends, armnn::DataLayout::NCHW);
1599}
1600
Sadik Armagan1625efc2021-06-10 18:24:34 +01001601TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001602{
1603 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1604 defaultBackends, armnn::DataLayout::NHWC);
1605}
1606
Sadik Armagan1625efc2021-06-10 18:24:34 +01001607TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001608{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001609 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001610 defaultBackends, armnn::DataLayout::NHWC);
1611}
1612
Sadik Armagan1625efc2021-06-10 18:24:34 +01001613TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001614{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001615 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001616 defaultBackends, armnn::DataLayout::NHWC);
1617}
1618
Teresa Charlin6bc85252022-12-06 20:43:06 +00001619// Transpose
1620TEST_CASE("RefTransposeEndToEndTest")
1621{
1622 TransposeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1623}
1624
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001625// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001626TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001627{
1628 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1629}
1630
Sadik Armagan1625efc2021-06-10 18:24:34 +01001631TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001632{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001633 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001634}
1635
Teresa Charlince655882023-11-21 15:44:13 +00001636TEST_CASE("RefResizeBilinearEndToEndInt8NchwTest")
1637{
1638 ResizeBilinearEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NCHW);
1639}
1640
Sadik Armagan1625efc2021-06-10 18:24:34 +01001641TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001642{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001643 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001644}
1645
Sadik Armagan1625efc2021-06-10 18:24:34 +01001646TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001647{
1648 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1649}
1650
Sadik Armagan1625efc2021-06-10 18:24:34 +01001651TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001652{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001653 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001654}
1655
Teresa Charlince655882023-11-21 15:44:13 +00001656TEST_CASE("RefResizeBilinearEndToEndInt8NhwcTest")
1657{
1658 ResizeBilinearEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NHWC);
1659}
1660
Sadik Armagan1625efc2021-06-10 18:24:34 +01001661TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001662{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001663 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001664}
1665
1666// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001667TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001668{
1669 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1670}
1671
Sadik Armagan1625efc2021-06-10 18:24:34 +01001672TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001673{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001674 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001675}
1676
Teresa Charlince655882023-11-21 15:44:13 +00001677TEST_CASE("RefResizeNearestNeighborEndToEndInt8NchwTest")
1678{
1679 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NCHW);
1680}
1681
Sadik Armagan1625efc2021-06-10 18:24:34 +01001682TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001683{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001684 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001685}
1686
Sadik Armagan1625efc2021-06-10 18:24:34 +01001687TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001688{
1689 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1690}
1691
Sadik Armagan1625efc2021-06-10 18:24:34 +01001692TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001693{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001694 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001695}
1696
Teresa Charlince655882023-11-21 15:44:13 +00001697TEST_CASE("RefResizeNearestNeighborEndToEndInt8NhwcTest")
1698{
1699 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NHWC);
1700}
1701
Sadik Armagan1625efc2021-06-10 18:24:34 +01001702TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001703{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001704 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001705}
1706
Teresa Charlin28658bc2023-12-19 15:49:31 +00001707TEST_CASE("RefResizeNearestNeighborEndToEndFloatAlignCornersNhwcTest")
1708{
1709 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC, true, false);
1710}
1711
Teresa Charlince655882023-11-21 15:44:13 +00001712TEST_CASE("RefResizeNearestNeighborEndToEndFloatHalfPixelNhwcTest")
1713{
1714 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC, false, true);
1715}
1716
Teresa Charlin28658bc2023-12-19 15:49:31 +00001717TEST_CASE("RefResizeNearestNeighborEndToEndInt8AlignCornersNhwcTest")
1718{
1719 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NHWC, true, false);
1720}
1721
Teresa Charlin0587dd02023-12-21 09:05:39 +00001722TEST_CASE("RefResizeNearestNeighborEndToEndInt8HalfPixelNhwcTest")
Teresa Charlince655882023-11-21 15:44:13 +00001723{
1724 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NHWC, false, true);
1725}
1726
Declan-ARM1bf56cd2023-07-20 17:32:57 +01001727// ReverseV2
1728TEST_CASE("RefReverseV2EndToEndFloat16Test")
1729{
1730 ReverseV2EndToEnd<armnn::DataType::Float16>(defaultBackends);
1731}
1732
1733TEST_CASE("RefReverseV2EndToEndFloat32Test")
1734{
1735 ReverseV2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1736}
1737
1738TEST_CASE("RefReverseV2EndToEndQAsymmS8Test")
1739{
1740 ReverseV2EndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1741}
1742
1743TEST_CASE("RefReverseV2EndToEndQAsymmU8Test")
1744{
1745 ReverseV2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1746}
1747
1748TEST_CASE("RefReverseV2EndToEndQSymmS8Test")
1749{
1750 ReverseV2EndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1751}
1752
1753TEST_CASE("RefReverseV2EndToEndQSymmS16Test")
1754{
1755 ReverseV2EndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1756}
1757
1758TEST_CASE("RefReverseV2EndToEndSigned32Test")
1759{
1760 ReverseV2EndToEnd<armnn::DataType::Signed32>(defaultBackends);
1761}
1762
Sadik Armagan062e0e92019-10-14 10:31:43 +01001763// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001764TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001765{
1766 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1767}
1768
Sadik Armagan1625efc2021-06-10 18:24:34 +01001769TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001770{
1771 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1772}
1773
Sadik Armagan1625efc2021-06-10 18:24:34 +01001774TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001775{
1776 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1777}
1778
Sadik Armagan1625efc2021-06-10 18:24:34 +01001779TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001780{
1781 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1782}
1783
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001784// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001785TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001786{
1787 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1788}
1789
Sadik Armagan1625efc2021-06-10 18:24:34 +01001790TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001791{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001792 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001793}
1794
Sadik Armagan1625efc2021-06-10 18:24:34 +01001795TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001796{
1797 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1798}
1799
Sadik Armagan1625efc2021-06-10 18:24:34 +01001800TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001801{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001802 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001803}
1804
Sadik Armagan1625efc2021-06-10 18:24:34 +01001805TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001806{
1807 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1808}
1809
Sadik Armagan1625efc2021-06-10 18:24:34 +01001810TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001811{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001812 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001813}
1814
Sadik Armagan1625efc2021-06-10 18:24:34 +01001815TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001816{
1817 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1818}
1819
Sadik Armagan1625efc2021-06-10 18:24:34 +01001820TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001821{
1822
Derek Lambertif90c56d2020-01-10 17:14:08 +00001823 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001824}
1825
Sadik Armagan1625efc2021-06-10 18:24:34 +01001826TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001827{
1828 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1829}
1830
Sadik Armagan1625efc2021-06-10 18:24:34 +01001831TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001832{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001833 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001834}
1835
Sadik Armagan1625efc2021-06-10 18:24:34 +01001836TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001837{
1838 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1839}
1840
Sadik Armagan1625efc2021-06-10 18:24:34 +01001841TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001842{
1843
Derek Lambertif90c56d2020-01-10 17:14:08 +00001844 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001845}
1846
Sadik Armagan1625efc2021-06-10 18:24:34 +01001847TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001848{
1849 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1850}
1851
Sadik Armagan1625efc2021-06-10 18:24:34 +01001852TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001853{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001854 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001855}
1856
Sadik Armagan1625efc2021-06-10 18:24:34 +01001857TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001858{
1859 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1860}
1861
Sadik Armagan1625efc2021-06-10 18:24:34 +01001862TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001863{
1864
Derek Lambertif90c56d2020-01-10 17:14:08 +00001865 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001866}
1867
Sadik Armagan1625efc2021-06-10 18:24:34 +01001868TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001869{
1870 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1871}
1872
Sadik Armagan1625efc2021-06-10 18:24:34 +01001873TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001874{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001875 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001876}
1877
Sadik Armagan1625efc2021-06-10 18:24:34 +01001878TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001879{
1880 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1881}
1882
Sadik Armagan1625efc2021-06-10 18:24:34 +01001883TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001884{
1885
Derek Lambertif90c56d2020-01-10 17:14:08 +00001886 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001887}
1888
Sadik Armagan1625efc2021-06-10 18:24:34 +01001889TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001890{
1891 QLstmEndToEnd(defaultBackends);
1892}
1893
Sadik Armagan1625efc2021-06-10 18:24:34 +01001894TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001895{
1896 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1897}
1898
Sadik Armagan1625efc2021-06-10 18:24:34 +01001899TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001900{
1901 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1902}
1903
Sadik Armagan1625efc2021-06-10 18:24:34 +01001904TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001905{
1906 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1907}
1908
Sadik Armagan1625efc2021-06-10 18:24:34 +01001909TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001910{
1911 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1912}
1913
Sadik Armagan1625efc2021-06-10 18:24:34 +01001914TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001915{
1916 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1917}
1918
Sadik Armagan1625efc2021-06-10 18:24:34 +01001919TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001920{
1921 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1922}
1923
Teresa Charlinc17a35f2023-01-12 14:13:09 +00001924// Reduce
1925TEST_CASE("RefReduceEndToEndTest")
1926{
1927 ReduceEndToEnd<armnn::DataType::Float32>(defaultBackends);
1928}
1929
1930TEST_CASE("RefReduceEndToEndTestFloat16")
1931{
1932 ReduceEndToEnd<armnn::DataType::Float16>(defaultBackends);
1933}
1934
1935// Reshape
1936TEST_CASE("RefReshapeEndToEndTest")
1937{
1938 ReshapeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1939}
1940
1941TEST_CASE("RefReshapeEndToEndTestFloat16")
1942{
1943 ReshapeEndToEndFloat16<armnn::DataType::Float16>(defaultBackends);
1944}
1945
Declan-ARM5e90b832024-02-07 13:07:31 +00001946TEST_CASE("RefReshapeEndToEndTestInt32")
1947{
1948 ReshapeEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1949}
1950
1951TEST_CASE("RefReshapeEndToEndTestInt16")
1952{
1953 ReshapeEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1954}
1955
1956TEST_CASE("RefReshapeEndToEndTestUInt8")
1957{
1958 ReshapeEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1959}
1960
1961TEST_CASE("RefReshapeEndToEndTestInt8")
1962{
1963 ReshapeEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1964}
1965
1966// Force Import
David Monahan646bc8a2022-01-31 14:29:14 +00001967TEST_CASE("RefForceImportWithAlignedBuffersEndToEndTest")
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001968{
David Monahan646bc8a2022-01-31 14:29:14 +00001969 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1970}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001971
David Monahan646bc8a2022-01-31 14:29:14 +00001972TEST_CASE("RefForceImportWithMisalignedInputBuffersEndToEndTest")
1973{
1974 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1975}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001976
David Monahan646bc8a2022-01-31 14:29:14 +00001977TEST_CASE("RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1978{
1979 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1980}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001981
David Monahan646bc8a2022-01-31 14:29:14 +00001982TEST_CASE("RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1983{
1984 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001985}
1986
David Monahan16829712022-02-03 17:04:59 +00001987TEST_CASE("RefForceImportRepeatedInferencesEndToEndTest")
1988{
1989 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1990}
1991
1992TEST_CASE("RefForceImportRepeatedInferencesInvertedEndToEndTest")
1993{
1994 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1995}
1996
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001997#if !defined(__ANDROID__)
1998// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001999TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01002000{
David Monahan4f1e8e42019-09-04 09:22:10 +01002001 ImportNonAlignedInputPointerTest(defaultBackends);
2002}
2003
Sadik Armagan1625efc2021-06-10 18:24:34 +01002004TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01002005{
Ferran Balaguer83239f92019-09-19 11:49:25 +01002006 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01002007}
2008
Sadik Armagan1625efc2021-06-10 18:24:34 +01002009TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01002010{
2011 ImportAlignedPointerTest(defaultBackends);
2012}
2013
Sadik Armagan1625efc2021-06-10 18:24:34 +01002014TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002015{
2016 ImportOnlyWorkload(defaultBackends);
2017}
2018
Sadik Armagan1625efc2021-06-10 18:24:34 +01002019TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002020{
2021 ExportOnlyWorkload(defaultBackends);
2022}
2023
Sadik Armagan1625efc2021-06-10 18:24:34 +01002024TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002025{
2026 ImportAndExportWorkload(defaultBackends);
2027}
2028
Sadik Armagan1625efc2021-06-10 18:24:34 +01002029TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002030{
2031 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
2032}
2033
Ryan OShea980446b2023-06-08 16:23:28 +01002034// Slice
2035TEST_CASE("RefSliceEndtoEndTestFloat32")
2036{
2037 SliceEndToEnd<DataType::Float32>(defaultBackends);
2038}
2039
2040TEST_CASE("RefSliceEndtoEndTestInt32")
2041{
2042 SliceEndToEnd<DataType::Signed32>(defaultBackends);
2043}
2044
2045TEST_CASE("RefSliceEndtoEndTestFloat16")
2046{
2047 SliceEndToEndFloat16<DataType::Float16>(defaultBackends);
2048}
2049
Sadik Armagan1625efc2021-06-10 18:24:34 +01002050TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00002051{
2052 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
2053}
2054
Sadik Armagan1625efc2021-06-10 18:24:34 +01002055TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01002056{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01002057 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01002058}
Finn Williamsb8181f72021-04-07 10:23:21 +01002059
Sadik Armagan1625efc2021-06-10 18:24:34 +01002060TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01002061{
2062 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
2063}
Keith Davise813d672021-04-22 10:10:34 +01002064
Sadik Armagan1625efc2021-06-10 18:24:34 +01002065TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01002066{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01002067 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01002068}
Mike Kelly3ec30772023-03-08 13:47:17 +00002069
2070TEST_CASE("RefAddEndToEndTestFloat32")
2071{
2072 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
2073}
2074TEST_CASE("RefAddEndToEndTestUint8")
2075{
2076 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Add);
2077}
Tracy Narinee7d27852024-01-26 09:13:19 +00002078TEST_CASE("RefAddEndToEndTestFloat32Simple3D")
2079{
2080 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
2081}
2082TEST_CASE("RefAddEndToEndTestFloat16Simple3D")
2083{
2084 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(defaultBackends, BinaryOperation::Add);
2085}
Mike Kelly3ec30772023-03-08 13:47:17 +00002086TEST_CASE("RefDivEndToEndTestFloat32")
2087{
2088 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Div);
2089}
2090TEST_CASE("RefDivEndToEndTestUint8")
2091{
2092 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Div);
2093}
2094TEST_CASE("RefMulEndToEndTestFloat32")
2095{
2096 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Mul);
2097}
2098TEST_CASE("RefMulEndToEndTestUint8")
2099{
2100 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Mul);
2101}
2102TEST_CASE("RefSubEndToEndTestFloat32")
2103{
2104 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
2105}
2106TEST_CASE("RefSubEndToEndTestUint8")
2107{
2108 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Sub);
2109}
John Mcloughlin829e13e2024-01-31 11:00:27 +00002110TEST_CASE("RefSubEndToEndTestFloat32Simple3D")
2111{
2112 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
2113}
2114TEST_CASE("RefSubEndToEndTestFloat16Simple3D")
2115{
2116 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(defaultBackends, BinaryOperation::Sub);
2117}
Mike Kelly3ec30772023-03-08 13:47:17 +00002118TEST_CASE("RefMaximumEndToEndTestFloat32")
2119{
2120 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Maximum);
2121}
2122TEST_CASE("RefMaximumEndToEndTestUint8")
2123{
2124 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Maximum);
2125}
2126TEST_CASE("RefMinimumEndToEndTestFloat32")
2127{
2128 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Minimum);
2129}
2130TEST_CASE("RefMinimumEndToEndTestUint8")
2131{
2132 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Minimum);
2133}
John Mcloughlin0ec00872023-05-15 17:03:49 +01002134TEST_CASE("RefPowerEndToEndTestFloat32")
2135{
2136 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Power);
2137}
2138TEST_CASE("RefPowerEndToEndTestUint8")
2139{
2140 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Power);
2141}
2142TEST_CASE("RefSquaredDifferenceEndToEndTestFloat32")
2143{
2144 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::SqDiff);
2145}
2146TEST_CASE("RefSquaredDifferenceEndToEndTestUint8")
2147{
2148 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::SqDiff);
2149}
Mike Kelly4cc341c2023-07-07 15:43:06 +01002150
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01002151#endif
2152
Mike Kelly4cc341c2023-07-07 15:43:06 +01002153// Backend Optimization Tests
2154TEST_CASE("RefReshapeRemovalSimpleCaseEndToEnd")
2155{
2156 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(defaultBackends);
2157}
2158
2159TEST_CASE("RefReshapeRemovalNCHWFirstEndToEnd")
2160{
2161 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
2162}
2163
2164TEST_CASE("RefReshapeRemovalNCHWSecondEndToEnd")
2165{
2166 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
2167}
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002168
2169// BroadcastTo
2170TEST_CASE("RefBroadcastToEndToEndFloat32")
2171{
2172 BroadcastToEndToEnd<armnn::DataType::Float32>(defaultBackends);
2173}
2174
Idriss Chaouch564c13d2023-09-01 17:58:38 +01002175TEST_CASE("RefBroadcastToEndToEndWithMultiplicationFloat32")
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002176{
Idriss Chaouch564c13d2023-09-01 17:58:38 +01002177 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2178 BinaryOperation::Mul);
2179}
2180
2181TEST_CASE("RefBroadcastToEndToEndWithDivisionFloat32")
2182{
2183 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2184 BinaryOperation::Div);
2185}
2186
2187TEST_CASE("RefBroadcastToEndToEndWithAdditionFloat32")
2188{
2189 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2190 BinaryOperation::Add);
2191}
2192
2193TEST_CASE("RefBroadcastToEndToEndWithSubtractionFloat32")
2194{
2195 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2196 BinaryOperation::Sub);
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002197}
Sadik Armagan1625efc2021-06-10 18:24:34 +01002198}