blob: 9c10a68018348c653b8c5fce24145dfa889b72e7 [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>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010021#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010022#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010023#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010024#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010025
26#include <boost/test/unit_test.hpp>
Éanna Ó Catháin20e58802018-12-04 10:29:06 +000027#include <boost/test/execution_monitor.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010028
29BOOST_AUTO_TEST_SUITE(RefEndToEnd)
30
narpra01b9546cf2018-11-20 15:21:28 +000031std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
32
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010033// Abs
34BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
35{
josh minor4a3c6102020-01-06 16:40:46 -060036 std::vector<float> expectedOutput =
37 {
38 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
39 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
40 };
41
42 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
43 UnaryOperation::Abs,
44 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010045}
46
47BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestUint8)
48{
josh minor4a3c6102020-01-06 16:40:46 -060049 // Note the expected output will be implicitly quantized by the below test function
50 std::vector<float> expectedOutput =
51 {
52 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
53 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
54 };
55
56 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
57 UnaryOperation::Abs,
58 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010059}
60
61BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestInt16)
62{
josh minor4a3c6102020-01-06 16:40:46 -060063 // Note the expected output will be implicitly quantized by the below test function
64 std::vector<float> expectedOutput =
65 {
66 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
67 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
68 };
69
70 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
71 UnaryOperation::Abs,
72 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010073}
74
75// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010076BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Float32)
77{
narpra01b9546cf2018-11-20 15:21:28 +000078 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010079}
80
81BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Uint8)
82{
narpra01b9546cf2018-11-20 15:21:28 +000083 BOOST_TEST(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010084}
85
86BOOST_AUTO_TEST_CASE(Unsigned8)
87{
88 using namespace armnn;
89
90 // Create runtime in which test will run
91 armnn::IRuntime::CreationOptions options;
92 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
93
94 // Builds up the structure of the network.
95 armnn::INetworkPtr net(INetwork::Create());
96
97 IConnectableLayer* input = net->AddInputLayer(0, "input");
98 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
99 IConnectableLayer* output = net->AddOutputLayer(0, "output");
100
101 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
102 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
103
104 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000105 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100106 inputTensorInfo.SetQuantizationOffset(100);
107 inputTensorInfo.SetQuantizationScale(10000.0f);
108 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
109
Derek Lambertif90c56d2020-01-10 17:14:08 +0000110 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100111 outputTensorInfo.SetQuantizationOffset(0);
112 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
113 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
114
115 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000116 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100117
118 // Loads it into the runtime.
119 NetworkId netId;
120 auto error = runtime->LoadNetwork(netId, std::move(optNet));
121 BOOST_TEST(error == Status::Success);
122
123 // Creates structures for input & output.
124 std::vector<uint8_t> inputData
125 {
126 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
127 };
128 std::vector<uint8_t> outputData(5);
129
130 armnn::InputTensors inputTensors
131 {
132 {0, armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
133 };
134 armnn::OutputTensors outputTensors
135 {
136 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
137 };
138
139 // Does the inference.
140 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
141
142 // Checks the results.
143 BOOST_TEST(outputData[0] == 0);
144 BOOST_TEST(outputData[1] == 0);
145 BOOST_TEST(outputData[2] == 0);
146 BOOST_TEST(outputData[3] == 255); // softmax has been saturated.
147 BOOST_TEST(outputData[4] == 0);
148}
149
150BOOST_AUTO_TEST_CASE(TrivialAdd)
151{
152 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
153
154 using namespace armnn;
155
156 // Create runtime in which test will run
157 armnn::IRuntime::CreationOptions options;
158 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
159
160 // Builds up the structure of the network.
161 armnn::INetworkPtr net(INetwork::Create());
162
163 IConnectableLayer* input1 = net->AddInputLayer(0);
164 IConnectableLayer* input2 = net->AddInputLayer(1);
165 IConnectableLayer* add = net->AddAdditionLayer();
166 IConnectableLayer* output = net->AddOutputLayer(0);
167
168 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
169 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
170 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
171
172 // Sets the tensors in the network.
173 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
174 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
175 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
176 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
177
178 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000179 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100180
181 // Loads it into the runtime.
182 NetworkId netId;
183 runtime->LoadNetwork(netId, std::move(optNet));
184
185 // Creates structures for input & output - matching android nn test.
186 std::vector<float> input1Data
187 {
188 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
189 };
190 std::vector<float> input2Data
191 {
192 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
193 };
194 std::vector<float> outputData(12);
195
196 InputTensors inputTensors
197 {
198 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
199 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
200 };
201 OutputTensors outputTensors
202 {
203 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
204 };
205
206 // Does the inference.
207 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
208
209 // Checks the results
210 BOOST_TEST(outputData[0] == 101);
211 BOOST_TEST(outputData[1] == 202);
212 BOOST_TEST(outputData[2] == 303);
213 BOOST_TEST(outputData[3] == 404);
214 BOOST_TEST(outputData[4] == 505);
215 BOOST_TEST(outputData[5] == 606);
216 BOOST_TEST(outputData[6] == 707);
217 BOOST_TEST(outputData[7] == 808);
218 BOOST_TEST(outputData[8] == 909);
219 BOOST_TEST(outputData[9] == 1010);
220 BOOST_TEST(outputData[10] == 1111);
221 BOOST_TEST(outputData[11] == 1212);
222}
223
224BOOST_AUTO_TEST_CASE(MultipleOutputs)
225{
226 using namespace armnn;
227
228 // Create runtime in which test will run
229 armnn::IRuntime::CreationOptions options;
230 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
231
232 // Builds up the structure of the network.
233 INetworkPtr net(INetwork::Create());
234
235 IConnectableLayer* input = net->AddInputLayer(0);
236
237 // ReLu1
238 ActivationDescriptor activation1Descriptor;
239 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
240 activation1Descriptor.m_A = 1.f;
241 activation1Descriptor.m_B = -1.f;
242 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
243
244 // ReLu6
245 ActivationDescriptor activation2Descriptor;
246 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
247 activation2Descriptor.m_A = 6.0f;
248 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
249
250 // BoundedReLu(min=2, max=5)
251 ActivationDescriptor activation3Descriptor;
252 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
253 activation3Descriptor.m_A = 5.0f;
254 activation3Descriptor.m_B = 2.0f;
255 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
256
257 IConnectableLayer* output1 = net->AddOutputLayer(0);
258 IConnectableLayer* output2 = net->AddOutputLayer(1);
259 IConnectableLayer* output3 = net->AddOutputLayer(2);
260
261 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
262 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
263 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
264
265 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
266 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
267 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
268
269 // Sets the tensors in the network.
270 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
271 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
272 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
273 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
274 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
275
276 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000277 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100278
279 // Loads it into the runtime.
280 NetworkId netId;
281 runtime->LoadNetwork(netId, std::move(optNet));
282
283 // Creates structures for input & output.
284 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 };
285
286 std::vector<float> output1Data(inputData.size());
287 std::vector<float> output2Data(inputData.size());
288 std::vector<float> output3Data(inputData.size());
289
290 InputTensors inputTensors
291 {
292 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
293 };
294 OutputTensors outputTensors
295 {
296 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
297 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
298 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
299 };
300
301 // Does the inference.
302 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
303
304 // Checks the results.
305 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
306 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
307 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]
308}
309
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000310BOOST_AUTO_TEST_CASE(TrivialMin)
311{
312 using namespace armnn;
313
314 // Create runtime in which test will run
315 armnn::IRuntime::CreationOptions options;
316 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
317
318 // Builds up the structure of the network.
319 armnn::INetworkPtr net(INetwork::Create());
320
321 IConnectableLayer* input1 = net->AddInputLayer(0);
322 IConnectableLayer* input2 = net->AddInputLayer(1);
323 IConnectableLayer* min = net->AddMinimumLayer();
324 IConnectableLayer* output = net->AddOutputLayer(0);
325
326 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
327 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
328 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
329
330 // Sets the tensors in the network.
331 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
332 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
333 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
334 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
335
336 // optimize the network
337 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
338
339 // Loads it into the runtime.
340 NetworkId netId;
341 runtime->LoadNetwork(netId, std::move(optNet));
342
343 // Creates structures for input & output - matching android nn test.
344 std::vector<float> input1Data
345 {
346 1.0f, 2.0f, 3.0f, 4.0f
347 };
348 std::vector<float> input2Data
349 {
350 2.0f, 1.0f, 5.0f, 2.0f
351 };
352 std::vector<float> outputData(4);
353
354 InputTensors inputTensors
355 {
356 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
357 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
358 };
359 OutputTensors outputTensors
360 {
361 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
362 };
363
364 // Does the inference.
365 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
366
367 // Checks the results
368 BOOST_TEST(outputData[0] == 1);
369 BOOST_TEST(outputData[1] == 1);
370 BOOST_TEST(outputData[2] == 3);
371 BOOST_TEST(outputData[3] == 2);
372}
373
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000374BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndTest)
375{
kevmay012b4d88e2019-01-24 14:05:09 +0000376 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
377 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000378
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100379 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
380 ComparisonOperation::Equal,
381 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000382}
383
384BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndTest)
385{
kevmay012b4d88e2019-01-24 14:05:09 +0000386 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
387 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000388
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100389 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
390 ComparisonOperation::Greater,
391 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000392}
393
394BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndUint8Test)
395{
396 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
397 0, 0, 0, 0, 1, 1, 1, 1 });
398
Derek Lambertif90c56d2020-01-10 17:14:08 +0000399 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100400 ComparisonOperation::Equal,
401 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000402}
403
404BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndUint8Test)
405{
406 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
407 0, 0, 0, 0, 0, 0, 0, 0 });
408
Derek Lambertif90c56d2020-01-10 17:14:08 +0000409 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100410 ComparisonOperation::Greater,
411 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000412}
413
414BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndTest)
415{
kevmay012b4d88e2019-01-24 14:05:09 +0000416 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
417 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000418
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100419 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
420 ComparisonOperation::Equal,
421 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000422}
423
424BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndTest)
425{
kevmay012b4d88e2019-01-24 14:05:09 +0000426 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
427 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000428
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100429 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
430 ComparisonOperation::Greater,
431 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000432}
433
434BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndUint8Test)
435{
436 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
437 0, 0, 0, 0, 0, 0 });
438
Derek Lambertif90c56d2020-01-10 17:14:08 +0000439 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100440 ComparisonOperation::Equal,
441 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000442}
443
444BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndUint8Test)
445{
446 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
447 1, 1, 1, 1, 1, 1 });
448
Derek Lambertif90c56d2020-01-10 17:14:08 +0000449 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100450 ComparisonOperation::Greater,
451 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000452}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000453
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100454BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NHWCTest)
455{
456 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
457}
458
459BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NHWCTest)
460{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000461 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100462}
463
464BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NHWCTest)
465{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000466 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100467}
468
469BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NCHWTest)
470{
471 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
472}
473
474BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NCHWTest)
475{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000476 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100477}
478
479BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NCHWTest)
480{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000481 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100482}
483
484BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest)
485{
486 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
487}
488
489BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NHWCTest)
490{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000491 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100492}
493
494BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest)
495{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000496 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100497}
498
499BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest)
500{
501 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
502}
503
504BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NCHWTest)
505{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000506 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100507}
508
509BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest)
510{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000511 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100512}
513
Jim Flynne242f2d2019-05-22 14:24:13 +0100514BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000515{
Jim Flynne242f2d2019-05-22 14:24:13 +0100516 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000517}
518
Jim Flynne242f2d2019-05-22 14:24:13 +0100519BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000520{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000521 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000522}
523
Jim Flynne242f2d2019-05-22 14:24:13 +0100524BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000525{
Jim Flynne242f2d2019-05-22 14:24:13 +0100526 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000527}
528
Jim Flynne242f2d2019-05-22 14:24:13 +0100529BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000530{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000531 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000532}
533
Jim Flynne242f2d2019-05-22 14:24:13 +0100534BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Test)
narpra01b9546cf2018-11-20 15:21:28 +0000535{
Jim Flynne242f2d2019-05-22 14:24:13 +0100536 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000537}
538
Jim Flynne242f2d2019-05-22 14:24:13 +0100539BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000540{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000541 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000542}
543
Jim Flynne242f2d2019-05-22 14:24:13 +0100544BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000545{
Jim Flynne242f2d2019-05-22 14:24:13 +0100546 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000547}
548
Jim Flynne242f2d2019-05-22 14:24:13 +0100549BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000550{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000551 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000552}
553
Jan Eilersbca73e12020-03-11 12:52:46 +0000554BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat32)
555{
556 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
557}
558
559BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat16)
560{
561 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
562}
563
564BOOST_AUTO_TEST_CASE(RefEluEndToEndTestBFloat16)
565{
566 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
567}
568
569BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmS8)
570{
571 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
572}
573
574BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmU8)
575{
576 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
577}
578
579BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQSymmS16)
580{
581 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
582}
583
narpra01db2b1602019-01-23 15:23:11 +0000584BOOST_AUTO_TEST_CASE(RefGatherFloatTest)
585{
586 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
587}
588
589BOOST_AUTO_TEST_CASE(RefGatherUint8Test)
590{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000591 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000592}
593
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100594BOOST_AUTO_TEST_CASE(RefGatherInt16Test)
595{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000596 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100597}
598
narpra01db2b1602019-01-23 15:23:11 +0000599BOOST_AUTO_TEST_CASE(RefGatherMultiDimFloatTest)
600{
601 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
602}
603
604BOOST_AUTO_TEST_CASE(RefGatherMultiDimUint8Test)
605{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000606 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000607}
608
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100609BOOST_AUTO_TEST_CASE(RefGatherMultiDimInt16Test)
610{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000611 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100612}
613
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100614// DepthToSpace
615BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
616{
617 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
618}
619
620BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
621{
622 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
623}
624
625BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
626{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000627 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100628}
629
630BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
631{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000632 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100633}
634
635BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
636{
637 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
638}
639
640BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
641{
642 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
643}
644
645BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
646{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000647 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100648}
649
650BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
651{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000652 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100653}
654
655// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100656BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
657{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000658 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100659}
660
661BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
662{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000663 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100664}
665
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100666BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleInt16Test)
667{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000668 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100669}
670
671BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetInt16Test)
672{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000673 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100674}
675
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000676BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsTest)
677{
678 std::vector<float> boxEncodings({
679 0.0f, 0.0f, 0.0f, 0.0f,
680 0.0f, 1.0f, 0.0f, 0.0f,
681 0.0f, -1.0f, 0.0f, 0.0f,
682 0.0f, 0.0f, 0.0f, 0.0f,
683 0.0f, 1.0f, 0.0f, 0.0f,
684 0.0f, 0.0f, 0.0f, 0.0f
685 });
686 std::vector<float> scores({
687 0.0f, 0.9f, 0.8f,
688 0.0f, 0.75f, 0.72f,
689 0.0f, 0.6f, 0.5f,
690 0.0f, 0.93f, 0.95f,
691 0.0f, 0.5f, 0.4f,
692 0.0f, 0.3f, 0.2f
693 });
694 std::vector<float> anchors({
695 0.5f, 0.5f, 1.0f, 1.0f,
696 0.5f, 0.5f, 1.0f, 1.0f,
697 0.5f, 0.5f, 1.0f, 1.0f,
698 0.5f, 10.5f, 1.0f, 1.0f,
699 0.5f, 10.5f, 1.0f, 1.0f,
700 0.5f, 100.5f, 1.0f, 1.0f
701 });
702 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
703}
704
705inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
706{
707 for (size_t i = 0; i < info.GetNumElements(); i++)
708 {
709 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
710 }
711}
712
713BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsUint8Test)
714{
715 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
716 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
717 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
718
719 boxEncodingsInfo.SetQuantizationScale(1.0f);
720 boxEncodingsInfo.SetQuantizationOffset(1);
721 scoresInfo.SetQuantizationScale(0.01f);
722 scoresInfo.SetQuantizationOffset(0);
723 anchorsInfo.SetQuantizationScale(0.5f);
724 anchorsInfo.SetQuantizationOffset(0);
725
726 std::vector<float> boxEncodings({
727 0.0f, 0.0f, 0.0f, 0.0f,
728 0.0f, 1.0f, 0.0f, 0.0f,
729 0.0f, -1.0f, 0.0f, 0.0f,
730 0.0f, 0.0f, 0.0f, 0.0f,
731 0.0f, 1.0f, 0.0f, 0.0f,
732 0.0f, 0.0f, 0.0f, 0.0f
733 });
734 std::vector<float> scores({
735 0.0f, 0.9f, 0.8f,
736 0.0f, 0.75f, 0.72f,
737 0.0f, 0.6f, 0.5f,
738 0.0f, 0.93f, 0.95f,
739 0.0f, 0.5f, 0.4f,
740 0.0f, 0.3f, 0.2f
741 });
742 std::vector<float> anchors({
743 0.5f, 0.5f, 1.0f, 1.0f,
744 0.5f, 0.5f, 1.0f, 1.0f,
745 0.5f, 0.5f, 1.0f, 1.0f,
746 0.5f, 10.5f, 1.0f, 1.0f,
747 0.5f, 10.5f, 1.0f, 1.0f,
748 0.5f, 100.5f, 1.0f, 1.0f
749 });
750
751 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
752 std::vector<uint8_t> qScores(scores.size(), 0);
753 std::vector<uint8_t> qAnchors(anchors.size(), 0);
754 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
755 QuantizeData(qScores.data(), scores.data(), scoresInfo);
756 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000757 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000758 qScores, qAnchors,
759 1.0f, 1, 0.01f, 0, 0.5f, 0);
760}
761
762BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsTest)
763{
764 std::vector<float> boxEncodings({
765 0.0f, 0.0f, 0.0f, 0.0f,
766 0.0f, 1.0f, 0.0f, 0.0f,
767 0.0f, -1.0f, 0.0f, 0.0f,
768 0.0f, 0.0f, 0.0f, 0.0f,
769 0.0f, 1.0f, 0.0f, 0.0f,
770 0.0f, 0.0f, 0.0f, 0.0f
771 });
772 std::vector<float> scores({
773 0.0f, 0.9f, 0.8f,
774 0.0f, 0.75f, 0.72f,
775 0.0f, 0.6f, 0.5f,
776 0.0f, 0.93f, 0.95f,
777 0.0f, 0.5f, 0.4f,
778 0.0f, 0.3f, 0.2f
779 });
780 std::vector<float> anchors({
781 0.5f, 0.5f, 1.0f, 1.0f,
782 0.5f, 0.5f, 1.0f, 1.0f,
783 0.5f, 0.5f, 1.0f, 1.0f,
784 0.5f, 10.5f, 1.0f, 1.0f,
785 0.5f, 10.5f, 1.0f, 1.0f,
786 0.5f, 100.5f, 1.0f, 1.0f
787 });
788 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
789}
790
791BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
792{
793 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
794 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
795 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
796
797 boxEncodingsInfo.SetQuantizationScale(1.0f);
798 boxEncodingsInfo.SetQuantizationOffset(1);
799 scoresInfo.SetQuantizationScale(0.01f);
800 scoresInfo.SetQuantizationOffset(0);
801 anchorsInfo.SetQuantizationScale(0.5f);
802 anchorsInfo.SetQuantizationOffset(0);
803
804 std::vector<float> boxEncodings({
805 0.0f, 0.0f, 0.0f, 0.0f,
806 0.0f, 1.0f, 0.0f, 0.0f,
807 0.0f, -1.0f, 0.0f, 0.0f,
808 0.0f, 0.0f, 0.0f, 0.0f,
809 0.0f, 1.0f, 0.0f, 0.0f,
810 0.0f, 0.0f, 0.0f, 0.0f
811 });
812 std::vector<float> scores({
813 0.0f, 0.9f, 0.8f,
814 0.0f, 0.75f, 0.72f,
815 0.0f, 0.6f, 0.5f,
816 0.0f, 0.93f, 0.95f,
817 0.0f, 0.5f, 0.4f,
818 0.0f, 0.3f, 0.2f
819 });
820 std::vector<float> anchors({
821 0.5f, 0.5f, 1.0f, 1.0f,
822 0.5f, 0.5f, 1.0f, 1.0f,
823 0.5f, 0.5f, 1.0f, 1.0f,
824 0.5f, 10.5f, 1.0f, 1.0f,
825 0.5f, 10.5f, 1.0f, 1.0f,
826 0.5f, 100.5f, 1.0f, 1.0f
827 });
828
829 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
830 std::vector<uint8_t> qScores(scores.size(), 0);
831 std::vector<uint8_t> qAnchors(anchors.size(), 0);
832 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
833 QuantizeData(qScores.data(), scores.data(), scoresInfo);
834 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000835 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000836 qScores, qAnchors,
837 1.0f, 1, 0.01f, 0, 0.5f, 0);
838}
839
Jan Eilersa83af7b2020-03-18 15:58:11 +0000840// HardSwish
841BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat32)
842{
843 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
844}
845
846BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat16)
847{
848 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
849}
850
851BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestBFloat16)
852{
853HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
854}
855
856BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmS8)
857{
858 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
859}
860
861BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmU8)
862{
863 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
864}
865
866BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQSymmS16)
867{
868 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
869}
870
Sadik Armagan20bea002019-10-16 09:29:38 +0100871// LogSoftmax
872BOOST_AUTO_TEST_CASE(RefLogSoftmaxEndToEndTest)
873{
874 LogSoftmaxEndToEndTest(defaultBackends);
875}
876
Nikhil Raj747f5862019-07-19 15:15:23 +0100877BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestFloat32)
878{
879 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
880}
881
882BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestUint8)
883{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000884 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100885}
886
887BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestQSymm16)
888{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000889 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100890}
891
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100892BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100893{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100894 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100895}
896
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100897BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100898{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100899 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100900
Keith Davis9515c7e2019-06-21 09:33:59 +0100901}
902
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100903BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100904{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100905 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100906}
907
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100908BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100909{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100910 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100911}
912
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100913BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100914{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100915 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100916}
917
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100918BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100919{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000920 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100921}
922
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100923BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100924{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100925 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100926}
927
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100928BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100929{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100930 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100931}
932
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100933BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100934{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000935 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100936}
937
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100938BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100939{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000940 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100941}
942
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100943BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100944{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100945 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100946}
947
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100948BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100949{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100950 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
951}
952
953BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndTest)
954{
955 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
956}
957
958BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndUint8Test)
959{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000960 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100961}
962
963BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndUint8Test)
964{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000965 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100966}
967
968BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndUint8Test)
969{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000970 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100971}
972
973BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndTest)
974{
975 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
976}
977
978BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndTest)
979{
980 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
981}
982
983BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndTest)
984{
985 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
986}
987
988BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndTest)
989{
990 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
991}
992
993BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndUint8Test)
994{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000995 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100996}
997
998BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndUint8Test)
999{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001000 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001001}
1002
1003BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndUint8Test)
1004{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001005 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001006}
1007
1008BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndUint8Test)
1009{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001010 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001011}
1012
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001013// TransposeConvolution2d
1014BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNchwTest)
1015{
1016 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1017 defaultBackends, armnn::DataLayout::NCHW);
1018}
1019
1020BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NchwTest)
1021{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001022 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001023 defaultBackends, armnn::DataLayout::NCHW);
1024}
1025
1026BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NchwTest)
1027{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001028 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001029 defaultBackends, armnn::DataLayout::NCHW);
1030}
1031
1032BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNhwcTest)
1033{
1034 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1035 defaultBackends, armnn::DataLayout::NHWC);
1036}
1037
1038BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NhwcTest)
1039{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001040 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001041 defaultBackends, armnn::DataLayout::NHWC);
1042}
1043
1044BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NhwcTest)
1045{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001046 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001047 defaultBackends, armnn::DataLayout::NHWC);
1048}
1049
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001050// Resize Bilinear
1051BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNchwTest)
1052{
1053 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1054}
1055
1056BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NchwTest)
1057{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001058 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001059}
1060
1061BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NchwTest)
1062{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001063 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001064}
1065
1066BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNhwcTest)
1067{
1068 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1069}
1070
1071BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NhwcTest)
1072{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001073 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001074}
1075
1076BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NhwcTest)
1077{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001078 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001079}
1080
1081// Resize NearestNeighbor
1082BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNchwTest)
1083{
1084 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1085}
1086
1087BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NchwTest)
1088{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001089 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001090}
1091
1092BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NchwTest)
1093{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001094 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001095}
1096
1097BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNhwcTest)
1098{
1099 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1100}
1101
1102BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NhwcTest)
1103{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001104 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001105}
1106
1107BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NhwcTest)
1108{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001109 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001110}
1111
Sadik Armagan062e0e92019-10-14 10:31:43 +01001112// InstanceNormalization
1113BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest1)
1114{
1115 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1116}
1117
1118BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest1)
1119{
1120 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1121}
1122
1123BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest2)
1124{
1125 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1126}
1127
1128BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest2)
1129{
1130 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1131}
1132
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001133// ArgMinMax
1134BOOST_AUTO_TEST_CASE(RefArgMaxSimpleTest)
1135{
1136 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1137}
1138
1139BOOST_AUTO_TEST_CASE(RefArgMaxSimpleUint8Test)
1140{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001141 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001142}
1143
1144BOOST_AUTO_TEST_CASE(RefArgMinSimpleTest)
1145{
1146 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1147}
1148
1149BOOST_AUTO_TEST_CASE(RefArgMinSimpleUint8Test)
1150{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001151 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001152}
1153
1154BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Test)
1155{
1156 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1157}
1158
1159BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Uint8Test)
1160{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001161 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001162}
1163
1164BOOST_AUTO_TEST_CASE(RefArgMinAxis0Test)
1165{
1166 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1167}
1168
1169BOOST_AUTO_TEST_CASE(RefArgMinAxis0Uint8Test)
1170{
1171
Derek Lambertif90c56d2020-01-10 17:14:08 +00001172 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001173}
1174
1175BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Test)
1176{
1177 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1178}
1179
1180BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Uint8Test)
1181{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001182 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001183}
1184
1185BOOST_AUTO_TEST_CASE(RefArgMinAxis1Test)
1186{
1187 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1188}
1189
1190BOOST_AUTO_TEST_CASE(RefArgMinAxis1Uint8Test)
1191{
1192
Derek Lambertif90c56d2020-01-10 17:14:08 +00001193 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001194}
1195
1196BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Test)
1197{
1198 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1199}
1200
1201BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Uint8Test)
1202{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001203 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001204}
1205
1206BOOST_AUTO_TEST_CASE(RefArgMinAxis2Test)
1207{
1208 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1209}
1210
1211BOOST_AUTO_TEST_CASE(RefArgMinAxis2Uint8Test)
1212{
1213
Derek Lambertif90c56d2020-01-10 17:14:08 +00001214 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001215}
1216
1217BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Test)
1218{
1219 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1220}
1221
1222BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Uint8Test)
1223{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001224 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001225}
1226
1227BOOST_AUTO_TEST_CASE(RefArgMinAxis3Test)
1228{
1229 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1230}
1231
1232BOOST_AUTO_TEST_CASE(RefArgMinAxis3Uint8Test)
1233{
1234
Derek Lambertif90c56d2020-01-10 17:14:08 +00001235 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001236}
1237
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001238#if !defined(__ANDROID__)
1239// Only run these tests on non Android platforms
1240BOOST_AUTO_TEST_CASE(RefImportNonAlignedPointerTest)
1241{
David Monahan4f1e8e42019-09-04 09:22:10 +01001242 ImportNonAlignedInputPointerTest(defaultBackends);
1243}
1244
1245BOOST_AUTO_TEST_CASE(RefExportNonAlignedPointerTest)
1246{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001247 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001248}
1249
1250BOOST_AUTO_TEST_CASE(RefImportAlignedPointerTest)
1251{
1252 ImportAlignedPointerTest(defaultBackends);
1253}
1254
Ferran Balaguer83239f92019-09-19 11:49:25 +01001255BOOST_AUTO_TEST_CASE(RefImportOnlyWorkload)
1256{
1257 ImportOnlyWorkload(defaultBackends);
1258}
1259
1260BOOST_AUTO_TEST_CASE(RefExportOnlyWorkload)
1261{
1262 ExportOnlyWorkload(defaultBackends);
1263}
1264
1265BOOST_AUTO_TEST_CASE(RefImportAndExportWorkload)
1266{
1267 ImportAndExportWorkload(defaultBackends);
1268}
1269
1270BOOST_AUTO_TEST_CASE(RefExportOutputWithSeveralOutputSlotConnectionsTest)
1271{
1272 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1273}
1274
David Monahan0a99a142020-03-13 07:52:54 +00001275BOOST_AUTO_TEST_CASE(RefStridedSliceInvalidSliceEndToEndTest)
1276{
1277 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1278}
1279
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001280#endif
1281
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001282BOOST_AUTO_TEST_SUITE_END()