blob: 027b621c23741aa9b3f8266e0b799f0a45b3d6a9 [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>
Teresa Charlin44088502020-07-27 11:27:19 +010017#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000018#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010019#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010020#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010021#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010022#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010023#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010024#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010025#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010026#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010027#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010028
29#include <boost/test/unit_test.hpp>
Éanna Ó Catháin20e58802018-12-04 10:29:06 +000030#include <boost/test/execution_monitor.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010031
32BOOST_AUTO_TEST_SUITE(RefEndToEnd)
33
narpra01b9546cf2018-11-20 15:21:28 +000034std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
35
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010036// Abs
37BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
38{
josh minor4a3c6102020-01-06 16:40:46 -060039 std::vector<float> expectedOutput =
40 {
41 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
42 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
43 };
44
45 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
46 UnaryOperation::Abs,
47 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010048}
49
50BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestUint8)
51{
josh minor4a3c6102020-01-06 16:40:46 -060052 // Note the expected output will be implicitly quantized by the below test function
53 std::vector<float> expectedOutput =
54 {
55 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
56 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
57 };
58
59 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
60 UnaryOperation::Abs,
61 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010062}
63
64BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestInt16)
65{
josh minor4a3c6102020-01-06 16:40:46 -060066 // Note the expected output will be implicitly quantized by the below test function
67 std::vector<float> expectedOutput =
68 {
69 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
70 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
71 };
72
73 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
74 UnaryOperation::Abs,
75 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010076}
77
78// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010079BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Float32)
80{
narpra01b9546cf2018-11-20 15:21:28 +000081 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010082}
83
84BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Uint8)
85{
narpra01b9546cf2018-11-20 15:21:28 +000086 BOOST_TEST(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010087}
88
89BOOST_AUTO_TEST_CASE(Unsigned8)
90{
91 using namespace armnn;
92
93 // Create runtime in which test will run
94 armnn::IRuntime::CreationOptions options;
95 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
96
97 // Builds up the structure of the network.
98 armnn::INetworkPtr net(INetwork::Create());
99
100 IConnectableLayer* input = net->AddInputLayer(0, "input");
101 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
102 IConnectableLayer* output = net->AddOutputLayer(0, "output");
103
104 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
105 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
106
107 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000108 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100109 inputTensorInfo.SetQuantizationOffset(100);
110 inputTensorInfo.SetQuantizationScale(10000.0f);
111 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
112
Derek Lambertif90c56d2020-01-10 17:14:08 +0000113 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100114 outputTensorInfo.SetQuantizationOffset(0);
115 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
116 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
117
118 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000119 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100120
121 // Loads it into the runtime.
122 NetworkId netId;
123 auto error = runtime->LoadNetwork(netId, std::move(optNet));
124 BOOST_TEST(error == Status::Success);
125
126 // Creates structures for input & output.
127 std::vector<uint8_t> inputData
128 {
129 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
130 };
131 std::vector<uint8_t> outputData(5);
132
133 armnn::InputTensors inputTensors
134 {
135 {0, armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
136 };
137 armnn::OutputTensors outputTensors
138 {
139 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
140 };
141
142 // Does the inference.
143 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
144
145 // Checks the results.
146 BOOST_TEST(outputData[0] == 0);
147 BOOST_TEST(outputData[1] == 0);
148 BOOST_TEST(outputData[2] == 0);
149 BOOST_TEST(outputData[3] == 255); // softmax has been saturated.
150 BOOST_TEST(outputData[4] == 0);
151}
152
153BOOST_AUTO_TEST_CASE(TrivialAdd)
154{
155 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
156
157 using namespace armnn;
158
159 // Create runtime in which test will run
160 armnn::IRuntime::CreationOptions options;
161 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
162
163 // Builds up the structure of the network.
164 armnn::INetworkPtr net(INetwork::Create());
165
166 IConnectableLayer* input1 = net->AddInputLayer(0);
167 IConnectableLayer* input2 = net->AddInputLayer(1);
168 IConnectableLayer* add = net->AddAdditionLayer();
169 IConnectableLayer* output = net->AddOutputLayer(0);
170
171 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
172 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
173 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
174
175 // Sets the tensors in the network.
176 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
177 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
178 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
179 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
180
181 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000182 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100183
184 // Loads it into the runtime.
185 NetworkId netId;
186 runtime->LoadNetwork(netId, std::move(optNet));
187
188 // Creates structures for input & output - matching android nn test.
189 std::vector<float> input1Data
190 {
191 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
192 };
193 std::vector<float> input2Data
194 {
195 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
196 };
197 std::vector<float> outputData(12);
198
199 InputTensors inputTensors
200 {
201 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
202 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
203 };
204 OutputTensors outputTensors
205 {
206 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
207 };
208
209 // Does the inference.
210 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
211
212 // Checks the results
213 BOOST_TEST(outputData[0] == 101);
214 BOOST_TEST(outputData[1] == 202);
215 BOOST_TEST(outputData[2] == 303);
216 BOOST_TEST(outputData[3] == 404);
217 BOOST_TEST(outputData[4] == 505);
218 BOOST_TEST(outputData[5] == 606);
219 BOOST_TEST(outputData[6] == 707);
220 BOOST_TEST(outputData[7] == 808);
221 BOOST_TEST(outputData[8] == 909);
222 BOOST_TEST(outputData[9] == 1010);
223 BOOST_TEST(outputData[10] == 1111);
224 BOOST_TEST(outputData[11] == 1212);
225}
226
227BOOST_AUTO_TEST_CASE(MultipleOutputs)
228{
229 using namespace armnn;
230
231 // Create runtime in which test will run
232 armnn::IRuntime::CreationOptions options;
233 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
234
235 // Builds up the structure of the network.
236 INetworkPtr net(INetwork::Create());
237
238 IConnectableLayer* input = net->AddInputLayer(0);
239
240 // ReLu1
241 ActivationDescriptor activation1Descriptor;
242 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
243 activation1Descriptor.m_A = 1.f;
244 activation1Descriptor.m_B = -1.f;
245 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
246
247 // ReLu6
248 ActivationDescriptor activation2Descriptor;
249 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
250 activation2Descriptor.m_A = 6.0f;
251 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
252
253 // BoundedReLu(min=2, max=5)
254 ActivationDescriptor activation3Descriptor;
255 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
256 activation3Descriptor.m_A = 5.0f;
257 activation3Descriptor.m_B = 2.0f;
258 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
259
260 IConnectableLayer* output1 = net->AddOutputLayer(0);
261 IConnectableLayer* output2 = net->AddOutputLayer(1);
262 IConnectableLayer* output3 = net->AddOutputLayer(2);
263
264 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
265 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
266 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
267
268 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
269 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
270 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
271
272 // Sets the tensors in the network.
273 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
274 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
275 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
276 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
277 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
278
279 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000280 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100281
282 // Loads it into the runtime.
283 NetworkId netId;
284 runtime->LoadNetwork(netId, std::move(optNet));
285
286 // Creates structures for input & output.
287 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 };
288
289 std::vector<float> output1Data(inputData.size());
290 std::vector<float> output2Data(inputData.size());
291 std::vector<float> output3Data(inputData.size());
292
293 InputTensors inputTensors
294 {
295 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
296 };
297 OutputTensors outputTensors
298 {
299 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
300 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
301 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
302 };
303
304 // Does the inference.
305 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
306
307 // Checks the results.
308 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
309 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
310 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}
312
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000313BOOST_AUTO_TEST_CASE(TrivialMin)
314{
315 using namespace armnn;
316
317 // Create runtime in which test will run
318 armnn::IRuntime::CreationOptions options;
319 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
320
321 // Builds up the structure of the network.
322 armnn::INetworkPtr net(INetwork::Create());
323
324 IConnectableLayer* input1 = net->AddInputLayer(0);
325 IConnectableLayer* input2 = net->AddInputLayer(1);
326 IConnectableLayer* min = net->AddMinimumLayer();
327 IConnectableLayer* output = net->AddOutputLayer(0);
328
329 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
330 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
331 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
332
333 // Sets the tensors in the network.
334 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
335 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
336 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
337 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
338
339 // optimize the network
340 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
341
342 // Loads it into the runtime.
343 NetworkId netId;
344 runtime->LoadNetwork(netId, std::move(optNet));
345
346 // Creates structures for input & output - matching android nn test.
347 std::vector<float> input1Data
348 {
349 1.0f, 2.0f, 3.0f, 4.0f
350 };
351 std::vector<float> input2Data
352 {
353 2.0f, 1.0f, 5.0f, 2.0f
354 };
355 std::vector<float> outputData(4);
356
357 InputTensors inputTensors
358 {
359 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
360 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
361 };
362 OutputTensors outputTensors
363 {
364 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
365 };
366
367 // Does the inference.
368 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
369
370 // Checks the results
371 BOOST_TEST(outputData[0] == 1);
372 BOOST_TEST(outputData[1] == 1);
373 BOOST_TEST(outputData[2] == 3);
374 BOOST_TEST(outputData[3] == 2);
375}
376
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000377BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndTest)
378{
kevmay012b4d88e2019-01-24 14:05:09 +0000379 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
380 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000381
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100382 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
383 ComparisonOperation::Equal,
384 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000385}
386
387BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndTest)
388{
kevmay012b4d88e2019-01-24 14:05:09 +0000389 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
390 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000391
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100392 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
393 ComparisonOperation::Greater,
394 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000395}
396
397BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndUint8Test)
398{
399 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
400 0, 0, 0, 0, 1, 1, 1, 1 });
401
Derek Lambertif90c56d2020-01-10 17:14:08 +0000402 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100403 ComparisonOperation::Equal,
404 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000405}
406
407BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndUint8Test)
408{
409 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
410 0, 0, 0, 0, 0, 0, 0, 0 });
411
Derek Lambertif90c56d2020-01-10 17:14:08 +0000412 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100413 ComparisonOperation::Greater,
414 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000415}
416
417BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndTest)
418{
kevmay012b4d88e2019-01-24 14:05:09 +0000419 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
420 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000421
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100422 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
423 ComparisonOperation::Equal,
424 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000425}
426
427BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndTest)
428{
kevmay012b4d88e2019-01-24 14:05:09 +0000429 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
430 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000431
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100432 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
433 ComparisonOperation::Greater,
434 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000435}
436
437BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndUint8Test)
438{
439 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
440 0, 0, 0, 0, 0, 0 });
441
Derek Lambertif90c56d2020-01-10 17:14:08 +0000442 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100443 ComparisonOperation::Equal,
444 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000445}
446
447BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndUint8Test)
448{
449 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
450 1, 1, 1, 1, 1, 1 });
451
Derek Lambertif90c56d2020-01-10 17:14:08 +0000452 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100453 ComparisonOperation::Greater,
454 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000455}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000456
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100457BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NHWCTest)
458{
459 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
460}
461
462BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NHWCTest)
463{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000464 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100465}
466
467BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NHWCTest)
468{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000469 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100470}
471
472BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NCHWTest)
473{
474 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
475}
476
477BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NCHWTest)
478{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000479 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100480}
481
482BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NCHWTest)
483{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000484 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100485}
486
487BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest)
488{
489 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
490}
491
492BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NHWCTest)
493{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000494 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100495}
496
497BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest)
498{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000499 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100500}
501
502BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest)
503{
504 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
505}
506
507BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NCHWTest)
508{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000509 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100510}
511
512BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest)
513{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000514 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100515}
516
Jim Flynne242f2d2019-05-22 14:24:13 +0100517BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000518{
Jim Flynne242f2d2019-05-22 14:24:13 +0100519 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000520}
521
Jim Flynne242f2d2019-05-22 14:24:13 +0100522BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000523{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000524 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000525}
526
Jim Flynne242f2d2019-05-22 14:24:13 +0100527BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000528{
Jim Flynne242f2d2019-05-22 14:24:13 +0100529 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000530}
531
Jim Flynne242f2d2019-05-22 14:24:13 +0100532BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000533{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000534 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000535}
536
Jim Flynne242f2d2019-05-22 14:24:13 +0100537BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Test)
narpra01b9546cf2018-11-20 15:21:28 +0000538{
Jim Flynne242f2d2019-05-22 14:24:13 +0100539 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000540}
541
Jim Flynne242f2d2019-05-22 14:24:13 +0100542BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000543{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000544 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000545}
546
Jim Flynne242f2d2019-05-22 14:24:13 +0100547BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000548{
Jim Flynne242f2d2019-05-22 14:24:13 +0100549 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000550}
551
Jim Flynne242f2d2019-05-22 14:24:13 +0100552BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000553{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000554 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000555}
556
Jan Eilersbca73e12020-03-11 12:52:46 +0000557BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat32)
558{
559 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
560}
561
562BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat16)
563{
564 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
565}
566
567BOOST_AUTO_TEST_CASE(RefEluEndToEndTestBFloat16)
568{
569 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
570}
571
572BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmS8)
573{
574 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
575}
576
577BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmU8)
578{
579 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
580}
581
582BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQSymmS16)
583{
584 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
585}
586
Teresa Charlin44088502020-07-27 11:27:19 +0100587BOOST_AUTO_TEST_CASE(RefFillEndToEndTest)
588{
589 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
590}
591
592//BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16)
593//{
594// FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
595//}
596
597BOOST_AUTO_TEST_CASE(RefFillEndToEndTestInt32)
598{
599 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
600}
601
narpra01db2b1602019-01-23 15:23:11 +0000602BOOST_AUTO_TEST_CASE(RefGatherFloatTest)
603{
604 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
605}
606
607BOOST_AUTO_TEST_CASE(RefGatherUint8Test)
608{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000609 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000610}
611
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100612BOOST_AUTO_TEST_CASE(RefGatherInt16Test)
613{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000614 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100615}
616
narpra01db2b1602019-01-23 15:23:11 +0000617BOOST_AUTO_TEST_CASE(RefGatherMultiDimFloatTest)
618{
619 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
620}
621
622BOOST_AUTO_TEST_CASE(RefGatherMultiDimUint8Test)
623{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000624 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000625}
626
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100627BOOST_AUTO_TEST_CASE(RefGatherMultiDimInt16Test)
628{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000629 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100630}
631
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100632// DepthToSpace
633BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
634{
635 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
636}
637
638BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
639{
640 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
641}
642
643BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
644{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000645 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100646}
647
648BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
649{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000650 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100651}
652
653BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
654{
655 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
656}
657
658BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
659{
660 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
661}
662
663BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
664{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000665 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100666}
667
668BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
669{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000670 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100671}
672
673// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100674BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
675{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000676 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100677}
678
679BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
680{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000681 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100682}
683
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100684BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleInt16Test)
685{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000686 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100687}
688
689BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetInt16Test)
690{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000691 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100692}
693
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000694BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsTest)
695{
696 std::vector<float> boxEncodings({
697 0.0f, 0.0f, 0.0f, 0.0f,
698 0.0f, 1.0f, 0.0f, 0.0f,
699 0.0f, -1.0f, 0.0f, 0.0f,
700 0.0f, 0.0f, 0.0f, 0.0f,
701 0.0f, 1.0f, 0.0f, 0.0f,
702 0.0f, 0.0f, 0.0f, 0.0f
703 });
704 std::vector<float> scores({
705 0.0f, 0.9f, 0.8f,
706 0.0f, 0.75f, 0.72f,
707 0.0f, 0.6f, 0.5f,
708 0.0f, 0.93f, 0.95f,
709 0.0f, 0.5f, 0.4f,
710 0.0f, 0.3f, 0.2f
711 });
712 std::vector<float> anchors({
713 0.5f, 0.5f, 1.0f, 1.0f,
714 0.5f, 0.5f, 1.0f, 1.0f,
715 0.5f, 0.5f, 1.0f, 1.0f,
716 0.5f, 10.5f, 1.0f, 1.0f,
717 0.5f, 10.5f, 1.0f, 1.0f,
718 0.5f, 100.5f, 1.0f, 1.0f
719 });
720 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
721}
722
723inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
724{
725 for (size_t i = 0; i < info.GetNumElements(); i++)
726 {
727 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
728 }
729}
730
731BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsUint8Test)
732{
733 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
734 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
735 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
736
737 boxEncodingsInfo.SetQuantizationScale(1.0f);
738 boxEncodingsInfo.SetQuantizationOffset(1);
739 scoresInfo.SetQuantizationScale(0.01f);
740 scoresInfo.SetQuantizationOffset(0);
741 anchorsInfo.SetQuantizationScale(0.5f);
742 anchorsInfo.SetQuantizationOffset(0);
743
744 std::vector<float> boxEncodings({
745 0.0f, 0.0f, 0.0f, 0.0f,
746 0.0f, 1.0f, 0.0f, 0.0f,
747 0.0f, -1.0f, 0.0f, 0.0f,
748 0.0f, 0.0f, 0.0f, 0.0f,
749 0.0f, 1.0f, 0.0f, 0.0f,
750 0.0f, 0.0f, 0.0f, 0.0f
751 });
752 std::vector<float> scores({
753 0.0f, 0.9f, 0.8f,
754 0.0f, 0.75f, 0.72f,
755 0.0f, 0.6f, 0.5f,
756 0.0f, 0.93f, 0.95f,
757 0.0f, 0.5f, 0.4f,
758 0.0f, 0.3f, 0.2f
759 });
760 std::vector<float> anchors({
761 0.5f, 0.5f, 1.0f, 1.0f,
762 0.5f, 0.5f, 1.0f, 1.0f,
763 0.5f, 0.5f, 1.0f, 1.0f,
764 0.5f, 10.5f, 1.0f, 1.0f,
765 0.5f, 10.5f, 1.0f, 1.0f,
766 0.5f, 100.5f, 1.0f, 1.0f
767 });
768
769 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
770 std::vector<uint8_t> qScores(scores.size(), 0);
771 std::vector<uint8_t> qAnchors(anchors.size(), 0);
772 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
773 QuantizeData(qScores.data(), scores.data(), scoresInfo);
774 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000775 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000776 qScores, qAnchors,
777 1.0f, 1, 0.01f, 0, 0.5f, 0);
778}
779
780BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsTest)
781{
782 std::vector<float> boxEncodings({
783 0.0f, 0.0f, 0.0f, 0.0f,
784 0.0f, 1.0f, 0.0f, 0.0f,
785 0.0f, -1.0f, 0.0f, 0.0f,
786 0.0f, 0.0f, 0.0f, 0.0f,
787 0.0f, 1.0f, 0.0f, 0.0f,
788 0.0f, 0.0f, 0.0f, 0.0f
789 });
790 std::vector<float> scores({
791 0.0f, 0.9f, 0.8f,
792 0.0f, 0.75f, 0.72f,
793 0.0f, 0.6f, 0.5f,
794 0.0f, 0.93f, 0.95f,
795 0.0f, 0.5f, 0.4f,
796 0.0f, 0.3f, 0.2f
797 });
798 std::vector<float> anchors({
799 0.5f, 0.5f, 1.0f, 1.0f,
800 0.5f, 0.5f, 1.0f, 1.0f,
801 0.5f, 0.5f, 1.0f, 1.0f,
802 0.5f, 10.5f, 1.0f, 1.0f,
803 0.5f, 10.5f, 1.0f, 1.0f,
804 0.5f, 100.5f, 1.0f, 1.0f
805 });
806 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
807}
808
809BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
810{
811 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
812 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
813 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
814
815 boxEncodingsInfo.SetQuantizationScale(1.0f);
816 boxEncodingsInfo.SetQuantizationOffset(1);
817 scoresInfo.SetQuantizationScale(0.01f);
818 scoresInfo.SetQuantizationOffset(0);
819 anchorsInfo.SetQuantizationScale(0.5f);
820 anchorsInfo.SetQuantizationOffset(0);
821
822 std::vector<float> boxEncodings({
823 0.0f, 0.0f, 0.0f, 0.0f,
824 0.0f, 1.0f, 0.0f, 0.0f,
825 0.0f, -1.0f, 0.0f, 0.0f,
826 0.0f, 0.0f, 0.0f, 0.0f,
827 0.0f, 1.0f, 0.0f, 0.0f,
828 0.0f, 0.0f, 0.0f, 0.0f
829 });
830 std::vector<float> scores({
831 0.0f, 0.9f, 0.8f,
832 0.0f, 0.75f, 0.72f,
833 0.0f, 0.6f, 0.5f,
834 0.0f, 0.93f, 0.95f,
835 0.0f, 0.5f, 0.4f,
836 0.0f, 0.3f, 0.2f
837 });
838 std::vector<float> anchors({
839 0.5f, 0.5f, 1.0f, 1.0f,
840 0.5f, 0.5f, 1.0f, 1.0f,
841 0.5f, 0.5f, 1.0f, 1.0f,
842 0.5f, 10.5f, 1.0f, 1.0f,
843 0.5f, 10.5f, 1.0f, 1.0f,
844 0.5f, 100.5f, 1.0f, 1.0f
845 });
846
847 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
848 std::vector<uint8_t> qScores(scores.size(), 0);
849 std::vector<uint8_t> qAnchors(anchors.size(), 0);
850 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
851 QuantizeData(qScores.data(), scores.data(), scoresInfo);
852 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000853 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000854 qScores, qAnchors,
855 1.0f, 1, 0.01f, 0, 0.5f, 0);
856}
857
Jan Eilersa83af7b2020-03-18 15:58:11 +0000858// HardSwish
859BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat32)
860{
861 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
862}
863
864BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat16)
865{
866 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
867}
868
869BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestBFloat16)
870{
871HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
872}
873
874BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmS8)
875{
876 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
877}
878
879BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmU8)
880{
881 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
882}
883
884BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQSymmS16)
885{
886 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
887}
888
Sadik Armagan20bea002019-10-16 09:29:38 +0100889// LogSoftmax
890BOOST_AUTO_TEST_CASE(RefLogSoftmaxEndToEndTest)
891{
892 LogSoftmaxEndToEndTest(defaultBackends);
893}
894
Nikhil Raj747f5862019-07-19 15:15:23 +0100895BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestFloat32)
896{
897 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
898}
899
900BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestUint8)
901{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000902 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100903}
904
905BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestQSymm16)
906{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000907 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100908}
909
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100910BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100911{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100912 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100913}
914
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100915BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100916{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100917 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100918
Keith Davis9515c7e2019-06-21 09:33:59 +0100919}
920
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100921BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100922{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100923 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100924}
925
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100926BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100927{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100928 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100929}
930
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100931BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100932{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100933 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100934}
935
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100936BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100937{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000938 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100939}
940
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100941BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100942{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100943 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100944}
945
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100946BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100947{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100948 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100949}
950
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100951BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100952{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000953 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100954}
955
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100956BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100957{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000958 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100959}
960
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100961BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100962{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100963 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100964}
965
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100966BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100967{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100968 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
969}
970
971BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndTest)
972{
973 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
974}
975
976BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndUint8Test)
977{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000978 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100979}
980
981BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndUint8Test)
982{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000983 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100984}
985
986BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndUint8Test)
987{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000988 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100989}
990
991BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndTest)
992{
993 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
994}
995
996BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndTest)
997{
998 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
999}
1000
1001BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndTest)
1002{
1003 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1004}
1005
1006BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndTest)
1007{
1008 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1009}
1010
1011BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndUint8Test)
1012{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001013 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001014}
1015
1016BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndUint8Test)
1017{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001018 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001019}
1020
1021BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndUint8Test)
1022{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001023 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001024}
1025
1026BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndUint8Test)
1027{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001028 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001029}
1030
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001031// TransposeConvolution2d
1032BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNchwTest)
1033{
1034 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1035 defaultBackends, armnn::DataLayout::NCHW);
1036}
1037
1038BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NchwTest)
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::NCHW);
1042}
1043
1044BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NchwTest)
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::NCHW);
1048}
1049
1050BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNhwcTest)
1051{
1052 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1053 defaultBackends, armnn::DataLayout::NHWC);
1054}
1055
1056BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NhwcTest)
1057{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001058 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001059 defaultBackends, armnn::DataLayout::NHWC);
1060}
1061
1062BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NhwcTest)
1063{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001064 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001065 defaultBackends, armnn::DataLayout::NHWC);
1066}
1067
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001068// Resize Bilinear
1069BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNchwTest)
1070{
1071 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1072}
1073
1074BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NchwTest)
1075{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001076 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001077}
1078
1079BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NchwTest)
1080{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001081 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001082}
1083
1084BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNhwcTest)
1085{
1086 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1087}
1088
1089BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NhwcTest)
1090{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001091 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001092}
1093
1094BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NhwcTest)
1095{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001096 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001097}
1098
1099// Resize NearestNeighbor
1100BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNchwTest)
1101{
1102 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1103}
1104
1105BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NchwTest)
1106{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001107 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001108}
1109
1110BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NchwTest)
1111{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001112 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001113}
1114
1115BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNhwcTest)
1116{
1117 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1118}
1119
1120BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NhwcTest)
1121{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001122 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001123}
1124
1125BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NhwcTest)
1126{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001127 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001128}
1129
Sadik Armagan062e0e92019-10-14 10:31:43 +01001130// InstanceNormalization
1131BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest1)
1132{
1133 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1134}
1135
1136BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest1)
1137{
1138 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1139}
1140
1141BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest2)
1142{
1143 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1144}
1145
1146BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest2)
1147{
1148 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1149}
1150
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001151// ArgMinMax
1152BOOST_AUTO_TEST_CASE(RefArgMaxSimpleTest)
1153{
1154 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1155}
1156
1157BOOST_AUTO_TEST_CASE(RefArgMaxSimpleUint8Test)
1158{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001159 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001160}
1161
1162BOOST_AUTO_TEST_CASE(RefArgMinSimpleTest)
1163{
1164 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1165}
1166
1167BOOST_AUTO_TEST_CASE(RefArgMinSimpleUint8Test)
1168{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001169 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001170}
1171
1172BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Test)
1173{
1174 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1175}
1176
1177BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Uint8Test)
1178{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001179 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001180}
1181
1182BOOST_AUTO_TEST_CASE(RefArgMinAxis0Test)
1183{
1184 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1185}
1186
1187BOOST_AUTO_TEST_CASE(RefArgMinAxis0Uint8Test)
1188{
1189
Derek Lambertif90c56d2020-01-10 17:14:08 +00001190 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001191}
1192
1193BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Test)
1194{
1195 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1196}
1197
1198BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Uint8Test)
1199{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001200 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001201}
1202
1203BOOST_AUTO_TEST_CASE(RefArgMinAxis1Test)
1204{
1205 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1206}
1207
1208BOOST_AUTO_TEST_CASE(RefArgMinAxis1Uint8Test)
1209{
1210
Derek Lambertif90c56d2020-01-10 17:14:08 +00001211 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001212}
1213
1214BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Test)
1215{
1216 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1217}
1218
1219BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Uint8Test)
1220{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001221 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001222}
1223
1224BOOST_AUTO_TEST_CASE(RefArgMinAxis2Test)
1225{
1226 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1227}
1228
1229BOOST_AUTO_TEST_CASE(RefArgMinAxis2Uint8Test)
1230{
1231
Derek Lambertif90c56d2020-01-10 17:14:08 +00001232 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001233}
1234
1235BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Test)
1236{
1237 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1238}
1239
1240BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Uint8Test)
1241{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001242 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001243}
1244
1245BOOST_AUTO_TEST_CASE(RefArgMinAxis3Test)
1246{
1247 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1248}
1249
1250BOOST_AUTO_TEST_CASE(RefArgMinAxis3Uint8Test)
1251{
1252
Derek Lambertif90c56d2020-01-10 17:14:08 +00001253 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001254}
1255
James Conroy0800bf52020-05-14 12:46:44 +01001256BOOST_AUTO_TEST_CASE(RefQLstmEndToEndTest)
1257{
1258 QLstmEndToEnd(defaultBackends);
1259}
1260
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001261BOOST_AUTO_TEST_CASE(RefRankEndToEndTest)
1262{
1263 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1264}
1265
1266BOOST_AUTO_TEST_CASE(RefRankEndToEndTestFloat16)
1267{
1268 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1269}
1270
1271BOOST_AUTO_TEST_CASE(RefRankEndToEndTestInt32)
1272{
1273 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1274}
1275
1276BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQAsymmS8)
1277{
1278 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1279}
1280
1281BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQSymmS16)
1282{
1283 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1284}
1285
1286BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQSymmS8)
1287{
1288 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1289}
1290
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001291#if !defined(__ANDROID__)
1292// Only run these tests on non Android platforms
1293BOOST_AUTO_TEST_CASE(RefImportNonAlignedPointerTest)
1294{
David Monahan4f1e8e42019-09-04 09:22:10 +01001295 ImportNonAlignedInputPointerTest(defaultBackends);
1296}
1297
1298BOOST_AUTO_TEST_CASE(RefExportNonAlignedPointerTest)
1299{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001300 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001301}
1302
1303BOOST_AUTO_TEST_CASE(RefImportAlignedPointerTest)
1304{
1305 ImportAlignedPointerTest(defaultBackends);
1306}
1307
Ferran Balaguer83239f92019-09-19 11:49:25 +01001308BOOST_AUTO_TEST_CASE(RefImportOnlyWorkload)
1309{
1310 ImportOnlyWorkload(defaultBackends);
1311}
1312
1313BOOST_AUTO_TEST_CASE(RefExportOnlyWorkload)
1314{
1315 ExportOnlyWorkload(defaultBackends);
1316}
1317
1318BOOST_AUTO_TEST_CASE(RefImportAndExportWorkload)
1319{
1320 ImportAndExportWorkload(defaultBackends);
1321}
1322
1323BOOST_AUTO_TEST_CASE(RefExportOutputWithSeveralOutputSlotConnectionsTest)
1324{
1325 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1326}
1327
David Monahan0a99a142020-03-13 07:52:54 +00001328BOOST_AUTO_TEST_CASE(RefStridedSliceInvalidSliceEndToEndTest)
1329{
1330 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1331}
1332
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001333#endif
1334
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001335BOOST_AUTO_TEST_SUITE_END()