blob: 4e40692c8c4e5814a9081ba549c1e2e40c262704 [file] [log] [blame]
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001//
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "SpaceToBatchNdTestImpl.hpp"
7
Colm Donelanc42a9872022-02-02 16:35:09 +00008#include <armnnUtils/QuantizeHelper.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01009#include <ResolveType.hpp>
10
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010011
Matteo Martincighe011d202019-11-28 11:35:47 +000012#include <armnnUtils/Permute.hpp>
13
Sadik Armagana097d2a2021-11-24 15:47:28 +000014#include <armnnTestUtils/TensorCopyUtils.hpp>
Colm Donelan0c479742021-12-10 12:43:54 +000015#include <armnnTestUtils/WorkloadTestUtils.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010016
Colm Donelanc42a9872022-02-02 16:35:09 +000017#include <armnnTestUtils/TensorHelpers.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010018
19namespace
20{
21
22template<typename T>
23LayerTestResult<T, 4> SpaceToBatchNdTestImpl(
24 armnn::IWorkloadFactory& workloadFactory,
25 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +010026 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010027 armnn::TensorInfo& inputTensorInfo,
28 armnn::TensorInfo& outputTensorInfo,
29 std::vector<float>& inputData,
30 std::vector<float>& outputExpectedData,
31 armnn::SpaceToBatchNdQueueDescriptor descriptor,
32 const float qScale = 1.0f,
33 const int32_t qOffset = 0)
34{
Jan Eilers8eb25602020-03-09 12:13:48 +000035 IgnoreUnused(memoryManager);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010036 const armnn::PermutationVector NCHWToNHWC = {0, 3, 1, 2};
37 if (descriptor.m_Parameters.m_DataLayout == armnn::DataLayout::NHWC)
38 {
39 inputTensorInfo = armnnUtils::Permuted(inputTensorInfo, NCHWToNHWC);
40 outputTensorInfo = armnnUtils::Permuted(outputTensorInfo, NCHWToNHWC);
41
42 std::vector<float> inputTmp(inputData.size());
43 armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC,
44 inputData.data(), inputTmp.data(), sizeof(float));
45 inputData = inputTmp;
46
47 std::vector<float> outputTmp(outputExpectedData.size());
48 armnnUtils::Permute(outputTensorInfo.GetShape(), NCHWToNHWC,
49 outputExpectedData.data(), outputTmp.data(), sizeof(float));
50 outputExpectedData = outputTmp;
51 }
52
53 if(armnn::IsQuantizedType<T>())
54 {
55 inputTensorInfo.SetQuantizationScale(qScale);
56 inputTensorInfo.SetQuantizationOffset(qOffset);
57 outputTensorInfo.SetQuantizationScale(qScale);
58 outputTensorInfo.SetQuantizationOffset(qOffset);
59 }
60
Sadik Armagan483c8112021-06-01 09:24:52 +010061 std::vector<T> input = armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset);
62 std::vector<T> expectedOutput = armnnUtils::QuantizedVector<T>(outputExpectedData, qScale, qOffset);
63 std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010064
Sadik Armagan89de3b42020-08-28 10:38:53 +010065 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
66 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010067
68 armnn::WorkloadInfo info;
69 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
70 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
71
Teresa Charlin611c7fb2022-01-07 09:47:29 +000072 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::SpaceToBatchNd,
73 descriptor,
74 info);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010075
76 inputHandle->Allocate();
77 outputHandle->Allocate();
78
Sadik Armagan483c8112021-06-01 09:24:52 +010079 CopyDataToITensorHandle(inputHandle.get(), input.data());
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010080
81 workload->Execute();
82
Sadik Armagan483c8112021-06-01 09:24:52 +010083 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010084
Sadik Armagan483c8112021-06-01 09:24:52 +010085 return LayerTestResult<T, 4>(actualOutput,
86 expectedOutput,
87 outputHandle->GetShape(),
88 outputTensorInfo.GetShape());
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010089}
90
Teresa Charlinf77cab52023-06-01 16:15:13 +010091template<typename T>
92LayerTestResult<T, 3> SpaceToBatchNd3DTestImpl(
93 armnn::IWorkloadFactory& workloadFactory,
94 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
95 const armnn::ITensorHandleFactory& tensorHandleFactory,
96 armnn::TensorInfo& inputTensorInfo,
97 armnn::TensorInfo& outputTensorInfo,
98 std::vector<float>& inputData,
99 std::vector<float>& outputExpectedData,
100 armnn::SpaceToBatchNdQueueDescriptor descriptor,
101 const float qScale = 1.0f,
102 const int32_t qOffset = 0)
103{
104 IgnoreUnused(memoryManager);
105
106 if(armnn::IsQuantizedType<T>())
107 {
108 inputTensorInfo.SetQuantizationScale(qScale);
109 inputTensorInfo.SetQuantizationOffset(qOffset);
110 outputTensorInfo.SetQuantizationScale(qScale);
111 outputTensorInfo.SetQuantizationOffset(qOffset);
112 }
113
114 std::vector<T> input = armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset);
115 std::vector<T> expectedOutput = armnnUtils::QuantizedVector<T>(outputExpectedData, qScale, qOffset);
116 std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
117
118 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
119 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
120
121 armnn::WorkloadInfo info;
122 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
123 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
124
125 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::SpaceToBatchNd,
126 descriptor,
127 info);
128
129 inputHandle->Allocate();
130 outputHandle->Allocate();
131
132 CopyDataToITensorHandle(inputHandle.get(), input.data());
133
134 workload->Execute();
135
136 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
137
138 return LayerTestResult<T, 3>(actualOutput,
139 expectedOutput,
140 outputHandle->GetShape(),
141 outputTensorInfo.GetShape());
142}
143
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100144template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
145LayerTestResult<T, 4> SpaceToBatchNdSimpleTest(
146 armnn::IWorkloadFactory& workloadFactory,
147 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100148 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100149 armnn::DataLayout dataLayout = armnn::DataLayout::NCHW)
150{
151 armnn::TensorInfo inputTensorInfo;
152 armnn::TensorInfo outputTensorInfo;
153
154 unsigned int inputShape[] = {1, 1, 2, 2};
155 unsigned int outputShape[] = {4, 1, 1, 1};
156
157 armnn::SpaceToBatchNdQueueDescriptor desc;
158 desc.m_Parameters.m_DataLayout = dataLayout;
159 desc.m_Parameters.m_BlockShape = {2, 2};
160 desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
161
162 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
163 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
164
165 std::vector<float> input = std::vector<float>(
166 {
167 1.0f, 2.0f, 3.0f, 4.0f
168 });
169
170 std::vector<float> outputExpected = std::vector<float>(
171 {
172 1.0f, 2.0f, 3.0f, 4.0f
173 });
174
175 return SpaceToBatchNdTestImpl<T>(
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100176 workloadFactory, memoryManager, tensorHandleFactory,
177 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100178}
179
180template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
181LayerTestResult<T, 4> SpaceToBatchNdMultiChannelsTest(
182 armnn::IWorkloadFactory& workloadFactory,
183 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100184 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100185 armnn::DataLayout dataLayout = armnn::DataLayout::NCHW)
186{
187 armnn::TensorInfo inputTensorInfo;
188 armnn::TensorInfo outputTensorInfo;
189
190 unsigned int inputShape[] = {1, 3, 2, 2};
191 unsigned int outputShape[] = {4, 3, 1, 1};
192
193 armnn::SpaceToBatchNdQueueDescriptor desc;
194 desc.m_Parameters.m_DataLayout = dataLayout;
195 desc.m_Parameters.m_BlockShape = {2, 2};
196 desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
197
198 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
199 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
200
201 std::vector<float> input = std::vector<float>(
202 {
203 1.0f, 4.0f, 7.0f, 10.0f,
204 2.0f, 5.0, 8.0, 11.0f,
205 3.0f, 6.0f, 9.0f, 12.0f
206 });
207
208 std::vector<float> outputExpected = std::vector<float>(
209 {
210 1.0f, 2.0f, 3.0f,
211 4.0f, 5.0f, 6.0f,
212 7.0f, 8.0f, 9.0f,
213 10.0f, 11.0f, 12.0f
214 });
215
216 return SpaceToBatchNdTestImpl<T>(
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100217 workloadFactory, memoryManager, tensorHandleFactory,
218 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100219}
220
221template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
222LayerTestResult<T, 4> SpaceToBatchNdMultiBlockTest(
223 armnn::IWorkloadFactory& workloadFactory,
224 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100225 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100226 armnn::DataLayout dataLayout = armnn::DataLayout::NCHW)
227{
228 armnn::TensorInfo inputTensorInfo;
229 armnn::TensorInfo outputTensorInfo;
230
231 unsigned int inputShape[] = {1, 1, 4, 4};
232 unsigned int outputShape[] = {4, 1, 2, 2};
233
234 armnn::SpaceToBatchNdQueueDescriptor desc;
235 desc.m_Parameters.m_DataLayout = dataLayout;
236 desc.m_Parameters.m_BlockShape = {2, 2};
237 desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
238
239 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
240 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
241
242 std::vector<float> input = std::vector<float>(
243 {
244 1.0f, 2.0f, 3.0f, 4.0f,
245 5.0f, 6.0f, 7.0f, 8.0f,
246 9.0f, 10.0f, 11.0f, 12.0f,
247 13.0f, 14.0f, 15.0f, 16.0f
248 });
249
250 std::vector<float> outputExpected = std::vector<float>(
251 {
252 1.0f, 3.0f, 9.0f, 11.0f,
253 2.0f, 4.0f, 10.0f, 12.0f,
254 5.0f, 7.0f, 13.0f, 15.0f,
255 6.0f, 8.0f, 14.0f, 16.0f
256 });
257
258 return SpaceToBatchNdTestImpl<T>(
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100259 workloadFactory, memoryManager, tensorHandleFactory,
260 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100261}
262
263template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
264LayerTestResult<T, 4> SpaceToBatchNdPaddingTest(
265 armnn::IWorkloadFactory& workloadFactory,
266 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100267 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100268 armnn::DataLayout dataLayout = armnn::DataLayout::NCHW)
269{
270 armnn::TensorInfo inputTensorInfo;
271 armnn::TensorInfo outputTensorInfo;
272
273 unsigned int inputShape[] = {2, 1, 2, 4};
274 unsigned int outputShape[] = {8, 1, 1, 3};
275
276 armnn::SpaceToBatchNdQueueDescriptor desc;
277 desc.m_Parameters.m_DataLayout = dataLayout;
278 desc.m_Parameters.m_BlockShape = {2, 2};
279 desc.m_Parameters.m_PadList = {{0, 0}, {2, 0}};
280
281 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
282 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
283
284 std::vector<float> input = std::vector<float>(
285 {
286 1.0f, 2.0f, 3.0f, 4.0f,
287 5.0f, 6.0f, 7.0f, 8.0f,
288 9.0f, 10.0f, 11.0f, 12.0f,
289 13.0f, 14.0f, 15.0f, 16.0f
290 });
291
292 std::vector<float> outputExpected = std::vector<float>(
293 {
294 0.0f, 1.0f, 3.0f,
295 0.0f, 9.0f, 11.0f,
296 0.0f, 2.0f, 4.0f,
297 0.0f, 10.0f, 12.0f,
298 0.0f, 5.0f, 7.0f,
299 0.0f, 13.0f, 15.0f,
300 0.0f, 6.0f, 8.0f,
301 0.0f, 14.0f, 16.0f
302 });
303
304 return SpaceToBatchNdTestImpl<T>(
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100305 workloadFactory, memoryManager, tensorHandleFactory,
306 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100307}
308
309template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Teresa Charlinf77cab52023-06-01 16:15:13 +0100310LayerTestResult<T, 3> SpaceToBatchNdSimple3DTest(
311 armnn::IWorkloadFactory& workloadFactory,
312 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
313 const armnn::ITensorHandleFactory& tensorHandleFactory,
314 armnn::DataLayout dataLayout = armnn::DataLayout::NHWC)
315{
316 armnn::TensorInfo inputTensorInfo;
317 armnn::TensorInfo outputTensorInfo;
318
319 unsigned int inputShape[] = {1, 8, 1};
320 unsigned int outputShape[] = {4, 2, 1};
321
322 armnn::SpaceToBatchNdQueueDescriptor desc;
323 desc.m_Parameters.m_DataLayout = dataLayout;
324 desc.m_Parameters.m_BlockShape = {4};
325 desc.m_Parameters.m_PadList = {{0, 0}};
326
327 inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
328 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
329
330 std::vector<float> input = std::vector<float>(
331 {
332 1.0f, 3.0f, 5.0f, 7.0f,
333 2.0f, 4.0f, 6.0f, 8.0f
334 });
335
336 std::vector<float> outputExpected = std::vector<float>(
337 {
338 1.0f, 2.0f, 3.0f, 4.0f,
339 5.0f, 6.0f, 7.0f, 8.0f
340 });
341
342 return SpaceToBatchNd3DTestImpl<T>(
343 workloadFactory, memoryManager, tensorHandleFactory,
344 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
345}
346
347template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100348LayerTestResult<T, 4> SpaceToBatchNdSimpleNhwcTest(
349 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100350 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100351 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100352{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100353 return SpaceToBatchNdSimpleTest<ArmnnType>(workloadFactory,
354 memoryManager,
355 tensorHandleFactory,
356 armnn::DataLayout::NHWC);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100357}
358
359template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
360LayerTestResult<T, 4> SpaceToBatchNdMultiChannelsNhwcTest(
361 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100362 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100363 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100364{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100365 return SpaceToBatchNdMultiChannelsTest<ArmnnType>(workloadFactory,
366 memoryManager,
367 tensorHandleFactory,
368 armnn::DataLayout::NHWC);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100369}
370
371template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
372LayerTestResult<T, 4> SpaceToBatchNdMultiBlockNhwcTest(
373 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100374 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100375 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100376{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100377 return SpaceToBatchNdMultiBlockTest<ArmnnType>(workloadFactory,
378 memoryManager,
379 tensorHandleFactory,
380 armnn::DataLayout::NHWC);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100381}
382
383template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
384LayerTestResult<T, 4> SpaceToBatchNdPaddingNhwcTest(
385 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100386 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100387 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100388{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100389 return SpaceToBatchNdPaddingTest<ArmnnType>(workloadFactory,
390 memoryManager,
391 tensorHandleFactory,
392 armnn::DataLayout::NHWC);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100393}
394
395} // anonymous namespace
396
397LayerTestResult<float, 4> SpaceToBatchNdSimpleFloat32Test(
398 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100399 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100400 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100401{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100402 return SpaceToBatchNdSimpleTest<armnn::DataType::Float32>(workloadFactory,
403 memoryManager,
404 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100405}
406
407LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsFloat32Test(
408 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100409 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100410 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100411{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100412 return SpaceToBatchNdMultiChannelsTest<armnn::DataType::Float32>(workloadFactory,
413 memoryManager,
414 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100415}
416
417LayerTestResult<float, 4> SpaceToBatchNdMultiBlockFloat32Test(
418 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100419 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100420 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100421{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100422 return SpaceToBatchNdMultiBlockTest<armnn::DataType::Float32>(workloadFactory,
423 memoryManager,
424 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100425}
426
427LayerTestResult<float, 4> SpaceToBatchNdPaddingFloat32Test(
428 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100429 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100430 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100431{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100432 return SpaceToBatchNdPaddingTest<armnn::DataType::Float32>(workloadFactory,
433 memoryManager,
434 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100435}
436
Matthew Jackson9bff1442019-09-12 09:08:23 +0100437LayerTestResult<armnn::Half, 4> SpaceToBatchNdSimpleFloat16Test(
438 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100439 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100440 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jackson9bff1442019-09-12 09:08:23 +0100441{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100442 return SpaceToBatchNdSimpleTest<armnn::DataType::Float16>(workloadFactory,
443 memoryManager,
444 tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100445}
446
447LayerTestResult<armnn::Half, 4> SpaceToBatchNdMultiChannelsFloat16Test(
448 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100449 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100450 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jackson9bff1442019-09-12 09:08:23 +0100451{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100452 return SpaceToBatchNdMultiChannelsTest<armnn::DataType::Float16>(workloadFactory,
453 memoryManager,
454 tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100455}
456
457LayerTestResult<armnn::Half, 4> SpaceToBatchNdMultiBlockFloat16Test(
458 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100459 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100460 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jackson9bff1442019-09-12 09:08:23 +0100461{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100462 return SpaceToBatchNdMultiBlockTest<armnn::DataType::Float16>(workloadFactory,
463 memoryManager,
464 tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100465}
466
467LayerTestResult<armnn::Half, 4> SpaceToBatchNdPaddingFloat16Test(
468 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100469 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100470 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jackson9bff1442019-09-12 09:08:23 +0100471{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100472 return SpaceToBatchNdPaddingTest<armnn::DataType::Float16>(workloadFactory,
473 memoryManager,
474 tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100475}
476
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100477LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleUint8Test(
478 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100479 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100480 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100481{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100482 return SpaceToBatchNdSimpleTest<armnn::DataType::QAsymmU8>(workloadFactory,
483 memoryManager,
484 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100485}
486
487LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsUint8Test(
488 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100489 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100490 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100491{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100492 return SpaceToBatchNdMultiChannelsTest<armnn::DataType::QAsymmU8>(workloadFactory,
493 memoryManager,
494 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100495}
496
497LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockUint8Test(
498 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100499 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100500 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100501{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100502 return SpaceToBatchNdMultiBlockTest<armnn::DataType::QAsymmU8>(workloadFactory,
503 memoryManager,
504 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100505}
506
507LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingUint8Test(
508 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100509 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100510 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100511{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100512 return SpaceToBatchNdPaddingTest<armnn::DataType::QAsymmU8>(workloadFactory,
513 memoryManager,
514 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100515}
516
517LayerTestResult<float, 4> SpaceToBatchNdSimpleNhwcFloat32Test(
518 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100519 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100520 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100521{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100522 return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::Float32>(workloadFactory,
523 memoryManager,
524 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100525}
526
527LayerTestResult<float, 4> SpaceToBatchNdMultiChannelsNhwcFloat32Test(
528 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100529 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100530 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100531{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100532 return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::Float32>(workloadFactory,
533 memoryManager,
534 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100535}
536
537LayerTestResult<float, 4> SpaceToBatchNdMultiBlockNhwcFloat32Test(
538 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100539 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100540 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100541{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100542 return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::Float32>(workloadFactory,
543 memoryManager,
544 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100545}
546
547LayerTestResult<float, 4> SpaceToBatchNdPaddingNhwcFloat32Test(
548 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100549 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100550 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100551{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100552 return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::Float32>(workloadFactory,
553 memoryManager,
554 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100555}
556
Teresa Charlinf77cab52023-06-01 16:15:13 +0100557LayerTestResult<float, 3> SpaceToBatchNdSimpleNhwc3DFloat32Test(
558 armnn::IWorkloadFactory& workloadFactory,
559 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
560 const armnn::ITensorHandleFactory& tensorHandleFactory)
561{
562 return SpaceToBatchNdSimple3DTest<armnn::DataType::Float32>(workloadFactory,
563 memoryManager,
564 tensorHandleFactory);
565}
566
Matthew Jackson9bff1442019-09-12 09:08:23 +0100567LayerTestResult<armnn::Half, 4> SpaceToBatchNdSimpleNhwcFloat16Test(
568 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100569 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100570 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jackson9bff1442019-09-12 09:08:23 +0100571{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100572 return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::Float16>(workloadFactory,
573 memoryManager,
574 tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100575}
576
577LayerTestResult<armnn::Half, 4> SpaceToBatchNdMultiChannelsNhwcFloat16Test(
578 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100579 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100580 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jackson9bff1442019-09-12 09:08:23 +0100581{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100582 return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::Float16>(workloadFactory,
583 memoryManager,
584 tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100585}
586
587LayerTestResult<armnn::Half, 4> SpaceToBatchNdMultiBlockNhwcFloat16Test(
588 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100589 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100590 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jackson9bff1442019-09-12 09:08:23 +0100591{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100592 return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::Float16>(workloadFactory,
593 memoryManager,
594 tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100595}
596
597LayerTestResult<armnn::Half, 4> SpaceToBatchNdPaddingNhwcFloat16Test(
598 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100599 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100600 const armnn::ITensorHandleFactory& tensorHandleFactory)
Matthew Jackson9bff1442019-09-12 09:08:23 +0100601{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100602 return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::Float16>(workloadFactory,
603 memoryManager,
604 tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100605}
606
Teresa Charlinf77cab52023-06-01 16:15:13 +0100607LayerTestResult<armnn::Half, 3> SpaceToBatchNdSimpleNhwc3DFloat16Test(
608 armnn::IWorkloadFactory& workloadFactory,
609 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
610 const armnn::ITensorHandleFactory& tensorHandleFactory)
611{
612 return SpaceToBatchNdSimple3DTest<armnn::DataType::Float16>(workloadFactory,
613 memoryManager,
614 tensorHandleFactory);
615}
616
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100617LayerTestResult<uint8_t, 4> SpaceToBatchNdSimpleNhwcUint8Test(
618 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100620 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100621{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100622 return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
623 memoryManager,
624 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100625}
626
627LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiChannelsNhwcUint8Test(
628 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100629 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100630 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100631{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100632 return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
633 memoryManager,
634 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100635}
636
637LayerTestResult<uint8_t, 4> SpaceToBatchNdMultiBlockNhwcUint8Test(
638 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100639 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100640 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100641{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100642 return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
643 memoryManager,
644 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100645}
646
647LayerTestResult<uint8_t, 4> SpaceToBatchNdPaddingNhwcUint8Test(
648 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100649 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100650 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100651{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100652 return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
653 memoryManager,
654 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100655}
656
Teresa Charlinf77cab52023-06-01 16:15:13 +0100657LayerTestResult<uint8_t, 3> SpaceToBatchNdSimpleNhwc3DUint8Test(
658 armnn::IWorkloadFactory& workloadFactory,
659 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
660 const armnn::ITensorHandleFactory& tensorHandleFactory)
661{
662 return SpaceToBatchNdSimple3DTest<armnn::DataType::QAsymmU8>(workloadFactory,
663 memoryManager,
664 tensorHandleFactory);
665}
666
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100667LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleUint16Test(
668 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100669 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100670 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100671{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100672 return SpaceToBatchNdSimpleTest<armnn::DataType::QSymmS16>(workloadFactory,
673 memoryManager,
674 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100675}
676
677LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsUint16Test(
678 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100679 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100680 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100681{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100682 return SpaceToBatchNdMultiChannelsTest<armnn::DataType::QSymmS16>(workloadFactory,
683 memoryManager,
684 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100685}
686
687LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockUint16Test(
688 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100689 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100690 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100691{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100692 return SpaceToBatchNdMultiBlockTest<armnn::DataType::QSymmS16>(workloadFactory,
693 memoryManager,
694 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100695}
696
697LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingUint16Test(
698 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100699 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100700 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100701{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100702 return SpaceToBatchNdPaddingTest<armnn::DataType::QSymmS16>(workloadFactory,
703 memoryManager,
704 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100705}
706
707LayerTestResult<int16_t, 4> SpaceToBatchNdSimpleNhwcUint16Test(
708 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100709 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100710 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100711{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100712 return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
713 memoryManager,
714 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100715}
716
717LayerTestResult<int16_t, 4> SpaceToBatchNdMultiChannelsNhwcUint16Test(
718 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100719 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100720 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100721{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100722 return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
723 memoryManager,
724 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100725}
726
727LayerTestResult<int16_t, 4> SpaceToBatchNdMultiBlockNhwcUint16Test(
728 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100729 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100730 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100731{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100732 return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
733 memoryManager,
734 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100735}
736
737LayerTestResult<int16_t, 4> SpaceToBatchNdPaddingNhwcUint16Test(
738 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100739 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan89de3b42020-08-28 10:38:53 +0100740 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100741{
Sadik Armagan714fe5b2020-08-27 12:46:36 +0100742 return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
743 memoryManager,
744 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100745}