blob: 09d6ac5d2044edbb6092539a4428231562a0f2cc [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Teresa Charlinc17a35f2023-01-12 14:13:09 +00002// Copyright © 2017-2023 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>
Ryan OShea3c2795a2022-11-03 17:51:52 +00009#include <backendsCommon/test/AdditionEndToEndTestImpl.hpp>
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +000010#include <backendsCommon/test/ArgMinMaxEndToEndTestImpl.hpp>
Francis Murtaghe24e3cd2019-06-25 14:41:55 +010011#include <backendsCommon/test/BatchToSpaceNdEndToEndTestImpl.hpp>
Teresa Charlina38da592022-10-31 22:09:23 +000012#include <backendsCommon/test/BatchMatMulEndToEndTestImpl.hpp>
Teresa Charlin43baf502021-09-27 10:10:39 +010013#include <backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010014#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010015#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +000016#include <backendsCommon/test/Convolution2dEndToEndTestImpl.hpp>
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +010017#include <backendsCommon/test/Convolution3dEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010018#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010019#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010020#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
Mike Kelly3ec30772023-03-08 13:47:17 +000021#include <backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060022#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010023#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armaganf0a6dec2021-03-25 07:46:55 +000024#include <backendsCommon/test/FullyConnectedEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000025#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Teresa Charlinb2d3ec52022-04-12 22:07:09 +010026#include <backendsCommon/test/GatherNdEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010027#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010028#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010029#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010030#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010031#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Teresa Charlinc17a35f2023-01-12 14:13:09 +000032#include <backendsCommon/test/ReduceEndToEndTestImpl.hpp>
33#include <backendsCommon/test/ReshapeEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010034#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Declan-ARM1bf56cd2023-07-20 17:32:57 +010035#include <backendsCommon/test/ReverseV2EndToEndTestImpl.hpp>
Ryan OShea980446b2023-06-08 16:23:28 +010036#include <backendsCommon/test/SliceEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010037#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010038#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly386ff1a2021-03-29 15:04:50 +010039#include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp>
Mike Kelly4cc341c2023-07-07 15:43:06 +010040#include <backendsCommon/test/SubgraphUtilsTest.hpp>
Cian McGriskin160edb32023-07-25 14:15:45 +010041#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010042#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000043#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010044
Sadik Armagan1625efc2021-06-10 18:24:34 +010045#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010046
Sadik Armagan1625efc2021-06-10 18:24:34 +010047TEST_SUITE("RefEndToEnd")
48{
narpra01b9546cf2018-11-20 15:21:28 +000049std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
50
David Monahand7fca092023-01-12 14:53:34 +000051// ElementwiseUnary
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010052// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010053TEST_CASE("RefAbsEndToEndTestFloat32")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010054{
josh minor4a3c6102020-01-06 16:40:46 -060055 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000056 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010057}
58
Sadik Armagan1625efc2021-06-10 18:24:34 +010059TEST_CASE("RefAbsEndToEndTestUint8")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010060{
josh minor4a3c6102020-01-06 16:40:46 -060061 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000062 UnaryOperation::Abs);
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 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000068 UnaryOperation::Abs);
69}
70
71// Rsqrt
72TEST_CASE("RefRsqrtEndToEndTestFloat32")
73{
74 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
75 UnaryOperation::Rsqrt);
76}
77
78TEST_CASE("RefRsqrtEndToEndTestUint8")
79{
80 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
81 UnaryOperation::Rsqrt);
82}
83
84TEST_CASE("RefRsqrtEndToEndTestInt16")
85{
86 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
87 UnaryOperation::Rsqrt);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010088}
89
Ryan OShea3c2795a2022-11-03 17:51:52 +000090// Addition
91TEST_CASE("RefAdditionEndtoEndFloat32")
92{
93 AdditionEndToEnd<armnn::DataType::Float32>(defaultBackends);
94}
95
96TEST_CASE("RefAdditionEndtoEndUint8")
97{
98 AdditionEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
99}
100
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +0100101// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +0100102TEST_CASE("ConstantUsage_Ref_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100103{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100104 CHECK(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100105}
106
Sadik Armagan1625efc2021-06-10 18:24:34 +0100107TEST_CASE("ConstantUsage_Ref_Uint8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100108{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100109 CHECK(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100110}
111
Sadik Armagan1625efc2021-06-10 18:24:34 +0100112TEST_CASE("Unsigned8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100113{
114 using namespace armnn;
115
116 // Create runtime in which test will run
117 armnn::IRuntime::CreationOptions options;
118 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
119
120 // Builds up the structure of the network.
121 armnn::INetworkPtr net(INetwork::Create());
122
123 IConnectableLayer* input = net->AddInputLayer(0, "input");
124 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
125 IConnectableLayer* output = net->AddOutputLayer(0, "output");
126
127 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
128 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
129
130 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000131 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100132 inputTensorInfo.SetQuantizationOffset(100);
133 inputTensorInfo.SetQuantizationScale(10000.0f);
134 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
135
Derek Lambertif90c56d2020-01-10 17:14:08 +0000136 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100137 outputTensorInfo.SetQuantizationOffset(0);
138 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
139 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
140
141 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000142 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100143
144 // Loads it into the runtime.
145 NetworkId netId;
146 auto error = runtime->LoadNetwork(netId, std::move(optNet));
Sadik Armagan1625efc2021-06-10 18:24:34 +0100147 CHECK(error == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100148
149 // Creates structures for input & output.
150 std::vector<uint8_t> inputData
151 {
152 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
153 };
154 std::vector<uint8_t> outputData(5);
155
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100156 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
157 inputTensorInfo2.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100158 armnn::InputTensors inputTensors
159 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100160 {0, armnn::ConstTensor(inputTensorInfo2, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100161 };
162 armnn::OutputTensors outputTensors
163 {
164 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
165 };
166
167 // Does the inference.
168 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
169
170 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100171 CHECK(outputData[0] == 0);
172 CHECK(outputData[1] == 0);
173 CHECK(outputData[2] == 0);
174 CHECK(outputData[3] == 255); // softmax has been saturated.
175 CHECK(outputData[4] == 0);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100176}
177
Sadik Armagan1625efc2021-06-10 18:24:34 +0100178TEST_CASE("TrivialAdd")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100179{
180 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
181
182 using namespace armnn;
183
184 // Create runtime in which test will run
185 armnn::IRuntime::CreationOptions options;
186 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
187
188 // Builds up the structure of the network.
189 armnn::INetworkPtr net(INetwork::Create());
190
191 IConnectableLayer* input1 = net->AddInputLayer(0);
192 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000193 IConnectableLayer* add = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Add));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100194 IConnectableLayer* output = net->AddOutputLayer(0);
195
196 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
197 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
198 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
199
200 // Sets the tensors in the network.
201 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
202 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
203 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
204 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
205
206 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000207 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100208
209 // Loads it into the runtime.
210 NetworkId netId;
211 runtime->LoadNetwork(netId, std::move(optNet));
212
213 // Creates structures for input & output - matching android nn test.
214 std::vector<float> input1Data
215 {
216 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
217 };
218 std::vector<float> input2Data
219 {
220 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
221 };
222 std::vector<float> outputData(12);
223
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100224 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
225 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100226 InputTensors inputTensors
227 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100228 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
229 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100230 };
231 OutputTensors outputTensors
232 {
233 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
234 };
235
236 // Does the inference.
237 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
238
239 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100240 CHECK(outputData[0] == 101);
241 CHECK(outputData[1] == 202);
242 CHECK(outputData[2] == 303);
243 CHECK(outputData[3] == 404);
244 CHECK(outputData[4] == 505);
245 CHECK(outputData[5] == 606);
246 CHECK(outputData[6] == 707);
247 CHECK(outputData[7] == 808);
248 CHECK(outputData[8] == 909);
249 CHECK(outputData[9] == 1010);
250 CHECK(outputData[10] == 1111);
251 CHECK(outputData[11] == 1212);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100252}
253
Sadik Armagan1625efc2021-06-10 18:24:34 +0100254TEST_CASE("MultipleOutputs")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100255{
256 using namespace armnn;
257
258 // Create runtime in which test will run
259 armnn::IRuntime::CreationOptions options;
260 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
261
262 // Builds up the structure of the network.
263 INetworkPtr net(INetwork::Create());
264
265 IConnectableLayer* input = net->AddInputLayer(0);
266
267 // ReLu1
268 ActivationDescriptor activation1Descriptor;
269 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
270 activation1Descriptor.m_A = 1.f;
271 activation1Descriptor.m_B = -1.f;
272 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
273
274 // ReLu6
275 ActivationDescriptor activation2Descriptor;
276 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
277 activation2Descriptor.m_A = 6.0f;
278 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
279
280 // BoundedReLu(min=2, max=5)
281 ActivationDescriptor activation3Descriptor;
282 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
283 activation3Descriptor.m_A = 5.0f;
284 activation3Descriptor.m_B = 2.0f;
285 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
286
287 IConnectableLayer* output1 = net->AddOutputLayer(0);
288 IConnectableLayer* output2 = net->AddOutputLayer(1);
289 IConnectableLayer* output3 = net->AddOutputLayer(2);
290
291 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
292 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
293 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
294
295 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
296 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
297 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
298
299 // Sets the tensors in the network.
300 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
301 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
302 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
303 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
304 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
305
306 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000307 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100308
309 // Loads it into the runtime.
310 NetworkId netId;
311 runtime->LoadNetwork(netId, std::move(optNet));
312
313 // Creates structures for input & output.
314 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 };
315
316 std::vector<float> output1Data(inputData.size());
317 std::vector<float> output2Data(inputData.size());
318 std::vector<float> output3Data(inputData.size());
319
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100320 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
321 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100322 InputTensors inputTensors
323 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100324 {0,armnn::ConstTensor(inputTensorInfo, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100325 };
326 OutputTensors outputTensors
327 {
328 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
329 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
330 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
331 };
332
333 // Does the inference.
334 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
335
336 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100337 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
338 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
339 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 +0100340}
341
Sadik Armagan1625efc2021-06-10 18:24:34 +0100342TEST_CASE("TrivialMin")
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000343{
344 using namespace armnn;
345
346 // Create runtime in which test will run
347 armnn::IRuntime::CreationOptions options;
348 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
349
350 // Builds up the structure of the network.
351 armnn::INetworkPtr net(INetwork::Create());
352
353 IConnectableLayer* input1 = net->AddInputLayer(0);
354 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000355 IConnectableLayer* min = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Minimum));
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000356 IConnectableLayer* output = net->AddOutputLayer(0);
357
358 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
359 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
360 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
361
362 // Sets the tensors in the network.
363 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
364 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
365 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
366 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
367
368 // optimize the network
369 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
370
371 // Loads it into the runtime.
372 NetworkId netId;
373 runtime->LoadNetwork(netId, std::move(optNet));
374
375 // Creates structures for input & output - matching android nn test.
376 std::vector<float> input1Data
377 {
378 1.0f, 2.0f, 3.0f, 4.0f
379 };
380 std::vector<float> input2Data
381 {
382 2.0f, 1.0f, 5.0f, 2.0f
383 };
384 std::vector<float> outputData(4);
385
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100386 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
387 inputTensorInfo.SetConstant(true);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000388 InputTensors inputTensors
389 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100390 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
391 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000392 };
393 OutputTensors outputTensors
394 {
395 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
396 };
397
398 // Does the inference.
399 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
400
401 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100402 CHECK(outputData[0] == 1);
403 CHECK(outputData[1] == 1);
404 CHECK(outputData[2] == 3);
405 CHECK(outputData[3] == 2);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000406}
407
Sadik Armagan1625efc2021-06-10 18:24:34 +0100408TEST_CASE("RefEqualSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000409{
kevmay012b4d88e2019-01-24 14:05:09 +0000410 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
411 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000412
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100413 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
414 ComparisonOperation::Equal,
415 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000416}
417
Sadik Armagan1625efc2021-06-10 18:24:34 +0100418TEST_CASE("RefGreaterSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000419{
kevmay012b4d88e2019-01-24 14:05:09 +0000420 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
421 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000422
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100423 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
424 ComparisonOperation::Greater,
425 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000426}
427
Sadik Armagan1625efc2021-06-10 18:24:34 +0100428TEST_CASE("RefEqualSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000429{
430 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
431 0, 0, 0, 0, 1, 1, 1, 1 });
432
Derek Lambertif90c56d2020-01-10 17:14:08 +0000433 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100434 ComparisonOperation::Equal,
435 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000436}
437
Sadik Armagan1625efc2021-06-10 18:24:34 +0100438TEST_CASE("RefGreaterSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000439{
440 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
441 0, 0, 0, 0, 0, 0, 0, 0 });
442
Derek Lambertif90c56d2020-01-10 17:14:08 +0000443 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100444 ComparisonOperation::Greater,
445 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000446}
447
Sadik Armagan1625efc2021-06-10 18:24:34 +0100448TEST_CASE("RefEqualBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000449{
kevmay012b4d88e2019-01-24 14:05:09 +0000450 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
451 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000452
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100453 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
454 ComparisonOperation::Equal,
455 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000456}
457
Sadik Armagan1625efc2021-06-10 18:24:34 +0100458TEST_CASE("RefGreaterBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000459{
kevmay012b4d88e2019-01-24 14:05:09 +0000460 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
461 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000462
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100463 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
464 ComparisonOperation::Greater,
465 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000466}
467
Sadik Armagan1625efc2021-06-10 18:24:34 +0100468TEST_CASE("RefEqualBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000469{
470 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
471 0, 0, 0, 0, 0, 0 });
472
Derek Lambertif90c56d2020-01-10 17:14:08 +0000473 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100474 ComparisonOperation::Equal,
475 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000476}
477
Sadik Armagan1625efc2021-06-10 18:24:34 +0100478TEST_CASE("RefGreaterBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000479{
480 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
481 1, 1, 1, 1, 1, 1 });
482
Derek Lambertif90c56d2020-01-10 17:14:08 +0000483 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100484 ComparisonOperation::Greater,
485 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000486}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000487
Teresa Charlina38da592022-10-31 22:09:23 +0000488TEST_CASE("RefBatchMatMulEndToEndFloat32Test")
489{
490 BatchMatMulEndToEnd<armnn::DataType::Float32>(defaultBackends);
491}
492
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000493TEST_CASE("RefBatchMatMulEndToEndInt8Test")
494{
495 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
496}
497
Sadik Armagan1625efc2021-06-10 18:24:34 +0100498TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100499{
500 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
501}
502
Sadik Armagan1625efc2021-06-10 18:24:34 +0100503TEST_CASE("RefBatchToSpaceNdEndToEndUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100504{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000505 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100506}
507
Sadik Armagan1625efc2021-06-10 18:24:34 +0100508TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100509{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000510 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100511}
512
Sadik Armagan1625efc2021-06-10 18:24:34 +0100513TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100514{
515 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
516}
517
Sadik Armagan1625efc2021-06-10 18:24:34 +0100518TEST_CASE("RefBatchToSpaceNdEndToEndUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100519{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000520 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100521}
522
Sadik Armagan1625efc2021-06-10 18:24:34 +0100523TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100524{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000525 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100526}
527
Sadik Armagan1625efc2021-06-10 18:24:34 +0100528TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100529{
530 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
531}
532
Sadik Armagan1625efc2021-06-10 18:24:34 +0100533TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100534{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000535 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100536}
537
Sadik Armagan1625efc2021-06-10 18:24:34 +0100538TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100539{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000540 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100541}
542
Sadik Armagan1625efc2021-06-10 18:24:34 +0100543TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100544{
545 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
546}
547
Sadik Armagan1625efc2021-06-10 18:24:34 +0100548TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100549{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000550 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100551}
552
Sadik Armagan1625efc2021-06-10 18:24:34 +0100553TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100554{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000555 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100556}
557
Teresa Charlin43baf502021-09-27 10:10:39 +0100558TEST_CASE("RefChannelShuffleFloatTest")
559{
560 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
561}
562
563TEST_CASE("RefChannelShuffleUint8Test")
564{
565 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
566}
567
Sadik Armagan1625efc2021-06-10 18:24:34 +0100568TEST_CASE("RefConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000569{
Jim Flynne242f2d2019-05-22 14:24:13 +0100570 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000571}
572
Sadik Armagan1625efc2021-06-10 18:24:34 +0100573TEST_CASE("RefConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000574{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000575 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000576}
577
Sadik Armagan1625efc2021-06-10 18:24:34 +0100578TEST_CASE("RefConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000579{
Jim Flynne242f2d2019-05-22 14:24:13 +0100580 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000581}
582
Sadik Armagan1625efc2021-06-10 18:24:34 +0100583TEST_CASE("RefConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000584{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000585 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000586}
587
Sadik Armagan1625efc2021-06-10 18:24:34 +0100588TEST_CASE("RefConcatEndToEndDim2Test")
narpra01b9546cf2018-11-20 15:21:28 +0000589{
Jim Flynne242f2d2019-05-22 14:24:13 +0100590 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000591}
592
Sadik Armagan1625efc2021-06-10 18:24:34 +0100593TEST_CASE("RefConcatEndToEndDim2Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000594{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000595 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000596}
597
Sadik Armagan1625efc2021-06-10 18:24:34 +0100598TEST_CASE("RefConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000599{
Jim Flynne242f2d2019-05-22 14:24:13 +0100600 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000601}
602
Sadik Armagan1625efc2021-06-10 18:24:34 +0100603TEST_CASE("RefConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000604{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000605 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000606}
607
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +0000608TEST_CASE("RefConvolution2dFloat32Test")
609{
610 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
611}
612
613TEST_CASE("RefConvolution2dNchwFloat32Test")
614{
615 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
616}
617
618TEST_CASE("RefConvolution2dFloat16Test")
619{
620 Convolution2dEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
621}
622
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +0100623TEST_CASE("RefConvolution3dFloat32Test")
624{
625 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
626 armnn::DataLayout::NDHWC);
627}
628
629TEST_CASE("RefConvolution3dNcdhwFloat32Test")
630{
631 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
632 armnn::DataLayout::NCDHW);
633}
634
635TEST_CASE("RefConvolution3dFloat16Test")
636{
637 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
638 armnn::DataLayout::NDHWC);
639}
640
641TEST_CASE("RefConvolution3dUint8Test")
642{
643 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
644 armnn::DataLayout::NDHWC);
645}
646
647TEST_CASE("RefConvolution3dInt8Test")
648{
649 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
650 armnn::DataLayout::NDHWC);
651}
652
Sadik Armagan1625efc2021-06-10 18:24:34 +0100653TEST_CASE("RefEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000654{
655 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
656}
657
Sadik Armagan1625efc2021-06-10 18:24:34 +0100658TEST_CASE("RefEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000659{
660 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
661}
662
Sadik Armagan1625efc2021-06-10 18:24:34 +0100663TEST_CASE("RefEluEndToEndTestQAsymmS8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000664{
665 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
666}
667
Sadik Armagan1625efc2021-06-10 18:24:34 +0100668TEST_CASE("RefEluEndToEndTestQAsymmU8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000669{
670 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
671}
672
Sadik Armagan1625efc2021-06-10 18:24:34 +0100673TEST_CASE("RefEluEndToEndTestQSymmS16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000674{
675 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
676}
677
Sadik Armagan1625efc2021-06-10 18:24:34 +0100678TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100679{
680 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
681}
682
Sadik Armagan1625efc2021-06-10 18:24:34 +0100683TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100684{
685 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
686}
Teresa Charlin44088502020-07-27 11:27:19 +0100687
Sadik Armagan1625efc2021-06-10 18:24:34 +0100688TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100689{
690 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
691}
692
Matthew Sloyan81beae32021-07-13 19:46:11 +0100693TEST_CASE("RefFullyConnectedEndToEndTestFloat32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000694{
695 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
696}
697
Matthew Sloyan81beae32021-07-13 19:46:11 +0100698TEST_CASE("RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
699{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100700 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100701}
702
703TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
704{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100705 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
Cathal Corbett521032f2021-10-07 11:46:40 +0100706}
707
708TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
709{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100710 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, true, true, false);
711}
712
713TEST_CASE("RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
714{
715 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, false, true, true);
716}
717
718TEST_CASE("RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
719{
720 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, true, false, true);
721}
722
723TEST_CASE("RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
724{
725 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, false, false, true);
726}
727
728TEST_CASE("RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
729{
730 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, false, false, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100731}
732
Sadik Armagan1625efc2021-06-10 18:24:34 +0100733TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000734{
735 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
736}
737
Sadik Armagan1625efc2021-06-10 18:24:34 +0100738TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000739{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000740 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000741}
742
Sadik Armagan1625efc2021-06-10 18:24:34 +0100743TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100744{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000745 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100746}
747
Sadik Armagan1625efc2021-06-10 18:24:34 +0100748TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000749{
750 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
751}
752
Sadik Armagan1625efc2021-06-10 18:24:34 +0100753TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000754{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000755 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000756}
757
Sadik Armagan1625efc2021-06-10 18:24:34 +0100758TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100759{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000760 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100761}
762
Teresa Charlinb2d3ec52022-04-12 22:07:09 +0100763TEST_CASE("RefGatherNdFloatTest")
764{
765 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
766}
767
768TEST_CASE("RefGatherNdUint8Test")
769{
770 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
771}
772
773TEST_CASE("RefGatherNdInt16Test")
774{
775 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
776}
777
778TEST_CASE("RefGatherNdMultiDimFloatTest")
779{
780 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
781}
782
783TEST_CASE("RefGatherNdMultiDimUint8Test")
784{
785 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
786}
787
788TEST_CASE("RefGatherNdMultiDimInt16Test")
789{
790 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
791}
792
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100793// DepthToSpace
Sadik Armagan1625efc2021-06-10 18:24:34 +0100794TEST_CASE("DephtToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100795{
796 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
797}
798
Sadik Armagan1625efc2021-06-10 18:24:34 +0100799TEST_CASE("DephtToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100800{
801 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
802}
803
Sadik Armagan1625efc2021-06-10 18:24:34 +0100804TEST_CASE("DephtToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100805{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000806 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100807}
808
Sadik Armagan1625efc2021-06-10 18:24:34 +0100809TEST_CASE("DephtToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100810{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000811 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100812}
813
Sadik Armagan1625efc2021-06-10 18:24:34 +0100814TEST_CASE("DephtToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100815{
816 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
817}
818
Sadik Armagan1625efc2021-06-10 18:24:34 +0100819TEST_CASE("DephtToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100820{
821 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
822}
823
Sadik Armagan1625efc2021-06-10 18:24:34 +0100824TEST_CASE("DephtToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100825{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000826 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100827}
828
Sadik Armagan1625efc2021-06-10 18:24:34 +0100829TEST_CASE("DephtToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100830{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000831 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100832}
833
834// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100835TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100836{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000837 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100838}
839
Sadik Armagan1625efc2021-06-10 18:24:34 +0100840TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100841{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000842 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100843}
844
Sadik Armagan1625efc2021-06-10 18:24:34 +0100845TEST_CASE("DequantizeEndToEndSimpleInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100846{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000847 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100848}
849
Sadik Armagan1625efc2021-06-10 18:24:34 +0100850TEST_CASE("DequantizeEndToEndOffsetInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100851{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000852 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100853}
854
Sadik Armagan1625efc2021-06-10 18:24:34 +0100855TEST_CASE("RefDetectionPostProcessRegularNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000856{
857 std::vector<float> boxEncodings({
858 0.0f, 0.0f, 0.0f, 0.0f,
859 0.0f, 1.0f, 0.0f, 0.0f,
860 0.0f, -1.0f, 0.0f, 0.0f,
861 0.0f, 0.0f, 0.0f, 0.0f,
862 0.0f, 1.0f, 0.0f, 0.0f,
863 0.0f, 0.0f, 0.0f, 0.0f
864 });
865 std::vector<float> scores({
866 0.0f, 0.9f, 0.8f,
867 0.0f, 0.75f, 0.72f,
868 0.0f, 0.6f, 0.5f,
869 0.0f, 0.93f, 0.95f,
870 0.0f, 0.5f, 0.4f,
871 0.0f, 0.3f, 0.2f
872 });
873 std::vector<float> anchors({
874 0.5f, 0.5f, 1.0f, 1.0f,
875 0.5f, 0.5f, 1.0f, 1.0f,
876 0.5f, 0.5f, 1.0f, 1.0f,
877 0.5f, 10.5f, 1.0f, 1.0f,
878 0.5f, 10.5f, 1.0f, 1.0f,
879 0.5f, 100.5f, 1.0f, 1.0f
880 });
881 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
882}
883
884inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
885{
886 for (size_t i = 0; i < info.GetNumElements(); i++)
887 {
888 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
889 }
890}
891
Sadik Armagan1625efc2021-06-10 18:24:34 +0100892TEST_CASE("RefDetectionPostProcessRegularNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000893{
894 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
895 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
896 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
897
898 boxEncodingsInfo.SetQuantizationScale(1.0f);
899 boxEncodingsInfo.SetQuantizationOffset(1);
900 scoresInfo.SetQuantizationScale(0.01f);
901 scoresInfo.SetQuantizationOffset(0);
902 anchorsInfo.SetQuantizationScale(0.5f);
903 anchorsInfo.SetQuantizationOffset(0);
904
905 std::vector<float> boxEncodings({
906 0.0f, 0.0f, 0.0f, 0.0f,
907 0.0f, 1.0f, 0.0f, 0.0f,
908 0.0f, -1.0f, 0.0f, 0.0f,
909 0.0f, 0.0f, 0.0f, 0.0f,
910 0.0f, 1.0f, 0.0f, 0.0f,
911 0.0f, 0.0f, 0.0f, 0.0f
912 });
913 std::vector<float> scores({
914 0.0f, 0.9f, 0.8f,
915 0.0f, 0.75f, 0.72f,
916 0.0f, 0.6f, 0.5f,
917 0.0f, 0.93f, 0.95f,
918 0.0f, 0.5f, 0.4f,
919 0.0f, 0.3f, 0.2f
920 });
921 std::vector<float> anchors({
922 0.5f, 0.5f, 1.0f, 1.0f,
923 0.5f, 0.5f, 1.0f, 1.0f,
924 0.5f, 0.5f, 1.0f, 1.0f,
925 0.5f, 10.5f, 1.0f, 1.0f,
926 0.5f, 10.5f, 1.0f, 1.0f,
927 0.5f, 100.5f, 1.0f, 1.0f
928 });
929
930 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
931 std::vector<uint8_t> qScores(scores.size(), 0);
932 std::vector<uint8_t> qAnchors(anchors.size(), 0);
933 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
934 QuantizeData(qScores.data(), scores.data(), scoresInfo);
935 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000936 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000937 qScores, qAnchors,
938 1.0f, 1, 0.01f, 0, 0.5f, 0);
939}
940
Sadik Armagan1625efc2021-06-10 18:24:34 +0100941TEST_CASE("RefDetectionPostProcessFastNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000942{
943 std::vector<float> boxEncodings({
944 0.0f, 0.0f, 0.0f, 0.0f,
945 0.0f, 1.0f, 0.0f, 0.0f,
946 0.0f, -1.0f, 0.0f, 0.0f,
947 0.0f, 0.0f, 0.0f, 0.0f,
948 0.0f, 1.0f, 0.0f, 0.0f,
949 0.0f, 0.0f, 0.0f, 0.0f
950 });
951 std::vector<float> scores({
952 0.0f, 0.9f, 0.8f,
953 0.0f, 0.75f, 0.72f,
954 0.0f, 0.6f, 0.5f,
955 0.0f, 0.93f, 0.95f,
956 0.0f, 0.5f, 0.4f,
957 0.0f, 0.3f, 0.2f
958 });
959 std::vector<float> anchors({
960 0.5f, 0.5f, 1.0f, 1.0f,
961 0.5f, 0.5f, 1.0f, 1.0f,
962 0.5f, 0.5f, 1.0f, 1.0f,
963 0.5f, 10.5f, 1.0f, 1.0f,
964 0.5f, 10.5f, 1.0f, 1.0f,
965 0.5f, 100.5f, 1.0f, 1.0f
966 });
967 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
968}
969
Sadik Armagan1625efc2021-06-10 18:24:34 +0100970TEST_CASE("RefDetectionPostProcessFastNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000971{
972 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
973 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
974 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
975
976 boxEncodingsInfo.SetQuantizationScale(1.0f);
977 boxEncodingsInfo.SetQuantizationOffset(1);
978 scoresInfo.SetQuantizationScale(0.01f);
979 scoresInfo.SetQuantizationOffset(0);
980 anchorsInfo.SetQuantizationScale(0.5f);
981 anchorsInfo.SetQuantizationOffset(0);
982
983 std::vector<float> boxEncodings({
984 0.0f, 0.0f, 0.0f, 0.0f,
985 0.0f, 1.0f, 0.0f, 0.0f,
986 0.0f, -1.0f, 0.0f, 0.0f,
987 0.0f, 0.0f, 0.0f, 0.0f,
988 0.0f, 1.0f, 0.0f, 0.0f,
989 0.0f, 0.0f, 0.0f, 0.0f
990 });
991 std::vector<float> scores({
992 0.0f, 0.9f, 0.8f,
993 0.0f, 0.75f, 0.72f,
994 0.0f, 0.6f, 0.5f,
995 0.0f, 0.93f, 0.95f,
996 0.0f, 0.5f, 0.4f,
997 0.0f, 0.3f, 0.2f
998 });
999 std::vector<float> anchors({
1000 0.5f, 0.5f, 1.0f, 1.0f,
1001 0.5f, 0.5f, 1.0f, 1.0f,
1002 0.5f, 0.5f, 1.0f, 1.0f,
1003 0.5f, 10.5f, 1.0f, 1.0f,
1004 0.5f, 10.5f, 1.0f, 1.0f,
1005 0.5f, 100.5f, 1.0f, 1.0f
1006 });
1007
1008 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
1009 std::vector<uint8_t> qScores(scores.size(), 0);
1010 std::vector<uint8_t> qAnchors(anchors.size(), 0);
1011 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
1012 QuantizeData(qScores.data(), scores.data(), scoresInfo);
1013 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +00001014 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +00001015 qScores, qAnchors,
1016 1.0f, 1, 0.01f, 0, 0.5f, 0);
1017}
1018
Jan Eilersa83af7b2020-03-18 15:58:11 +00001019// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +01001020TEST_CASE("RefHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001021{
1022 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1023}
1024
Sadik Armagan1625efc2021-06-10 18:24:34 +01001025TEST_CASE("RefHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001026{
1027 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
1028}
1029
Sadik Armagan1625efc2021-06-10 18:24:34 +01001030TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001031{
1032 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
1033}
1034
Sadik Armagan1625efc2021-06-10 18:24:34 +01001035TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001036{
1037 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
1038}
1039
Sadik Armagan1625efc2021-06-10 18:24:34 +01001040TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001041{
1042 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
1043}
1044
Sadik Armagan20bea002019-10-16 09:29:38 +01001045// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001046TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +01001047{
1048 LogSoftmaxEndToEndTest(defaultBackends);
1049}
1050
Sadik Armagan1625efc2021-06-10 18:24:34 +01001051TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +01001052{
1053 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1054}
1055
Sadik Armagan1625efc2021-06-10 18:24:34 +01001056TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +01001057{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001058 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001059}
1060
Sadik Armagan1625efc2021-06-10 18:24:34 +01001061TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +01001062{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001063 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001064}
1065
Sadik Armagan1625efc2021-06-10 18:24:34 +01001066TEST_CASE("RefSpaceToDepthNhwcEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001067{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001068 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001069}
1070
Sadik Armagan1625efc2021-06-10 18:24:34 +01001071TEST_CASE("RefSpaceToDepthNchwEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001072{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001073 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001074}
1075
Sadik Armagan1625efc2021-06-10 18:24:34 +01001076TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001077{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001078 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001079}
1080
Sadik Armagan1625efc2021-06-10 18:24:34 +01001081TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001082{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001083 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001084}
1085
Sadik Armagan1625efc2021-06-10 18:24:34 +01001086TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001087{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001088 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001089}
1090
Sadik Armagan1625efc2021-06-10 18:24:34 +01001091TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001092{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001093 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001094}
1095
Sadik Armagan1625efc2021-06-10 18:24:34 +01001096TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001097{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001098 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001099}
1100
Sadik Armagan1625efc2021-06-10 18:24:34 +01001101TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001102{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001103 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001104}
1105
Sadik Armagan1625efc2021-06-10 18:24:34 +01001106TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001107{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001108 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001109}
1110
Sadik Armagan1625efc2021-06-10 18:24:34 +01001111TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001112{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001113 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001114}
1115
Sadik Armagan1625efc2021-06-10 18:24:34 +01001116TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001117{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001118 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001119}
1120
Sadik Armagan1625efc2021-06-10 18:24:34 +01001121TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001122{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001123 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1124}
1125
Sadik Armagan1625efc2021-06-10 18:24:34 +01001126TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001127{
1128 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1129}
1130
Sadik Armagan1625efc2021-06-10 18:24:34 +01001131TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001132{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001133 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001134}
1135
Sadik Armagan1625efc2021-06-10 18:24:34 +01001136TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001137{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001138 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001139}
1140
Sadik Armagan1625efc2021-06-10 18:24:34 +01001141TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001142{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001143 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001144}
1145
Sadik Armagan1625efc2021-06-10 18:24:34 +01001146TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001147{
1148 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1149}
1150
Sadik Armagan1625efc2021-06-10 18:24:34 +01001151TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001152{
1153 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1154}
1155
Sadik Armagan1625efc2021-06-10 18:24:34 +01001156TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001157{
1158 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1159}
1160
Sadik Armagan1625efc2021-06-10 18:24:34 +01001161TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001162{
1163 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1164}
1165
Sadik Armagan1625efc2021-06-10 18:24:34 +01001166TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001167{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001168 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001169}
1170
Sadik Armagan1625efc2021-06-10 18:24:34 +01001171TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001172{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001173 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001174}
1175
Sadik Armagan1625efc2021-06-10 18:24:34 +01001176TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001177{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001178 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001179}
1180
Sadik Armagan1625efc2021-06-10 18:24:34 +01001181TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001182{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001183 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001184}
1185
Cian McGriskin160edb32023-07-25 14:15:45 +01001186// Tile
1187TEST_CASE("RefTileEndToEndFloat32")
1188{
1189 TileEndToEnd<armnn::DataType::Float32>(defaultBackends);
1190}
1191
1192TEST_CASE("RefTileEndToEndFloat16")
1193{
1194 TileEndToEnd<armnn::DataType::Float16>(defaultBackends);
1195}
1196
1197TEST_CASE("RefTileEndToEndQAsymmS8")
1198{
1199 TileEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1200}
1201
1202TEST_CASE("RefTileEndToEndQAsymmU8")
1203{
1204 TileEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1205}
1206
1207TEST_CASE("RefTileEndToEndQSymmS8")
1208{
1209 TileEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1210}
1211
1212TEST_CASE("RefTileEndToEndQSymmS16")
1213{
1214 TileEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1215}
1216
1217TEST_CASE("RefTileEndToEndSigned32")
1218{
1219 TileEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1220}
1221
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001222// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001223TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001224{
1225 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1226 defaultBackends, armnn::DataLayout::NCHW);
1227}
1228
Sadik Armagan1625efc2021-06-10 18:24:34 +01001229TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001230{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001231 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001232 defaultBackends, armnn::DataLayout::NCHW);
1233}
1234
Sadik Armagan1625efc2021-06-10 18:24:34 +01001235TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001236{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001237 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001238 defaultBackends, armnn::DataLayout::NCHW);
1239}
1240
Sadik Armagan1625efc2021-06-10 18:24:34 +01001241TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001242{
1243 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1244 defaultBackends, armnn::DataLayout::NHWC);
1245}
1246
Sadik Armagan1625efc2021-06-10 18:24:34 +01001247TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001248{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001249 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001250 defaultBackends, armnn::DataLayout::NHWC);
1251}
1252
Sadik Armagan1625efc2021-06-10 18:24:34 +01001253TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001254{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001255 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001256 defaultBackends, armnn::DataLayout::NHWC);
1257}
1258
Teresa Charlin6bc85252022-12-06 20:43:06 +00001259// Transpose
1260TEST_CASE("RefTransposeEndToEndTest")
1261{
1262 TransposeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1263}
1264
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001265// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001266TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001267{
1268 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1269}
1270
Sadik Armagan1625efc2021-06-10 18:24:34 +01001271TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001272{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001273 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001274}
1275
Sadik Armagan1625efc2021-06-10 18:24:34 +01001276TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001277{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001278 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001279}
1280
Sadik Armagan1625efc2021-06-10 18:24:34 +01001281TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001282{
1283 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1284}
1285
Sadik Armagan1625efc2021-06-10 18:24:34 +01001286TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001287{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001288 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001289}
1290
Sadik Armagan1625efc2021-06-10 18:24:34 +01001291TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001292{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001293 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001294}
1295
1296// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001297TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001298{
1299 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1300}
1301
Sadik Armagan1625efc2021-06-10 18:24:34 +01001302TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001303{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001304 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001305}
1306
Sadik Armagan1625efc2021-06-10 18:24:34 +01001307TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001308{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001309 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001310}
1311
Sadik Armagan1625efc2021-06-10 18:24:34 +01001312TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001313{
1314 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1315}
1316
Sadik Armagan1625efc2021-06-10 18:24:34 +01001317TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001318{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001319 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001320}
1321
Sadik Armagan1625efc2021-06-10 18:24:34 +01001322TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001323{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001324 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001325}
1326
Declan-ARM1bf56cd2023-07-20 17:32:57 +01001327// ReverseV2
1328TEST_CASE("RefReverseV2EndToEndFloat16Test")
1329{
1330 ReverseV2EndToEnd<armnn::DataType::Float16>(defaultBackends);
1331}
1332
1333TEST_CASE("RefReverseV2EndToEndFloat32Test")
1334{
1335 ReverseV2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1336}
1337
1338TEST_CASE("RefReverseV2EndToEndQAsymmS8Test")
1339{
1340 ReverseV2EndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1341}
1342
1343TEST_CASE("RefReverseV2EndToEndQAsymmU8Test")
1344{
1345 ReverseV2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1346}
1347
1348TEST_CASE("RefReverseV2EndToEndQSymmS8Test")
1349{
1350 ReverseV2EndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1351}
1352
1353TEST_CASE("RefReverseV2EndToEndQSymmS16Test")
1354{
1355 ReverseV2EndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1356}
1357
1358TEST_CASE("RefReverseV2EndToEndSigned32Test")
1359{
1360 ReverseV2EndToEnd<armnn::DataType::Signed32>(defaultBackends);
1361}
1362
Sadik Armagan062e0e92019-10-14 10:31:43 +01001363// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001364TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001365{
1366 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1367}
1368
Sadik Armagan1625efc2021-06-10 18:24:34 +01001369TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001370{
1371 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1372}
1373
Sadik Armagan1625efc2021-06-10 18:24:34 +01001374TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001375{
1376 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1377}
1378
Sadik Armagan1625efc2021-06-10 18:24:34 +01001379TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001380{
1381 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1382}
1383
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001384// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001385TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001386{
1387 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1388}
1389
Sadik Armagan1625efc2021-06-10 18:24:34 +01001390TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001391{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001392 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001393}
1394
Sadik Armagan1625efc2021-06-10 18:24:34 +01001395TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001396{
1397 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1398}
1399
Sadik Armagan1625efc2021-06-10 18:24:34 +01001400TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001401{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001402 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001403}
1404
Sadik Armagan1625efc2021-06-10 18:24:34 +01001405TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001406{
1407 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1408}
1409
Sadik Armagan1625efc2021-06-10 18:24:34 +01001410TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001411{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001412 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001413}
1414
Sadik Armagan1625efc2021-06-10 18:24:34 +01001415TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001416{
1417 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1418}
1419
Sadik Armagan1625efc2021-06-10 18:24:34 +01001420TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001421{
1422
Derek Lambertif90c56d2020-01-10 17:14:08 +00001423 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001424}
1425
Sadik Armagan1625efc2021-06-10 18:24:34 +01001426TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001427{
1428 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1429}
1430
Sadik Armagan1625efc2021-06-10 18:24:34 +01001431TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001432{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001433 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001434}
1435
Sadik Armagan1625efc2021-06-10 18:24:34 +01001436TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001437{
1438 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1439}
1440
Sadik Armagan1625efc2021-06-10 18:24:34 +01001441TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001442{
1443
Derek Lambertif90c56d2020-01-10 17:14:08 +00001444 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001445}
1446
Sadik Armagan1625efc2021-06-10 18:24:34 +01001447TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001448{
1449 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1450}
1451
Sadik Armagan1625efc2021-06-10 18:24:34 +01001452TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001453{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001454 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001455}
1456
Sadik Armagan1625efc2021-06-10 18:24:34 +01001457TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001458{
1459 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1460}
1461
Sadik Armagan1625efc2021-06-10 18:24:34 +01001462TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001463{
1464
Derek Lambertif90c56d2020-01-10 17:14:08 +00001465 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001466}
1467
Sadik Armagan1625efc2021-06-10 18:24:34 +01001468TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001469{
1470 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1471}
1472
Sadik Armagan1625efc2021-06-10 18:24:34 +01001473TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001474{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001475 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001476}
1477
Sadik Armagan1625efc2021-06-10 18:24:34 +01001478TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001479{
1480 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1481}
1482
Sadik Armagan1625efc2021-06-10 18:24:34 +01001483TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001484{
1485
Derek Lambertif90c56d2020-01-10 17:14:08 +00001486 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001487}
1488
Sadik Armagan1625efc2021-06-10 18:24:34 +01001489TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001490{
1491 QLstmEndToEnd(defaultBackends);
1492}
1493
Sadik Armagan1625efc2021-06-10 18:24:34 +01001494TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001495{
1496 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1497}
1498
Sadik Armagan1625efc2021-06-10 18:24:34 +01001499TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001500{
1501 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1502}
1503
Sadik Armagan1625efc2021-06-10 18:24:34 +01001504TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001505{
1506 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1507}
1508
Sadik Armagan1625efc2021-06-10 18:24:34 +01001509TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001510{
1511 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1512}
1513
Sadik Armagan1625efc2021-06-10 18:24:34 +01001514TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001515{
1516 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1517}
1518
Sadik Armagan1625efc2021-06-10 18:24:34 +01001519TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001520{
1521 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1522}
1523
Teresa Charlinc17a35f2023-01-12 14:13:09 +00001524// Reduce
1525TEST_CASE("RefReduceEndToEndTest")
1526{
1527 ReduceEndToEnd<armnn::DataType::Float32>(defaultBackends);
1528}
1529
1530TEST_CASE("RefReduceEndToEndTestFloat16")
1531{
1532 ReduceEndToEnd<armnn::DataType::Float16>(defaultBackends);
1533}
1534
1535// Reshape
1536TEST_CASE("RefReshapeEndToEndTest")
1537{
1538 ReshapeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1539}
1540
1541TEST_CASE("RefReshapeEndToEndTestFloat16")
1542{
1543 ReshapeEndToEndFloat16<armnn::DataType::Float16>(defaultBackends);
1544}
1545
David Monahan646bc8a2022-01-31 14:29:14 +00001546TEST_CASE("RefForceImportWithAlignedBuffersEndToEndTest")
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001547{
David Monahan646bc8a2022-01-31 14:29:14 +00001548 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1549}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001550
David Monahan646bc8a2022-01-31 14:29:14 +00001551TEST_CASE("RefForceImportWithMisalignedInputBuffersEndToEndTest")
1552{
1553 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1554}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001555
David Monahan646bc8a2022-01-31 14:29:14 +00001556TEST_CASE("RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1557{
1558 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1559}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001560
David Monahan646bc8a2022-01-31 14:29:14 +00001561TEST_CASE("RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1562{
1563 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001564}
1565
David Monahan16829712022-02-03 17:04:59 +00001566TEST_CASE("RefForceImportRepeatedInferencesEndToEndTest")
1567{
1568 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1569}
1570
1571TEST_CASE("RefForceImportRepeatedInferencesInvertedEndToEndTest")
1572{
1573 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1574}
1575
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001576#if !defined(__ANDROID__)
1577// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001578TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001579{
David Monahan4f1e8e42019-09-04 09:22:10 +01001580 ImportNonAlignedInputPointerTest(defaultBackends);
1581}
1582
Sadik Armagan1625efc2021-06-10 18:24:34 +01001583TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01001584{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001585 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001586}
1587
Sadik Armagan1625efc2021-06-10 18:24:34 +01001588TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001589{
1590 ImportAlignedPointerTest(defaultBackends);
1591}
1592
Sadik Armagan1625efc2021-06-10 18:24:34 +01001593TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001594{
1595 ImportOnlyWorkload(defaultBackends);
1596}
1597
Sadik Armagan1625efc2021-06-10 18:24:34 +01001598TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001599{
1600 ExportOnlyWorkload(defaultBackends);
1601}
1602
Sadik Armagan1625efc2021-06-10 18:24:34 +01001603TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001604{
1605 ImportAndExportWorkload(defaultBackends);
1606}
1607
Sadik Armagan1625efc2021-06-10 18:24:34 +01001608TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001609{
1610 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1611}
1612
Ryan OShea980446b2023-06-08 16:23:28 +01001613// Slice
1614TEST_CASE("RefSliceEndtoEndTestFloat32")
1615{
1616 SliceEndToEnd<DataType::Float32>(defaultBackends);
1617}
1618
1619TEST_CASE("RefSliceEndtoEndTestInt32")
1620{
1621 SliceEndToEnd<DataType::Signed32>(defaultBackends);
1622}
1623
1624TEST_CASE("RefSliceEndtoEndTestFloat16")
1625{
1626 SliceEndToEndFloat16<DataType::Float16>(defaultBackends);
1627}
1628
Sadik Armagan1625efc2021-06-10 18:24:34 +01001629TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00001630{
1631 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1632}
1633
Sadik Armagan1625efc2021-06-10 18:24:34 +01001634TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01001635{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001636 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01001637}
Finn Williamsb8181f72021-04-07 10:23:21 +01001638
Sadik Armagan1625efc2021-06-10 18:24:34 +01001639TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01001640{
1641 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1642}
Keith Davise813d672021-04-22 10:10:34 +01001643
Sadik Armagan1625efc2021-06-10 18:24:34 +01001644TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01001645{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001646 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01001647}
Mike Kelly3ec30772023-03-08 13:47:17 +00001648
1649TEST_CASE("RefAddEndToEndTestFloat32")
1650{
1651 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
1652}
1653TEST_CASE("RefAddEndToEndTestUint8")
1654{
1655 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Add);
1656}
1657TEST_CASE("RefDivEndToEndTestFloat32")
1658{
1659 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Div);
1660}
1661TEST_CASE("RefDivEndToEndTestUint8")
1662{
1663 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Div);
1664}
1665TEST_CASE("RefMulEndToEndTestFloat32")
1666{
1667 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Mul);
1668}
1669TEST_CASE("RefMulEndToEndTestUint8")
1670{
1671 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Mul);
1672}
1673TEST_CASE("RefSubEndToEndTestFloat32")
1674{
1675 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
1676}
1677TEST_CASE("RefSubEndToEndTestUint8")
1678{
1679 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Sub);
1680}
1681TEST_CASE("RefMaximumEndToEndTestFloat32")
1682{
1683 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Maximum);
1684}
1685TEST_CASE("RefMaximumEndToEndTestUint8")
1686{
1687 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Maximum);
1688}
1689TEST_CASE("RefMinimumEndToEndTestFloat32")
1690{
1691 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Minimum);
1692}
1693TEST_CASE("RefMinimumEndToEndTestUint8")
1694{
1695 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Minimum);
1696}
John Mcloughlin0ec00872023-05-15 17:03:49 +01001697TEST_CASE("RefPowerEndToEndTestFloat32")
1698{
1699 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Power);
1700}
1701TEST_CASE("RefPowerEndToEndTestUint8")
1702{
1703 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Power);
1704}
1705TEST_CASE("RefSquaredDifferenceEndToEndTestFloat32")
1706{
1707 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::SqDiff);
1708}
1709TEST_CASE("RefSquaredDifferenceEndToEndTestUint8")
1710{
1711 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::SqDiff);
1712}
Mike Kelly4cc341c2023-07-07 15:43:06 +01001713
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001714#endif
1715
Mike Kelly4cc341c2023-07-07 15:43:06 +01001716// Backend Optimization Tests
1717TEST_CASE("RefReshapeRemovalSimpleCaseEndToEnd")
1718{
1719 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(defaultBackends);
1720}
1721
1722TEST_CASE("RefReshapeRemovalNCHWFirstEndToEnd")
1723{
1724 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
1725}
1726
1727TEST_CASE("RefReshapeRemovalNCHWSecondEndToEnd")
1728{
1729 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
1730}
Sadik Armagan1625efc2021-06-10 18:24:34 +01001731}