blob: 73786b5ccd09ceb9167284d4e6775a6393cabdcb [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
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +0100629TEST_CASE("RefConvolution3dFloat32Test")
630{
631 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
632 armnn::DataLayout::NDHWC);
633}
634
635TEST_CASE("RefConvolution3dNcdhwFloat32Test")
636{
637 Convolution3dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
638 armnn::DataLayout::NCDHW);
639}
640
641TEST_CASE("RefConvolution3dFloat16Test")
642{
643 Convolution3dEndToEnd<armnn::DataType::Float16, armnn::DataType::Float16>(defaultBackends,
644 armnn::DataLayout::NDHWC);
645}
646
647TEST_CASE("RefConvolution3dUint8Test")
648{
649 Convolution3dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(defaultBackends,
650 armnn::DataLayout::NDHWC);
651}
652
653TEST_CASE("RefConvolution3dInt8Test")
654{
655 Convolution3dEndToEnd<armnn::DataType::QAsymmS8, armnn::DataType::Signed32>(defaultBackends,
656 armnn::DataLayout::NDHWC);
657}
658
Tianle Chengfbfa49e2024-01-23 11:21:48 +0000659TEST_CASE("RefDepthwiseConvolution2dEndtoEndFloat32Test")
660{
661 DepthwiseConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(defaultBackends,
662 armnn::DataLayout::NHWC);
663}
664
Sadik Armagan1625efc2021-06-10 18:24:34 +0100665TEST_CASE("RefFillEndToEndTest")
Teresa Charlin44088502020-07-27 11:27:19 +0100666{
667 FillEndToEnd<armnn::DataType::Float32>(defaultBackends);
668}
669
Sadik Armagan1625efc2021-06-10 18:24:34 +0100670TEST_CASE("RefFillEndToEndTestFloat16")
Teresa Charlin4b10fef2020-07-29 09:36:41 +0100671{
672 FillEndToEnd<armnn::DataType::Float16>(defaultBackends);
673}
Teresa Charlin44088502020-07-27 11:27:19 +0100674
Sadik Armagan1625efc2021-06-10 18:24:34 +0100675TEST_CASE("RefFillEndToEndTestInt32")
Teresa Charlin44088502020-07-27 11:27:19 +0100676{
677 FillEndToEnd<armnn::DataType::Signed32>(defaultBackends);
678}
679
Matthew Sloyan81beae32021-07-13 19:46:11 +0100680TEST_CASE("RefFullyConnectedEndToEndTestFloat32")
Sadik Armaganf0a6dec2021-03-25 07:46:55 +0000681{
682 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(defaultBackends);
683}
684
Matthew Sloyan81beae32021-07-13 19:46:11 +0100685TEST_CASE("RefFullyConnectedEndToEndTestNonConstantWeightsConstantBiasesFloat32")
686{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100687 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100688}
689
690TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsNonConstantBiasesFloat32")
691{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100692 FullyConnectedWithDynamicOrConstantInputsEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
Cathal Corbett521032f2021-10-07 11:46:40 +0100693}
694
695TEST_CASE("RefFullyConnectedEndToEndTestConstantWeightsTensorInfoNotSet")
696{
Cathal Corbettb8cc2b92021-10-08 14:43:11 +0100697 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, true, true, false);
698}
699
700TEST_CASE("RefFullyConnectedEndToEndTestWeightsNotConnectedExplicitCheck")
701{
702 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, false, true, true);
703}
704
705TEST_CASE("RefFullyConnectedEndToEndTestBiasNotConnectedExplicitCheck")
706{
707 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, true, true, false, true);
708}
709
710TEST_CASE("RefFullyConnectedEndToEndTestWeightsAndBiasNotConnected")
711{
712 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, false, true, false, false, true);
713}
714
715TEST_CASE("RefFullyConnectedEndToEndTestBiasDisabledConnectBias")
716{
717 FullyConnectedErrorChecking<armnn::DataType::Float32>(defaultBackends, true, false, false, true, true);
Matthew Sloyan81beae32021-07-13 19:46:11 +0100718}
719
Sadik Armagan1625efc2021-06-10 18:24:34 +0100720TEST_CASE("RefGatherFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000721{
722 GatherEndToEnd<armnn::DataType::Float32>(defaultBackends);
723}
724
Sadik Armagan1625efc2021-06-10 18:24:34 +0100725TEST_CASE("RefGatherUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000726{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000727 GatherEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000728}
729
Sadik Armagan1625efc2021-06-10 18:24:34 +0100730TEST_CASE("RefGatherInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100731{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000732 GatherEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100733}
734
Sadik Armagan1625efc2021-06-10 18:24:34 +0100735TEST_CASE("RefGatherMultiDimFloatTest")
narpra01db2b1602019-01-23 15:23:11 +0000736{
737 GatherMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
738}
739
Sadik Armagan1625efc2021-06-10 18:24:34 +0100740TEST_CASE("RefGatherMultiDimUint8Test")
narpra01db2b1602019-01-23 15:23:11 +0000741{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000742 GatherMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
narpra01db2b1602019-01-23 15:23:11 +0000743}
744
Sadik Armagan1625efc2021-06-10 18:24:34 +0100745TEST_CASE("RefGatherMultiDimInt16Test")
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100746{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000747 GatherMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
Ellen Norris-Thompsone0dbedf2019-06-24 09:23:38 +0100748}
749
Teresa Charlinb2d3ec52022-04-12 22:07:09 +0100750TEST_CASE("RefGatherNdFloatTest")
751{
752 GatherNdEndToEnd<armnn::DataType::Float32>(defaultBackends);
753}
754
755TEST_CASE("RefGatherNdUint8Test")
756{
757 GatherNdEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
758}
759
760TEST_CASE("RefGatherNdInt16Test")
761{
762 GatherNdEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
763}
764
765TEST_CASE("RefGatherNdMultiDimFloatTest")
766{
767 GatherNdMultiDimEndToEnd<armnn::DataType::Float32>(defaultBackends);
768}
769
770TEST_CASE("RefGatherNdMultiDimUint8Test")
771{
772 GatherNdMultiDimEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
773}
774
775TEST_CASE("RefGatherNdMultiDimInt16Test")
776{
777 GatherNdMultiDimEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
778}
779
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100780// DepthToSpace
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000781TEST_CASE("DepthToSpaceEndToEndNchwFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100782{
783 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
784}
785
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000786TEST_CASE("DepthToSpaceEndToEndNchwFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100787{
788 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
789}
790
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000791TEST_CASE("DepthToSpaceEndToEndNchwUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100792{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000793 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100794}
795
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000796TEST_CASE("DepthToSpaceEndToEndNchwInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100797{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000798 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100799}
800
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000801TEST_CASE("DepthToSpaceEndToEndNhwcFloat32")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100802{
803 DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
804}
805
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000806TEST_CASE("DepthToSpaceEndToEndNhwcFloat16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100807{
808 DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
809}
810
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000811TEST_CASE("DepthToSpaceEndToEndNhwcUint8")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100812{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000813 DepthToSpaceEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100814}
815
Teresa Charlinca5a23a2023-12-15 14:20:47 +0000816TEST_CASE("DepthToSpaceEndToEndNhwcInt16")
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100817{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000818 DepthToSpaceEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +0100819}
820
821// Dequantize
Sadik Armagan1625efc2021-06-10 18:24:34 +0100822TEST_CASE("DequantizeEndToEndSimpleTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100823{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000824 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100825}
826
Sadik Armagan1625efc2021-06-10 18:24:34 +0100827TEST_CASE("DequantizeEndToEndOffsetTest")
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100828{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000829 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat8c7324d2019-05-31 16:42:11 +0100830}
831
Sadik Armagan1625efc2021-06-10 18:24:34 +0100832TEST_CASE("DequantizeEndToEndSimpleInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100833{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000834 DequantizeEndToEndSimple<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100835}
836
Sadik Armagan1625efc2021-06-10 18:24:34 +0100837TEST_CASE("DequantizeEndToEndOffsetInt16Test")
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100838{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000839 DequantizeEndToEndOffset<armnn::DataType::QSymmS16>(defaultBackends);
Narumol Prangnawaratb6441e42019-06-04 11:22:00 +0100840}
841
Sadik Armagan1625efc2021-06-10 18:24:34 +0100842TEST_CASE("RefDetectionPostProcessRegularNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000843{
844 std::vector<float> boxEncodings({
845 0.0f, 0.0f, 0.0f, 0.0f,
846 0.0f, 1.0f, 0.0f, 0.0f,
847 0.0f, -1.0f, 0.0f, 0.0f,
848 0.0f, 0.0f, 0.0f, 0.0f,
849 0.0f, 1.0f, 0.0f, 0.0f,
850 0.0f, 0.0f, 0.0f, 0.0f
851 });
852 std::vector<float> scores({
853 0.0f, 0.9f, 0.8f,
854 0.0f, 0.75f, 0.72f,
855 0.0f, 0.6f, 0.5f,
856 0.0f, 0.93f, 0.95f,
857 0.0f, 0.5f, 0.4f,
858 0.0f, 0.3f, 0.2f
859 });
860 std::vector<float> anchors({
861 0.5f, 0.5f, 1.0f, 1.0f,
862 0.5f, 0.5f, 1.0f, 1.0f,
863 0.5f, 0.5f, 1.0f, 1.0f,
864 0.5f, 10.5f, 1.0f, 1.0f,
865 0.5f, 10.5f, 1.0f, 1.0f,
866 0.5f, 100.5f, 1.0f, 1.0f
867 });
868 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
869}
870
871inline void QuantizeData(uint8_t* quant, const float* dequant, const TensorInfo& info)
872{
873 for (size_t i = 0; i < info.GetNumElements(); i++)
874 {
875 quant[i] = armnn::Quantize<uint8_t>(dequant[i], info.GetQuantizationScale(), info.GetQuantizationOffset());
876 }
877}
878
Sadik Armagan1625efc2021-06-10 18:24:34 +0100879TEST_CASE("RefDetectionPostProcessRegularNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000880{
881 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
882 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
883 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
884
885 boxEncodingsInfo.SetQuantizationScale(1.0f);
886 boxEncodingsInfo.SetQuantizationOffset(1);
887 scoresInfo.SetQuantizationScale(0.01f);
888 scoresInfo.SetQuantizationOffset(0);
889 anchorsInfo.SetQuantizationScale(0.5f);
890 anchorsInfo.SetQuantizationOffset(0);
891
892 std::vector<float> boxEncodings({
893 0.0f, 0.0f, 0.0f, 0.0f,
894 0.0f, 1.0f, 0.0f, 0.0f,
895 0.0f, -1.0f, 0.0f, 0.0f,
896 0.0f, 0.0f, 0.0f, 0.0f,
897 0.0f, 1.0f, 0.0f, 0.0f,
898 0.0f, 0.0f, 0.0f, 0.0f
899 });
900 std::vector<float> scores({
901 0.0f, 0.9f, 0.8f,
902 0.0f, 0.75f, 0.72f,
903 0.0f, 0.6f, 0.5f,
904 0.0f, 0.93f, 0.95f,
905 0.0f, 0.5f, 0.4f,
906 0.0f, 0.3f, 0.2f
907 });
908 std::vector<float> anchors({
909 0.5f, 0.5f, 1.0f, 1.0f,
910 0.5f, 0.5f, 1.0f, 1.0f,
911 0.5f, 0.5f, 1.0f, 1.0f,
912 0.5f, 10.5f, 1.0f, 1.0f,
913 0.5f, 10.5f, 1.0f, 1.0f,
914 0.5f, 100.5f, 1.0f, 1.0f
915 });
916
917 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
918 std::vector<uint8_t> qScores(scores.size(), 0);
919 std::vector<uint8_t> qAnchors(anchors.size(), 0);
920 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
921 QuantizeData(qScores.data(), scores.data(), scoresInfo);
922 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +0000923 DetectionPostProcessRegularNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000924 qScores, qAnchors,
925 1.0f, 1, 0.01f, 0, 0.5f, 0);
926}
927
Sadik Armagan1625efc2021-06-10 18:24:34 +0100928TEST_CASE("RefDetectionPostProcessFastNmsTest")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000929{
930 std::vector<float> boxEncodings({
931 0.0f, 0.0f, 0.0f, 0.0f,
932 0.0f, 1.0f, 0.0f, 0.0f,
933 0.0f, -1.0f, 0.0f, 0.0f,
934 0.0f, 0.0f, 0.0f, 0.0f,
935 0.0f, 1.0f, 0.0f, 0.0f,
936 0.0f, 0.0f, 0.0f, 0.0f
937 });
938 std::vector<float> scores({
939 0.0f, 0.9f, 0.8f,
940 0.0f, 0.75f, 0.72f,
941 0.0f, 0.6f, 0.5f,
942 0.0f, 0.93f, 0.95f,
943 0.0f, 0.5f, 0.4f,
944 0.0f, 0.3f, 0.2f
945 });
946 std::vector<float> anchors({
947 0.5f, 0.5f, 1.0f, 1.0f,
948 0.5f, 0.5f, 1.0f, 1.0f,
949 0.5f, 0.5f, 1.0f, 1.0f,
950 0.5f, 10.5f, 1.0f, 1.0f,
951 0.5f, 10.5f, 1.0f, 1.0f,
952 0.5f, 100.5f, 1.0f, 1.0f
953 });
954 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::Float32>(defaultBackends, boxEncodings, scores, anchors);
955}
956
Sadik Armagan1625efc2021-06-10 18:24:34 +0100957TEST_CASE("RefDetectionPostProcessFastNmsUint8Test")
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +0000958{
959 armnn::TensorInfo boxEncodingsInfo({ 1, 6, 4 }, armnn::DataType::Float32);
960 armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32);
961 armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32);
962
963 boxEncodingsInfo.SetQuantizationScale(1.0f);
964 boxEncodingsInfo.SetQuantizationOffset(1);
965 scoresInfo.SetQuantizationScale(0.01f);
966 scoresInfo.SetQuantizationOffset(0);
967 anchorsInfo.SetQuantizationScale(0.5f);
968 anchorsInfo.SetQuantizationOffset(0);
969
970 std::vector<float> boxEncodings({
971 0.0f, 0.0f, 0.0f, 0.0f,
972 0.0f, 1.0f, 0.0f, 0.0f,
973 0.0f, -1.0f, 0.0f, 0.0f,
974 0.0f, 0.0f, 0.0f, 0.0f,
975 0.0f, 1.0f, 0.0f, 0.0f,
976 0.0f, 0.0f, 0.0f, 0.0f
977 });
978 std::vector<float> scores({
979 0.0f, 0.9f, 0.8f,
980 0.0f, 0.75f, 0.72f,
981 0.0f, 0.6f, 0.5f,
982 0.0f, 0.93f, 0.95f,
983 0.0f, 0.5f, 0.4f,
984 0.0f, 0.3f, 0.2f
985 });
986 std::vector<float> anchors({
987 0.5f, 0.5f, 1.0f, 1.0f,
988 0.5f, 0.5f, 1.0f, 1.0f,
989 0.5f, 0.5f, 1.0f, 1.0f,
990 0.5f, 10.5f, 1.0f, 1.0f,
991 0.5f, 10.5f, 1.0f, 1.0f,
992 0.5f, 100.5f, 1.0f, 1.0f
993 });
994
995 std::vector<uint8_t> qBoxEncodings(boxEncodings.size(), 0);
996 std::vector<uint8_t> qScores(scores.size(), 0);
997 std::vector<uint8_t> qAnchors(anchors.size(), 0);
998 QuantizeData(qBoxEncodings.data(), boxEncodings.data(), boxEncodingsInfo);
999 QuantizeData(qScores.data(), scores.data(), scoresInfo);
1000 QuantizeData(qAnchors.data(), anchors.data(), anchorsInfo);
Derek Lambertif90c56d2020-01-10 17:14:08 +00001001 DetectionPostProcessFastNmsEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, qBoxEncodings,
Narumol Prangnawarat6d302bf2019-02-04 11:46:26 +00001002 qScores, qAnchors,
1003 1.0f, 1, 0.01f, 0, 0.5f, 0);
1004}
1005
Teresa Charlina4b60902024-02-07 20:55:53 +00001006// Activations
1007// Linear
1008TEST_CASE("RefLinearEndToEndTestFloat32")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001009{
Teresa Charlina4b60902024-02-07 20:55:53 +00001010 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001011}
1012
Teresa Charlina4b60902024-02-07 20:55:53 +00001013TEST_CASE("RefLinearEndToEndTestFloat16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001014{
Teresa Charlina4b60902024-02-07 20:55:53 +00001015 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001016}
1017
Teresa Charlina4b60902024-02-07 20:55:53 +00001018TEST_CASE("RefLinearEndToEndTestQAsymmS8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001019{
Teresa Charlina4b60902024-02-07 20:55:53 +00001020 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001021}
1022
Teresa Charlina4b60902024-02-07 20:55:53 +00001023TEST_CASE("RefLinearEndToEndTestQAsymmU8")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001024{
Teresa Charlina4b60902024-02-07 20:55:53 +00001025 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::Linear);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001026}
1027
Teresa Charlina4b60902024-02-07 20:55:53 +00001028TEST_CASE("RefLinearEndToEndTestQSymmS16")
Jan Eilersa83af7b2020-03-18 15:58:11 +00001029{
Teresa Charlina4b60902024-02-07 20:55:53 +00001030 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::Linear);
1031}
1032
1033// Sigmoid
1034TEST_CASE("RefSigmoidEndToEndTestFloat32")
1035{
1036 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::Sigmoid);
1037}
1038
1039TEST_CASE("RefSigmoidEndToEndTestFloat16")
1040{
1041 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::Sigmoid);
1042}
1043
1044TEST_CASE("RefSigmoidEndToEndTestQAsymmS8")
1045{
1046 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::Sigmoid);
1047}
1048
1049TEST_CASE("RefSigmoidEndToEndTestQAsymmU8")
1050{
1051 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::Sigmoid, 0.12f, 15);
1052}
1053
1054TEST_CASE("RefSigmoidEndToEndTestQSymmS16")
1055{
1056 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::Sigmoid);
1057}
1058
1059// ReLu
1060TEST_CASE("RefReLuEndToEndTestFloat32")
1061{
1062 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::ReLu);
1063}
1064
1065TEST_CASE("RefReLuEndToEndTestFloat16")
1066{
1067 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::ReLu);
1068}
1069
1070TEST_CASE("RefReLuEndToEndTestQAsymmS8")
1071{
1072 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::ReLu);
1073}
1074
1075TEST_CASE("RefReLuEndToEndTestQAsymmU8")
1076{
1077 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::ReLu);
1078}
1079
1080TEST_CASE("RefReLuEndToEndTestQSymmS16")
1081{
1082 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::ReLu);
1083}
1084
1085// BoundedReLu
1086TEST_CASE("RefBoundedReLuEndToEndTestFloat32")
1087{
1088 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::BoundedReLu);
1089}
1090
1091TEST_CASE("RefBoundedReLuEndToEndTestFloat16")
1092{
1093 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::BoundedReLu);
1094}
1095
1096TEST_CASE("RefBoundedReLuEndToEndTestQAsymmS8")
1097{
1098 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::BoundedReLu);
1099}
1100
1101TEST_CASE("RefBoundedReLuEndToEndTestQAsymmU8")
1102{
1103 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::BoundedReLu);
1104}
1105
1106TEST_CASE("RefBoundedReLuEndToEndTestQSymmS16")
1107{
1108 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::BoundedReLu);
1109}
1110
1111// SoftReLu
1112TEST_CASE("RefSoftReLuEndToEndTestFloat32")
1113{
1114 ActivationEndToEndTest<armnn::DataType::Float32>(defaultBackends, ActivationFunction::SoftReLu);
1115}
1116
1117TEST_CASE("RefSoftReLuEndToEndTestFloat16")
1118{
1119 ActivationEndToEndTest<armnn::DataType::Float16>(defaultBackends, ActivationFunction::SoftReLu);
1120}
1121
1122TEST_CASE("RefSoftReLuEndToEndTestQAsymmS8")
1123{
1124 ActivationEndToEndTest<armnn::DataType::QAsymmS8>(defaultBackends, ActivationFunction::SoftReLu);
1125}
1126
1127TEST_CASE("RefSoftReLuEndToEndTestQAsymmU8")
1128{
1129 ActivationEndToEndTest<armnn::DataType::QAsymmU8>(defaultBackends, ActivationFunction::SoftReLu, 0.12f, 15);
1130}
1131
1132TEST_CASE("RefSoftReLuEndToEndTestQSymmS16")
1133{
1134 ActivationEndToEndTest<armnn::DataType::QSymmS16>(defaultBackends, ActivationFunction::SoftReLu);
Jan Eilersa83af7b2020-03-18 15:58:11 +00001135}
1136
Tracy Narine10403ec2023-11-28 11:55:08 +00001137// LeakyRelu
1138TEST_CASE("RefLeakyReluActivationFloat32")
1139{
Teresa Charlina4b60902024-02-07 20:55:53 +00001140 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::LeakyReLu, 1.f, 0, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001141}
1142
1143TEST_CASE("RefLeakyReluActivationFloat16")
1144{
Teresa Charlina4b60902024-02-07 20:55:53 +00001145 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::LeakyReLu, 0.3f, 5, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001146}
1147
1148TEST_CASE("RefLeakyReluActivationInt8")
1149{
Teresa Charlina4b60902024-02-07 20:55:53 +00001150 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::LeakyReLu, 0.6f, 7, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001151}
1152
1153TEST_CASE("RefLeakyReluActivationUInt8")
1154{
Teresa Charlina4b60902024-02-07 20:55:53 +00001155 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::LeakyReLu, 0.12f, 15, 0.01f);
Tracy Narine10403ec2023-11-28 11:55:08 +00001156}
1157
1158TEST_CASE("RefLeakyReluActivationInt16")
1159{
Teresa Charlina4b60902024-02-07 20:55:53 +00001160 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::LeakyReLu, 0.15f, 55, 0.01f);
1161}
1162
1163// Elu
1164TEST_CASE("RefEluEndToEndTestFloat32")
1165{
1166 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::Elu);
1167}
1168
1169TEST_CASE("RefEluEndToEndTestFloat16")
1170{
1171 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::Elu);
1172}
1173
1174TEST_CASE("RefEluEndToEndTestQAsymmS8")
1175{
1176 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::Elu);
1177}
1178
1179TEST_CASE("RefEluEndToEndTestQAsymmU8")
1180{
1181 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::Elu);
1182}
1183
1184TEST_CASE("RefEluEndToEndTestQSymmS16")
1185{
1186 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::Elu);
1187}
1188
1189// HardSwish
1190TEST_CASE("RefHardSwishEndToEndTestFloat32")
1191{
1192 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::HardSwish);
1193}
1194
1195TEST_CASE("RefHardSwishEndToEndTestFloat16")
1196{
1197 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::HardSwish);
1198}
1199
1200TEST_CASE("RefHardSwishEndToEndTestQAsymmS8")
1201{
1202 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::HardSwish);
1203}
1204
1205TEST_CASE("RefHardSwishEndToEndTestQAsymmU8")
1206{
1207 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::HardSwish);
1208}
1209
1210TEST_CASE("RefHardSwishEndToEndTestQSymmS16")
1211{
1212 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::HardSwish);
1213}
1214
1215// TanH
1216TEST_CASE("RefTanHEndToEndTestFloat32")
1217{
1218 ActivationEndToEndTest<DataType::Float32>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 2, 3);
1219}
1220
1221TEST_CASE("RefTanHEndToEndTestFloat16")
1222{
1223 ActivationEndToEndTest<DataType::Float16>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 2, 3);
1224}
1225
1226TEST_CASE("RefTanHEndToEndTestQAsymmS8")
1227{
1228 ActivationEndToEndTest<DataType::QAsymmS8>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
1229}
1230
1231TEST_CASE("RefTanHEndToEndTestQAsymmU8")
1232{
1233 ActivationEndToEndTest<DataType::QAsymmU8>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
1234}
1235
1236TEST_CASE("RefTanHEndToEndTestQSymmS16")
1237{
1238 ActivationEndToEndTest<DataType::QSymmS16>(defaultBackends, ActivationFunction::TanH, 1.f, 0, 3, 2);
Tracy Narine10403ec2023-11-28 11:55:08 +00001239}
1240
Sadik Armagan20bea002019-10-16 09:29:38 +01001241// LogSoftmax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001242TEST_CASE("RefLogSoftmaxEndToEndTest")
Sadik Armagan20bea002019-10-16 09:29:38 +01001243{
1244 LogSoftmaxEndToEndTest(defaultBackends);
1245}
1246
John Mcloughlin33753902024-02-07 15:00:57 +00001247// Softmax
1248TEST_CASE("RefSoftmaxEndToEndTestFloat32")
1249{
1250 SoftmaxEndToEnd<armnn::DataType::Float32>(defaultBackends);
1251}
1252
Teresa Charlina4b60902024-02-07 20:55:53 +00001253// Prelu
Sadik Armagan1625efc2021-06-10 18:24:34 +01001254TEST_CASE("RefPreluEndToEndTestFloat32")
Nikhil Raj747f5862019-07-19 15:15:23 +01001255{
1256 PreluEndToEndNegativeTest<armnn::DataType::Float32>(defaultBackends);
1257}
1258
Sadik Armagan1625efc2021-06-10 18:24:34 +01001259TEST_CASE("RefPreluEndToEndTestUint8")
Nikhil Raj747f5862019-07-19 15:15:23 +01001260{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001261 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001262}
1263
Sadik Armagan1625efc2021-06-10 18:24:34 +01001264TEST_CASE("RefPreluEndToEndTestQSymm16")
Nikhil Raj747f5862019-07-19 15:15:23 +01001265{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001266 PreluEndToEndPositiveTest<armnn::DataType::QSymmS16>(defaultBackends);
Nikhil Raj747f5862019-07-19 15:15:23 +01001267}
1268
Teresa Charlina52bca22024-02-01 17:36:48 +00001269// Pooling 2D
1270// Average Pool 2D
1271TEST_CASE("RefAvgPool2DEndtoEndTestFloat32")
1272{
1273 AvgPool2dEndToEnd<DataType::Float32>(defaultBackends);
1274}
1275
1276TEST_CASE("RefAvgPool2DEndtoEndTestFloat16")
1277{
1278 AvgPool2dEndToEndFloat16<DataType::Float16>(defaultBackends);
1279}
1280
1281TEST_CASE("RefAvgPool2DIgnoreValueEndtoEndTestFloat32")
1282{
1283 AvgPool2dEndToEnd<DataType::Float32>(defaultBackends, PaddingMethod::IgnoreValue);
1284}
1285
1286// Max Pool 2D
1287TEST_CASE("RefMaxPool2DEndtoEndTestFloat32")
1288{
1289 MaxPool2dEndToEnd<DataType::Float32>(defaultBackends);
1290}
1291
1292TEST_CASE("RefMaxPool2DEndtoEndTestFloat16")
1293{
1294 MaxPool2dEndToEndFloat16<DataType::Float16>(defaultBackends);
1295}
1296
1297TEST_CASE("RefMaxPool2DIgnoreValueEndtoEndTestFloat32")
1298{
1299 MaxPool2dEndToEnd<DataType::Float32>(defaultBackends, PaddingMethod::IgnoreValue);
1300}
1301
1302TEST_CASE("RefMaxPool2DTwoLayerEndtoEndTestFloat32")
1303{
1304 MaxPool2dTwoLayerEndToEnd<DataType::Float32>(defaultBackends);
1305}
1306
1307TEST_CASE("RefMaxPool2DThreeLayerEndtoEndTestFloat32")
1308{
1309 MaxPool2dThreeLayerEndToEnd<DataType::Float32>(defaultBackends);
1310}
1311
Teresa Charlinca5a23a2023-12-15 14:20:47 +00001312// Quantization
1313TEST_CASE("QuantizationEndToEndFloat32_U8Test")
1314{
1315 QuantizationEndToEndFloat32<armnn::DataType::QAsymmU8>(defaultBackends);
1316}
1317
1318TEST_CASE("QuantizationEndToEndFloat32_I8Test")
1319{
1320 QuantizationEndToEndFloat32<armnn::DataType::QAsymmS8>(defaultBackends);
1321}
1322
1323TEST_CASE("QuantizationEndToEndFloat32_S16Test")
1324{
1325 QuantizationEndToEndFloat32<armnn::DataType::QSymmS16>(defaultBackends);
1326}
1327
1328TEST_CASE("QuantizationEndToEndFloat16_U8Test")
1329{
1330 QuantizationEndToEndFloat16<armnn::DataType::QAsymmU8>(defaultBackends);
1331}
1332
1333TEST_CASE("QuantizationEndToEndFloat16_I8Test")
1334{
1335 QuantizationEndToEndFloat16<armnn::DataType::QAsymmS8>(defaultBackends);
1336}
1337
1338TEST_CASE("QuantizationEndToEndFloat16_S16Test")
1339{
1340 QuantizationEndToEndFloat16<armnn::DataType::QSymmS16>(defaultBackends);
1341}
1342
Teresa Charlin70dc5e92024-03-05 17:59:27 +00001343// ScatterNd
1344
1345TEST_CASE("RefScatterNd1DInputEndToEndFloat32Test")
1346{
1347 ScatterNd1DimUpdateWithInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1348}
1349
1350TEST_CASE("RefScatterNd1DInputEndToEndInt8Test")
1351{
1352 ScatterNd1DimUpdateWithInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1353}
1354
1355TEST_CASE("RefScatterNd1DNoInputEndToEndFloat32Test")
1356{
1357 ScatterNd1DimUpdateNoInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1358}
1359
1360TEST_CASE("RefScatterNd1DNoInputEndToEndInt8Test")
1361{
1362 ScatterNd1DimUpdateNoInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1363}
1364
1365TEST_CASE("RefScatterNd2DInputEndToEndFloat32Test")
1366{
1367 ScatterNd2DimUpdateWithInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1368}
1369
1370TEST_CASE("RefScatterNd2DInputEndToEndInt8Test")
1371{
1372 ScatterNd2DimUpdateWithInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1373}
1374
1375TEST_CASE("RefScatterNd2DNoInputEndToEndFloat32Test")
1376{
1377 ScatterNd2DimUpdateNoInputEndToEnd<armnn::DataType::Float32>(defaultBackends);
1378}
1379
1380TEST_CASE("RefScatterNd2DNoInputEndToEndInt8Test")
1381{
1382 ScatterNd2DimUpdateNoInputEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1383}
1384
1385
Teresa Charlinca5a23a2023-12-15 14:20:47 +00001386// SpaceToDepth
Sadik Armagan1625efc2021-06-10 18:24:34 +01001387TEST_CASE("RefSpaceToDepthNhwcEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001388{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001389 SpaceToDepthNhwcEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001390}
1391
Sadik Armagan1625efc2021-06-10 18:24:34 +01001392TEST_CASE("RefSpaceToDepthNchwEndToEndTest1")
Keith Davis9515c7e2019-06-21 09:33:59 +01001393{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001394 SpaceToDepthNchwEndToEndTest1(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001395}
1396
Sadik Armagan1625efc2021-06-10 18:24:34 +01001397TEST_CASE("RefSpaceToDepthNhwcEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001398{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001399 SpaceToDepthNhwcEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001400}
1401
Sadik Armagan1625efc2021-06-10 18:24:34 +01001402TEST_CASE("RefSpaceToDepthNchwEndToEndTest2")
Keith Davis9515c7e2019-06-21 09:33:59 +01001403{
Aron Virginas-Tarf97f6da2019-10-01 18:35:44 +01001404 SpaceToDepthNchwEndToEndTest2(defaultBackends);
Keith Davis9515c7e2019-06-21 09:33:59 +01001405}
1406
Kevin May1bea6be2023-12-12 11:18:46 +00001407// Split
1408TEST_CASE("RefSplit1dEndtoEndTestSigned16")
1409{
1410 Splitter1dEndToEnd<DataType::QSymmS16>(defaultBackends);
1411}
1412
Teresa Charlina52bca22024-02-01 17:36:48 +00001413TEST_CASE("RefSplit1dEndtoEndTestFloat16")
Kevin May1bea6be2023-12-12 11:18:46 +00001414{
1415 Splitter1dEndToEndFloat16<DataType::Float16>(defaultBackends);
1416}
1417
Sadik Armagan1625efc2021-06-10 18:24:34 +01001418TEST_CASE("RefSplitter1dEndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001419{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001420 Splitter1dEndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001421}
1422
Sadik Armagan1625efc2021-06-10 18:24:34 +01001423TEST_CASE("RefSplitter1dEndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001424{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001425 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001426}
1427
Sadik Armagan1625efc2021-06-10 18:24:34 +01001428TEST_CASE("RefSplitter2dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001429{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001430 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001431}
1432
Sadik Armagan1625efc2021-06-10 18:24:34 +01001433TEST_CASE("RefSplitter2dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001434{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001435 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001436}
1437
Sadik Armagan1625efc2021-06-10 18:24:34 +01001438TEST_CASE("RefSplitter2dDim0EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001439{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001440 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001441}
1442
Sadik Armagan1625efc2021-06-10 18:24:34 +01001443TEST_CASE("RefSplitter2dDim1EndToEndUint8Test")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001444{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001445 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001446}
1447
Kevin May1bea6be2023-12-12 11:18:46 +00001448TEST_CASE("RefSplit3dDim1EndtoEndTestSigned16")
1449{
1450 Splitter3dDim1EndToEnd<DataType::QSymmS16>(defaultBackends);
1451}
1452
1453TEST_CASE("RefSplit3dDim1EndtoEndTestFloat16")
1454{
1455 Splitter3dDim1EndToEndFloat16<DataType::Float16>(defaultBackends);
1456}
1457
Sadik Armagan1625efc2021-06-10 18:24:34 +01001458TEST_CASE("RefSplitter3dDim0EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001459{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001460 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001461}
1462
Sadik Armagan1625efc2021-06-10 18:24:34 +01001463TEST_CASE("RefSplitter3dDim1EndToEndTest")
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001464{
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001465 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1466}
1467
Sadik Armagan1625efc2021-06-10 18:24:34 +01001468TEST_CASE("RefSplitter3dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001469{
1470 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1471}
1472
Sadik Armagan1625efc2021-06-10 18:24:34 +01001473TEST_CASE("RefSplitter3dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001474{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001475 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001476}
1477
Sadik Armagan1625efc2021-06-10 18:24:34 +01001478TEST_CASE("RefSplitter3dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001479{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001480 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001481}
1482
Sadik Armagan1625efc2021-06-10 18:24:34 +01001483TEST_CASE("RefSplitter3dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001484{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001485 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001486}
1487
Sadik Armagan1625efc2021-06-10 18:24:34 +01001488TEST_CASE("RefSplitter4dDim0EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001489{
1490 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1491}
1492
Sadik Armagan1625efc2021-06-10 18:24:34 +01001493TEST_CASE("RefSplitter4dDim1EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001494{
1495 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1496}
1497
Sadik Armagan1625efc2021-06-10 18:24:34 +01001498TEST_CASE("RefSplitter4dDim2EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001499{
1500 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1501}
1502
Kevin May1bea6be2023-12-12 11:18:46 +00001503TEST_CASE("RefSplit4dDim2EndtoEndTestFloat16")
1504{
1505 Splitter4dDim2EndToEndFloat16<DataType::Float16>(defaultBackends);
1506}
1507
Sadik Armagan1625efc2021-06-10 18:24:34 +01001508TEST_CASE("RefSplitter4dDim3EndToEndTest")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001509{
1510 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1511}
1512
Sadik Armagan1625efc2021-06-10 18:24:34 +01001513TEST_CASE("RefSplitter4dDim0EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001514{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001515 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001516}
1517
Sadik Armagan1625efc2021-06-10 18:24:34 +01001518TEST_CASE("RefSplitter4dDim1EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001519{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001520 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001521}
1522
Sadik Armagan1625efc2021-06-10 18:24:34 +01001523TEST_CASE("RefSplitter4dDim2EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001524{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001525 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001526}
1527
Sadik Armagan1625efc2021-06-10 18:24:34 +01001528TEST_CASE("RefSplitter4dDim3EndToEndUint8Test")
Narumol Prangnawarat0f072ab2019-05-29 14:12:46 +01001529{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001530 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawarat0be43382019-05-27 11:29:59 +01001531}
1532
Cian McGriskin160edb32023-07-25 14:15:45 +01001533// Tile
1534TEST_CASE("RefTileEndToEndFloat32")
1535{
1536 TileEndToEnd<armnn::DataType::Float32>(defaultBackends);
1537}
1538
1539TEST_CASE("RefTileEndToEndFloat16")
1540{
1541 TileEndToEnd<armnn::DataType::Float16>(defaultBackends);
1542}
1543
1544TEST_CASE("RefTileEndToEndQAsymmS8")
1545{
1546 TileEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1547}
1548
1549TEST_CASE("RefTileEndToEndQAsymmU8")
1550{
1551 TileEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1552}
1553
1554TEST_CASE("RefTileEndToEndQSymmS8")
1555{
1556 TileEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1557}
1558
1559TEST_CASE("RefTileEndToEndQSymmS16")
1560{
1561 TileEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1562}
1563
1564TEST_CASE("RefTileEndToEndSigned32")
1565{
1566 TileEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1567}
1568
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001569// TransposeConvolution2d
Sadik Armagan1625efc2021-06-10 18:24:34 +01001570TEST_CASE("RefTransposeConvolution2dEndToEndFloatNchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001571{
1572 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1573 defaultBackends, armnn::DataLayout::NCHW);
1574}
1575
Sadik Armagan1625efc2021-06-10 18:24:34 +01001576TEST_CASE("RefTransposeConvolution2dEndToEndUint8NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001577{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001578 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001579 defaultBackends, armnn::DataLayout::NCHW);
1580}
1581
Sadik Armagan1625efc2021-06-10 18:24:34 +01001582TEST_CASE("RefTransposeConvolution2dEndToEndInt16NchwTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001583{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001584 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001585 defaultBackends, armnn::DataLayout::NCHW);
1586}
1587
Sadik Armagan1625efc2021-06-10 18:24:34 +01001588TEST_CASE("RefTransposeConvolution2dEndToEndFloatNhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001589{
1590 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1591 defaultBackends, armnn::DataLayout::NHWC);
1592}
1593
Sadik Armagan1625efc2021-06-10 18:24:34 +01001594TEST_CASE("RefTransposeConvolution2dEndToEndUint8NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001595{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001596 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001597 defaultBackends, armnn::DataLayout::NHWC);
1598}
1599
Sadik Armagan1625efc2021-06-10 18:24:34 +01001600TEST_CASE("RefTransposeConvolution2dEndToEndInt16NhwcTest")
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001601{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001602 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
Aron Virginas-Tar98180ef2019-06-26 15:02:47 +01001603 defaultBackends, armnn::DataLayout::NHWC);
1604}
1605
Teresa Charlin6bc85252022-12-06 20:43:06 +00001606// Transpose
1607TEST_CASE("RefTransposeEndToEndTest")
1608{
1609 TransposeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1610}
1611
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001612// Resize Bilinear
Sadik Armagan1625efc2021-06-10 18:24:34 +01001613TEST_CASE("RefResizeBilinearEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001614{
1615 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1616}
1617
Sadik Armagan1625efc2021-06-10 18:24:34 +01001618TEST_CASE("RefResizeBilinearEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001619{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001620 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001621}
1622
Teresa Charlince655882023-11-21 15:44:13 +00001623TEST_CASE("RefResizeBilinearEndToEndInt8NchwTest")
1624{
1625 ResizeBilinearEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NCHW);
1626}
1627
Sadik Armagan1625efc2021-06-10 18:24:34 +01001628TEST_CASE("RefResizeBilinearEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001629{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001630 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001631}
1632
Sadik Armagan1625efc2021-06-10 18:24:34 +01001633TEST_CASE("RefResizeBilinearEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001634{
1635 ResizeBilinearEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1636}
1637
Sadik Armagan1625efc2021-06-10 18:24:34 +01001638TEST_CASE("RefResizeBilinearEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001639{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001640 ResizeBilinearEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001641}
1642
Teresa Charlince655882023-11-21 15:44:13 +00001643TEST_CASE("RefResizeBilinearEndToEndInt8NhwcTest")
1644{
1645 ResizeBilinearEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NHWC);
1646}
1647
Sadik Armagan1625efc2021-06-10 18:24:34 +01001648TEST_CASE("RefResizeBilinearEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001649{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001650 ResizeBilinearEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001651}
1652
1653// Resize NearestNeighbor
Sadik Armagan1625efc2021-06-10 18:24:34 +01001654TEST_CASE("RefResizeNearestNeighborEndToEndFloatNchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001655{
1656 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
1657}
1658
Sadik Armagan1625efc2021-06-10 18:24:34 +01001659TEST_CASE("RefResizeNearestNeighborEndToEndUint8NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001660{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001661 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001662}
1663
Teresa Charlince655882023-11-21 15:44:13 +00001664TEST_CASE("RefResizeNearestNeighborEndToEndInt8NchwTest")
1665{
1666 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NCHW);
1667}
1668
Sadik Armagan1625efc2021-06-10 18:24:34 +01001669TEST_CASE("RefResizeNearestNeighborEndToEndInt16NchwTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001670{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001671 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NCHW);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001672}
1673
Sadik Armagan1625efc2021-06-10 18:24:34 +01001674TEST_CASE("RefResizeNearestNeighborEndToEndFloatNhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001675{
1676 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
1677}
1678
Sadik Armagan1625efc2021-06-10 18:24:34 +01001679TEST_CASE("RefResizeNearestNeighborEndToEndUint8NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001680{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001681 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001682}
1683
Teresa Charlince655882023-11-21 15:44:13 +00001684TEST_CASE("RefResizeNearestNeighborEndToEndInt8NhwcTest")
1685{
1686 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NHWC);
1687}
1688
Sadik Armagan1625efc2021-06-10 18:24:34 +01001689TEST_CASE("RefResizeNearestNeighborEndToEndInt16NhwcTest")
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001690{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001691 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS16>(defaultBackends, armnn::DataLayout::NHWC);
Aron Virginas-Tarfe15eff2019-07-01 16:12:58 +01001692}
1693
Teresa Charlin28658bc2023-12-19 15:49:31 +00001694TEST_CASE("RefResizeNearestNeighborEndToEndFloatAlignCornersNhwcTest")
1695{
1696 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC, true, false);
1697}
1698
Teresa Charlince655882023-11-21 15:44:13 +00001699TEST_CASE("RefResizeNearestNeighborEndToEndFloatHalfPixelNhwcTest")
1700{
1701 ResizeNearestNeighborEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC, false, true);
1702}
1703
Teresa Charlin28658bc2023-12-19 15:49:31 +00001704TEST_CASE("RefResizeNearestNeighborEndToEndInt8AlignCornersNhwcTest")
1705{
1706 ResizeNearestNeighborEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends, armnn::DataLayout::NHWC, true, false);
1707}
1708
Teresa Charlin0587dd02023-12-21 09:05:39 +00001709TEST_CASE("RefResizeNearestNeighborEndToEndInt8HalfPixelNhwcTest")
Teresa Charlince655882023-11-21 15:44:13 +00001710{
1711 ResizeNearestNeighborEndToEnd<armnn::DataType::QSymmS8>(defaultBackends, armnn::DataLayout::NHWC, false, true);
1712}
1713
Declan-ARM1bf56cd2023-07-20 17:32:57 +01001714// ReverseV2
1715TEST_CASE("RefReverseV2EndToEndFloat16Test")
1716{
1717 ReverseV2EndToEnd<armnn::DataType::Float16>(defaultBackends);
1718}
1719
1720TEST_CASE("RefReverseV2EndToEndFloat32Test")
1721{
1722 ReverseV2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1723}
1724
1725TEST_CASE("RefReverseV2EndToEndQAsymmS8Test")
1726{
1727 ReverseV2EndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1728}
1729
1730TEST_CASE("RefReverseV2EndToEndQAsymmU8Test")
1731{
1732 ReverseV2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1733}
1734
1735TEST_CASE("RefReverseV2EndToEndQSymmS8Test")
1736{
1737 ReverseV2EndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1738}
1739
1740TEST_CASE("RefReverseV2EndToEndQSymmS16Test")
1741{
1742 ReverseV2EndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1743}
1744
1745TEST_CASE("RefReverseV2EndToEndSigned32Test")
1746{
1747 ReverseV2EndToEnd<armnn::DataType::Signed32>(defaultBackends);
1748}
1749
Sadik Armagan062e0e92019-10-14 10:31:43 +01001750// InstanceNormalization
Sadik Armagan1625efc2021-06-10 18:24:34 +01001751TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001752{
1753 InstanceNormalizationNhwcEndToEndTest1(defaultBackends);
1754}
1755
Sadik Armagan1625efc2021-06-10 18:24:34 +01001756TEST_CASE("RefInstanceNormalizationNchwEndToEndTest1")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001757{
1758 InstanceNormalizationNchwEndToEndTest1(defaultBackends);
1759}
1760
Sadik Armagan1625efc2021-06-10 18:24:34 +01001761TEST_CASE("RefInstanceNormalizationNhwcEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001762{
1763 InstanceNormalizationNhwcEndToEndTest2(defaultBackends);
1764}
1765
Sadik Armagan1625efc2021-06-10 18:24:34 +01001766TEST_CASE("RefInstanceNormalizationNchwEndToEndTest2")
Sadik Armagan062e0e92019-10-14 10:31:43 +01001767{
1768 InstanceNormalizationNchwEndToEndTest2(defaultBackends);
1769}
1770
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001771// ArgMinMax
Sadik Armagan1625efc2021-06-10 18:24:34 +01001772TEST_CASE("RefArgMaxSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001773{
1774 ArgMaxEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1775}
1776
Sadik Armagan1625efc2021-06-10 18:24:34 +01001777TEST_CASE("RefArgMaxSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001778{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001779 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001780}
1781
Sadik Armagan1625efc2021-06-10 18:24:34 +01001782TEST_CASE("RefArgMinSimpleTest")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001783{
1784 ArgMinEndToEndSimple<armnn::DataType::Float32>(defaultBackends);
1785}
1786
Sadik Armagan1625efc2021-06-10 18:24:34 +01001787TEST_CASE("RefArgMinSimpleUint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001788{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001789 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001790}
1791
Sadik Armagan1625efc2021-06-10 18:24:34 +01001792TEST_CASE("RefArgMaxAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001793{
1794 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1795}
1796
Sadik Armagan1625efc2021-06-10 18:24:34 +01001797TEST_CASE("RefArgMaxAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001798{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001799 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001800}
1801
Sadik Armagan1625efc2021-06-10 18:24:34 +01001802TEST_CASE("RefArgMinAxis0Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001803{
1804 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(defaultBackends);
1805}
1806
Sadik Armagan1625efc2021-06-10 18:24:34 +01001807TEST_CASE("RefArgMinAxis0Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001808{
1809
Derek Lambertif90c56d2020-01-10 17:14:08 +00001810 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001811}
1812
Sadik Armagan1625efc2021-06-10 18:24:34 +01001813TEST_CASE("RefArgMaxAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001814{
1815 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1816}
1817
Sadik Armagan1625efc2021-06-10 18:24:34 +01001818TEST_CASE("RefArgMaxAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001819{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001820 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001821}
1822
Sadik Armagan1625efc2021-06-10 18:24:34 +01001823TEST_CASE("RefArgMinAxis1Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001824{
1825 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(defaultBackends);
1826}
1827
Sadik Armagan1625efc2021-06-10 18:24:34 +01001828TEST_CASE("RefArgMinAxis1Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001829{
1830
Derek Lambertif90c56d2020-01-10 17:14:08 +00001831 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001832}
1833
Sadik Armagan1625efc2021-06-10 18:24:34 +01001834TEST_CASE("RefArgMaxAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001835{
1836 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1837}
1838
Sadik Armagan1625efc2021-06-10 18:24:34 +01001839TEST_CASE("RefArgMaxAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001840{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001841 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001842}
1843
Sadik Armagan1625efc2021-06-10 18:24:34 +01001844TEST_CASE("RefArgMinAxis2Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001845{
1846 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(defaultBackends);
1847}
1848
Sadik Armagan1625efc2021-06-10 18:24:34 +01001849TEST_CASE("RefArgMinAxis2Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001850{
1851
Derek Lambertif90c56d2020-01-10 17:14:08 +00001852 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001853}
1854
Sadik Armagan1625efc2021-06-10 18:24:34 +01001855TEST_CASE("RefArgMaxAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001856{
1857 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1858}
1859
Sadik Armagan1625efc2021-06-10 18:24:34 +01001860TEST_CASE("RefArgMaxAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001861{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001862 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001863}
1864
Sadik Armagan1625efc2021-06-10 18:24:34 +01001865TEST_CASE("RefArgMinAxis3Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001866{
1867 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(defaultBackends);
1868}
1869
Sadik Armagan1625efc2021-06-10 18:24:34 +01001870TEST_CASE("RefArgMinAxis3Uint8Test")
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001871{
1872
Derek Lambertif90c56d2020-01-10 17:14:08 +00001873 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
Narumol Prangnawaratd1f57732019-10-31 14:24:02 +00001874}
1875
Sadik Armagan1625efc2021-06-10 18:24:34 +01001876TEST_CASE("RefQLstmEndToEndTest")
James Conroy0800bf52020-05-14 12:46:44 +01001877{
1878 QLstmEndToEnd(defaultBackends);
1879}
1880
Sadik Armagan1625efc2021-06-10 18:24:34 +01001881TEST_CASE("RefRankEndToEndTest")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001882{
1883 RankEndToEnd<armnn::DataType::Float32>(defaultBackends);
1884}
1885
Sadik Armagan1625efc2021-06-10 18:24:34 +01001886TEST_CASE("RefRankEndToEndTestFloat16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001887{
1888 RankEndToEnd<armnn::DataType::Float16>(defaultBackends);
1889}
1890
Sadik Armagan1625efc2021-06-10 18:24:34 +01001891TEST_CASE("RefRankEndToEndTestInt32")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001892{
1893 RankEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1894}
1895
Sadik Armagan1625efc2021-06-10 18:24:34 +01001896TEST_CASE("RefRankEndToEndTestQAsymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001897{
1898 RankEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1899}
1900
Sadik Armagan1625efc2021-06-10 18:24:34 +01001901TEST_CASE("RefRankEndToEndTestQSymmS16")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001902{
1903 RankEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1904}
1905
Sadik Armagan1625efc2021-06-10 18:24:34 +01001906TEST_CASE("RefRankEndToEndTestQSymmS8")
Teresa Charlin2e3f4d22020-07-29 14:29:20 +01001907{
1908 RankEndToEnd<armnn::DataType::QSymmS8>(defaultBackends);
1909}
1910
Teresa Charlinc17a35f2023-01-12 14:13:09 +00001911// Reduce
1912TEST_CASE("RefReduceEndToEndTest")
1913{
1914 ReduceEndToEnd<armnn::DataType::Float32>(defaultBackends);
1915}
1916
1917TEST_CASE("RefReduceEndToEndTestFloat16")
1918{
1919 ReduceEndToEnd<armnn::DataType::Float16>(defaultBackends);
1920}
1921
1922// Reshape
1923TEST_CASE("RefReshapeEndToEndTest")
1924{
1925 ReshapeEndToEnd<armnn::DataType::Float32>(defaultBackends);
1926}
1927
1928TEST_CASE("RefReshapeEndToEndTestFloat16")
1929{
1930 ReshapeEndToEndFloat16<armnn::DataType::Float16>(defaultBackends);
1931}
1932
Declan-ARM5e90b832024-02-07 13:07:31 +00001933TEST_CASE("RefReshapeEndToEndTestInt32")
1934{
1935 ReshapeEndToEnd<armnn::DataType::Signed32>(defaultBackends);
1936}
1937
1938TEST_CASE("RefReshapeEndToEndTestInt16")
1939{
1940 ReshapeEndToEnd<armnn::DataType::QSymmS16>(defaultBackends);
1941}
1942
1943TEST_CASE("RefReshapeEndToEndTestUInt8")
1944{
1945 ReshapeEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends);
1946}
1947
1948TEST_CASE("RefReshapeEndToEndTestInt8")
1949{
1950 ReshapeEndToEnd<armnn::DataType::QAsymmS8>(defaultBackends);
1951}
1952
1953// Force Import
David Monahan646bc8a2022-01-31 14:29:14 +00001954TEST_CASE("RefForceImportWithAlignedBuffersEndToEndTest")
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001955{
David Monahan646bc8a2022-01-31 14:29:14 +00001956 ForceImportWithAlignedBuffersEndToEndTest(defaultBackends);
1957}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001958
David Monahan646bc8a2022-01-31 14:29:14 +00001959TEST_CASE("RefForceImportWithMisalignedInputBuffersEndToEndTest")
1960{
1961 ForceImportWithMisalignedInputBuffersEndToEndTest(defaultBackends);
1962}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001963
David Monahan646bc8a2022-01-31 14:29:14 +00001964TEST_CASE("RefForceImportWithMisalignedOutputBuffersEndToEndTest")
1965{
1966 ForceImportWithMisalignedOutputBuffersEndToEndTest(defaultBackends);
1967}
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001968
David Monahan646bc8a2022-01-31 14:29:14 +00001969TEST_CASE("RefForceImportWithMisalignedInputAndOutputBuffersEndToEndTest")
1970{
1971 ForceImportWithMisalignedInputAndOutputBuffersEndToEndTest(defaultBackends);
Narumol Prangnawarate2af6f42022-01-28 17:59:18 +00001972}
1973
David Monahan16829712022-02-03 17:04:59 +00001974TEST_CASE("RefForceImportRepeatedInferencesEndToEndTest")
1975{
1976 ForceImportRepeatedInferencesEndToEndTest(defaultBackends);
1977}
1978
1979TEST_CASE("RefForceImportRepeatedInferencesInvertedEndToEndTest")
1980{
1981 ForceImportRepeatedInferencesInvertedEndToEndTest(defaultBackends);
1982}
1983
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001984#if !defined(__ANDROID__)
1985// Only run these tests on non Android platforms
Sadik Armagan1625efc2021-06-10 18:24:34 +01001986TEST_CASE("RefImportNonAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001987{
David Monahan4f1e8e42019-09-04 09:22:10 +01001988 ImportNonAlignedInputPointerTest(defaultBackends);
1989}
1990
Sadik Armagan1625efc2021-06-10 18:24:34 +01001991TEST_CASE("RefExportNonAlignedPointerTest")
David Monahan4f1e8e42019-09-04 09:22:10 +01001992{
Ferran Balaguer83239f92019-09-19 11:49:25 +01001993 ExportNonAlignedOutputPointerTest(defaultBackends);
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001994}
1995
Sadik Armagan1625efc2021-06-10 18:24:34 +01001996TEST_CASE("RefImportAlignedPointerTest")
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01001997{
1998 ImportAlignedPointerTest(defaultBackends);
1999}
2000
Sadik Armagan1625efc2021-06-10 18:24:34 +01002001TEST_CASE("RefImportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002002{
2003 ImportOnlyWorkload(defaultBackends);
2004}
2005
Sadik Armagan1625efc2021-06-10 18:24:34 +01002006TEST_CASE("RefExportOnlyWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002007{
2008 ExportOnlyWorkload(defaultBackends);
2009}
2010
Sadik Armagan1625efc2021-06-10 18:24:34 +01002011TEST_CASE("RefImportAndExportWorkload")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002012{
2013 ImportAndExportWorkload(defaultBackends);
2014}
2015
Sadik Armagan1625efc2021-06-10 18:24:34 +01002016TEST_CASE("RefExportOutputWithSeveralOutputSlotConnectionsTest")
Ferran Balaguer83239f92019-09-19 11:49:25 +01002017{
2018 ExportOutputWithSeveralOutputSlotConnectionsTest(defaultBackends);
2019}
2020
Ryan OShea980446b2023-06-08 16:23:28 +01002021// Slice
2022TEST_CASE("RefSliceEndtoEndTestFloat32")
2023{
2024 SliceEndToEnd<DataType::Float32>(defaultBackends);
2025}
2026
2027TEST_CASE("RefSliceEndtoEndTestInt32")
2028{
2029 SliceEndToEnd<DataType::Signed32>(defaultBackends);
2030}
2031
2032TEST_CASE("RefSliceEndtoEndTestFloat16")
2033{
2034 SliceEndToEndFloat16<DataType::Float16>(defaultBackends);
2035}
2036
Sadik Armagan1625efc2021-06-10 18:24:34 +01002037TEST_CASE("RefStridedSliceInvalidSliceEndToEndTest")
David Monahan0a99a142020-03-13 07:52:54 +00002038{
2039 StridedSliceInvalidSliceEndToEndTest(defaultBackends);
2040}
2041
Sadik Armagan1625efc2021-06-10 18:24:34 +01002042TEST_CASE("RefThreadSafeFP32StridedSlicedEndToEndTest")
Mike Kelly386ff1a2021-03-29 15:04:50 +01002043{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01002044 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 1);
Mike Kelly386ff1a2021-03-29 15:04:50 +01002045}
Finn Williamsb8181f72021-04-07 10:23:21 +01002046
Sadik Armagan1625efc2021-06-10 18:24:34 +01002047TEST_CASE("RefAsyncFP32StridedSlicedMultiThreadedEndToEndTest")
Finn Williamsb8181f72021-04-07 10:23:21 +01002048{
2049 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(defaultBackends);
2050}
Keith Davise813d672021-04-22 10:10:34 +01002051
Sadik Armagan1625efc2021-06-10 18:24:34 +01002052TEST_CASE("RefAsyncFP32StridedSlicedScheduledMultiThreadedEndToEndTest")
Keith Davise813d672021-04-22 10:10:34 +01002053{
Kevin Mayb4b3ac92021-05-21 16:42:21 +01002054 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(defaultBackends, 3);
Keith Davise813d672021-04-22 10:10:34 +01002055}
Mike Kelly3ec30772023-03-08 13:47:17 +00002056
2057TEST_CASE("RefAddEndToEndTestFloat32")
2058{
2059 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
2060}
2061TEST_CASE("RefAddEndToEndTestUint8")
2062{
2063 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Add);
2064}
Tracy Narinee7d27852024-01-26 09:13:19 +00002065TEST_CASE("RefAddEndToEndTestFloat32Simple3D")
2066{
2067 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Add);
2068}
2069TEST_CASE("RefAddEndToEndTestFloat16Simple3D")
2070{
2071 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(defaultBackends, BinaryOperation::Add);
2072}
Mike Kelly3ec30772023-03-08 13:47:17 +00002073TEST_CASE("RefDivEndToEndTestFloat32")
2074{
2075 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Div);
2076}
2077TEST_CASE("RefDivEndToEndTestUint8")
2078{
2079 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Div);
2080}
2081TEST_CASE("RefMulEndToEndTestFloat32")
2082{
2083 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Mul);
2084}
2085TEST_CASE("RefMulEndToEndTestUint8")
2086{
2087 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Mul);
2088}
2089TEST_CASE("RefSubEndToEndTestFloat32")
2090{
2091 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
2092}
2093TEST_CASE("RefSubEndToEndTestUint8")
2094{
2095 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Sub);
2096}
John Mcloughlin829e13e2024-01-31 11:00:27 +00002097TEST_CASE("RefSubEndToEndTestFloat32Simple3D")
2098{
2099 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Sub);
2100}
2101TEST_CASE("RefSubEndToEndTestFloat16Simple3D")
2102{
2103 ElementwiseBinarySimple3DEndToEnd<armnn::DataType::Float16>(defaultBackends, BinaryOperation::Sub);
2104}
Mike Kelly3ec30772023-03-08 13:47:17 +00002105TEST_CASE("RefMaximumEndToEndTestFloat32")
2106{
2107 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Maximum);
2108}
2109TEST_CASE("RefMaximumEndToEndTestUint8")
2110{
2111 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Maximum);
2112}
2113TEST_CASE("RefMinimumEndToEndTestFloat32")
2114{
2115 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Minimum);
2116}
2117TEST_CASE("RefMinimumEndToEndTestUint8")
2118{
2119 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Minimum);
2120}
John Mcloughlin0ec00872023-05-15 17:03:49 +01002121TEST_CASE("RefPowerEndToEndTestFloat32")
2122{
2123 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::Power);
2124}
2125TEST_CASE("RefPowerEndToEndTestUint8")
2126{
2127 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::Power);
2128}
2129TEST_CASE("RefSquaredDifferenceEndToEndTestFloat32")
2130{
2131 ElementwiseBinarySimpleEndToEnd<armnn::DataType::Float32>(defaultBackends, BinaryOperation::SqDiff);
2132}
2133TEST_CASE("RefSquaredDifferenceEndToEndTestUint8")
2134{
2135 ElementwiseBinarySimpleEndToEnd<armnn::DataType::QAsymmU8>(defaultBackends, BinaryOperation::SqDiff);
2136}
Mike Kelly4cc341c2023-07-07 15:43:06 +01002137
Ferran Balaguerdcaa6102019-08-21 13:28:38 +01002138#endif
2139
Mike Kelly4cc341c2023-07-07 15:43:06 +01002140// Backend Optimization Tests
2141TEST_CASE("RefReshapeRemovalSimpleCaseEndToEnd")
2142{
2143 ReshapeRemovalEndToEnd<armnn::DataType::Float32>(defaultBackends);
2144}
2145
2146TEST_CASE("RefReshapeRemovalNCHWFirstEndToEnd")
2147{
2148 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, true);
2149}
2150
2151TEST_CASE("RefReshapeRemovalNCHWSecondEndToEnd")
2152{
2153 ReshapeRemovalNCHWEndToEnd<armnn::DataType::Float32>(defaultBackends, true, false);
2154}
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002155
2156// BroadcastTo
2157TEST_CASE("RefBroadcastToEndToEndFloat32")
2158{
2159 BroadcastToEndToEnd<armnn::DataType::Float32>(defaultBackends);
2160}
2161
Idriss Chaouch564c13d2023-09-01 17:58:38 +01002162TEST_CASE("RefBroadcastToEndToEndWithMultiplicationFloat32")
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002163{
Idriss Chaouch564c13d2023-09-01 17:58:38 +01002164 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2165 BinaryOperation::Mul);
2166}
2167
2168TEST_CASE("RefBroadcastToEndToEndWithDivisionFloat32")
2169{
2170 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2171 BinaryOperation::Div);
2172}
2173
2174TEST_CASE("RefBroadcastToEndToEndWithAdditionFloat32")
2175{
2176 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2177 BinaryOperation::Add);
2178}
2179
2180TEST_CASE("RefBroadcastToEndToEndWithSubtractionFloat32")
2181{
2182 BroadcastToEndToEndElementWiseBinary<armnn::DataType::Float32>(defaultBackends,
2183 BinaryOperation::Sub);
Idriss Chaouch98e383e2023-08-28 14:28:31 +01002184}
Sadik Armagan1625efc2021-06-10 18:24:34 +01002185}