blob: 13995f5c6f436316e85e1d3922edf1ebde54be70 [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>
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>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010020#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010021#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
Mike Kelly3ec30772023-03-08 13:47:17 +000022#include <backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060023#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010024#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armaganf0a6dec2021-03-25 07:46:55 +000025#include <backendsCommon/test/FullyConnectedEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000026#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Teresa Charlinb2d3ec52022-04-12 22:07:09 +010027#include <backendsCommon/test/GatherNdEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010028#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010029#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010030#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010031#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010032#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Teresa Charlinc17a35f2023-01-12 14:13:09 +000033#include <backendsCommon/test/ReduceEndToEndTestImpl.hpp>
34#include <backendsCommon/test/ReshapeEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010035#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Declan-ARM1bf56cd2023-07-20 17:32:57 +010036#include <backendsCommon/test/ReverseV2EndToEndTestImpl.hpp>
Ryan OShea980446b2023-06-08 16:23:28 +010037#include <backendsCommon/test/SliceEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010038#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010039#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly386ff1a2021-03-29 15:04:50 +010040#include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp>
Mike Kelly4cc341c2023-07-07 15:43:06 +010041#include <backendsCommon/test/SubgraphUtilsTest.hpp>
Cian McGriskin160edb32023-07-25 14:15:45 +010042#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010043#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000044#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010045
Sadik Armagan1625efc2021-06-10 18:24:34 +010046#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010047
Sadik Armagan1625efc2021-06-10 18:24:34 +010048TEST_SUITE("RefEndToEnd")
49{
narpra01b9546cf2018-11-20 15:21:28 +000050std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
51
David Monahand7fca092023-01-12 14:53:34 +000052// ElementwiseUnary
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010053// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010054TEST_CASE("RefAbsEndToEndTestFloat32")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010055{
josh minor4a3c6102020-01-06 16:40:46 -060056 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000057 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010058}
59
Sadik Armagan1625efc2021-06-10 18:24:34 +010060TEST_CASE("RefAbsEndToEndTestUint8")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010061{
josh minor4a3c6102020-01-06 16:40:46 -060062 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000063 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010064}
65
Sadik Armagan1625efc2021-06-10 18:24:34 +010066TEST_CASE("RefAbsEndToEndTestInt16")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010067{
josh minor4a3c6102020-01-06 16:40:46 -060068 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000069 UnaryOperation::Abs);
70}
71
72// Rsqrt
73TEST_CASE("RefRsqrtEndToEndTestFloat32")
74{
75 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
76 UnaryOperation::Rsqrt);
77}
78
79TEST_CASE("RefRsqrtEndToEndTestUint8")
80{
81 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
82 UnaryOperation::Rsqrt);
83}
84
85TEST_CASE("RefRsqrtEndToEndTestInt16")
86{
87 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
88 UnaryOperation::Rsqrt);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010089}
90
Ryan OShea3c2795a2022-11-03 17:51:52 +000091// Addition
92TEST_CASE("RefAdditionEndtoEndFloat32")
93{
94 AdditionEndToEnd<armnn::DataType::Float32>(defaultBackends);
95}
96
97TEST_CASE("RefAdditionEndtoEndUint8")
98{
99 AdditionEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
100}
101
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +0100102// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +0100103TEST_CASE("ConstantUsage_Ref_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100104{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100105 CHECK(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100106}
107
Sadik Armagan1625efc2021-06-10 18:24:34 +0100108TEST_CASE("ConstantUsage_Ref_Uint8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100109{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100110 CHECK(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100111}
112
Sadik Armagan1625efc2021-06-10 18:24:34 +0100113TEST_CASE("Unsigned8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100114{
115 using namespace armnn;
116
117 // Create runtime in which test will run
118 armnn::IRuntime::CreationOptions options;
119 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
120
121 // Builds up the structure of the network.
122 armnn::INetworkPtr net(INetwork::Create());
123
124 IConnectableLayer* input = net->AddInputLayer(0, "input");
125 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
126 IConnectableLayer* output = net->AddOutputLayer(0, "output");
127
128 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
129 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
130
131 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000132 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100133 inputTensorInfo.SetQuantizationOffset(100);
134 inputTensorInfo.SetQuantizationScale(10000.0f);
135 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
136
Derek Lambertif90c56d2020-01-10 17:14:08 +0000137 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100138 outputTensorInfo.SetQuantizationOffset(0);
139 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
140 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
141
142 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000143 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100144
145 // Loads it into the runtime.
146 NetworkId netId;
147 auto error = runtime->LoadNetwork(netId, std::move(optNet));
Sadik Armagan1625efc2021-06-10 18:24:34 +0100148 CHECK(error == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100149
150 // Creates structures for input & output.
151 std::vector<uint8_t> inputData
152 {
153 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
154 };
155 std::vector<uint8_t> outputData(5);
156
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100157 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
158 inputTensorInfo2.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100159 armnn::InputTensors inputTensors
160 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100161 {0, armnn::ConstTensor(inputTensorInfo2, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100162 };
163 armnn::OutputTensors outputTensors
164 {
165 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
166 };
167
168 // Does the inference.
169 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
170
171 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100172 CHECK(outputData[0] == 0);
173 CHECK(outputData[1] == 0);
174 CHECK(outputData[2] == 0);
175 CHECK(outputData[3] == 255); // softmax has been saturated.
176 CHECK(outputData[4] == 0);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100177}
178
Sadik Armagan1625efc2021-06-10 18:24:34 +0100179TEST_CASE("TrivialAdd")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100180{
181 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
182
183 using namespace armnn;
184
185 // Create runtime in which test will run
186 armnn::IRuntime::CreationOptions options;
187 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
188
189 // Builds up the structure of the network.
190 armnn::INetworkPtr net(INetwork::Create());
191
192 IConnectableLayer* input1 = net->AddInputLayer(0);
193 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000194 IConnectableLayer* add = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Add));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100195 IConnectableLayer* output = net->AddOutputLayer(0);
196
197 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
198 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
199 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
200
201 // Sets the tensors in the network.
202 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
203 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
204 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
205 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
206
207 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000208 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100209
210 // Loads it into the runtime.
211 NetworkId netId;
212 runtime->LoadNetwork(netId, std::move(optNet));
213
214 // Creates structures for input & output - matching android nn test.
215 std::vector<float> input1Data
216 {
217 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
218 };
219 std::vector<float> input2Data
220 {
221 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
222 };
223 std::vector<float> outputData(12);
224
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100225 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
226 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100227 InputTensors inputTensors
228 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100229 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
230 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100231 };
232 OutputTensors outputTensors
233 {
234 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
235 };
236
237 // Does the inference.
238 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
239
240 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100241 CHECK(outputData[0] == 101);
242 CHECK(outputData[1] == 202);
243 CHECK(outputData[2] == 303);
244 CHECK(outputData[3] == 404);
245 CHECK(outputData[4] == 505);
246 CHECK(outputData[5] == 606);
247 CHECK(outputData[6] == 707);
248 CHECK(outputData[7] == 808);
249 CHECK(outputData[8] == 909);
250 CHECK(outputData[9] == 1010);
251 CHECK(outputData[10] == 1111);
252 CHECK(outputData[11] == 1212);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100253}
254
Sadik Armagan1625efc2021-06-10 18:24:34 +0100255TEST_CASE("MultipleOutputs")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100256{
257 using namespace armnn;
258
259 // Create runtime in which test will run
260 armnn::IRuntime::CreationOptions options;
261 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
262
263 // Builds up the structure of the network.
264 INetworkPtr net(INetwork::Create());
265
266 IConnectableLayer* input = net->AddInputLayer(0);
267
268 // ReLu1
269 ActivationDescriptor activation1Descriptor;
270 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
271 activation1Descriptor.m_A = 1.f;
272 activation1Descriptor.m_B = -1.f;
273 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
274
275 // ReLu6
276 ActivationDescriptor activation2Descriptor;
277 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
278 activation2Descriptor.m_A = 6.0f;
279 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
280
281 // BoundedReLu(min=2, max=5)
282 ActivationDescriptor activation3Descriptor;
283 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
284 activation3Descriptor.m_A = 5.0f;
285 activation3Descriptor.m_B = 2.0f;
286 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
287
288 IConnectableLayer* output1 = net->AddOutputLayer(0);
289 IConnectableLayer* output2 = net->AddOutputLayer(1);
290 IConnectableLayer* output3 = net->AddOutputLayer(2);
291
292 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
293 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
294 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
295
296 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
297 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
298 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
299
300 // Sets the tensors in the network.
301 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
302 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
303 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
304 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
305 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
306
307 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000308 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100309
310 // Loads it into the runtime.
311 NetworkId netId;
312 runtime->LoadNetwork(netId, std::move(optNet));
313
314 // Creates structures for input & output.
315 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 };
316
317 std::vector<float> output1Data(inputData.size());
318 std::vector<float> output2Data(inputData.size());
319 std::vector<float> output3Data(inputData.size());
320
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100321 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
322 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100323 InputTensors inputTensors
324 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100325 {0,armnn::ConstTensor(inputTensorInfo, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100326 };
327 OutputTensors outputTensors
328 {
329 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
330 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
331 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
332 };
333
334 // Does the inference.
335 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
336
337 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100338 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
339 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
340 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 +0100341}
342
Sadik Armagan1625efc2021-06-10 18:24:34 +0100343TEST_CASE("TrivialMin")
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000344{
345 using namespace armnn;
346
347 // Create runtime in which test will run
348 armnn::IRuntime::CreationOptions options;
349 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
350
351 // Builds up the structure of the network.
352 armnn::INetworkPtr net(INetwork::Create());
353
354 IConnectableLayer* input1 = net->AddInputLayer(0);
355 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000356 IConnectableLayer* min = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Minimum));
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000357 IConnectableLayer* output = net->AddOutputLayer(0);
358
359 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
360 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
361 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
362
363 // Sets the tensors in the network.
364 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
365 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
366 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
367 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
368
369 // optimize the network
370 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
371
372 // Loads it into the runtime.
373 NetworkId netId;
374 runtime->LoadNetwork(netId, std::move(optNet));
375
376 // Creates structures for input & output - matching android nn test.
377 std::vector<float> input1Data
378 {
379 1.0f, 2.0f, 3.0f, 4.0f
380 };
381 std::vector<float> input2Data
382 {
383 2.0f, 1.0f, 5.0f, 2.0f
384 };
385 std::vector<float> outputData(4);
386
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100387 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
388 inputTensorInfo.SetConstant(true);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000389 InputTensors inputTensors
390 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100391 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
392 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000393 };
394 OutputTensors outputTensors
395 {
396 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
397 };
398
399 // Does the inference.
400 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
401
402 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100403 CHECK(outputData[0] == 1);
404 CHECK(outputData[1] == 1);
405 CHECK(outputData[2] == 3);
406 CHECK(outputData[3] == 2);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000407}
408
Sadik Armagan1625efc2021-06-10 18:24:34 +0100409TEST_CASE("RefEqualSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000410{
kevmay012b4d88e2019-01-24 14:05:09 +0000411 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
412 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000413
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100414 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
415 ComparisonOperation::Equal,
416 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000417}
418
Sadik Armagan1625efc2021-06-10 18:24:34 +0100419TEST_CASE("RefGreaterSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000420{
kevmay012b4d88e2019-01-24 14:05:09 +0000421 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
422 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000423
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100424 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
425 ComparisonOperation::Greater,
426 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000427}
428
Sadik Armagan1625efc2021-06-10 18:24:34 +0100429TEST_CASE("RefEqualSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000430{
431 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
432 0, 0, 0, 0, 1, 1, 1, 1 });
433
Derek Lambertif90c56d2020-01-10 17:14:08 +0000434 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100435 ComparisonOperation::Equal,
436 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000437}
438
Sadik Armagan1625efc2021-06-10 18:24:34 +0100439TEST_CASE("RefGreaterSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000440{
441 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
442 0, 0, 0, 0, 0, 0, 0, 0 });
443
Derek Lambertif90c56d2020-01-10 17:14:08 +0000444 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100445 ComparisonOperation::Greater,
446 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000447}
448
Sadik Armagan1625efc2021-06-10 18:24:34 +0100449TEST_CASE("RefEqualBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000450{
kevmay012b4d88e2019-01-24 14:05:09 +0000451 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
452 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000453
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100454 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
455 ComparisonOperation::Equal,
456 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000457}
458
Sadik Armagan1625efc2021-06-10 18:24:34 +0100459TEST_CASE("RefGreaterBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000460{
kevmay012b4d88e2019-01-24 14:05:09 +0000461 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
462 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000463
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100464 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
465 ComparisonOperation::Greater,
466 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000467}
468
Sadik Armagan1625efc2021-06-10 18:24:34 +0100469TEST_CASE("RefEqualBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000470{
471 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
472 0, 0, 0, 0, 0, 0 });
473
Derek Lambertif90c56d2020-01-10 17:14:08 +0000474 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100475 ComparisonOperation::Equal,
476 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000477}
478
Sadik Armagan1625efc2021-06-10 18:24:34 +0100479TEST_CASE("RefGreaterBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000480{
481 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
482 1, 1, 1, 1, 1, 1 });
483
Derek Lambertif90c56d2020-01-10 17:14:08 +0000484 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100485 ComparisonOperation::Greater,
486 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000487}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000488
Teresa Charlina38da592022-10-31 22:09:23 +0000489TEST_CASE("RefBatchMatMulEndToEndFloat32Test")
490{
491 BatchMatMulEndToEnd<armnn::DataType::Float32>(defaultBackends);
492}
493
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000494TEST_CASE("RefBatchMatMulEndToEndInt8Test")
495{
496 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
497}
498
Sadik Armagan1625efc2021-06-10 18:24:34 +0100499TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100500{
501 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
502}
503
Sadik Armagan1625efc2021-06-10 18:24:34 +0100504TEST_CASE("RefBatchToSpaceNdEndToEndUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100505{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000506 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100507}
508
Sadik Armagan1625efc2021-06-10 18:24:34 +0100509TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100510{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000511 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100512}
513
Sadik Armagan1625efc2021-06-10 18:24:34 +0100514TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100515{
516 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
517}
518
Sadik Armagan1625efc2021-06-10 18:24:34 +0100519TEST_CASE("RefBatchToSpaceNdEndToEndUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100520{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000521 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100522}
523
Sadik Armagan1625efc2021-06-10 18:24:34 +0100524TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100525{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000526 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100527}
528
Sadik Armagan1625efc2021-06-10 18:24:34 +0100529TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100530{
531 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
532}
533
Sadik Armagan1625efc2021-06-10 18:24:34 +0100534TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100535{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000536 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100537}
538
Sadik Armagan1625efc2021-06-10 18:24:34 +0100539TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100540{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000541 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100542}
543
Sadik Armagan1625efc2021-06-10 18:24:34 +0100544TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100545{
546 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
547}
548
Sadik Armagan1625efc2021-06-10 18:24:34 +0100549TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100550{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000551 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100552}
553
Sadik Armagan1625efc2021-06-10 18:24:34 +0100554TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100555{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000556 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100557}
558
Teresa Charlin43baf502021-09-27 10:10:39 +0100559TEST_CASE("RefChannelShuffleFloatTest")
560{
561 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
562}
563
564TEST_CASE("RefChannelShuffleUint8Test")
565{
566 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
567}
568
Sadik Armagan1625efc2021-06-10 18:24:34 +0100569TEST_CASE("RefConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000570{
Jim Flynne242f2d2019-05-22 14:24:13 +0100571 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000572}
573
Sadik Armagan1625efc2021-06-10 18:24:34 +0100574TEST_CASE("RefConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000575{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000576 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000577}
578
Sadik Armagan1625efc2021-06-10 18:24:34 +0100579TEST_CASE("RefConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000580{
Jim Flynne242f2d2019-05-22 14:24:13 +0100581 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000582}
583
Sadik Armagan1625efc2021-06-10 18:24:34 +0100584TEST_CASE("RefConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000585{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000586 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000587}
588
Sadik Armagan1625efc2021-06-10 18:24:34 +0100589TEST_CASE("RefConcatEndToEndDim2Test")
narpra01b9546cf2018-11-20 15:21:28 +0000590{
Jim Flynne242f2d2019-05-22 14:24:13 +0100591 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000592}
593
Sadik Armagan1625efc2021-06-10 18:24:34 +0100594TEST_CASE("RefConcatEndToEndDim2Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000595{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000596 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000597}
598
Sadik Armagan1625efc2021-06-10 18:24:34 +0100599TEST_CASE("RefConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000600{
Jim Flynne242f2d2019-05-22 14:24:13 +0100601 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000602}
603
Sadik Armagan1625efc2021-06-10 18:24:34 +0100604TEST_CASE("RefConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000605{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000606 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000607}
608
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +0000609TEST_CASE("RefConvolution2dFloat32Test")
610{
611 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
612}
613
614TEST_CASE("RefConvolution2dNchwFloat32Test")
615{
616 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
617}
618
619TEST_CASE("RefConvolution2dFloat16Test")
620{
621 Convolution2dEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
622}
623
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +0100624TEST_CASE("RefConvolution3dFloat32Test")
625{
626 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
627 armnn::DataLayout::NDHWC);
628}
629
630TEST_CASE("RefConvolution3dNcdhwFloat32Test")
631{
632 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
633 armnn::DataLayout::NCDHW);
634}
635
636TEST_CASE("RefConvolution3dFloat16Test")
637{
638 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
639 armnn::DataLayout::NDHWC);
640}
641
642TEST_CASE("RefConvolution3dUint8Test")
643{
644 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
645 armnn::DataLayout::NDHWC);
646}
647
648TEST_CASE("RefConvolution3dInt8Test")
649{
650 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
651 armnn::DataLayout::NDHWC);
652}
653
Sadik Armagan1625efc2021-06-10 18:24:34 +0100654TEST_CASE("RefEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000655{
656 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
657}
658
Sadik Armagan1625efc2021-06-10 18:24:34 +0100659TEST_CASE("RefEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000660{
661 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
662}
663
Sadik Armagan1625efc2021-06-10 18:24:34 +0100664TEST_CASE("RefEluEndToEndTestQAsymmS8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000665{
666 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
667}
668
Sadik Armagan1625efc2021-06-10 18:24:34 +0100669TEST_CASE("RefEluEndToEndTestQAsymmU8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000670{
671 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
672}
673
Sadik Armagan1625efc2021-06-10 18:24:34 +0100674TEST_CASE("RefEluEndToEndTestQSymmS16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000675{
676 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
677}
678
Sadik Armagan1625efc2021-06-10 18:24:34 +0100679TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100680{
681 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
682}
683
Sadik Armagan1625efc2021-06-10 18:24:34 +0100684TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100685{
686 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
687}
Teresa Charlin44088502020-07-27 11:27:19 +0100688
Sadik Armagan1625efc2021-06-10 18:24:34 +0100689TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100690{
691 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
692}
693
Matthew Sloyan81beae32021-07-13 19:46:11 +0100694TEST_CASE("RefFullyConnectedEndToEndTestFloat32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000695{
696 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
697}
698
Matthew Sloyan81beae32021-07-13 19:46:11 +0100699TEST_CASE("RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
700{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100701 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100702}
703
704TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
705{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100706 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
Cathal Corbett521032f2021-10-07 11:46:40 +0100707}
708
709TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
710{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100711 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, true, true, false);
712}
713
714TEST_CASE("RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
715{
716 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, false, true, true);
717}
718
719TEST_CASE("RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
720{
721 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, true, false, true);
722}
723
724TEST_CASE("RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
725{
726 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, false, false, true);
727}
728
729TEST_CASE("RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
730{
731 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, false, false, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100732}
733
Sadik Armagan1625efc2021-06-10 18:24:34 +0100734TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000735{
736 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
737}
738
Sadik Armagan1625efc2021-06-10 18:24:34 +0100739TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000740{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000741 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000742}
743
Sadik Armagan1625efc2021-06-10 18:24:34 +0100744TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100745{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000746 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100747}
748
Sadik Armagan1625efc2021-06-10 18:24:34 +0100749TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000750{
751 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
752}
753
Sadik Armagan1625efc2021-06-10 18:24:34 +0100754TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000755{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000756 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000757}
758
Sadik Armagan1625efc2021-06-10 18:24:34 +0100759TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100760{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000761 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100762}
763
Teresa Charlinb2d3ec52022-04-12 22:07:09 +0100764TEST_CASE("RefGatherNdFloatTest")
765{
766 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
767}
768
769TEST_CASE("RefGatherNdUint8Test")
770{
771 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
772}
773
774TEST_CASE("RefGatherNdInt16Test")
775{
776 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
777}
778
779TEST_CASE("RefGatherNdMultiDimFloatTest")
780{
781 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
782}
783
784TEST_CASE("RefGatherNdMultiDimUint8Test")
785{
786 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
787}
788
789TEST_CASE("RefGatherNdMultiDimInt16Test")
790{
791 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
792}
793
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100794// DepthToSpace
Sadik Armagan1625efc2021-06-10 18:24:34 +0100795TEST_CASE("DephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100796{
797 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
798}
799
Sadik Armagan1625efc2021-06-10 18:24:34 +0100800TEST_CASE("DephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100801{
802 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
803}
804
Sadik Armagan1625efc2021-06-10 18:24:34 +0100805TEST_CASE("DephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100806{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000807 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100808}
809
Sadik Armagan1625efc2021-06-10 18:24:34 +0100810TEST_CASE("DephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100811{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000812 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100813}
814
Sadik Armagan1625efc2021-06-10 18:24:34 +0100815TEST_CASE("DephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100816{
817 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
818}
819
Sadik Armagan1625efc2021-06-10 18:24:34 +0100820TEST_CASE("DephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100821{
822 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
823}
824
Sadik Armagan1625efc2021-06-10 18:24:34 +0100825TEST_CASE("DephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100826{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000827 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100828}
829
Sadik Armagan1625efc2021-06-10 18:24:34 +0100830TEST_CASE("DephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100831{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000832 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100833}
834
835// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100836TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100837{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000838 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100839}
840
Sadik Armagan1625efc2021-06-10 18:24:34 +0100841TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100842{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000843 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100844}
845
Sadik Armagan1625efc2021-06-10 18:24:34 +0100846TEST_CASE("DequantizeEndToEndSimpleInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100847{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000848 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100849}
850
Sadik Armagan1625efc2021-06-10 18:24:34 +0100851TEST_CASE("DequantizeEndToEndOffsetInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100852{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000853 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100854}
855
Sadik Armagan1625efc2021-06-10 18:24:34 +0100856TEST_CASE("RefDetectionPostProcessRegularNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000857{
858 std::vector<float> boxEncodings({
859 0.0f, 0.0f, 0.0f, 0.0f,
860 0.0f, 1.0f, 0.0f, 0.0f,
861 0.0f, -1.0f, 0.0f, 0.0f,
862 0.0f, 0.0f, 0.0f, 0.0f,
863 0.0f, 1.0f, 0.0f, 0.0f,
864 0.0f, 0.0f, 0.0f, 0.0f
865 });
866 std::vector<float> scores({
867 0.0f, 0.9f, 0.8f,
868 0.0f, 0.75f, 0.72f,
869 0.0f, 0.6f, 0.5f,
870 0.0f, 0.93f, 0.95f,
871 0.0f, 0.5f, 0.4f,
872 0.0f, 0.3f, 0.2f
873 });
874 std::vector<float> anchors({
875 0.5f, 0.5f, 1.0f, 1.0f,
876 0.5f, 0.5f, 1.0f, 1.0f,
877 0.5f, 0.5f, 1.0f, 1.0f,
878 0.5f, 10.5f, 1.0f, 1.0f,
879 0.5f, 10.5f, 1.0f, 1.0f,
880 0.5f, 100.5f, 1.0f, 1.0f
881 });
882 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
883}
884
885inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
886{
887 for (size_t i = 0; i < info.GetNumElements(); i++)
888 {
889 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
890 }
891}
892
Sadik Armagan1625efc2021-06-10 18:24:34 +0100893TEST_CASE("RefDetectionPostProcessRegularNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000894{
895 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
896 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
897 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
898
899 boxEncodingsInfo.SetQuantizationScale(1.0f);
900 boxEncodingsInfo.SetQuantizationOffset(1);
901 scoresInfo.SetQuantizationScale(0.01f);
902 scoresInfo.SetQuantizationOffset(0);
903 anchorsInfo.SetQuantizationScale(0.5f);
904 anchorsInfo.SetQuantizationOffset(0);
905
906 std::vector<float> boxEncodings({
907 0.0f, 0.0f, 0.0f, 0.0f,
908 0.0f, 1.0f, 0.0f, 0.0f,
909 0.0f, -1.0f, 0.0f, 0.0f,
910 0.0f, 0.0f, 0.0f, 0.0f,
911 0.0f, 1.0f, 0.0f, 0.0f,
912 0.0f, 0.0f, 0.0f, 0.0f
913 });
914 std::vector<float> scores({
915 0.0f, 0.9f, 0.8f,
916 0.0f, 0.75f, 0.72f,
917 0.0f, 0.6f, 0.5f,
918 0.0f, 0.93f, 0.95f,
919 0.0f, 0.5f, 0.4f,
920 0.0f, 0.3f, 0.2f
921 });
922 std::vector<float> anchors({
923 0.5f, 0.5f, 1.0f, 1.0f,
924 0.5f, 0.5f, 1.0f, 1.0f,
925 0.5f, 0.5f, 1.0f, 1.0f,
926 0.5f, 10.5f, 1.0f, 1.0f,
927 0.5f, 10.5f, 1.0f, 1.0f,
928 0.5f, 100.5f, 1.0f, 1.0f
929 });
930
931 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
932 std::vector<uint8_t> qScores(scores.size(), 0);
933 std::vector<uint8_t> qAnchors(anchors.size(), 0);
934 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
935 QuantizeData(qScores.data(), scores.data(), scoresInfo);
936 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000937 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000938 qScores, qAnchors,
939 1.0f, 1, 0.01f, 0, 0.5f, 0);
940}
941
Sadik Armagan1625efc2021-06-10 18:24:34 +0100942TEST_CASE("RefDetectionPostProcessFastNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000943{
944 std::vector<float> boxEncodings({
945 0.0f, 0.0f, 0.0f, 0.0f,
946 0.0f, 1.0f, 0.0f, 0.0f,
947 0.0f, -1.0f, 0.0f, 0.0f,
948 0.0f, 0.0f, 0.0f, 0.0f,
949 0.0f, 1.0f, 0.0f, 0.0f,
950 0.0f, 0.0f, 0.0f, 0.0f
951 });
952 std::vector<float> scores({
953 0.0f, 0.9f, 0.8f,
954 0.0f, 0.75f, 0.72f,
955 0.0f, 0.6f, 0.5f,
956 0.0f, 0.93f, 0.95f,
957 0.0f, 0.5f, 0.4f,
958 0.0f, 0.3f, 0.2f
959 });
960 std::vector<float> anchors({
961 0.5f, 0.5f, 1.0f, 1.0f,
962 0.5f, 0.5f, 1.0f, 1.0f,
963 0.5f, 0.5f, 1.0f, 1.0f,
964 0.5f, 10.5f, 1.0f, 1.0f,
965 0.5f, 10.5f, 1.0f, 1.0f,
966 0.5f, 100.5f, 1.0f, 1.0f
967 });
968 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
969}
970
Sadik Armagan1625efc2021-06-10 18:24:34 +0100971TEST_CASE("RefDetectionPostProcessFastNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000972{
973 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
974 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
975 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
976
977 boxEncodingsInfo.SetQuantizationScale(1.0f);
978 boxEncodingsInfo.SetQuantizationOffset(1);
979 scoresInfo.SetQuantizationScale(0.01f);
980 scoresInfo.SetQuantizationOffset(0);
981 anchorsInfo.SetQuantizationScale(0.5f);
982 anchorsInfo.SetQuantizationOffset(0);
983
984 std::vector<float> boxEncodings({
985 0.0f, 0.0f, 0.0f, 0.0f,
986 0.0f, 1.0f, 0.0f, 0.0f,
987 0.0f, -1.0f, 0.0f, 0.0f,
988 0.0f, 0.0f, 0.0f, 0.0f,
989 0.0f, 1.0f, 0.0f, 0.0f,
990 0.0f, 0.0f, 0.0f, 0.0f
991 });
992 std::vector<float> scores({
993 0.0f, 0.9f, 0.8f,
994 0.0f, 0.75f, 0.72f,
995 0.0f, 0.6f, 0.5f,
996 0.0f, 0.93f, 0.95f,
997 0.0f, 0.5f, 0.4f,
998 0.0f, 0.3f, 0.2f
999 });
1000 std::vector<float> anchors({
1001 0.5f, 0.5f, 1.0f, 1.0f,
1002 0.5f, 0.5f, 1.0f, 1.0f,
1003 0.5f, 0.5f, 1.0f, 1.0f,
1004 0.5f, 10.5f, 1.0f, 1.0f,
1005 0.5f, 10.5f, 1.0f, 1.0f,
1006 0.5f, 100.5f, 1.0f, 1.0f
1007 });
1008
1009 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
1010 std::vector<uint8_t> qScores(scores.size(), 0);
1011 std::vector<uint8_t> qAnchors(anchors.size(), 0);
1012 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
1013 QuantizeData(qScores.data(), scores.data(), scoresInfo);
1014 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +00001015 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +00001016 qScores, qAnchors,
1017 1.0f, 1, 0.01f, 0, 0.5f, 0);
1018}
1019
Jan Eilersa83af7b2020-03-18 15:58:11 +00001020// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +01001021TEST_CASE("RefHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001022{
1023 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1024}
1025
Sadik Armagan1625efc2021-06-10 18:24:34 +01001026TEST_CASE("RefHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001027{
1028 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
1029}
1030
Sadik Armagan1625efc2021-06-10 18:24:34 +01001031TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001032{
1033 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
1034}
1035
Sadik Armagan1625efc2021-06-10 18:24:34 +01001036TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001037{
1038 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
1039}
1040
Sadik Armagan1625efc2021-06-10 18:24:34 +01001041TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001042{
1043 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
1044}
1045
Sadik Armagan20bea002019-10-16 09:29:38 +01001046// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001047TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +01001048{
1049 LogSoftmaxEndToEndTest(defaultBackends);
1050}
1051
Sadik Armagan1625efc2021-06-10 18:24:34 +01001052TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +01001053{
1054 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1055}
1056
Sadik Armagan1625efc2021-06-10 18:24:34 +01001057TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +01001058{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001059 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001060}
1061
Sadik Armagan1625efc2021-06-10 18:24:34 +01001062TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +01001063{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001064 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001065}
1066
Sadik Armagan1625efc2021-06-10 18:24:34 +01001067TEST_CASE("RefSpaceToDepthNhwcEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001068{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001069 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001070}
1071
Sadik Armagan1625efc2021-06-10 18:24:34 +01001072TEST_CASE("RefSpaceToDepthNchwEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001073{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001074 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001075}
1076
Sadik Armagan1625efc2021-06-10 18:24:34 +01001077TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001078{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001079 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001080}
1081
Sadik Armagan1625efc2021-06-10 18:24:34 +01001082TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001083{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001084 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001085}
1086
Sadik Armagan1625efc2021-06-10 18:24:34 +01001087TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001088{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001089 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001090}
1091
Sadik Armagan1625efc2021-06-10 18:24:34 +01001092TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001093{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001094 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001095}
1096
Sadik Armagan1625efc2021-06-10 18:24:34 +01001097TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001098{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001099 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001100}
1101
Sadik Armagan1625efc2021-06-10 18:24:34 +01001102TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001103{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001104 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001105}
1106
Sadik Armagan1625efc2021-06-10 18:24:34 +01001107TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001108{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001109 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001110}
1111
Sadik Armagan1625efc2021-06-10 18:24:34 +01001112TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001113{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001114 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001115}
1116
Sadik Armagan1625efc2021-06-10 18:24:34 +01001117TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001118{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001119 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001120}
1121
Sadik Armagan1625efc2021-06-10 18:24:34 +01001122TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001123{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001124 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1125}
1126
Sadik Armagan1625efc2021-06-10 18:24:34 +01001127TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001128{
1129 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1130}
1131
Sadik Armagan1625efc2021-06-10 18:24:34 +01001132TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001133{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001134 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001135}
1136
Sadik Armagan1625efc2021-06-10 18:24:34 +01001137TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001138{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001139 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001140}
1141
Sadik Armagan1625efc2021-06-10 18:24:34 +01001142TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001143{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001144 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001145}
1146
Sadik Armagan1625efc2021-06-10 18:24:34 +01001147TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001148{
1149 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1150}
1151
Sadik Armagan1625efc2021-06-10 18:24:34 +01001152TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001153{
1154 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1155}
1156
Sadik Armagan1625efc2021-06-10 18:24:34 +01001157TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001158{
1159 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1160}
1161
Sadik Armagan1625efc2021-06-10 18:24:34 +01001162TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001163{
1164 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1165}
1166
Sadik Armagan1625efc2021-06-10 18:24:34 +01001167TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001168{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001169 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001170}
1171
Sadik Armagan1625efc2021-06-10 18:24:34 +01001172TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001173{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001174 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001175}
1176
Sadik Armagan1625efc2021-06-10 18:24:34 +01001177TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001178{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001179 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001180}
1181
Sadik Armagan1625efc2021-06-10 18:24:34 +01001182TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001183{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001184 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001185}
1186
Cian McGriskin160edb32023-07-25 14:15:45 +01001187// Tile
1188TEST_CASE("RefTileEndToEndFloat32")
1189{
1190 TileEndToEnd<armnn::DataType::Float32>(defaultBackends);
1191}
1192
1193TEST_CASE("RefTileEndToEndFloat16")
1194{
1195 TileEndToEnd<armnn::DataType::Float16>(defaultBackends);
1196}
1197
1198TEST_CASE("RefTileEndToEndQAsymmS8")
1199{
1200 TileEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1201}
1202
1203TEST_CASE("RefTileEndToEndQAsymmU8")
1204{
1205 TileEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1206}
1207
1208TEST_CASE("RefTileEndToEndQSymmS8")
1209{
1210 TileEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1211}
1212
1213TEST_CASE("RefTileEndToEndQSymmS16")
1214{
1215 TileEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1216}
1217
1218TEST_CASE("RefTileEndToEndSigned32")
1219{
1220 TileEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1221}
1222
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001223// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001224TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001225{
1226 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1227 defaultBackends, armnn::DataLayout::NCHW);
1228}
1229
Sadik Armagan1625efc2021-06-10 18:24:34 +01001230TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001231{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001232 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001233 defaultBackends, armnn::DataLayout::NCHW);
1234}
1235
Sadik Armagan1625efc2021-06-10 18:24:34 +01001236TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001237{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001238 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001239 defaultBackends, armnn::DataLayout::NCHW);
1240}
1241
Sadik Armagan1625efc2021-06-10 18:24:34 +01001242TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001243{
1244 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1245 defaultBackends, armnn::DataLayout::NHWC);
1246}
1247
Sadik Armagan1625efc2021-06-10 18:24:34 +01001248TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001249{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001250 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001251 defaultBackends, armnn::DataLayout::NHWC);
1252}
1253
Sadik Armagan1625efc2021-06-10 18:24:34 +01001254TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001255{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001256 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001257 defaultBackends, armnn::DataLayout::NHWC);
1258}
1259
Teresa Charlin6bc85252022-12-06 20:43:06 +00001260// Transpose
1261TEST_CASE("RefTransposeEndToEndTest")
1262{
1263 TransposeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1264}
1265
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001266// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001267TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001268{
1269 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1270}
1271
Sadik Armagan1625efc2021-06-10 18:24:34 +01001272TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001273{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001274 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001275}
1276
Sadik Armagan1625efc2021-06-10 18:24:34 +01001277TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001278{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001279 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001280}
1281
Sadik Armagan1625efc2021-06-10 18:24:34 +01001282TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001283{
1284 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1285}
1286
Sadik Armagan1625efc2021-06-10 18:24:34 +01001287TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001288{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001289 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001290}
1291
Sadik Armagan1625efc2021-06-10 18:24:34 +01001292TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001293{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001294 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001295}
1296
1297// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001298TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001299{
1300 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1301}
1302
Sadik Armagan1625efc2021-06-10 18:24:34 +01001303TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001304{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001305 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001306}
1307
Sadik Armagan1625efc2021-06-10 18:24:34 +01001308TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001309{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001310 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001311}
1312
Sadik Armagan1625efc2021-06-10 18:24:34 +01001313TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001314{
1315 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1316}
1317
Sadik Armagan1625efc2021-06-10 18:24:34 +01001318TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001319{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001320 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001321}
1322
Sadik Armagan1625efc2021-06-10 18:24:34 +01001323TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001324{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001325 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001326}
1327
Declan-ARM1bf56cd2023-07-20 17:32:57 +01001328// ReverseV2
1329TEST_CASE("RefReverseV2EndToEndFloat16Test")
1330{
1331 ReverseV2EndToEnd<armnn::DataType::Float16>(defaultBackends);
1332}
1333
1334TEST_CASE("RefReverseV2EndToEndFloat32Test")
1335{
1336 ReverseV2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1337}
1338
1339TEST_CASE("RefReverseV2EndToEndQAsymmS8Test")
1340{
1341 ReverseV2EndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1342}
1343
1344TEST_CASE("RefReverseV2EndToEndQAsymmU8Test")
1345{
1346 ReverseV2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1347}
1348
1349TEST_CASE("RefReverseV2EndToEndQSymmS8Test")
1350{
1351 ReverseV2EndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1352}
1353
1354TEST_CASE("RefReverseV2EndToEndQSymmS16Test")
1355{
1356 ReverseV2EndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1357}
1358
1359TEST_CASE("RefReverseV2EndToEndSigned32Test")
1360{
1361 ReverseV2EndToEnd<armnn::DataType::Signed32>(defaultBackends);
1362}
1363
Sadik Armagan062e0e92019-10-14 10:31:43 +01001364// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001365TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001366{
1367 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1368}
1369
Sadik Armagan1625efc2021-06-10 18:24:34 +01001370TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001371{
1372 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1373}
1374
Sadik Armagan1625efc2021-06-10 18:24:34 +01001375TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001376{
1377 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1378}
1379
Sadik Armagan1625efc2021-06-10 18:24:34 +01001380TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001381{
1382 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1383}
1384
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001385// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001386TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001387{
1388 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1389}
1390
Sadik Armagan1625efc2021-06-10 18:24:34 +01001391TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001392{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001393 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001394}
1395
Sadik Armagan1625efc2021-06-10 18:24:34 +01001396TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001397{
1398 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1399}
1400
Sadik Armagan1625efc2021-06-10 18:24:34 +01001401TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001402{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001403 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001404}
1405
Sadik Armagan1625efc2021-06-10 18:24:34 +01001406TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001407{
1408 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1409}
1410
Sadik Armagan1625efc2021-06-10 18:24:34 +01001411TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001412{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001413 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001414}
1415
Sadik Armagan1625efc2021-06-10 18:24:34 +01001416TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001417{
1418 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1419}
1420
Sadik Armagan1625efc2021-06-10 18:24:34 +01001421TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001422{
1423
Derek Lambertif90c56d2020-01-10 17:14:08 +00001424 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001425}
1426
Sadik Armagan1625efc2021-06-10 18:24:34 +01001427TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001428{
1429 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1430}
1431
Sadik Armagan1625efc2021-06-10 18:24:34 +01001432TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001433{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001434 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001435}
1436
Sadik Armagan1625efc2021-06-10 18:24:34 +01001437TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001438{
1439 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1440}
1441
Sadik Armagan1625efc2021-06-10 18:24:34 +01001442TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001443{
1444
Derek Lambertif90c56d2020-01-10 17:14:08 +00001445 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001446}
1447
Sadik Armagan1625efc2021-06-10 18:24:34 +01001448TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001449{
1450 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1451}
1452
Sadik Armagan1625efc2021-06-10 18:24:34 +01001453TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001454{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001455 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001456}
1457
Sadik Armagan1625efc2021-06-10 18:24:34 +01001458TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001459{
1460 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1461}
1462
Sadik Armagan1625efc2021-06-10 18:24:34 +01001463TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001464{
1465
Derek Lambertif90c56d2020-01-10 17:14:08 +00001466 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001467}
1468
Sadik Armagan1625efc2021-06-10 18:24:34 +01001469TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001470{
1471 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1472}
1473
Sadik Armagan1625efc2021-06-10 18:24:34 +01001474TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001475{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001476 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001477}
1478
Sadik Armagan1625efc2021-06-10 18:24:34 +01001479TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001480{
1481 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1482}
1483
Sadik Armagan1625efc2021-06-10 18:24:34 +01001484TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001485{
1486
Derek Lambertif90c56d2020-01-10 17:14:08 +00001487 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001488}
1489
Sadik Armagan1625efc2021-06-10 18:24:34 +01001490TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001491{
1492 QLstmEndToEnd(defaultBackends);
1493}
1494
Sadik Armagan1625efc2021-06-10 18:24:34 +01001495TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001496{
1497 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1498}
1499
Sadik Armagan1625efc2021-06-10 18:24:34 +01001500TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001501{
1502 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1503}
1504
Sadik Armagan1625efc2021-06-10 18:24:34 +01001505TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001506{
1507 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1508}
1509
Sadik Armagan1625efc2021-06-10 18:24:34 +01001510TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001511{
1512 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1513}
1514
Sadik Armagan1625efc2021-06-10 18:24:34 +01001515TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001516{
1517 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1518}
1519
Sadik Armagan1625efc2021-06-10 18:24:34 +01001520TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001521{
1522 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1523}
1524
Teresa Charlinc17a35f2023-01-12 14:13:09 +00001525// Reduce
1526TEST_CASE("RefReduceEndToEndTest")
1527{
1528 ReduceEndToEnd<armnn::DataType::Float32>(defaultBackends);
1529}
1530
1531TEST_CASE("RefReduceEndToEndTestFloat16")
1532{
1533 ReduceEndToEnd<armnn::DataType::Float16>(defaultBackends);
1534}
1535
1536// Reshape
1537TEST_CASE("RefReshapeEndToEndTest")
1538{
1539 ReshapeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1540}
1541
1542TEST_CASE("RefReshapeEndToEndTestFloat16")
1543{
1544 ReshapeEndToEndFloat16<armnn::DataType::Float16>(defaultBackends);
1545}
1546
David Monahan646bc8a2022-01-31 14:29:14 +00001547TEST_CASE("RefForceImportWithAlignedBuffersEndToEndTest")
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001548{
David Monahan646bc8a2022-01-31 14:29:14 +00001549 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1550}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001551
David Monahan646bc8a2022-01-31 14:29:14 +00001552TEST_CASE("RefForceImportWithMisalignedInputBuffersEndToEndTest")
1553{
1554 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1555}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001556
David Monahan646bc8a2022-01-31 14:29:14 +00001557TEST_CASE("RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1558{
1559 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1560}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001561
David Monahan646bc8a2022-01-31 14:29:14 +00001562TEST_CASE("RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1563{
1564 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001565}
1566
David Monahan16829712022-02-03 17:04:59 +00001567TEST_CASE("RefForceImportRepeatedInferencesEndToEndTest")
1568{
1569 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1570}
1571
1572TEST_CASE("RefForceImportRepeatedInferencesInvertedEndToEndTest")
1573{
1574 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1575}
1576
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001577#if !defined(__ANDROID__)
1578// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001579TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001580{
David Monahan4f1e8e42019-09-04 09:22:10 +01001581 ImportNonAlignedInputPointerTest(defaultBackends);
1582}
1583
Sadik Armagan1625efc2021-06-10 18:24:34 +01001584TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01001585{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001586 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001587}
1588
Sadik Armagan1625efc2021-06-10 18:24:34 +01001589TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001590{
1591 ImportAlignedPointerTest(defaultBackends);
1592}
1593
Sadik Armagan1625efc2021-06-10 18:24:34 +01001594TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001595{
1596 ImportOnlyWorkload(defaultBackends);
1597}
1598
Sadik Armagan1625efc2021-06-10 18:24:34 +01001599TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001600{
1601 ExportOnlyWorkload(defaultBackends);
1602}
1603
Sadik Armagan1625efc2021-06-10 18:24:34 +01001604TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001605{
1606 ImportAndExportWorkload(defaultBackends);
1607}
1608
Sadik Armagan1625efc2021-06-10 18:24:34 +01001609TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001610{
1611 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1612}
1613
Ryan OShea980446b2023-06-08 16:23:28 +01001614// Slice
1615TEST_CASE("RefSliceEndtoEndTestFloat32")
1616{
1617 SliceEndToEnd<DataType::Float32>(defaultBackends);
1618}
1619
1620TEST_CASE("RefSliceEndtoEndTestInt32")
1621{
1622 SliceEndToEnd<DataType::Signed32>(defaultBackends);
1623}
1624
1625TEST_CASE("RefSliceEndtoEndTestFloat16")
1626{
1627 SliceEndToEndFloat16<DataType::Float16>(defaultBackends);
1628}
1629
Sadik Armagan1625efc2021-06-10 18:24:34 +01001630TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00001631{
1632 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1633}
1634
Sadik Armagan1625efc2021-06-10 18:24:34 +01001635TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01001636{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001637 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01001638}
Finn Williamsb8181f72021-04-07 10:23:21 +01001639
Sadik Armagan1625efc2021-06-10 18:24:34 +01001640TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01001641{
1642 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1643}
Keith Davise813d672021-04-22 10:10:34 +01001644
Sadik Armagan1625efc2021-06-10 18:24:34 +01001645TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01001646{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001647 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01001648}
Mike Kelly3ec30772023-03-08 13:47:17 +00001649
1650TEST_CASE("RefAddEndToEndTestFloat32")
1651{
1652 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
1653}
1654TEST_CASE("RefAddEndToEndTestUint8")
1655{
1656 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Add);
1657}
1658TEST_CASE("RefDivEndToEndTestFloat32")
1659{
1660 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Div);
1661}
1662TEST_CASE("RefDivEndToEndTestUint8")
1663{
1664 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Div);
1665}
1666TEST_CASE("RefMulEndToEndTestFloat32")
1667{
1668 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Mul);
1669}
1670TEST_CASE("RefMulEndToEndTestUint8")
1671{
1672 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Mul);
1673}
1674TEST_CASE("RefSubEndToEndTestFloat32")
1675{
1676 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
1677}
1678TEST_CASE("RefSubEndToEndTestUint8")
1679{
1680 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Sub);
1681}
1682TEST_CASE("RefMaximumEndToEndTestFloat32")
1683{
1684 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Maximum);
1685}
1686TEST_CASE("RefMaximumEndToEndTestUint8")
1687{
1688 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Maximum);
1689}
1690TEST_CASE("RefMinimumEndToEndTestFloat32")
1691{
1692 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Minimum);
1693}
1694TEST_CASE("RefMinimumEndToEndTestUint8")
1695{
1696 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Minimum);
1697}
John Mcloughlin0ec00872023-05-15 17:03:49 +01001698TEST_CASE("RefPowerEndToEndTestFloat32")
1699{
1700 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Power);
1701}
1702TEST_CASE("RefPowerEndToEndTestUint8")
1703{
1704 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Power);
1705}
1706TEST_CASE("RefSquaredDifferenceEndToEndTestFloat32")
1707{
1708 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::SqDiff);
1709}
1710TEST_CASE("RefSquaredDifferenceEndToEndTestUint8")
1711{
1712 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::SqDiff);
1713}
Mike Kelly4cc341c2023-07-07 15:43:06 +01001714
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001715#endif
1716
Mike Kelly4cc341c2023-07-07 15:43:06 +01001717// Backend Optimization Tests
1718TEST_CASE("RefReshapeRemovalSimpleCaseEndToEnd")
1719{
1720 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(defaultBackends);
1721}
1722
1723TEST_CASE("RefReshapeRemovalNCHWFirstEndToEnd")
1724{
1725 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
1726}
1727
1728TEST_CASE("RefReshapeRemovalNCHWSecondEndToEnd")
1729{
1730 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
1731}
Idriss Chaouch98e383e2023-08-28 14:28:31 +01001732
1733// BroadcastTo
1734TEST_CASE("RefBroadcastToEndToEndFloat32")
1735{
1736 BroadcastToEndToEnd<armnn::DataType::Float32>(defaultBackends);
1737}
1738
Idriss Chaouch564c13d2023-09-01 17:58:38 +01001739TEST_CASE("RefBroadcastToEndToEndWithMultiplicationFloat32")
Idriss Chaouch98e383e2023-08-28 14:28:31 +01001740{
Idriss Chaouch564c13d2023-09-01 17:58:38 +01001741 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
1742 BinaryOperation::Mul);
1743}
1744
1745TEST_CASE("RefBroadcastToEndToEndWithDivisionFloat32")
1746{
1747 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
1748 BinaryOperation::Div);
1749}
1750
1751TEST_CASE("RefBroadcastToEndToEndWithAdditionFloat32")
1752{
1753 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
1754 BinaryOperation::Add);
1755}
1756
1757TEST_CASE("RefBroadcastToEndToEndWithSubtractionFloat32")
1758{
1759 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
1760 BinaryOperation::Sub);
Idriss Chaouch98e383e2023-08-28 14:28:31 +01001761}
Sadik Armagan1625efc2021-06-10 18:24:34 +01001762}