blob: 54b16dac3822ef072d9cd5c1cb05eb8c714a22ca [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Mike Kelly386ff1a2021-03-29 15:04:50 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tar70104002018-10-24 15:33:28 +01003// SPDX-License-Identifier: MIT
4//
5
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00006#include <backendsCommon/test/EndToEndTestImpl.hpp>
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +00007
Jan Eilersbca73e12020-03-11 12:52:46 +00008#include <backendsCommon/test/ActivationEndToEndTestImpl.hpp>
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00009#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Francis Murtaghe24e3cd2019-06-25 14:41:55 +010010#include <backendsCommon/test/BatchToSpaceNdEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010011#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010012#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010013#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010014#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010015#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060016#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010017#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armaganf0a6dec2021-03-25 07:46:55 +000018#include <backendsCommon/test/FullyConnectedEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000019#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010020#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010021#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010022#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010023#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010024#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010025#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010026#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010027#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly386ff1a2021-03-29 15:04:50 +010028#include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010029#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010030
31#include <boost/test/unit_test.hpp>
32
33BOOST_AUTO_TEST_SUITE(RefEndToEnd)
34
narpra01b9546cf2018-11-20 15:21:28 +000035std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
36
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010037// Abs
38BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
39{
josh minor4a3c6102020-01-06 16:40:46 -060040 std::vector<float> expectedOutput =
41 {
42 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
43 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
44 };
45
46 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
47 UnaryOperation::Abs,
48 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010049}
50
51BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestUint8)
52{
josh minor4a3c6102020-01-06 16:40:46 -060053 // Note the expected output will be implicitly quantized by the below test function
54 std::vector<float> expectedOutput =
55 {
56 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
57 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
58 };
59
60 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
61 UnaryOperation::Abs,
62 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010063}
64
65BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestInt16)
66{
josh minor4a3c6102020-01-06 16:40:46 -060067 // Note the expected output will be implicitly quantized by the below test function
68 std::vector<float> expectedOutput =
69 {
70 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
71 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
72 };
73
74 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
75 UnaryOperation::Abs,
76 expectedOutput);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010077}
78
79// Constant
Aron Virginas-Tar70104002018-10-24 15:33:28 +010080BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Float32)
81{
narpra01b9546cf2018-11-20 15:21:28 +000082 BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010083}
84
85BOOST_AUTO_TEST_CASE(ConstantUsage_Ref_Uint8)
86{
narpra01b9546cf2018-11-20 15:21:28 +000087 BOOST_TEST(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010088}
89
90BOOST_AUTO_TEST_CASE(Unsigned8)
91{
92 using namespace armnn;
93
94 // Create runtime in which test will run
95 armnn::IRuntime::CreationOptions options;
96 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
97
98 // Builds up the structure of the network.
99 armnn::INetworkPtr net(INetwork::Create());
100
101 IConnectableLayer* input = net->AddInputLayer(0, "input");
102 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
103 IConnectableLayer* output = net->AddOutputLayer(0, "output");
104
105 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
106 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
107
108 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000109 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100110 inputTensorInfo.SetQuantizationOffset(100);
111 inputTensorInfo.SetQuantizationScale(10000.0f);
112 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
113
Derek Lambertif90c56d2020-01-10 17:14:08 +0000114 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100115 outputTensorInfo.SetQuantizationOffset(0);
116 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
117 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
118
119 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000120 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100121
122 // Loads it into the runtime.
123 NetworkId netId;
124 auto error = runtime->LoadNetwork(netId, std::move(optNet));
125 BOOST_TEST(error == Status::Success);
126
127 // Creates structures for input & output.
128 std::vector<uint8_t> inputData
129 {
130 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
131 };
132 std::vector<uint8_t> outputData(5);
133
134 armnn::InputTensors inputTensors
135 {
136 {0, armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
137 };
138 armnn::OutputTensors outputTensors
139 {
140 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
141 };
142
143 // Does the inference.
144 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
145
146 // Checks the results.
147 BOOST_TEST(outputData[0] == 0);
148 BOOST_TEST(outputData[1] == 0);
149 BOOST_TEST(outputData[2] == 0);
150 BOOST_TEST(outputData[3] == 255); // softmax has been saturated.
151 BOOST_TEST(outputData[4] == 0);
152}
153
154BOOST_AUTO_TEST_CASE(TrivialAdd)
155{
156 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
157
158 using namespace armnn;
159
160 // Create runtime in which test will run
161 armnn::IRuntime::CreationOptions options;
162 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
163
164 // Builds up the structure of the network.
165 armnn::INetworkPtr net(INetwork::Create());
166
167 IConnectableLayer* input1 = net->AddInputLayer(0);
168 IConnectableLayer* input2 = net->AddInputLayer(1);
169 IConnectableLayer* add = net->AddAdditionLayer();
170 IConnectableLayer* output = net->AddOutputLayer(0);
171
172 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
173 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
174 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
175
176 // Sets the tensors in the network.
177 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
178 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
179 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
180 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
181
182 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000183 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100184
185 // Loads it into the runtime.
186 NetworkId netId;
187 runtime->LoadNetwork(netId, std::move(optNet));
188
189 // Creates structures for input & output - matching android nn test.
190 std::vector<float> input1Data
191 {
192 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
193 };
194 std::vector<float> input2Data
195 {
196 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
197 };
198 std::vector<float> outputData(12);
199
200 InputTensors inputTensors
201 {
202 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
203 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
204 };
205 OutputTensors outputTensors
206 {
207 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
208 };
209
210 // Does the inference.
211 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
212
213 // Checks the results
214 BOOST_TEST(outputData[0] == 101);
215 BOOST_TEST(outputData[1] == 202);
216 BOOST_TEST(outputData[2] == 303);
217 BOOST_TEST(outputData[3] == 404);
218 BOOST_TEST(outputData[4] == 505);
219 BOOST_TEST(outputData[5] == 606);
220 BOOST_TEST(outputData[6] == 707);
221 BOOST_TEST(outputData[7] == 808);
222 BOOST_TEST(outputData[8] == 909);
223 BOOST_TEST(outputData[9] == 1010);
224 BOOST_TEST(outputData[10] == 1111);
225 BOOST_TEST(outputData[11] == 1212);
226}
227
228BOOST_AUTO_TEST_CASE(MultipleOutputs)
229{
230 using namespace armnn;
231
232 // Create runtime in which test will run
233 armnn::IRuntime::CreationOptions options;
234 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
235
236 // Builds up the structure of the network.
237 INetworkPtr net(INetwork::Create());
238
239 IConnectableLayer* input = net->AddInputLayer(0);
240
241 // ReLu1
242 ActivationDescriptor activation1Descriptor;
243 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
244 activation1Descriptor.m_A = 1.f;
245 activation1Descriptor.m_B = -1.f;
246 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
247
248 // ReLu6
249 ActivationDescriptor activation2Descriptor;
250 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
251 activation2Descriptor.m_A = 6.0f;
252 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
253
254 // BoundedReLu(min=2, max=5)
255 ActivationDescriptor activation3Descriptor;
256 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
257 activation3Descriptor.m_A = 5.0f;
258 activation3Descriptor.m_B = 2.0f;
259 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
260
261 IConnectableLayer* output1 = net->AddOutputLayer(0);
262 IConnectableLayer* output2 = net->AddOutputLayer(1);
263 IConnectableLayer* output3 = net->AddOutputLayer(2);
264
265 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
266 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
267 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
268
269 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
270 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
271 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
272
273 // Sets the tensors in the network.
274 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
275 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
276 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
277 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
278 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
279
280 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000281 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100282
283 // Loads it into the runtime.
284 NetworkId netId;
285 runtime->LoadNetwork(netId, std::move(optNet));
286
287 // Creates structures for input & output.
288 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 };
289
290 std::vector<float> output1Data(inputData.size());
291 std::vector<float> output2Data(inputData.size());
292 std::vector<float> output3Data(inputData.size());
293
294 InputTensors inputTensors
295 {
296 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), inputData.data())}
297 };
298 OutputTensors outputTensors
299 {
300 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
301 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
302 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
303 };
304
305 // Does the inference.
306 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
307
308 // Checks the results.
309 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
310 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
311 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]
312}
313
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000314BOOST_AUTO_TEST_CASE(TrivialMin)
315{
316 using namespace armnn;
317
318 // Create runtime in which test will run
319 armnn::IRuntime::CreationOptions options;
320 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
321
322 // Builds up the structure of the network.
323 armnn::INetworkPtr net(INetwork::Create());
324
325 IConnectableLayer* input1 = net->AddInputLayer(0);
326 IConnectableLayer* input2 = net->AddInputLayer(1);
327 IConnectableLayer* min = net->AddMinimumLayer();
328 IConnectableLayer* output = net->AddOutputLayer(0);
329
330 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
331 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
332 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
333
334 // Sets the tensors in the network.
335 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
336 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
337 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
338 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
339
340 // optimize the network
341 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
342
343 // Loads it into the runtime.
344 NetworkId netId;
345 runtime->LoadNetwork(netId, std::move(optNet));
346
347 // Creates structures for input & output - matching android nn test.
348 std::vector<float> input1Data
349 {
350 1.0f, 2.0f, 3.0f, 4.0f
351 };
352 std::vector<float> input2Data
353 {
354 2.0f, 1.0f, 5.0f, 2.0f
355 };
356 std::vector<float> outputData(4);
357
358 InputTensors inputTensors
359 {
360 {0,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input1Data.data())},
361 {1,armnn::ConstTensor(runtime->GetInputTensorInfo(netId, 0), input2Data.data())}
362 };
363 OutputTensors outputTensors
364 {
365 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
366 };
367
368 // Does the inference.
369 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
370
371 // Checks the results
372 BOOST_TEST(outputData[0] == 1);
373 BOOST_TEST(outputData[1] == 1);
374 BOOST_TEST(outputData[2] == 3);
375 BOOST_TEST(outputData[3] == 2);
376}
377
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000378BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndTest)
379{
kevmay012b4d88e2019-01-24 14:05:09 +0000380 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
381 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000382
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100383 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
384 ComparisonOperation::Equal,
385 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000386}
387
388BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndTest)
389{
kevmay012b4d88e2019-01-24 14:05:09 +0000390 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
391 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000392
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100393 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
394 ComparisonOperation::Greater,
395 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000396}
397
398BOOST_AUTO_TEST_CASE(RefEqualSimpleEndToEndUint8Test)
399{
400 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
401 0, 0, 0, 0, 1, 1, 1, 1 });
402
Derek Lambertif90c56d2020-01-10 17:14:08 +0000403 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100404 ComparisonOperation::Equal,
405 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000406}
407
408BOOST_AUTO_TEST_CASE(RefGreaterSimpleEndToEndUint8Test)
409{
410 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
411 0, 0, 0, 0, 0, 0, 0, 0 });
412
Derek Lambertif90c56d2020-01-10 17:14:08 +0000413 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100414 ComparisonOperation::Greater,
415 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000416}
417
418BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndTest)
419{
kevmay012b4d88e2019-01-24 14:05:09 +0000420 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
421 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000422
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100423 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
424 ComparisonOperation::Equal,
425 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000426}
427
428BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndTest)
429{
kevmay012b4d88e2019-01-24 14:05:09 +0000430 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
431 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000432
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100433 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
434 ComparisonOperation::Greater,
435 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000436}
437
438BOOST_AUTO_TEST_CASE(RefEqualBroadcastEndToEndUint8Test)
439{
440 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
441 0, 0, 0, 0, 0, 0 });
442
Derek Lambertif90c56d2020-01-10 17:14:08 +0000443 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100444 ComparisonOperation::Equal,
445 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000446}
447
448BOOST_AUTO_TEST_CASE(RefGreaterBroadcastEndToEndUint8Test)
449{
450 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
451 1, 1, 1, 1, 1, 1 });
452
Derek Lambertif90c56d2020-01-10 17:14:08 +0000453 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100454 ComparisonOperation::Greater,
455 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000456}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000457
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100458BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NHWCTest)
459{
460 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
461}
462
463BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NHWCTest)
464{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000465 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100466}
467
468BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NHWCTest)
469{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000470 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100471}
472
473BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndFloat32NCHWTest)
474{
475 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
476}
477
478BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndUint8NCHWTest)
479{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000480 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100481}
482
483BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndQSymm16NCHWTest)
484{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000485 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100486}
487
488BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest)
489{
490 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
491}
492
493BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NHWCTest)
494{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000495 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100496}
497
498BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest)
499{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000500 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100501}
502
503BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest)
504{
505 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
506}
507
508BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexUint8NCHWTest)
509{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000510 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100511}
512
513BOOST_AUTO_TEST_CASE(RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest)
514{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000515 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100516}
517
Jim Flynne242f2d2019-05-22 14:24:13 +0100518BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Test)
narpra01b9546cf2018-11-20 15:21:28 +0000519{
Jim Flynne242f2d2019-05-22 14:24:13 +0100520 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000521}
522
Jim Flynne242f2d2019-05-22 14:24:13 +0100523BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim0Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000524{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000525 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000526}
527
Jim Flynne242f2d2019-05-22 14:24:13 +0100528BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Test)
narpra01b9546cf2018-11-20 15:21:28 +0000529{
Jim Flynne242f2d2019-05-22 14:24:13 +0100530 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000531}
532
Jim Flynne242f2d2019-05-22 14:24:13 +0100533BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim1Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000534{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000535 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000536}
537
Jim Flynne242f2d2019-05-22 14:24:13 +0100538BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Test)
narpra01b9546cf2018-11-20 15:21:28 +0000539{
Jim Flynne242f2d2019-05-22 14:24:13 +0100540 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000541}
542
Jim Flynne242f2d2019-05-22 14:24:13 +0100543BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim2Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000544{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000545 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000546}
547
Jim Flynne242f2d2019-05-22 14:24:13 +0100548BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Test)
narpra01b9546cf2018-11-20 15:21:28 +0000549{
Jim Flynne242f2d2019-05-22 14:24:13 +0100550 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000551}
552
Jim Flynne242f2d2019-05-22 14:24:13 +0100553BOOST_AUTO_TEST_CASE(RefConcatEndToEndDim3Uint8Test)
narpra01b9546cf2018-11-20 15:21:28 +0000554{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000555 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000556}
557
Jan Eilersbca73e12020-03-11 12:52:46 +0000558BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat32)
559{
560 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
561}
562
563BOOST_AUTO_TEST_CASE(RefEluEndToEndTestFloat16)
564{
565 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
566}
567
568BOOST_AUTO_TEST_CASE(RefEluEndToEndTestBFloat16)
569{
570 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
571}
572
573BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmS8)
574{
575 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
576}
577
578BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQAsymmU8)
579{
580 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
581}
582
583BOOST_AUTO_TEST_CASE(RefEluEndToEndTestQSymmS16)
584{
585 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
586}
587
Teresa Charlin44088502020-07-27 11:27:19 +0100588BOOST_AUTO_TEST_CASE(RefFillEndToEndTest)
589{
590 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
591}
592
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100593BOOST_AUTO_TEST_CASE(RefFillEndToEndTestFloat16)
594{
595 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
596}
Teresa Charlin44088502020-07-27 11:27:19 +0100597
598BOOST_AUTO_TEST_CASE(RefFillEndToEndTestInt32)
599{
600 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
601}
602
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000603BOOST_AUTO_TEST_CASE(RefFullyConnectedEndToEndTestInt32)
604{
605 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
606}
607
narpra01db2b1602019-01-23 15:23:11 +0000608BOOST_AUTO_TEST_CASE(RefGatherFloatTest)
609{
610 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
611}
612
613BOOST_AUTO_TEST_CASE(RefGatherUint8Test)
614{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000615 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000616}
617
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100618BOOST_AUTO_TEST_CASE(RefGatherInt16Test)
619{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000620 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100621}
622
narpra01db2b1602019-01-23 15:23:11 +0000623BOOST_AUTO_TEST_CASE(RefGatherMultiDimFloatTest)
624{
625 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
626}
627
628BOOST_AUTO_TEST_CASE(RefGatherMultiDimUint8Test)
629{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000630 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000631}
632
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100633BOOST_AUTO_TEST_CASE(RefGatherMultiDimInt16Test)
634{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000635 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100636}
637
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100638// DepthToSpace
639BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
640{
641 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
642}
643
644BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
645{
646 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
647}
648
649BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
650{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000651 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100652}
653
654BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
655{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000656 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100657}
658
659BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
660{
661 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
662}
663
664BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
665{
666 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
667}
668
669BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
670{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000671 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100672}
673
674BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
675{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000676 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100677}
678
679// Dequantize
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100680BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
681{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000682 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100683}
684
685BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetTest)
686{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000687 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100688}
689
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100690BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleInt16Test)
691{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000692 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100693}
694
695BOOST_AUTO_TEST_CASE(DequantizeEndToEndOffsetInt16Test)
696{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000697 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100698}
699
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000700BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsTest)
701{
702 std::vector<float> boxEncodings({
703 0.0f, 0.0f, 0.0f, 0.0f,
704 0.0f, 1.0f, 0.0f, 0.0f,
705 0.0f, -1.0f, 0.0f, 0.0f,
706 0.0f, 0.0f, 0.0f, 0.0f,
707 0.0f, 1.0f, 0.0f, 0.0f,
708 0.0f, 0.0f, 0.0f, 0.0f
709 });
710 std::vector<float> scores({
711 0.0f, 0.9f, 0.8f,
712 0.0f, 0.75f, 0.72f,
713 0.0f, 0.6f, 0.5f,
714 0.0f, 0.93f, 0.95f,
715 0.0f, 0.5f, 0.4f,
716 0.0f, 0.3f, 0.2f
717 });
718 std::vector<float> anchors({
719 0.5f, 0.5f, 1.0f, 1.0f,
720 0.5f, 0.5f, 1.0f, 1.0f,
721 0.5f, 0.5f, 1.0f, 1.0f,
722 0.5f, 10.5f, 1.0f, 1.0f,
723 0.5f, 10.5f, 1.0f, 1.0f,
724 0.5f, 100.5f, 1.0f, 1.0f
725 });
726 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
727}
728
729inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
730{
731 for (size_t i = 0; i < info.GetNumElements(); i++)
732 {
733 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
734 }
735}
736
737BOOST_AUTO_TEST_CASE(RefDetectionPostProcessRegularNmsUint8Test)
738{
739 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
740 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
741 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
742
743 boxEncodingsInfo.SetQuantizationScale(1.0f);
744 boxEncodingsInfo.SetQuantizationOffset(1);
745 scoresInfo.SetQuantizationScale(0.01f);
746 scoresInfo.SetQuantizationOffset(0);
747 anchorsInfo.SetQuantizationScale(0.5f);
748 anchorsInfo.SetQuantizationOffset(0);
749
750 std::vector<float> boxEncodings({
751 0.0f, 0.0f, 0.0f, 0.0f,
752 0.0f, 1.0f, 0.0f, 0.0f,
753 0.0f, -1.0f, 0.0f, 0.0f,
754 0.0f, 0.0f, 0.0f, 0.0f,
755 0.0f, 1.0f, 0.0f, 0.0f,
756 0.0f, 0.0f, 0.0f, 0.0f
757 });
758 std::vector<float> scores({
759 0.0f, 0.9f, 0.8f,
760 0.0f, 0.75f, 0.72f,
761 0.0f, 0.6f, 0.5f,
762 0.0f, 0.93f, 0.95f,
763 0.0f, 0.5f, 0.4f,
764 0.0f, 0.3f, 0.2f
765 });
766 std::vector<float> anchors({
767 0.5f, 0.5f, 1.0f, 1.0f,
768 0.5f, 0.5f, 1.0f, 1.0f,
769 0.5f, 0.5f, 1.0f, 1.0f,
770 0.5f, 10.5f, 1.0f, 1.0f,
771 0.5f, 10.5f, 1.0f, 1.0f,
772 0.5f, 100.5f, 1.0f, 1.0f
773 });
774
775 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
776 std::vector<uint8_t> qScores(scores.size(), 0);
777 std::vector<uint8_t> qAnchors(anchors.size(), 0);
778 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
779 QuantizeData(qScores.data(), scores.data(), scoresInfo);
780 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000781 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000782 qScores, qAnchors,
783 1.0f, 1, 0.01f, 0, 0.5f, 0);
784}
785
786BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsTest)
787{
788 std::vector<float> boxEncodings({
789 0.0f, 0.0f, 0.0f, 0.0f,
790 0.0f, 1.0f, 0.0f, 0.0f,
791 0.0f, -1.0f, 0.0f, 0.0f,
792 0.0f, 0.0f, 0.0f, 0.0f,
793 0.0f, 1.0f, 0.0f, 0.0f,
794 0.0f, 0.0f, 0.0f, 0.0f
795 });
796 std::vector<float> scores({
797 0.0f, 0.9f, 0.8f,
798 0.0f, 0.75f, 0.72f,
799 0.0f, 0.6f, 0.5f,
800 0.0f, 0.93f, 0.95f,
801 0.0f, 0.5f, 0.4f,
802 0.0f, 0.3f, 0.2f
803 });
804 std::vector<float> anchors({
805 0.5f, 0.5f, 1.0f, 1.0f,
806 0.5f, 0.5f, 1.0f, 1.0f,
807 0.5f, 0.5f, 1.0f, 1.0f,
808 0.5f, 10.5f, 1.0f, 1.0f,
809 0.5f, 10.5f, 1.0f, 1.0f,
810 0.5f, 100.5f, 1.0f, 1.0f
811 });
812 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
813}
814
815BOOST_AUTO_TEST_CASE(RefDetectionPostProcessFastNmsUint8Test)
816{
817 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
818 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
819 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
820
821 boxEncodingsInfo.SetQuantizationScale(1.0f);
822 boxEncodingsInfo.SetQuantizationOffset(1);
823 scoresInfo.SetQuantizationScale(0.01f);
824 scoresInfo.SetQuantizationOffset(0);
825 anchorsInfo.SetQuantizationScale(0.5f);
826 anchorsInfo.SetQuantizationOffset(0);
827
828 std::vector<float> boxEncodings({
829 0.0f, 0.0f, 0.0f, 0.0f,
830 0.0f, 1.0f, 0.0f, 0.0f,
831 0.0f, -1.0f, 0.0f, 0.0f,
832 0.0f, 0.0f, 0.0f, 0.0f,
833 0.0f, 1.0f, 0.0f, 0.0f,
834 0.0f, 0.0f, 0.0f, 0.0f
835 });
836 std::vector<float> scores({
837 0.0f, 0.9f, 0.8f,
838 0.0f, 0.75f, 0.72f,
839 0.0f, 0.6f, 0.5f,
840 0.0f, 0.93f, 0.95f,
841 0.0f, 0.5f, 0.4f,
842 0.0f, 0.3f, 0.2f
843 });
844 std::vector<float> anchors({
845 0.5f, 0.5f, 1.0f, 1.0f,
846 0.5f, 0.5f, 1.0f, 1.0f,
847 0.5f, 0.5f, 1.0f, 1.0f,
848 0.5f, 10.5f, 1.0f, 1.0f,
849 0.5f, 10.5f, 1.0f, 1.0f,
850 0.5f, 100.5f, 1.0f, 1.0f
851 });
852
853 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
854 std::vector<uint8_t> qScores(scores.size(), 0);
855 std::vector<uint8_t> qAnchors(anchors.size(), 0);
856 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
857 QuantizeData(qScores.data(), scores.data(), scoresInfo);
858 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000859 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000860 qScores, qAnchors,
861 1.0f, 1, 0.01f, 0, 0.5f, 0);
862}
863
Jan Eilersa83af7b2020-03-18 15:58:11 +0000864// HardSwish
865BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat32)
866{
867 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
868}
869
870BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestFloat16)
871{
872 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
873}
874
875BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestBFloat16)
876{
877HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
878}
879
880BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmS8)
881{
882 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
883}
884
885BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQAsymmU8)
886{
887 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
888}
889
890BOOST_AUTO_TEST_CASE(RefHardSwishEndToEndTestQSymmS16)
891{
892 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
893}
894
Sadik Armagan20bea002019-10-16 09:29:38 +0100895// LogSoftmax
896BOOST_AUTO_TEST_CASE(RefLogSoftmaxEndToEndTest)
897{
898 LogSoftmaxEndToEndTest(defaultBackends);
899}
900
Nikhil Raj747f5862019-07-19 15:15:23 +0100901BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestFloat32)
902{
903 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
904}
905
906BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestUint8)
907{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000908 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100909}
910
911BOOST_AUTO_TEST_CASE(RefPreluEndToEndTestQSymm16)
912{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000913 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100914}
915
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100916BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100917{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100918 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100919}
920
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100921BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest1)
Keith Davis9515c7e2019-06-21 09:33:59 +0100922{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100923 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100924
Keith Davis9515c7e2019-06-21 09:33:59 +0100925}
926
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100927BOOST_AUTO_TEST_CASE(RefSpaceToDepthNhwcEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100928{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100929 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100930}
931
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100932BOOST_AUTO_TEST_CASE(RefSpaceToDepthNchwEndToEndTest2)
Keith Davis9515c7e2019-06-21 09:33:59 +0100933{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100934 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100935}
936
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100937BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100938{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100939 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100940}
941
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100942BOOST_AUTO_TEST_CASE(RefSplitter1dEndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100943{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000944 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100945}
946
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100947BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100948{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100949 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100950}
951
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100952BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100953{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100954 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100955}
956
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100957BOOST_AUTO_TEST_CASE(RefSplitter2dDim0EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100958{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000959 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100960}
961
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100962BOOST_AUTO_TEST_CASE(RefSplitter2dDim1EndToEndUint8Test)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100963{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000964 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100965}
966
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100967BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100968{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100969 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100970}
971
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100972BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndTest)
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100973{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100974 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
975}
976
977BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndTest)
978{
979 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
980}
981
982BOOST_AUTO_TEST_CASE(RefSplitter3dDim0EndToEndUint8Test)
983{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000984 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100985}
986
987BOOST_AUTO_TEST_CASE(RefSplitter3dDim1EndToEndUint8Test)
988{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000989 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100990}
991
992BOOST_AUTO_TEST_CASE(RefSplitter3dDim2EndToEndUint8Test)
993{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000994 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100995}
996
997BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndTest)
998{
999 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1000}
1001
1002BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndTest)
1003{
1004 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1005}
1006
1007BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndTest)
1008{
1009 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1010}
1011
1012BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndTest)
1013{
1014 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1015}
1016
1017BOOST_AUTO_TEST_CASE(RefSplitter4dDim0EndToEndUint8Test)
1018{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001019 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001020}
1021
1022BOOST_AUTO_TEST_CASE(RefSplitter4dDim1EndToEndUint8Test)
1023{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001024 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001025}
1026
1027BOOST_AUTO_TEST_CASE(RefSplitter4dDim2EndToEndUint8Test)
1028{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001029 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001030}
1031
1032BOOST_AUTO_TEST_CASE(RefSplitter4dDim3EndToEndUint8Test)
1033{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001034 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001035}
1036
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001037// TransposeConvolution2d
1038BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNchwTest)
1039{
1040 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1041 defaultBackends, armnn::DataLayout::NCHW);
1042}
1043
1044BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NchwTest)
1045{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001046 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001047 defaultBackends, armnn::DataLayout::NCHW);
1048}
1049
1050BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NchwTest)
1051{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001052 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001053 defaultBackends, armnn::DataLayout::NCHW);
1054}
1055
1056BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndFloatNhwcTest)
1057{
1058 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1059 defaultBackends, armnn::DataLayout::NHWC);
1060}
1061
1062BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndUint8NhwcTest)
1063{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001064 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001065 defaultBackends, armnn::DataLayout::NHWC);
1066}
1067
1068BOOST_AUTO_TEST_CASE(RefTransposeConvolution2dEndToEndInt16NhwcTest)
1069{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001070 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001071 defaultBackends, armnn::DataLayout::NHWC);
1072}
1073
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001074// Resize Bilinear
1075BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNchwTest)
1076{
1077 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1078}
1079
1080BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NchwTest)
1081{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001082 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001083}
1084
1085BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NchwTest)
1086{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001087 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001088}
1089
1090BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndFloatNhwcTest)
1091{
1092 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1093}
1094
1095BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndUint8NhwcTest)
1096{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001097 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001098}
1099
1100BOOST_AUTO_TEST_CASE(RefResizeBilinearEndToEndInt16NhwcTest)
1101{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001102 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001103}
1104
1105// Resize NearestNeighbor
1106BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNchwTest)
1107{
1108 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1109}
1110
1111BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NchwTest)
1112{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001113 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001114}
1115
1116BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NchwTest)
1117{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001118 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001119}
1120
1121BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndFloatNhwcTest)
1122{
1123 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1124}
1125
1126BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndUint8NhwcTest)
1127{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001128 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001129}
1130
1131BOOST_AUTO_TEST_CASE(RefResizeNearestNeighborEndToEndInt16NhwcTest)
1132{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001133 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001134}
1135
Sadik Armagan062e0e92019-10-14 10:31:43 +01001136// InstanceNormalization
1137BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest1)
1138{
1139 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1140}
1141
1142BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest1)
1143{
1144 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1145}
1146
1147BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNhwcEndToEndTest2)
1148{
1149 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1150}
1151
1152BOOST_AUTO_TEST_CASE(RefInstanceNormalizationNchwEndToEndTest2)
1153{
1154 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1155}
1156
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001157// ArgMinMax
1158BOOST_AUTO_TEST_CASE(RefArgMaxSimpleTest)
1159{
1160 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1161}
1162
1163BOOST_AUTO_TEST_CASE(RefArgMaxSimpleUint8Test)
1164{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001165 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001166}
1167
1168BOOST_AUTO_TEST_CASE(RefArgMinSimpleTest)
1169{
1170 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1171}
1172
1173BOOST_AUTO_TEST_CASE(RefArgMinSimpleUint8Test)
1174{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001175 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001176}
1177
1178BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Test)
1179{
1180 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1181}
1182
1183BOOST_AUTO_TEST_CASE(RefArgMaxAxis0Uint8Test)
1184{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001185 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001186}
1187
1188BOOST_AUTO_TEST_CASE(RefArgMinAxis0Test)
1189{
1190 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1191}
1192
1193BOOST_AUTO_TEST_CASE(RefArgMinAxis0Uint8Test)
1194{
1195
Derek Lambertif90c56d2020-01-10 17:14:08 +00001196 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001197}
1198
1199BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Test)
1200{
1201 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1202}
1203
1204BOOST_AUTO_TEST_CASE(RefArgMaxAxis1Uint8Test)
1205{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001206 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001207}
1208
1209BOOST_AUTO_TEST_CASE(RefArgMinAxis1Test)
1210{
1211 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1212}
1213
1214BOOST_AUTO_TEST_CASE(RefArgMinAxis1Uint8Test)
1215{
1216
Derek Lambertif90c56d2020-01-10 17:14:08 +00001217 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001218}
1219
1220BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Test)
1221{
1222 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1223}
1224
1225BOOST_AUTO_TEST_CASE(RefArgMaxAxis2Uint8Test)
1226{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001227 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001228}
1229
1230BOOST_AUTO_TEST_CASE(RefArgMinAxis2Test)
1231{
1232 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1233}
1234
1235BOOST_AUTO_TEST_CASE(RefArgMinAxis2Uint8Test)
1236{
1237
Derek Lambertif90c56d2020-01-10 17:14:08 +00001238 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001239}
1240
1241BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Test)
1242{
1243 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1244}
1245
1246BOOST_AUTO_TEST_CASE(RefArgMaxAxis3Uint8Test)
1247{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001248 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001249}
1250
1251BOOST_AUTO_TEST_CASE(RefArgMinAxis3Test)
1252{
1253 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1254}
1255
1256BOOST_AUTO_TEST_CASE(RefArgMinAxis3Uint8Test)
1257{
1258
Derek Lambertif90c56d2020-01-10 17:14:08 +00001259 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001260}
1261
James Conroy0800bf52020-05-14 12:46:44 +01001262BOOST_AUTO_TEST_CASE(RefQLstmEndToEndTest)
1263{
1264 QLstmEndToEnd(defaultBackends);
1265}
1266
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001267BOOST_AUTO_TEST_CASE(RefRankEndToEndTest)
1268{
1269 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1270}
1271
1272BOOST_AUTO_TEST_CASE(RefRankEndToEndTestFloat16)
1273{
1274 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1275}
1276
1277BOOST_AUTO_TEST_CASE(RefRankEndToEndTestInt32)
1278{
1279 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1280}
1281
1282BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQAsymmS8)
1283{
1284 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1285}
1286
1287BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQSymmS16)
1288{
1289 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1290}
1291
1292BOOST_AUTO_TEST_CASE(RefRankEndToEndTestQSymmS8)
1293{
1294 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1295}
1296
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001297#if !defined(__ANDROID__)
1298// Only run these tests on non Android platforms
1299BOOST_AUTO_TEST_CASE(RefImportNonAlignedPointerTest)
1300{
David Monahan4f1e8e42019-09-04 09:22:10 +01001301 ImportNonAlignedInputPointerTest(defaultBackends);
1302}
1303
1304BOOST_AUTO_TEST_CASE(RefExportNonAlignedPointerTest)
1305{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001306 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001307}
1308
1309BOOST_AUTO_TEST_CASE(RefImportAlignedPointerTest)
1310{
1311 ImportAlignedPointerTest(defaultBackends);
1312}
1313
Ferran Balaguer83239f92019-09-19 11:49:25 +01001314BOOST_AUTO_TEST_CASE(RefImportOnlyWorkload)
1315{
1316 ImportOnlyWorkload(defaultBackends);
1317}
1318
1319BOOST_AUTO_TEST_CASE(RefExportOnlyWorkload)
1320{
1321 ExportOnlyWorkload(defaultBackends);
1322}
1323
1324BOOST_AUTO_TEST_CASE(RefImportAndExportWorkload)
1325{
1326 ImportAndExportWorkload(defaultBackends);
1327}
1328
1329BOOST_AUTO_TEST_CASE(RefExportOutputWithSeveralOutputSlotConnectionsTest)
1330{
1331 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1332}
1333
David Monahan0a99a142020-03-13 07:52:54 +00001334BOOST_AUTO_TEST_CASE(RefStridedSliceInvalidSliceEndToEndTest)
1335{
1336 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1337}
1338
Mike Kelly386ff1a2021-03-29 15:04:50 +01001339BOOST_AUTO_TEST_CASE(RefAsyncFP32StridedSlicedEndToEndTest)
1340{
1341 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1342}
Finn Williamsb8181f72021-04-07 10:23:21 +01001343
1344BOOST_AUTO_TEST_CASE(RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest)
1345{
1346 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1347}
Keith Davise813d672021-04-22 10:10:34 +01001348
1349BOOST_AUTO_TEST_CASE(RefAsyncScheduledFP32StridedSlicedEndToEndTest)
1350{
1351 armnn::experimental::AsyncScheduledStridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1352}
1353
1354BOOST_AUTO_TEST_CASE(RefAsyncScheduledStridedSlicedMultiThreadedEndToEndTest)
1355{
1356 using namespace armnn::experimental;
1357 AsyncScheduledStridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1358}
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001359#endif
1360
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001361BOOST_AUTO_TEST_SUITE_END()