blob: 521854b12b106ef1e30621f270d504e4ad6647c4 [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Mike Kelly386ff1a2021-03-29 15:04:50 +01002// Copyright © 2017 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>
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00009#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Francis Murtaghe24e3cd2019-06-25 14:41:55 +010010#include <backendsCommon/test/BatchToSpaceNdEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010011#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010012#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010013#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010014#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010015#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060016#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010017#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armaganf0a6dec2021-03-25 07:46:55 +000018#include <backendsCommon/test/FullyConnectedEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000019#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010020#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010021#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010022#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010023#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010024#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010025#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010026#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010027#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly386ff1a2021-03-29 15:04:50 +010028#include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010029#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010030
31#include <boost/test/unit_test.hpp>
Éanna Ó Catháin20e58802018-12-04 10:29:06 +000032#include <boost/test/execution_monitor.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010033
34BOOST_AUTO_TEST_SUITE(RefEndToEnd)
35
narpra01b9546cf2018-11-20 15:21:28 +000036std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
37
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010038// Abs
39BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
40{
josh minor4a3c6102020-01-06 16:40:46 -060041 std::vector<float> expectedOutput =
42 {
43 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
44 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
45 };
46
47 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
48 UnaryOperation::Abs,
49 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010050}
51
52BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestUint8)
53{
josh minor4a3c6102020-01-06 16:40:46 -060054 // Note the expected output will be implicitly quantized by the below test function
55 std::vector<float> expectedOutput =
56 {
57 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
58 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
59 };
60
61 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
62 UnaryOperation::Abs,
63 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010064}
65
66BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestInt16)
67{
josh minor4a3c6102020-01-06 16:40:46 -060068 // Note the expected output will be implicitly quantized by the below test function
69 std::vector<float> expectedOutput =
70 {
71 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
72 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
73 };
74
75 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
76 UnaryOperation::Abs,
77 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010078}
79
80// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010081BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Float32)
82{
narpra01b9546cf2018-11-20 15:21:28 +000083 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010084}
85
86BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Uint8)
87{
narpra01b9546cf2018-11-20 15:21:28 +000088 BOOST_TEST(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010089}
90
91BOOST_AUTO_TEST_CASE(Unsigned8)
92{
93 using namespace armnn;
94
95 // Create runtime in which test will run
96 armnn::IRuntime::CreationOptions options;
97 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
98
99 // Builds up the structure of the network.
100 armnn::INetworkPtr net(INetwork::Create());
101
102 IConnectableLayer* input = net->AddInputLayer(0, "input");
103 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
104 IConnectableLayer* output = net->AddOutputLayer(0, "output");
105
106 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
107 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
108
109 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000110 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100111 inputTensorInfo.SetQuantizationOffset(100);
112 inputTensorInfo.SetQuantizationScale(10000.0f);
113 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
114
Derek Lambertif90c56d2020-01-10 17:14:08 +0000115 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100116 outputTensorInfo.SetQuantizationOffset(0);
117 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
118 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
119
120 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000121 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100122
123 // Loads it into the runtime.
124 NetworkId netId;
125 auto error = runtime->LoadNetwork(netId, std::move(optNet));
126 BOOST_TEST(error == Status::Success);
127
128 // Creates structures for input & output.
129 std::vector<uint8_t> inputData
130 {
131 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
132 };
133 std::vector<uint8_t> outputData(5);
134
135 armnn::InputTensors inputTensors
136 {
137 {0, armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
138 };
139 armnn::OutputTensors outputTensors
140 {
141 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
142 };
143
144 // Does the inference.
145 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
146
147 // Checks the results.
148 BOOST_TEST(outputData[0] == 0);
149 BOOST_TEST(outputData[1] == 0);
150 BOOST_TEST(outputData[2] == 0);
151 BOOST_TEST(outputData[3] == 255); // softmax has been saturated.
152 BOOST_TEST(outputData[4] == 0);
153}
154
155BOOST_AUTO_TEST_CASE(TrivialAdd)
156{
157 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
158
159 using namespace armnn;
160
161 // Create runtime in which test will run
162 armnn::IRuntime::CreationOptions options;
163 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
164
165 // Builds up the structure of the network.
166 armnn::INetworkPtr net(INetwork::Create());
167
168 IConnectableLayer* input1 = net->AddInputLayer(0);
169 IConnectableLayer* input2 = net->AddInputLayer(1);
170 IConnectableLayer* add = net->AddAdditionLayer();
171 IConnectableLayer* output = net->AddOutputLayer(0);
172
173 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
174 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
175 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
176
177 // Sets the tensors in the network.
178 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
179 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
180 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
181 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
182
183 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000184 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100185
186 // Loads it into the runtime.
187 NetworkId netId;
188 runtime->LoadNetwork(netId, std::move(optNet));
189
190 // Creates structures for input & output - matching android nn test.
191 std::vector<float> input1Data
192 {
193 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
194 };
195 std::vector<float> input2Data
196 {
197 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
198 };
199 std::vector<float> outputData(12);
200
201 InputTensors inputTensors
202 {
203 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
204 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
205 };
206 OutputTensors outputTensors
207 {
208 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
209 };
210
211 // Does the inference.
212 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
213
214 // Checks the results
215 BOOST_TEST(outputData[0] == 101);
216 BOOST_TEST(outputData[1] == 202);
217 BOOST_TEST(outputData[2] == 303);
218 BOOST_TEST(outputData[3] == 404);
219 BOOST_TEST(outputData[4] == 505);
220 BOOST_TEST(outputData[5] == 606);
221 BOOST_TEST(outputData[6] == 707);
222 BOOST_TEST(outputData[7] == 808);
223 BOOST_TEST(outputData[8] == 909);
224 BOOST_TEST(outputData[9] == 1010);
225 BOOST_TEST(outputData[10] == 1111);
226 BOOST_TEST(outputData[11] == 1212);
227}
228
229BOOST_AUTO_TEST_CASE(MultipleOutputs)
230{
231 using namespace armnn;
232
233 // Create runtime in which test will run
234 armnn::IRuntime::CreationOptions options;
235 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
236
237 // Builds up the structure of the network.
238 INetworkPtr net(INetwork::Create());
239
240 IConnectableLayer* input = net->AddInputLayer(0);
241
242 // ReLu1
243 ActivationDescriptor activation1Descriptor;
244 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
245 activation1Descriptor.m_A = 1.f;
246 activation1Descriptor.m_B = -1.f;
247 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
248
249 // ReLu6
250 ActivationDescriptor activation2Descriptor;
251 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
252 activation2Descriptor.m_A = 6.0f;
253 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
254
255 // BoundedReLu(min=2, max=5)
256 ActivationDescriptor activation3Descriptor;
257 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
258 activation3Descriptor.m_A = 5.0f;
259 activation3Descriptor.m_B = 2.0f;
260 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
261
262 IConnectableLayer* output1 = net->AddOutputLayer(0);
263 IConnectableLayer* output2 = net->AddOutputLayer(1);
264 IConnectableLayer* output3 = net->AddOutputLayer(2);
265
266 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
267 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
268 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
269
270 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
271 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
272 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
273
274 // Sets the tensors in the network.
275 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
276 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
277 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
278 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
279 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
280
281 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000282 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100283
284 // Loads it into the runtime.
285 NetworkId netId;
286 runtime->LoadNetwork(netId, std::move(optNet));
287
288 // Creates structures for input & output.
289 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 };
290
291 std::vector<float> output1Data(inputData.size());
292 std::vector<float> output2Data(inputData.size());
293 std::vector<float> output3Data(inputData.size());
294
295 InputTensors inputTensors
296 {
297 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
298 };
299 OutputTensors outputTensors
300 {
301 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
302 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
303 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
304 };
305
306 // Does the inference.
307 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
308
309 // Checks the results.
310 BOOST_TEST(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
311 BOOST_TEST(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
312 BOOST_TEST(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]
313}
314
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000315BOOST_AUTO_TEST_CASE(TrivialMin)
316{
317 using namespace armnn;
318
319 // Create runtime in which test will run
320 armnn::IRuntime::CreationOptions options;
321 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
322
323 // Builds up the structure of the network.
324 armnn::INetworkPtr net(INetwork::Create());
325
326 IConnectableLayer* input1 = net->AddInputLayer(0);
327 IConnectableLayer* input2 = net->AddInputLayer(1);
328 IConnectableLayer* min = net->AddMinimumLayer();
329 IConnectableLayer* output = net->AddOutputLayer(0);
330
331 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
332 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
333 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
334
335 // Sets the tensors in the network.
336 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
337 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
338 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
339 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
340
341 // optimize the network
342 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
343
344 // Loads it into the runtime.
345 NetworkId netId;
346 runtime->LoadNetwork(netId, std::move(optNet));
347
348 // Creates structures for input & output - matching android nn test.
349 std::vector<float> input1Data
350 {
351 1.0f, 2.0f, 3.0f, 4.0f
352 };
353 std::vector<float> input2Data
354 {
355 2.0f, 1.0f, 5.0f, 2.0f
356 };
357 std::vector<float> outputData(4);
358
359 InputTensors inputTensors
360 {
361 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
362 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
363 };
364 OutputTensors outputTensors
365 {
366 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
367 };
368
369 // Does the inference.
370 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
371
372 // Checks the results
373 BOOST_TEST(outputData[0] == 1);
374 BOOST_TEST(outputData[1] == 1);
375 BOOST_TEST(outputData[2] == 3);
376 BOOST_TEST(outputData[3] == 2);
377}
378
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000379BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndTest)
380{
kevmay012b4d88e2019-01-24 14:05:09 +0000381 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
382 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000383
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100384 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
385 ComparisonOperation::Equal,
386 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000387}
388
389BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndTest)
390{
kevmay012b4d88e2019-01-24 14:05:09 +0000391 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
392 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000393
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100394 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
395 ComparisonOperation::Greater,
396 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000397}
398
399BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndUint8Test)
400{
401 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
402 0, 0, 0, 0, 1, 1, 1, 1 });
403
Derek Lambertif90c56d2020-01-10 17:14:08 +0000404 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100405 ComparisonOperation::Equal,
406 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000407}
408
409BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndUint8Test)
410{
411 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
412 0, 0, 0, 0, 0, 0, 0, 0 });
413
Derek Lambertif90c56d2020-01-10 17:14:08 +0000414 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100415 ComparisonOperation::Greater,
416 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000417}
418
419BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndTest)
420{
kevmay012b4d88e2019-01-24 14:05:09 +0000421 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
422 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000423
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100424 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
425 ComparisonOperation::Equal,
426 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000427}
428
429BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndTest)
430{
kevmay012b4d88e2019-01-24 14:05:09 +0000431 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
432 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000433
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100434 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
435 ComparisonOperation::Greater,
436 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000437}
438
439BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndUint8Test)
440{
441 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
442 0, 0, 0, 0, 0, 0 });
443
Derek Lambertif90c56d2020-01-10 17:14:08 +0000444 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100445 ComparisonOperation::Equal,
446 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000447}
448
449BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndUint8Test)
450{
451 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
452 1, 1, 1, 1, 1, 1 });
453
Derek Lambertif90c56d2020-01-10 17:14:08 +0000454 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100455 ComparisonOperation::Greater,
456 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000457}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000458
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100459BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NHWCTest)
460{
461 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
462}
463
464BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NHWCTest)
465{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000466 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100467}
468
469BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NHWCTest)
470{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000471 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100472}
473
474BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NCHWTest)
475{
476 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
477}
478
479BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NCHWTest)
480{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000481 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100482}
483
484BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NCHWTest)
485{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000486 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100487}
488
489BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest)
490{
491 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
492}
493
494BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NHWCTest)
495{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000496 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100497}
498
499BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest)
500{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000501 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100502}
503
504BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest)
505{
506 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
507}
508
509BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NCHWTest)
510{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000511 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100512}
513
514BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest)
515{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000516 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100517}
518
Jim Flynne242f2d2019-05-22 14:24:13 +0100519BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000520{
Jim Flynne242f2d2019-05-22 14:24:13 +0100521 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000522}
523
Jim Flynne242f2d2019-05-22 14:24:13 +0100524BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000525{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000526 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000527}
528
Jim Flynne242f2d2019-05-22 14:24:13 +0100529BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000530{
Jim Flynne242f2d2019-05-22 14:24:13 +0100531 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000532}
533
Jim Flynne242f2d2019-05-22 14:24:13 +0100534BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000535{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000536 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000537}
538
Jim Flynne242f2d2019-05-22 14:24:13 +0100539BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Test)
narpra01b9546cf2018-11-20 15:21:28 +0000540{
Jim Flynne242f2d2019-05-22 14:24:13 +0100541 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000542}
543
Jim Flynne242f2d2019-05-22 14:24:13 +0100544BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000545{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000546 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000547}
548
Jim Flynne242f2d2019-05-22 14:24:13 +0100549BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000550{
Jim Flynne242f2d2019-05-22 14:24:13 +0100551 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000552}
553
Jim Flynne242f2d2019-05-22 14:24:13 +0100554BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000555{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000556 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000557}
558
Jan Eilersbca73e12020-03-11 12:52:46 +0000559BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat32)
560{
561 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
562}
563
564BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat16)
565{
566 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
567}
568
569BOOST_AUTO_TEST_CASE(RefEluEndToEndTestBFloat16)
570{
571 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
572}
573
574BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmS8)
575{
576 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
577}
578
579BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmU8)
580{
581 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
582}
583
584BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQSymmS16)
585{
586 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
587}
588
Teresa Charlin44088502020-07-27 11:27:19 +0100589BOOST_AUTO_TEST_CASE(RefFillEndToEndTest)
590{
591 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
592}
593
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100594BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16)
595{
596 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
597}
Teresa Charlin44088502020-07-27 11:27:19 +0100598
599BOOST_AUTO_TEST_CASE(RefFillEndToEndTestInt32)
600{
601 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
602}
603
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000604BOOST_AUTO_TEST_CASE(RefFullyConnectedEndToEndTestInt32)
605{
606 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
607}
608
narpra01db2b1602019-01-23 15:23:11 +0000609BOOST_AUTO_TEST_CASE(RefGatherFloatTest)
610{
611 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
612}
613
614BOOST_AUTO_TEST_CASE(RefGatherUint8Test)
615{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000616 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000617}
618
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100619BOOST_AUTO_TEST_CASE(RefGatherInt16Test)
620{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000621 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100622}
623
narpra01db2b1602019-01-23 15:23:11 +0000624BOOST_AUTO_TEST_CASE(RefGatherMultiDimFloatTest)
625{
626 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
627}
628
629BOOST_AUTO_TEST_CASE(RefGatherMultiDimUint8Test)
630{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000631 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000632}
633
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100634BOOST_AUTO_TEST_CASE(RefGatherMultiDimInt16Test)
635{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000636 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100637}
638
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100639// DepthToSpace
640BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
641{
642 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
643}
644
645BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
646{
647 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
648}
649
650BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
651{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000652 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100653}
654
655BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
656{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000657 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100658}
659
660BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
661{
662 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
663}
664
665BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
666{
667 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
668}
669
670BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
671{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000672 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100673}
674
675BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
676{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000677 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100678}
679
680// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100681BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
682{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000683 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100684}
685
686BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
687{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000688 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100689}
690
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100691BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleInt16Test)
692{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000693 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100694}
695
696BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetInt16Test)
697{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000698 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100699}
700
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000701BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsTest)
702{
703 std::vector<float> boxEncodings({
704 0.0f, 0.0f, 0.0f, 0.0f,
705 0.0f, 1.0f, 0.0f, 0.0f,
706 0.0f, -1.0f, 0.0f, 0.0f,
707 0.0f, 0.0f, 0.0f, 0.0f,
708 0.0f, 1.0f, 0.0f, 0.0f,
709 0.0f, 0.0f, 0.0f, 0.0f
710 });
711 std::vector<float> scores({
712 0.0f, 0.9f, 0.8f,
713 0.0f, 0.75f, 0.72f,
714 0.0f, 0.6f, 0.5f,
715 0.0f, 0.93f, 0.95f,
716 0.0f, 0.5f, 0.4f,
717 0.0f, 0.3f, 0.2f
718 });
719 std::vector<float> anchors({
720 0.5f, 0.5f, 1.0f, 1.0f,
721 0.5f, 0.5f, 1.0f, 1.0f,
722 0.5f, 0.5f, 1.0f, 1.0f,
723 0.5f, 10.5f, 1.0f, 1.0f,
724 0.5f, 10.5f, 1.0f, 1.0f,
725 0.5f, 100.5f, 1.0f, 1.0f
726 });
727 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
728}
729
730inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
731{
732 for (size_t i = 0; i < info.GetNumElements(); i++)
733 {
734 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
735 }
736}
737
738BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsUint8Test)
739{
740 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
741 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
742 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
743
744 boxEncodingsInfo.SetQuantizationScale(1.0f);
745 boxEncodingsInfo.SetQuantizationOffset(1);
746 scoresInfo.SetQuantizationScale(0.01f);
747 scoresInfo.SetQuantizationOffset(0);
748 anchorsInfo.SetQuantizationScale(0.5f);
749 anchorsInfo.SetQuantizationOffset(0);
750
751 std::vector<float> boxEncodings({
752 0.0f, 0.0f, 0.0f, 0.0f,
753 0.0f, 1.0f, 0.0f, 0.0f,
754 0.0f, -1.0f, 0.0f, 0.0f,
755 0.0f, 0.0f, 0.0f, 0.0f,
756 0.0f, 1.0f, 0.0f, 0.0f,
757 0.0f, 0.0f, 0.0f, 0.0f
758 });
759 std::vector<float> scores({
760 0.0f, 0.9f, 0.8f,
761 0.0f, 0.75f, 0.72f,
762 0.0f, 0.6f, 0.5f,
763 0.0f, 0.93f, 0.95f,
764 0.0f, 0.5f, 0.4f,
765 0.0f, 0.3f, 0.2f
766 });
767 std::vector<float> anchors({
768 0.5f, 0.5f, 1.0f, 1.0f,
769 0.5f, 0.5f, 1.0f, 1.0f,
770 0.5f, 0.5f, 1.0f, 1.0f,
771 0.5f, 10.5f, 1.0f, 1.0f,
772 0.5f, 10.5f, 1.0f, 1.0f,
773 0.5f, 100.5f, 1.0f, 1.0f
774 });
775
776 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
777 std::vector<uint8_t> qScores(scores.size(), 0);
778 std::vector<uint8_t> qAnchors(anchors.size(), 0);
779 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
780 QuantizeData(qScores.data(), scores.data(), scoresInfo);
781 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000782 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000783 qScores, qAnchors,
784 1.0f, 1, 0.01f, 0, 0.5f, 0);
785}
786
787BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsTest)
788{
789 std::vector<float> boxEncodings({
790 0.0f, 0.0f, 0.0f, 0.0f,
791 0.0f, 1.0f, 0.0f, 0.0f,
792 0.0f, -1.0f, 0.0f, 0.0f,
793 0.0f, 0.0f, 0.0f, 0.0f,
794 0.0f, 1.0f, 0.0f, 0.0f,
795 0.0f, 0.0f, 0.0f, 0.0f
796 });
797 std::vector<float> scores({
798 0.0f, 0.9f, 0.8f,
799 0.0f, 0.75f, 0.72f,
800 0.0f, 0.6f, 0.5f,
801 0.0f, 0.93f, 0.95f,
802 0.0f, 0.5f, 0.4f,
803 0.0f, 0.3f, 0.2f
804 });
805 std::vector<float> anchors({
806 0.5f, 0.5f, 1.0f, 1.0f,
807 0.5f, 0.5f, 1.0f, 1.0f,
808 0.5f, 0.5f, 1.0f, 1.0f,
809 0.5f, 10.5f, 1.0f, 1.0f,
810 0.5f, 10.5f, 1.0f, 1.0f,
811 0.5f, 100.5f, 1.0f, 1.0f
812 });
813 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
814}
815
816BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
817{
818 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
819 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
820 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
821
822 boxEncodingsInfo.SetQuantizationScale(1.0f);
823 boxEncodingsInfo.SetQuantizationOffset(1);
824 scoresInfo.SetQuantizationScale(0.01f);
825 scoresInfo.SetQuantizationOffset(0);
826 anchorsInfo.SetQuantizationScale(0.5f);
827 anchorsInfo.SetQuantizationOffset(0);
828
829 std::vector<float> boxEncodings({
830 0.0f, 0.0f, 0.0f, 0.0f,
831 0.0f, 1.0f, 0.0f, 0.0f,
832 0.0f, -1.0f, 0.0f, 0.0f,
833 0.0f, 0.0f, 0.0f, 0.0f,
834 0.0f, 1.0f, 0.0f, 0.0f,
835 0.0f, 0.0f, 0.0f, 0.0f
836 });
837 std::vector<float> scores({
838 0.0f, 0.9f, 0.8f,
839 0.0f, 0.75f, 0.72f,
840 0.0f, 0.6f, 0.5f,
841 0.0f, 0.93f, 0.95f,
842 0.0f, 0.5f, 0.4f,
843 0.0f, 0.3f, 0.2f
844 });
845 std::vector<float> anchors({
846 0.5f, 0.5f, 1.0f, 1.0f,
847 0.5f, 0.5f, 1.0f, 1.0f,
848 0.5f, 0.5f, 1.0f, 1.0f,
849 0.5f, 10.5f, 1.0f, 1.0f,
850 0.5f, 10.5f, 1.0f, 1.0f,
851 0.5f, 100.5f, 1.0f, 1.0f
852 });
853
854 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
855 std::vector<uint8_t> qScores(scores.size(), 0);
856 std::vector<uint8_t> qAnchors(anchors.size(), 0);
857 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
858 QuantizeData(qScores.data(), scores.data(), scoresInfo);
859 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000860 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000861 qScores, qAnchors,
862 1.0f, 1, 0.01f, 0, 0.5f, 0);
863}
864
Jan Eilersa83af7b2020-03-18 15:58:11 +0000865// HardSwish
866BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat32)
867{
868 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
869}
870
871BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat16)
872{
873 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
874}
875
876BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestBFloat16)
877{
878HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
879}
880
881BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmS8)
882{
883 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
884}
885
886BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmU8)
887{
888 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
889}
890
891BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQSymmS16)
892{
893 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
894}
895
Sadik Armagan20bea002019-10-16 09:29:38 +0100896// LogSoftmax
897BOOST_AUTO_TEST_CASE(RefLogSoftmaxEndToEndTest)
898{
899 LogSoftmaxEndToEndTest(defaultBackends);
900}
901
Nikhil Raj747f5862019-07-19 15:15:23 +0100902BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestFloat32)
903{
904 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
905}
906
907BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestUint8)
908{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000909 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100910}
911
912BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestQSymm16)
913{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000914 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100915}
916
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100917BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100918{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100919 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100920}
921
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100922BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100923{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100924 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100925
Keith Davis9515c7e2019-06-21 09:33:59 +0100926}
927
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100928BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100929{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100930 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100931}
932
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100933BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100934{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100935 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100936}
937
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100938BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100939{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100940 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100941}
942
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100943BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100944{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000945 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100946}
947
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100948BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100949{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100950 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100951}
952
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100953BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100954{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100955 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100956}
957
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100958BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100959{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000960 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100961}
962
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100963BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100964{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000965 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100966}
967
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100968BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100969{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100970 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100971}
972
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100973BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100974{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100975 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
976}
977
978BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndTest)
979{
980 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
981}
982
983BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndUint8Test)
984{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000985 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100986}
987
988BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndUint8Test)
989{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000990 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100991}
992
993BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndUint8Test)
994{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000995 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100996}
997
998BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndTest)
999{
1000 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1001}
1002
1003BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndTest)
1004{
1005 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1006}
1007
1008BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndTest)
1009{
1010 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1011}
1012
1013BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndTest)
1014{
1015 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1016}
1017
1018BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndUint8Test)
1019{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001020 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001021}
1022
1023BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndUint8Test)
1024{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001025 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001026}
1027
1028BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndUint8Test)
1029{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001030 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001031}
1032
1033BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndUint8Test)
1034{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001035 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001036}
1037
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001038// TransposeConvolution2d
1039BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNchwTest)
1040{
1041 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1042 defaultBackends, armnn::DataLayout::NCHW);
1043}
1044
1045BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NchwTest)
1046{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001047 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001048 defaultBackends, armnn::DataLayout::NCHW);
1049}
1050
1051BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NchwTest)
1052{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001053 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001054 defaultBackends, armnn::DataLayout::NCHW);
1055}
1056
1057BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNhwcTest)
1058{
1059 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1060 defaultBackends, armnn::DataLayout::NHWC);
1061}
1062
1063BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NhwcTest)
1064{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001065 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001066 defaultBackends, armnn::DataLayout::NHWC);
1067}
1068
1069BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NhwcTest)
1070{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001071 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001072 defaultBackends, armnn::DataLayout::NHWC);
1073}
1074
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001075// Resize Bilinear
1076BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNchwTest)
1077{
1078 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1079}
1080
1081BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NchwTest)
1082{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001083 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001084}
1085
1086BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NchwTest)
1087{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001088 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001089}
1090
1091BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNhwcTest)
1092{
1093 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1094}
1095
1096BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NhwcTest)
1097{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001098 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001099}
1100
1101BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NhwcTest)
1102{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001103 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001104}
1105
1106// Resize NearestNeighbor
1107BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNchwTest)
1108{
1109 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1110}
1111
1112BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NchwTest)
1113{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001114 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001115}
1116
1117BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NchwTest)
1118{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001119 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001120}
1121
1122BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNhwcTest)
1123{
1124 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1125}
1126
1127BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NhwcTest)
1128{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001129 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001130}
1131
1132BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NhwcTest)
1133{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001134 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001135}
1136
Sadik Armagan062e0e92019-10-14 10:31:43 +01001137// InstanceNormalization
1138BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest1)
1139{
1140 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1141}
1142
1143BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest1)
1144{
1145 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1146}
1147
1148BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest2)
1149{
1150 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1151}
1152
1153BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest2)
1154{
1155 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1156}
1157
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001158// ArgMinMax
1159BOOST_AUTO_TEST_CASE(RefArgMaxSimpleTest)
1160{
1161 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1162}
1163
1164BOOST_AUTO_TEST_CASE(RefArgMaxSimpleUint8Test)
1165{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001166 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001167}
1168
1169BOOST_AUTO_TEST_CASE(RefArgMinSimpleTest)
1170{
1171 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1172}
1173
1174BOOST_AUTO_TEST_CASE(RefArgMinSimpleUint8Test)
1175{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001176 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001177}
1178
1179BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Test)
1180{
1181 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1182}
1183
1184BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Uint8Test)
1185{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001186 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001187}
1188
1189BOOST_AUTO_TEST_CASE(RefArgMinAxis0Test)
1190{
1191 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1192}
1193
1194BOOST_AUTO_TEST_CASE(RefArgMinAxis0Uint8Test)
1195{
1196
Derek Lambertif90c56d2020-01-10 17:14:08 +00001197 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001198}
1199
1200BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Test)
1201{
1202 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1203}
1204
1205BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Uint8Test)
1206{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001207 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001208}
1209
1210BOOST_AUTO_TEST_CASE(RefArgMinAxis1Test)
1211{
1212 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1213}
1214
1215BOOST_AUTO_TEST_CASE(RefArgMinAxis1Uint8Test)
1216{
1217
Derek Lambertif90c56d2020-01-10 17:14:08 +00001218 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001219}
1220
1221BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Test)
1222{
1223 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1224}
1225
1226BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Uint8Test)
1227{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001228 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001229}
1230
1231BOOST_AUTO_TEST_CASE(RefArgMinAxis2Test)
1232{
1233 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1234}
1235
1236BOOST_AUTO_TEST_CASE(RefArgMinAxis2Uint8Test)
1237{
1238
Derek Lambertif90c56d2020-01-10 17:14:08 +00001239 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001240}
1241
1242BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Test)
1243{
1244 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1245}
1246
1247BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Uint8Test)
1248{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001249 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001250}
1251
1252BOOST_AUTO_TEST_CASE(RefArgMinAxis3Test)
1253{
1254 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1255}
1256
1257BOOST_AUTO_TEST_CASE(RefArgMinAxis3Uint8Test)
1258{
1259
Derek Lambertif90c56d2020-01-10 17:14:08 +00001260 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001261}
1262
James Conroy0800bf52020-05-14 12:46:44 +01001263BOOST_AUTO_TEST_CASE(RefQLstmEndToEndTest)
1264{
1265 QLstmEndToEnd(defaultBackends);
1266}
1267
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001268BOOST_AUTO_TEST_CASE(RefRankEndToEndTest)
1269{
1270 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1271}
1272
1273BOOST_AUTO_TEST_CASE(RefRankEndToEndTestFloat16)
1274{
1275 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1276}
1277
1278BOOST_AUTO_TEST_CASE(RefRankEndToEndTestInt32)
1279{
1280 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1281}
1282
1283BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQAsymmS8)
1284{
1285 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1286}
1287
1288BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQSymmS16)
1289{
1290 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1291}
1292
1293BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQSymmS8)
1294{
1295 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1296}
1297
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001298#if !defined(__ANDROID__)
1299// Only run these tests on non Android platforms
1300BOOST_AUTO_TEST_CASE(RefImportNonAlignedPointerTest)
1301{
David Monahan4f1e8e42019-09-04 09:22:10 +01001302 ImportNonAlignedInputPointerTest(defaultBackends);
1303}
1304
1305BOOST_AUTO_TEST_CASE(RefExportNonAlignedPointerTest)
1306{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001307 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001308}
1309
1310BOOST_AUTO_TEST_CASE(RefImportAlignedPointerTest)
1311{
1312 ImportAlignedPointerTest(defaultBackends);
1313}
1314
Ferran Balaguer83239f92019-09-19 11:49:25 +01001315BOOST_AUTO_TEST_CASE(RefImportOnlyWorkload)
1316{
1317 ImportOnlyWorkload(defaultBackends);
1318}
1319
1320BOOST_AUTO_TEST_CASE(RefExportOnlyWorkload)
1321{
1322 ExportOnlyWorkload(defaultBackends);
1323}
1324
1325BOOST_AUTO_TEST_CASE(RefImportAndExportWorkload)
1326{
1327 ImportAndExportWorkload(defaultBackends);
1328}
1329
1330BOOST_AUTO_TEST_CASE(RefExportOutputWithSeveralOutputSlotConnectionsTest)
1331{
1332 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1333}
1334
David Monahan0a99a142020-03-13 07:52:54 +00001335BOOST_AUTO_TEST_CASE(RefStridedSliceInvalidSliceEndToEndTest)
1336{
1337 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1338}
1339
Mike Kelly386ff1a2021-03-29 15:04:50 +01001340BOOST_AUTO_TEST_CASE(RefAsyncFP32StridedSlicedEndToEndTest)
1341{
1342 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1343}
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001344#endif
1345
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001346BOOST_AUTO_TEST_SUITE_END()