blob: f54a6f85f581a9b7bcc9503d37d265e8abd48ff7 [file] [log] [blame]
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Sadik Armagana097d2a2021-11-24 15:47:28 +00008#include <armnnTestUtils/LayerTestResult.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01009
10#include <ResolveType.hpp>
11
12#include <armnn/Types.hpp>
13
Matteo Martincighe5b8eb92019-11-28 15:45:42 +000014#include <armnn/backends/IBackendInternal.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010015#include <backendsCommon/WorkloadFactory.hpp>
16
17//
18// Convolution2d
19//
20
21template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
22LayerTestResult<T, 4> Convolution2d3x3Dilation3x3Test(
23 armnn::IWorkloadFactory& workloadFactory,
24 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010025 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010026 bool biasEnabled,
27 const armnn::DataLayout layout);
28
29template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
30LayerTestResult<T, 4> Convolution2d2x3x3Dilation3x3Test(
31 armnn::IWorkloadFactory& workloadFactory,
32 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010033 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010034 bool biasEnabled,
35 const armnn::DataLayout layout);
36
37template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
38LayerTestResult<T, 4> Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test(
39 armnn::IWorkloadFactory &workloadFactory,
40 const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010041 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010042 bool biasEnabled,
43 const armnn::DataLayout layout);
44
45LayerTestResult<float, 4> SimpleConvolution2d3x5Test(
46 armnn::IWorkloadFactory& workloadFactory,
47 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010048 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010049 bool biasEnabled,
50 const armnn::DataLayout layout);
51
52LayerTestResult<float, 4> SimpleConvolution2d3x3Test(
53 armnn::IWorkloadFactory& workloadFactory,
54 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010055 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010056 bool biasEnabled,
57 const armnn::DataLayout layout);
58
59LayerTestResult<float, 4> SimpleConvolution2d3x3Stride2x2Test(
60 armnn::IWorkloadFactory& workloadFactory,
61 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010062 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010063 bool biasEnabled,
64 const armnn::DataLayout layout);
65
66LayerTestResult<float, 4> SimpleConvolution2d3x3NhwcTest(
67 armnn::IWorkloadFactory& workloadFactory,
68 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010069 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010070 bool biasEnabled);
71
72LayerTestResult<uint8_t, 4> SimpleConvolution2d3x5Uint8Test(
73 armnn::IWorkloadFactory& workloadFactory,
74 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010075 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010076 bool biasEnabled,
77 const armnn::DataLayout layout);
78
79LayerTestResult<uint8_t, 4> SimpleConvolution2d3x3Uint8Test(
80 armnn::IWorkloadFactory& workloadFactory,
81 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010082 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010083 bool biasEnabled,
84 const armnn::DataLayout layout);
85
86LayerTestResult<int16_t, 4> SimpleConvolution2d3x5QSymm16Test(
87 armnn::IWorkloadFactory& workloadFactory,
88 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010089 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010090 bool biasEnabled,
91 const armnn::DataLayout layout);
92
93LayerTestResult<int16_t, 4> SimpleConvolution2d3x3QSymm16Test(
94 armnn::IWorkloadFactory& workloadFactory,
95 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010096 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010097 bool biasEnabled,
98 const armnn::DataLayout layout);
99
100LayerTestResult<float, 4> Convolution2dAsymmetricPaddingLargerThanHalfKernelSizeTest(
101 armnn::IWorkloadFactory& workloadFactory,
102 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100103 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100104 armnn::DataLayout layout);
105
106LayerTestResult<float, 4> Convolution2dAsymmetricPaddingTest(
107 armnn::IWorkloadFactory& workloadFactory,
108 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100109 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100110 armnn::DataLayout layout);
111
112LayerTestResult<float, 4> Convolution1dTest(
113 armnn::IWorkloadFactory& workloadFactory,
114 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100115 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100116 bool biasEnabled);
117
118LayerTestResult<uint8_t, 4> Convolution1dUint8Test(
119 armnn::IWorkloadFactory& workloadFactory,
120 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100121 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100122 bool biasEnabled);
123
124LayerTestResult<float, 4> CompareConvolution2dTest(
125 armnn::IWorkloadFactory& workloadFactory,
126 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100127 armnn::IWorkloadFactory& refWorkloadFactory,
128 const armnn::ITensorHandleFactory& tensorHandleFactory,
129 const armnn::ITensorHandleFactory& refTensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100130
Aron Virginas-Tar5edc8812019-11-05 18:00:21 +0000131LayerTestResult<uint8_t, 4> Convolution2dPerAxisQuantTest(
132 armnn::IWorkloadFactory& workloadFactory,
133 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100134 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar5edc8812019-11-05 18:00:21 +0000135 const armnn::DataLayout layout);
136
Narumol Prangnawarate8cddeb2020-04-01 16:51:23 +0100137LayerTestResult<float, 4> Convolution2d3x3Stride2x2BFloat16Test(
138 armnn::IWorkloadFactory& workloadFactory,
139 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100140 const armnn::ITensorHandleFactory& tensorHandleFactory,
Narumol Prangnawarate8cddeb2020-04-01 16:51:23 +0100141 bool biasEnabled,
142 const armnn::DataLayout& dataLayout);
143
144LayerTestResult<float, 4> Convolution2d3x3Stride2x2BFloat16SmallValueTest(
145 armnn::IWorkloadFactory& workloadFactory,
146 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100147 const armnn::ITensorHandleFactory& tensorHandleFactory,
Narumol Prangnawarate8cddeb2020-04-01 16:51:23 +0100148 bool biasEnabled,
149 const armnn::DataLayout& dataLayout);
150
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100151//
152// DepthwiseConvolution2d
153//
154
155template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
156LayerTestResult<T, 4> DepthwiseConvolution2d3x3Dilation3x3Test(
157 armnn::IWorkloadFactory& workloadFactory,
158 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100159 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100160 bool biasEnabled,
161 const armnn::DataLayout layout);
162
163template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
164LayerTestResult<T, 4> DepthwiseConvolution2d2x3x3Dilation3x3Test(
165 armnn::IWorkloadFactory& workloadFactory,
166 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100167 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100168 bool biasEnabled,
169 const armnn::DataLayout layout);
170
171template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
172LayerTestResult<T, 4> DepthwiseConvolution2dMult4Test(
173 armnn::IWorkloadFactory& workloadFactory,
174 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100175 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100176 bool biasEnabled,
177 const armnn::DataLayout layout);
178
179template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>>
180LayerTestResult<T, 4> DepthwiseConvolution2dMult2Test(
181 armnn::IWorkloadFactory& workloadFactory,
182 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100183 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100184 bool biasEnabled,
185 const armnn::DataLayout layout);
186
187template<typename T>
188LayerTestResult<T, 4> CompareDepthwiseConvolution2dTest(
189 armnn::IWorkloadFactory& workloadFactory,
190 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
191 armnn::IWorkloadFactory& refWorkloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100192 const armnn::ITensorHandleFactory& tensorHandleFactory,
193 const armnn::ITensorHandleFactory& refTensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100194 const armnn::DataLayout layout);
195
196LayerTestResult<float, 4> DepthwiseConvolution2dTest(
197 armnn::IWorkloadFactory& workloadFactory,
198 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100199 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100200 bool biasEnabled,
201 const armnn::DataLayout layout);
202
203LayerTestResult<float, 4> DepthwiseConvolution2dDepthNhwcTest(
204 armnn::IWorkloadFactory& workloadFactory,
205 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100206 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100207 bool biasEnabled);
208
209LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul1Test(
210 armnn::IWorkloadFactory& workloadFactory,
211 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100212 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100213 bool biasEnabled,
214 const armnn::DataLayout layout);
215
216LayerTestResult<float, 4> DepthwiseConvolution2dDepthMul64Test(
217 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100218 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
219 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100220
221LayerTestResult<float, 4> DepthwiseConvolution2dAsymmetricTest(
222 armnn::IWorkloadFactory& workloadFactory,
223 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100224 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100225 bool biasEnabled,
226 const armnn::DataLayout layout);
227
228LayerTestResult<float, 4> SimpleDepthwiseConvolution2d3x3Dilation3x3NhwcTest(
229 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100230 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
231 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100232
233LayerTestResult<uint8_t, 4> DepthwiseConvolution2dUint8Test(
234 armnn::IWorkloadFactory& workloadFactory,
235 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100236 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100237 bool biasEnabled,
238 const armnn::DataLayout layout);
239
240LayerTestResult<uint8_t, 4> DepthwiseConvolution2dDepthMul1Uint8Test(
241 armnn::IWorkloadFactory& workloadFactory,
242 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100243 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100244 bool biasEnabled,
245 const armnn::DataLayout layout);
246
247LayerTestResult<int16_t, 4> DepthwiseConvolution2dInt16Test(
248 armnn::IWorkloadFactory& workloadFactory,
249 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100250 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100251 bool biasEnabled,
252 const armnn::DataLayout layout);
253
254LayerTestResult<int16_t, 4> DepthwiseConvolution2dDepthMul1Int16Test(
255 armnn::IWorkloadFactory& workloadFactory,
256 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100257 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100258 bool biasEnabled,
259 const armnn::DataLayout layout);
260
Teresa Charlind8df0262019-11-11 12:28:15 +0000261LayerTestResult<uint8_t, 4> DepthwiseConvolution2dPerAxisQuantTest(
262 armnn::IWorkloadFactory& workloadFactory,
263 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100264 const armnn::ITensorHandleFactory& tensorHandleFactory,
Teresa Charlind8df0262019-11-11 12:28:15 +0000265 const armnn::DataLayout layout);
266
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100267LayerTestResult<float, 4> CompareDepthwiseConvolution2dFloatTest(
268 armnn::IWorkloadFactory& workloadFactory,
269 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
270 armnn::IWorkloadFactory& refWorkloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100271 const armnn::ITensorHandleFactory& tensorHandleFactory,
272 const armnn::ITensorHandleFactory& refTensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100273 const armnn::DataLayout layout);
274
275LayerTestResult<uint8_t, 4> CompareDepthwiseConvolution2dUint8Test(
276 armnn::IWorkloadFactory& workloadFactory,
277 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
278 armnn::IWorkloadFactory& refWorkloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100279 const armnn::ITensorHandleFactory& tensorHandleFactory,
280 const armnn::ITensorHandleFactory& refTensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100281 const armnn::DataLayout layout);