2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
6 #include <backendsCommon/test/EndToEndTestImpl.hpp>
8 #include <backendsCommon/test/ActivationEndToEndTestImpl.hpp>
9 #include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
10 #include <backendsCommon/test/BatchToSpaceNdEndToEndTestImpl.hpp>
11 #include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
12 #include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
13 #include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
14 #include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
15 #include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
16 #include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
17 #include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
18 #include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
19 #include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
20 #include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
21 #include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
22 #include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
23 #include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
24 #include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
25 #include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
27 #include <boost/test/unit_test.hpp>
28 #include <boost/test/execution_monitor.hpp>
30 BOOST_AUTO_TEST_SUITE(RefEndToEnd)
32 std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
35 BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
37 std::vector<float> expectedOutput =
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
43 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
48 BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestUint8)
50 // Note the expected output will be implicitly quantized by the below test function
51 std::vector<float> expectedOutput =
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
57 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
62 BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestInt16)
64 // Note the expected output will be implicitly quantized by the below test function
65 std::vector<float> expectedOutput =
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
71 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
77 BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Float32)
79 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
82 BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Uint8)
84 BOOST_TEST(ConstantUsageUint8Test(defaultBackends));
87 BOOST_AUTO_TEST_CASE(Unsigned8)
89 using namespace armnn;
91 // Create runtime in which test will run
92 armnn::IRuntime::CreationOptions options;
93 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
95 // Builds up the structure of the network.
96 armnn::INetworkPtr net(INetwork::Create());
98 IConnectableLayer* input = net->AddInputLayer(0, "input");
99 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
100 IConnectableLayer* output = net->AddOutputLayer(0, "output");
102 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
103 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
105 // Sets the tensors in the network.
106 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
107 inputTensorInfo.SetQuantizationOffset(100);
108 inputTensorInfo.SetQuantizationScale(10000.0f);
109 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
111 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
112 outputTensorInfo.SetQuantizationOffset(0);
113 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
114 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
116 // optimize the network
117 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
119 // Loads it into the runtime.
121 auto error = runtime->LoadNetwork(netId, std::move(optNet));
122 BOOST_TEST(error == Status::Success);
124 // Creates structures for input & output.
125 std::vector<uint8_t> inputData
127 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
129 std::vector<uint8_t> outputData(5);
131 armnn::InputTensors inputTensors
133 {0, armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
135 armnn::OutputTensors outputTensors
137 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
140 // Does the inference.
141 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
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);
151 BOOST_AUTO_TEST_CASE(TrivialAdd)
153 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
155 using namespace armnn;
157 // Create runtime in which test will run
158 armnn::IRuntime::CreationOptions options;
159 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
161 // Builds up the structure of the network.
162 armnn::INetworkPtr net(INetwork::Create());
164 IConnectableLayer* input1 = net->AddInputLayer(0);
165 IConnectableLayer* input2 = net->AddInputLayer(1);
166 IConnectableLayer* add = net->AddAdditionLayer();
167 IConnectableLayer* output = net->AddOutputLayer(0);
169 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
170 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
171 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
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);
179 // optimize the network
180 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
182 // Loads it into the runtime.
184 runtime->LoadNetwork(netId, std::move(optNet));
186 // Creates structures for input & output - matching android nn test.
187 std::vector<float> input1Data
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
191 std::vector<float> input2Data
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
195 std::vector<float> outputData(12);
197 InputTensors inputTensors
199 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
200 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
202 OutputTensors outputTensors
204 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
207 // Does the inference.
208 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
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);
225 BOOST_AUTO_TEST_CASE(MultipleOutputs)
227 using namespace armnn;
229 // Create runtime in which test will run
230 armnn::IRuntime::CreationOptions options;
231 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
233 // Builds up the structure of the network.
234 INetworkPtr net(INetwork::Create());
236 IConnectableLayer* input = net->AddInputLayer(0);
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);
246 ActivationDescriptor activation2Descriptor;
247 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
248 activation2Descriptor.m_A = 6.0f;
249 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
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);
258 IConnectableLayer* output1 = net->AddOutputLayer(0);
259 IConnectableLayer* output2 = net->AddOutputLayer(1);
260 IConnectableLayer* output3 = net->AddOutputLayer(2);
262 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
263 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
264 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
266 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
267 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
268 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
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);
277 // optimize the network
278 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
280 // Loads it into the runtime.
282 runtime->LoadNetwork(netId, std::move(optNet));
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 };
287 std::vector<float> output1Data(inputData.size());
288 std::vector<float> output2Data(inputData.size());
289 std::vector<float> output3Data(inputData.size());
291 InputTensors inputTensors
293 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
295 OutputTensors outputTensors
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())}
302 // Does the inference.
303 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
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]
311 BOOST_AUTO_TEST_CASE(TrivialMin)
313 using namespace armnn;
315 // Create runtime in which test will run
316 armnn::IRuntime::CreationOptions options;
317 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
319 // Builds up the structure of the network.
320 armnn::INetworkPtr net(INetwork::Create());
322 IConnectableLayer* input1 = net->AddInputLayer(0);
323 IConnectableLayer* input2 = net->AddInputLayer(1);
324 IConnectableLayer* min = net->AddMinimumLayer();
325 IConnectableLayer* output = net->AddOutputLayer(0);
327 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
328 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
329 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
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);
337 // optimize the network
338 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
340 // Loads it into the runtime.
342 runtime->LoadNetwork(netId, std::move(optNet));
344 // Creates structures for input & output - matching android nn test.
345 std::vector<float> input1Data
347 1.0f, 2.0f, 3.0f, 4.0f
349 std::vector<float> input2Data
351 2.0f, 1.0f, 5.0f, 2.0f
353 std::vector<float> outputData(4);
355 InputTensors inputTensors
357 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
358 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
360 OutputTensors outputTensors
362 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
365 // Does the inference.
366 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
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);
375 BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndTest)
377 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
378 0, 0, 0, 0, 1, 1, 1, 1 });
380 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
381 ComparisonOperation::Equal,
385 BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndTest)
387 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
388 0, 0, 0, 0, 0, 0, 0, 0 });
390 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
391 ComparisonOperation::Greater,
395 BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndUint8Test)
397 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
398 0, 0, 0, 0, 1, 1, 1, 1 });
400 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
401 ComparisonOperation::Equal,
405 BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndUint8Test)
407 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
408 0, 0, 0, 0, 0, 0, 0, 0 });
410 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
411 ComparisonOperation::Greater,
415 BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndTest)
417 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
420 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
421 ComparisonOperation::Equal,
425 BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndTest)
427 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
430 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
431 ComparisonOperation::Greater,
435 BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndUint8Test)
437 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
440 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
441 ComparisonOperation::Equal,
445 BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndUint8Test)
447 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
450 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
451 ComparisonOperation::Greater,
455 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NHWCTest)
457 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
460 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NHWCTest)
462 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
465 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NHWCTest)
467 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
470 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NCHWTest)
472 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
475 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NCHWTest)
477 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
480 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NCHWTest)
482 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
485 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest)
487 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
490 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NHWCTest)
492 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
495 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest)
497 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
500 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest)
502 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
505 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NCHWTest)
507 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
510 BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest)
512 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
515 BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Test)
517 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
520 BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Uint8Test)
522 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
525 BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Test)
527 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
530 BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Uint8Test)
532 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
535 BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Test)
537 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
540 BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Uint8Test)
542 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
545 BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Test)
547 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
550 BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Uint8Test)
552 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
555 BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat32)
557 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
560 BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat16)
562 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
565 BOOST_AUTO_TEST_CASE(RefEluEndToEndTestBFloat16)
567 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
570 BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmS8)
572 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
575 BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmU8)
577 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
580 BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQSymmS16)
582 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
585 BOOST_AUTO_TEST_CASE(RefGatherFloatTest)
587 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
590 BOOST_AUTO_TEST_CASE(RefGatherUint8Test)
592 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
595 BOOST_AUTO_TEST_CASE(RefGatherInt16Test)
597 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
600 BOOST_AUTO_TEST_CASE(RefGatherMultiDimFloatTest)
602 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
605 BOOST_AUTO_TEST_CASE(RefGatherMultiDimUint8Test)
607 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
610 BOOST_AUTO_TEST_CASE(RefGatherMultiDimInt16Test)
612 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
616 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
618 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
621 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
623 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
626 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
628 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
631 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
633 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
636 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
638 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
641 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
643 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
646 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
648 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
651 BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
653 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
657 BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
659 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
662 BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
664 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
667 BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleInt16Test)
669 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
672 BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetInt16Test)
674 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
677 BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsTest)
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
687 std::vector<float> scores({
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
703 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
706 inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
708 for (size_t i = 0; i < info.GetNumElements(); i++)
710 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
714 BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsUint8Test)
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);
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);
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
735 std::vector<float> scores({
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
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);
758 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
760 1.0f, 1, 0.01f, 0, 0.5f, 0);
763 BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsTest)
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
773 std::vector<float> scores({
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
789 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
792 BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
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);
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);
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
813 std::vector<float> scores({
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
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);
836 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
838 1.0f, 1, 0.01f, 0, 0.5f, 0);
842 BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat32)
844 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
847 BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat16)
849 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
852 BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestBFloat16)
854 HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
857 BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmS8)
859 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
862 BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmU8)
864 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
867 BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQSymmS16)
869 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
873 BOOST_AUTO_TEST_CASE(RefLogSoftmaxEndToEndTest)
875 LogSoftmaxEndToEndTest(defaultBackends);
878 BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestFloat32)
880 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
883 BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestUint8)
885 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
888 BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestQSymm16)
890 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
893 BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest1)
895 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
898 BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest1)
900 SpaceToDepthNchwEndToEndTest1(defaultBackends);
904 BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest2)
906 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
909 BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest2)
911 SpaceToDepthNchwEndToEndTest2(defaultBackends);
914 BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndTest)
916 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
919 BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndUint8Test)
921 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
924 BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndTest)
926 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
929 BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndTest)
931 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
934 BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndUint8Test)
936 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
939 BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndUint8Test)
941 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
944 BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndTest)
946 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
949 BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndTest)
951 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
954 BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndTest)
956 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
959 BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndUint8Test)
961 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
964 BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndUint8Test)
966 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
969 BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndUint8Test)
971 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
974 BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndTest)
976 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
979 BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndTest)
981 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
984 BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndTest)
986 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
989 BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndTest)
991 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
994 BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndUint8Test)
996 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
999 BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndUint8Test)
1001 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1004 BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndUint8Test)
1006 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1009 BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndUint8Test)
1011 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1014 // TransposeConvolution2d
1015 BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNchwTest)
1017 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1018 defaultBackends, armnn::DataLayout::NCHW);
1021 BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NchwTest)
1023 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1024 defaultBackends, armnn::DataLayout::NCHW);
1027 BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NchwTest)
1029 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1030 defaultBackends, armnn::DataLayout::NCHW);
1033 BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNhwcTest)
1035 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1036 defaultBackends, armnn::DataLayout::NHWC);
1039 BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NhwcTest)
1041 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1042 defaultBackends, armnn::DataLayout::NHWC);
1045 BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NhwcTest)
1047 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1048 defaultBackends, armnn::DataLayout::NHWC);
1052 BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNchwTest)
1054 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1057 BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NchwTest)
1059 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
1062 BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NchwTest)
1064 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
1067 BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNhwcTest)
1069 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1072 BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NhwcTest)
1074 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
1077 BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NhwcTest)
1079 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
1082 // Resize NearestNeighbor
1083 BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNchwTest)
1085 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1088 BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NchwTest)
1090 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
1093 BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NchwTest)
1095 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
1098 BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNhwcTest)
1100 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1103 BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NhwcTest)
1105 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
1108 BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NhwcTest)
1110 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
1113 // InstanceNormalization
1114 BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest1)
1116 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1119 BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest1)
1121 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1124 BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest2)
1126 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1129 BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest2)
1131 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1135 BOOST_AUTO_TEST_CASE(RefArgMaxSimpleTest)
1137 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1140 BOOST_AUTO_TEST_CASE(RefArgMaxSimpleUint8Test)
1142 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
1145 BOOST_AUTO_TEST_CASE(RefArgMinSimpleTest)
1147 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1150 BOOST_AUTO_TEST_CASE(RefArgMinSimpleUint8Test)
1152 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
1155 BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Test)
1157 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1160 BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Uint8Test)
1162 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1165 BOOST_AUTO_TEST_CASE(RefArgMinAxis0Test)
1167 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1170 BOOST_AUTO_TEST_CASE(RefArgMinAxis0Uint8Test)
1173 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1176 BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Test)
1178 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1181 BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Uint8Test)
1183 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1186 BOOST_AUTO_TEST_CASE(RefArgMinAxis1Test)
1188 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1191 BOOST_AUTO_TEST_CASE(RefArgMinAxis1Uint8Test)
1194 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1197 BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Test)
1199 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1202 BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Uint8Test)
1204 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1207 BOOST_AUTO_TEST_CASE(RefArgMinAxis2Test)
1209 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1212 BOOST_AUTO_TEST_CASE(RefArgMinAxis2Uint8Test)
1215 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1218 BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Test)
1220 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1223 BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Uint8Test)
1225 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1228 BOOST_AUTO_TEST_CASE(RefArgMinAxis3Test)
1230 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1233 BOOST_AUTO_TEST_CASE(RefArgMinAxis3Uint8Test)
1236 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1239 BOOST_AUTO_TEST_CASE(RefQLstmEndToEndTest)
1241 QLstmEndToEnd(defaultBackends);
1244 #if !defined(__ANDROID__)
1245 // Only run these tests on non Android platforms
1246 BOOST_AUTO_TEST_CASE(RefImportNonAlignedPointerTest)
1248 ImportNonAlignedInputPointerTest(defaultBackends);
1251 BOOST_AUTO_TEST_CASE(RefExportNonAlignedPointerTest)
1253 ExportNonAlignedOutputPointerTest(defaultBackends);
1256 BOOST_AUTO_TEST_CASE(RefImportAlignedPointerTest)
1258 ImportAlignedPointerTest(defaultBackends);
1261 BOOST_AUTO_TEST_CASE(RefImportOnlyWorkload)
1263 ImportOnlyWorkload(defaultBackends);
1266 BOOST_AUTO_TEST_CASE(RefExportOnlyWorkload)
1268 ExportOnlyWorkload(defaultBackends);
1271 BOOST_AUTO_TEST_CASE(RefImportAndExportWorkload)
1273 ImportAndExportWorkload(defaultBackends);
1276 BOOST_AUTO_TEST_CASE(RefExportOutputWithSeveralOutputSlotConnectionsTest)
1278 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1281 BOOST_AUTO_TEST_CASE(RefStridedSliceInvalidSliceEndToEndTest)
1283 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1288 BOOST_AUTO_TEST_SUITE_END()