blob: 6f57236dd59944a6b115e4eac23bbbc86f9d1ed7 [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>
Teresa Charlina52bca22024-02-01 17:36:48 +000031#include "backendsCommon/test/Pooling2dEndToEndTestImpl.hpp"
Nikhil Raj747f5862019-07-19 15:15:23 +010032#include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
James Conroy0800bf52020-05-14 12:46:44 +010033#include <backendsCommon/test/QLstmEndToEndTestImpl.hpp>
Teresa Charlinca5a23a2023-12-15 14:20:47 +000034#include <backendsCommon/test/QuantizationEndToEndTestImpl.hpp>
Teresa Charlin2e3f4d22020-07-29 14:29:20 +010035#include <backendsCommon/test/RankEndToEndTestImpl.hpp>
Teresa Charlinc17a35f2023-01-12 14:13:09 +000036#include <backendsCommon/test/ReduceEndToEndTestImpl.hpp>
37#include <backendsCommon/test/ReshapeEndToEndTestImpl.hpp>
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +010038#include <backendsCommon/test/ResizeEndToEndTestImpl.hpp>
Declan-ARM1bf56cd2023-07-20 17:32:57 +010039#include <backendsCommon/test/ReverseV2EndToEndTestImpl.hpp>
Teresa Charlin70dc5e92024-03-05 17:59:27 +000040#include <backendsCommon/test/ScatterNdEndToEndTestImpl.hpp>
Ryan OShea980446b2023-06-08 16:23:28 +010041#include <backendsCommon/test/SliceEndToEndTestImpl.hpp>
John Mcloughlin33753902024-02-07 15:00:57 +000042#include <backendsCommon/test/SoftmaxEndToEndTestImpl.hpp>
Keith Davis9515c7e2019-06-21 09:33:59 +010043#include <backendsCommon/test/SpaceToDepthEndToEndTestImpl.hpp>
Narumol Prangnawarat0be43382019-05-27 11:29:59 +010044#include <backendsCommon/test/SplitterEndToEndTestImpl.hpp>
Mike Kelly386ff1a2021-03-29 15:04:50 +010045#include <backendsCommon/test/StridedSliceAsyncEndToEndTest.hpp>
Mike Kelly4cc341c2023-07-07 15:43:06 +010046#include <backendsCommon/test/SubgraphUtilsTest.hpp>
Cian McGriskin160edb32023-07-25 14:15:45 +010047#include <backendsCommon/test/TileEndToEndTestImpl.hpp>
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +010048#include <backendsCommon/test/TransposeConvolution2dEndToEndTestImpl.hpp>
Teresa Charlin6bc85252022-12-06 20:43:06 +000049#include <backendsCommon/test/TransposeEndToEndTestImpl.hpp>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010050
Sadik Armagan1625efc2021-06-10 18:24:34 +010051#include <doctest/doctest.h>
Aron Virginas-Tar70104002018-10-24 15:33:28 +010052
Sadik Armagan1625efc2021-06-10 18:24:34 +010053TEST_SUITE("RefEndToEnd")
54{
narpra01b9546cf2018-11-20 15:21:28 +000055std::vector<armnn::BackendId> defaultBackends = {armnn::Compute::CpuRef};
56
David Monahand7fca092023-01-12 14:53:34 +000057// ElementwiseUnary
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010058// Abs
Sadik Armagan1625efc2021-06-10 18:24:34 +010059TEST_CASE("RefAbsEndToEndTestFloat32")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010060{
josh minor4a3c6102020-01-06 16:40:46 -060061 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(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("RefAbsEndToEndTestUint8")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010066{
josh minor4a3c6102020-01-06 16:40:46 -060067 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000068 UnaryOperation::Abs);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010069}
70
Sadik Armagan1625efc2021-06-10 18:24:34 +010071TEST_CASE("RefAbsEndToEndTestInt16")
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010072{
josh minor4a3c6102020-01-06 16:40:46 -060073 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
David Monahand7fca092023-01-12 14:53:34 +000074 UnaryOperation::Abs);
75}
76
77// Rsqrt
78TEST_CASE("RefRsqrtEndToEndTestFloat32")
79{
80 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
81 UnaryOperation::Rsqrt);
82}
83
84TEST_CASE("RefRsqrtEndToEndTestUint8")
85{
86 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
87 UnaryOperation::Rsqrt);
88}
89
90TEST_CASE("RefRsqrtEndToEndTestInt16")
91{
92 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(defaultBackends,
93 UnaryOperation::Rsqrt);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010094}
95
Ryan OShea3c2795a2022-11-03 17:51:52 +000096// Addition
97TEST_CASE("RefAdditionEndtoEndFloat32")
98{
99 AdditionEndToEnd<armnn::DataType::Float32>(defaultBackends);
100}
101
102TEST_CASE("RefAdditionEndtoEndUint8")
103{
104 AdditionEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
105}
106
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +0100107// Constant
Sadik Armagan1625efc2021-06-10 18:24:34 +0100108TEST_CASE("ConstantUsage_Ref_Float32")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100109{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100110 CHECK(ConstantUsageFloat32Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100111}
112
Sadik Armagan1625efc2021-06-10 18:24:34 +0100113TEST_CASE("ConstantUsage_Ref_Uint8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100114{
Sadik Armagan1625efc2021-06-10 18:24:34 +0100115 CHECK(ConstantUsageUint8Test(defaultBackends));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100116}
117
Sadik Armagan1625efc2021-06-10 18:24:34 +0100118TEST_CASE("Unsigned8")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100119{
120 using namespace armnn;
121
122 // Create runtime in which test will run
123 armnn::IRuntime::CreationOptions options;
124 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
125
126 // Builds up the structure of the network.
127 armnn::INetworkPtr net(INetwork::Create());
128
129 IConnectableLayer* input = net->AddInputLayer(0, "input");
130 IConnectableLayer* softmax = net->AddSoftmaxLayer(SoftmaxDescriptor(), "softmax");
131 IConnectableLayer* output = net->AddOutputLayer(0, "output");
132
133 input->GetOutputSlot(0).Connect(softmax->GetInputSlot(0));
134 softmax->GetOutputSlot(0).Connect(output->GetInputSlot(0));
135
136 // Sets the tensors in the network.
Derek Lambertif90c56d2020-01-10 17:14:08 +0000137 TensorInfo inputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100138 inputTensorInfo.SetQuantizationOffset(100);
139 inputTensorInfo.SetQuantizationScale(10000.0f);
140 input->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
141
Derek Lambertif90c56d2020-01-10 17:14:08 +0000142 TensorInfo outputTensorInfo(TensorShape({1, 5}), DataType::QAsymmU8);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100143 outputTensorInfo.SetQuantizationOffset(0);
144 outputTensorInfo.SetQuantizationScale(1.0f/255.0f);
145 softmax->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
146
147 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000148 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100149
150 // Loads it into the runtime.
151 NetworkId netId;
152 auto error = runtime->LoadNetwork(netId, std::move(optNet));
Sadik Armagan1625efc2021-06-10 18:24:34 +0100153 CHECK(error == Status::Success);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100154
155 // Creates structures for input & output.
156 std::vector<uint8_t> inputData
157 {
158 1, 10, 3, 200, 5 // Some inputs - one of which is sufficiently larger than the others to saturate softmax.
159 };
160 std::vector<uint8_t> outputData(5);
161
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100162 TensorInfo inputTensorInfo2 = runtime->GetInputTensorInfo(netId, 0);
163 inputTensorInfo2.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100164 armnn::InputTensors inputTensors
165 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100166 {0, armnn::ConstTensor(inputTensorInfo2, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100167 };
168 armnn::OutputTensors outputTensors
169 {
170 {0, armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
171 };
172
173 // Does the inference.
174 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
175
176 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100177 CHECK(outputData[0] == 0);
178 CHECK(outputData[1] == 0);
179 CHECK(outputData[2] == 0);
180 CHECK(outputData[3] == 255); // softmax has been saturated.
181 CHECK(outputData[4] == 0);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100182}
183
Sadik Armagan1625efc2021-06-10 18:24:34 +0100184TEST_CASE("TrivialAdd")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100185{
186 // This test was designed to match "AddTwo" in android nn/runtime/test/TestTrivialModel.cpp.
187
188 using namespace armnn;
189
190 // Create runtime in which test will run
191 armnn::IRuntime::CreationOptions options;
192 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
193
194 // Builds up the structure of the network.
195 armnn::INetworkPtr net(INetwork::Create());
196
197 IConnectableLayer* input1 = net->AddInputLayer(0);
198 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000199 IConnectableLayer* add = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Add));
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100200 IConnectableLayer* output = net->AddOutputLayer(0);
201
202 input1->GetOutputSlot(0).Connect(add->GetInputSlot(0));
203 input2->GetOutputSlot(0).Connect(add->GetInputSlot(1));
204 add->GetOutputSlot(0).Connect(output->GetInputSlot(0));
205
206 // Sets the tensors in the network.
207 TensorInfo tensorInfo(TensorShape({3, 4}), DataType::Float32);
208 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
209 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
210 add->GetOutputSlot(0).SetTensorInfo(tensorInfo);
211
212 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000213 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100214
215 // Loads it into the runtime.
216 NetworkId netId;
217 runtime->LoadNetwork(netId, std::move(optNet));
218
219 // Creates structures for input & output - matching android nn test.
220 std::vector<float> input1Data
221 {
222 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
223 };
224 std::vector<float> input2Data
225 {
226 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
227 };
228 std::vector<float> outputData(12);
229
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100230 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
231 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100232 InputTensors inputTensors
233 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100234 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
235 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100236 };
237 OutputTensors outputTensors
238 {
239 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
240 };
241
242 // Does the inference.
243 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
244
245 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100246 CHECK(outputData[0] == 101);
247 CHECK(outputData[1] == 202);
248 CHECK(outputData[2] == 303);
249 CHECK(outputData[3] == 404);
250 CHECK(outputData[4] == 505);
251 CHECK(outputData[5] == 606);
252 CHECK(outputData[6] == 707);
253 CHECK(outputData[7] == 808);
254 CHECK(outputData[8] == 909);
255 CHECK(outputData[9] == 1010);
256 CHECK(outputData[10] == 1111);
257 CHECK(outputData[11] == 1212);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100258}
259
Sadik Armagan1625efc2021-06-10 18:24:34 +0100260TEST_CASE("MultipleOutputs")
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100261{
262 using namespace armnn;
263
264 // Create runtime in which test will run
265 armnn::IRuntime::CreationOptions options;
266 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
267
268 // Builds up the structure of the network.
269 INetworkPtr net(INetwork::Create());
270
271 IConnectableLayer* input = net->AddInputLayer(0);
272
273 // ReLu1
274 ActivationDescriptor activation1Descriptor;
275 activation1Descriptor.m_Function = ActivationFunction::BoundedReLu;
276 activation1Descriptor.m_A = 1.f;
277 activation1Descriptor.m_B = -1.f;
278 IConnectableLayer* activation1 = net->AddActivationLayer(activation1Descriptor);
279
280 // ReLu6
281 ActivationDescriptor activation2Descriptor;
282 activation2Descriptor.m_Function = ActivationFunction::BoundedReLu;
283 activation2Descriptor.m_A = 6.0f;
284 IConnectableLayer* activation2 = net->AddActivationLayer(activation2Descriptor);
285
286 // BoundedReLu(min=2, max=5)
287 ActivationDescriptor activation3Descriptor;
288 activation3Descriptor.m_Function = ActivationFunction::BoundedReLu;
289 activation3Descriptor.m_A = 5.0f;
290 activation3Descriptor.m_B = 2.0f;
291 IConnectableLayer* activation3 = net->AddActivationLayer(activation3Descriptor);
292
293 IConnectableLayer* output1 = net->AddOutputLayer(0);
294 IConnectableLayer* output2 = net->AddOutputLayer(1);
295 IConnectableLayer* output3 = net->AddOutputLayer(2);
296
297 input->GetOutputSlot(0).Connect(activation1->GetInputSlot(0));
298 input->GetOutputSlot(0).Connect(activation2->GetInputSlot(0));
299 input->GetOutputSlot(0).Connect(activation3->GetInputSlot(0));
300
301 activation1->GetOutputSlot(0).Connect(output1->GetInputSlot(0));
302 activation2->GetOutputSlot(0).Connect(output2->GetInputSlot(0));
303 activation3->GetOutputSlot(0).Connect(output3->GetInputSlot(0));
304
305 // Sets the tensors in the network.
306 TensorInfo tensorInfo(TensorShape({ 10 }), DataType::Float32);
307 input->GetOutputSlot(0).SetTensorInfo(tensorInfo);
308 activation1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
309 activation2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
310 activation3->GetOutputSlot(0).SetTensorInfo(tensorInfo);
311
312 // optimize the network
narpra01b9546cf2018-11-20 15:21:28 +0000313 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100314
315 // Loads it into the runtime.
316 NetworkId netId;
317 runtime->LoadNetwork(netId, std::move(optNet));
318
319 // Creates structures for input & output.
320 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 };
321
322 std::vector<float> output1Data(inputData.size());
323 std::vector<float> output2Data(inputData.size());
324 std::vector<float> output3Data(inputData.size());
325
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100326 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
327 inputTensorInfo.SetConstant(true);
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100328 InputTensors inputTensors
329 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100330 {0,armnn::ConstTensor(inputTensorInfo, inputData.data())}
Aron Virginas-Tar70104002018-10-24 15:33:28 +0100331 };
332 OutputTensors outputTensors
333 {
334 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
335 {1,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
336 {2,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
337 };
338
339 // Does the inference.
340 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
341
342 // Checks the results.
Sadik Armagan1625efc2021-06-10 18:24:34 +0100343 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
344 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
345 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 +0100346}
347
Sadik Armagan1625efc2021-06-10 18:24:34 +0100348TEST_CASE("TrivialMin")
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000349{
350 using namespace armnn;
351
352 // Create runtime in which test will run
353 armnn::IRuntime::CreationOptions options;
354 armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
355
356 // Builds up the structure of the network.
357 armnn::INetworkPtr net(INetwork::Create());
358
359 IConnectableLayer* input1 = net->AddInputLayer(0);
360 IConnectableLayer* input2 = net->AddInputLayer(1);
Mike Kelly3ec30772023-03-08 13:47:17 +0000361 IConnectableLayer* min = net->AddElementwiseBinaryLayer(ElementwiseBinaryDescriptor(BinaryOperation::Minimum));
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000362 IConnectableLayer* output = net->AddOutputLayer(0);
363
364 input1->GetOutputSlot(0).Connect(min->GetInputSlot(0));
365 input2->GetOutputSlot(0).Connect(min->GetInputSlot(1));
366 min->GetOutputSlot(0).Connect(output->GetInputSlot(0));
367
368 // Sets the tensors in the network.
369 TensorInfo tensorInfo(TensorShape({1, 1, 1, 4}), DataType::Float32);
370 input1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
371 input2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
372 min->GetOutputSlot(0).SetTensorInfo(tensorInfo);
373
374 // optimize the network
375 IOptimizedNetworkPtr optNet = Optimize(*net, defaultBackends, runtime->GetDeviceSpec());
376
377 // Loads it into the runtime.
378 NetworkId netId;
379 runtime->LoadNetwork(netId, std::move(optNet));
380
381 // Creates structures for input & output - matching android nn test.
382 std::vector<float> input1Data
383 {
384 1.0f, 2.0f, 3.0f, 4.0f
385 };
386 std::vector<float> input2Data
387 {
388 2.0f, 1.0f, 5.0f, 2.0f
389 };
390 std::vector<float> outputData(4);
391
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100392 TensorInfo inputTensorInfo = runtime->GetInputTensorInfo(netId, 0);
393 inputTensorInfo.SetConstant(true);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000394 InputTensors inputTensors
395 {
Cathal Corbett5b8093c2021-10-22 11:12:07 +0100396 {0,armnn::ConstTensor(inputTensorInfo, input1Data.data())},
397 {1,armnn::ConstTensor(inputTensorInfo, input2Data.data())}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000398 };
399 OutputTensors outputTensors
400 {
401 {0,armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
402 };
403
404 // Does the inference.
405 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
406
407 // Checks the results
Sadik Armagan1625efc2021-06-10 18:24:34 +0100408 CHECK(outputData[0] == 1);
409 CHECK(outputData[1] == 1);
410 CHECK(outputData[2] == 3);
411 CHECK(outputData[3] == 2);
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000412}
413
Sadik Armagan1625efc2021-06-10 18:24:34 +0100414TEST_CASE("RefEqualSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000415{
kevmay012b4d88e2019-01-24 14:05:09 +0000416 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
417 0, 0, 0, 0, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000418
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100419 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
420 ComparisonOperation::Equal,
421 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000422}
423
Sadik Armagan1625efc2021-06-10 18:24:34 +0100424TEST_CASE("RefGreaterSimpleEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000425{
kevmay012b4d88e2019-01-24 14:05:09 +0000426 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
427 0, 0, 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000428
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100429 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(defaultBackends,
430 ComparisonOperation::Greater,
431 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000432}
433
Sadik Armagan1625efc2021-06-10 18:24:34 +0100434TEST_CASE("RefEqualSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000435{
436 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
437 0, 0, 0, 0, 1, 1, 1, 1 });
438
Derek Lambertif90c56d2020-01-10 17:14:08 +0000439 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100440 ComparisonOperation::Equal,
441 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000442}
443
Sadik Armagan1625efc2021-06-10 18:24:34 +0100444TEST_CASE("RefGreaterSimpleEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000445{
446 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
447 0, 0, 0, 0, 0, 0, 0, 0 });
448
Derek Lambertif90c56d2020-01-10 17:14:08 +0000449 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100450 ComparisonOperation::Greater,
451 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000452}
453
Sadik Armagan1625efc2021-06-10 18:24:34 +0100454TEST_CASE("RefEqualBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000455{
kevmay012b4d88e2019-01-24 14:05:09 +0000456 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
457 0, 0, 0, 0, 0, 0 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000458
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100459 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
460 ComparisonOperation::Equal,
461 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000462}
463
Sadik Armagan1625efc2021-06-10 18:24:34 +0100464TEST_CASE("RefGreaterBroadcastEndToEndTest")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000465{
kevmay012b4d88e2019-01-24 14:05:09 +0000466 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
467 1, 1, 1, 1, 1, 1 });
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000468
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100469 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(defaultBackends,
470 ComparisonOperation::Greater,
471 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000472}
473
Sadik Armagan1625efc2021-06-10 18:24:34 +0100474TEST_CASE("RefEqualBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000475{
476 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
477 0, 0, 0, 0, 0, 0 });
478
Derek Lambertif90c56d2020-01-10 17:14:08 +0000479 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100480 ComparisonOperation::Equal,
481 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000482}
483
Sadik Armagan1625efc2021-06-10 18:24:34 +0100484TEST_CASE("RefGreaterBroadcastEndToEndUint8Test")
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000485{
486 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
487 1, 1, 1, 1, 1, 1 });
488
Derek Lambertif90c56d2020-01-10 17:14:08 +0000489 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends,
Aron Virginas-Tar77bfb5e2019-10-16 17:45:38 +0100490 ComparisonOperation::Greater,
491 expectedOutput);
FrancisMurtagh2262bbd2018-12-20 16:09:45 +0000492}
Éanna Ó Catháin20e58802018-12-04 10:29:06 +0000493
Teresa Charlina38da592022-10-31 22:09:23 +0000494TEST_CASE("RefBatchMatMulEndToEndFloat32Test")
495{
496 BatchMatMulEndToEnd<armnn::DataType::Float32>(defaultBackends);
497}
498
Teresa Charlin1fe6c812022-11-01 15:59:50 +0000499TEST_CASE("RefBatchMatMulEndToEndInt8Test")
500{
501 BatchMatMulEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
502}
503
Sadik Armagan1625efc2021-06-10 18:24:34 +0100504TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100505{
506 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
507}
508
Sadik Armagan1625efc2021-06-10 18:24:34 +0100509TEST_CASE("RefBatchToSpaceNdEndToEndUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100510{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000511 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100512}
513
Sadik Armagan1625efc2021-06-10 18:24:34 +0100514TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100515{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000516 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100517}
518
Sadik Armagan1625efc2021-06-10 18:24:34 +0100519TEST_CASE("RefBatchToSpaceNdEndToEndFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100520{
521 BatchToSpaceNdEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
522}
523
Sadik Armagan1625efc2021-06-10 18:24:34 +0100524TEST_CASE("RefBatchToSpaceNdEndToEndUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100525{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000526 BatchToSpaceNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100527}
528
Sadik Armagan1625efc2021-06-10 18:24:34 +0100529TEST_CASE("RefBatchToSpaceNdEndToEndQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100530{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000531 BatchToSpaceNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100532}
533
Sadik Armagan1625efc2021-06-10 18:24:34 +0100534TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100535{
536 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
537}
538
Sadik Armagan1625efc2021-06-10 18:24:34 +0100539TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100540{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000541 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100542}
543
Sadik Armagan1625efc2021-06-10 18:24:34 +0100544TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NHWCTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100545{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000546 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100547}
548
Sadik Armagan1625efc2021-06-10 18:24:34 +0100549TEST_CASE("RefBatchToSpaceNdEndToEndComplexFloat32NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100550{
551 BatchToSpaceNdComplexEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
552}
553
Sadik Armagan1625efc2021-06-10 18:24:34 +0100554TEST_CASE("RefBatchToSpaceNdEndToEndComplexUint8NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100555{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000556 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100557}
558
Sadik Armagan1625efc2021-06-10 18:24:34 +0100559TEST_CASE("RefBatchToSpaceNdEndToEndComplexQSymm16NCHWTest")
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100560{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000561 BatchToSpaceNdComplexEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Francis Murtaghe24e3cd2019-06-25 14:41:55 +0100562}
563
Teresa Charlin43baf502021-09-27 10:10:39 +0100564TEST_CASE("RefChannelShuffleFloatTest")
565{
566 ChannelShuffleEndToEnd<armnn::DataType::Float32>(defaultBackends);
567}
568
569TEST_CASE("RefChannelShuffleUint8Test")
570{
571 ChannelShuffleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
572}
573
Sadik Armagan1625efc2021-06-10 18:24:34 +0100574TEST_CASE("RefConcatEndToEndDim0Test")
narpra01b9546cf2018-11-20 15:21:28 +0000575{
Jim Flynne242f2d2019-05-22 14:24:13 +0100576 ConcatDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000577}
578
Sadik Armagan1625efc2021-06-10 18:24:34 +0100579TEST_CASE("RefConcatEndToEndDim0Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000580{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000581 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000582}
583
Sadik Armagan1625efc2021-06-10 18:24:34 +0100584TEST_CASE("RefConcatEndToEndDim1Test")
narpra01b9546cf2018-11-20 15:21:28 +0000585{
Jim Flynne242f2d2019-05-22 14:24:13 +0100586 ConcatDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000587}
588
Sadik Armagan1625efc2021-06-10 18:24:34 +0100589TEST_CASE("RefConcatEndToEndDim1Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000590{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000591 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000592}
593
Sadik Armagan1625efc2021-06-10 18:24:34 +0100594TEST_CASE("RefConcatEndToEndDim2Test")
narpra01b9546cf2018-11-20 15:21:28 +0000595{
Jim Flynne242f2d2019-05-22 14:24:13 +0100596 ConcatDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000597}
598
Sadik Armagan1625efc2021-06-10 18:24:34 +0100599TEST_CASE("RefConcatEndToEndDim2Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000600{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000601 ConcatDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000602}
603
Sadik Armagan1625efc2021-06-10 18:24:34 +0100604TEST_CASE("RefConcatEndToEndDim3Test")
narpra01b9546cf2018-11-20 15:21:28 +0000605{
Jim Flynne242f2d2019-05-22 14:24:13 +0100606 ConcatDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000607}
608
Sadik Armagan1625efc2021-06-10 18:24:34 +0100609TEST_CASE("RefConcatEndToEndDim3Uint8Test")
narpra01b9546cf2018-11-20 15:21:28 +0000610{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000611 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01b9546cf2018-11-20 15:21:28 +0000612}
613
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +0000614TEST_CASE("RefConvolution2dFloat32Test")
615{
616 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
617}
618
619TEST_CASE("RefConvolution2dNchwFloat32Test")
620{
621 Convolution2dEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
622}
623
624TEST_CASE("RefConvolution2dFloat16Test")
625{
626 Convolution2dEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
627}
628
John Mcloughlinceb44282024-04-23 16:47:04 +0100629TEST_CASE("RefConvolution2dInt8Test")
630{
631 Convolution2dEndToEnd<armnn::DataType::QSymmS8,
632 armnn::DataType::QSymmS8,
633 armnn::DataType::Signed32>(defaultBackends, armnn::DataLayout::NHWC);
634}
635
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +0100636TEST_CASE("RefConvolution3dFloat32Test")
637{
638 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
639 armnn::DataLayout::NDHWC);
640}
641
642TEST_CASE("RefConvolution3dNcdhwFloat32Test")
643{
644 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
645 armnn::DataLayout::NCDHW);
646}
647
648TEST_CASE("RefConvolution3dFloat16Test")
649{
650 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
651 armnn::DataLayout::NDHWC);
652}
653
654TEST_CASE("RefConvolution3dUint8Test")
655{
656 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
657 armnn::DataLayout::NDHWC);
658}
659
660TEST_CASE("RefConvolution3dInt8Test")
661{
662 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
663 armnn::DataLayout::NDHWC);
664}
665
Tianle Chengfbfa49e2024-01-23 11:21:48 +0000666TEST_CASE("RefDepthwiseConvolution2dEndtoEndFloat32Test")
667{
668 DepthwiseConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
669 armnn::DataLayout::NHWC);
670}
671
Sadik Armagan1625efc2021-06-10 18:24:34 +0100672TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100673{
674 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
675}
676
Sadik Armagan1625efc2021-06-10 18:24:34 +0100677TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100678{
679 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
680}
Teresa Charlin44088502020-07-27 11:27:19 +0100681
Sadik Armagan1625efc2021-06-10 18:24:34 +0100682TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100683{
684 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
685}
686
Matthew Sloyan81beae32021-07-13 19:46:11 +0100687TEST_CASE("RefFullyConnectedEndToEndTestFloat32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000688{
689 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
690}
691
Matthew Sloyan81beae32021-07-13 19:46:11 +0100692TEST_CASE("RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
693{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100694 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100695}
696
697TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
698{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100699 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
Cathal Corbett521032f2021-10-07 11:46:40 +0100700}
701
702TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
703{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100704 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, true, true, false);
705}
706
707TEST_CASE("RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
708{
709 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, false, true, true);
710}
711
712TEST_CASE("RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
713{
714 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, true, false, true);
715}
716
717TEST_CASE("RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
718{
719 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, false, false, true);
720}
721
722TEST_CASE("RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
723{
724 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, false, false, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100725}
726
Sadik Armagan1625efc2021-06-10 18:24:34 +0100727TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000728{
729 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
730}
731
Sadik Armagan1625efc2021-06-10 18:24:34 +0100732TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000733{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000734 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000735}
736
Sadik Armagan1625efc2021-06-10 18:24:34 +0100737TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100738{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000739 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100740}
741
Sadik Armagan1625efc2021-06-10 18:24:34 +0100742TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000743{
744 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
745}
746
Sadik Armagan1625efc2021-06-10 18:24:34 +0100747TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000748{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000749 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000750}
751
Sadik Armagan1625efc2021-06-10 18:24:34 +0100752TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100753{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000754 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100755}
756
Teresa Charlinb2d3ec52022-04-12 22:07:09 +0100757TEST_CASE("RefGatherNdFloatTest")
758{
759 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
760}
761
762TEST_CASE("RefGatherNdUint8Test")
763{
764 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
765}
766
767TEST_CASE("RefGatherNdInt16Test")
768{
769 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
770}
771
772TEST_CASE("RefGatherNdMultiDimFloatTest")
773{
774 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
775}
776
777TEST_CASE("RefGatherNdMultiDimUint8Test")
778{
779 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
780}
781
782TEST_CASE("RefGatherNdMultiDimInt16Test")
783{
784 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
785}
786
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100787// DepthToSpace
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000788TEST_CASE("DepthToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100789{
790 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
791}
792
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000793TEST_CASE("DepthToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100794{
795 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
796}
797
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000798TEST_CASE("DepthToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100799{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000800 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100801}
802
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000803TEST_CASE("DepthToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100804{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000805 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100806}
807
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000808TEST_CASE("DepthToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100809{
810 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
811}
812
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000813TEST_CASE("DepthToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100814{
815 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
816}
817
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000818TEST_CASE("DepthToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100819{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000820 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100821}
822
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000823TEST_CASE("DepthToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100824{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000825 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100826}
827
John Mcloughlinceb44282024-04-23 16:47:04 +0100828// Quantization
829TEST_CASE("RefQuantizeInt8")
830{
831 QuantizationEndToEndInt8(defaultBackends);
832}
833
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100834// 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
Teresa Charlina4b60902024-02-07 20:55:53 +00001019// Activations
1020// Linear
1021TEST_CASE("RefLinearEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001022{
Teresa Charlina4b60902024-02-07 20:55:53 +00001023 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001024}
1025
Teresa Charlina4b60902024-02-07 20:55:53 +00001026TEST_CASE("RefLinearEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001027{
Teresa Charlina4b60902024-02-07 20:55:53 +00001028 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001029}
1030
Teresa Charlina4b60902024-02-07 20:55:53 +00001031TEST_CASE("RefLinearEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001032{
Teresa Charlina4b60902024-02-07 20:55:53 +00001033 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001034}
1035
Teresa Charlina4b60902024-02-07 20:55:53 +00001036TEST_CASE("RefLinearEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001037{
Teresa Charlina4b60902024-02-07 20:55:53 +00001038 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001039}
1040
Teresa Charlina4b60902024-02-07 20:55:53 +00001041TEST_CASE("RefLinearEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001042{
Teresa Charlina4b60902024-02-07 20:55:53 +00001043 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::Linear);
1044}
1045
1046// Sigmoid
1047TEST_CASE("RefSigmoidEndToEndTestFloat32")
1048{
1049 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::Sigmoid);
1050}
1051
1052TEST_CASE("RefSigmoidEndToEndTestFloat16")
1053{
1054 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::Sigmoid);
1055}
1056
1057TEST_CASE("RefSigmoidEndToEndTestQAsymmS8")
1058{
1059 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::Sigmoid);
1060}
1061
1062TEST_CASE("RefSigmoidEndToEndTestQAsymmU8")
1063{
1064 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::Sigmoid, 0.12f, 15);
1065}
1066
1067TEST_CASE("RefSigmoidEndToEndTestQSymmS16")
1068{
1069 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::Sigmoid);
1070}
1071
1072// ReLu
1073TEST_CASE("RefReLuEndToEndTestFloat32")
1074{
1075 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::ReLu);
1076}
1077
1078TEST_CASE("RefReLuEndToEndTestFloat16")
1079{
1080 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::ReLu);
1081}
1082
1083TEST_CASE("RefReLuEndToEndTestQAsymmS8")
1084{
1085 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::ReLu);
1086}
1087
1088TEST_CASE("RefReLuEndToEndTestQAsymmU8")
1089{
1090 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::ReLu);
1091}
1092
1093TEST_CASE("RefReLuEndToEndTestQSymmS16")
1094{
1095 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::ReLu);
1096}
1097
1098// BoundedReLu
1099TEST_CASE("RefBoundedReLuEndToEndTestFloat32")
1100{
1101 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::BoundedReLu);
1102}
1103
1104TEST_CASE("RefBoundedReLuEndToEndTestFloat16")
1105{
1106 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::BoundedReLu);
1107}
1108
1109TEST_CASE("RefBoundedReLuEndToEndTestQAsymmS8")
1110{
1111 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::BoundedReLu);
1112}
1113
1114TEST_CASE("RefBoundedReLuEndToEndTestQAsymmU8")
1115{
1116 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::BoundedReLu);
1117}
1118
1119TEST_CASE("RefBoundedReLuEndToEndTestQSymmS16")
1120{
1121 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::BoundedReLu);
1122}
1123
1124// SoftReLu
1125TEST_CASE("RefSoftReLuEndToEndTestFloat32")
1126{
1127 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::SoftReLu);
1128}
1129
1130TEST_CASE("RefSoftReLuEndToEndTestFloat16")
1131{
1132 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::SoftReLu);
1133}
1134
1135TEST_CASE("RefSoftReLuEndToEndTestQAsymmS8")
1136{
1137 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::SoftReLu);
1138}
1139
1140TEST_CASE("RefSoftReLuEndToEndTestQAsymmU8")
1141{
1142 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::SoftReLu, 0.12f, 15);
1143}
1144
1145TEST_CASE("RefSoftReLuEndToEndTestQSymmS16")
1146{
1147 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::SoftReLu);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001148}
1149
Tracy Narine10403ec2023-11-28 11:55:08 +00001150// LeakyRelu
1151TEST_CASE("RefLeakyReluActivationFloat32")
1152{
Teresa Charlina4b60902024-02-07 20:55:53 +00001153 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::LeakyReLu, 1.f, 0, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001154}
1155
1156TEST_CASE("RefLeakyReluActivationFloat16")
1157{
Teresa Charlina4b60902024-02-07 20:55:53 +00001158 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::LeakyReLu, 0.3f, 5, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001159}
1160
1161TEST_CASE("RefLeakyReluActivationInt8")
1162{
Teresa Charlina4b60902024-02-07 20:55:53 +00001163 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::LeakyReLu, 0.6f, 7, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001164}
1165
1166TEST_CASE("RefLeakyReluActivationUInt8")
1167{
Teresa Charlina4b60902024-02-07 20:55:53 +00001168 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::LeakyReLu, 0.12f, 15, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001169}
1170
1171TEST_CASE("RefLeakyReluActivationInt16")
1172{
Teresa Charlina4b60902024-02-07 20:55:53 +00001173 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::LeakyReLu, 0.15f, 55, 0.01f);
1174}
1175
1176// Elu
1177TEST_CASE("RefEluEndToEndTestFloat32")
1178{
1179 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::Elu);
1180}
1181
1182TEST_CASE("RefEluEndToEndTestFloat16")
1183{
1184 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::Elu);
1185}
1186
1187TEST_CASE("RefEluEndToEndTestQAsymmS8")
1188{
1189 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::Elu);
1190}
1191
1192TEST_CASE("RefEluEndToEndTestQAsymmU8")
1193{
1194 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::Elu);
1195}
1196
1197TEST_CASE("RefEluEndToEndTestQSymmS16")
1198{
1199 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::Elu);
1200}
1201
1202// HardSwish
1203TEST_CASE("RefHardSwishEndToEndTestFloat32")
1204{
1205 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::HardSwish);
1206}
1207
1208TEST_CASE("RefHardSwishEndToEndTestFloat16")
1209{
1210 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::HardSwish);
1211}
1212
1213TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
1214{
1215 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::HardSwish);
1216}
1217
1218TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
1219{
1220 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::HardSwish);
1221}
1222
1223TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
1224{
1225 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::HardSwish);
1226}
1227
1228// TanH
1229TEST_CASE("RefTanHEndToEndTestFloat32")
1230{
1231 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 2, 3);
1232}
1233
1234TEST_CASE("RefTanHEndToEndTestFloat16")
1235{
1236 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 2, 3);
1237}
1238
1239TEST_CASE("RefTanHEndToEndTestQAsymmS8")
1240{
1241 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
1242}
1243
1244TEST_CASE("RefTanHEndToEndTestQAsymmU8")
1245{
1246 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
1247}
1248
1249TEST_CASE("RefTanHEndToEndTestQSymmS16")
1250{
1251 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
Tracy Narine10403ec2023-11-28 11:55:08 +00001252}
1253
Sadik Armagan20bea002019-10-16 09:29:38 +01001254// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001255TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +01001256{
1257 LogSoftmaxEndToEndTest(defaultBackends);
1258}
1259
John Mcloughlin33753902024-02-07 15:00:57 +00001260// Softmax
1261TEST_CASE("RefSoftmaxEndToEndTestFloat32")
1262{
1263 SoftmaxEndToEnd<armnn::DataType::Float32>(defaultBackends);
1264}
1265
Teresa Charlina4b60902024-02-07 20:55:53 +00001266// Prelu
Sadik Armagan1625efc2021-06-10 18:24:34 +01001267TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +01001268{
1269 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1270}
1271
Sadik Armagan1625efc2021-06-10 18:24:34 +01001272TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +01001273{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001274 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001275}
1276
Sadik Armagan1625efc2021-06-10 18:24:34 +01001277TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +01001278{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001279 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001280}
1281
Teresa Charlina52bca22024-02-01 17:36:48 +00001282// Pooling 2D
1283// Average Pool 2D
1284TEST_CASE("RefAvgPool2DEndtoEndTestFloat32")
1285{
1286 AvgPool2dEndToEnd<DataType::Float32>(defaultBackends);
1287}
1288
1289TEST_CASE("RefAvgPool2DEndtoEndTestFloat16")
1290{
1291 AvgPool2dEndToEndFloat16<DataType::Float16>(defaultBackends);
1292}
1293
1294TEST_CASE("RefAvgPool2DIgnoreValueEndtoEndTestFloat32")
1295{
1296 AvgPool2dEndToEnd<DataType::Float32>(defaultBackends, PaddingMethod::IgnoreValue);
1297}
1298
1299// Max Pool 2D
1300TEST_CASE("RefMaxPool2DEndtoEndTestFloat32")
1301{
1302 MaxPool2dEndToEnd<DataType::Float32>(defaultBackends);
1303}
1304
1305TEST_CASE("RefMaxPool2DEndtoEndTestFloat16")
1306{
1307 MaxPool2dEndToEndFloat16<DataType::Float16>(defaultBackends);
1308}
1309
1310TEST_CASE("RefMaxPool2DIgnoreValueEndtoEndTestFloat32")
1311{
1312 MaxPool2dEndToEnd<DataType::Float32>(defaultBackends, PaddingMethod::IgnoreValue);
1313}
1314
1315TEST_CASE("RefMaxPool2DTwoLayerEndtoEndTestFloat32")
1316{
1317 MaxPool2dTwoLayerEndToEnd<DataType::Float32>(defaultBackends);
1318}
1319
1320TEST_CASE("RefMaxPool2DThreeLayerEndtoEndTestFloat32")
1321{
1322 MaxPool2dThreeLayerEndToEnd<DataType::Float32>(defaultBackends);
1323}
1324
Teresa Charlinca5a23a2023-12-15 14:20:47 +00001325// Quantization
1326TEST_CASE("QuantizationEndToEndFloat32_U8Test")
1327{
1328 QuantizationEndToEndFloat32<armnn::DataType::QAsymmU8>(defaultBackends);
1329}
1330
1331TEST_CASE("QuantizationEndToEndFloat32_I8Test")
1332{
1333 QuantizationEndToEndFloat32<armnn::DataType::QAsymmS8>(defaultBackends);
1334}
1335
1336TEST_CASE("QuantizationEndToEndFloat32_S16Test")
1337{
1338 QuantizationEndToEndFloat32<armnn::DataType::QSymmS16>(defaultBackends);
1339}
1340
1341TEST_CASE("QuantizationEndToEndFloat16_U8Test")
1342{
1343 QuantizationEndToEndFloat16<armnn::DataType::QAsymmU8>(defaultBackends);
1344}
1345
1346TEST_CASE("QuantizationEndToEndFloat16_I8Test")
1347{
1348 QuantizationEndToEndFloat16<armnn::DataType::QAsymmS8>(defaultBackends);
1349}
1350
1351TEST_CASE("QuantizationEndToEndFloat16_S16Test")
1352{
1353 QuantizationEndToEndFloat16<armnn::DataType::QSymmS16>(defaultBackends);
1354}
1355
Teresa Charlin70dc5e92024-03-05 17:59:27 +00001356// ScatterNd
Teresa Charlin70dc5e92024-03-05 17:59:27 +00001357TEST_CASE("RefScatterNd1DInputEndToEndFloat32Test")
1358{
1359 ScatterNd1DimUpdateWithInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1360}
1361
1362TEST_CASE("RefScatterNd1DInputEndToEndInt8Test")
1363{
1364 ScatterNd1DimUpdateWithInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1365}
1366
1367TEST_CASE("RefScatterNd1DNoInputEndToEndFloat32Test")
1368{
1369 ScatterNd1DimUpdateNoInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1370}
1371
1372TEST_CASE("RefScatterNd1DNoInputEndToEndInt8Test")
1373{
1374 ScatterNd1DimUpdateNoInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1375}
1376
1377TEST_CASE("RefScatterNd2DInputEndToEndFloat32Test")
1378{
1379 ScatterNd2DimUpdateWithInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1380}
1381
1382TEST_CASE("RefScatterNd2DInputEndToEndInt8Test")
1383{
1384 ScatterNd2DimUpdateWithInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1385}
1386
1387TEST_CASE("RefScatterNd2DNoInputEndToEndFloat32Test")
1388{
1389 ScatterNd2DimUpdateNoInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1390}
1391
1392TEST_CASE("RefScatterNd2DNoInputEndToEndInt8Test")
1393{
1394 ScatterNd2DimUpdateNoInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1395}
1396
Teresa Charlinca5a23a2023-12-15 14:20:47 +00001397// SpaceToDepth
Sadik Armagan1625efc2021-06-10 18:24:34 +01001398TEST_CASE("RefSpaceToDepthNhwcEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001399{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001400 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001401}
1402
Sadik Armagan1625efc2021-06-10 18:24:34 +01001403TEST_CASE("RefSpaceToDepthNchwEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001404{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001405 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001406}
1407
Sadik Armagan1625efc2021-06-10 18:24:34 +01001408TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001409{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001410 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001411}
1412
Sadik Armagan1625efc2021-06-10 18:24:34 +01001413TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001414{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001415 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001416}
1417
Kevin May1bea6be2023-12-12 11:18:46 +00001418// Split
1419TEST_CASE("RefSplit1dEndtoEndTestSigned16")
1420{
1421 Splitter1dEndToEnd<DataType::QSymmS16>(defaultBackends);
1422}
1423
Teresa Charlina52bca22024-02-01 17:36:48 +00001424TEST_CASE("RefSplit1dEndtoEndTestFloat16")
Kevin May1bea6be2023-12-12 11:18:46 +00001425{
1426 Splitter1dEndToEndFloat16<DataType::Float16>(defaultBackends);
1427}
1428
Sadik Armagan1625efc2021-06-10 18:24:34 +01001429TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001430{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001431 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001432}
1433
Sadik Armagan1625efc2021-06-10 18:24:34 +01001434TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001435{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001436 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001437}
1438
Sadik Armagan1625efc2021-06-10 18:24:34 +01001439TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001440{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001441 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001442}
1443
Sadik Armagan1625efc2021-06-10 18:24:34 +01001444TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001445{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001446 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001447}
1448
Sadik Armagan1625efc2021-06-10 18:24:34 +01001449TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001450{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001451 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001452}
1453
Sadik Armagan1625efc2021-06-10 18:24:34 +01001454TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001455{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001456 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001457}
1458
Kevin May1bea6be2023-12-12 11:18:46 +00001459TEST_CASE("RefSplit3dDim1EndtoEndTestSigned16")
1460{
1461 Splitter3dDim1EndToEnd<DataType::QSymmS16>(defaultBackends);
1462}
1463
1464TEST_CASE("RefSplit3dDim1EndtoEndTestFloat16")
1465{
1466 Splitter3dDim1EndToEndFloat16<DataType::Float16>(defaultBackends);
1467}
1468
Sadik Armagan1625efc2021-06-10 18:24:34 +01001469TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001470{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001471 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001472}
1473
Sadik Armagan1625efc2021-06-10 18:24:34 +01001474TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001475{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001476 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1477}
1478
Sadik Armagan1625efc2021-06-10 18:24:34 +01001479TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001480{
1481 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1482}
1483
Sadik Armagan1625efc2021-06-10 18:24:34 +01001484TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001485{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001486 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001487}
1488
Sadik Armagan1625efc2021-06-10 18:24:34 +01001489TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001490{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001491 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001492}
1493
Sadik Armagan1625efc2021-06-10 18:24:34 +01001494TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001495{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001496 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001497}
1498
Sadik Armagan1625efc2021-06-10 18:24:34 +01001499TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001500{
1501 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1502}
1503
Sadik Armagan1625efc2021-06-10 18:24:34 +01001504TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001505{
1506 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1507}
1508
Sadik Armagan1625efc2021-06-10 18:24:34 +01001509TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001510{
1511 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1512}
1513
Kevin May1bea6be2023-12-12 11:18:46 +00001514TEST_CASE("RefSplit4dDim2EndtoEndTestFloat16")
1515{
1516 Splitter4dDim2EndToEndFloat16<DataType::Float16>(defaultBackends);
1517}
1518
Sadik Armagan1625efc2021-06-10 18:24:34 +01001519TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001520{
1521 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1522}
1523
Sadik Armagan1625efc2021-06-10 18:24:34 +01001524TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001525{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001526 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001527}
1528
Sadik Armagan1625efc2021-06-10 18:24:34 +01001529TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001530{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001531 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001532}
1533
Sadik Armagan1625efc2021-06-10 18:24:34 +01001534TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001535{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001536 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001537}
1538
Sadik Armagan1625efc2021-06-10 18:24:34 +01001539TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001540{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001541 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001542}
1543
Cian McGriskin160edb32023-07-25 14:15:45 +01001544// Tile
1545TEST_CASE("RefTileEndToEndFloat32")
1546{
1547 TileEndToEnd<armnn::DataType::Float32>(defaultBackends);
1548}
1549
1550TEST_CASE("RefTileEndToEndFloat16")
1551{
1552 TileEndToEnd<armnn::DataType::Float16>(defaultBackends);
1553}
1554
1555TEST_CASE("RefTileEndToEndQAsymmS8")
1556{
1557 TileEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1558}
1559
1560TEST_CASE("RefTileEndToEndQAsymmU8")
1561{
1562 TileEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1563}
1564
1565TEST_CASE("RefTileEndToEndQSymmS8")
1566{
1567 TileEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1568}
1569
1570TEST_CASE("RefTileEndToEndQSymmS16")
1571{
1572 TileEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1573}
1574
1575TEST_CASE("RefTileEndToEndSigned32")
1576{
1577 TileEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1578}
1579
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001580// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001581TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001582{
1583 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1584 defaultBackends, armnn::DataLayout::NCHW);
1585}
1586
Sadik Armagan1625efc2021-06-10 18:24:34 +01001587TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001588{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001589 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001590 defaultBackends, armnn::DataLayout::NCHW);
1591}
1592
Sadik Armagan1625efc2021-06-10 18:24:34 +01001593TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001594{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001595 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001596 defaultBackends, armnn::DataLayout::NCHW);
1597}
1598
Sadik Armagan1625efc2021-06-10 18:24:34 +01001599TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001600{
1601 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1602 defaultBackends, armnn::DataLayout::NHWC);
1603}
1604
Sadik Armagan1625efc2021-06-10 18:24:34 +01001605TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001606{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001607 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001608 defaultBackends, armnn::DataLayout::NHWC);
1609}
1610
Sadik Armagan1625efc2021-06-10 18:24:34 +01001611TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001612{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001613 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001614 defaultBackends, armnn::DataLayout::NHWC);
1615}
1616
Teresa Charlin6bc85252022-12-06 20:43:06 +00001617// Transpose
1618TEST_CASE("RefTransposeEndToEndTest")
1619{
1620 TransposeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1621}
1622
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001623// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001624TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001625{
1626 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1627}
1628
Sadik Armagan1625efc2021-06-10 18:24:34 +01001629TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001630{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001631 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001632}
1633
Teresa Charlince655882023-11-21 15:44:13 +00001634TEST_CASE("RefResizeBilinearEndToEndInt8NchwTest")
1635{
1636 ResizeBilinearEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NCHW);
1637}
1638
Sadik Armagan1625efc2021-06-10 18:24:34 +01001639TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001640{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001641 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001642}
1643
Sadik Armagan1625efc2021-06-10 18:24:34 +01001644TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001645{
1646 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1647}
1648
Sadik Armagan1625efc2021-06-10 18:24:34 +01001649TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001650{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001651 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001652}
1653
Teresa Charlince655882023-11-21 15:44:13 +00001654TEST_CASE("RefResizeBilinearEndToEndInt8NhwcTest")
1655{
1656 ResizeBilinearEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NHWC);
1657}
1658
Sadik Armagan1625efc2021-06-10 18:24:34 +01001659TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001660{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001661 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001662}
1663
1664// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001665TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001666{
1667 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1668}
1669
Sadik Armagan1625efc2021-06-10 18:24:34 +01001670TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001671{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001672 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001673}
1674
Teresa Charlince655882023-11-21 15:44:13 +00001675TEST_CASE("RefResizeNearestNeighborEndToEndInt8NchwTest")
1676{
1677 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NCHW);
1678}
1679
Sadik Armagan1625efc2021-06-10 18:24:34 +01001680TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001681{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001682 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001683}
1684
Sadik Armagan1625efc2021-06-10 18:24:34 +01001685TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001686{
1687 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1688}
1689
Sadik Armagan1625efc2021-06-10 18:24:34 +01001690TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001691{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001692 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001693}
1694
Teresa Charlince655882023-11-21 15:44:13 +00001695TEST_CASE("RefResizeNearestNeighborEndToEndInt8NhwcTest")
1696{
1697 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NHWC);
1698}
1699
Sadik Armagan1625efc2021-06-10 18:24:34 +01001700TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001701{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001702 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001703}
1704
Teresa Charlin28658bc2023-12-19 15:49:31 +00001705TEST_CASE("RefResizeNearestNeighborEndToEndFloatAlignCornersNhwcTest")
1706{
1707 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC, true, false);
1708}
1709
Teresa Charlince655882023-11-21 15:44:13 +00001710TEST_CASE("RefResizeNearestNeighborEndToEndFloatHalfPixelNhwcTest")
1711{
1712 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC, false, true);
1713}
1714
Teresa Charlin28658bc2023-12-19 15:49:31 +00001715TEST_CASE("RefResizeNearestNeighborEndToEndInt8AlignCornersNhwcTest")
1716{
1717 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NHWC, true, false);
1718}
1719
Teresa Charlin0587dd02023-12-21 09:05:39 +00001720TEST_CASE("RefResizeNearestNeighborEndToEndInt8HalfPixelNhwcTest")
Teresa Charlince655882023-11-21 15:44:13 +00001721{
1722 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NHWC, false, true);
1723}
1724
Declan-ARM1bf56cd2023-07-20 17:32:57 +01001725// ReverseV2
1726TEST_CASE("RefReverseV2EndToEndFloat16Test")
1727{
1728 ReverseV2EndToEnd<armnn::DataType::Float16>(defaultBackends);
1729}
1730
1731TEST_CASE("RefReverseV2EndToEndFloat32Test")
1732{
1733 ReverseV2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1734}
1735
1736TEST_CASE("RefReverseV2EndToEndQAsymmS8Test")
1737{
1738 ReverseV2EndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1739}
1740
1741TEST_CASE("RefReverseV2EndToEndQAsymmU8Test")
1742{
1743 ReverseV2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1744}
1745
1746TEST_CASE("RefReverseV2EndToEndQSymmS8Test")
1747{
1748 ReverseV2EndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1749}
1750
1751TEST_CASE("RefReverseV2EndToEndQSymmS16Test")
1752{
1753 ReverseV2EndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1754}
1755
1756TEST_CASE("RefReverseV2EndToEndSigned32Test")
1757{
1758 ReverseV2EndToEnd<armnn::DataType::Signed32>(defaultBackends);
1759}
1760
Sadik Armagan062e0e92019-10-14 10:31:43 +01001761// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001762TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001763{
1764 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1765}
1766
Sadik Armagan1625efc2021-06-10 18:24:34 +01001767TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001768{
1769 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1770}
1771
Sadik Armagan1625efc2021-06-10 18:24:34 +01001772TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001773{
1774 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1775}
1776
Sadik Armagan1625efc2021-06-10 18:24:34 +01001777TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001778{
1779 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1780}
1781
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001782// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001783TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001784{
1785 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1786}
1787
Sadik Armagan1625efc2021-06-10 18:24:34 +01001788TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001789{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001790 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001791}
1792
Sadik Armagan1625efc2021-06-10 18:24:34 +01001793TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001794{
1795 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1796}
1797
Sadik Armagan1625efc2021-06-10 18:24:34 +01001798TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001799{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001800 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001801}
1802
Sadik Armagan1625efc2021-06-10 18:24:34 +01001803TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001804{
1805 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1806}
1807
Sadik Armagan1625efc2021-06-10 18:24:34 +01001808TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001809{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001810 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001811}
1812
Sadik Armagan1625efc2021-06-10 18:24:34 +01001813TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001814{
1815 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1816}
1817
Sadik Armagan1625efc2021-06-10 18:24:34 +01001818TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001819{
1820
Derek Lambertif90c56d2020-01-10 17:14:08 +00001821 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001822}
1823
Sadik Armagan1625efc2021-06-10 18:24:34 +01001824TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001825{
1826 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1827}
1828
Sadik Armagan1625efc2021-06-10 18:24:34 +01001829TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001830{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001831 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001832}
1833
Sadik Armagan1625efc2021-06-10 18:24:34 +01001834TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001835{
1836 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1837}
1838
Sadik Armagan1625efc2021-06-10 18:24:34 +01001839TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001840{
1841
Derek Lambertif90c56d2020-01-10 17:14:08 +00001842 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001843}
1844
Sadik Armagan1625efc2021-06-10 18:24:34 +01001845TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001846{
1847 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1848}
1849
Sadik Armagan1625efc2021-06-10 18:24:34 +01001850TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001851{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001852 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001853}
1854
Sadik Armagan1625efc2021-06-10 18:24:34 +01001855TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001856{
1857 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1858}
1859
Sadik Armagan1625efc2021-06-10 18:24:34 +01001860TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001861{
1862
Derek Lambertif90c56d2020-01-10 17:14:08 +00001863 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001864}
1865
Sadik Armagan1625efc2021-06-10 18:24:34 +01001866TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001867{
1868 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1869}
1870
Sadik Armagan1625efc2021-06-10 18:24:34 +01001871TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001872{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001873 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001874}
1875
Sadik Armagan1625efc2021-06-10 18:24:34 +01001876TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001877{
1878 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1879}
1880
Sadik Armagan1625efc2021-06-10 18:24:34 +01001881TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001882{
1883
Derek Lambertif90c56d2020-01-10 17:14:08 +00001884 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001885}
1886
Sadik Armagan1625efc2021-06-10 18:24:34 +01001887TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001888{
1889 QLstmEndToEnd(defaultBackends);
1890}
1891
Sadik Armagan1625efc2021-06-10 18:24:34 +01001892TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001893{
1894 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1895}
1896
Sadik Armagan1625efc2021-06-10 18:24:34 +01001897TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001898{
1899 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1900}
1901
Sadik Armagan1625efc2021-06-10 18:24:34 +01001902TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001903{
1904 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1905}
1906
Sadik Armagan1625efc2021-06-10 18:24:34 +01001907TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001908{
1909 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1910}
1911
Sadik Armagan1625efc2021-06-10 18:24:34 +01001912TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001913{
1914 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1915}
1916
Sadik Armagan1625efc2021-06-10 18:24:34 +01001917TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001918{
1919 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1920}
1921
Teresa Charlinc17a35f2023-01-12 14:13:09 +00001922// Reduce
1923TEST_CASE("RefReduceEndToEndTest")
1924{
1925 ReduceEndToEnd<armnn::DataType::Float32>(defaultBackends);
1926}
1927
1928TEST_CASE("RefReduceEndToEndTestFloat16")
1929{
1930 ReduceEndToEnd<armnn::DataType::Float16>(defaultBackends);
1931}
1932
1933// Reshape
1934TEST_CASE("RefReshapeEndToEndTest")
1935{
1936 ReshapeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1937}
1938
1939TEST_CASE("RefReshapeEndToEndTestFloat16")
1940{
1941 ReshapeEndToEndFloat16<armnn::DataType::Float16>(defaultBackends);
1942}
1943
Declan-ARM5e90b832024-02-07 13:07:31 +00001944TEST_CASE("RefReshapeEndToEndTestInt32")
1945{
1946 ReshapeEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1947}
1948
1949TEST_CASE("RefReshapeEndToEndTestInt16")
1950{
1951 ReshapeEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1952}
1953
1954TEST_CASE("RefReshapeEndToEndTestUInt8")
1955{
1956 ReshapeEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1957}
1958
1959TEST_CASE("RefReshapeEndToEndTestInt8")
1960{
1961 ReshapeEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1962}
1963
1964// Force Import
David Monahan646bc8a2022-01-31 14:29:14 +00001965TEST_CASE("RefForceImportWithAlignedBuffersEndToEndTest")
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001966{
David Monahan646bc8a2022-01-31 14:29:14 +00001967 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1968}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001969
David Monahan646bc8a2022-01-31 14:29:14 +00001970TEST_CASE("RefForceImportWithMisalignedInputBuffersEndToEndTest")
1971{
1972 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1973}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001974
David Monahan646bc8a2022-01-31 14:29:14 +00001975TEST_CASE("RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1976{
1977 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1978}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001979
David Monahan646bc8a2022-01-31 14:29:14 +00001980TEST_CASE("RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1981{
1982 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001983}
1984
David Monahan16829712022-02-03 17:04:59 +00001985TEST_CASE("RefForceImportRepeatedInferencesEndToEndTest")
1986{
1987 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1988}
1989
1990TEST_CASE("RefForceImportRepeatedInferencesInvertedEndToEndTest")
1991{
1992 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1993}
1994
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001995#if !defined(__ANDROID__)
1996// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001997TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001998{
David Monahan4f1e8e42019-09-04 09:22:10 +01001999 ImportNonAlignedInputPointerTest(defaultBackends);
2000}
2001
Sadik Armagan1625efc2021-06-10 18:24:34 +01002002TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01002003{
Ferran Balaguer83239f92019-09-19 11:49:25 +01002004 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01002005}
2006
Sadik Armagan1625efc2021-06-10 18:24:34 +01002007TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01002008{
2009 ImportAlignedPointerTest(defaultBackends);
2010}
2011
Sadik Armagan1625efc2021-06-10 18:24:34 +01002012TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002013{
2014 ImportOnlyWorkload(defaultBackends);
2015}
2016
Sadik Armagan1625efc2021-06-10 18:24:34 +01002017TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002018{
2019 ExportOnlyWorkload(defaultBackends);
2020}
2021
Sadik Armagan1625efc2021-06-10 18:24:34 +01002022TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002023{
2024 ImportAndExportWorkload(defaultBackends);
2025}
2026
Sadik Armagan1625efc2021-06-10 18:24:34 +01002027TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002028{
2029 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
2030}
2031
Ryan OShea980446b2023-06-08 16:23:28 +01002032// Slice
2033TEST_CASE("RefSliceEndtoEndTestFloat32")
2034{
2035 SliceEndToEnd<DataType::Float32>(defaultBackends);
2036}
2037
2038TEST_CASE("RefSliceEndtoEndTestInt32")
2039{
2040 SliceEndToEnd<DataType::Signed32>(defaultBackends);
2041}
2042
2043TEST_CASE("RefSliceEndtoEndTestFloat16")
2044{
2045 SliceEndToEndFloat16<DataType::Float16>(defaultBackends);
2046}
2047
Sadik Armagan1625efc2021-06-10 18:24:34 +01002048TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00002049{
2050 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
2051}
2052
Sadik Armagan1625efc2021-06-10 18:24:34 +01002053TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01002054{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01002055 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01002056}
Finn Williamsb8181f72021-04-07 10:23:21 +01002057
Sadik Armagan1625efc2021-06-10 18:24:34 +01002058TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01002059{
2060 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
2061}
Keith Davise813d672021-04-22 10:10:34 +01002062
Sadik Armagan1625efc2021-06-10 18:24:34 +01002063TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01002064{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01002065 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01002066}
Mike Kelly3ec30772023-03-08 13:47:17 +00002067
2068TEST_CASE("RefAddEndToEndTestFloat32")
2069{
2070 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
2071}
2072TEST_CASE("RefAddEndToEndTestUint8")
2073{
2074 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Add);
2075}
Tracy Narinee7d27852024-01-26 09:13:19 +00002076TEST_CASE("RefAddEndToEndTestFloat32Simple3D")
2077{
2078 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
2079}
2080TEST_CASE("RefAddEndToEndTestFloat16Simple3D")
2081{
2082 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(defaultBackends, BinaryOperation::Add);
2083}
Mike Kelly3ec30772023-03-08 13:47:17 +00002084TEST_CASE("RefDivEndToEndTestFloat32")
2085{
2086 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Div);
2087}
2088TEST_CASE("RefDivEndToEndTestUint8")
2089{
2090 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Div);
2091}
2092TEST_CASE("RefMulEndToEndTestFloat32")
2093{
2094 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Mul);
2095}
2096TEST_CASE("RefMulEndToEndTestUint8")
2097{
2098 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Mul);
2099}
2100TEST_CASE("RefSubEndToEndTestFloat32")
2101{
2102 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
2103}
2104TEST_CASE("RefSubEndToEndTestUint8")
2105{
2106 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Sub);
2107}
John Mcloughlin829e13e2024-01-31 11:00:27 +00002108TEST_CASE("RefSubEndToEndTestFloat32Simple3D")
2109{
2110 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
2111}
2112TEST_CASE("RefSubEndToEndTestFloat16Simple3D")
2113{
2114 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(defaultBackends, BinaryOperation::Sub);
2115}
Mike Kelly3ec30772023-03-08 13:47:17 +00002116TEST_CASE("RefMaximumEndToEndTestFloat32")
2117{
2118 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Maximum);
2119}
2120TEST_CASE("RefMaximumEndToEndTestUint8")
2121{
2122 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Maximum);
2123}
2124TEST_CASE("RefMinimumEndToEndTestFloat32")
2125{
2126 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Minimum);
2127}
2128TEST_CASE("RefMinimumEndToEndTestUint8")
2129{
2130 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Minimum);
2131}
John Mcloughlin0ec00872023-05-15 17:03:49 +01002132TEST_CASE("RefPowerEndToEndTestFloat32")
2133{
2134 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Power);
2135}
2136TEST_CASE("RefPowerEndToEndTestUint8")
2137{
2138 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Power);
2139}
2140TEST_CASE("RefSquaredDifferenceEndToEndTestFloat32")
2141{
2142 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::SqDiff);
2143}
2144TEST_CASE("RefSquaredDifferenceEndToEndTestUint8")
2145{
2146 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::SqDiff);
2147}
Mike Kelly4cc341c2023-07-07 15:43:06 +01002148
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01002149#endif
2150
Mike Kelly4cc341c2023-07-07 15:43:06 +01002151// Backend Optimization Tests
2152TEST_CASE("RefReshapeRemovalSimpleCaseEndToEnd")
2153{
2154 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(defaultBackends);
2155}
2156
2157TEST_CASE("RefReshapeRemovalNCHWFirstEndToEnd")
2158{
2159 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
2160}
2161
2162TEST_CASE("RefReshapeRemovalNCHWSecondEndToEnd")
2163{
2164 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
2165}
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002166
2167// BroadcastTo
2168TEST_CASE("RefBroadcastToEndToEndFloat32")
2169{
2170 BroadcastToEndToEnd<armnn::DataType::Float32>(defaultBackends);
2171}
2172
Idriss Chaouch564c13d2023-09-01 17:58:38 +01002173TEST_CASE("RefBroadcastToEndToEndWithMultiplicationFloat32")
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002174{
Idriss Chaouch564c13d2023-09-01 17:58:38 +01002175 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2176 BinaryOperation::Mul);
2177}
2178
2179TEST_CASE("RefBroadcastToEndToEndWithDivisionFloat32")
2180{
2181 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2182 BinaryOperation::Div);
2183}
2184
2185TEST_CASE("RefBroadcastToEndToEndWithAdditionFloat32")
2186{
2187 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2188 BinaryOperation::Add);
2189}
2190
2191TEST_CASE("RefBroadcastToEndToEndWithSubtractionFloat32")
2192{
2193 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2194 BinaryOperation::Sub);
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002195}
Sadik Armagan1625efc2021-06-10 18:24:34 +01002196}