blob: 4bb3f2947a1774bf365aebfd26bee9b89912ba9e [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Teresa Charlinc17a35f2023-01-12 14:13:09 +00002// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tar70104002018-10-24 15:33:28 +01003// SPDX-License-Identifier: MIT
4//
5
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00006#include <backendsCommon/test/EndToEndTestImpl.hpp>
Narumol 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>
Teresa Charlin43baf502021-09-27 10:10:39 +010013#include <backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010014#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010015#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +000016#include <backendsCommon/test/Convolution2dEndToEndTestImpl.hpp>
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +010017#include <backendsCommon/test/Convolution3dEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010018#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010019#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010020#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
Mike Kelly3ec30772023-03-08 13:47:17 +000021#include <backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060022#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010023#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armaganf0a6dec2021-03-25 07:46:55 +000024#include <backendsCommon/test/FullyConnectedEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000025#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Teresa Charlinb2d3ec52022-04-12 22:07:09 +010026#include <backendsCommon/test/GatherNdEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010027#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010028#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010029#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010030#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010031#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Teresa Charlinc17a35f2023-01-12 14:13:09 +000032#include <backendsCommon/test/ReduceEndToEndTestImpl.hpp>
33#include <backendsCommon/test/ReshapeEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010034#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010035#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010036#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly386ff1a2021-03-29 15:04:50 +010037#include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010038#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000039#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010040
Sadik Armagan1625efc2021-06-10 18:24:34 +010041#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010042
Sadik Armagan1625efc2021-06-10 18:24:34 +010043TEST_SUITE("RefEndToEnd")
44{
narpra01b9546cf2018-11-20 15:21:28 +000045std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
46
David Monahand7fca092023-01-12 14:53:34 +000047// ElementwiseUnary
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010048// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010049TEST_CASE("RefAbsEndToEndTestFloat32")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010050{
josh minor4a3c6102020-01-06 16:40:46 -060051 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000052 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010053}
54
Sadik Armagan1625efc2021-06-10 18:24:34 +010055TEST_CASE("RefAbsEndToEndTestUint8")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010056{
josh minor4a3c6102020-01-06 16:40:46 -060057 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000058 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010059}
60
Sadik Armagan1625efc2021-06-10 18:24:34 +010061TEST_CASE("RefAbsEndToEndTestInt16")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010062{
josh minor4a3c6102020-01-06 16:40:46 -060063 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000064 UnaryOperation::Abs);
65}
66
67// Rsqrt
68TEST_CASE("RefRsqrtEndToEndTestFloat32")
69{
70 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
71 UnaryOperation::Rsqrt);
72}
73
74TEST_CASE("RefRsqrtEndToEndTestUint8")
75{
76 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
77 UnaryOperation::Rsqrt);
78}
79
80TEST_CASE("RefRsqrtEndToEndTestInt16")
81{
82 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
83 UnaryOperation::Rsqrt);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010084}
85
Ryan OShea3c2795a2022-11-03 17:51:52 +000086// Addition
87TEST_CASE("RefAdditionEndtoEndFloat32")
88{
89 AdditionEndToEnd<armnn::DataType::Float32>(defaultBackends);
90}
91
92TEST_CASE("RefAdditionEndtoEndUint8")
93{
94 AdditionEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
95}
96
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010097// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +010098TEST_CASE("ConstantUsage_Ref_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010099{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100100 CHECK(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100101}
102
Sadik Armagan1625efc2021-06-10 18:24:34 +0100103TEST_CASE("ConstantUsage_Ref_Uint8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100104{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100105 CHECK(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100106}
107
Sadik Armagan1625efc2021-06-10 18:24:34 +0100108TEST_CASE("Unsigned8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100109{
110 using namespace armnn;
111
112 // Create runtime in which test will run
113 armnn::IRuntime::CreationOptions options;
114 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
115
116 // Builds up the structure of the network.
117 armnn::INetworkPtr net(INetwork::Create());
118
119 IConnectableLayer* input = net->AddInputLayer(0, "input");
120 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
121 IConnectableLayer* output = net->AddOutputLayer(0, "output");
122
123 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
124 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
125
126 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000127 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100128 inputTensorInfo.SetQuantizationOffset(100);
129 inputTensorInfo.SetQuantizationScale(10000.0f);
130 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
131
Derek Lambertif90c56d2020-01-10 17:14:08 +0000132 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100133 outputTensorInfo.SetQuantizationOffset(0);
134 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
135 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
136
137 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000138 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100139
140 // Loads it into the runtime.
141 NetworkId netId;
142 auto error = runtime->LoadNetwork(netId, std::move(optNet));
Sadik Armagan1625efc2021-06-10 18:24:34 +0100143 CHECK(error == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100144
145 // Creates structures for input & output.
146 std::vector<uint8_t> inputData
147 {
148 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
149 };
150 std::vector<uint8_t> outputData(5);
151
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100152 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
153 inputTensorInfo2.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100154 armnn::InputTensors inputTensors
155 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100156 {0, armnn::ConstTensor(inputTensorInfo2, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100157 };
158 armnn::OutputTensors outputTensors
159 {
160 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
161 };
162
163 // Does the inference.
164 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
165
166 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100167 CHECK(outputData[0] == 0);
168 CHECK(outputData[1] == 0);
169 CHECK(outputData[2] == 0);
170 CHECK(outputData[3] == 255); // softmax has been saturated.
171 CHECK(outputData[4] == 0);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100172}
173
Sadik Armagan1625efc2021-06-10 18:24:34 +0100174TEST_CASE("TrivialAdd")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100175{
176 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
177
178 using namespace armnn;
179
180 // Create runtime in which test will run
181 armnn::IRuntime::CreationOptions options;
182 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
183
184 // Builds up the structure of the network.
185 armnn::INetworkPtr net(INetwork::Create());
186
187 IConnectableLayer* input1 = net->AddInputLayer(0);
188 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000189 IConnectableLayer* add = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Add));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100190 IConnectableLayer* output = net->AddOutputLayer(0);
191
192 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
193 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
194 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
195
196 // Sets the tensors in the network.
197 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
198 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
199 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
200 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
201
202 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000203 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100204
205 // Loads it into the runtime.
206 NetworkId netId;
207 runtime->LoadNetwork(netId, std::move(optNet));
208
209 // Creates structures for input & output - matching android nn test.
210 std::vector<float> input1Data
211 {
212 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
213 };
214 std::vector<float> input2Data
215 {
216 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
217 };
218 std::vector<float> outputData(12);
219
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100220 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
221 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100222 InputTensors inputTensors
223 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100224 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
225 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100226 };
227 OutputTensors outputTensors
228 {
229 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
230 };
231
232 // Does the inference.
233 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
234
235 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100236 CHECK(outputData[0] == 101);
237 CHECK(outputData[1] == 202);
238 CHECK(outputData[2] == 303);
239 CHECK(outputData[3] == 404);
240 CHECK(outputData[4] == 505);
241 CHECK(outputData[5] == 606);
242 CHECK(outputData[6] == 707);
243 CHECK(outputData[7] == 808);
244 CHECK(outputData[8] == 909);
245 CHECK(outputData[9] == 1010);
246 CHECK(outputData[10] == 1111);
247 CHECK(outputData[11] == 1212);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100248}
249
Sadik Armagan1625efc2021-06-10 18:24:34 +0100250TEST_CASE("MultipleOutputs")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100251{
252 using namespace armnn;
253
254 // Create runtime in which test will run
255 armnn::IRuntime::CreationOptions options;
256 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
257
258 // Builds up the structure of the network.
259 INetworkPtr net(INetwork::Create());
260
261 IConnectableLayer* input = net->AddInputLayer(0);
262
263 // ReLu1
264 ActivationDescriptor activation1Descriptor;
265 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
266 activation1Descriptor.m_A = 1.f;
267 activation1Descriptor.m_B = -1.f;
268 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
269
270 // ReLu6
271 ActivationDescriptor activation2Descriptor;
272 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
273 activation2Descriptor.m_A = 6.0f;
274 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
275
276 // BoundedReLu(min=2, max=5)
277 ActivationDescriptor activation3Descriptor;
278 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
279 activation3Descriptor.m_A = 5.0f;
280 activation3Descriptor.m_B = 2.0f;
281 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
282
283 IConnectableLayer* output1 = net->AddOutputLayer(0);
284 IConnectableLayer* output2 = net->AddOutputLayer(1);
285 IConnectableLayer* output3 = net->AddOutputLayer(2);
286
287 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
288 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
289 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
290
291 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
292 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
293 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
294
295 // Sets the tensors in the network.
296 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
297 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
298 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
299 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
300 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
301
302 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000303 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100304
305 // Loads it into the runtime.
306 NetworkId netId;
307 runtime->LoadNetwork(netId, std::move(optNet));
308
309 // Creates structures for input & output.
310 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 };
311
312 std::vector<float> output1Data(inputData.size());
313 std::vector<float> output2Data(inputData.size());
314 std::vector<float> output3Data(inputData.size());
315
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100316 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
317 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100318 InputTensors inputTensors
319 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100320 {0,armnn::ConstTensor(inputTensorInfo, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100321 };
322 OutputTensors outputTensors
323 {
324 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
325 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
326 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
327 };
328
329 // Does the inference.
330 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
331
332 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100333 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
334 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
335 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 +0100336}
337
Sadik Armagan1625efc2021-06-10 18:24:34 +0100338TEST_CASE("TrivialMin")
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000339{
340 using namespace armnn;
341
342 // Create runtime in which test will run
343 armnn::IRuntime::CreationOptions options;
344 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
345
346 // Builds up the structure of the network.
347 armnn::INetworkPtr net(INetwork::Create());
348
349 IConnectableLayer* input1 = net->AddInputLayer(0);
350 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000351 IConnectableLayer* min = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Minimum));
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000352 IConnectableLayer* output = net->AddOutputLayer(0);
353
354 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
355 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
356 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
357
358 // Sets the tensors in the network.
359 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
360 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
361 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
362 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
363
364 // optimize the network
365 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
366
367 // Loads it into the runtime.
368 NetworkId netId;
369 runtime->LoadNetwork(netId, std::move(optNet));
370
371 // Creates structures for input & output - matching android nn test.
372 std::vector<float> input1Data
373 {
374 1.0f, 2.0f, 3.0f, 4.0f
375 };
376 std::vector<float> input2Data
377 {
378 2.0f, 1.0f, 5.0f, 2.0f
379 };
380 std::vector<float> outputData(4);
381
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100382 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
383 inputTensorInfo.SetConstant(true);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000384 InputTensors inputTensors
385 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100386 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
387 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000388 };
389 OutputTensors outputTensors
390 {
391 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
392 };
393
394 // Does the inference.
395 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
396
397 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100398 CHECK(outputData[0] == 1);
399 CHECK(outputData[1] == 1);
400 CHECK(outputData[2] == 3);
401 CHECK(outputData[3] == 2);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000402}
403
Sadik Armagan1625efc2021-06-10 18:24:34 +0100404TEST_CASE("RefEqualSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000405{
kevmay012b4d88e2019-01-24 14:05:09 +0000406 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
407 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000408
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100409 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
410 ComparisonOperation::Equal,
411 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000412}
413
Sadik Armagan1625efc2021-06-10 18:24:34 +0100414TEST_CASE("RefGreaterSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000415{
kevmay012b4d88e2019-01-24 14:05:09 +0000416 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
417 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000418
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100419 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
420 ComparisonOperation::Greater,
421 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000422}
423
Sadik Armagan1625efc2021-06-10 18:24:34 +0100424TEST_CASE("RefEqualSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000425{
426 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
427 0, 0, 0, 0, 1, 1, 1, 1 });
428
Derek Lambertif90c56d2020-01-10 17:14:08 +0000429 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100430 ComparisonOperation::Equal,
431 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000432}
433
Sadik Armagan1625efc2021-06-10 18:24:34 +0100434TEST_CASE("RefGreaterSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000435{
436 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
437 0, 0, 0, 0, 0, 0, 0, 0 });
438
Derek Lambertif90c56d2020-01-10 17:14:08 +0000439 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100440 ComparisonOperation::Greater,
441 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000442}
443
Sadik Armagan1625efc2021-06-10 18:24:34 +0100444TEST_CASE("RefEqualBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000445{
kevmay012b4d88e2019-01-24 14:05:09 +0000446 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
447 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000448
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100449 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
450 ComparisonOperation::Equal,
451 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000452}
453
Sadik Armagan1625efc2021-06-10 18:24:34 +0100454TEST_CASE("RefGreaterBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000455{
kevmay012b4d88e2019-01-24 14:05:09 +0000456 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
457 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000458
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100459 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
460 ComparisonOperation::Greater,
461 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000462}
463
Sadik Armagan1625efc2021-06-10 18:24:34 +0100464TEST_CASE("RefEqualBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000465{
466 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
467 0, 0, 0, 0, 0, 0 });
468
Derek Lambertif90c56d2020-01-10 17:14:08 +0000469 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100470 ComparisonOperation::Equal,
471 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000472}
473
Sadik Armagan1625efc2021-06-10 18:24:34 +0100474TEST_CASE("RefGreaterBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000475{
476 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
477 1, 1, 1, 1, 1, 1 });
478
Derek Lambertif90c56d2020-01-10 17:14:08 +0000479 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100480 ComparisonOperation::Greater,
481 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000482}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000483
Teresa Charlina38da592022-10-31 22:09:23 +0000484TEST_CASE("RefBatchMatMulEndToEndFloat32Test")
485{
486 BatchMatMulEndToEnd<armnn::DataType::Float32>(defaultBackends);
487}
488
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000489TEST_CASE("RefBatchMatMulEndToEndInt8Test")
490{
491 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
492}
493
Sadik Armagan1625efc2021-06-10 18:24:34 +0100494TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100495{
496 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
497}
498
Sadik Armagan1625efc2021-06-10 18:24:34 +0100499TEST_CASE("RefBatchToSpaceNdEndToEndUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100500{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000501 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100502}
503
Sadik Armagan1625efc2021-06-10 18:24:34 +0100504TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100505{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000506 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100507}
508
Sadik Armagan1625efc2021-06-10 18:24:34 +0100509TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100510{
511 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
512}
513
Sadik Armagan1625efc2021-06-10 18:24:34 +0100514TEST_CASE("RefBatchToSpaceNdEndToEndUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100515{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000516 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100517}
518
Sadik Armagan1625efc2021-06-10 18:24:34 +0100519TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100520{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000521 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100522}
523
Sadik Armagan1625efc2021-06-10 18:24:34 +0100524TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100525{
526 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
527}
528
Sadik Armagan1625efc2021-06-10 18:24:34 +0100529TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100530{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000531 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100532}
533
Sadik Armagan1625efc2021-06-10 18:24:34 +0100534TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100535{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000536 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100537}
538
Sadik Armagan1625efc2021-06-10 18:24:34 +0100539TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100540{
541 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
542}
543
Sadik Armagan1625efc2021-06-10 18:24:34 +0100544TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100545{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000546 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100547}
548
Sadik Armagan1625efc2021-06-10 18:24:34 +0100549TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100550{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000551 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100552}
553
Teresa Charlin43baf502021-09-27 10:10:39 +0100554TEST_CASE("RefChannelShuffleFloatTest")
555{
556 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
557}
558
559TEST_CASE("RefChannelShuffleUint8Test")
560{
561 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
562}
563
Sadik Armagan1625efc2021-06-10 18:24:34 +0100564TEST_CASE("RefConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000565{
Jim Flynne242f2d2019-05-22 14:24:13 +0100566 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000567}
568
Sadik Armagan1625efc2021-06-10 18:24:34 +0100569TEST_CASE("RefConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000570{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000571 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000572}
573
Sadik Armagan1625efc2021-06-10 18:24:34 +0100574TEST_CASE("RefConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000575{
Jim Flynne242f2d2019-05-22 14:24:13 +0100576 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000577}
578
Sadik Armagan1625efc2021-06-10 18:24:34 +0100579TEST_CASE("RefConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000580{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000581 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000582}
583
Sadik Armagan1625efc2021-06-10 18:24:34 +0100584TEST_CASE("RefConcatEndToEndDim2Test")
narpra01b9546cf2018-11-20 15:21:28 +0000585{
Jim Flynne242f2d2019-05-22 14:24:13 +0100586 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000587}
588
Sadik Armagan1625efc2021-06-10 18:24:34 +0100589TEST_CASE("RefConcatEndToEndDim2Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000590{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000591 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000592}
593
Sadik Armagan1625efc2021-06-10 18:24:34 +0100594TEST_CASE("RefConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000595{
Jim Flynne242f2d2019-05-22 14:24:13 +0100596 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000597}
598
Sadik Armagan1625efc2021-06-10 18:24:34 +0100599TEST_CASE("RefConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000600{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000601 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000602}
603
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +0000604TEST_CASE("RefConvolution2dFloat32Test")
605{
606 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
607}
608
609TEST_CASE("RefConvolution2dNchwFloat32Test")
610{
611 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
612}
613
614TEST_CASE("RefConvolution2dFloat16Test")
615{
616 Convolution2dEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
617}
618
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +0100619TEST_CASE("RefConvolution3dFloat32Test")
620{
621 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
622 armnn::DataLayout::NDHWC);
623}
624
625TEST_CASE("RefConvolution3dNcdhwFloat32Test")
626{
627 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
628 armnn::DataLayout::NCDHW);
629}
630
631TEST_CASE("RefConvolution3dFloat16Test")
632{
633 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
634 armnn::DataLayout::NDHWC);
635}
636
637TEST_CASE("RefConvolution3dUint8Test")
638{
639 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
640 armnn::DataLayout::NDHWC);
641}
642
643TEST_CASE("RefConvolution3dInt8Test")
644{
645 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
646 armnn::DataLayout::NDHWC);
647}
648
Sadik Armagan1625efc2021-06-10 18:24:34 +0100649TEST_CASE("RefEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000650{
651 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
652}
653
Sadik Armagan1625efc2021-06-10 18:24:34 +0100654TEST_CASE("RefEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000655{
656 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
657}
658
Sadik Armagan1625efc2021-06-10 18:24:34 +0100659TEST_CASE("RefEluEndToEndTestQAsymmS8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000660{
661 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
662}
663
Sadik Armagan1625efc2021-06-10 18:24:34 +0100664TEST_CASE("RefEluEndToEndTestQAsymmU8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000665{
666 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
667}
668
Sadik Armagan1625efc2021-06-10 18:24:34 +0100669TEST_CASE("RefEluEndToEndTestQSymmS16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000670{
671 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
672}
673
Sadik Armagan1625efc2021-06-10 18:24:34 +0100674TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100675{
676 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
677}
678
Sadik Armagan1625efc2021-06-10 18:24:34 +0100679TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100680{
681 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
682}
Teresa Charlin44088502020-07-27 11:27:19 +0100683
Sadik Armagan1625efc2021-06-10 18:24:34 +0100684TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100685{
686 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
687}
688
Matthew Sloyan81beae32021-07-13 19:46:11 +0100689TEST_CASE("RefFullyConnectedEndToEndTestFloat32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000690{
691 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
692}
693
Matthew Sloyan81beae32021-07-13 19:46:11 +0100694TEST_CASE("RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
695{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100696 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100697}
698
699TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
700{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100701 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
Cathal Corbett521032f2021-10-07 11:46:40 +0100702}
703
704TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
705{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100706 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, true, true, false);
707}
708
709TEST_CASE("RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
710{
711 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, false, true, true);
712}
713
714TEST_CASE("RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
715{
716 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, true, false, true);
717}
718
719TEST_CASE("RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
720{
721 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, false, false, true);
722}
723
724TEST_CASE("RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
725{
726 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, false, false, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100727}
728
Sadik Armagan1625efc2021-06-10 18:24:34 +0100729TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000730{
731 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
732}
733
Sadik Armagan1625efc2021-06-10 18:24:34 +0100734TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000735{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000736 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000737}
738
Sadik Armagan1625efc2021-06-10 18:24:34 +0100739TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100740{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000741 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100742}
743
Sadik Armagan1625efc2021-06-10 18:24:34 +0100744TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000745{
746 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
747}
748
Sadik Armagan1625efc2021-06-10 18:24:34 +0100749TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000750{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000751 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000752}
753
Sadik Armagan1625efc2021-06-10 18:24:34 +0100754TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100755{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000756 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100757}
758
Teresa Charlinb2d3ec52022-04-12 22:07:09 +0100759TEST_CASE("RefGatherNdFloatTest")
760{
761 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
762}
763
764TEST_CASE("RefGatherNdUint8Test")
765{
766 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
767}
768
769TEST_CASE("RefGatherNdInt16Test")
770{
771 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
772}
773
774TEST_CASE("RefGatherNdMultiDimFloatTest")
775{
776 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
777}
778
779TEST_CASE("RefGatherNdMultiDimUint8Test")
780{
781 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
782}
783
784TEST_CASE("RefGatherNdMultiDimInt16Test")
785{
786 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
787}
788
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100789// DepthToSpace
Sadik Armagan1625efc2021-06-10 18:24:34 +0100790TEST_CASE("DephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100791{
792 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
793}
794
Sadik Armagan1625efc2021-06-10 18:24:34 +0100795TEST_CASE("DephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100796{
797 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
798}
799
Sadik Armagan1625efc2021-06-10 18:24:34 +0100800TEST_CASE("DephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100801{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000802 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100803}
804
Sadik Armagan1625efc2021-06-10 18:24:34 +0100805TEST_CASE("DephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100806{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000807 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100808}
809
Sadik Armagan1625efc2021-06-10 18:24:34 +0100810TEST_CASE("DephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100811{
812 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
813}
814
Sadik Armagan1625efc2021-06-10 18:24:34 +0100815TEST_CASE("DephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100816{
817 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
818}
819
Sadik Armagan1625efc2021-06-10 18:24:34 +0100820TEST_CASE("DephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100821{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000822 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100823}
824
Sadik Armagan1625efc2021-06-10 18:24:34 +0100825TEST_CASE("DephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100826{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000827 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100828}
829
830// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100831TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100832{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000833 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100834}
835
Sadik Armagan1625efc2021-06-10 18:24:34 +0100836TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100837{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000838 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100839}
840
Sadik Armagan1625efc2021-06-10 18:24:34 +0100841TEST_CASE("DequantizeEndToEndSimpleInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100842{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000843 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100844}
845
Sadik Armagan1625efc2021-06-10 18:24:34 +0100846TEST_CASE("DequantizeEndToEndOffsetInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100847{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000848 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100849}
850
Sadik Armagan1625efc2021-06-10 18:24:34 +0100851TEST_CASE("RefDetectionPostProcessRegularNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000852{
853 std::vector<float> boxEncodings({
854 0.0f, 0.0f, 0.0f, 0.0f,
855 0.0f, 1.0f, 0.0f, 0.0f,
856 0.0f, -1.0f, 0.0f, 0.0f,
857 0.0f, 0.0f, 0.0f, 0.0f,
858 0.0f, 1.0f, 0.0f, 0.0f,
859 0.0f, 0.0f, 0.0f, 0.0f
860 });
861 std::vector<float> scores({
862 0.0f, 0.9f, 0.8f,
863 0.0f, 0.75f, 0.72f,
864 0.0f, 0.6f, 0.5f,
865 0.0f, 0.93f, 0.95f,
866 0.0f, 0.5f, 0.4f,
867 0.0f, 0.3f, 0.2f
868 });
869 std::vector<float> anchors({
870 0.5f, 0.5f, 1.0f, 1.0f,
871 0.5f, 0.5f, 1.0f, 1.0f,
872 0.5f, 0.5f, 1.0f, 1.0f,
873 0.5f, 10.5f, 1.0f, 1.0f,
874 0.5f, 10.5f, 1.0f, 1.0f,
875 0.5f, 100.5f, 1.0f, 1.0f
876 });
877 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
878}
879
880inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
881{
882 for (size_t i = 0; i < info.GetNumElements(); i++)
883 {
884 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
885 }
886}
887
Sadik Armagan1625efc2021-06-10 18:24:34 +0100888TEST_CASE("RefDetectionPostProcessRegularNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000889{
890 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
891 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
892 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
893
894 boxEncodingsInfo.SetQuantizationScale(1.0f);
895 boxEncodingsInfo.SetQuantizationOffset(1);
896 scoresInfo.SetQuantizationScale(0.01f);
897 scoresInfo.SetQuantizationOffset(0);
898 anchorsInfo.SetQuantizationScale(0.5f);
899 anchorsInfo.SetQuantizationOffset(0);
900
901 std::vector<float> boxEncodings({
902 0.0f, 0.0f, 0.0f, 0.0f,
903 0.0f, 1.0f, 0.0f, 0.0f,
904 0.0f, -1.0f, 0.0f, 0.0f,
905 0.0f, 0.0f, 0.0f, 0.0f,
906 0.0f, 1.0f, 0.0f, 0.0f,
907 0.0f, 0.0f, 0.0f, 0.0f
908 });
909 std::vector<float> scores({
910 0.0f, 0.9f, 0.8f,
911 0.0f, 0.75f, 0.72f,
912 0.0f, 0.6f, 0.5f,
913 0.0f, 0.93f, 0.95f,
914 0.0f, 0.5f, 0.4f,
915 0.0f, 0.3f, 0.2f
916 });
917 std::vector<float> anchors({
918 0.5f, 0.5f, 1.0f, 1.0f,
919 0.5f, 0.5f, 1.0f, 1.0f,
920 0.5f, 0.5f, 1.0f, 1.0f,
921 0.5f, 10.5f, 1.0f, 1.0f,
922 0.5f, 10.5f, 1.0f, 1.0f,
923 0.5f, 100.5f, 1.0f, 1.0f
924 });
925
926 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
927 std::vector<uint8_t> qScores(scores.size(), 0);
928 std::vector<uint8_t> qAnchors(anchors.size(), 0);
929 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
930 QuantizeData(qScores.data(), scores.data(), scoresInfo);
931 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000932 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000933 qScores, qAnchors,
934 1.0f, 1, 0.01f, 0, 0.5f, 0);
935}
936
Sadik Armagan1625efc2021-06-10 18:24:34 +0100937TEST_CASE("RefDetectionPostProcessFastNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000938{
939 std::vector<float> boxEncodings({
940 0.0f, 0.0f, 0.0f, 0.0f,
941 0.0f, 1.0f, 0.0f, 0.0f,
942 0.0f, -1.0f, 0.0f, 0.0f,
943 0.0f, 0.0f, 0.0f, 0.0f,
944 0.0f, 1.0f, 0.0f, 0.0f,
945 0.0f, 0.0f, 0.0f, 0.0f
946 });
947 std::vector<float> scores({
948 0.0f, 0.9f, 0.8f,
949 0.0f, 0.75f, 0.72f,
950 0.0f, 0.6f, 0.5f,
951 0.0f, 0.93f, 0.95f,
952 0.0f, 0.5f, 0.4f,
953 0.0f, 0.3f, 0.2f
954 });
955 std::vector<float> anchors({
956 0.5f, 0.5f, 1.0f, 1.0f,
957 0.5f, 0.5f, 1.0f, 1.0f,
958 0.5f, 0.5f, 1.0f, 1.0f,
959 0.5f, 10.5f, 1.0f, 1.0f,
960 0.5f, 10.5f, 1.0f, 1.0f,
961 0.5f, 100.5f, 1.0f, 1.0f
962 });
963 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
964}
965
Sadik Armagan1625efc2021-06-10 18:24:34 +0100966TEST_CASE("RefDetectionPostProcessFastNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000967{
968 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
969 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
970 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
971
972 boxEncodingsInfo.SetQuantizationScale(1.0f);
973 boxEncodingsInfo.SetQuantizationOffset(1);
974 scoresInfo.SetQuantizationScale(0.01f);
975 scoresInfo.SetQuantizationOffset(0);
976 anchorsInfo.SetQuantizationScale(0.5f);
977 anchorsInfo.SetQuantizationOffset(0);
978
979 std::vector<float> boxEncodings({
980 0.0f, 0.0f, 0.0f, 0.0f,
981 0.0f, 1.0f, 0.0f, 0.0f,
982 0.0f, -1.0f, 0.0f, 0.0f,
983 0.0f, 0.0f, 0.0f, 0.0f,
984 0.0f, 1.0f, 0.0f, 0.0f,
985 0.0f, 0.0f, 0.0f, 0.0f
986 });
987 std::vector<float> scores({
988 0.0f, 0.9f, 0.8f,
989 0.0f, 0.75f, 0.72f,
990 0.0f, 0.6f, 0.5f,
991 0.0f, 0.93f, 0.95f,
992 0.0f, 0.5f, 0.4f,
993 0.0f, 0.3f, 0.2f
994 });
995 std::vector<float> anchors({
996 0.5f, 0.5f, 1.0f, 1.0f,
997 0.5f, 0.5f, 1.0f, 1.0f,
998 0.5f, 0.5f, 1.0f, 1.0f,
999 0.5f, 10.5f, 1.0f, 1.0f,
1000 0.5f, 10.5f, 1.0f, 1.0f,
1001 0.5f, 100.5f, 1.0f, 1.0f
1002 });
1003
1004 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
1005 std::vector<uint8_t> qScores(scores.size(), 0);
1006 std::vector<uint8_t> qAnchors(anchors.size(), 0);
1007 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
1008 QuantizeData(qScores.data(), scores.data(), scoresInfo);
1009 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +00001010 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +00001011 qScores, qAnchors,
1012 1.0f, 1, 0.01f, 0, 0.5f, 0);
1013}
1014
Jan Eilersa83af7b2020-03-18 15:58:11 +00001015// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +01001016TEST_CASE("RefHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001017{
1018 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1019}
1020
Sadik Armagan1625efc2021-06-10 18:24:34 +01001021TEST_CASE("RefHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001022{
1023 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
1024}
1025
Sadik Armagan1625efc2021-06-10 18:24:34 +01001026TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001027{
1028 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
1029}
1030
Sadik Armagan1625efc2021-06-10 18:24:34 +01001031TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001032{
1033 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
1034}
1035
Sadik Armagan1625efc2021-06-10 18:24:34 +01001036TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001037{
1038 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
1039}
1040
Sadik Armagan20bea002019-10-16 09:29:38 +01001041// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001042TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +01001043{
1044 LogSoftmaxEndToEndTest(defaultBackends);
1045}
1046
Sadik Armagan1625efc2021-06-10 18:24:34 +01001047TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +01001048{
1049 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1050}
1051
Sadik Armagan1625efc2021-06-10 18:24:34 +01001052TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +01001053{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001054 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001055}
1056
Sadik Armagan1625efc2021-06-10 18:24:34 +01001057TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +01001058{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001059 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001060}
1061
Sadik Armagan1625efc2021-06-10 18:24:34 +01001062TEST_CASE("RefSpaceToDepthNhwcEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001063{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001064 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001065}
1066
Sadik Armagan1625efc2021-06-10 18:24:34 +01001067TEST_CASE("RefSpaceToDepthNchwEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001068{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001069 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001070}
1071
Sadik Armagan1625efc2021-06-10 18:24:34 +01001072TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001073{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001074 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001075}
1076
Sadik Armagan1625efc2021-06-10 18:24:34 +01001077TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001078{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001079 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001080}
1081
Sadik Armagan1625efc2021-06-10 18:24:34 +01001082TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001083{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001084 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001085}
1086
Sadik Armagan1625efc2021-06-10 18:24:34 +01001087TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001088{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001089 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001090}
1091
Sadik Armagan1625efc2021-06-10 18:24:34 +01001092TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001093{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001094 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001095}
1096
Sadik Armagan1625efc2021-06-10 18:24:34 +01001097TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001098{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001099 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001100}
1101
Sadik Armagan1625efc2021-06-10 18:24:34 +01001102TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001103{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001104 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001105}
1106
Sadik Armagan1625efc2021-06-10 18:24:34 +01001107TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001108{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001109 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001110}
1111
Sadik Armagan1625efc2021-06-10 18:24:34 +01001112TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001113{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001114 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001115}
1116
Sadik Armagan1625efc2021-06-10 18:24:34 +01001117TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001118{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001119 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1120}
1121
Sadik Armagan1625efc2021-06-10 18:24:34 +01001122TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001123{
1124 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1125}
1126
Sadik Armagan1625efc2021-06-10 18:24:34 +01001127TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001128{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001129 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001130}
1131
Sadik Armagan1625efc2021-06-10 18:24:34 +01001132TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001133{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001134 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001135}
1136
Sadik Armagan1625efc2021-06-10 18:24:34 +01001137TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001138{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001139 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001140}
1141
Sadik Armagan1625efc2021-06-10 18:24:34 +01001142TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001143{
1144 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1145}
1146
Sadik Armagan1625efc2021-06-10 18:24:34 +01001147TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001148{
1149 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1150}
1151
Sadik Armagan1625efc2021-06-10 18:24:34 +01001152TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001153{
1154 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1155}
1156
Sadik Armagan1625efc2021-06-10 18:24:34 +01001157TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001158{
1159 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1160}
1161
Sadik Armagan1625efc2021-06-10 18:24:34 +01001162TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001163{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001164 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001165}
1166
Sadik Armagan1625efc2021-06-10 18:24:34 +01001167TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001168{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001169 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001170}
1171
Sadik Armagan1625efc2021-06-10 18:24:34 +01001172TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001173{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001174 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001175}
1176
Sadik Armagan1625efc2021-06-10 18:24:34 +01001177TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001178{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001179 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001180}
1181
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001182// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001183TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001184{
1185 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1186 defaultBackends, armnn::DataLayout::NCHW);
1187}
1188
Sadik Armagan1625efc2021-06-10 18:24:34 +01001189TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001190{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001191 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001192 defaultBackends, armnn::DataLayout::NCHW);
1193}
1194
Sadik Armagan1625efc2021-06-10 18:24:34 +01001195TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001196{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001197 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001198 defaultBackends, armnn::DataLayout::NCHW);
1199}
1200
Sadik Armagan1625efc2021-06-10 18:24:34 +01001201TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001202{
1203 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1204 defaultBackends, armnn::DataLayout::NHWC);
1205}
1206
Sadik Armagan1625efc2021-06-10 18:24:34 +01001207TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001208{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001209 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001210 defaultBackends, armnn::DataLayout::NHWC);
1211}
1212
Sadik Armagan1625efc2021-06-10 18:24:34 +01001213TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001214{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001215 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001216 defaultBackends, armnn::DataLayout::NHWC);
1217}
1218
Teresa Charlin6bc85252022-12-06 20:43:06 +00001219// Transpose
1220TEST_CASE("RefTransposeEndToEndTest")
1221{
1222 TransposeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1223}
1224
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001225// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001226TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001227{
1228 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1229}
1230
Sadik Armagan1625efc2021-06-10 18:24:34 +01001231TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001232{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001233 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001234}
1235
Sadik Armagan1625efc2021-06-10 18:24:34 +01001236TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001237{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001238 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001239}
1240
Sadik Armagan1625efc2021-06-10 18:24:34 +01001241TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001242{
1243 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1244}
1245
Sadik Armagan1625efc2021-06-10 18:24:34 +01001246TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001247{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001248 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001249}
1250
Sadik Armagan1625efc2021-06-10 18:24:34 +01001251TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001252{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001253 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001254}
1255
1256// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001257TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001258{
1259 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1260}
1261
Sadik Armagan1625efc2021-06-10 18:24:34 +01001262TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001263{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001264 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001265}
1266
Sadik Armagan1625efc2021-06-10 18:24:34 +01001267TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001268{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001269 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001270}
1271
Sadik Armagan1625efc2021-06-10 18:24:34 +01001272TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001273{
1274 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1275}
1276
Sadik Armagan1625efc2021-06-10 18:24:34 +01001277TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001278{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001279 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001280}
1281
Sadik Armagan1625efc2021-06-10 18:24:34 +01001282TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001283{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001284 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001285}
1286
Sadik Armagan062e0e92019-10-14 10:31:43 +01001287// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001288TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001289{
1290 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1291}
1292
Sadik Armagan1625efc2021-06-10 18:24:34 +01001293TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001294{
1295 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1296}
1297
Sadik Armagan1625efc2021-06-10 18:24:34 +01001298TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001299{
1300 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1301}
1302
Sadik Armagan1625efc2021-06-10 18:24:34 +01001303TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001304{
1305 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1306}
1307
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001308// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001309TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001310{
1311 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1312}
1313
Sadik Armagan1625efc2021-06-10 18:24:34 +01001314TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001315{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001316 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001317}
1318
Sadik Armagan1625efc2021-06-10 18:24:34 +01001319TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001320{
1321 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1322}
1323
Sadik Armagan1625efc2021-06-10 18:24:34 +01001324TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001325{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001326 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001327}
1328
Sadik Armagan1625efc2021-06-10 18:24:34 +01001329TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001330{
1331 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1332}
1333
Sadik Armagan1625efc2021-06-10 18:24:34 +01001334TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001335{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001336 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001337}
1338
Sadik Armagan1625efc2021-06-10 18:24:34 +01001339TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001340{
1341 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1342}
1343
Sadik Armagan1625efc2021-06-10 18:24:34 +01001344TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001345{
1346
Derek Lambertif90c56d2020-01-10 17:14:08 +00001347 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001348}
1349
Sadik Armagan1625efc2021-06-10 18:24:34 +01001350TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001351{
1352 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1353}
1354
Sadik Armagan1625efc2021-06-10 18:24:34 +01001355TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001356{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001357 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001358}
1359
Sadik Armagan1625efc2021-06-10 18:24:34 +01001360TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001361{
1362 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1363}
1364
Sadik Armagan1625efc2021-06-10 18:24:34 +01001365TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001366{
1367
Derek Lambertif90c56d2020-01-10 17:14:08 +00001368 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001369}
1370
Sadik Armagan1625efc2021-06-10 18:24:34 +01001371TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001372{
1373 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1374}
1375
Sadik Armagan1625efc2021-06-10 18:24:34 +01001376TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001377{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001378 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001379}
1380
Sadik Armagan1625efc2021-06-10 18:24:34 +01001381TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001382{
1383 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1384}
1385
Sadik Armagan1625efc2021-06-10 18:24:34 +01001386TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001387{
1388
Derek Lambertif90c56d2020-01-10 17:14:08 +00001389 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001390}
1391
Sadik Armagan1625efc2021-06-10 18:24:34 +01001392TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001393{
1394 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1395}
1396
Sadik Armagan1625efc2021-06-10 18:24:34 +01001397TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001398{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001399 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001400}
1401
Sadik Armagan1625efc2021-06-10 18:24:34 +01001402TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001403{
1404 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1405}
1406
Sadik Armagan1625efc2021-06-10 18:24:34 +01001407TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001408{
1409
Derek Lambertif90c56d2020-01-10 17:14:08 +00001410 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001411}
1412
Sadik Armagan1625efc2021-06-10 18:24:34 +01001413TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001414{
1415 QLstmEndToEnd(defaultBackends);
1416}
1417
Sadik Armagan1625efc2021-06-10 18:24:34 +01001418TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001419{
1420 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1421}
1422
Sadik Armagan1625efc2021-06-10 18:24:34 +01001423TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001424{
1425 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1426}
1427
Sadik Armagan1625efc2021-06-10 18:24:34 +01001428TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001429{
1430 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1431}
1432
Sadik Armagan1625efc2021-06-10 18:24:34 +01001433TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001434{
1435 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1436}
1437
Sadik Armagan1625efc2021-06-10 18:24:34 +01001438TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001439{
1440 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1441}
1442
Sadik Armagan1625efc2021-06-10 18:24:34 +01001443TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001444{
1445 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1446}
1447
Teresa Charlinc17a35f2023-01-12 14:13:09 +00001448// Reduce
1449TEST_CASE("RefReduceEndToEndTest")
1450{
1451 ReduceEndToEnd<armnn::DataType::Float32>(defaultBackends);
1452}
1453
1454TEST_CASE("RefReduceEndToEndTestFloat16")
1455{
1456 ReduceEndToEnd<armnn::DataType::Float16>(defaultBackends);
1457}
1458
1459// Reshape
1460TEST_CASE("RefReshapeEndToEndTest")
1461{
1462 ReshapeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1463}
1464
1465TEST_CASE("RefReshapeEndToEndTestFloat16")
1466{
1467 ReshapeEndToEndFloat16<armnn::DataType::Float16>(defaultBackends);
1468}
1469
David Monahan646bc8a2022-01-31 14:29:14 +00001470TEST_CASE("RefForceImportWithAlignedBuffersEndToEndTest")
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001471{
David Monahan646bc8a2022-01-31 14:29:14 +00001472 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1473}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001474
David Monahan646bc8a2022-01-31 14:29:14 +00001475TEST_CASE("RefForceImportWithMisalignedInputBuffersEndToEndTest")
1476{
1477 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1478}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001479
David Monahan646bc8a2022-01-31 14:29:14 +00001480TEST_CASE("RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1481{
1482 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1483}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001484
David Monahan646bc8a2022-01-31 14:29:14 +00001485TEST_CASE("RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1486{
1487 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001488}
1489
David Monahan16829712022-02-03 17:04:59 +00001490TEST_CASE("RefForceImportRepeatedInferencesEndToEndTest")
1491{
1492 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1493}
1494
1495TEST_CASE("RefForceImportRepeatedInferencesInvertedEndToEndTest")
1496{
1497 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1498}
1499
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001500#if !defined(__ANDROID__)
1501// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001502TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001503{
David Monahan4f1e8e42019-09-04 09:22:10 +01001504 ImportNonAlignedInputPointerTest(defaultBackends);
1505}
1506
Sadik Armagan1625efc2021-06-10 18:24:34 +01001507TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01001508{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001509 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001510}
1511
Sadik Armagan1625efc2021-06-10 18:24:34 +01001512TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001513{
1514 ImportAlignedPointerTest(defaultBackends);
1515}
1516
Sadik Armagan1625efc2021-06-10 18:24:34 +01001517TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001518{
1519 ImportOnlyWorkload(defaultBackends);
1520}
1521
Sadik Armagan1625efc2021-06-10 18:24:34 +01001522TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001523{
1524 ExportOnlyWorkload(defaultBackends);
1525}
1526
Sadik Armagan1625efc2021-06-10 18:24:34 +01001527TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001528{
1529 ImportAndExportWorkload(defaultBackends);
1530}
1531
Sadik Armagan1625efc2021-06-10 18:24:34 +01001532TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001533{
1534 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1535}
1536
Sadik Armagan1625efc2021-06-10 18:24:34 +01001537TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00001538{
1539 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1540}
1541
Sadik Armagan1625efc2021-06-10 18:24:34 +01001542TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01001543{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001544 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01001545}
Finn Williamsb8181f72021-04-07 10:23:21 +01001546
Sadik Armagan1625efc2021-06-10 18:24:34 +01001547TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01001548{
1549 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1550}
Keith Davise813d672021-04-22 10:10:34 +01001551
Sadik Armagan1625efc2021-06-10 18:24:34 +01001552TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01001553{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001554 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01001555}
Mike Kelly3ec30772023-03-08 13:47:17 +00001556
1557TEST_CASE("RefAddEndToEndTestFloat32")
1558{
1559 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
1560}
1561TEST_CASE("RefAddEndToEndTestUint8")
1562{
1563 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Add);
1564}
1565TEST_CASE("RefDivEndToEndTestFloat32")
1566{
1567 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Div);
1568}
1569TEST_CASE("RefDivEndToEndTestUint8")
1570{
1571 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Div);
1572}
1573TEST_CASE("RefMulEndToEndTestFloat32")
1574{
1575 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Mul);
1576}
1577TEST_CASE("RefMulEndToEndTestUint8")
1578{
1579 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Mul);
1580}
1581TEST_CASE("RefSubEndToEndTestFloat32")
1582{
1583 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
1584}
1585TEST_CASE("RefSubEndToEndTestUint8")
1586{
1587 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Sub);
1588}
1589TEST_CASE("RefMaximumEndToEndTestFloat32")
1590{
1591 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Maximum);
1592}
1593TEST_CASE("RefMaximumEndToEndTestUint8")
1594{
1595 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Maximum);
1596}
1597TEST_CASE("RefMinimumEndToEndTestFloat32")
1598{
1599 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Minimum);
1600}
1601TEST_CASE("RefMinimumEndToEndTestUint8")
1602{
1603 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Minimum);
1604}
John Mcloughlin0ec00872023-05-15 17:03:49 +01001605TEST_CASE("RefPowerEndToEndTestFloat32")
1606{
1607 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Power);
1608}
1609TEST_CASE("RefPowerEndToEndTestUint8")
1610{
1611 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Power);
1612}
1613TEST_CASE("RefSquaredDifferenceEndToEndTestFloat32")
1614{
1615 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::SqDiff);
1616}
1617TEST_CASE("RefSquaredDifferenceEndToEndTestUint8")
1618{
1619 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::SqDiff);
1620}
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001621#endif
1622
Sadik Armagan1625efc2021-06-10 18:24:34 +01001623}