blob: 69a2048078bc8a224eb14949d7f657ff9b41b94b [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
Sadik Armagan1625efc2021-06-10 18:24:34 +010031#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010032
Sadik Armagan1625efc2021-06-10 18:24:34 +010033TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +010038TEST_CASE("RefAbsEndToEndTestFloat32")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010039{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +010051TEST_CASE("RefAbsEndToEndTestUint8")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010052{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +010065TEST_CASE("RefAbsEndToEndTestInt16")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010066{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +010080TEST_CASE("ConstantUsage_Ref_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010081{
Sadik Armagan1625efc2021-06-10 18:24:34 +010082 CHECK(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010083}
84
Sadik Armagan1625efc2021-06-10 18:24:34 +010085TEST_CASE("ConstantUsage_Ref_Uint8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010086{
Sadik Armagan1625efc2021-06-10 18:24:34 +010087 CHECK(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +010088}
89
Sadik Armagan1625efc2021-06-10 18:24:34 +010090TEST_CASE("Unsigned8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +010091{
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));
Sadik Armagan1625efc2021-06-10 18:24:34 +0100125 CHECK(error == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100126
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.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100147 CHECK(outputData[0] == 0);
148 CHECK(outputData[1] == 0);
149 CHECK(outputData[2] == 0);
150 CHECK(outputData[3] == 255); // softmax has been saturated.
151 CHECK(outputData[4] == 0);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100152}
153
Sadik Armagan1625efc2021-06-10 18:24:34 +0100154TEST_CASE("TrivialAdd")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100155{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100214 CHECK(outputData[0] == 101);
215 CHECK(outputData[1] == 202);
216 CHECK(outputData[2] == 303);
217 CHECK(outputData[3] == 404);
218 CHECK(outputData[4] == 505);
219 CHECK(outputData[5] == 606);
220 CHECK(outputData[6] == 707);
221 CHECK(outputData[7] == 808);
222 CHECK(outputData[8] == 909);
223 CHECK(outputData[9] == 1010);
224 CHECK(outputData[10] == 1111);
225 CHECK(outputData[11] == 1212);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100226}
227
Sadik Armagan1625efc2021-06-10 18:24:34 +0100228TEST_CASE("MultipleOutputs")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100229{
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.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100309 CHECK(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 CHECK(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 CHECK(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]
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100312}
313
Sadik Armagan1625efc2021-06-10 18:24:34 +0100314TEST_CASE("TrivialMin")
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000315{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100372 CHECK(outputData[0] == 1);
373 CHECK(outputData[1] == 1);
374 CHECK(outputData[2] == 3);
375 CHECK(outputData[3] == 2);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000376}
377
Sadik Armagan1625efc2021-06-10 18:24:34 +0100378TEST_CASE("RefEqualSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000379{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100388TEST_CASE("RefGreaterSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000389{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100398TEST_CASE("RefEqualSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000399{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100408TEST_CASE("RefGreaterSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000409{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100418TEST_CASE("RefEqualBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000419{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100428TEST_CASE("RefGreaterBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000429{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100438TEST_CASE("RefEqualBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000439{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100448TEST_CASE("RefGreaterBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000449{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100458TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100459{
460 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
461}
462
Sadik Armagan1625efc2021-06-10 18:24:34 +0100463TEST_CASE("RefBatchToSpaceNdEndToEndUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100464{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100468TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100469{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100473TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100474{
475 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
476}
477
Sadik Armagan1625efc2021-06-10 18:24:34 +0100478TEST_CASE("RefBatchToSpaceNdEndToEndUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100479{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100483TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100484{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100488TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100489{
490 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
491}
492
Sadik Armagan1625efc2021-06-10 18:24:34 +0100493TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100494{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100498TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100499{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100503TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100504{
505 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
506}
507
Sadik Armagan1625efc2021-06-10 18:24:34 +0100508TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100509{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100513TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100514{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100518TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100523TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100528TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100533TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100538TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100543TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100548TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100553TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100558TEST_CASE("RefEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000559{
560 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
561}
562
Sadik Armagan1625efc2021-06-10 18:24:34 +0100563TEST_CASE("RefEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000564{
565 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
566}
567
Sadik Armagan1625efc2021-06-10 18:24:34 +0100568TEST_CASE("RefEluEndToEndTestBFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000569{
570 EluEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
571}
572
Sadik Armagan1625efc2021-06-10 18:24:34 +0100573TEST_CASE("RefEluEndToEndTestQAsymmS8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000574{
575 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
576}
577
Sadik Armagan1625efc2021-06-10 18:24:34 +0100578TEST_CASE("RefEluEndToEndTestQAsymmU8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000579{
580 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
581}
582
Sadik Armagan1625efc2021-06-10 18:24:34 +0100583TEST_CASE("RefEluEndToEndTestQSymmS16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000584{
585 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
586}
587
Sadik Armagan1625efc2021-06-10 18:24:34 +0100588TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100589{
590 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
591}
592
Sadik Armagan1625efc2021-06-10 18:24:34 +0100593TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100594{
595 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
596}
Teresa Charlin44088502020-07-27 11:27:19 +0100597
Sadik Armagan1625efc2021-06-10 18:24:34 +0100598TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100599{
600 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
601}
602
Sadik Armagan1625efc2021-06-10 18:24:34 +0100603TEST_CASE("RefFullyConnectedEndToEndTestInt32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000604{
605 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
606}
607
Sadik Armagan1625efc2021-06-10 18:24:34 +0100608TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000609{
610 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
611}
612
Sadik Armagan1625efc2021-06-10 18:24:34 +0100613TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000614{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000615 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000616}
617
Sadik Armagan1625efc2021-06-10 18:24:34 +0100618TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100619{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000620 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100621}
622
Sadik Armagan1625efc2021-06-10 18:24:34 +0100623TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000624{
625 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
626}
627
Sadik Armagan1625efc2021-06-10 18:24:34 +0100628TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000629{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000630 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000631}
632
Sadik Armagan1625efc2021-06-10 18:24:34 +0100633TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100634{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100639TEST_CASE("DephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100640{
641 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
642}
643
Sadik Armagan1625efc2021-06-10 18:24:34 +0100644TEST_CASE("DephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100645{
646 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
647}
648
Sadik Armagan1625efc2021-06-10 18:24:34 +0100649TEST_CASE("DephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100650{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100654TEST_CASE("DephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100655{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100659TEST_CASE("DephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100660{
661 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
662}
663
Sadik Armagan1625efc2021-06-10 18:24:34 +0100664TEST_CASE("DephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100665{
666 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
667}
668
Sadik Armagan1625efc2021-06-10 18:24:34 +0100669TEST_CASE("DephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100670{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100674TEST_CASE("DephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100675{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100680TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100681{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000682 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100683}
684
Sadik Armagan1625efc2021-06-10 18:24:34 +0100685TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100686{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000687 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100688}
689
Sadik Armagan1625efc2021-06-10 18:24:34 +0100690TEST_CASE("DequantizeEndToEndSimpleInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100691{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000692 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100693}
694
Sadik Armagan1625efc2021-06-10 18:24:34 +0100695TEST_CASE("DequantizeEndToEndOffsetInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100696{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000697 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100698}
699
Sadik Armagan1625efc2021-06-10 18:24:34 +0100700TEST_CASE("RefDetectionPostProcessRegularNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000701{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100737TEST_CASE("RefDetectionPostProcessRegularNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000738{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100786TEST_CASE("RefDetectionPostProcessFastNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000787{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100815TEST_CASE("RefDetectionPostProcessFastNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000816{
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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100865TEST_CASE("RefHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000866{
867 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
868}
869
Sadik Armagan1625efc2021-06-10 18:24:34 +0100870TEST_CASE("RefHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000871{
872 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
873}
874
Sadik Armagan1625efc2021-06-10 18:24:34 +0100875TEST_CASE("RefHardSwishEndToEndTestBFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000876{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100877 HardSwishEndToEndTest<armnn::DataType::BFloat16>(defaultBackends);
Jan Eilersa83af7b2020-03-18 15:58:11 +0000878}
879
Sadik Armagan1625efc2021-06-10 18:24:34 +0100880TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000881{
882 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
883}
884
Sadik Armagan1625efc2021-06-10 18:24:34 +0100885TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000886{
887 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
888}
889
Sadik Armagan1625efc2021-06-10 18:24:34 +0100890TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +0000891{
892 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
893}
894
Sadik Armagan20bea002019-10-16 09:29:38 +0100895// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +0100896TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +0100897{
898 LogSoftmaxEndToEndTest(defaultBackends);
899}
900
Sadik Armagan1625efc2021-06-10 18:24:34 +0100901TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +0100902{
903 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
904}
905
Sadik Armagan1625efc2021-06-10 18:24:34 +0100906TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +0100907{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000908 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100909}
910
Sadik Armagan1625efc2021-06-10 18:24:34 +0100911TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +0100912{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000913 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +0100914}
915
Sadik Armagan1625efc2021-06-10 18:24:34 +0100916TEST_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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100921TEST_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}
925
Sadik Armagan1625efc2021-06-10 18:24:34 +0100926TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +0100927{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100928 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100929}
930
Sadik Armagan1625efc2021-06-10 18:24:34 +0100931TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +0100932{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100933 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +0100934}
935
Sadik Armagan1625efc2021-06-10 18:24:34 +0100936TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100937{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100938 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100939}
940
Sadik Armagan1625efc2021-06-10 18:24:34 +0100941TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100942{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000943 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100944}
945
Sadik Armagan1625efc2021-06-10 18:24:34 +0100946TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100947{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100948 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100949}
950
Sadik Armagan1625efc2021-06-10 18:24:34 +0100951TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100952{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100953 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100954}
955
Sadik Armagan1625efc2021-06-10 18:24:34 +0100956TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100957{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000958 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100959}
960
Sadik Armagan1625efc2021-06-10 18:24:34 +0100961TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100962{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000963 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100964}
965
Sadik Armagan1625efc2021-06-10 18:24:34 +0100966TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100967{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100968 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100969}
970
Sadik Armagan1625efc2021-06-10 18:24:34 +0100971TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +0100972{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100973 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
974}
975
Sadik Armagan1625efc2021-06-10 18:24:34 +0100976TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100977{
978 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
979}
980
Sadik Armagan1625efc2021-06-10 18:24:34 +0100981TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100982{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000983 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100984}
985
Sadik Armagan1625efc2021-06-10 18:24:34 +0100986TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100987{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000988 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100989}
990
Sadik Armagan1625efc2021-06-10 18:24:34 +0100991TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100992{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000993 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100994}
995
Sadik Armagan1625efc2021-06-10 18:24:34 +0100996TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +0100997{
998 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
999}
1000
Sadik Armagan1625efc2021-06-10 18:24:34 +01001001TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001002{
1003 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1004}
1005
Sadik Armagan1625efc2021-06-10 18:24:34 +01001006TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001007{
1008 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1009}
1010
Sadik Armagan1625efc2021-06-10 18:24:34 +01001011TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001012{
1013 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1014}
1015
Sadik Armagan1625efc2021-06-10 18:24:34 +01001016TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001017{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001018 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001019}
1020
Sadik Armagan1625efc2021-06-10 18:24:34 +01001021TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001022{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001023 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001024}
1025
Sadik Armagan1625efc2021-06-10 18:24:34 +01001026TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001027{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001028 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001029}
1030
Sadik Armagan1625efc2021-06-10 18:24:34 +01001031TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001032{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001033 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001034}
1035
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001036// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001037TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001038{
1039 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1040 defaultBackends, armnn::DataLayout::NCHW);
1041}
1042
Sadik Armagan1625efc2021-06-10 18:24:34 +01001043TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001044{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001045 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001046 defaultBackends, armnn::DataLayout::NCHW);
1047}
1048
Sadik Armagan1625efc2021-06-10 18:24:34 +01001049TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001050{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001051 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001052 defaultBackends, armnn::DataLayout::NCHW);
1053}
1054
Sadik Armagan1625efc2021-06-10 18:24:34 +01001055TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001056{
1057 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1058 defaultBackends, armnn::DataLayout::NHWC);
1059}
1060
Sadik Armagan1625efc2021-06-10 18:24:34 +01001061TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001062{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001063 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001064 defaultBackends, armnn::DataLayout::NHWC);
1065}
1066
Sadik Armagan1625efc2021-06-10 18:24:34 +01001067TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001068{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001069 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001070 defaultBackends, armnn::DataLayout::NHWC);
1071}
1072
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001073// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001074TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001075{
1076 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1077}
1078
Sadik Armagan1625efc2021-06-10 18:24:34 +01001079TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001080{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001081 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001082}
1083
Sadik Armagan1625efc2021-06-10 18:24:34 +01001084TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001085{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001086 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001087}
1088
Sadik Armagan1625efc2021-06-10 18:24:34 +01001089TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001090{
1091 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1092}
1093
Sadik Armagan1625efc2021-06-10 18:24:34 +01001094TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001095{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001096 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001097}
1098
Sadik Armagan1625efc2021-06-10 18:24:34 +01001099TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001100{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001101 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001102}
1103
1104// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001105TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001106{
1107 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1108}
1109
Sadik Armagan1625efc2021-06-10 18:24:34 +01001110TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001111{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001112 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001113}
1114
Sadik Armagan1625efc2021-06-10 18:24:34 +01001115TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001116{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001117 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001118}
1119
Sadik Armagan1625efc2021-06-10 18:24:34 +01001120TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001121{
1122 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1123}
1124
Sadik Armagan1625efc2021-06-10 18:24:34 +01001125TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001126{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001127 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001128}
1129
Sadik Armagan1625efc2021-06-10 18:24:34 +01001130TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001131{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001132 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001133}
1134
Sadik Armagan062e0e92019-10-14 10:31:43 +01001135// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001136TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001137{
1138 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1139}
1140
Sadik Armagan1625efc2021-06-10 18:24:34 +01001141TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001142{
1143 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1144}
1145
Sadik Armagan1625efc2021-06-10 18:24:34 +01001146TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001147{
1148 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1149}
1150
Sadik Armagan1625efc2021-06-10 18:24:34 +01001151TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001152{
1153 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1154}
1155
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001156// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001157TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001158{
1159 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1160}
1161
Sadik Armagan1625efc2021-06-10 18:24:34 +01001162TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001163{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001164 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001165}
1166
Sadik Armagan1625efc2021-06-10 18:24:34 +01001167TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001168{
1169 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1170}
1171
Sadik Armagan1625efc2021-06-10 18:24:34 +01001172TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001173{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001174 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001175}
1176
Sadik Armagan1625efc2021-06-10 18:24:34 +01001177TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001178{
1179 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1180}
1181
Sadik Armagan1625efc2021-06-10 18:24:34 +01001182TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001183{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001184 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001185}
1186
Sadik Armagan1625efc2021-06-10 18:24:34 +01001187TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001188{
1189 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1190}
1191
Sadik Armagan1625efc2021-06-10 18:24:34 +01001192TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001193{
1194
Derek Lambertif90c56d2020-01-10 17:14:08 +00001195 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001196}
1197
Sadik Armagan1625efc2021-06-10 18:24:34 +01001198TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001199{
1200 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1201}
1202
Sadik Armagan1625efc2021-06-10 18:24:34 +01001203TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001204{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001205 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001206}
1207
Sadik Armagan1625efc2021-06-10 18:24:34 +01001208TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001209{
1210 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1211}
1212
Sadik Armagan1625efc2021-06-10 18:24:34 +01001213TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001214{
1215
Derek Lambertif90c56d2020-01-10 17:14:08 +00001216 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001217}
1218
Sadik Armagan1625efc2021-06-10 18:24:34 +01001219TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001220{
1221 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1222}
1223
Sadik Armagan1625efc2021-06-10 18:24:34 +01001224TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001225{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001226 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001227}
1228
Sadik Armagan1625efc2021-06-10 18:24:34 +01001229TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001230{
1231 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1232}
1233
Sadik Armagan1625efc2021-06-10 18:24:34 +01001234TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001235{
1236
Derek Lambertif90c56d2020-01-10 17:14:08 +00001237 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001238}
1239
Sadik Armagan1625efc2021-06-10 18:24:34 +01001240TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001241{
1242 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1243}
1244
Sadik Armagan1625efc2021-06-10 18:24:34 +01001245TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001246{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001247 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001248}
1249
Sadik Armagan1625efc2021-06-10 18:24:34 +01001250TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001251{
1252 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1253}
1254
Sadik Armagan1625efc2021-06-10 18:24:34 +01001255TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001256{
1257
Derek Lambertif90c56d2020-01-10 17:14:08 +00001258 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001259}
1260
Sadik Armagan1625efc2021-06-10 18:24:34 +01001261TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001262{
1263 QLstmEndToEnd(defaultBackends);
1264}
1265
Sadik Armagan1625efc2021-06-10 18:24:34 +01001266TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001267{
1268 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1269}
1270
Sadik Armagan1625efc2021-06-10 18:24:34 +01001271TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001272{
1273 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1274}
1275
Sadik Armagan1625efc2021-06-10 18:24:34 +01001276TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001277{
1278 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1279}
1280
Sadik Armagan1625efc2021-06-10 18:24:34 +01001281TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001282{
1283 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1284}
1285
Sadik Armagan1625efc2021-06-10 18:24:34 +01001286TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001287{
1288 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1289}
1290
Sadik Armagan1625efc2021-06-10 18:24:34 +01001291TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001292{
1293 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1294}
1295
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001296#if !defined(__ANDROID__)
1297// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001298TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001299{
David Monahan4f1e8e42019-09-04 09:22:10 +01001300 ImportNonAlignedInputPointerTest(defaultBackends);
1301}
1302
Sadik Armagan1625efc2021-06-10 18:24:34 +01001303TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01001304{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001305 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001306}
1307
Sadik Armagan1625efc2021-06-10 18:24:34 +01001308TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001309{
1310 ImportAlignedPointerTest(defaultBackends);
1311}
1312
Sadik Armagan1625efc2021-06-10 18:24:34 +01001313TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001314{
1315 ImportOnlyWorkload(defaultBackends);
1316}
1317
Sadik Armagan1625efc2021-06-10 18:24:34 +01001318TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001319{
1320 ExportOnlyWorkload(defaultBackends);
1321}
1322
Sadik Armagan1625efc2021-06-10 18:24:34 +01001323TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001324{
1325 ImportAndExportWorkload(defaultBackends);
1326}
1327
Sadik Armagan1625efc2021-06-10 18:24:34 +01001328TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001329{
1330 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1331}
1332
Sadik Armagan1625efc2021-06-10 18:24:34 +01001333TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00001334{
1335 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1336}
1337
Sadik Armagan1625efc2021-06-10 18:24:34 +01001338TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01001339{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001340 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01001341}
Finn Williamsb8181f72021-04-07 10:23:21 +01001342
Sadik Armagan1625efc2021-06-10 18:24:34 +01001343TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01001344{
1345 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1346}
Keith Davise813d672021-04-22 10:10:34 +01001347
Sadik Armagan1625efc2021-06-10 18:24:34 +01001348TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01001349{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001350 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01001351}
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001352#endif
1353
Sadik Armagan1625efc2021-06-10 18:24:34 +01001354}