blob: 6f05ba77cbfea94854e253f19970861fd669e100 [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>
Mike Kelly4cc341c2023-07-07 15:43:06 +010038#include <backendsCommon/test/SubgraphUtilsTest.hpp>
Cian McGriskin160edb32023-07-25 14:15:45 +010039#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010040#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000041#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010042
Sadik Armagan1625efc2021-06-10 18:24:34 +010043#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010044
Sadik Armagan1625efc2021-06-10 18:24:34 +010045TEST_SUITE("RefEndToEnd")
46{
narpra01b9546cf2018-11-20 15:21:28 +000047std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
48
David Monahand7fca092023-01-12 14:53:34 +000049// ElementwiseUnary
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010050// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010051TEST_CASE("RefAbsEndToEndTestFloat32")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010052{
josh minor4a3c6102020-01-06 16:40:46 -060053 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000054 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010055}
56
Sadik Armagan1625efc2021-06-10 18:24:34 +010057TEST_CASE("RefAbsEndToEndTestUint8")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010058{
josh minor4a3c6102020-01-06 16:40:46 -060059 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000060 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010061}
62
Sadik Armagan1625efc2021-06-10 18:24:34 +010063TEST_CASE("RefAbsEndToEndTestInt16")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010064{
josh minor4a3c6102020-01-06 16:40:46 -060065 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000066 UnaryOperation::Abs);
67}
68
69// Rsqrt
70TEST_CASE("RefRsqrtEndToEndTestFloat32")
71{
72 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
73 UnaryOperation::Rsqrt);
74}
75
76TEST_CASE("RefRsqrtEndToEndTestUint8")
77{
78 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
79 UnaryOperation::Rsqrt);
80}
81
82TEST_CASE("RefRsqrtEndToEndTestInt16")
83{
84 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
85 UnaryOperation::Rsqrt);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010086}
87
Ryan OShea3c2795a2022-11-03 17:51:52 +000088// Addition
89TEST_CASE("RefAdditionEndtoEndFloat32")
90{
91 AdditionEndToEnd<armnn::DataType::Float32>(defaultBackends);
92}
93
94TEST_CASE("RefAdditionEndtoEndUint8")
95{
96 AdditionEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
97}
98
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010099// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +0100100TEST_CASE("ConstantUsage_Ref_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100101{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100102 CHECK(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100103}
104
Sadik Armagan1625efc2021-06-10 18:24:34 +0100105TEST_CASE("ConstantUsage_Ref_Uint8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100106{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100107 CHECK(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100108}
109
Sadik Armagan1625efc2021-06-10 18:24:34 +0100110TEST_CASE("Unsigned8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100111{
112 using namespace armnn;
113
114 // Create runtime in which test will run
115 armnn::IRuntime::CreationOptions options;
116 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
117
118 // Builds up the structure of the network.
119 armnn::INetworkPtr net(INetwork::Create());
120
121 IConnectableLayer* input = net->AddInputLayer(0, "input");
122 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
123 IConnectableLayer* output = net->AddOutputLayer(0, "output");
124
125 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
126 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
127
128 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000129 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100130 inputTensorInfo.SetQuantizationOffset(100);
131 inputTensorInfo.SetQuantizationScale(10000.0f);
132 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
133
Derek Lambertif90c56d2020-01-10 17:14:08 +0000134 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100135 outputTensorInfo.SetQuantizationOffset(0);
136 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
137 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
138
139 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000140 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100141
142 // Loads it into the runtime.
143 NetworkId netId;
144 auto error = runtime->LoadNetwork(netId, std::move(optNet));
Sadik Armagan1625efc2021-06-10 18:24:34 +0100145 CHECK(error == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100146
147 // Creates structures for input & output.
148 std::vector<uint8_t> inputData
149 {
150 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
151 };
152 std::vector<uint8_t> outputData(5);
153
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100154 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
155 inputTensorInfo2.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100156 armnn::InputTensors inputTensors
157 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100158 {0, armnn::ConstTensor(inputTensorInfo2, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100159 };
160 armnn::OutputTensors outputTensors
161 {
162 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
163 };
164
165 // Does the inference.
166 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
167
168 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100169 CHECK(outputData[0] == 0);
170 CHECK(outputData[1] == 0);
171 CHECK(outputData[2] == 0);
172 CHECK(outputData[3] == 255); // softmax has been saturated.
173 CHECK(outputData[4] == 0);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100174}
175
Sadik Armagan1625efc2021-06-10 18:24:34 +0100176TEST_CASE("TrivialAdd")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100177{
178 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
179
180 using namespace armnn;
181
182 // Create runtime in which test will run
183 armnn::IRuntime::CreationOptions options;
184 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
185
186 // Builds up the structure of the network.
187 armnn::INetworkPtr net(INetwork::Create());
188
189 IConnectableLayer* input1 = net->AddInputLayer(0);
190 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000191 IConnectableLayer* add = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Add));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100192 IConnectableLayer* output = net->AddOutputLayer(0);
193
194 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
195 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
196 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
197
198 // Sets the tensors in the network.
199 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
200 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
201 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
202 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
203
204 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000205 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100206
207 // Loads it into the runtime.
208 NetworkId netId;
209 runtime->LoadNetwork(netId, std::move(optNet));
210
211 // Creates structures for input & output - matching android nn test.
212 std::vector<float> input1Data
213 {
214 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
215 };
216 std::vector<float> input2Data
217 {
218 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
219 };
220 std::vector<float> outputData(12);
221
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100222 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
223 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100224 InputTensors inputTensors
225 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100226 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
227 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100228 };
229 OutputTensors outputTensors
230 {
231 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
232 };
233
234 // Does the inference.
235 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
236
237 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100238 CHECK(outputData[0] == 101);
239 CHECK(outputData[1] == 202);
240 CHECK(outputData[2] == 303);
241 CHECK(outputData[3] == 404);
242 CHECK(outputData[4] == 505);
243 CHECK(outputData[5] == 606);
244 CHECK(outputData[6] == 707);
245 CHECK(outputData[7] == 808);
246 CHECK(outputData[8] == 909);
247 CHECK(outputData[9] == 1010);
248 CHECK(outputData[10] == 1111);
249 CHECK(outputData[11] == 1212);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100250}
251
Sadik Armagan1625efc2021-06-10 18:24:34 +0100252TEST_CASE("MultipleOutputs")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100253{
254 using namespace armnn;
255
256 // Create runtime in which test will run
257 armnn::IRuntime::CreationOptions options;
258 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
259
260 // Builds up the structure of the network.
261 INetworkPtr net(INetwork::Create());
262
263 IConnectableLayer* input = net->AddInputLayer(0);
264
265 // ReLu1
266 ActivationDescriptor activation1Descriptor;
267 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
268 activation1Descriptor.m_A = 1.f;
269 activation1Descriptor.m_B = -1.f;
270 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
271
272 // ReLu6
273 ActivationDescriptor activation2Descriptor;
274 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
275 activation2Descriptor.m_A = 6.0f;
276 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
277
278 // BoundedReLu(min=2, max=5)
279 ActivationDescriptor activation3Descriptor;
280 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
281 activation3Descriptor.m_A = 5.0f;
282 activation3Descriptor.m_B = 2.0f;
283 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
284
285 IConnectableLayer* output1 = net->AddOutputLayer(0);
286 IConnectableLayer* output2 = net->AddOutputLayer(1);
287 IConnectableLayer* output3 = net->AddOutputLayer(2);
288
289 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
290 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
291 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
292
293 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
294 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
295 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
296
297 // Sets the tensors in the network.
298 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
299 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
300 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
301 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
302 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
303
304 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000305 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100306
307 // Loads it into the runtime.
308 NetworkId netId;
309 runtime->LoadNetwork(netId, std::move(optNet));
310
311 // Creates structures for input & output.
312 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 };
313
314 std::vector<float> output1Data(inputData.size());
315 std::vector<float> output2Data(inputData.size());
316 std::vector<float> output3Data(inputData.size());
317
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100318 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
319 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100320 InputTensors inputTensors
321 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100322 {0,armnn::ConstTensor(inputTensorInfo, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100323 };
324 OutputTensors outputTensors
325 {
326 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
327 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
328 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
329 };
330
331 // Does the inference.
332 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
333
334 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100335 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
336 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
337 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 +0100338}
339
Sadik Armagan1625efc2021-06-10 18:24:34 +0100340TEST_CASE("TrivialMin")
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000341{
342 using namespace armnn;
343
344 // Create runtime in which test will run
345 armnn::IRuntime::CreationOptions options;
346 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
347
348 // Builds up the structure of the network.
349 armnn::INetworkPtr net(INetwork::Create());
350
351 IConnectableLayer* input1 = net->AddInputLayer(0);
352 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000353 IConnectableLayer* min = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Minimum));
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000354 IConnectableLayer* output = net->AddOutputLayer(0);
355
356 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
357 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
358 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
359
360 // Sets the tensors in the network.
361 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
362 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
363 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
364 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
365
366 // optimize the network
367 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
368
369 // Loads it into the runtime.
370 NetworkId netId;
371 runtime->LoadNetwork(netId, std::move(optNet));
372
373 // Creates structures for input & output - matching android nn test.
374 std::vector<float> input1Data
375 {
376 1.0f, 2.0f, 3.0f, 4.0f
377 };
378 std::vector<float> input2Data
379 {
380 2.0f, 1.0f, 5.0f, 2.0f
381 };
382 std::vector<float> outputData(4);
383
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100384 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
385 inputTensorInfo.SetConstant(true);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000386 InputTensors inputTensors
387 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100388 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
389 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000390 };
391 OutputTensors outputTensors
392 {
393 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
394 };
395
396 // Does the inference.
397 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
398
399 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100400 CHECK(outputData[0] == 1);
401 CHECK(outputData[1] == 1);
402 CHECK(outputData[2] == 3);
403 CHECK(outputData[3] == 2);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000404}
405
Sadik Armagan1625efc2021-06-10 18:24:34 +0100406TEST_CASE("RefEqualSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000407{
kevmay012b4d88e2019-01-24 14:05:09 +0000408 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
409 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000410
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100411 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
412 ComparisonOperation::Equal,
413 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000414}
415
Sadik Armagan1625efc2021-06-10 18:24:34 +0100416TEST_CASE("RefGreaterSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000417{
kevmay012b4d88e2019-01-24 14:05:09 +0000418 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
419 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000420
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100421 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
422 ComparisonOperation::Greater,
423 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000424}
425
Sadik Armagan1625efc2021-06-10 18:24:34 +0100426TEST_CASE("RefEqualSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000427{
428 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
429 0, 0, 0, 0, 1, 1, 1, 1 });
430
Derek Lambertif90c56d2020-01-10 17:14:08 +0000431 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100432 ComparisonOperation::Equal,
433 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000434}
435
Sadik Armagan1625efc2021-06-10 18:24:34 +0100436TEST_CASE("RefGreaterSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000437{
438 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
439 0, 0, 0, 0, 0, 0, 0, 0 });
440
Derek Lambertif90c56d2020-01-10 17:14:08 +0000441 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100442 ComparisonOperation::Greater,
443 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000444}
445
Sadik Armagan1625efc2021-06-10 18:24:34 +0100446TEST_CASE("RefEqualBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000447{
kevmay012b4d88e2019-01-24 14:05:09 +0000448 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
449 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000450
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100451 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
452 ComparisonOperation::Equal,
453 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000454}
455
Sadik Armagan1625efc2021-06-10 18:24:34 +0100456TEST_CASE("RefGreaterBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000457{
kevmay012b4d88e2019-01-24 14:05:09 +0000458 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
459 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000460
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100461 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
462 ComparisonOperation::Greater,
463 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000464}
465
Sadik Armagan1625efc2021-06-10 18:24:34 +0100466TEST_CASE("RefEqualBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000467{
468 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
469 0, 0, 0, 0, 0, 0 });
470
Derek Lambertif90c56d2020-01-10 17:14:08 +0000471 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100472 ComparisonOperation::Equal,
473 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000474}
475
Sadik Armagan1625efc2021-06-10 18:24:34 +0100476TEST_CASE("RefGreaterBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000477{
478 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
479 1, 1, 1, 1, 1, 1 });
480
Derek Lambertif90c56d2020-01-10 17:14:08 +0000481 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100482 ComparisonOperation::Greater,
483 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000484}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000485
Teresa Charlina38da592022-10-31 22:09:23 +0000486TEST_CASE("RefBatchMatMulEndToEndFloat32Test")
487{
488 BatchMatMulEndToEnd<armnn::DataType::Float32>(defaultBackends);
489}
490
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000491TEST_CASE("RefBatchMatMulEndToEndInt8Test")
492{
493 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
494}
495
Sadik Armagan1625efc2021-06-10 18:24:34 +0100496TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100497{
498 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
499}
500
Sadik Armagan1625efc2021-06-10 18:24:34 +0100501TEST_CASE("RefBatchToSpaceNdEndToEndUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100502{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000503 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100504}
505
Sadik Armagan1625efc2021-06-10 18:24:34 +0100506TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100507{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000508 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100509}
510
Sadik Armagan1625efc2021-06-10 18:24:34 +0100511TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100512{
513 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
514}
515
Sadik Armagan1625efc2021-06-10 18:24:34 +0100516TEST_CASE("RefBatchToSpaceNdEndToEndUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100517{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000518 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100519}
520
Sadik Armagan1625efc2021-06-10 18:24:34 +0100521TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100522{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000523 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100524}
525
Sadik Armagan1625efc2021-06-10 18:24:34 +0100526TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100527{
528 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
529}
530
Sadik Armagan1625efc2021-06-10 18:24:34 +0100531TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100532{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000533 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100534}
535
Sadik Armagan1625efc2021-06-10 18:24:34 +0100536TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100537{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000538 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100539}
540
Sadik Armagan1625efc2021-06-10 18:24:34 +0100541TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100542{
543 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
544}
545
Sadik Armagan1625efc2021-06-10 18:24:34 +0100546TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100547{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000548 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100549}
550
Sadik Armagan1625efc2021-06-10 18:24:34 +0100551TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100552{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000553 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100554}
555
Teresa Charlin43baf502021-09-27 10:10:39 +0100556TEST_CASE("RefChannelShuffleFloatTest")
557{
558 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
559}
560
561TEST_CASE("RefChannelShuffleUint8Test")
562{
563 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
564}
565
Sadik Armagan1625efc2021-06-10 18:24:34 +0100566TEST_CASE("RefConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000567{
Jim Flynne242f2d2019-05-22 14:24:13 +0100568 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000569}
570
Sadik Armagan1625efc2021-06-10 18:24:34 +0100571TEST_CASE("RefConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000572{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000573 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000574}
575
Sadik Armagan1625efc2021-06-10 18:24:34 +0100576TEST_CASE("RefConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000577{
Jim Flynne242f2d2019-05-22 14:24:13 +0100578 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000579}
580
Sadik Armagan1625efc2021-06-10 18:24:34 +0100581TEST_CASE("RefConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000582{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000583 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000584}
585
Sadik Armagan1625efc2021-06-10 18:24:34 +0100586TEST_CASE("RefConcatEndToEndDim2Test")
narpra01b9546cf2018-11-20 15:21:28 +0000587{
Jim Flynne242f2d2019-05-22 14:24:13 +0100588 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000589}
590
Sadik Armagan1625efc2021-06-10 18:24:34 +0100591TEST_CASE("RefConcatEndToEndDim2Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000592{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000593 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000594}
595
Sadik Armagan1625efc2021-06-10 18:24:34 +0100596TEST_CASE("RefConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000597{
Jim Flynne242f2d2019-05-22 14:24:13 +0100598 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000599}
600
Sadik Armagan1625efc2021-06-10 18:24:34 +0100601TEST_CASE("RefConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000602{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000603 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000604}
605
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +0000606TEST_CASE("RefConvolution2dFloat32Test")
607{
608 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
609}
610
611TEST_CASE("RefConvolution2dNchwFloat32Test")
612{
613 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
614}
615
616TEST_CASE("RefConvolution2dFloat16Test")
617{
618 Convolution2dEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
619}
620
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +0100621TEST_CASE("RefConvolution3dFloat32Test")
622{
623 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
624 armnn::DataLayout::NDHWC);
625}
626
627TEST_CASE("RefConvolution3dNcdhwFloat32Test")
628{
629 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
630 armnn::DataLayout::NCDHW);
631}
632
633TEST_CASE("RefConvolution3dFloat16Test")
634{
635 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
636 armnn::DataLayout::NDHWC);
637}
638
639TEST_CASE("RefConvolution3dUint8Test")
640{
641 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
642 armnn::DataLayout::NDHWC);
643}
644
645TEST_CASE("RefConvolution3dInt8Test")
646{
647 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
648 armnn::DataLayout::NDHWC);
649}
650
Sadik Armagan1625efc2021-06-10 18:24:34 +0100651TEST_CASE("RefEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000652{
653 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
654}
655
Sadik Armagan1625efc2021-06-10 18:24:34 +0100656TEST_CASE("RefEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000657{
658 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
659}
660
Sadik Armagan1625efc2021-06-10 18:24:34 +0100661TEST_CASE("RefEluEndToEndTestQAsymmS8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000662{
663 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
664}
665
Sadik Armagan1625efc2021-06-10 18:24:34 +0100666TEST_CASE("RefEluEndToEndTestQAsymmU8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000667{
668 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
669}
670
Sadik Armagan1625efc2021-06-10 18:24:34 +0100671TEST_CASE("RefEluEndToEndTestQSymmS16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000672{
673 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
674}
675
Sadik Armagan1625efc2021-06-10 18:24:34 +0100676TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100677{
678 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
679}
680
Sadik Armagan1625efc2021-06-10 18:24:34 +0100681TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100682{
683 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
684}
Teresa Charlin44088502020-07-27 11:27:19 +0100685
Sadik Armagan1625efc2021-06-10 18:24:34 +0100686TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100687{
688 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
689}
690
Matthew Sloyan81beae32021-07-13 19:46:11 +0100691TEST_CASE("RefFullyConnectedEndToEndTestFloat32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000692{
693 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
694}
695
Matthew Sloyan81beae32021-07-13 19:46:11 +0100696TEST_CASE("RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
697{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100698 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100699}
700
701TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
702{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100703 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
Cathal Corbett521032f2021-10-07 11:46:40 +0100704}
705
706TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
707{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100708 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, true, true, false);
709}
710
711TEST_CASE("RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
712{
713 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, false, true, true);
714}
715
716TEST_CASE("RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
717{
718 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, true, false, true);
719}
720
721TEST_CASE("RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
722{
723 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, false, false, true);
724}
725
726TEST_CASE("RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
727{
728 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, false, false, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100729}
730
Sadik Armagan1625efc2021-06-10 18:24:34 +0100731TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000732{
733 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
734}
735
Sadik Armagan1625efc2021-06-10 18:24:34 +0100736TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000737{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000738 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000739}
740
Sadik Armagan1625efc2021-06-10 18:24:34 +0100741TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100742{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000743 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100744}
745
Sadik Armagan1625efc2021-06-10 18:24:34 +0100746TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000747{
748 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
749}
750
Sadik Armagan1625efc2021-06-10 18:24:34 +0100751TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000752{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000753 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000754}
755
Sadik Armagan1625efc2021-06-10 18:24:34 +0100756TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100757{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000758 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100759}
760
Teresa Charlinb2d3ec52022-04-12 22:07:09 +0100761TEST_CASE("RefGatherNdFloatTest")
762{
763 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
764}
765
766TEST_CASE("RefGatherNdUint8Test")
767{
768 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
769}
770
771TEST_CASE("RefGatherNdInt16Test")
772{
773 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
774}
775
776TEST_CASE("RefGatherNdMultiDimFloatTest")
777{
778 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
779}
780
781TEST_CASE("RefGatherNdMultiDimUint8Test")
782{
783 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
784}
785
786TEST_CASE("RefGatherNdMultiDimInt16Test")
787{
788 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
789}
790
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100791// DepthToSpace
Sadik Armagan1625efc2021-06-10 18:24:34 +0100792TEST_CASE("DephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100793{
794 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
795}
796
Sadik Armagan1625efc2021-06-10 18:24:34 +0100797TEST_CASE("DephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100798{
799 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
800}
801
Sadik Armagan1625efc2021-06-10 18:24:34 +0100802TEST_CASE("DephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100803{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000804 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100805}
806
Sadik Armagan1625efc2021-06-10 18:24:34 +0100807TEST_CASE("DephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100808{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000809 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100810}
811
Sadik Armagan1625efc2021-06-10 18:24:34 +0100812TEST_CASE("DephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100813{
814 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
815}
816
Sadik Armagan1625efc2021-06-10 18:24:34 +0100817TEST_CASE("DephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100818{
819 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
820}
821
Sadik Armagan1625efc2021-06-10 18:24:34 +0100822TEST_CASE("DephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100823{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000824 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100825}
826
Sadik Armagan1625efc2021-06-10 18:24:34 +0100827TEST_CASE("DephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100828{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000829 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100830}
831
832// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100833TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100834{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000835 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100836}
837
Sadik Armagan1625efc2021-06-10 18:24:34 +0100838TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100839{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000840 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100841}
842
Sadik Armagan1625efc2021-06-10 18:24:34 +0100843TEST_CASE("DequantizeEndToEndSimpleInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100844{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000845 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100846}
847
Sadik Armagan1625efc2021-06-10 18:24:34 +0100848TEST_CASE("DequantizeEndToEndOffsetInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100849{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000850 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100851}
852
Sadik Armagan1625efc2021-06-10 18:24:34 +0100853TEST_CASE("RefDetectionPostProcessRegularNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000854{
855 std::vector<float> boxEncodings({
856 0.0f, 0.0f, 0.0f, 0.0f,
857 0.0f, 1.0f, 0.0f, 0.0f,
858 0.0f, -1.0f, 0.0f, 0.0f,
859 0.0f, 0.0f, 0.0f, 0.0f,
860 0.0f, 1.0f, 0.0f, 0.0f,
861 0.0f, 0.0f, 0.0f, 0.0f
862 });
863 std::vector<float> scores({
864 0.0f, 0.9f, 0.8f,
865 0.0f, 0.75f, 0.72f,
866 0.0f, 0.6f, 0.5f,
867 0.0f, 0.93f, 0.95f,
868 0.0f, 0.5f, 0.4f,
869 0.0f, 0.3f, 0.2f
870 });
871 std::vector<float> anchors({
872 0.5f, 0.5f, 1.0f, 1.0f,
873 0.5f, 0.5f, 1.0f, 1.0f,
874 0.5f, 0.5f, 1.0f, 1.0f,
875 0.5f, 10.5f, 1.0f, 1.0f,
876 0.5f, 10.5f, 1.0f, 1.0f,
877 0.5f, 100.5f, 1.0f, 1.0f
878 });
879 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
880}
881
882inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
883{
884 for (size_t i = 0; i < info.GetNumElements(); i++)
885 {
886 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
887 }
888}
889
Sadik Armagan1625efc2021-06-10 18:24:34 +0100890TEST_CASE("RefDetectionPostProcessRegularNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000891{
892 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
893 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
894 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
895
896 boxEncodingsInfo.SetQuantizationScale(1.0f);
897 boxEncodingsInfo.SetQuantizationOffset(1);
898 scoresInfo.SetQuantizationScale(0.01f);
899 scoresInfo.SetQuantizationOffset(0);
900 anchorsInfo.SetQuantizationScale(0.5f);
901 anchorsInfo.SetQuantizationOffset(0);
902
903 std::vector<float> boxEncodings({
904 0.0f, 0.0f, 0.0f, 0.0f,
905 0.0f, 1.0f, 0.0f, 0.0f,
906 0.0f, -1.0f, 0.0f, 0.0f,
907 0.0f, 0.0f, 0.0f, 0.0f,
908 0.0f, 1.0f, 0.0f, 0.0f,
909 0.0f, 0.0f, 0.0f, 0.0f
910 });
911 std::vector<float> scores({
912 0.0f, 0.9f, 0.8f,
913 0.0f, 0.75f, 0.72f,
914 0.0f, 0.6f, 0.5f,
915 0.0f, 0.93f, 0.95f,
916 0.0f, 0.5f, 0.4f,
917 0.0f, 0.3f, 0.2f
918 });
919 std::vector<float> anchors({
920 0.5f, 0.5f, 1.0f, 1.0f,
921 0.5f, 0.5f, 1.0f, 1.0f,
922 0.5f, 0.5f, 1.0f, 1.0f,
923 0.5f, 10.5f, 1.0f, 1.0f,
924 0.5f, 10.5f, 1.0f, 1.0f,
925 0.5f, 100.5f, 1.0f, 1.0f
926 });
927
928 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
929 std::vector<uint8_t> qScores(scores.size(), 0);
930 std::vector<uint8_t> qAnchors(anchors.size(), 0);
931 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
932 QuantizeData(qScores.data(), scores.data(), scoresInfo);
933 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000934 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000935 qScores, qAnchors,
936 1.0f, 1, 0.01f, 0, 0.5f, 0);
937}
938
Sadik Armagan1625efc2021-06-10 18:24:34 +0100939TEST_CASE("RefDetectionPostProcessFastNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000940{
941 std::vector<float> boxEncodings({
942 0.0f, 0.0f, 0.0f, 0.0f,
943 0.0f, 1.0f, 0.0f, 0.0f,
944 0.0f, -1.0f, 0.0f, 0.0f,
945 0.0f, 0.0f, 0.0f, 0.0f,
946 0.0f, 1.0f, 0.0f, 0.0f,
947 0.0f, 0.0f, 0.0f, 0.0f
948 });
949 std::vector<float> scores({
950 0.0f, 0.9f, 0.8f,
951 0.0f, 0.75f, 0.72f,
952 0.0f, 0.6f, 0.5f,
953 0.0f, 0.93f, 0.95f,
954 0.0f, 0.5f, 0.4f,
955 0.0f, 0.3f, 0.2f
956 });
957 std::vector<float> anchors({
958 0.5f, 0.5f, 1.0f, 1.0f,
959 0.5f, 0.5f, 1.0f, 1.0f,
960 0.5f, 0.5f, 1.0f, 1.0f,
961 0.5f, 10.5f, 1.0f, 1.0f,
962 0.5f, 10.5f, 1.0f, 1.0f,
963 0.5f, 100.5f, 1.0f, 1.0f
964 });
965 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
966}
967
Sadik Armagan1625efc2021-06-10 18:24:34 +0100968TEST_CASE("RefDetectionPostProcessFastNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000969{
970 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
971 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
972 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
973
974 boxEncodingsInfo.SetQuantizationScale(1.0f);
975 boxEncodingsInfo.SetQuantizationOffset(1);
976 scoresInfo.SetQuantizationScale(0.01f);
977 scoresInfo.SetQuantizationOffset(0);
978 anchorsInfo.SetQuantizationScale(0.5f);
979 anchorsInfo.SetQuantizationOffset(0);
980
981 std::vector<float> boxEncodings({
982 0.0f, 0.0f, 0.0f, 0.0f,
983 0.0f, 1.0f, 0.0f, 0.0f,
984 0.0f, -1.0f, 0.0f, 0.0f,
985 0.0f, 0.0f, 0.0f, 0.0f,
986 0.0f, 1.0f, 0.0f, 0.0f,
987 0.0f, 0.0f, 0.0f, 0.0f
988 });
989 std::vector<float> scores({
990 0.0f, 0.9f, 0.8f,
991 0.0f, 0.75f, 0.72f,
992 0.0f, 0.6f, 0.5f,
993 0.0f, 0.93f, 0.95f,
994 0.0f, 0.5f, 0.4f,
995 0.0f, 0.3f, 0.2f
996 });
997 std::vector<float> anchors({
998 0.5f, 0.5f, 1.0f, 1.0f,
999 0.5f, 0.5f, 1.0f, 1.0f,
1000 0.5f, 0.5f, 1.0f, 1.0f,
1001 0.5f, 10.5f, 1.0f, 1.0f,
1002 0.5f, 10.5f, 1.0f, 1.0f,
1003 0.5f, 100.5f, 1.0f, 1.0f
1004 });
1005
1006 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
1007 std::vector<uint8_t> qScores(scores.size(), 0);
1008 std::vector<uint8_t> qAnchors(anchors.size(), 0);
1009 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
1010 QuantizeData(qScores.data(), scores.data(), scoresInfo);
1011 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +00001012 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +00001013 qScores, qAnchors,
1014 1.0f, 1, 0.01f, 0, 0.5f, 0);
1015}
1016
Jan Eilersa83af7b2020-03-18 15:58:11 +00001017// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +01001018TEST_CASE("RefHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001019{
1020 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1021}
1022
Sadik Armagan1625efc2021-06-10 18:24:34 +01001023TEST_CASE("RefHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001024{
1025 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
1026}
1027
Sadik Armagan1625efc2021-06-10 18:24:34 +01001028TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001029{
1030 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
1031}
1032
Sadik Armagan1625efc2021-06-10 18:24:34 +01001033TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001034{
1035 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
1036}
1037
Sadik Armagan1625efc2021-06-10 18:24:34 +01001038TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001039{
1040 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
1041}
1042
Sadik Armagan20bea002019-10-16 09:29:38 +01001043// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001044TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +01001045{
1046 LogSoftmaxEndToEndTest(defaultBackends);
1047}
1048
Sadik Armagan1625efc2021-06-10 18:24:34 +01001049TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +01001050{
1051 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1052}
1053
Sadik Armagan1625efc2021-06-10 18:24:34 +01001054TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +01001055{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001056 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001057}
1058
Sadik Armagan1625efc2021-06-10 18:24:34 +01001059TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +01001060{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001061 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001062}
1063
Sadik Armagan1625efc2021-06-10 18:24:34 +01001064TEST_CASE("RefSpaceToDepthNhwcEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001065{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001066 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001067}
1068
Sadik Armagan1625efc2021-06-10 18:24:34 +01001069TEST_CASE("RefSpaceToDepthNchwEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001070{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001071 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001072}
1073
Sadik Armagan1625efc2021-06-10 18:24:34 +01001074TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001075{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001076 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001077}
1078
Sadik Armagan1625efc2021-06-10 18:24:34 +01001079TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001080{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001081 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001082}
1083
Sadik Armagan1625efc2021-06-10 18:24:34 +01001084TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001085{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001086 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001087}
1088
Sadik Armagan1625efc2021-06-10 18:24:34 +01001089TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001090{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001091 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001092}
1093
Sadik Armagan1625efc2021-06-10 18:24:34 +01001094TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001095{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001096 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001097}
1098
Sadik Armagan1625efc2021-06-10 18:24:34 +01001099TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001100{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001101 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001102}
1103
Sadik Armagan1625efc2021-06-10 18:24:34 +01001104TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001105{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001106 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001107}
1108
Sadik Armagan1625efc2021-06-10 18:24:34 +01001109TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001110{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001111 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001112}
1113
Sadik Armagan1625efc2021-06-10 18:24:34 +01001114TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001115{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001116 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001117}
1118
Sadik Armagan1625efc2021-06-10 18:24:34 +01001119TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001120{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001121 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1122}
1123
Sadik Armagan1625efc2021-06-10 18:24:34 +01001124TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001125{
1126 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1127}
1128
Sadik Armagan1625efc2021-06-10 18:24:34 +01001129TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001130{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001131 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001132}
1133
Sadik Armagan1625efc2021-06-10 18:24:34 +01001134TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001135{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001136 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001137}
1138
Sadik Armagan1625efc2021-06-10 18:24:34 +01001139TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001140{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001141 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001142}
1143
Sadik Armagan1625efc2021-06-10 18:24:34 +01001144TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001145{
1146 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1147}
1148
Sadik Armagan1625efc2021-06-10 18:24:34 +01001149TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001150{
1151 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1152}
1153
Sadik Armagan1625efc2021-06-10 18:24:34 +01001154TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001155{
1156 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1157}
1158
Sadik Armagan1625efc2021-06-10 18:24:34 +01001159TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001160{
1161 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1162}
1163
Sadik Armagan1625efc2021-06-10 18:24:34 +01001164TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001165{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001166 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001167}
1168
Sadik Armagan1625efc2021-06-10 18:24:34 +01001169TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001170{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001171 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001172}
1173
Sadik Armagan1625efc2021-06-10 18:24:34 +01001174TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001175{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001176 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001177}
1178
Sadik Armagan1625efc2021-06-10 18:24:34 +01001179TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001180{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001181 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001182}
1183
Cian McGriskin160edb32023-07-25 14:15:45 +01001184// Tile
1185TEST_CASE("RefTileEndToEndFloat32")
1186{
1187 TileEndToEnd<armnn::DataType::Float32>(defaultBackends);
1188}
1189
1190TEST_CASE("RefTileEndToEndFloat16")
1191{
1192 TileEndToEnd<armnn::DataType::Float16>(defaultBackends);
1193}
1194
1195TEST_CASE("RefTileEndToEndQAsymmS8")
1196{
1197 TileEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1198}
1199
1200TEST_CASE("RefTileEndToEndQAsymmU8")
1201{
1202 TileEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1203}
1204
1205TEST_CASE("RefTileEndToEndQSymmS8")
1206{
1207 TileEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1208}
1209
1210TEST_CASE("RefTileEndToEndQSymmS16")
1211{
1212 TileEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1213}
1214
1215TEST_CASE("RefTileEndToEndSigned32")
1216{
1217 TileEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1218}
1219
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001220// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001221TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001222{
1223 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1224 defaultBackends, armnn::DataLayout::NCHW);
1225}
1226
Sadik Armagan1625efc2021-06-10 18:24:34 +01001227TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001228{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001229 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001230 defaultBackends, armnn::DataLayout::NCHW);
1231}
1232
Sadik Armagan1625efc2021-06-10 18:24:34 +01001233TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001234{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001235 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001236 defaultBackends, armnn::DataLayout::NCHW);
1237}
1238
Sadik Armagan1625efc2021-06-10 18:24:34 +01001239TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001240{
1241 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1242 defaultBackends, armnn::DataLayout::NHWC);
1243}
1244
Sadik Armagan1625efc2021-06-10 18:24:34 +01001245TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001246{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001247 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001248 defaultBackends, armnn::DataLayout::NHWC);
1249}
1250
Sadik Armagan1625efc2021-06-10 18:24:34 +01001251TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001252{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001253 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001254 defaultBackends, armnn::DataLayout::NHWC);
1255}
1256
Teresa Charlin6bc85252022-12-06 20:43:06 +00001257// Transpose
1258TEST_CASE("RefTransposeEndToEndTest")
1259{
1260 TransposeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1261}
1262
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001263// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001264TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001265{
1266 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1267}
1268
Sadik Armagan1625efc2021-06-10 18:24:34 +01001269TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001270{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001271 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001272}
1273
Sadik Armagan1625efc2021-06-10 18:24:34 +01001274TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001275{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001276 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001277}
1278
Sadik Armagan1625efc2021-06-10 18:24:34 +01001279TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001280{
1281 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1282}
1283
Sadik Armagan1625efc2021-06-10 18:24:34 +01001284TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001285{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001286 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001287}
1288
Sadik Armagan1625efc2021-06-10 18:24:34 +01001289TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001290{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001291 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001292}
1293
1294// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001295TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001296{
1297 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1298}
1299
Sadik Armagan1625efc2021-06-10 18:24:34 +01001300TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001301{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001302 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001303}
1304
Sadik Armagan1625efc2021-06-10 18:24:34 +01001305TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001306{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001307 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001308}
1309
Sadik Armagan1625efc2021-06-10 18:24:34 +01001310TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001311{
1312 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1313}
1314
Sadik Armagan1625efc2021-06-10 18:24:34 +01001315TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001316{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001317 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001318}
1319
Sadik Armagan1625efc2021-06-10 18:24:34 +01001320TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001321{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001322 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001323}
1324
Sadik Armagan062e0e92019-10-14 10:31:43 +01001325// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001326TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001327{
1328 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1329}
1330
Sadik Armagan1625efc2021-06-10 18:24:34 +01001331TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001332{
1333 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1334}
1335
Sadik Armagan1625efc2021-06-10 18:24:34 +01001336TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001337{
1338 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1339}
1340
Sadik Armagan1625efc2021-06-10 18:24:34 +01001341TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001342{
1343 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1344}
1345
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001346// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001347TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001348{
1349 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1350}
1351
Sadik Armagan1625efc2021-06-10 18:24:34 +01001352TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001353{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001354 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001355}
1356
Sadik Armagan1625efc2021-06-10 18:24:34 +01001357TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001358{
1359 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1360}
1361
Sadik Armagan1625efc2021-06-10 18:24:34 +01001362TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001363{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001364 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001365}
1366
Sadik Armagan1625efc2021-06-10 18:24:34 +01001367TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001368{
1369 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1370}
1371
Sadik Armagan1625efc2021-06-10 18:24:34 +01001372TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001373{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001374 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001375}
1376
Sadik Armagan1625efc2021-06-10 18:24:34 +01001377TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001378{
1379 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1380}
1381
Sadik Armagan1625efc2021-06-10 18:24:34 +01001382TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001383{
1384
Derek Lambertif90c56d2020-01-10 17:14:08 +00001385 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001386}
1387
Sadik Armagan1625efc2021-06-10 18:24:34 +01001388TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001389{
1390 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1391}
1392
Sadik Armagan1625efc2021-06-10 18:24:34 +01001393TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001394{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001395 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001396}
1397
Sadik Armagan1625efc2021-06-10 18:24:34 +01001398TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001399{
1400 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1401}
1402
Sadik Armagan1625efc2021-06-10 18:24:34 +01001403TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001404{
1405
Derek Lambertif90c56d2020-01-10 17:14:08 +00001406 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001407}
1408
Sadik Armagan1625efc2021-06-10 18:24:34 +01001409TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001410{
1411 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1412}
1413
Sadik Armagan1625efc2021-06-10 18:24:34 +01001414TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001415{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001416 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001417}
1418
Sadik Armagan1625efc2021-06-10 18:24:34 +01001419TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001420{
1421 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1422}
1423
Sadik Armagan1625efc2021-06-10 18:24:34 +01001424TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001425{
1426
Derek Lambertif90c56d2020-01-10 17:14:08 +00001427 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001428}
1429
Sadik Armagan1625efc2021-06-10 18:24:34 +01001430TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001431{
1432 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1433}
1434
Sadik Armagan1625efc2021-06-10 18:24:34 +01001435TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001436{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001437 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001438}
1439
Sadik Armagan1625efc2021-06-10 18:24:34 +01001440TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001441{
1442 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1443}
1444
Sadik Armagan1625efc2021-06-10 18:24:34 +01001445TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001446{
1447
Derek Lambertif90c56d2020-01-10 17:14:08 +00001448 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001449}
1450
Sadik Armagan1625efc2021-06-10 18:24:34 +01001451TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001452{
1453 QLstmEndToEnd(defaultBackends);
1454}
1455
Sadik Armagan1625efc2021-06-10 18:24:34 +01001456TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001457{
1458 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1459}
1460
Sadik Armagan1625efc2021-06-10 18:24:34 +01001461TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001462{
1463 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1464}
1465
Sadik Armagan1625efc2021-06-10 18:24:34 +01001466TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001467{
1468 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1469}
1470
Sadik Armagan1625efc2021-06-10 18:24:34 +01001471TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001472{
1473 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1474}
1475
Sadik Armagan1625efc2021-06-10 18:24:34 +01001476TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001477{
1478 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1479}
1480
Sadik Armagan1625efc2021-06-10 18:24:34 +01001481TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001482{
1483 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1484}
1485
Teresa Charlinc17a35f2023-01-12 14:13:09 +00001486// Reduce
1487TEST_CASE("RefReduceEndToEndTest")
1488{
1489 ReduceEndToEnd<armnn::DataType::Float32>(defaultBackends);
1490}
1491
1492TEST_CASE("RefReduceEndToEndTestFloat16")
1493{
1494 ReduceEndToEnd<armnn::DataType::Float16>(defaultBackends);
1495}
1496
1497// Reshape
1498TEST_CASE("RefReshapeEndToEndTest")
1499{
1500 ReshapeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1501}
1502
1503TEST_CASE("RefReshapeEndToEndTestFloat16")
1504{
1505 ReshapeEndToEndFloat16<armnn::DataType::Float16>(defaultBackends);
1506}
1507
David Monahan646bc8a2022-01-31 14:29:14 +00001508TEST_CASE("RefForceImportWithAlignedBuffersEndToEndTest")
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001509{
David Monahan646bc8a2022-01-31 14:29:14 +00001510 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1511}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001512
David Monahan646bc8a2022-01-31 14:29:14 +00001513TEST_CASE("RefForceImportWithMisalignedInputBuffersEndToEndTest")
1514{
1515 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1516}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001517
David Monahan646bc8a2022-01-31 14:29:14 +00001518TEST_CASE("RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1519{
1520 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1521}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001522
David Monahan646bc8a2022-01-31 14:29:14 +00001523TEST_CASE("RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1524{
1525 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001526}
1527
David Monahan16829712022-02-03 17:04:59 +00001528TEST_CASE("RefForceImportRepeatedInferencesEndToEndTest")
1529{
1530 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1531}
1532
1533TEST_CASE("RefForceImportRepeatedInferencesInvertedEndToEndTest")
1534{
1535 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1536}
1537
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001538#if !defined(__ANDROID__)
1539// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001540TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001541{
David Monahan4f1e8e42019-09-04 09:22:10 +01001542 ImportNonAlignedInputPointerTest(defaultBackends);
1543}
1544
Sadik Armagan1625efc2021-06-10 18:24:34 +01001545TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01001546{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001547 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001548}
1549
Sadik Armagan1625efc2021-06-10 18:24:34 +01001550TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001551{
1552 ImportAlignedPointerTest(defaultBackends);
1553}
1554
Sadik Armagan1625efc2021-06-10 18:24:34 +01001555TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001556{
1557 ImportOnlyWorkload(defaultBackends);
1558}
1559
Sadik Armagan1625efc2021-06-10 18:24:34 +01001560TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001561{
1562 ExportOnlyWorkload(defaultBackends);
1563}
1564
Sadik Armagan1625efc2021-06-10 18:24:34 +01001565TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001566{
1567 ImportAndExportWorkload(defaultBackends);
1568}
1569
Sadik Armagan1625efc2021-06-10 18:24:34 +01001570TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001571{
1572 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1573}
1574
Sadik Armagan1625efc2021-06-10 18:24:34 +01001575TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00001576{
1577 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1578}
1579
Sadik Armagan1625efc2021-06-10 18:24:34 +01001580TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01001581{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001582 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01001583}
Finn Williamsb8181f72021-04-07 10:23:21 +01001584
Sadik Armagan1625efc2021-06-10 18:24:34 +01001585TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01001586{
1587 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1588}
Keith Davise813d672021-04-22 10:10:34 +01001589
Sadik Armagan1625efc2021-06-10 18:24:34 +01001590TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01001591{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001592 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01001593}
Mike Kelly3ec30772023-03-08 13:47:17 +00001594
1595TEST_CASE("RefAddEndToEndTestFloat32")
1596{
1597 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
1598}
1599TEST_CASE("RefAddEndToEndTestUint8")
1600{
1601 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Add);
1602}
1603TEST_CASE("RefDivEndToEndTestFloat32")
1604{
1605 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Div);
1606}
1607TEST_CASE("RefDivEndToEndTestUint8")
1608{
1609 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Div);
1610}
1611TEST_CASE("RefMulEndToEndTestFloat32")
1612{
1613 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Mul);
1614}
1615TEST_CASE("RefMulEndToEndTestUint8")
1616{
1617 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Mul);
1618}
1619TEST_CASE("RefSubEndToEndTestFloat32")
1620{
1621 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
1622}
1623TEST_CASE("RefSubEndToEndTestUint8")
1624{
1625 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Sub);
1626}
1627TEST_CASE("RefMaximumEndToEndTestFloat32")
1628{
1629 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Maximum);
1630}
1631TEST_CASE("RefMaximumEndToEndTestUint8")
1632{
1633 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Maximum);
1634}
1635TEST_CASE("RefMinimumEndToEndTestFloat32")
1636{
1637 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Minimum);
1638}
1639TEST_CASE("RefMinimumEndToEndTestUint8")
1640{
1641 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Minimum);
1642}
John Mcloughlin0ec00872023-05-15 17:03:49 +01001643TEST_CASE("RefPowerEndToEndTestFloat32")
1644{
1645 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Power);
1646}
1647TEST_CASE("RefPowerEndToEndTestUint8")
1648{
1649 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Power);
1650}
1651TEST_CASE("RefSquaredDifferenceEndToEndTestFloat32")
1652{
1653 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::SqDiff);
1654}
1655TEST_CASE("RefSquaredDifferenceEndToEndTestUint8")
1656{
1657 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::SqDiff);
1658}
Mike Kelly4cc341c2023-07-07 15:43:06 +01001659
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001660#endif
1661
Mike Kelly4cc341c2023-07-07 15:43:06 +01001662// Backend Optimization Tests
1663TEST_CASE("RefReshapeRemovalSimpleCaseEndToEnd")
1664{
1665 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(defaultBackends);
1666}
1667
1668TEST_CASE("RefReshapeRemovalNCHWFirstEndToEnd")
1669{
1670 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
1671}
1672
1673TEST_CASE("RefReshapeRemovalNCHWSecondEndToEnd")
1674{
1675 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
1676}
Sadik Armagan1625efc2021-06-10 18:24:34 +01001677}