blob: 10edd85a5b96cc5819548fb3a4f8c72bd26f67a0 [file] [log] [blame]
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00001//
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00003// SPDX-License-Identifier: MIT
4//
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01005
6#include "StridedSliceTestImpl.hpp"
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +00007
Colm Donelanc42a9872022-02-02 16:35:09 +00008#include <armnnUtils/QuantizeHelper.hpp>
Aron Virginas-Tard4f0fea2019-04-09 14:08:06 +01009#include <ResolveType.hpp>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000010
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000011
Sadik Armagana097d2a2021-11-24 15:47:28 +000012#include <armnnTestUtils/TensorCopyUtils.hpp>
Colm Donelan0c479742021-12-10 12:43:54 +000013#include <armnnTestUtils/WorkloadTestUtils.hpp>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000014
Colm Donelanc42a9872022-02-02 16:35:09 +000015#include <armnnTestUtils/TensorHelpers.hpp>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000016
17namespace
18{
19
20template<typename T, std::size_t InDim, std::size_t OutDim>
21LayerTestResult<T, OutDim> StridedSliceTestImpl(
22 armnn::IWorkloadFactory& workloadFactory,
23 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Sadik Armagan5e719842020-08-28 12:17:33 +010024 const armnn::ITensorHandleFactory& tensorHandleFactory,
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000025 armnn::TensorInfo& inputTensorInfo,
26 armnn::TensorInfo& outputTensorInfo,
27 std::vector<float>& inputData,
28 std::vector<float>& outputExpectedData,
29 armnn::StridedSliceQueueDescriptor descriptor,
30 const float qScale = 1.0f,
31 const int32_t qOffset = 0)
32{
Jan Eilers8eb25602020-03-09 12:13:48 +000033 IgnoreUnused(memoryManager);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000034 if(armnn::IsQuantizedType<T>())
35 {
36 inputTensorInfo.SetQuantizationScale(qScale);
37 inputTensorInfo.SetQuantizationOffset(qOffset);
38
39 outputTensorInfo.SetQuantizationScale(qScale);
40 outputTensorInfo.SetQuantizationOffset(qOffset);
41 }
42
Sadik Armagan483c8112021-06-01 09:24:52 +010043 std::vector<T> input = armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset);
44 std::vector<T> expectedOutput = armnnUtils::QuantizedVector<T>(outputExpectedData, qScale, qOffset);
45 std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
Sadik Armagan5e719842020-08-28 12:17:33 +010046
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000047 std::unique_ptr<armnn::ITensorHandle> inputHandle =
Sadik Armagan5e719842020-08-28 12:17:33 +010048 tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000049
50 std::unique_ptr<armnn::ITensorHandle> outputHandle =
Sadik Armagan5e719842020-08-28 12:17:33 +010051 tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000052
53 armnn::WorkloadInfo info;
54 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
55 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
56
Teresa Charlin611c7fb2022-01-07 09:47:29 +000057 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::StridedSlice,
58 descriptor,
59 info);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000060
61 inputHandle->Allocate();
62 outputHandle->Allocate();
63
64 CopyDataToITensorHandle(inputHandle.get(), input.data());
65
66 ExecuteWorkload(*workload, memoryManager);
67
Sadik Armagan483c8112021-06-01 09:24:52 +010068 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000069
Sadik Armagan483c8112021-06-01 09:24:52 +010070 return LayerTestResult<T, OutDim>(actualOutput,
71 expectedOutput,
72 outputHandle->GetShape(),
73 outputTensorInfo.GetShape());
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000074}
75
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +000076template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010077LayerTestResult<T, 4> StridedSlice4dTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000078 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +010079 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
80 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000081{
82 armnn::TensorInfo inputTensorInfo;
83 armnn::TensorInfo outputTensorInfo;
84
85 unsigned int inputShape[] = {3, 2, 3, 1};
86 unsigned int outputShape[] = {1, 2, 3, 1};
87
88 armnn::StridedSliceQueueDescriptor desc;
89 desc.m_Parameters.m_Begin = {1, 0, 0, 0};
90 desc.m_Parameters.m_End = {2, 2, 3, 1};
91 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
92
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +000093 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
94 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000095
96 std::vector<float> input = std::vector<float>(
97 {
98 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
99
100 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
101
102 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
103 });
104
105 std::vector<float> outputExpected = std::vector<float>(
106 {
107 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f
108 });
109
110 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100111 workloadFactory, memoryManager, tensorHandleFactory,
112 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000113}
114
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000115template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100116LayerTestResult<T, 4> StridedSlice4dReverseTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000117 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100118 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
119 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000120{
121 armnn::TensorInfo inputTensorInfo;
122 armnn::TensorInfo outputTensorInfo;
123
124 unsigned int inputShape[] = {3, 2, 3, 1};
125 unsigned int outputShape[] = {1, 2, 3, 1};
126
127 armnn::StridedSliceQueueDescriptor desc;
128 desc.m_Parameters.m_Begin = {1, -1, 0, 0};
129 desc.m_Parameters.m_End = {2, -3, 3, 1};
130 desc.m_Parameters.m_Stride = {1, -1, 1, 1};
131
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000132 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
133 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000134
135 std::vector<float> input = std::vector<float>(
136 {
137 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
138
139 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
140
141 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
142 });
143
144 std::vector<float> outputExpected = std::vector<float>(
145 {
146 4.0f, 4.0f, 4.0f, 3.0f, 3.0f, 3.0f
147 });
148
149 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100150 workloadFactory, memoryManager, tensorHandleFactory,
151 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000152}
153
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000154template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000155LayerTestResult<T, 4> StridedSliceSimpleStrideTest(
156 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100157 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
158 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000159{
160 armnn::TensorInfo inputTensorInfo;
161 armnn::TensorInfo outputTensorInfo;
162
163 unsigned int inputShape[] = {3, 2, 3, 1};
164 unsigned int outputShape[] = {2, 1, 2, 1};
165
166 armnn::StridedSliceQueueDescriptor desc;
167 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
168 desc.m_Parameters.m_End = {3, 2, 3, 1};
169 desc.m_Parameters.m_Stride = {2, 2, 2, 1};
170
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000171 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
172 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000173
174 std::vector<float> input = std::vector<float>(
175 {
176 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
177
178 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
179
180 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
181 });
182
183 std::vector<float> outputExpected = std::vector<float>(
184 {
185 1.0f, 1.0f,
186
187 5.0f, 5.0f
188 });
189
190 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100191 workloadFactory, memoryManager, tensorHandleFactory,
192 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000193}
194
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000195template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000196LayerTestResult<T, 4> StridedSliceSimpleRangeMaskTest(
197 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100198 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
199 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000200{
201 armnn::TensorInfo inputTensorInfo;
202 armnn::TensorInfo outputTensorInfo;
203
204 unsigned int inputShape[] = {3, 2, 3, 1};
205 unsigned int outputShape[] = {3, 2, 3, 1};
206
207 armnn::StridedSliceQueueDescriptor desc;
208 desc.m_Parameters.m_Begin = {1, 1, 1, 1};
209 desc.m_Parameters.m_End = {1, 1, 1, 1};
210 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
211 desc.m_Parameters.m_BeginMask = (1 << 4) - 1;
212 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
213
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000214 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
215 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000216
217 std::vector<float> input = std::vector<float>(
218 {
219 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
220
221 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
222
223 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
224 });
225
226 std::vector<float> outputExpected = std::vector<float>(
227 {
228 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
229
230 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
231
232 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
233 });
234
235 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100236 workloadFactory, memoryManager, tensorHandleFactory,
237 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000238}
239
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000240template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000241LayerTestResult<T, 2> StridedSliceShrinkAxisMaskTest(
242 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100243 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
244 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000245{
246 armnn::TensorInfo inputTensorInfo;
247 armnn::TensorInfo outputTensorInfo;
248
249 unsigned int inputShape[] = {3, 2, 3, 1};
250 unsigned int outputShape[] = {3, 1};
251
252 armnn::StridedSliceQueueDescriptor desc;
253 desc.m_Parameters.m_Begin = {0, 0, 1, 0};
254 desc.m_Parameters.m_End = {1, 1, 1, 1};
255 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
256 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
257 desc.m_Parameters.m_ShrinkAxisMask = (1 << 1) | (1 << 2);
258
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000259 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
260 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000261
262 std::vector<float> input = std::vector<float>(
263 {
264 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
265
266 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
267
268 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
269 });
270
271 std::vector<float> outputExpected = std::vector<float>(
272 {
273 2.0f, 8.0f, 14.0f
274 });
275
276 return StridedSliceTestImpl<T, 4, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100277 workloadFactory, memoryManager, tensorHandleFactory,
278 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000279}
280
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000281template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Francis Murtaghec33a912019-11-05 14:26:23 +0000282LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition0Test(
283 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100284 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
285 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000286{
287 armnn::TensorInfo inputTensorInfo;
288 armnn::TensorInfo outputTensorInfo;
289
290 unsigned int inputShape[] = {3, 2, 3, 1};
291 unsigned int outputShape[] = {2, 3, 1};
292
293 armnn::StridedSliceQueueDescriptor desc;
294 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
295 desc.m_Parameters.m_End = {1, 1, 1, 1};
296 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
297 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
298 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0);
299
300 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
301 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
302
303 std::vector<float> input = std::vector<float>(
304 {
305 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
306
307 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
308
309 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
310 });
311
312 std::vector<float> outputExpected = std::vector<float>(
313 {
314 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
315 });
316
317 return StridedSliceTestImpl<T, 4, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100318 workloadFactory, memoryManager, tensorHandleFactory,
319 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000320}
321
322template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
323LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition1Test(
324 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100325 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
326 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000327{
328 armnn::TensorInfo inputTensorInfo;
329 armnn::TensorInfo outputTensorInfo;
330
331 unsigned int inputShape[] = {3, 2, 3, 1};
332 unsigned int outputShape[] = {3, 3, 1};
333
334 armnn::StridedSliceQueueDescriptor desc;
335 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
336 desc.m_Parameters.m_End = {1, 1, 1, 1};
337 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
338 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
339 desc.m_Parameters.m_ShrinkAxisMask = (1 << 1);
340
341 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
342 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
343
344 std::vector<float> input = std::vector<float>(
345 {
346 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
347
348 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
349
350 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
351 });
352
353 std::vector<float> outputExpected = std::vector<float>(
354 {
355 1.0f, 2.0f, 3.0f, 7.0f, 8.0f, 9.0f, 13.0f, 14.0f, 15.0f
356 });
357
358 return StridedSliceTestImpl<T, 4, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100359 workloadFactory, memoryManager, tensorHandleFactory,
360 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000361}
362
363template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
364LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition2Test(
365 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100366 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
367 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000368{
369 armnn::TensorInfo inputTensorInfo;
370 armnn::TensorInfo outputTensorInfo;
371
372 unsigned int inputShape[] = {3, 2, 3, 1};
373 unsigned int outputShape[] = {3, 2, 1};
374
375 armnn::StridedSliceQueueDescriptor desc;
376 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
377 desc.m_Parameters.m_End = {1, 1, 1, 1};
378 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
379 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
380 desc.m_Parameters.m_ShrinkAxisMask = (1 << 2);
381
382 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
383 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
384
385 std::vector<float> input = std::vector<float>(
386 {
387 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
388
389 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
390
391 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
392 });
393
394 std::vector<float> outputExpected = std::vector<float>(
395 {
396 1.0f, 4.0f, 7.0f, 10.0f, 13.0f, 16.0f
397 });
398
399 return StridedSliceTestImpl<T, 4, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100400 workloadFactory, memoryManager, tensorHandleFactory,
401 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000402}
403
404template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
405LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition3Test(
406 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100407 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
408 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000409{
410 armnn::TensorInfo inputTensorInfo;
411 armnn::TensorInfo outputTensorInfo;
412
413 unsigned int inputShape[] = {3, 2, 3, 1};
414 unsigned int outputShape[] = {3, 2, 3};
415
416 armnn::StridedSliceQueueDescriptor desc;
417 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
418 desc.m_Parameters.m_End = {1, 1, 1, 1};
419 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
420 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
421 desc.m_Parameters.m_ShrinkAxisMask = (1 << 3);
422
423 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
424 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
425
426 std::vector<float> input = std::vector<float>(
427 {
428 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
429
430 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
431
432 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
433 });
434
435 std::vector<float> outputExpected = std::vector<float>(
436 {
437 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
438
439 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
440
441 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
442 });
443
444 return StridedSliceTestImpl<T, 4, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100445 workloadFactory, memoryManager, tensorHandleFactory,
446 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000447}
448
449template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
450LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And1Test(
451 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100452 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
453 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000454{
455 armnn::TensorInfo inputTensorInfo;
456 armnn::TensorInfo outputTensorInfo;
457
458 unsigned int inputShape[] = {3, 2, 3, 1};
459 unsigned int outputShape[] = {3, 1};
460
461 armnn::StridedSliceQueueDescriptor desc;
462 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
463 desc.m_Parameters.m_End = {1, 1, 1, 1};
464 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
465 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
466 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1);
467
468 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
469 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
470
471 std::vector<float> input = std::vector<float>(
472 {
473 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
474
475 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
476
477 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
478 });
479
480 std::vector<float> outputExpected = std::vector<float>(
481 {
482 1.0f, 2.0f, 3.0f
483 });
484
485 return StridedSliceTestImpl<T, 4, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100486 workloadFactory, memoryManager, tensorHandleFactory,
487 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000488}
489
490template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
491LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Test(
492 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100493 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
494 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000495{
496 armnn::TensorInfo inputTensorInfo;
497 armnn::TensorInfo outputTensorInfo;
498
499 unsigned int inputShape[] = {2, 3, 1};
500 unsigned int outputShape[] = {3, 1};
501
502 armnn::StridedSliceQueueDescriptor desc;
503 desc.m_Parameters.m_Begin = {0, 0, 0};
504 desc.m_Parameters.m_End = {0, 0, 0};
505 desc.m_Parameters.m_Stride = {1, 1, 1};
506 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
507 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0);
508
509 inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
510 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
511
512 std::vector<float> input = std::vector<float>(
513 {
514 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
515 });
516
517 std::vector<float> outputExpected = std::vector<float>(
518 {
519 1.0f, 2.0f, 3.0f
520 });
521
522 return StridedSliceTestImpl<T, 3, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100523 workloadFactory, memoryManager, tensorHandleFactory,
524 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000525}
526
527void FillVector(std::vector<float>& inputArray, float start, float step)
528{
529 for (uint32_t i = 0; i < inputArray.size(); ++i)
530 {
531 inputArray[i] = start;
532 start += step;
533 }
534}
535
536template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
537LayerTestResult<T, 4> StridedSliceShrinkAxisMaskCTSTest(
538 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100539 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
540 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000541{
542 armnn::TensorInfo inputTensorInfo;
543 armnn::TensorInfo outputTensorInfo;
544
545 unsigned int inputShape[] = {1, 1, 8, 942};
546 unsigned int outputShape[] = {1, 1, 1, 279};
547
548 armnn::StridedSliceQueueDescriptor desc;
549 desc.m_Parameters.m_Begin = {0, 0, 1, 229};
550 desc.m_Parameters.m_End = {1, 1, 2, 787};
551 desc.m_Parameters.m_Stride = {2, 3, 3, 2};
552 desc.m_Parameters.m_BeginMask = 2;
553 desc.m_Parameters.m_EndMask = 0;
554 desc.m_Parameters.m_ShrinkAxisMask = 0;
555
556 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
557 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
558
559 // Array from 1 to 7535
560 std::vector<float> input(7536);
561 FillVector(input, 1.0f, 1.0f);
562
563 // Array from 1171 to 1727 in steps of 2
564 std::vector<float> outputExpected(279);
565 FillVector(outputExpected, 1171.0, 2.0f);
566
567 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100568 workloadFactory, memoryManager, tensorHandleFactory,
569 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000570}
571
572template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
573LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And2Test(
574 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100575 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
576 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000577{
578 armnn::TensorInfo inputTensorInfo;
579 armnn::TensorInfo outputTensorInfo;
580
581 unsigned int inputShape[] = {3, 2, 3, 1};
582 unsigned int outputShape[] = {2, 1};
583
584 armnn::StridedSliceQueueDescriptor desc;
585 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
586 desc.m_Parameters.m_End = {1, 1, 1, 1};
587 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
588 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
589 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 2);
590
591 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
592 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
593
594 std::vector<float> input = std::vector<float>(
595 {
596 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
597
598 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
599
600 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
601 });
602
603 std::vector<float> outputExpected = std::vector<float>(
604 {
605 1.0f, 4.0f
606 });
607
608 return StridedSliceTestImpl<T, 4, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100609 workloadFactory, memoryManager, tensorHandleFactory,
610 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000611}
612
613template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
614LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And3Test(
615 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100616 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
617 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000618{
619 armnn::TensorInfo inputTensorInfo;
620 armnn::TensorInfo outputTensorInfo;
621
622 unsigned int inputShape[] = {3, 2, 3, 1};
623 unsigned int outputShape[] = {2, 3};
624
625 armnn::StridedSliceQueueDescriptor desc;
626 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
627 desc.m_Parameters.m_End = {1, 1, 1, 1};
628 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
629 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
630 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 3);
631
632 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
633 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
634
635 std::vector<float> input = std::vector<float>(
636 {
637 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
638
639 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
640
641 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
642 });
643
644 std::vector<float> outputExpected = std::vector<float>(
645 {
646 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
647 });
648
649 return StridedSliceTestImpl<T, 4, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100650 workloadFactory, memoryManager, tensorHandleFactory,
651 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000652}
653
654template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
655LayerTestResult<T, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Test(
656 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100657 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
658 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000659{
660 armnn::TensorInfo inputTensorInfo;
661 armnn::TensorInfo outputTensorInfo;
662
663 unsigned int inputShape[] = {3, 2, 3, 1};
664 unsigned int outputShape[] = {3};
665
666 armnn::StridedSliceQueueDescriptor desc;
667 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
668 desc.m_Parameters.m_End = {1, 1, 1, 1};
669 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
670 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
671 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1) | (1 << 3);
672
673 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
674 outputTensorInfo = armnn::TensorInfo(1, outputShape, ArmnnType);
675
676 std::vector<float> input = std::vector<float>(
677 {
678 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
679
680 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
681
682 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
683 });
684
685 std::vector<float> outputExpected = std::vector<float>(
686 {
687 1.0f, 2.0f, 3.0f
688 });
689
690 return StridedSliceTestImpl<T, 4, 1>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100691 workloadFactory, memoryManager, tensorHandleFactory,
692 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000693}
694
695template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100696LayerTestResult<T, 3> StridedSlice3dTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000697 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100698 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
699 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000700{
701 armnn::TensorInfo inputTensorInfo;
702 armnn::TensorInfo outputTensorInfo;
703
704 unsigned int inputShape[] = {3, 3, 3};
705 unsigned int outputShape[] = {2, 2, 2};
706
707 armnn::StridedSliceQueueDescriptor desc;
708 desc.m_Parameters.m_Begin = {0, 0, 0};
709 desc.m_Parameters.m_End = {1, 1, 1};
710 desc.m_Parameters.m_Stride = {2, 2, 2};
711 desc.m_Parameters.m_EndMask = (1 << 3) - 1;
712
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000713 inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
714 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000715
716 std::vector<float> input = std::vector<float>(
717 {
718 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,
719
720 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
721
722 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f
723 });
724
725 std::vector<float> outputExpected = std::vector<float>(
726 {
727 1.0f, 3.0f, 7.0f, 9.0f,
728
729 19.0f, 21.0f, 25.0f, 27.0f
730 });
731
732 return StridedSliceTestImpl<T, 3, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100733 workloadFactory, memoryManager, tensorHandleFactory,
734 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000735}
736
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000737template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100738LayerTestResult<T, 3> StridedSlice3dReverseTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000739 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100740 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
741 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000742{
743 armnn::TensorInfo inputTensorInfo;
744 armnn::TensorInfo outputTensorInfo;
745
746 unsigned int inputShape[] = {3, 3, 3};
747 unsigned int outputShape[] = {2, 2, 2};
748
749 armnn::StridedSliceQueueDescriptor desc;
750 desc.m_Parameters.m_Begin = {-1, -1, -1};
751 desc.m_Parameters.m_End = {-4, -4, -4};
752 desc.m_Parameters.m_Stride = {-2, -2, -2};
753
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000754 inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
755 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000756
757 std::vector<float> input = std::vector<float>(
758 {
759 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,
760
761 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
762
763 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f
764 });
765
766 std::vector<float> outputExpected = std::vector<float>(
767 {
768 27.0f, 25.0f, 21.0f, 19.0f,
769
770 9.0f, 7.0f, 3.0f, 1.0f
771 });
772
773 return StridedSliceTestImpl<T, 3, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100774 workloadFactory, memoryManager, tensorHandleFactory,
775 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000776}
777
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000778template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100779LayerTestResult<T, 2> StridedSlice2dTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000780 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100781 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
782 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000783{
784 armnn::TensorInfo inputTensorInfo;
785 armnn::TensorInfo outputTensorInfo;
786
787 unsigned int inputShape[] = {3, 3};
788 unsigned int outputShape[] = {2, 2};
789
790 armnn::StridedSliceQueueDescriptor desc;
791 desc.m_Parameters.m_Begin = {0, 0};
792 desc.m_Parameters.m_End = {1, 1};
793 desc.m_Parameters.m_Stride = {2, 2};
794 desc.m_Parameters.m_EndMask = (1 << 2) - 1;
795
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000796 inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
797 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000798
799 std::vector<float> input = std::vector<float>(
800 {
801 1.0f, 2.0f, 3.0f,
802
803 4.0f, 5.0f, 6.0f,
804
805 7.0f, 8.0f, 9.0f
806 });
807
808 std::vector<float> outputExpected = std::vector<float>(
809 {
810 1.0f, 3.0f,
811
812 7.0f, 9.0f
813 });
814
815 return StridedSliceTestImpl<T, 2, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100816 workloadFactory, memoryManager, tensorHandleFactory,
817 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000818}
819
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000820template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100821LayerTestResult<T, 2> StridedSlice2dReverseTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000822 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100823 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
824 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000825{
826 armnn::TensorInfo inputTensorInfo;
827 armnn::TensorInfo outputTensorInfo;
828
829 unsigned int inputShape[] = {3, 3};
830 unsigned int outputShape[] = {2, 2};
831
832 armnn::StridedSliceQueueDescriptor desc;
833 desc.m_Parameters.m_Begin = {0, 0};
834 desc.m_Parameters.m_End = {1, 1};
835 desc.m_Parameters.m_Stride = {-2, -2};
836 desc.m_Parameters.m_BeginMask = (1 << 2) - 1;
837 desc.m_Parameters.m_EndMask = (1 << 2) - 1;
838
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000839 inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
840 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000841
842 std::vector<float> input = std::vector<float>(
843 {
844 1.0f, 2.0f, 3.0f,
845
846 4.0f, 5.0f, 6.0f,
847
848 7.0f, 8.0f, 9.0f
849 });
850
851 std::vector<float> outputExpected = std::vector<float>(
852 {
853 9.0f, 7.0f,
854
855 3.0f, 1.0f
856 });
857
858 return StridedSliceTestImpl<T, 2, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100859 workloadFactory, memoryManager, tensorHandleFactory,
860 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000861}
862
863} // anonymous namespace
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100864
865LayerTestResult<float, 4> StridedSlice4dFloat32Test(
866 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100867 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
868 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100869{
Sadik Armagan5e719842020-08-28 12:17:33 +0100870 return StridedSlice4dTest<armnn::DataType::Float32>(workloadFactory,
871 memoryManager,
872 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100873}
874
875LayerTestResult<float, 4> StridedSlice4dReverseFloat32Test(
876 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100877 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
878 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100879{
Sadik Armagan5e719842020-08-28 12:17:33 +0100880 return StridedSlice4dReverseTest<armnn::DataType::Float32>(workloadFactory,
881 memoryManager,
882 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100883}
884
885LayerTestResult<float, 4> StridedSliceSimpleStrideFloat32Test(
886 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100887 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
888 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100889{
Sadik Armagan5e719842020-08-28 12:17:33 +0100890 return StridedSliceSimpleStrideTest<armnn::DataType::Float32>(workloadFactory,
891 memoryManager,
892 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100893}
894
895LayerTestResult<float, 4> StridedSliceSimpleRangeMaskFloat32Test(
896 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100897 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
898 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100899{
Sadik Armagan5e719842020-08-28 12:17:33 +0100900 return StridedSliceSimpleRangeMaskTest<armnn::DataType::Float32>(workloadFactory,
901 memoryManager,
902 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100903}
904
905LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test(
906 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100907 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
908 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100909{
Sadik Armagan5e719842020-08-28 12:17:33 +0100910 return StridedSliceShrinkAxisMaskTest<armnn::DataType::Float32>(workloadFactory,
911 memoryManager,
912 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100913}
914
Francis Murtaghec33a912019-11-05 14:26:23 +0000915LayerTestResult<float, 4> StridedSliceShrinkAxisMaskCTSFloat32Test(
916 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100917 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
918 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000919{
Sadik Armagan5e719842020-08-28 12:17:33 +0100920 return StridedSliceShrinkAxisMaskCTSTest<armnn::DataType::Float32>(workloadFactory,
921 memoryManager,
922 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000923}
924
925LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Float32Test(
926 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100927 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
928 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000929{
Sadik Armagan5e719842020-08-28 12:17:33 +0100930 return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::Float32>(workloadFactory,
931 memoryManager,
932 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000933}
934
935LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition0Float32Test(
936 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100937 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
938 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000939{
Sadik Armagan5e719842020-08-28 12:17:33 +0100940 return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::Float32>(workloadFactory,
941 memoryManager,
942 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000943}
944
945LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition1Float32Test(
946 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100947 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
948 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000949{
Sadik Armagan5e719842020-08-28 12:17:33 +0100950 return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::Float32>(workloadFactory,
951 memoryManager,
952 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000953}
954
955LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition2Float32Test(
956 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100957 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
958 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000959{
Sadik Armagan5e719842020-08-28 12:17:33 +0100960 return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::Float32>(workloadFactory,
961 memoryManager,
962 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000963}
964
965LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition3Float32Test(
966 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100967 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
968 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000969{
Sadik Armagan5e719842020-08-28 12:17:33 +0100970 return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::Float32>(workloadFactory,
971 memoryManager,
972 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000973}
974
975LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And1Float32Test(
976 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100977 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
978 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000979{
Sadik Armagan5e719842020-08-28 12:17:33 +0100980 return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::Float32>(workloadFactory,
981 memoryManager,
982 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000983}
984
985LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And2Float32Test(
986 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100987 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
988 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000989{
Sadik Armagan5e719842020-08-28 12:17:33 +0100990 return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::Float32>(workloadFactory,
991 memoryManager,
992 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000993}
994
995LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And3Float32Test(
996 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100997 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
998 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000999{
Sadik Armagan5e719842020-08-28 12:17:33 +01001000 return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::Float32>(workloadFactory,
1001 memoryManager,
1002 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001003}
1004
1005LayerTestResult<float, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Float32Test(
1006 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001007 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1008 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001009{
Sadik Armagan5e719842020-08-28 12:17:33 +01001010 return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::Float32>(workloadFactory,
1011 memoryManager,
1012 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001013}
1014
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001015LayerTestResult<float, 3> StridedSlice3dFloat32Test(
1016 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001017 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1018 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001019{
Sadik Armagan5e719842020-08-28 12:17:33 +01001020 return StridedSlice3dTest<armnn::DataType::Float32>(workloadFactory,
1021 memoryManager,
1022 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001023}
1024
1025LayerTestResult<float, 3> StridedSlice3dReverseFloat32Test(
1026 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001027 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1028 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001029{
Sadik Armagan5e719842020-08-28 12:17:33 +01001030 return StridedSlice3dReverseTest<armnn::DataType::Float32>(workloadFactory,
1031 memoryManager,
1032 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001033}
1034
1035LayerTestResult<float, 2> StridedSlice2dFloat32Test(
1036 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001037 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1038 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001039{
Sadik Armagan5e719842020-08-28 12:17:33 +01001040 return StridedSlice2dTest<armnn::DataType::Float32>(workloadFactory,
1041 memoryManager,
1042 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001043}
1044
1045LayerTestResult<float, 2> StridedSlice2dReverseFloat32Test(
1046 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001047 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1048 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001049{
Sadik Armagan5e719842020-08-28 12:17:33 +01001050 return StridedSlice2dReverseTest<armnn::DataType::Float32>(workloadFactory,
1051 memoryManager,
1052 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001053}
1054
1055LayerTestResult<uint8_t, 4> StridedSlice4dUint8Test(
1056 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001057 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1058 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001059{
Sadik Armagan5e719842020-08-28 12:17:33 +01001060 return StridedSlice4dTest<armnn::DataType::QAsymmU8>(workloadFactory,
1061 memoryManager,
1062 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001063}
1064
1065LayerTestResult<uint8_t, 4> StridedSlice4dReverseUint8Test(
1066 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001067 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1068 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001069{
Sadik Armagan5e719842020-08-28 12:17:33 +01001070 return StridedSlice4dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory,
1071 memoryManager,
1072 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001073}
1074
1075LayerTestResult<uint8_t, 4> StridedSliceSimpleStrideUint8Test(
1076 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001077 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1078 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001079{
Sadik Armagan5e719842020-08-28 12:17:33 +01001080 return StridedSliceSimpleStrideTest<armnn::DataType::QAsymmU8>(workloadFactory,
1081 memoryManager,
1082 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001083}
1084
1085LayerTestResult<uint8_t, 4> StridedSliceSimpleRangeMaskUint8Test(
1086 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001087 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1088 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001089{
Sadik Armagan5e719842020-08-28 12:17:33 +01001090 return StridedSliceSimpleRangeMaskTest<armnn::DataType::QAsymmU8>(workloadFactory,
1091 memoryManager,
1092 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001093}
1094
1095LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test(
1096 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001097 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1098 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001099{
Sadik Armagan5e719842020-08-28 12:17:33 +01001100 return StridedSliceShrinkAxisMaskTest<armnn::DataType::QAsymmU8>(workloadFactory,
1101 memoryManager,
1102 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001103}
1104
Francis Murtaghec33a912019-11-05 14:26:23 +00001105LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Uint8Test(
1106 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001107 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1108 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001109{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001110 return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001111 memoryManager,
1112 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001113}
1114
1115LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition0Uint8Test(
1116 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001117 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1118 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001119{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001120 return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001121 memoryManager,
1122 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001123}
1124
1125LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition1Uint8Test(
1126 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001127 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1128 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001129{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001130 return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001131 memoryManager,
1132 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001133}
1134
1135LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition2Uint8Test(
1136 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001137 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1138 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001139{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001140 return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001141 memoryManager,
1142 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001143}
1144
1145LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition3Uint8Test(
1146 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001147 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1148 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001149{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001150 return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001151 memoryManager,
1152 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001153}
1154
1155LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And1Uint8Test(
1156 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001157 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1158 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001159{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001160 return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001161 memoryManager,
1162 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001163}
1164
1165LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And2Uint8Test(
1166 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001167 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1168 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001169{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001170 return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001171 memoryManager,
1172 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001173}
1174
1175LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And3Uint8Test(
1176 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001177 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1178 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001179{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001180 return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001181 memoryManager,
1182 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001183}
1184
1185LayerTestResult<uint8_t, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Uint8Test(
1186 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001187 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1188 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001189{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001190 return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001191 memoryManager,
1192 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001193}
1194
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001195LayerTestResult<uint8_t, 3> StridedSlice3dUint8Test(
1196 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001197 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1198 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001199{
Sadik Armagan5e719842020-08-28 12:17:33 +01001200 return StridedSlice3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001201}
1202
1203LayerTestResult<uint8_t, 3> StridedSlice3dReverseUint8Test(
1204 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001205 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1206 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001207{
Sadik Armagan5e719842020-08-28 12:17:33 +01001208 return StridedSlice3dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001209}
1210
1211LayerTestResult<uint8_t, 2> StridedSlice2dUint8Test(
1212 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001213 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1214 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001215{
Sadik Armagan5e719842020-08-28 12:17:33 +01001216 return StridedSlice2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001217}
1218
1219LayerTestResult<uint8_t, 2> StridedSlice2dReverseUint8Test(
1220 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001221 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1222 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001223{
Sadik Armagan5e719842020-08-28 12:17:33 +01001224 return StridedSlice2dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001225}
1226
1227LayerTestResult<int16_t, 4> StridedSlice4dInt16Test(
1228 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001229 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1230 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001231{
Sadik Armagan5e719842020-08-28 12:17:33 +01001232 return StridedSlice4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001233}
1234
1235LayerTestResult<int16_t, 4> StridedSlice4dReverseInt16Test(
1236 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001237 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1238 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001239{
Sadik Armagan5e719842020-08-28 12:17:33 +01001240 return StridedSlice4dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001241}
1242
1243LayerTestResult<int16_t, 4> StridedSliceSimpleStrideInt16Test(
1244 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001245 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1246 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001247{
Sadik Armagan5e719842020-08-28 12:17:33 +01001248 return StridedSliceSimpleStrideTest<armnn::DataType::QSymmS16>(workloadFactory,
1249 memoryManager,
1250 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001251}
1252
1253LayerTestResult<int16_t, 4> StridedSliceSimpleRangeMaskInt16Test(
1254 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001255 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1256 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001257{
Sadik Armagan5e719842020-08-28 12:17:33 +01001258 return StridedSliceSimpleRangeMaskTest<armnn::DataType::QSymmS16>(workloadFactory,
1259 memoryManager,
1260 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001261}
1262
1263LayerTestResult<int16_t, 2> StridedSliceShrinkAxisMaskInt16Test(
1264 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001265 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1266 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001267{
Sadik Armagan5e719842020-08-28 12:17:33 +01001268 return StridedSliceShrinkAxisMaskTest<armnn::DataType::QSymmS16>(workloadFactory,
1269 memoryManager,
1270 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001271}
1272
1273LayerTestResult<int16_t, 3> StridedSlice3dInt16Test(
1274 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001275 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1276 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001277{
Sadik Armagan5e719842020-08-28 12:17:33 +01001278 return StridedSlice3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001279}
1280
1281LayerTestResult<int16_t, 3> StridedSlice3dReverseInt16Test(
1282 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001283 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1284 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001285{
Sadik Armagan5e719842020-08-28 12:17:33 +01001286 return StridedSlice3dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001287}
1288
1289LayerTestResult<int16_t, 2> StridedSlice2dInt16Test(
1290 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001291 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1292 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001293{
Sadik Armagan5e719842020-08-28 12:17:33 +01001294 return StridedSlice2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001295}
1296
1297LayerTestResult<int16_t, 2> StridedSlice2dReverseInt16Test(
1298 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001299 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1300 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001301{
Sadik Armagan5e719842020-08-28 12:17:33 +01001302 return StridedSlice2dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001303}