blob: 64e0c0a72290ed11222789ced721e24bfe864f47 [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
8#include "LayerTestResult.hpp"
9
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>
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010015#include <backendsCommon/WorkloadFactory.hpp>
16
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
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010039LayerTestResult<uint8_t, 3> ConcatUint8Test(
40 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010041 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
42 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010043
44LayerTestResult<uint16_t, 3> ConcatUint16Test(
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<uint8_t, 3> ConcatUint8DifferentQParamsTest(
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<float, 1> Concat1dTest(
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, 2> Concat2dDim0Test(
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> Concat2dDim1Test(
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> Concat2dDim0DiffInputDimsTest(
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> Concat2dDim1DiffInputDimsTest(
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, 3> Concat3dDim0Test(
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> Concat3dDim1Test(
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> Concat3dDim2Test(
90 armnn::IWorkloadFactory& workloadFactory,
91 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +010092 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010093 bool useSubtensor);
94
95LayerTestResult<float, 3> Concat3dDim0DiffInputDimsTest(
96 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010097 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
98 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010099
100LayerTestResult<float, 3> Concat3dDim1DiffInputDimsTest(
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> Concat3dDim2DiffInputDimsTest(
106 armnn::IWorkloadFactory& workloadFactory,
107 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100108 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100109 bool useSubtensor);
110
111LayerTestResult<float, 4> Concat4dDim0Test(
112 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100113 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
114 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100115
116LayerTestResult<float, 4> Concat4dDim1Test(
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> Concat4dDim2Test(
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> Concat4dDim3Test(
127 armnn::IWorkloadFactory& workloadFactory,
128 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100129 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100130 bool useSubtensor);
131
132LayerTestResult<float, 4> Concat4dDiffShapeDim0Test(
133 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100134 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
135 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100136
137LayerTestResult<float, 4> Concat4dDiffShapeDim1Test(
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> Concat4dDiffShapeDim2Test(
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> Concat4dDiffShapeDim3Test(
148 armnn::IWorkloadFactory& workloadFactory,
149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100150 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100151 bool useSubtensor);
152
153LayerTestResult<uint8_t, 4> Concat4dDim0Uint8Test(
154 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
156 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100157
158LayerTestResult<uint8_t, 4> Concat4dDim1Uint8Test(
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> Concat4dDim2Uint8Test(
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> Concat4dDim3Uint8Test(
169 armnn::IWorkloadFactory& workloadFactory,
170 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100171 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100172 bool useSubtensor);
173
174LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim0Uint8Test(
175 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100176 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
177 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100178
179LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim1Uint8Test(
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> Concat4dDiffShapeDim2Uint8Test(
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> Concat4dDiffShapeDim3Uint8Test(
190 armnn::IWorkloadFactory& workloadFactory,
191 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100192 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100193 bool useSubtensor);
194
195LayerTestResult<uint8_t, 1> Concat1dUint8Test(
196 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100197 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
198 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100199
200LayerTestResult<uint8_t, 2> Concat2dDim0Uint8Test(
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> Concat2dDim1Uint8Test(
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> Concat2dDim0DiffInputDimsUint8Test(
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> Concat2dDim1DiffInputDimsUint8Test(
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, 3> Concat3dDim0Uint8Test(
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> Concat3dDim1Uint8Test(
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> Concat3dDim2Uint8Test(
231 armnn::IWorkloadFactory& workloadFactory,
232 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100233 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100234 bool useSubtensor);
235
236LayerTestResult<uint8_t, 3> Concat3dDim0DiffInputDimsUint8Test(
237 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100238 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
239 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100240
241LayerTestResult<uint8_t, 3> Concat3dDim1DiffInputDimsUint8Test(
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> Concat3dDim2DiffInputDimsUint8Test(
247 armnn::IWorkloadFactory& workloadFactory,
248 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100249 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100250 bool useSubtensor);
251
252LayerTestResult<uint8_t, 3> ConcatDifferentInputOutputQParamUint8Test(
253 armnn::IWorkloadFactory& workloadFactory,
254 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100255 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100256 bool useSubtensor);
257
258LayerTestResult<int16_t, 3> ConcatDifferentInputOutputQParamInt16Test(
259 armnn::IWorkloadFactory& workloadFactory,
260 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100261 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100262 bool useSubtensor);