blob: 72ba681c7dc08f85dc2f02ac22af616efc88b0fb [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
Aron Virginas-Tar48623a02019-10-22 10:00:28 +01008#include <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>
13#include <WorkloadTestUtils.hpp>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000014
Sadik Armagana097d2a2021-11-24 15:47:28 +000015#include <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
57 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateStridedSlice(descriptor, info);
58
59 inputHandle->Allocate();
60 outputHandle->Allocate();
61
62 CopyDataToITensorHandle(inputHandle.get(), input.data());
63
64 ExecuteWorkload(*workload, memoryManager);
65
Sadik Armagan483c8112021-06-01 09:24:52 +010066 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000067
Sadik Armagan483c8112021-06-01 09:24:52 +010068 return LayerTestResult<T, OutDim>(actualOutput,
69 expectedOutput,
70 outputHandle->GetShape(),
71 outputTensorInfo.GetShape());
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000072}
73
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +000074template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010075LayerTestResult<T, 4> StridedSlice4dTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000076 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +010077 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
78 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000079{
80 armnn::TensorInfo inputTensorInfo;
81 armnn::TensorInfo outputTensorInfo;
82
83 unsigned int inputShape[] = {3, 2, 3, 1};
84 unsigned int outputShape[] = {1, 2, 3, 1};
85
86 armnn::StridedSliceQueueDescriptor desc;
87 desc.m_Parameters.m_Begin = {1, 0, 0, 0};
88 desc.m_Parameters.m_End = {2, 2, 3, 1};
89 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
90
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +000091 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
92 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +000093
94 std::vector<float> input = std::vector<float>(
95 {
96 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
97
98 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
99
100 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
101 });
102
103 std::vector<float> outputExpected = std::vector<float>(
104 {
105 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f
106 });
107
108 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100109 workloadFactory, memoryManager, tensorHandleFactory,
110 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000111}
112
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000113template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100114LayerTestResult<T, 4> StridedSlice4dReverseTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000115 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100116 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
117 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000118{
119 armnn::TensorInfo inputTensorInfo;
120 armnn::TensorInfo outputTensorInfo;
121
122 unsigned int inputShape[] = {3, 2, 3, 1};
123 unsigned int outputShape[] = {1, 2, 3, 1};
124
125 armnn::StridedSliceQueueDescriptor desc;
126 desc.m_Parameters.m_Begin = {1, -1, 0, 0};
127 desc.m_Parameters.m_End = {2, -3, 3, 1};
128 desc.m_Parameters.m_Stride = {1, -1, 1, 1};
129
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000130 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
131 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000132
133 std::vector<float> input = std::vector<float>(
134 {
135 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
136
137 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
138
139 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
140 });
141
142 std::vector<float> outputExpected = std::vector<float>(
143 {
144 4.0f, 4.0f, 4.0f, 3.0f, 3.0f, 3.0f
145 });
146
147 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100148 workloadFactory, memoryManager, tensorHandleFactory,
149 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000150}
151
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000152template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000153LayerTestResult<T, 4> StridedSliceSimpleStrideTest(
154 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
156 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000157{
158 armnn::TensorInfo inputTensorInfo;
159 armnn::TensorInfo outputTensorInfo;
160
161 unsigned int inputShape[] = {3, 2, 3, 1};
162 unsigned int outputShape[] = {2, 1, 2, 1};
163
164 armnn::StridedSliceQueueDescriptor desc;
165 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
166 desc.m_Parameters.m_End = {3, 2, 3, 1};
167 desc.m_Parameters.m_Stride = {2, 2, 2, 1};
168
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000169 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
170 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000171
172 std::vector<float> input = std::vector<float>(
173 {
174 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
175
176 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
177
178 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
179 });
180
181 std::vector<float> outputExpected = std::vector<float>(
182 {
183 1.0f, 1.0f,
184
185 5.0f, 5.0f
186 });
187
188 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100189 workloadFactory, memoryManager, tensorHandleFactory,
190 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000191}
192
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000193template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000194LayerTestResult<T, 4> StridedSliceSimpleRangeMaskTest(
195 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100196 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
197 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000198{
199 armnn::TensorInfo inputTensorInfo;
200 armnn::TensorInfo outputTensorInfo;
201
202 unsigned int inputShape[] = {3, 2, 3, 1};
203 unsigned int outputShape[] = {3, 2, 3, 1};
204
205 armnn::StridedSliceQueueDescriptor desc;
206 desc.m_Parameters.m_Begin = {1, 1, 1, 1};
207 desc.m_Parameters.m_End = {1, 1, 1, 1};
208 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
209 desc.m_Parameters.m_BeginMask = (1 << 4) - 1;
210 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
211
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000212 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
213 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000214
215 std::vector<float> input = std::vector<float>(
216 {
217 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
218
219 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
220
221 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
222 });
223
224 std::vector<float> outputExpected = std::vector<float>(
225 {
226 1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
227
228 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
229
230 5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
231 });
232
233 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100234 workloadFactory, memoryManager, tensorHandleFactory,
235 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000236}
237
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000238template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000239LayerTestResult<T, 2> StridedSliceShrinkAxisMaskTest(
240 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100241 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
242 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000243{
244 armnn::TensorInfo inputTensorInfo;
245 armnn::TensorInfo outputTensorInfo;
246
247 unsigned int inputShape[] = {3, 2, 3, 1};
248 unsigned int outputShape[] = {3, 1};
249
250 armnn::StridedSliceQueueDescriptor desc;
251 desc.m_Parameters.m_Begin = {0, 0, 1, 0};
252 desc.m_Parameters.m_End = {1, 1, 1, 1};
253 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
254 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
255 desc.m_Parameters.m_ShrinkAxisMask = (1 << 1) | (1 << 2);
256
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000257 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
258 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000259
260 std::vector<float> input = std::vector<float>(
261 {
262 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
263
264 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
265
266 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
267 });
268
269 std::vector<float> outputExpected = std::vector<float>(
270 {
271 2.0f, 8.0f, 14.0f
272 });
273
274 return StridedSliceTestImpl<T, 4, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100275 workloadFactory, memoryManager, tensorHandleFactory,
276 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000277}
278
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000279template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Francis Murtaghec33a912019-11-05 14:26:23 +0000280LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition0Test(
281 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100282 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
283 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000284{
285 armnn::TensorInfo inputTensorInfo;
286 armnn::TensorInfo outputTensorInfo;
287
288 unsigned int inputShape[] = {3, 2, 3, 1};
289 unsigned int outputShape[] = {2, 3, 1};
290
291 armnn::StridedSliceQueueDescriptor desc;
292 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
293 desc.m_Parameters.m_End = {1, 1, 1, 1};
294 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
295 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
296 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0);
297
298 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
299 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
300
301 std::vector<float> input = std::vector<float>(
302 {
303 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
304
305 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
306
307 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
308 });
309
310 std::vector<float> outputExpected = std::vector<float>(
311 {
312 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
313 });
314
315 return StridedSliceTestImpl<T, 4, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100316 workloadFactory, memoryManager, tensorHandleFactory,
317 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000318}
319
320template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
321LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition1Test(
322 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100323 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
324 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000325{
326 armnn::TensorInfo inputTensorInfo;
327 armnn::TensorInfo outputTensorInfo;
328
329 unsigned int inputShape[] = {3, 2, 3, 1};
330 unsigned int outputShape[] = {3, 3, 1};
331
332 armnn::StridedSliceQueueDescriptor desc;
333 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
334 desc.m_Parameters.m_End = {1, 1, 1, 1};
335 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
336 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
337 desc.m_Parameters.m_ShrinkAxisMask = (1 << 1);
338
339 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
340 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
341
342 std::vector<float> input = std::vector<float>(
343 {
344 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
345
346 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
347
348 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
349 });
350
351 std::vector<float> outputExpected = std::vector<float>(
352 {
353 1.0f, 2.0f, 3.0f, 7.0f, 8.0f, 9.0f, 13.0f, 14.0f, 15.0f
354 });
355
356 return StridedSliceTestImpl<T, 4, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100357 workloadFactory, memoryManager, tensorHandleFactory,
358 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000359}
360
361template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
362LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition2Test(
363 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100364 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
365 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000366{
367 armnn::TensorInfo inputTensorInfo;
368 armnn::TensorInfo outputTensorInfo;
369
370 unsigned int inputShape[] = {3, 2, 3, 1};
371 unsigned int outputShape[] = {3, 2, 1};
372
373 armnn::StridedSliceQueueDescriptor desc;
374 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
375 desc.m_Parameters.m_End = {1, 1, 1, 1};
376 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
377 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
378 desc.m_Parameters.m_ShrinkAxisMask = (1 << 2);
379
380 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
381 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
382
383 std::vector<float> input = std::vector<float>(
384 {
385 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
386
387 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
388
389 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
390 });
391
392 std::vector<float> outputExpected = std::vector<float>(
393 {
394 1.0f, 4.0f, 7.0f, 10.0f, 13.0f, 16.0f
395 });
396
397 return StridedSliceTestImpl<T, 4, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100398 workloadFactory, memoryManager, tensorHandleFactory,
399 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000400}
401
402template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
403LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition3Test(
404 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100405 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
406 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000407{
408 armnn::TensorInfo inputTensorInfo;
409 armnn::TensorInfo outputTensorInfo;
410
411 unsigned int inputShape[] = {3, 2, 3, 1};
412 unsigned int outputShape[] = {3, 2, 3};
413
414 armnn::StridedSliceQueueDescriptor desc;
415 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
416 desc.m_Parameters.m_End = {1, 1, 1, 1};
417 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
418 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
419 desc.m_Parameters.m_ShrinkAxisMask = (1 << 3);
420
421 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
422 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
423
424 std::vector<float> input = std::vector<float>(
425 {
426 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
427
428 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
429
430 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
431 });
432
433 std::vector<float> outputExpected = std::vector<float>(
434 {
435 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
436
437 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
438
439 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
440 });
441
442 return StridedSliceTestImpl<T, 4, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100443 workloadFactory, memoryManager, tensorHandleFactory,
444 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000445}
446
447template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
448LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And1Test(
449 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100450 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
451 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000452{
453 armnn::TensorInfo inputTensorInfo;
454 armnn::TensorInfo outputTensorInfo;
455
456 unsigned int inputShape[] = {3, 2, 3, 1};
457 unsigned int outputShape[] = {3, 1};
458
459 armnn::StridedSliceQueueDescriptor desc;
460 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
461 desc.m_Parameters.m_End = {1, 1, 1, 1};
462 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
463 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
464 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1);
465
466 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
467 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
468
469 std::vector<float> input = std::vector<float>(
470 {
471 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
472
473 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
474
475 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
476 });
477
478 std::vector<float> outputExpected = std::vector<float>(
479 {
480 1.0f, 2.0f, 3.0f
481 });
482
483 return StridedSliceTestImpl<T, 4, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100484 workloadFactory, memoryManager, tensorHandleFactory,
485 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000486}
487
488template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
489LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Test(
490 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100491 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
492 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000493{
494 armnn::TensorInfo inputTensorInfo;
495 armnn::TensorInfo outputTensorInfo;
496
497 unsigned int inputShape[] = {2, 3, 1};
498 unsigned int outputShape[] = {3, 1};
499
500 armnn::StridedSliceQueueDescriptor desc;
501 desc.m_Parameters.m_Begin = {0, 0, 0};
502 desc.m_Parameters.m_End = {0, 0, 0};
503 desc.m_Parameters.m_Stride = {1, 1, 1};
504 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
505 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0);
506
507 inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
508 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
509
510 std::vector<float> input = std::vector<float>(
511 {
512 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
513 });
514
515 std::vector<float> outputExpected = std::vector<float>(
516 {
517 1.0f, 2.0f, 3.0f
518 });
519
520 return StridedSliceTestImpl<T, 3, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100521 workloadFactory, memoryManager, tensorHandleFactory,
522 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000523}
524
525void FillVector(std::vector<float>& inputArray, float start, float step)
526{
527 for (uint32_t i = 0; i < inputArray.size(); ++i)
528 {
529 inputArray[i] = start;
530 start += step;
531 }
532}
533
534template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
535LayerTestResult<T, 4> StridedSliceShrinkAxisMaskCTSTest(
536 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100537 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
538 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000539{
540 armnn::TensorInfo inputTensorInfo;
541 armnn::TensorInfo outputTensorInfo;
542
543 unsigned int inputShape[] = {1, 1, 8, 942};
544 unsigned int outputShape[] = {1, 1, 1, 279};
545
546 armnn::StridedSliceQueueDescriptor desc;
547 desc.m_Parameters.m_Begin = {0, 0, 1, 229};
548 desc.m_Parameters.m_End = {1, 1, 2, 787};
549 desc.m_Parameters.m_Stride = {2, 3, 3, 2};
550 desc.m_Parameters.m_BeginMask = 2;
551 desc.m_Parameters.m_EndMask = 0;
552 desc.m_Parameters.m_ShrinkAxisMask = 0;
553
554 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
555 outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
556
557 // Array from 1 to 7535
558 std::vector<float> input(7536);
559 FillVector(input, 1.0f, 1.0f);
560
561 // Array from 1171 to 1727 in steps of 2
562 std::vector<float> outputExpected(279);
563 FillVector(outputExpected, 1171.0, 2.0f);
564
565 return StridedSliceTestImpl<T, 4, 4>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100566 workloadFactory, memoryManager, tensorHandleFactory,
567 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000568}
569
570template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
571LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And2Test(
572 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100573 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
574 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000575{
576 armnn::TensorInfo inputTensorInfo;
577 armnn::TensorInfo outputTensorInfo;
578
579 unsigned int inputShape[] = {3, 2, 3, 1};
580 unsigned int outputShape[] = {2, 1};
581
582 armnn::StridedSliceQueueDescriptor desc;
583 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
584 desc.m_Parameters.m_End = {1, 1, 1, 1};
585 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
586 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
587 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 2);
588
589 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
590 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
591
592 std::vector<float> input = std::vector<float>(
593 {
594 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
595
596 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
597
598 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
599 });
600
601 std::vector<float> outputExpected = std::vector<float>(
602 {
603 1.0f, 4.0f
604 });
605
606 return StridedSliceTestImpl<T, 4, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100607 workloadFactory, memoryManager, tensorHandleFactory,
608 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000609}
610
611template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
612LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And3Test(
613 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100614 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
615 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000616{
617 armnn::TensorInfo inputTensorInfo;
618 armnn::TensorInfo outputTensorInfo;
619
620 unsigned int inputShape[] = {3, 2, 3, 1};
621 unsigned int outputShape[] = {2, 3};
622
623 armnn::StridedSliceQueueDescriptor desc;
624 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
625 desc.m_Parameters.m_End = {1, 1, 1, 1};
626 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
627 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
628 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 3);
629
630 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
631 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
632
633 std::vector<float> input = std::vector<float>(
634 {
635 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
636
637 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
638
639 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
640 });
641
642 std::vector<float> outputExpected = std::vector<float>(
643 {
644 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
645 });
646
647 return StridedSliceTestImpl<T, 4, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100648 workloadFactory, memoryManager, tensorHandleFactory,
649 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000650}
651
652template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
653LayerTestResult<T, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Test(
654 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100655 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
656 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000657{
658 armnn::TensorInfo inputTensorInfo;
659 armnn::TensorInfo outputTensorInfo;
660
661 unsigned int inputShape[] = {3, 2, 3, 1};
662 unsigned int outputShape[] = {3};
663
664 armnn::StridedSliceQueueDescriptor desc;
665 desc.m_Parameters.m_Begin = {0, 0, 0, 0};
666 desc.m_Parameters.m_End = {1, 1, 1, 1};
667 desc.m_Parameters.m_Stride = {1, 1, 1, 1};
668 desc.m_Parameters.m_EndMask = (1 << 4) - 1;
669 desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1) | (1 << 3);
670
671 inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
672 outputTensorInfo = armnn::TensorInfo(1, outputShape, ArmnnType);
673
674 std::vector<float> input = std::vector<float>(
675 {
676 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
677
678 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
679
680 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
681 });
682
683 std::vector<float> outputExpected = std::vector<float>(
684 {
685 1.0f, 2.0f, 3.0f
686 });
687
688 return StridedSliceTestImpl<T, 4, 1>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100689 workloadFactory, memoryManager, tensorHandleFactory,
690 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Francis Murtaghec33a912019-11-05 14:26:23 +0000691}
692
693template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100694LayerTestResult<T, 3> StridedSlice3dTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000695 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100696 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
697 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000698{
699 armnn::TensorInfo inputTensorInfo;
700 armnn::TensorInfo outputTensorInfo;
701
702 unsigned int inputShape[] = {3, 3, 3};
703 unsigned int outputShape[] = {2, 2, 2};
704
705 armnn::StridedSliceQueueDescriptor desc;
706 desc.m_Parameters.m_Begin = {0, 0, 0};
707 desc.m_Parameters.m_End = {1, 1, 1};
708 desc.m_Parameters.m_Stride = {2, 2, 2};
709 desc.m_Parameters.m_EndMask = (1 << 3) - 1;
710
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000711 inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
712 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000713
714 std::vector<float> input = std::vector<float>(
715 {
716 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,
717
718 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
719
720 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f
721 });
722
723 std::vector<float> outputExpected = std::vector<float>(
724 {
725 1.0f, 3.0f, 7.0f, 9.0f,
726
727 19.0f, 21.0f, 25.0f, 27.0f
728 });
729
730 return StridedSliceTestImpl<T, 3, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100731 workloadFactory, memoryManager, tensorHandleFactory,
732 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000733}
734
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000735template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100736LayerTestResult<T, 3> StridedSlice3dReverseTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000737 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100738 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
739 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000740{
741 armnn::TensorInfo inputTensorInfo;
742 armnn::TensorInfo outputTensorInfo;
743
744 unsigned int inputShape[] = {3, 3, 3};
745 unsigned int outputShape[] = {2, 2, 2};
746
747 armnn::StridedSliceQueueDescriptor desc;
748 desc.m_Parameters.m_Begin = {-1, -1, -1};
749 desc.m_Parameters.m_End = {-4, -4, -4};
750 desc.m_Parameters.m_Stride = {-2, -2, -2};
751
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000752 inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
753 outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000754
755 std::vector<float> input = std::vector<float>(
756 {
757 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,
758
759 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
760
761 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f
762 });
763
764 std::vector<float> outputExpected = std::vector<float>(
765 {
766 27.0f, 25.0f, 21.0f, 19.0f,
767
768 9.0f, 7.0f, 3.0f, 1.0f
769 });
770
771 return StridedSliceTestImpl<T, 3, 3>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100772 workloadFactory, memoryManager, tensorHandleFactory,
773 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000774}
775
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000776template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100777LayerTestResult<T, 2> StridedSlice2dTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000778 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100779 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
780 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000781{
782 armnn::TensorInfo inputTensorInfo;
783 armnn::TensorInfo outputTensorInfo;
784
785 unsigned int inputShape[] = {3, 3};
786 unsigned int outputShape[] = {2, 2};
787
788 armnn::StridedSliceQueueDescriptor desc;
789 desc.m_Parameters.m_Begin = {0, 0};
790 desc.m_Parameters.m_End = {1, 1};
791 desc.m_Parameters.m_Stride = {2, 2};
792 desc.m_Parameters.m_EndMask = (1 << 2) - 1;
793
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000794 inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
795 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000796
797 std::vector<float> input = std::vector<float>(
798 {
799 1.0f, 2.0f, 3.0f,
800
801 4.0f, 5.0f, 6.0f,
802
803 7.0f, 8.0f, 9.0f
804 });
805
806 std::vector<float> outputExpected = std::vector<float>(
807 {
808 1.0f, 3.0f,
809
810 7.0f, 9.0f
811 });
812
813 return StridedSliceTestImpl<T, 2, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100814 workloadFactory, memoryManager, tensorHandleFactory,
815 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000816}
817
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000818template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100819LayerTestResult<T, 2> StridedSlice2dReverseTest(
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000820 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100821 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
822 const armnn::ITensorHandleFactory& tensorHandleFactory)
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000823{
824 armnn::TensorInfo inputTensorInfo;
825 armnn::TensorInfo outputTensorInfo;
826
827 unsigned int inputShape[] = {3, 3};
828 unsigned int outputShape[] = {2, 2};
829
830 armnn::StridedSliceQueueDescriptor desc;
831 desc.m_Parameters.m_Begin = {0, 0};
832 desc.m_Parameters.m_End = {1, 1};
833 desc.m_Parameters.m_Stride = {-2, -2};
834 desc.m_Parameters.m_BeginMask = (1 << 2) - 1;
835 desc.m_Parameters.m_EndMask = (1 << 2) - 1;
836
Nattapat Chaimanowong649dd952019-01-22 16:10:44 +0000837 inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
838 outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000839
840 std::vector<float> input = std::vector<float>(
841 {
842 1.0f, 2.0f, 3.0f,
843
844 4.0f, 5.0f, 6.0f,
845
846 7.0f, 8.0f, 9.0f
847 });
848
849 std::vector<float> outputExpected = std::vector<float>(
850 {
851 9.0f, 7.0f,
852
853 3.0f, 1.0f
854 });
855
856 return StridedSliceTestImpl<T, 2, 2>(
Sadik Armagan5e719842020-08-28 12:17:33 +0100857 workloadFactory, memoryManager, tensorHandleFactory,
858 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
Nattapat Chaimanowong1216b582018-11-23 15:33:41 +0000859}
860
861} // anonymous namespace
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100862
863LayerTestResult<float, 4> StridedSlice4dFloat32Test(
864 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100865 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
866 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100867{
Sadik Armagan5e719842020-08-28 12:17:33 +0100868 return StridedSlice4dTest<armnn::DataType::Float32>(workloadFactory,
869 memoryManager,
870 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100871}
872
873LayerTestResult<float, 4> StridedSlice4dReverseFloat32Test(
874 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100875 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
876 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100877{
Sadik Armagan5e719842020-08-28 12:17:33 +0100878 return StridedSlice4dReverseTest<armnn::DataType::Float32>(workloadFactory,
879 memoryManager,
880 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100881}
882
883LayerTestResult<float, 4> StridedSliceSimpleStrideFloat32Test(
884 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100885 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
886 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100887{
Sadik Armagan5e719842020-08-28 12:17:33 +0100888 return StridedSliceSimpleStrideTest<armnn::DataType::Float32>(workloadFactory,
889 memoryManager,
890 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100891}
892
893LayerTestResult<float, 4> StridedSliceSimpleRangeMaskFloat32Test(
894 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100895 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
896 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100897{
Sadik Armagan5e719842020-08-28 12:17:33 +0100898 return StridedSliceSimpleRangeMaskTest<armnn::DataType::Float32>(workloadFactory,
899 memoryManager,
900 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100901}
902
903LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test(
904 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100905 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
906 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100907{
Sadik Armagan5e719842020-08-28 12:17:33 +0100908 return StridedSliceShrinkAxisMaskTest<armnn::DataType::Float32>(workloadFactory,
909 memoryManager,
910 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100911}
912
Francis Murtaghec33a912019-11-05 14:26:23 +0000913LayerTestResult<float, 4> StridedSliceShrinkAxisMaskCTSFloat32Test(
914 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100915 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
916 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000917{
Sadik Armagan5e719842020-08-28 12:17:33 +0100918 return StridedSliceShrinkAxisMaskCTSTest<armnn::DataType::Float32>(workloadFactory,
919 memoryManager,
920 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000921}
922
923LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Float32Test(
924 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100925 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
926 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000927{
Sadik Armagan5e719842020-08-28 12:17:33 +0100928 return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::Float32>(workloadFactory,
929 memoryManager,
930 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000931}
932
933LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition0Float32Test(
934 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100935 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
936 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000937{
Sadik Armagan5e719842020-08-28 12:17:33 +0100938 return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::Float32>(workloadFactory,
939 memoryManager,
940 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000941}
942
943LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition1Float32Test(
944 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100945 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
946 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000947{
Sadik Armagan5e719842020-08-28 12:17:33 +0100948 return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::Float32>(workloadFactory,
949 memoryManager,
950 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000951}
952
953LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition2Float32Test(
954 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100955 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
956 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000957{
Sadik Armagan5e719842020-08-28 12:17:33 +0100958 return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::Float32>(workloadFactory,
959 memoryManager,
960 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000961}
962
963LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition3Float32Test(
964 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100965 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
966 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000967{
Sadik Armagan5e719842020-08-28 12:17:33 +0100968 return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::Float32>(workloadFactory,
969 memoryManager,
970 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000971}
972
973LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And1Float32Test(
974 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100975 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
976 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000977{
Sadik Armagan5e719842020-08-28 12:17:33 +0100978 return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::Float32>(workloadFactory,
979 memoryManager,
980 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000981}
982
983LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And2Float32Test(
984 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100985 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
986 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000987{
Sadik Armagan5e719842020-08-28 12:17:33 +0100988 return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::Float32>(workloadFactory,
989 memoryManager,
990 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +0000991}
992
993LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And3Float32Test(
994 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +0100995 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
996 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +0000997{
Sadik Armagan5e719842020-08-28 12:17:33 +0100998 return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::Float32>(workloadFactory,
999 memoryManager,
1000 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001001}
1002
1003LayerTestResult<float, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Float32Test(
1004 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001005 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1006 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001007{
Sadik Armagan5e719842020-08-28 12:17:33 +01001008 return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::Float32>(workloadFactory,
1009 memoryManager,
1010 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001011}
1012
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001013LayerTestResult<float, 3> StridedSlice3dFloat32Test(
1014 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001015 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1016 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001017{
Sadik Armagan5e719842020-08-28 12:17:33 +01001018 return StridedSlice3dTest<armnn::DataType::Float32>(workloadFactory,
1019 memoryManager,
1020 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001021}
1022
1023LayerTestResult<float, 3> StridedSlice3dReverseFloat32Test(
1024 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001025 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1026 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001027{
Sadik Armagan5e719842020-08-28 12:17:33 +01001028 return StridedSlice3dReverseTest<armnn::DataType::Float32>(workloadFactory,
1029 memoryManager,
1030 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001031}
1032
1033LayerTestResult<float, 2> StridedSlice2dFloat32Test(
1034 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001035 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1036 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001037{
Sadik Armagan5e719842020-08-28 12:17:33 +01001038 return StridedSlice2dTest<armnn::DataType::Float32>(workloadFactory,
1039 memoryManager,
1040 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001041}
1042
1043LayerTestResult<float, 2> StridedSlice2dReverseFloat32Test(
1044 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001045 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1046 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001047{
Sadik Armagan5e719842020-08-28 12:17:33 +01001048 return StridedSlice2dReverseTest<armnn::DataType::Float32>(workloadFactory,
1049 memoryManager,
1050 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001051}
1052
1053LayerTestResult<uint8_t, 4> StridedSlice4dUint8Test(
1054 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001055 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1056 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001057{
Sadik Armagan5e719842020-08-28 12:17:33 +01001058 return StridedSlice4dTest<armnn::DataType::QAsymmU8>(workloadFactory,
1059 memoryManager,
1060 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001061}
1062
1063LayerTestResult<uint8_t, 4> StridedSlice4dReverseUint8Test(
1064 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001065 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1066 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001067{
Sadik Armagan5e719842020-08-28 12:17:33 +01001068 return StridedSlice4dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory,
1069 memoryManager,
1070 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001071}
1072
1073LayerTestResult<uint8_t, 4> StridedSliceSimpleStrideUint8Test(
1074 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001075 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1076 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001077{
Sadik Armagan5e719842020-08-28 12:17:33 +01001078 return StridedSliceSimpleStrideTest<armnn::DataType::QAsymmU8>(workloadFactory,
1079 memoryManager,
1080 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001081}
1082
1083LayerTestResult<uint8_t, 4> StridedSliceSimpleRangeMaskUint8Test(
1084 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001085 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1086 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001087{
Sadik Armagan5e719842020-08-28 12:17:33 +01001088 return StridedSliceSimpleRangeMaskTest<armnn::DataType::QAsymmU8>(workloadFactory,
1089 memoryManager,
1090 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001091}
1092
1093LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test(
1094 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001095 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1096 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001097{
Sadik Armagan5e719842020-08-28 12:17:33 +01001098 return StridedSliceShrinkAxisMaskTest<armnn::DataType::QAsymmU8>(workloadFactory,
1099 memoryManager,
1100 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001101}
1102
Francis Murtaghec33a912019-11-05 14:26:23 +00001103LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Uint8Test(
1104 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001105 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1106 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001107{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001108 return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001109 memoryManager,
1110 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001111}
1112
1113LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition0Uint8Test(
1114 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001115 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1116 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001117{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001118 return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001119 memoryManager,
1120 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001121}
1122
1123LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition1Uint8Test(
1124 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001125 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1126 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001127{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001128 return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001129 memoryManager,
1130 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001131}
1132
1133LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition2Uint8Test(
1134 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001135 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1136 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001137{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001138 return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001139 memoryManager,
1140 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001141}
1142
1143LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition3Uint8Test(
1144 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001145 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1146 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001147{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001148 return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001149 memoryManager,
1150 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001151}
1152
1153LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And1Uint8Test(
1154 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1156 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001157{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001158 return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001159 memoryManager,
1160 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001161}
1162
1163LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And2Uint8Test(
1164 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001165 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1166 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001167{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001168 return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001169 memoryManager,
1170 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001171}
1172
1173LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And3Uint8Test(
1174 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001175 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1176 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001177{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001178 return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001179 memoryManager,
1180 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001181}
1182
1183LayerTestResult<uint8_t, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Uint8Test(
1184 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001185 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1186 const armnn::ITensorHandleFactory& tensorHandleFactory)
Francis Murtaghec33a912019-11-05 14:26:23 +00001187{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001188 return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::QAsymmU8>(workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001189 memoryManager,
1190 tensorHandleFactory);
Francis Murtaghec33a912019-11-05 14:26:23 +00001191}
1192
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001193LayerTestResult<uint8_t, 3> StridedSlice3dUint8Test(
1194 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001195 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1196 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001197{
Sadik Armagan5e719842020-08-28 12:17:33 +01001198 return StridedSlice3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001199}
1200
1201LayerTestResult<uint8_t, 3> StridedSlice3dReverseUint8Test(
1202 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001203 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1204 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001205{
Sadik Armagan5e719842020-08-28 12:17:33 +01001206 return StridedSlice3dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001207}
1208
1209LayerTestResult<uint8_t, 2> StridedSlice2dUint8Test(
1210 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001211 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1212 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001213{
Sadik Armagan5e719842020-08-28 12:17:33 +01001214 return StridedSlice2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001215}
1216
1217LayerTestResult<uint8_t, 2> StridedSlice2dReverseUint8Test(
1218 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001219 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1220 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001221{
Sadik Armagan5e719842020-08-28 12:17:33 +01001222 return StridedSlice2dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001223}
1224
1225LayerTestResult<int16_t, 4> StridedSlice4dInt16Test(
1226 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001227 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1228 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001229{
Sadik Armagan5e719842020-08-28 12:17:33 +01001230 return StridedSlice4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001231}
1232
1233LayerTestResult<int16_t, 4> StridedSlice4dReverseInt16Test(
1234 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001235 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1236 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001237{
Sadik Armagan5e719842020-08-28 12:17:33 +01001238 return StridedSlice4dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001239}
1240
1241LayerTestResult<int16_t, 4> StridedSliceSimpleStrideInt16Test(
1242 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001243 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1244 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001245{
Sadik Armagan5e719842020-08-28 12:17:33 +01001246 return StridedSliceSimpleStrideTest<armnn::DataType::QSymmS16>(workloadFactory,
1247 memoryManager,
1248 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001249}
1250
1251LayerTestResult<int16_t, 4> StridedSliceSimpleRangeMaskInt16Test(
1252 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001253 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1254 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001255{
Sadik Armagan5e719842020-08-28 12:17:33 +01001256 return StridedSliceSimpleRangeMaskTest<armnn::DataType::QSymmS16>(workloadFactory,
1257 memoryManager,
1258 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001259}
1260
1261LayerTestResult<int16_t, 2> StridedSliceShrinkAxisMaskInt16Test(
1262 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001263 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1264 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001265{
Sadik Armagan5e719842020-08-28 12:17:33 +01001266 return StridedSliceShrinkAxisMaskTest<armnn::DataType::QSymmS16>(workloadFactory,
1267 memoryManager,
1268 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001269}
1270
1271LayerTestResult<int16_t, 3> StridedSlice3dInt16Test(
1272 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001273 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1274 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001275{
Sadik Armagan5e719842020-08-28 12:17:33 +01001276 return StridedSlice3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001277}
1278
1279LayerTestResult<int16_t, 3> StridedSlice3dReverseInt16Test(
1280 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001281 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1282 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001283{
Sadik Armagan5e719842020-08-28 12:17:33 +01001284 return StridedSlice3dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001285}
1286
1287LayerTestResult<int16_t, 2> StridedSlice2dInt16Test(
1288 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001289 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1290 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001291{
Sadik Armagan5e719842020-08-28 12:17:33 +01001292 return StridedSlice2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001293}
1294
1295LayerTestResult<int16_t, 2> StridedSlice2dReverseInt16Test(
1296 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan5e719842020-08-28 12:17:33 +01001297 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1298 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001299{
Sadik Armagan5e719842020-08-28 12:17:33 +01001300 return StridedSlice2dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager, tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001301}