blob: c09304e4d1a2090aec03cd810e57dcddd591299f [file] [log] [blame]
Aron Virginas-Tar70104002018-10-24 15:33:28 +01001//
Tracy Narine10403ec2023-11-28 11:55:08 +00002// Copyright © 2017-2024 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>
Idriss Chaouch98e383e2023-08-28 14:28:31 +010013#include <backendsCommon/test/BroadcastToEndToEndTestImpl.hpp>
Teresa Charlin43baf502021-09-27 10:10:39 +010014#include <backendsCommon/test/ChannelShuffleEndToEndTestImpl.hpp>
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +010015#include <backendsCommon/test/ComparisonEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010016#include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +000017#include <backendsCommon/test/Convolution2dEndToEndTestImpl.hpp>
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +010018#include <backendsCommon/test/Convolution3dEndToEndTestImpl.hpp>
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +010019#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
Tianle Chengfbfa49e2024-01-23 11:21:48 +000020#include <backendsCommon/test/DepthwiseConvolution2dEndToEndTests.hpp>
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +010021#include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010022#include <backendsCommon/test/DetectionPostProcessEndToEndTestImpl.hpp>
Mike Kelly3ec30772023-03-08 13:47:17 +000023#include <backendsCommon/test/ElementwiseBinaryEndToEndTestImpl.hpp>
josh minor4a3c6102020-01-06 16:40:46 -060024#include <backendsCommon/test/ElementwiseUnaryEndToEndTestImpl.hpp>
Teresa Charlin44088502020-07-27 11:27:19 +010025#include <backendsCommon/test/FillEndToEndTestImpl.hpp>
Sadik Armaganf0a6dec2021-03-25 07:46:55 +000026#include <backendsCommon/test/FullyConnectedEndToEndTestImpl.hpp>
narpra01db2b1602019-01-23 15:23:11 +000027#include <backendsCommon/test/GatherEndToEndTestImpl.hpp>
Teresa Charlinb2d3ec52022-04-12 22:07:09 +010028#include <backendsCommon/test/GatherNdEndToEndTestImpl.hpp>
Sadik Armagan062e0e92019-10-14 10:31:43 +010029#include <backendsCommon/test/InstanceNormalizationEndToEndTestImpl.hpp>
Sadik Armagan20bea002019-10-16 09:29:38 +010030#include <backendsCommon/test/LogSoftmaxEndToEndTestImpl.hpp>
Nikhil Raj747f5862019-07-19 15:15:23 +010031#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010032#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlinca5a23a2023-12-15 14:20:47 +000033#include <backendsCommon/test/QuantizationEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010034#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Teresa Charlinc17a35f2023-01-12 14:13:09 +000035#include <backendsCommon/test/ReduceEndToEndTestImpl.hpp>
36#include <backendsCommon/test/ReshapeEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010037#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Declan-ARM1bf56cd2023-07-20 17:32:57 +010038#include <backendsCommon/test/ReverseV2EndToEndTestImpl.hpp>
Ryan OShea980446b2023-06-08 16:23:28 +010039#include <backendsCommon/test/SliceEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010040#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010041#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly386ff1a2021-03-29 15:04:50 +010042#include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp>
Mike Kelly4cc341c2023-07-07 15:43:06 +010043#include <backendsCommon/test/SubgraphUtilsTest.hpp>
Cian McGriskin160edb32023-07-25 14:15:45 +010044#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010045#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000046#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010047
Sadik Armagan1625efc2021-06-10 18:24:34 +010048#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010049
Sadik Armagan1625efc2021-06-10 18:24:34 +010050TEST_SUITE("RefEndToEnd")
51{
narpra01b9546cf2018-11-20 15:21:28 +000052std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
53
David Monahand7fca092023-01-12 14:53:34 +000054// ElementwiseUnary
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010055// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010056TEST_CASE("RefAbsEndToEndTestFloat32")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010057{
josh minor4a3c6102020-01-06 16:40:46 -060058 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000059 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010060}
61
Sadik Armagan1625efc2021-06-10 18:24:34 +010062TEST_CASE("RefAbsEndToEndTestUint8")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010063{
josh minor4a3c6102020-01-06 16:40:46 -060064 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000065 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010066}
67
Sadik Armagan1625efc2021-06-10 18:24:34 +010068TEST_CASE("RefAbsEndToEndTestInt16")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010069{
josh minor4a3c6102020-01-06 16:40:46 -060070 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000071 UnaryOperation::Abs);
72}
73
74// Rsqrt
75TEST_CASE("RefRsqrtEndToEndTestFloat32")
76{
77 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
78 UnaryOperation::Rsqrt);
79}
80
81TEST_CASE("RefRsqrtEndToEndTestUint8")
82{
83 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
84 UnaryOperation::Rsqrt);
85}
86
87TEST_CASE("RefRsqrtEndToEndTestInt16")
88{
89 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
90 UnaryOperation::Rsqrt);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010091}
92
Ryan OShea3c2795a2022-11-03 17:51:52 +000093// Addition
94TEST_CASE("RefAdditionEndtoEndFloat32")
95{
96 AdditionEndToEnd<armnn::DataType::Float32>(defaultBackends);
97}
98
99TEST_CASE("RefAdditionEndtoEndUint8")
100{
101 AdditionEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
102}
103
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +0100104// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +0100105TEST_CASE("ConstantUsage_Ref_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100106{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100107 CHECK(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100108}
109
Sadik Armagan1625efc2021-06-10 18:24:34 +0100110TEST_CASE("ConstantUsage_Ref_Uint8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100111{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100112 CHECK(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100113}
114
Sadik Armagan1625efc2021-06-10 18:24:34 +0100115TEST_CASE("Unsigned8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100116{
117 using namespace armnn;
118
119 // Create runtime in which test will run
120 armnn::IRuntime::CreationOptions options;
121 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
122
123 // Builds up the structure of the network.
124 armnn::INetworkPtr net(INetwork::Create());
125
126 IConnectableLayer* input = net->AddInputLayer(0, "input");
127 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
128 IConnectableLayer* output = net->AddOutputLayer(0, "output");
129
130 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
131 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
132
133 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000134 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100135 inputTensorInfo.SetQuantizationOffset(100);
136 inputTensorInfo.SetQuantizationScale(10000.0f);
137 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
138
Derek Lambertif90c56d2020-01-10 17:14:08 +0000139 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100140 outputTensorInfo.SetQuantizationOffset(0);
141 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
142 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
143
144 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000145 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100146
147 // Loads it into the runtime.
148 NetworkId netId;
149 auto error = runtime->LoadNetwork(netId, std::move(optNet));
Sadik Armagan1625efc2021-06-10 18:24:34 +0100150 CHECK(error == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100151
152 // Creates structures for input & output.
153 std::vector<uint8_t> inputData
154 {
155 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
156 };
157 std::vector<uint8_t> outputData(5);
158
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100159 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
160 inputTensorInfo2.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100161 armnn::InputTensors inputTensors
162 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100163 {0, armnn::ConstTensor(inputTensorInfo2, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100164 };
165 armnn::OutputTensors outputTensors
166 {
167 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
168 };
169
170 // Does the inference.
171 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
172
173 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100174 CHECK(outputData[0] == 0);
175 CHECK(outputData[1] == 0);
176 CHECK(outputData[2] == 0);
177 CHECK(outputData[3] == 255); // softmax has been saturated.
178 CHECK(outputData[4] == 0);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100179}
180
Sadik Armagan1625efc2021-06-10 18:24:34 +0100181TEST_CASE("TrivialAdd")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100182{
183 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
184
185 using namespace armnn;
186
187 // Create runtime in which test will run
188 armnn::IRuntime::CreationOptions options;
189 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
190
191 // Builds up the structure of the network.
192 armnn::INetworkPtr net(INetwork::Create());
193
194 IConnectableLayer* input1 = net->AddInputLayer(0);
195 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000196 IConnectableLayer* add = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Add));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100197 IConnectableLayer* output = net->AddOutputLayer(0);
198
199 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
200 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
201 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
202
203 // Sets the tensors in the network.
204 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
205 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
206 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
207 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
208
209 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000210 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100211
212 // Loads it into the runtime.
213 NetworkId netId;
214 runtime->LoadNetwork(netId, std::move(optNet));
215
216 // Creates structures for input & output - matching android nn test.
217 std::vector<float> input1Data
218 {
219 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
220 };
221 std::vector<float> input2Data
222 {
223 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
224 };
225 std::vector<float> outputData(12);
226
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100227 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
228 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100229 InputTensors inputTensors
230 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100231 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
232 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100233 };
234 OutputTensors outputTensors
235 {
236 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
237 };
238
239 // Does the inference.
240 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
241
242 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100243 CHECK(outputData[0] == 101);
244 CHECK(outputData[1] == 202);
245 CHECK(outputData[2] == 303);
246 CHECK(outputData[3] == 404);
247 CHECK(outputData[4] == 505);
248 CHECK(outputData[5] == 606);
249 CHECK(outputData[6] == 707);
250 CHECK(outputData[7] == 808);
251 CHECK(outputData[8] == 909);
252 CHECK(outputData[9] == 1010);
253 CHECK(outputData[10] == 1111);
254 CHECK(outputData[11] == 1212);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100255}
256
Sadik Armagan1625efc2021-06-10 18:24:34 +0100257TEST_CASE("MultipleOutputs")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100258{
259 using namespace armnn;
260
261 // Create runtime in which test will run
262 armnn::IRuntime::CreationOptions options;
263 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
264
265 // Builds up the structure of the network.
266 INetworkPtr net(INetwork::Create());
267
268 IConnectableLayer* input = net->AddInputLayer(0);
269
270 // ReLu1
271 ActivationDescriptor activation1Descriptor;
272 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
273 activation1Descriptor.m_A = 1.f;
274 activation1Descriptor.m_B = -1.f;
275 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
276
277 // ReLu6
278 ActivationDescriptor activation2Descriptor;
279 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
280 activation2Descriptor.m_A = 6.0f;
281 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
282
283 // BoundedReLu(min=2, max=5)
284 ActivationDescriptor activation3Descriptor;
285 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
286 activation3Descriptor.m_A = 5.0f;
287 activation3Descriptor.m_B = 2.0f;
288 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
289
290 IConnectableLayer* output1 = net->AddOutputLayer(0);
291 IConnectableLayer* output2 = net->AddOutputLayer(1);
292 IConnectableLayer* output3 = net->AddOutputLayer(2);
293
294 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
295 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
296 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
297
298 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
299 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
300 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
301
302 // Sets the tensors in the network.
303 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
304 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
305 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
306 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
307 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
308
309 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000310 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100311
312 // Loads it into the runtime.
313 NetworkId netId;
314 runtime->LoadNetwork(netId, std::move(optNet));
315
316 // Creates structures for input & output.
317 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 };
318
319 std::vector<float> output1Data(inputData.size());
320 std::vector<float> output2Data(inputData.size());
321 std::vector<float> output3Data(inputData.size());
322
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100323 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
324 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100325 InputTensors inputTensors
326 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100327 {0,armnn::ConstTensor(inputTensorInfo, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100328 };
329 OutputTensors outputTensors
330 {
331 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
332 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
333 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
334 };
335
336 // Does the inference.
337 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
338
339 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100340 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
341 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
342 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 +0100343}
344
Sadik Armagan1625efc2021-06-10 18:24:34 +0100345TEST_CASE("TrivialMin")
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000346{
347 using namespace armnn;
348
349 // Create runtime in which test will run
350 armnn::IRuntime::CreationOptions options;
351 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
352
353 // Builds up the structure of the network.
354 armnn::INetworkPtr net(INetwork::Create());
355
356 IConnectableLayer* input1 = net->AddInputLayer(0);
357 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000358 IConnectableLayer* min = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Minimum));
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000359 IConnectableLayer* output = net->AddOutputLayer(0);
360
361 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
362 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
363 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
364
365 // Sets the tensors in the network.
366 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
367 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
368 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
369 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
370
371 // optimize the network
372 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
373
374 // Loads it into the runtime.
375 NetworkId netId;
376 runtime->LoadNetwork(netId, std::move(optNet));
377
378 // Creates structures for input & output - matching android nn test.
379 std::vector<float> input1Data
380 {
381 1.0f, 2.0f, 3.0f, 4.0f
382 };
383 std::vector<float> input2Data
384 {
385 2.0f, 1.0f, 5.0f, 2.0f
386 };
387 std::vector<float> outputData(4);
388
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100389 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
390 inputTensorInfo.SetConstant(true);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000391 InputTensors inputTensors
392 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100393 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
394 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000395 };
396 OutputTensors outputTensors
397 {
398 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
399 };
400
401 // Does the inference.
402 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
403
404 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100405 CHECK(outputData[0] == 1);
406 CHECK(outputData[1] == 1);
407 CHECK(outputData[2] == 3);
408 CHECK(outputData[3] == 2);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000409}
410
Sadik Armagan1625efc2021-06-10 18:24:34 +0100411TEST_CASE("RefEqualSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000412{
kevmay012b4d88e2019-01-24 14:05:09 +0000413 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
414 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000415
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100416 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
417 ComparisonOperation::Equal,
418 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000419}
420
Sadik Armagan1625efc2021-06-10 18:24:34 +0100421TEST_CASE("RefGreaterSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000422{
kevmay012b4d88e2019-01-24 14:05:09 +0000423 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
424 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000425
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100426 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
427 ComparisonOperation::Greater,
428 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000429}
430
Sadik Armagan1625efc2021-06-10 18:24:34 +0100431TEST_CASE("RefEqualSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000432{
433 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
434 0, 0, 0, 0, 1, 1, 1, 1 });
435
Derek Lambertif90c56d2020-01-10 17:14:08 +0000436 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100437 ComparisonOperation::Equal,
438 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000439}
440
Sadik Armagan1625efc2021-06-10 18:24:34 +0100441TEST_CASE("RefGreaterSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000442{
443 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
444 0, 0, 0, 0, 0, 0, 0, 0 });
445
Derek Lambertif90c56d2020-01-10 17:14:08 +0000446 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100447 ComparisonOperation::Greater,
448 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000449}
450
Sadik Armagan1625efc2021-06-10 18:24:34 +0100451TEST_CASE("RefEqualBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000452{
kevmay012b4d88e2019-01-24 14:05:09 +0000453 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
454 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000455
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100456 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
457 ComparisonOperation::Equal,
458 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000459}
460
Sadik Armagan1625efc2021-06-10 18:24:34 +0100461TEST_CASE("RefGreaterBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000462{
kevmay012b4d88e2019-01-24 14:05:09 +0000463 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
464 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000465
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100466 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
467 ComparisonOperation::Greater,
468 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000469}
470
Sadik Armagan1625efc2021-06-10 18:24:34 +0100471TEST_CASE("RefEqualBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000472{
473 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
474 0, 0, 0, 0, 0, 0 });
475
Derek Lambertif90c56d2020-01-10 17:14:08 +0000476 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100477 ComparisonOperation::Equal,
478 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000479}
480
Sadik Armagan1625efc2021-06-10 18:24:34 +0100481TEST_CASE("RefGreaterBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000482{
483 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
484 1, 1, 1, 1, 1, 1 });
485
Derek Lambertif90c56d2020-01-10 17:14:08 +0000486 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100487 ComparisonOperation::Greater,
488 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000489}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000490
Teresa Charlina38da592022-10-31 22:09:23 +0000491TEST_CASE("RefBatchMatMulEndToEndFloat32Test")
492{
493 BatchMatMulEndToEnd<armnn::DataType::Float32>(defaultBackends);
494}
495
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000496TEST_CASE("RefBatchMatMulEndToEndInt8Test")
497{
498 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
499}
500
Sadik Armagan1625efc2021-06-10 18:24:34 +0100501TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100502{
503 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
504}
505
Sadik Armagan1625efc2021-06-10 18:24:34 +0100506TEST_CASE("RefBatchToSpaceNdEndToEndUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100507{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000508 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100509}
510
Sadik Armagan1625efc2021-06-10 18:24:34 +0100511TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100512{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000513 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100514}
515
Sadik Armagan1625efc2021-06-10 18:24:34 +0100516TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100517{
518 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
519}
520
Sadik Armagan1625efc2021-06-10 18:24:34 +0100521TEST_CASE("RefBatchToSpaceNdEndToEndUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100522{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000523 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100524}
525
Sadik Armagan1625efc2021-06-10 18:24:34 +0100526TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100527{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000528 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100529}
530
Sadik Armagan1625efc2021-06-10 18:24:34 +0100531TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100532{
533 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
534}
535
Sadik Armagan1625efc2021-06-10 18:24:34 +0100536TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100537{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000538 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100539}
540
Sadik Armagan1625efc2021-06-10 18:24:34 +0100541TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100542{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000543 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100544}
545
Sadik Armagan1625efc2021-06-10 18:24:34 +0100546TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100547{
548 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
549}
550
Sadik Armagan1625efc2021-06-10 18:24:34 +0100551TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100552{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000553 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100554}
555
Sadik Armagan1625efc2021-06-10 18:24:34 +0100556TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100557{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000558 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100559}
560
Teresa Charlin43baf502021-09-27 10:10:39 +0100561TEST_CASE("RefChannelShuffleFloatTest")
562{
563 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
564}
565
566TEST_CASE("RefChannelShuffleUint8Test")
567{
568 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
569}
570
Sadik Armagan1625efc2021-06-10 18:24:34 +0100571TEST_CASE("RefConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000572{
Jim Flynne242f2d2019-05-22 14:24:13 +0100573 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000574}
575
Sadik Armagan1625efc2021-06-10 18:24:34 +0100576TEST_CASE("RefConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000577{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000578 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000579}
580
Sadik Armagan1625efc2021-06-10 18:24:34 +0100581TEST_CASE("RefConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000582{
Jim Flynne242f2d2019-05-22 14:24:13 +0100583 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000584}
585
Sadik Armagan1625efc2021-06-10 18:24:34 +0100586TEST_CASE("RefConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000587{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000588 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000589}
590
Sadik Armagan1625efc2021-06-10 18:24:34 +0100591TEST_CASE("RefConcatEndToEndDim2Test")
narpra01b9546cf2018-11-20 15:21:28 +0000592{
Jim Flynne242f2d2019-05-22 14:24:13 +0100593 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000594}
595
Sadik Armagan1625efc2021-06-10 18:24:34 +0100596TEST_CASE("RefConcatEndToEndDim2Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000597{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000598 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000599}
600
Sadik Armagan1625efc2021-06-10 18:24:34 +0100601TEST_CASE("RefConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000602{
Jim Flynne242f2d2019-05-22 14:24:13 +0100603 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000604}
605
Sadik Armagan1625efc2021-06-10 18:24:34 +0100606TEST_CASE("RefConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000607{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000608 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000609}
610
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +0000611TEST_CASE("RefConvolution2dFloat32Test")
612{
613 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
614}
615
616TEST_CASE("RefConvolution2dNchwFloat32Test")
617{
618 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
619}
620
621TEST_CASE("RefConvolution2dFloat16Test")
622{
623 Convolution2dEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
624}
625
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +0100626TEST_CASE("RefConvolution3dFloat32Test")
627{
628 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
629 armnn::DataLayout::NDHWC);
630}
631
632TEST_CASE("RefConvolution3dNcdhwFloat32Test")
633{
634 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
635 armnn::DataLayout::NCDHW);
636}
637
638TEST_CASE("RefConvolution3dFloat16Test")
639{
640 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
641 armnn::DataLayout::NDHWC);
642}
643
644TEST_CASE("RefConvolution3dUint8Test")
645{
646 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
647 armnn::DataLayout::NDHWC);
648}
649
650TEST_CASE("RefConvolution3dInt8Test")
651{
652 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
653 armnn::DataLayout::NDHWC);
654}
655
Tianle Chengfbfa49e2024-01-23 11:21:48 +0000656TEST_CASE("RefDepthwiseConvolution2dEndtoEndFloat32Test")
657{
658 DepthwiseConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
659 armnn::DataLayout::NHWC);
660}
661
Sadik Armagan1625efc2021-06-10 18:24:34 +0100662TEST_CASE("RefEluEndToEndTestFloat32")
Jan Eilersbca73e12020-03-11 12:52:46 +0000663{
664 EluEndToEndTest<armnn::DataType::Float32>(defaultBackends);
665}
666
Sadik Armagan1625efc2021-06-10 18:24:34 +0100667TEST_CASE("RefEluEndToEndTestFloat16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000668{
669 EluEndToEndTest<armnn::DataType::Float16>(defaultBackends);
670}
671
Sadik Armagan1625efc2021-06-10 18:24:34 +0100672TEST_CASE("RefEluEndToEndTestQAsymmS8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000673{
674 EluEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
675}
676
Sadik Armagan1625efc2021-06-10 18:24:34 +0100677TEST_CASE("RefEluEndToEndTestQAsymmU8")
Jan Eilersbca73e12020-03-11 12:52:46 +0000678{
679 EluEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
680}
681
Sadik Armagan1625efc2021-06-10 18:24:34 +0100682TEST_CASE("RefEluEndToEndTestQSymmS16")
Jan Eilersbca73e12020-03-11 12:52:46 +0000683{
684 EluEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
685}
686
Sadik Armagan1625efc2021-06-10 18:24:34 +0100687TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100688{
689 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
690}
691
Sadik Armagan1625efc2021-06-10 18:24:34 +0100692TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100693{
694 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
695}
Teresa Charlin44088502020-07-27 11:27:19 +0100696
Sadik Armagan1625efc2021-06-10 18:24:34 +0100697TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100698{
699 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
700}
701
Matthew Sloyan81beae32021-07-13 19:46:11 +0100702TEST_CASE("RefFullyConnectedEndToEndTestFloat32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000703{
704 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
705}
706
Matthew Sloyan81beae32021-07-13 19:46:11 +0100707TEST_CASE("RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
708{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100709 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100710}
711
712TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
713{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100714 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
Cathal Corbett521032f2021-10-07 11:46:40 +0100715}
716
717TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
718{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100719 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, true, true, false);
720}
721
722TEST_CASE("RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
723{
724 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, false, true, true);
725}
726
727TEST_CASE("RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
728{
729 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, true, false, true);
730}
731
732TEST_CASE("RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
733{
734 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, false, false, true);
735}
736
737TEST_CASE("RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
738{
739 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, false, false, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100740}
741
Sadik Armagan1625efc2021-06-10 18:24:34 +0100742TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000743{
744 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
745}
746
Sadik Armagan1625efc2021-06-10 18:24:34 +0100747TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000748{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000749 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000750}
751
Sadik Armagan1625efc2021-06-10 18:24:34 +0100752TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100753{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000754 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100755}
756
Sadik Armagan1625efc2021-06-10 18:24:34 +0100757TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000758{
759 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
760}
761
Sadik Armagan1625efc2021-06-10 18:24:34 +0100762TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000763{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000764 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000765}
766
Sadik Armagan1625efc2021-06-10 18:24:34 +0100767TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100768{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000769 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100770}
771
Teresa Charlinb2d3ec52022-04-12 22:07:09 +0100772TEST_CASE("RefGatherNdFloatTest")
773{
774 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
775}
776
777TEST_CASE("RefGatherNdUint8Test")
778{
779 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
780}
781
782TEST_CASE("RefGatherNdInt16Test")
783{
784 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
785}
786
787TEST_CASE("RefGatherNdMultiDimFloatTest")
788{
789 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
790}
791
792TEST_CASE("RefGatherNdMultiDimUint8Test")
793{
794 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
795}
796
797TEST_CASE("RefGatherNdMultiDimInt16Test")
798{
799 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
800}
801
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100802// DepthToSpace
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000803TEST_CASE("DepthToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100804{
805 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
806}
807
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000808TEST_CASE("DepthToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100809{
810 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
811}
812
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000813TEST_CASE("DepthToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100814{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000815 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100816}
817
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000818TEST_CASE("DepthToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100819{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000820 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100821}
822
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000823TEST_CASE("DepthToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100824{
825 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
826}
827
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000828TEST_CASE("DepthToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100829{
830 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
831}
832
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000833TEST_CASE("DepthToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100834{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000835 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100836}
837
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000838TEST_CASE("DepthToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100839{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000840 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100841}
842
843// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100844TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100845{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000846 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100847}
848
Sadik Armagan1625efc2021-06-10 18:24:34 +0100849TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100850{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000851 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100852}
853
Sadik Armagan1625efc2021-06-10 18:24:34 +0100854TEST_CASE("DequantizeEndToEndSimpleInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100855{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000856 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100857}
858
Sadik Armagan1625efc2021-06-10 18:24:34 +0100859TEST_CASE("DequantizeEndToEndOffsetInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100860{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000861 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100862}
863
Sadik Armagan1625efc2021-06-10 18:24:34 +0100864TEST_CASE("RefDetectionPostProcessRegularNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000865{
866 std::vector<float> boxEncodings({
867 0.0f, 0.0f, 0.0f, 0.0f,
868 0.0f, 1.0f, 0.0f, 0.0f,
869 0.0f, -1.0f, 0.0f, 0.0f,
870 0.0f, 0.0f, 0.0f, 0.0f,
871 0.0f, 1.0f, 0.0f, 0.0f,
872 0.0f, 0.0f, 0.0f, 0.0f
873 });
874 std::vector<float> scores({
875 0.0f, 0.9f, 0.8f,
876 0.0f, 0.75f, 0.72f,
877 0.0f, 0.6f, 0.5f,
878 0.0f, 0.93f, 0.95f,
879 0.0f, 0.5f, 0.4f,
880 0.0f, 0.3f, 0.2f
881 });
882 std::vector<float> anchors({
883 0.5f, 0.5f, 1.0f, 1.0f,
884 0.5f, 0.5f, 1.0f, 1.0f,
885 0.5f, 0.5f, 1.0f, 1.0f,
886 0.5f, 10.5f, 1.0f, 1.0f,
887 0.5f, 10.5f, 1.0f, 1.0f,
888 0.5f, 100.5f, 1.0f, 1.0f
889 });
890 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
891}
892
893inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
894{
895 for (size_t i = 0; i < info.GetNumElements(); i++)
896 {
897 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
898 }
899}
900
Sadik Armagan1625efc2021-06-10 18:24:34 +0100901TEST_CASE("RefDetectionPostProcessRegularNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000902{
903 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
904 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
905 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
906
907 boxEncodingsInfo.SetQuantizationScale(1.0f);
908 boxEncodingsInfo.SetQuantizationOffset(1);
909 scoresInfo.SetQuantizationScale(0.01f);
910 scoresInfo.SetQuantizationOffset(0);
911 anchorsInfo.SetQuantizationScale(0.5f);
912 anchorsInfo.SetQuantizationOffset(0);
913
914 std::vector<float> boxEncodings({
915 0.0f, 0.0f, 0.0f, 0.0f,
916 0.0f, 1.0f, 0.0f, 0.0f,
917 0.0f, -1.0f, 0.0f, 0.0f,
918 0.0f, 0.0f, 0.0f, 0.0f,
919 0.0f, 1.0f, 0.0f, 0.0f,
920 0.0f, 0.0f, 0.0f, 0.0f
921 });
922 std::vector<float> scores({
923 0.0f, 0.9f, 0.8f,
924 0.0f, 0.75f, 0.72f,
925 0.0f, 0.6f, 0.5f,
926 0.0f, 0.93f, 0.95f,
927 0.0f, 0.5f, 0.4f,
928 0.0f, 0.3f, 0.2f
929 });
930 std::vector<float> anchors({
931 0.5f, 0.5f, 1.0f, 1.0f,
932 0.5f, 0.5f, 1.0f, 1.0f,
933 0.5f, 0.5f, 1.0f, 1.0f,
934 0.5f, 10.5f, 1.0f, 1.0f,
935 0.5f, 10.5f, 1.0f, 1.0f,
936 0.5f, 100.5f, 1.0f, 1.0f
937 });
938
939 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
940 std::vector<uint8_t> qScores(scores.size(), 0);
941 std::vector<uint8_t> qAnchors(anchors.size(), 0);
942 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
943 QuantizeData(qScores.data(), scores.data(), scoresInfo);
944 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000945 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000946 qScores, qAnchors,
947 1.0f, 1, 0.01f, 0, 0.5f, 0);
948}
949
Sadik Armagan1625efc2021-06-10 18:24:34 +0100950TEST_CASE("RefDetectionPostProcessFastNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000951{
952 std::vector<float> boxEncodings({
953 0.0f, 0.0f, 0.0f, 0.0f,
954 0.0f, 1.0f, 0.0f, 0.0f,
955 0.0f, -1.0f, 0.0f, 0.0f,
956 0.0f, 0.0f, 0.0f, 0.0f,
957 0.0f, 1.0f, 0.0f, 0.0f,
958 0.0f, 0.0f, 0.0f, 0.0f
959 });
960 std::vector<float> scores({
961 0.0f, 0.9f, 0.8f,
962 0.0f, 0.75f, 0.72f,
963 0.0f, 0.6f, 0.5f,
964 0.0f, 0.93f, 0.95f,
965 0.0f, 0.5f, 0.4f,
966 0.0f, 0.3f, 0.2f
967 });
968 std::vector<float> anchors({
969 0.5f, 0.5f, 1.0f, 1.0f,
970 0.5f, 0.5f, 1.0f, 1.0f,
971 0.5f, 0.5f, 1.0f, 1.0f,
972 0.5f, 10.5f, 1.0f, 1.0f,
973 0.5f, 10.5f, 1.0f, 1.0f,
974 0.5f, 100.5f, 1.0f, 1.0f
975 });
976 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
977}
978
Sadik Armagan1625efc2021-06-10 18:24:34 +0100979TEST_CASE("RefDetectionPostProcessFastNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000980{
981 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
982 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
983 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
984
985 boxEncodingsInfo.SetQuantizationScale(1.0f);
986 boxEncodingsInfo.SetQuantizationOffset(1);
987 scoresInfo.SetQuantizationScale(0.01f);
988 scoresInfo.SetQuantizationOffset(0);
989 anchorsInfo.SetQuantizationScale(0.5f);
990 anchorsInfo.SetQuantizationOffset(0);
991
992 std::vector<float> boxEncodings({
993 0.0f, 0.0f, 0.0f, 0.0f,
994 0.0f, 1.0f, 0.0f, 0.0f,
995 0.0f, -1.0f, 0.0f, 0.0f,
996 0.0f, 0.0f, 0.0f, 0.0f,
997 0.0f, 1.0f, 0.0f, 0.0f,
998 0.0f, 0.0f, 0.0f, 0.0f
999 });
1000 std::vector<float> scores({
1001 0.0f, 0.9f, 0.8f,
1002 0.0f, 0.75f, 0.72f,
1003 0.0f, 0.6f, 0.5f,
1004 0.0f, 0.93f, 0.95f,
1005 0.0f, 0.5f, 0.4f,
1006 0.0f, 0.3f, 0.2f
1007 });
1008 std::vector<float> anchors({
1009 0.5f, 0.5f, 1.0f, 1.0f,
1010 0.5f, 0.5f, 1.0f, 1.0f,
1011 0.5f, 0.5f, 1.0f, 1.0f,
1012 0.5f, 10.5f, 1.0f, 1.0f,
1013 0.5f, 10.5f, 1.0f, 1.0f,
1014 0.5f, 100.5f, 1.0f, 1.0f
1015 });
1016
1017 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
1018 std::vector<uint8_t> qScores(scores.size(), 0);
1019 std::vector<uint8_t> qAnchors(anchors.size(), 0);
1020 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
1021 QuantizeData(qScores.data(), scores.data(), scoresInfo);
1022 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +00001023 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +00001024 qScores, qAnchors,
1025 1.0f, 1, 0.01f, 0, 0.5f, 0);
1026}
1027
Jan Eilersa83af7b2020-03-18 15:58:11 +00001028// HardSwish
Sadik Armagan1625efc2021-06-10 18:24:34 +01001029TEST_CASE("RefHardSwishEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001030{
1031 HardSwishEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1032}
1033
Sadik Armagan1625efc2021-06-10 18:24:34 +01001034TEST_CASE("RefHardSwishEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001035{
1036 HardSwishEndToEndTest<armnn::DataType::Float16>(defaultBackends);
1037}
1038
Sadik Armagan1625efc2021-06-10 18:24:34 +01001039TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001040{
1041 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends);
1042}
1043
Sadik Armagan1625efc2021-06-10 18:24:34 +01001044TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001045{
1046 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends);
1047}
1048
Sadik Armagan1625efc2021-06-10 18:24:34 +01001049TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001050{
1051 HardSwishEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends);
1052}
1053
Tracy Narine10403ec2023-11-28 11:55:08 +00001054// LeakyRelu
1055TEST_CASE("RefLeakyReluActivationFloat32")
1056{
1057 LeakyReluEndToEndTest<DataType::Float32>(defaultBackends);
1058}
1059
1060TEST_CASE("RefLeakyReluActivationFloat16")
1061{
1062 LeakyReluEndToEndTest<DataType::Float16>(defaultBackends, 0.3f, 5);
1063}
1064
1065TEST_CASE("RefLeakyReluActivationInt8")
1066{
1067 LeakyReluEndToEndTest<DataType::QAsymmS8>(defaultBackends, 0.6f, 7);
1068}
1069
1070TEST_CASE("RefLeakyReluActivationUInt8")
1071{
1072 LeakyReluEndToEndTest<DataType::QAsymmU8>(defaultBackends, 0.12f, 15);
1073}
1074
1075TEST_CASE("RefLeakyReluActivationInt16")
1076{
1077 LeakyReluEndToEndTest<DataType::QSymmS16>(defaultBackends, 0.15f, 55);
1078}
1079
Sadik Armagan20bea002019-10-16 09:29:38 +01001080// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001081TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +01001082{
1083 LogSoftmaxEndToEndTest(defaultBackends);
1084}
1085
Sadik Armagan1625efc2021-06-10 18:24:34 +01001086TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +01001087{
1088 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1089}
1090
Sadik Armagan1625efc2021-06-10 18:24:34 +01001091TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +01001092{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001093 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001094}
1095
Sadik Armagan1625efc2021-06-10 18:24:34 +01001096TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +01001097{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001098 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001099}
1100
Teresa Charlinca5a23a2023-12-15 14:20:47 +00001101// Quantization
1102TEST_CASE("QuantizationEndToEndFloat32_U8Test")
1103{
1104 QuantizationEndToEndFloat32<armnn::DataType::QAsymmU8>(defaultBackends);
1105}
1106
1107TEST_CASE("QuantizationEndToEndFloat32_I8Test")
1108{
1109 QuantizationEndToEndFloat32<armnn::DataType::QAsymmS8>(defaultBackends);
1110}
1111
1112TEST_CASE("QuantizationEndToEndFloat32_S16Test")
1113{
1114 QuantizationEndToEndFloat32<armnn::DataType::QSymmS16>(defaultBackends);
1115}
1116
1117TEST_CASE("QuantizationEndToEndFloat16_U8Test")
1118{
1119 QuantizationEndToEndFloat16<armnn::DataType::QAsymmU8>(defaultBackends);
1120}
1121
1122TEST_CASE("QuantizationEndToEndFloat16_I8Test")
1123{
1124 QuantizationEndToEndFloat16<armnn::DataType::QAsymmS8>(defaultBackends);
1125}
1126
1127TEST_CASE("QuantizationEndToEndFloat16_S16Test")
1128{
1129 QuantizationEndToEndFloat16<armnn::DataType::QSymmS16>(defaultBackends);
1130}
1131
1132// SpaceToDepth
Sadik Armagan1625efc2021-06-10 18:24:34 +01001133TEST_CASE("RefSpaceToDepthNhwcEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001134{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001135 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001136}
1137
Sadik Armagan1625efc2021-06-10 18:24:34 +01001138TEST_CASE("RefSpaceToDepthNchwEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001139{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001140 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001141}
1142
Sadik Armagan1625efc2021-06-10 18:24:34 +01001143TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001144{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001145 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001146}
1147
Sadik Armagan1625efc2021-06-10 18:24:34 +01001148TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001149{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001150 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001151}
1152
Kevin May1bea6be2023-12-12 11:18:46 +00001153// Split
1154TEST_CASE("RefSplit1dEndtoEndTestSigned16")
1155{
1156 Splitter1dEndToEnd<DataType::QSymmS16>(defaultBackends);
1157}
1158
1159TEST_CASE("TosaRefSplit1dEndtoEndTestFloat16")
1160{
1161 Splitter1dEndToEndFloat16<DataType::Float16>(defaultBackends);
1162}
1163
Sadik Armagan1625efc2021-06-10 18:24:34 +01001164TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001165{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001166 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001167}
1168
Sadik Armagan1625efc2021-06-10 18:24:34 +01001169TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001170{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001171 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001172}
1173
Sadik Armagan1625efc2021-06-10 18:24:34 +01001174TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001175{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001176 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001177}
1178
Sadik Armagan1625efc2021-06-10 18:24:34 +01001179TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001180{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001181 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001182}
1183
Sadik Armagan1625efc2021-06-10 18:24:34 +01001184TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001185{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001186 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001187}
1188
Sadik Armagan1625efc2021-06-10 18:24:34 +01001189TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001190{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001191 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001192}
1193
Kevin May1bea6be2023-12-12 11:18:46 +00001194TEST_CASE("RefSplit3dDim1EndtoEndTestSigned16")
1195{
1196 Splitter3dDim1EndToEnd<DataType::QSymmS16>(defaultBackends);
1197}
1198
1199TEST_CASE("RefSplit3dDim1EndtoEndTestFloat16")
1200{
1201 Splitter3dDim1EndToEndFloat16<DataType::Float16>(defaultBackends);
1202}
1203
Sadik Armagan1625efc2021-06-10 18:24:34 +01001204TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001205{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001206 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001207}
1208
Sadik Armagan1625efc2021-06-10 18:24:34 +01001209TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001210{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001211 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1212}
1213
Sadik Armagan1625efc2021-06-10 18:24:34 +01001214TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001215{
1216 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1217}
1218
Sadik Armagan1625efc2021-06-10 18:24:34 +01001219TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001220{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001221 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001222}
1223
Sadik Armagan1625efc2021-06-10 18:24:34 +01001224TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001225{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001226 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001227}
1228
Sadik Armagan1625efc2021-06-10 18:24:34 +01001229TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001230{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001231 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001232}
1233
Sadik Armagan1625efc2021-06-10 18:24:34 +01001234TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001235{
1236 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1237}
1238
Sadik Armagan1625efc2021-06-10 18:24:34 +01001239TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001240{
1241 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1242}
1243
Sadik Armagan1625efc2021-06-10 18:24:34 +01001244TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001245{
1246 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1247}
1248
Kevin May1bea6be2023-12-12 11:18:46 +00001249TEST_CASE("RefSplit4dDim2EndtoEndTestFloat16")
1250{
1251 Splitter4dDim2EndToEndFloat16<DataType::Float16>(defaultBackends);
1252}
1253
Sadik Armagan1625efc2021-06-10 18:24:34 +01001254TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001255{
1256 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1257}
1258
Sadik Armagan1625efc2021-06-10 18:24:34 +01001259TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001260{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001261 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001262}
1263
Sadik Armagan1625efc2021-06-10 18:24:34 +01001264TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001265{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001266 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001267}
1268
Sadik Armagan1625efc2021-06-10 18:24:34 +01001269TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001270{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001271 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001272}
1273
Sadik Armagan1625efc2021-06-10 18:24:34 +01001274TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001275{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001276 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001277}
1278
Cian McGriskin160edb32023-07-25 14:15:45 +01001279// Tile
1280TEST_CASE("RefTileEndToEndFloat32")
1281{
1282 TileEndToEnd<armnn::DataType::Float32>(defaultBackends);
1283}
1284
1285TEST_CASE("RefTileEndToEndFloat16")
1286{
1287 TileEndToEnd<armnn::DataType::Float16>(defaultBackends);
1288}
1289
1290TEST_CASE("RefTileEndToEndQAsymmS8")
1291{
1292 TileEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1293}
1294
1295TEST_CASE("RefTileEndToEndQAsymmU8")
1296{
1297 TileEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1298}
1299
1300TEST_CASE("RefTileEndToEndQSymmS8")
1301{
1302 TileEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1303}
1304
1305TEST_CASE("RefTileEndToEndQSymmS16")
1306{
1307 TileEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1308}
1309
1310TEST_CASE("RefTileEndToEndSigned32")
1311{
1312 TileEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1313}
1314
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001315// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001316TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001317{
1318 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1319 defaultBackends, armnn::DataLayout::NCHW);
1320}
1321
Sadik Armagan1625efc2021-06-10 18:24:34 +01001322TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001323{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001324 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001325 defaultBackends, armnn::DataLayout::NCHW);
1326}
1327
Sadik Armagan1625efc2021-06-10 18:24:34 +01001328TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001329{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001330 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001331 defaultBackends, armnn::DataLayout::NCHW);
1332}
1333
Sadik Armagan1625efc2021-06-10 18:24:34 +01001334TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001335{
1336 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1337 defaultBackends, armnn::DataLayout::NHWC);
1338}
1339
Sadik Armagan1625efc2021-06-10 18:24:34 +01001340TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001341{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001342 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001343 defaultBackends, armnn::DataLayout::NHWC);
1344}
1345
Sadik Armagan1625efc2021-06-10 18:24:34 +01001346TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001347{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001348 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001349 defaultBackends, armnn::DataLayout::NHWC);
1350}
1351
Teresa Charlin6bc85252022-12-06 20:43:06 +00001352// Transpose
1353TEST_CASE("RefTransposeEndToEndTest")
1354{
1355 TransposeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1356}
1357
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001358// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001359TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001360{
1361 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1362}
1363
Sadik Armagan1625efc2021-06-10 18:24:34 +01001364TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001365{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001366 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001367}
1368
Teresa Charlince655882023-11-21 15:44:13 +00001369TEST_CASE("RefResizeBilinearEndToEndInt8NchwTest")
1370{
1371 ResizeBilinearEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NCHW);
1372}
1373
Sadik Armagan1625efc2021-06-10 18:24:34 +01001374TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001375{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001376 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001377}
1378
Sadik Armagan1625efc2021-06-10 18:24:34 +01001379TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001380{
1381 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1382}
1383
Sadik Armagan1625efc2021-06-10 18:24:34 +01001384TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001385{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001386 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001387}
1388
Teresa Charlince655882023-11-21 15:44:13 +00001389TEST_CASE("RefResizeBilinearEndToEndInt8NhwcTest")
1390{
1391 ResizeBilinearEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NHWC);
1392}
1393
Sadik Armagan1625efc2021-06-10 18:24:34 +01001394TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001395{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001396 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001397}
1398
1399// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001400TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001401{
1402 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1403}
1404
Sadik Armagan1625efc2021-06-10 18:24:34 +01001405TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001406{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001407 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001408}
1409
Teresa Charlince655882023-11-21 15:44:13 +00001410TEST_CASE("RefResizeNearestNeighborEndToEndInt8NchwTest")
1411{
1412 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NCHW);
1413}
1414
Sadik Armagan1625efc2021-06-10 18:24:34 +01001415TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001416{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001417 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001418}
1419
Sadik Armagan1625efc2021-06-10 18:24:34 +01001420TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001421{
1422 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1423}
1424
Sadik Armagan1625efc2021-06-10 18:24:34 +01001425TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001426{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001427 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001428}
1429
Teresa Charlince655882023-11-21 15:44:13 +00001430TEST_CASE("RefResizeNearestNeighborEndToEndInt8NhwcTest")
1431{
1432 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NHWC);
1433}
1434
Sadik Armagan1625efc2021-06-10 18:24:34 +01001435TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001436{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001437 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001438}
1439
Teresa Charlin28658bc2023-12-19 15:49:31 +00001440TEST_CASE("RefResizeNearestNeighborEndToEndFloatAlignCornersNhwcTest")
1441{
1442 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC, true, false);
1443}
1444
Teresa Charlince655882023-11-21 15:44:13 +00001445TEST_CASE("RefResizeNearestNeighborEndToEndFloatHalfPixelNhwcTest")
1446{
1447 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC, false, true);
1448}
1449
Teresa Charlin28658bc2023-12-19 15:49:31 +00001450TEST_CASE("RefResizeNearestNeighborEndToEndInt8AlignCornersNhwcTest")
1451{
1452 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NHWC, true, false);
1453}
1454
Teresa Charlin0587dd02023-12-21 09:05:39 +00001455TEST_CASE("RefResizeNearestNeighborEndToEndInt8HalfPixelNhwcTest")
Teresa Charlince655882023-11-21 15:44:13 +00001456{
1457 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NHWC, false, true);
1458}
1459
Declan-ARM1bf56cd2023-07-20 17:32:57 +01001460// ReverseV2
1461TEST_CASE("RefReverseV2EndToEndFloat16Test")
1462{
1463 ReverseV2EndToEnd<armnn::DataType::Float16>(defaultBackends);
1464}
1465
1466TEST_CASE("RefReverseV2EndToEndFloat32Test")
1467{
1468 ReverseV2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1469}
1470
1471TEST_CASE("RefReverseV2EndToEndQAsymmS8Test")
1472{
1473 ReverseV2EndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1474}
1475
1476TEST_CASE("RefReverseV2EndToEndQAsymmU8Test")
1477{
1478 ReverseV2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1479}
1480
1481TEST_CASE("RefReverseV2EndToEndQSymmS8Test")
1482{
1483 ReverseV2EndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1484}
1485
1486TEST_CASE("RefReverseV2EndToEndQSymmS16Test")
1487{
1488 ReverseV2EndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1489}
1490
1491TEST_CASE("RefReverseV2EndToEndSigned32Test")
1492{
1493 ReverseV2EndToEnd<armnn::DataType::Signed32>(defaultBackends);
1494}
1495
Sadik Armagan062e0e92019-10-14 10:31:43 +01001496// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001497TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001498{
1499 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1500}
1501
Sadik Armagan1625efc2021-06-10 18:24:34 +01001502TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001503{
1504 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1505}
1506
Sadik Armagan1625efc2021-06-10 18:24:34 +01001507TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001508{
1509 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1510}
1511
Sadik Armagan1625efc2021-06-10 18:24:34 +01001512TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001513{
1514 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1515}
1516
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001517// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001518TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001519{
1520 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1521}
1522
Sadik Armagan1625efc2021-06-10 18:24:34 +01001523TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001524{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001525 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001526}
1527
Sadik Armagan1625efc2021-06-10 18:24:34 +01001528TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001529{
1530 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1531}
1532
Sadik Armagan1625efc2021-06-10 18:24:34 +01001533TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001534{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001535 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001536}
1537
Sadik Armagan1625efc2021-06-10 18:24:34 +01001538TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001539{
1540 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1541}
1542
Sadik Armagan1625efc2021-06-10 18:24:34 +01001543TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001544{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001545 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001546}
1547
Sadik Armagan1625efc2021-06-10 18:24:34 +01001548TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001549{
1550 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1551}
1552
Sadik Armagan1625efc2021-06-10 18:24:34 +01001553TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001554{
1555
Derek Lambertif90c56d2020-01-10 17:14:08 +00001556 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001557}
1558
Sadik Armagan1625efc2021-06-10 18:24:34 +01001559TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001560{
1561 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1562}
1563
Sadik Armagan1625efc2021-06-10 18:24:34 +01001564TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001565{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001566 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001567}
1568
Sadik Armagan1625efc2021-06-10 18:24:34 +01001569TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001570{
1571 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1572}
1573
Sadik Armagan1625efc2021-06-10 18:24:34 +01001574TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001575{
1576
Derek Lambertif90c56d2020-01-10 17:14:08 +00001577 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001578}
1579
Sadik Armagan1625efc2021-06-10 18:24:34 +01001580TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001581{
1582 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1583}
1584
Sadik Armagan1625efc2021-06-10 18:24:34 +01001585TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001586{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001587 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001588}
1589
Sadik Armagan1625efc2021-06-10 18:24:34 +01001590TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001591{
1592 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1593}
1594
Sadik Armagan1625efc2021-06-10 18:24:34 +01001595TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001596{
1597
Derek Lambertif90c56d2020-01-10 17:14:08 +00001598 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001599}
1600
Sadik Armagan1625efc2021-06-10 18:24:34 +01001601TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001602{
1603 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1604}
1605
Sadik Armagan1625efc2021-06-10 18:24:34 +01001606TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001607{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001608 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001609}
1610
Sadik Armagan1625efc2021-06-10 18:24:34 +01001611TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001612{
1613 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1614}
1615
Sadik Armagan1625efc2021-06-10 18:24:34 +01001616TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001617{
1618
Derek Lambertif90c56d2020-01-10 17:14:08 +00001619 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001620}
1621
Sadik Armagan1625efc2021-06-10 18:24:34 +01001622TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001623{
1624 QLstmEndToEnd(defaultBackends);
1625}
1626
Sadik Armagan1625efc2021-06-10 18:24:34 +01001627TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001628{
1629 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1630}
1631
Sadik Armagan1625efc2021-06-10 18:24:34 +01001632TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001633{
1634 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1635}
1636
Sadik Armagan1625efc2021-06-10 18:24:34 +01001637TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001638{
1639 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1640}
1641
Sadik Armagan1625efc2021-06-10 18:24:34 +01001642TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001643{
1644 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1645}
1646
Sadik Armagan1625efc2021-06-10 18:24:34 +01001647TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001648{
1649 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1650}
1651
Sadik Armagan1625efc2021-06-10 18:24:34 +01001652TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001653{
1654 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1655}
1656
Teresa Charlinc17a35f2023-01-12 14:13:09 +00001657// Reduce
1658TEST_CASE("RefReduceEndToEndTest")
1659{
1660 ReduceEndToEnd<armnn::DataType::Float32>(defaultBackends);
1661}
1662
1663TEST_CASE("RefReduceEndToEndTestFloat16")
1664{
1665 ReduceEndToEnd<armnn::DataType::Float16>(defaultBackends);
1666}
1667
1668// Reshape
1669TEST_CASE("RefReshapeEndToEndTest")
1670{
1671 ReshapeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1672}
1673
1674TEST_CASE("RefReshapeEndToEndTestFloat16")
1675{
1676 ReshapeEndToEndFloat16<armnn::DataType::Float16>(defaultBackends);
1677}
1678
David Monahan646bc8a2022-01-31 14:29:14 +00001679TEST_CASE("RefForceImportWithAlignedBuffersEndToEndTest")
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001680{
David Monahan646bc8a2022-01-31 14:29:14 +00001681 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1682}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001683
David Monahan646bc8a2022-01-31 14:29:14 +00001684TEST_CASE("RefForceImportWithMisalignedInputBuffersEndToEndTest")
1685{
1686 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1687}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001688
David Monahan646bc8a2022-01-31 14:29:14 +00001689TEST_CASE("RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1690{
1691 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1692}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001693
David Monahan646bc8a2022-01-31 14:29:14 +00001694TEST_CASE("RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1695{
1696 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001697}
1698
David Monahan16829712022-02-03 17:04:59 +00001699TEST_CASE("RefForceImportRepeatedInferencesEndToEndTest")
1700{
1701 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1702}
1703
1704TEST_CASE("RefForceImportRepeatedInferencesInvertedEndToEndTest")
1705{
1706 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1707}
1708
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001709#if !defined(__ANDROID__)
1710// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001711TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001712{
David Monahan4f1e8e42019-09-04 09:22:10 +01001713 ImportNonAlignedInputPointerTest(defaultBackends);
1714}
1715
Sadik Armagan1625efc2021-06-10 18:24:34 +01001716TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01001717{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001718 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001719}
1720
Sadik Armagan1625efc2021-06-10 18:24:34 +01001721TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001722{
1723 ImportAlignedPointerTest(defaultBackends);
1724}
1725
Sadik Armagan1625efc2021-06-10 18:24:34 +01001726TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001727{
1728 ImportOnlyWorkload(defaultBackends);
1729}
1730
Sadik Armagan1625efc2021-06-10 18:24:34 +01001731TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001732{
1733 ExportOnlyWorkload(defaultBackends);
1734}
1735
Sadik Armagan1625efc2021-06-10 18:24:34 +01001736TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001737{
1738 ImportAndExportWorkload(defaultBackends);
1739}
1740
Sadik Armagan1625efc2021-06-10 18:24:34 +01001741TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01001742{
1743 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
1744}
1745
Ryan OShea980446b2023-06-08 16:23:28 +01001746// Slice
1747TEST_CASE("RefSliceEndtoEndTestFloat32")
1748{
1749 SliceEndToEnd<DataType::Float32>(defaultBackends);
1750}
1751
1752TEST_CASE("RefSliceEndtoEndTestInt32")
1753{
1754 SliceEndToEnd<DataType::Signed32>(defaultBackends);
1755}
1756
1757TEST_CASE("RefSliceEndtoEndTestFloat16")
1758{
1759 SliceEndToEndFloat16<DataType::Float16>(defaultBackends);
1760}
1761
Sadik Armagan1625efc2021-06-10 18:24:34 +01001762TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00001763{
1764 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
1765}
1766
Sadik Armagan1625efc2021-06-10 18:24:34 +01001767TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01001768{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001769 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01001770}
Finn Williamsb8181f72021-04-07 10:23:21 +01001771
Sadik Armagan1625efc2021-06-10 18:24:34 +01001772TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01001773{
1774 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
1775}
Keith Davise813d672021-04-22 10:10:34 +01001776
Sadik Armagan1625efc2021-06-10 18:24:34 +01001777TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01001778{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01001779 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01001780}
Mike Kelly3ec30772023-03-08 13:47:17 +00001781
1782TEST_CASE("RefAddEndToEndTestFloat32")
1783{
1784 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
1785}
1786TEST_CASE("RefAddEndToEndTestUint8")
1787{
1788 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Add);
1789}
Tracy Narinee7d27852024-01-26 09:13:19 +00001790TEST_CASE("RefAddEndToEndTestFloat32Simple3D")
1791{
1792 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
1793}
1794TEST_CASE("RefAddEndToEndTestFloat16Simple3D")
1795{
1796 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(defaultBackends, BinaryOperation::Add);
1797}
Mike Kelly3ec30772023-03-08 13:47:17 +00001798TEST_CASE("RefDivEndToEndTestFloat32")
1799{
1800 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Div);
1801}
1802TEST_CASE("RefDivEndToEndTestUint8")
1803{
1804 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Div);
1805}
1806TEST_CASE("RefMulEndToEndTestFloat32")
1807{
1808 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Mul);
1809}
1810TEST_CASE("RefMulEndToEndTestUint8")
1811{
1812 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Mul);
1813}
1814TEST_CASE("RefSubEndToEndTestFloat32")
1815{
1816 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
1817}
1818TEST_CASE("RefSubEndToEndTestUint8")
1819{
1820 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Sub);
1821}
John Mcloughlin829e13e2024-01-31 11:00:27 +00001822TEST_CASE("RefSubEndToEndTestFloat32Simple3D")
1823{
1824 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
1825}
1826TEST_CASE("RefSubEndToEndTestFloat16Simple3D")
1827{
1828 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(defaultBackends, BinaryOperation::Sub);
1829}
Mike Kelly3ec30772023-03-08 13:47:17 +00001830TEST_CASE("RefMaximumEndToEndTestFloat32")
1831{
1832 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Maximum);
1833}
1834TEST_CASE("RefMaximumEndToEndTestUint8")
1835{
1836 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Maximum);
1837}
1838TEST_CASE("RefMinimumEndToEndTestFloat32")
1839{
1840 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Minimum);
1841}
1842TEST_CASE("RefMinimumEndToEndTestUint8")
1843{
1844 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Minimum);
1845}
John Mcloughlin0ec00872023-05-15 17:03:49 +01001846TEST_CASE("RefPowerEndToEndTestFloat32")
1847{
1848 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Power);
1849}
1850TEST_CASE("RefPowerEndToEndTestUint8")
1851{
1852 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Power);
1853}
1854TEST_CASE("RefSquaredDifferenceEndToEndTestFloat32")
1855{
1856 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::SqDiff);
1857}
1858TEST_CASE("RefSquaredDifferenceEndToEndTestUint8")
1859{
1860 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::SqDiff);
1861}
Mike Kelly4cc341c2023-07-07 15:43:06 +01001862
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001863#endif
1864
Mike Kelly4cc341c2023-07-07 15:43:06 +01001865// Backend Optimization Tests
1866TEST_CASE("RefReshapeRemovalSimpleCaseEndToEnd")
1867{
1868 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(defaultBackends);
1869}
1870
1871TEST_CASE("RefReshapeRemovalNCHWFirstEndToEnd")
1872{
1873 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
1874}
1875
1876TEST_CASE("RefReshapeRemovalNCHWSecondEndToEnd")
1877{
1878 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
1879}
Idriss Chaouch98e383e2023-08-28 14:28:31 +01001880
1881// BroadcastTo
1882TEST_CASE("RefBroadcastToEndToEndFloat32")
1883{
1884 BroadcastToEndToEnd<armnn::DataType::Float32>(defaultBackends);
1885}
1886
Idriss Chaouch564c13d2023-09-01 17:58:38 +01001887TEST_CASE("RefBroadcastToEndToEndWithMultiplicationFloat32")
Idriss Chaouch98e383e2023-08-28 14:28:31 +01001888{
Idriss Chaouch564c13d2023-09-01 17:58:38 +01001889 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
1890 BinaryOperation::Mul);
1891}
1892
1893TEST_CASE("RefBroadcastToEndToEndWithDivisionFloat32")
1894{
1895 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
1896 BinaryOperation::Div);
1897}
1898
1899TEST_CASE("RefBroadcastToEndToEndWithAdditionFloat32")
1900{
1901 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
1902 BinaryOperation::Add);
1903}
1904
1905TEST_CASE("RefBroadcastToEndToEndWithSubtractionFloat32")
1906{
1907 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
1908 BinaryOperation::Sub);
Idriss Chaouch98e383e2023-08-28 14:28:31 +01001909}
Sadik Armagan1625efc2021-06-10 18:24:34 +01001910}