blob: 3ca9522dd0fa90f5600c084a347c7f6d31421fff [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
Narumol Prangnawarat44179c32020-03-11 14:51:27 +000010#include <BFloat16.hpp>
Matthew Jackson9bff1442019-09-12 09:08:23 +010011#include <Half.hpp>
Narumol Prangnawarat44179c32020-03-11 14:51:27 +000012#include <ResolveType.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010013
Matteo Martincighe5b8eb92019-11-28 15:45:42 +000014#include <armnn/backends/IBackendInternal.hpp>
Colm Donelan0c479742021-12-10 12:43:54 +000015#include <armnn/backends/WorkloadFactory.hpp>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010016
17template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
18LayerTestResult<T, 3> ConcatDifferentInputOutputQParamTest(
19 armnn::IWorkloadFactory& workloadFactory,
20 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010021 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010022 bool useSubtensor);
23
24LayerTestResult<float, 3> ConcatTest(
25 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010026 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
27 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010028
Narumol Prangnawarat44179c32020-03-11 14:51:27 +000029LayerTestResult<armnn::BFloat16, 3> ConcatBFloat16Test(
30 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010031 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
32 const armnn::ITensorHandleFactory& tensorHandleFactory);
Narumol Prangnawarat44179c32020-03-11 14:51:27 +000033
Matthew Jackson9bff1442019-09-12 09:08:23 +010034LayerTestResult<armnn::Half, 3> ConcatFloat16Test(
35 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010036 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
37 const armnn::ITensorHandleFactory& tensorHandleFactory);
Matthew Jackson9bff1442019-09-12 09:08:23 +010038
Teresa Charlin6abc7ee2022-02-22 17:32:27 +000039LayerTestResult<int32_t, 3> ConcatInt32Test(
40 armnn::IWorkloadFactory& workloadFactory,
41 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
42 const armnn::ITensorHandleFactory& tensorHandleFactory);
43
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010044LayerTestResult<uint8_t, 3> ConcatUint8Test(
45 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010046 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
47 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010048
49LayerTestResult<uint16_t, 3> ConcatUint16Test(
50 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010051 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
52 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010053
54LayerTestResult<uint8_t, 3> ConcatUint8DifferentQParamsTest(
55 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010056 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
57 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010058
59LayerTestResult<float, 1> Concat1dTest(
60 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010061 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
62 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010063
64LayerTestResult<float, 2> Concat2dDim0Test(
65 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010066 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
67 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010068
69LayerTestResult<float, 2> Concat2dDim1Test(
70 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010071 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
72 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010073
74LayerTestResult<float, 2> Concat2dDim0DiffInputDimsTest(
75 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010076 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
77 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010078
79LayerTestResult<float, 2> Concat2dDim1DiffInputDimsTest(
80 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010081 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
82 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010083
84LayerTestResult<float, 3> Concat3dDim0Test(
85 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010086 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
87 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010088
89LayerTestResult<float, 3> Concat3dDim1Test(
90 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010091 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
92 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010093
94LayerTestResult<float, 3> Concat3dDim2Test(
95 armnn::IWorkloadFactory& workloadFactory,
96 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010097 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010098 bool useSubtensor);
99
100LayerTestResult<float, 3> Concat3dDim0DiffInputDimsTest(
101 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100102 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
103 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100104
105LayerTestResult<float, 3> Concat3dDim1DiffInputDimsTest(
106 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100107 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
108 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100109
110LayerTestResult<float, 3> Concat3dDim2DiffInputDimsTest(
111 armnn::IWorkloadFactory& workloadFactory,
112 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100113 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100114 bool useSubtensor);
115
116LayerTestResult<float, 4> Concat4dDim0Test(
117 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100118 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
119 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100120
121LayerTestResult<float, 4> Concat4dDim1Test(
122 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100123 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
124 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100125
126LayerTestResult<float, 4> Concat4dDim2Test(
127 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100128 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
129 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100130
131LayerTestResult<float, 4> Concat4dDim3Test(
132 armnn::IWorkloadFactory& workloadFactory,
133 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100134 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100135 bool useSubtensor);
136
137LayerTestResult<float, 4> Concat4dDiffShapeDim0Test(
138 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100139 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
140 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100141
142LayerTestResult<float, 4> Concat4dDiffShapeDim1Test(
143 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100144 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
145 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100146
147LayerTestResult<float, 4> Concat4dDiffShapeDim2Test(
148 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
150 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100151
152LayerTestResult<float, 4> Concat4dDiffShapeDim3Test(
153 armnn::IWorkloadFactory& workloadFactory,
154 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100155 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100156 bool useSubtensor);
157
158LayerTestResult<uint8_t, 4> Concat4dDim0Uint8Test(
159 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100160 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
161 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100162
163LayerTestResult<uint8_t, 4> Concat4dDim1Uint8Test(
164 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100165 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
166 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100167
168LayerTestResult<uint8_t, 4> Concat4dDim2Uint8Test(
169 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100170 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
171 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100172
173LayerTestResult<uint8_t, 4> Concat4dDim3Uint8Test(
174 armnn::IWorkloadFactory& workloadFactory,
175 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100176 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100177 bool useSubtensor);
178
179LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim0Uint8Test(
180 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100181 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
182 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100183
184LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim1Uint8Test(
185 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100186 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
187 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100188
189LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim2Uint8Test(
190 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100191 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
192 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100193
194LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim3Uint8Test(
195 armnn::IWorkloadFactory& workloadFactory,
196 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100197 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100198 bool useSubtensor);
199
200LayerTestResult<uint8_t, 1> Concat1dUint8Test(
201 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100202 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
203 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100204
205LayerTestResult<uint8_t, 2> Concat2dDim0Uint8Test(
206 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100207 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
208 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100209
210LayerTestResult<uint8_t, 2> Concat2dDim1Uint8Test(
211 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100212 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
213 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100214
215LayerTestResult<uint8_t, 2> Concat2dDim0DiffInputDimsUint8Test(
216 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100217 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
218 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100219
220LayerTestResult<uint8_t, 2> Concat2dDim1DiffInputDimsUint8Test(
221 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100222 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
223 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100224
225LayerTestResult<uint8_t, 3> Concat3dDim0Uint8Test(
226 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100227 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
228 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100229
230LayerTestResult<uint8_t, 3> Concat3dDim1Uint8Test(
231 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100232 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
233 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100234
235LayerTestResult<uint8_t, 3> Concat3dDim2Uint8Test(
236 armnn::IWorkloadFactory& workloadFactory,
237 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100238 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100239 bool useSubtensor);
240
241LayerTestResult<uint8_t, 3> Concat3dDim0DiffInputDimsUint8Test(
242 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100243 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
244 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100245
246LayerTestResult<uint8_t, 3> Concat3dDim1DiffInputDimsUint8Test(
247 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100248 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
249 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100250
251LayerTestResult<uint8_t, 3> Concat3dDim2DiffInputDimsUint8Test(
252 armnn::IWorkloadFactory& workloadFactory,
253 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100254 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100255 bool useSubtensor);
256
257LayerTestResult<uint8_t, 3> ConcatDifferentInputOutputQParamUint8Test(
258 armnn::IWorkloadFactory& workloadFactory,
259 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100260 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100261 bool useSubtensor);
262
263LayerTestResult<int16_t, 3> ConcatDifferentInputOutputQParamInt16Test(
264 armnn::IWorkloadFactory& workloadFactory,
265 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100266 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100267 bool useSubtensor);