blob: 45605e0fc6edacb380236ec0a5670df16bdd6301 [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// 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>
narpra01db2b1602019-01-23 15:23:11 +000017#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010018#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010019#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010020#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010021#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010022#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010023#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010024#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010025#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010026
27#include <boost/test/unit_test.hpp>
Éanna Ó Catháin20e58802018-12-04 10:29:06 +000028#include <boost/test/execution_monitor.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010029
30BOOST_AUTO_TEST_SUITE(RefEndToEnd)
31
narpra01b9546cf2018-11-20 15:21:28 +000032std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
33
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010034// Abs
35BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
36{
josh minor4a3c6102020-01-06 16:40:46 -060037 std::vector<float> expectedOutput =
38 {
39 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
40 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
41 };
42
43 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
44 UnaryOperation::Abs,
45 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010046}
47
48BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestUint8)
49{
josh minor4a3c6102020-01-06 16:40:46 -060050 // Note the expected output will be implicitly quantized by the below test function
51 std::vector<float> expectedOutput =
52 {
53 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
54 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
55 };
56
57 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
58 UnaryOperation::Abs,
59 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010060}
61
62BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestInt16)
63{
josh minor4a3c6102020-01-06 16:40:46 -060064 // Note the expected output will be implicitly quantized by the below test function
65 std::vector<float> expectedOutput =
66 {
67 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
68 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
69 };
70
71 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
72 UnaryOperation::Abs,
73 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010074}
75
76// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010077BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Float32)
78{
narpra01b9546cf2018-11-20 15:21:28 +000079 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010080}
81
82BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Uint8)
83{
narpra01b9546cf2018-11-20 15:21:28 +000084 BOOST_TEST(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010085}
86
87BOOST_AUTO_TEST_CASE(Unsigned8)
88{
89 using namespace armnn;
90
91 // Create runtime in which test will run
92 armnn::IRuntime::CreationOptions options;
93 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
94
95 // Builds up the structure of the network.
96 armnn::INetworkPtr net(INetwork::Create());
97
98 IConnectableLayer* input = net->AddInputLayer(0, "input");
99 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
100 IConnectableLayer* output = net->AddOutputLayer(0, "output");
101
102 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
103 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
104
105 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000106 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100107 inputTensorInfo.SetQuantizationOffset(100);
108 inputTensorInfo.SetQuantizationScale(10000.0f);
109 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
110
Derek Lambertif90c56d2020-01-10 17:14:08 +0000111 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100112 outputTensorInfo.SetQuantizationOffset(0);
113 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
114 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
115
116 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000117 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100118
119 // Loads it into the runtime.
120 NetworkId netId;
121 auto error = runtime->LoadNetwork(netId, std::move(optNet));
122 BOOST_TEST(error == Status::Success);
123
124 // Creates structures for input & output.
125 std::vector<uint8_t> inputData
126 {
127 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
128 };
129 std::vector<uint8_t> outputData(5);
130
131 armnn::InputTensors inputTensors
132 {
133 {0, armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
134 };
135 armnn::OutputTensors outputTensors
136 {
137 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
138 };
139
140 // Does the inference.
141 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
142
143 // Checks the results.
144 BOOST_TEST(outputData[0] == 0);
145 BOOST_TEST(outputData[1] == 0);
146 BOOST_TEST(outputData[2] == 0);
147 BOOST_TEST(outputData[3] == 255); // softmax has been saturated.
148 BOOST_TEST(outputData[4] == 0);
149}
150
151BOOST_AUTO_TEST_CASE(TrivialAdd)
152{
153 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
154
155 using namespace armnn;
156
157 // Create runtime in which test will run
158 armnn::IRuntime::CreationOptions options;
159 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
160
161 // Builds up the structure of the network.
162 armnn::INetworkPtr net(INetwork::Create());
163
164 IConnectableLayer* input1 = net->AddInputLayer(0);
165 IConnectableLayer* input2 = net->AddInputLayer(1);
166 IConnectableLayer* add = net->AddAdditionLayer();
167 IConnectableLayer* output = net->AddOutputLayer(0);
168
169 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
170 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
171 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
172
173 // Sets the tensors in the network.
174 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
175 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
176 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
177 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
178
179 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000180 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100181
182 // Loads it into the runtime.
183 NetworkId netId;
184 runtime->LoadNetwork(netId, std::move(optNet));
185
186 // Creates structures for input & output - matching android nn test.
187 std::vector<float> input1Data
188 {
189 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
190 };
191 std::vector<float> input2Data
192 {
193 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
194 };
195 std::vector<float> outputData(12);
196
197 InputTensors inputTensors
198 {
199 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
200 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
201 };
202 OutputTensors outputTensors
203 {
204 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
205 };
206
207 // Does the inference.
208 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
209
210 // Checks the results
211 BOOST_TEST(outputData[0] == 101);
212 BOOST_TEST(outputData[1] == 202);
213 BOOST_TEST(outputData[2] == 303);
214 BOOST_TEST(outputData[3] == 404);
215 BOOST_TEST(outputData[4] == 505);
216 BOOST_TEST(outputData[5] == 606);
217 BOOST_TEST(outputData[6] == 707);
218 BOOST_TEST(outputData[7] == 808);
219 BOOST_TEST(outputData[8] == 909);
220 BOOST_TEST(outputData[9] == 1010);
221 BOOST_TEST(outputData[10] == 1111);
222 BOOST_TEST(outputData[11] == 1212);
223}
224
225BOOST_AUTO_TEST_CASE(MultipleOutputs)
226{
227 using namespace armnn;
228
229 // Create runtime in which test will run
230 armnn::IRuntime::CreationOptions options;
231 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
232
233 // Builds up the structure of the network.
234 INetworkPtr net(INetwork::Create());
235
236 IConnectableLayer* input = net->AddInputLayer(0);
237
238 // ReLu1
239 ActivationDescriptor activation1Descriptor;
240 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
241 activation1Descriptor.m_A = 1.f;
242 activation1Descriptor.m_B = -1.f;
243 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
244
245 // ReLu6
246 ActivationDescriptor activation2Descriptor;
247 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
248 activation2Descriptor.m_A = 6.0f;
249 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
250
251 // BoundedReLu(min=2, max=5)
252 ActivationDescriptor activation3Descriptor;
253 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
254 activation3Descriptor.m_A = 5.0f;
255 activation3Descriptor.m_B = 2.0f;
256 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
257
258 IConnectableLayer* output1 = net->AddOutputLayer(0);
259 IConnectableLayer* output2 = net->AddOutputLayer(1);
260 IConnectableLayer* output3 = net->AddOutputLayer(2);
261
262 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
263 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
264 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
265
266 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
267 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
268 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
269
270 // Sets the tensors in the network.
271 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
272 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
273 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
274 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
275 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
276
277 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000278 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100279
280 // Loads it into the runtime.
281 NetworkId netId;
282 runtime->LoadNetwork(netId, std::move(optNet));
283
284 // Creates structures for input & output.
285 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 };
286
287 std::vector<float> output1Data(inputData.size());
288 std::vector<float> output2Data(inputData.size());
289 std::vector<float> output3Data(inputData.size());
290
291 InputTensors inputTensors
292 {
293 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
294 };
295 OutputTensors outputTensors
296 {
297 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
298 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
299 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
300 };
301
302 // Does the inference.
303 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
304
305 // Checks the results.
306 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
307 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
308 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]
309}
310
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000311BOOST_AUTO_TEST_CASE(TrivialMin)
312{
313 using namespace armnn;
314
315 // Create runtime in which test will run
316 armnn::IRuntime::CreationOptions options;
317 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
318
319 // Builds up the structure of the network.
320 armnn::INetworkPtr net(INetwork::Create());
321
322 IConnectableLayer* input1 = net->AddInputLayer(0);
323 IConnectableLayer* input2 = net->AddInputLayer(1);
324 IConnectableLayer* min = net->AddMinimumLayer();
325 IConnectableLayer* output = net->AddOutputLayer(0);
326
327 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
328 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
329 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
330
331 // Sets the tensors in the network.
332 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
333 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
334 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
335 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
336
337 // optimize the network
338 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
339
340 // Loads it into the runtime.
341 NetworkId netId;
342 runtime->LoadNetwork(netId, std::move(optNet));
343
344 // Creates structures for input & output - matching android nn test.
345 std::vector<float> input1Data
346 {
347 1.0f, 2.0f, 3.0f, 4.0f
348 };
349 std::vector<float> input2Data
350 {
351 2.0f, 1.0f, 5.0f, 2.0f
352 };
353 std::vector<float> outputData(4);
354
355 InputTensors inputTensors
356 {
357 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
358 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
359 };
360 OutputTensors outputTensors
361 {
362 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
363 };
364
365 // Does the inference.
366 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
367
368 // Checks the results
369 BOOST_TEST(outputData[0] == 1);
370 BOOST_TEST(outputData[1] == 1);
371 BOOST_TEST(outputData[2] == 3);
372 BOOST_TEST(outputData[3] == 2);
373}
374
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000375BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndTest)
376{
kevmay012b4d88e2019-01-24 14:05:09 +0000377 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
378 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000379
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100380 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
381 ComparisonOperation::Equal,
382 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000383}
384
385BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndTest)
386{
kevmay012b4d88e2019-01-24 14:05:09 +0000387 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
388 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000389
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100390 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
391 ComparisonOperation::Greater,
392 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000393}
394
395BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndUint8Test)
396{
397 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
398 0, 0, 0, 0, 1, 1, 1, 1 });
399
Derek Lambertif90c56d2020-01-10 17:14:08 +0000400 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100401 ComparisonOperation::Equal,
402 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000403}
404
405BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndUint8Test)
406{
407 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
408 0, 0, 0, 0, 0, 0, 0, 0 });
409
Derek Lambertif90c56d2020-01-10 17:14:08 +0000410 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100411 ComparisonOperation::Greater,
412 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000413}
414
415BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndTest)
416{
kevmay012b4d88e2019-01-24 14:05:09 +0000417 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
418 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000419
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100420 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
421 ComparisonOperation::Equal,
422 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000423}
424
425BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndTest)
426{
kevmay012b4d88e2019-01-24 14:05:09 +0000427 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
428 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000429
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100430 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
431 ComparisonOperation::Greater,
432 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000433}
434
435BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndUint8Test)
436{
437 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
438 0, 0, 0, 0, 0, 0 });
439
Derek Lambertif90c56d2020-01-10 17:14:08 +0000440 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100441 ComparisonOperation::Equal,
442 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000443}
444
445BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndUint8Test)
446{
447 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
448 1, 1, 1, 1, 1, 1 });
449
Derek Lambertif90c56d2020-01-10 17:14:08 +0000450 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100451 ComparisonOperation::Greater,
452 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000453}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000454
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100455BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NHWCTest)
456{
457 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
458}
459
460BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NHWCTest)
461{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000462 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100463}
464
465BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NHWCTest)
466{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000467 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100468}
469
470BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NCHWTest)
471{
472 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
473}
474
475BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NCHWTest)
476{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000477 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100478}
479
480BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NCHWTest)
481{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000482 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100483}
484
485BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest)
486{
487 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
488}
489
490BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NHWCTest)
491{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000492 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100493}
494
495BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest)
496{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000497 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100498}
499
500BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest)
501{
502 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
503}
504
505BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NCHWTest)
506{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000507 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100508}
509
510BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest)
511{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000512 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100513}
514
Jim Flynne242f2d2019-05-22 14:24:13 +0100515BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000516{
Jim Flynne242f2d2019-05-22 14:24:13 +0100517 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000518}
519
Jim Flynne242f2d2019-05-22 14:24:13 +0100520BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000521{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000522 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000523}
524
Jim Flynne242f2d2019-05-22 14:24:13 +0100525BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000526{
Jim Flynne242f2d2019-05-22 14:24:13 +0100527 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000528}
529
Jim Flynne242f2d2019-05-22 14:24:13 +0100530BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000531{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000532 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000533}
534
Jim Flynne242f2d2019-05-22 14:24:13 +0100535BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Test)
narpra01b9546cf2018-11-20 15:21:28 +0000536{
Jim Flynne242f2d2019-05-22 14:24:13 +0100537 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000538}
539
Jim Flynne242f2d2019-05-22 14:24:13 +0100540BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000541{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000542 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000543}
544
Jim Flynne242f2d2019-05-22 14:24:13 +0100545BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000546{
Jim Flynne242f2d2019-05-22 14:24:13 +0100547 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000548}
549
Jim Flynne242f2d2019-05-22 14:24:13 +0100550BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000551{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000552 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000553}
554
Jan Eilersbca73e12020-03-11 12:52:46 +0000555BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat32)
556{
557 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
558}
559
560BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat16)
561{
562 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
563}
564
565BOOST_AUTO_TEST_CASE(RefEluEndToEndTestBFloat16)
566{
567 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
568}
569
570BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmS8)
571{
572 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
573}
574
575BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmU8)
576{
577 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
578}
579
580BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQSymmS16)
581{
582 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
583}
584
narpra01db2b1602019-01-23 15:23:11 +0000585BOOST_AUTO_TEST_CASE(RefGatherFloatTest)
586{
587 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
588}
589
590BOOST_AUTO_TEST_CASE(RefGatherUint8Test)
591{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000592 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000593}
594
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100595BOOST_AUTO_TEST_CASE(RefGatherInt16Test)
596{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000597 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100598}
599
narpra01db2b1602019-01-23 15:23:11 +0000600BOOST_AUTO_TEST_CASE(RefGatherMultiDimFloatTest)
601{
602 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
603}
604
605BOOST_AUTO_TEST_CASE(RefGatherMultiDimUint8Test)
606{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000607 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000608}
609
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100610BOOST_AUTO_TEST_CASE(RefGatherMultiDimInt16Test)
611{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000612 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100613}
614
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100615// DepthToSpace
616BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
617{
618 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
619}
620
621BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
622{
623 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
624}
625
626BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
627{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000628 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100629}
630
631BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
632{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000633 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100634}
635
636BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
637{
638 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
639}
640
641BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
642{
643 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
644}
645
646BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
647{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000648 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100649}
650
651BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
652{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000653 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100654}
655
656// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100657BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
658{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000659 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100660}
661
662BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
663{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000664 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100665}
666
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100667BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleInt16Test)
668{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000669 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100670}
671
672BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetInt16Test)
673{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000674 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100675}
676
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000677BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsTest)
678{
679 std::vector<float> boxEncodings({
680 0.0f, 0.0f, 0.0f, 0.0f,
681 0.0f, 1.0f, 0.0f, 0.0f,
682 0.0f, -1.0f, 0.0f, 0.0f,
683 0.0f, 0.0f, 0.0f, 0.0f,
684 0.0f, 1.0f, 0.0f, 0.0f,
685 0.0f, 0.0f, 0.0f, 0.0f
686 });
687 std::vector<float> scores({
688 0.0f, 0.9f, 0.8f,
689 0.0f, 0.75f, 0.72f,
690 0.0f, 0.6f, 0.5f,
691 0.0f, 0.93f, 0.95f,
692 0.0f, 0.5f, 0.4f,
693 0.0f, 0.3f, 0.2f
694 });
695 std::vector<float> anchors({
696 0.5f, 0.5f, 1.0f, 1.0f,
697 0.5f, 0.5f, 1.0f, 1.0f,
698 0.5f, 0.5f, 1.0f, 1.0f,
699 0.5f, 10.5f, 1.0f, 1.0f,
700 0.5f, 10.5f, 1.0f, 1.0f,
701 0.5f, 100.5f, 1.0f, 1.0f
702 });
703 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
704}
705
706inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
707{
708 for (size_t i = 0; i < info.GetNumElements(); i++)
709 {
710 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
711 }
712}
713
714BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsUint8Test)
715{
716 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
717 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
718 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
719
720 boxEncodingsInfo.SetQuantizationScale(1.0f);
721 boxEncodingsInfo.SetQuantizationOffset(1);
722 scoresInfo.SetQuantizationScale(0.01f);
723 scoresInfo.SetQuantizationOffset(0);
724 anchorsInfo.SetQuantizationScale(0.5f);
725 anchorsInfo.SetQuantizationOffset(0);
726
727 std::vector<float> boxEncodings({
728 0.0f, 0.0f, 0.0f, 0.0f,
729 0.0f, 1.0f, 0.0f, 0.0f,
730 0.0f, -1.0f, 0.0f, 0.0f,
731 0.0f, 0.0f, 0.0f, 0.0f,
732 0.0f, 1.0f, 0.0f, 0.0f,
733 0.0f, 0.0f, 0.0f, 0.0f
734 });
735 std::vector<float> scores({
736 0.0f, 0.9f, 0.8f,
737 0.0f, 0.75f, 0.72f,
738 0.0f, 0.6f, 0.5f,
739 0.0f, 0.93f, 0.95f,
740 0.0f, 0.5f, 0.4f,
741 0.0f, 0.3f, 0.2f
742 });
743 std::vector<float> anchors({
744 0.5f, 0.5f, 1.0f, 1.0f,
745 0.5f, 0.5f, 1.0f, 1.0f,
746 0.5f, 0.5f, 1.0f, 1.0f,
747 0.5f, 10.5f, 1.0f, 1.0f,
748 0.5f, 10.5f, 1.0f, 1.0f,
749 0.5f, 100.5f, 1.0f, 1.0f
750 });
751
752 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
753 std::vector<uint8_t> qScores(scores.size(), 0);
754 std::vector<uint8_t> qAnchors(anchors.size(), 0);
755 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
756 QuantizeData(qScores.data(), scores.data(), scoresInfo);
757 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000758 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000759 qScores, qAnchors,
760 1.0f, 1, 0.01f, 0, 0.5f, 0);
761}
762
763BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsTest)
764{
765 std::vector<float> boxEncodings({
766 0.0f, 0.0f, 0.0f, 0.0f,
767 0.0f, 1.0f, 0.0f, 0.0f,
768 0.0f, -1.0f, 0.0f, 0.0f,
769 0.0f, 0.0f, 0.0f, 0.0f,
770 0.0f, 1.0f, 0.0f, 0.0f,
771 0.0f, 0.0f, 0.0f, 0.0f
772 });
773 std::vector<float> scores({
774 0.0f, 0.9f, 0.8f,
775 0.0f, 0.75f, 0.72f,
776 0.0f, 0.6f, 0.5f,
777 0.0f, 0.93f, 0.95f,
778 0.0f, 0.5f, 0.4f,
779 0.0f, 0.3f, 0.2f
780 });
781 std::vector<float> anchors({
782 0.5f, 0.5f, 1.0f, 1.0f,
783 0.5f, 0.5f, 1.0f, 1.0f,
784 0.5f, 0.5f, 1.0f, 1.0f,
785 0.5f, 10.5f, 1.0f, 1.0f,
786 0.5f, 10.5f, 1.0f, 1.0f,
787 0.5f, 100.5f, 1.0f, 1.0f
788 });
789 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
790}
791
792BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
793{
794 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
795 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
796 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
797
798 boxEncodingsInfo.SetQuantizationScale(1.0f);
799 boxEncodingsInfo.SetQuantizationOffset(1);
800 scoresInfo.SetQuantizationScale(0.01f);
801 scoresInfo.SetQuantizationOffset(0);
802 anchorsInfo.SetQuantizationScale(0.5f);
803 anchorsInfo.SetQuantizationOffset(0);
804
805 std::vector<float> boxEncodings({
806 0.0f, 0.0f, 0.0f, 0.0f,
807 0.0f, 1.0f, 0.0f, 0.0f,
808 0.0f, -1.0f, 0.0f, 0.0f,
809 0.0f, 0.0f, 0.0f, 0.0f,
810 0.0f, 1.0f, 0.0f, 0.0f,
811 0.0f, 0.0f, 0.0f, 0.0f
812 });
813 std::vector<float> scores({
814 0.0f, 0.9f, 0.8f,
815 0.0f, 0.75f, 0.72f,
816 0.0f, 0.6f, 0.5f,
817 0.0f, 0.93f, 0.95f,
818 0.0f, 0.5f, 0.4f,
819 0.0f, 0.3f, 0.2f
820 });
821 std::vector<float> anchors({
822 0.5f, 0.5f, 1.0f, 1.0f,
823 0.5f, 0.5f, 1.0f, 1.0f,
824 0.5f, 0.5f, 1.0f, 1.0f,
825 0.5f, 10.5f, 1.0f, 1.0f,
826 0.5f, 10.5f, 1.0f, 1.0f,
827 0.5f, 100.5f, 1.0f, 1.0f
828 });
829
830 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
831 std::vector<uint8_t> qScores(scores.size(), 0);
832 std::vector<uint8_t> qAnchors(anchors.size(), 0);
833 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
834 QuantizeData(qScores.data(), scores.data(), scoresInfo);
835 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000836 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000837 qScores, qAnchors,
838 1.0f, 1, 0.01f, 0, 0.5f, 0);
839}
840
Jan Eilersa83af7b2020-03-18 15:58:11 +0000841// HardSwish
842BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat32)
843{
844 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
845}
846
847BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat16)
848{
849 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
850}
851
852BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestBFloat16)
853{
854HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
855}
856
857BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmS8)
858{
859 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
860}
861
862BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmU8)
863{
864 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
865}
866
867BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQSymmS16)
868{
869 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
870}
871
Sadik Armagan20bea002019-10-16 09:29:38 +0100872// LogSoftmax
873BOOST_AUTO_TEST_CASE(RefLogSoftmaxEndToEndTest)
874{
875 LogSoftmaxEndToEndTest(defaultBackends);
876}
877
Nikhil Raj747f5862019-07-19 15:15:23 +0100878BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestFloat32)
879{
880 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
881}
882
883BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestUint8)
884{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000885 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100886}
887
888BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestQSymm16)
889{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000890 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100891}
892
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100893BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100894{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100895 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100896}
897
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100898BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100899{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100900 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100901
Keith Davis9515c7e2019-06-21 09:33:59 +0100902}
903
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100904BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100905{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100906 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100907}
908
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100909BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100910{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100911 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100912}
913
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100914BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100915{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100916 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100917}
918
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100919BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100920{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000921 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100922}
923
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100924BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100925{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100926 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100927}
928
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100929BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100930{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100931 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100932}
933
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100934BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100935{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000936 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100937}
938
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100939BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100940{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000941 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100942}
943
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100944BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100945{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100946 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100947}
948
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100949BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100950{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100951 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
952}
953
954BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndTest)
955{
956 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
957}
958
959BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndUint8Test)
960{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000961 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100962}
963
964BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndUint8Test)
965{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000966 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100967}
968
969BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndUint8Test)
970{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000971 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100972}
973
974BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndTest)
975{
976 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
977}
978
979BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndTest)
980{
981 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
982}
983
984BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndTest)
985{
986 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
987}
988
989BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndTest)
990{
991 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
992}
993
994BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndUint8Test)
995{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000996 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100997}
998
999BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndUint8Test)
1000{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001001 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001002}
1003
1004BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndUint8Test)
1005{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001006 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001007}
1008
1009BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndUint8Test)
1010{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001011 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001012}
1013
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001014// TransposeConvolution2d
1015BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNchwTest)
1016{
1017 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1018 defaultBackends, armnn::DataLayout::NCHW);
1019}
1020
1021BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NchwTest)
1022{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001023 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001024 defaultBackends, armnn::DataLayout::NCHW);
1025}
1026
1027BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NchwTest)
1028{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001029 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001030 defaultBackends, armnn::DataLayout::NCHW);
1031}
1032
1033BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNhwcTest)
1034{
1035 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1036 defaultBackends, armnn::DataLayout::NHWC);
1037}
1038
1039BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NhwcTest)
1040{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001041 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001042 defaultBackends, armnn::DataLayout::NHWC);
1043}
1044
1045BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NhwcTest)
1046{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001047 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001048 defaultBackends, armnn::DataLayout::NHWC);
1049}
1050
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001051// Resize Bilinear
1052BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNchwTest)
1053{
1054 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1055}
1056
1057BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NchwTest)
1058{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001059 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001060}
1061
1062BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NchwTest)
1063{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001064 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001065}
1066
1067BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNhwcTest)
1068{
1069 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1070}
1071
1072BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NhwcTest)
1073{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001074 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001075}
1076
1077BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NhwcTest)
1078{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001079 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001080}
1081
1082// Resize NearestNeighbor
1083BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNchwTest)
1084{
1085 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1086}
1087
1088BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NchwTest)
1089{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001090 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001091}
1092
1093BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NchwTest)
1094{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001095 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001096}
1097
1098BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNhwcTest)
1099{
1100 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1101}
1102
1103BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NhwcTest)
1104{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001105 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001106}
1107
1108BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NhwcTest)
1109{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001110 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001111}
1112
Sadik Armagan062e0e92019-10-14 10:31:43 +01001113// InstanceNormalization
1114BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest1)
1115{
1116 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1117}
1118
1119BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest1)
1120{
1121 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1122}
1123
1124BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest2)
1125{
1126 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1127}
1128
1129BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest2)
1130{
1131 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1132}
1133
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001134// ArgMinMax
1135BOOST_AUTO_TEST_CASE(RefArgMaxSimpleTest)
1136{
1137 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1138}
1139
1140BOOST_AUTO_TEST_CASE(RefArgMaxSimpleUint8Test)
1141{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001142 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001143}
1144
1145BOOST_AUTO_TEST_CASE(RefArgMinSimpleTest)
1146{
1147 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1148}
1149
1150BOOST_AUTO_TEST_CASE(RefArgMinSimpleUint8Test)
1151{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001152 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001153}
1154
1155BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Test)
1156{
1157 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1158}
1159
1160BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Uint8Test)
1161{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001162 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001163}
1164
1165BOOST_AUTO_TEST_CASE(RefArgMinAxis0Test)
1166{
1167 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1168}
1169
1170BOOST_AUTO_TEST_CASE(RefArgMinAxis0Uint8Test)
1171{
1172
Derek Lambertif90c56d2020-01-10 17:14:08 +00001173 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001174}
1175
1176BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Test)
1177{
1178 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1179}
1180
1181BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Uint8Test)
1182{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001183 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001184}
1185
1186BOOST_AUTO_TEST_CASE(RefArgMinAxis1Test)
1187{
1188 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1189}
1190
1191BOOST_AUTO_TEST_CASE(RefArgMinAxis1Uint8Test)
1192{
1193
Derek Lambertif90c56d2020-01-10 17:14:08 +00001194 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001195}
1196
1197BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Test)
1198{
1199 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1200}
1201
1202BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Uint8Test)
1203{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001204 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001205}
1206
1207BOOST_AUTO_TEST_CASE(RefArgMinAxis2Test)
1208{
1209 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1210}
1211
1212BOOST_AUTO_TEST_CASE(RefArgMinAxis2Uint8Test)
1213{
1214
Derek Lambertif90c56d2020-01-10 17:14:08 +00001215 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001216}
1217
1218BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Test)
1219{
1220 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1221}
1222
1223BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Uint8Test)
1224{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001225 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001226}
1227
1228BOOST_AUTO_TEST_CASE(RefArgMinAxis3Test)
1229{
1230 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1231}
1232
1233BOOST_AUTO_TEST_CASE(RefArgMinAxis3Uint8Test)
1234{
1235
Derek Lambertif90c56d2020-01-10 17:14:08 +00001236 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001237}
1238
James Conroy0800bf52020-05-14 12:46:44 +01001239BOOST_AUTO_TEST_CASE(RefQLstmEndToEndTest)
1240{
1241 QLstmEndToEnd(defaultBackends);
1242}
1243
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001244#if !defined(__ANDROID__)
1245// Only run these tests on non Android platforms
1246BOOST_AUTO_TEST_CASE(RefImportNonAlignedPointerTest)
1247{
David Monahan4f1e8e42019-09-04 09:22:10 +01001248 ImportNonAlignedInputPointerTest(defaultBackends);
1249}
1250
1251BOOST_AUTO_TEST_CASE(RefExportNonAlignedPointerTest)
1252{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001253 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001254}
1255
1256BOOST_AUTO_TEST_CASE(RefImportAlignedPointerTest)
1257{
1258 ImportAlignedPointerTest(defaultBackends);
1259}
1260
Ferran Balaguer83239f92019-09-19 11:49:25 +01001261BOOST_AUTO_TEST_CASE(RefImportOnlyWorkload)
1262{
1263 ImportOnlyWorkload(defaultBackends);
1264}
1265
1266BOOST_AUTO_TEST_CASE(RefExportOnlyWorkload)
1267{
1268 ExportOnlyWorkload(defaultBackends);
1269}
1270
1271BOOST_AUTO_TEST_CASE(RefImportAndExportWorkload)
1272{
1273 ImportAndExportWorkload(defaultBackends);
1274}
1275
1276BOOST_AUTO_TEST_CASE(RefExportOutputWithSeveralOutputSlotConnectionsTest)
1277{
1278 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1279}
1280
David Monahan0a99a142020-03-13 07:52:54 +00001281BOOST_AUTO_TEST_CASE(RefStridedSliceInvalidSliceEndToEndTest)
1282{
1283 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1284}
1285
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001286#endif
1287
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001288BOOST_AUTO_TEST_SUITE_END()