xref: /aosp_15_r20/external/armnn/src/backends/backendsCommon/test/layerTests/ConcatTestImpl.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include <armnnTestUtils/LayerTestResult.hpp>
9 
10 #include <BFloat16.hpp>
11 #include <Half.hpp>
12 #include <ResolveType.hpp>
13 
14 #include <armnn/backends/IBackendInternal.hpp>
15 #include <armnn/backends/WorkloadFactory.hpp>
16 
17 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
18 LayerTestResult<T, 3> ConcatDifferentInputOutputQParamTest(
19     armnn::IWorkloadFactory& workloadFactory,
20     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
21     const armnn::ITensorHandleFactory& tensorHandleFactory,
22     bool useSubtensor);
23 
24 LayerTestResult<float, 3> ConcatTest(
25     armnn::IWorkloadFactory& workloadFactory,
26     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
27     const armnn::ITensorHandleFactory& tensorHandleFactory);
28 
29 LayerTestResult<armnn::BFloat16, 3> ConcatBFloat16Test(
30     armnn::IWorkloadFactory& workloadFactory,
31     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
32     const armnn::ITensorHandleFactory& tensorHandleFactory);
33 
34 LayerTestResult<armnn::Half, 3> ConcatFloat16Test(
35     armnn::IWorkloadFactory& workloadFactory,
36     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
37     const armnn::ITensorHandleFactory& tensorHandleFactory);
38 
39 LayerTestResult<int32_t, 3> ConcatInt32Test(
40     armnn::IWorkloadFactory& workloadFactory,
41     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
42     const armnn::ITensorHandleFactory& tensorHandleFactory);
43 
44 LayerTestResult<uint8_t, 3> ConcatUint8Test(
45     armnn::IWorkloadFactory& workloadFactory,
46     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
47     const armnn::ITensorHandleFactory& tensorHandleFactory);
48 
49 LayerTestResult<uint16_t, 3> ConcatUint16Test(
50     armnn::IWorkloadFactory& workloadFactory,
51     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
52     const armnn::ITensorHandleFactory& tensorHandleFactory);
53 
54 LayerTestResult<uint8_t, 3> ConcatUint8DifferentQParamsTest(
55     armnn::IWorkloadFactory& workloadFactory,
56     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
57     const armnn::ITensorHandleFactory& tensorHandleFactory);
58 
59 LayerTestResult<float, 1> Concat1dTest(
60     armnn::IWorkloadFactory& workloadFactory,
61     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
62     const armnn::ITensorHandleFactory& tensorHandleFactory);
63 
64 LayerTestResult<float, 2> Concat2dDim0Test(
65     armnn::IWorkloadFactory& workloadFactory,
66     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
67     const armnn::ITensorHandleFactory& tensorHandleFactory);
68 
69 LayerTestResult<float, 2> Concat2dDim1Test(
70     armnn::IWorkloadFactory& workloadFactory,
71     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
72     const armnn::ITensorHandleFactory& tensorHandleFactory);
73 
74 LayerTestResult<float, 2> Concat2dDim0DiffInputDimsTest(
75     armnn::IWorkloadFactory& workloadFactory,
76     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
77     const armnn::ITensorHandleFactory& tensorHandleFactory);
78 
79 LayerTestResult<float, 2> Concat2dDim1DiffInputDimsTest(
80     armnn::IWorkloadFactory& workloadFactory,
81     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
82     const armnn::ITensorHandleFactory& tensorHandleFactory);
83 
84 LayerTestResult<float, 3> Concat3dDim0Test(
85     armnn::IWorkloadFactory& workloadFactory,
86     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
87     const armnn::ITensorHandleFactory& tensorHandleFactory);
88 
89 LayerTestResult<float, 3> Concat3dDim1Test(
90     armnn::IWorkloadFactory& workloadFactory,
91     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
92     const armnn::ITensorHandleFactory& tensorHandleFactory);
93 
94 LayerTestResult<float, 3> Concat3dDim2Test(
95     armnn::IWorkloadFactory& workloadFactory,
96     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
97     const armnn::ITensorHandleFactory& tensorHandleFactory,
98     bool useSubtensor);
99 
100 LayerTestResult<float, 3> Concat3dDim0DiffInputDimsTest(
101     armnn::IWorkloadFactory& workloadFactory,
102     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
103     const armnn::ITensorHandleFactory& tensorHandleFactory);
104 
105 LayerTestResult<float, 3> Concat3dDim1DiffInputDimsTest(
106     armnn::IWorkloadFactory& workloadFactory,
107     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
108     const armnn::ITensorHandleFactory& tensorHandleFactory);
109 
110 LayerTestResult<float, 3> Concat3dDim2DiffInputDimsTest(
111     armnn::IWorkloadFactory& workloadFactory,
112     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
113     const armnn::ITensorHandleFactory& tensorHandleFactory,
114     bool useSubtensor);
115 
116 LayerTestResult<float, 4> Concat4dDim0Test(
117     armnn::IWorkloadFactory& workloadFactory,
118     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
119     const armnn::ITensorHandleFactory& tensorHandleFactory);
120 
121 LayerTestResult<float, 4> Concat4dDim1Test(
122     armnn::IWorkloadFactory& workloadFactory,
123     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
124     const armnn::ITensorHandleFactory& tensorHandleFactory);
125 
126 LayerTestResult<float, 4> Concat4dDim2Test(
127     armnn::IWorkloadFactory& workloadFactory,
128     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
129     const armnn::ITensorHandleFactory& tensorHandleFactory);
130 
131 LayerTestResult<float, 4> Concat4dDim3Test(
132     armnn::IWorkloadFactory& workloadFactory,
133     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
134     const armnn::ITensorHandleFactory& tensorHandleFactory,
135     bool useSubtensor);
136 
137 LayerTestResult<float, 4> Concat4dDiffShapeDim0Test(
138     armnn::IWorkloadFactory& workloadFactory,
139     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
140     const armnn::ITensorHandleFactory& tensorHandleFactory);
141 
142 LayerTestResult<float, 4> Concat4dDiffShapeDim1Test(
143     armnn::IWorkloadFactory& workloadFactory,
144     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
145     const armnn::ITensorHandleFactory& tensorHandleFactory);
146 
147 LayerTestResult<float, 4> Concat4dDiffShapeDim2Test(
148     armnn::IWorkloadFactory& workloadFactory,
149     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
150     const armnn::ITensorHandleFactory& tensorHandleFactory);
151 
152 LayerTestResult<float, 4> Concat4dDiffShapeDim3Test(
153     armnn::IWorkloadFactory& workloadFactory,
154     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
155     const armnn::ITensorHandleFactory& tensorHandleFactory,
156     bool useSubtensor);
157 
158 LayerTestResult<uint8_t, 4> Concat4dDim0Uint8Test(
159     armnn::IWorkloadFactory& workloadFactory,
160     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
161     const armnn::ITensorHandleFactory& tensorHandleFactory);
162 
163 LayerTestResult<uint8_t, 4> Concat4dDim1Uint8Test(
164     armnn::IWorkloadFactory& workloadFactory,
165     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
166     const armnn::ITensorHandleFactory& tensorHandleFactory);
167 
168 LayerTestResult<uint8_t, 4> Concat4dDim2Uint8Test(
169     armnn::IWorkloadFactory& workloadFactory,
170     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
171     const armnn::ITensorHandleFactory& tensorHandleFactory);
172 
173 LayerTestResult<uint8_t, 4> Concat4dDim3Uint8Test(
174     armnn::IWorkloadFactory& workloadFactory,
175     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
176     const armnn::ITensorHandleFactory& tensorHandleFactory,
177     bool useSubtensor);
178 
179 LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim0Uint8Test(
180     armnn::IWorkloadFactory& workloadFactory,
181     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
182     const armnn::ITensorHandleFactory& tensorHandleFactory);
183 
184 LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim1Uint8Test(
185     armnn::IWorkloadFactory& workloadFactory,
186     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
187     const armnn::ITensorHandleFactory& tensorHandleFactory);
188 
189 LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim2Uint8Test(
190     armnn::IWorkloadFactory& workloadFactory,
191     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
192     const armnn::ITensorHandleFactory& tensorHandleFactory);
193 
194 LayerTestResult<uint8_t, 4> Concat4dDiffShapeDim3Uint8Test(
195     armnn::IWorkloadFactory& workloadFactory,
196     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
197     const armnn::ITensorHandleFactory& tensorHandleFactory,
198     bool useSubtensor);
199 
200 LayerTestResult<uint8_t, 1> Concat1dUint8Test(
201     armnn::IWorkloadFactory& workloadFactory,
202     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
203     const armnn::ITensorHandleFactory& tensorHandleFactory);
204 
205 LayerTestResult<uint8_t, 2> Concat2dDim0Uint8Test(
206     armnn::IWorkloadFactory& workloadFactory,
207     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
208     const armnn::ITensorHandleFactory& tensorHandleFactory);
209 
210 LayerTestResult<uint8_t, 2> Concat2dDim1Uint8Test(
211     armnn::IWorkloadFactory& workloadFactory,
212     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
213     const armnn::ITensorHandleFactory& tensorHandleFactory);
214 
215 LayerTestResult<uint8_t, 2> Concat2dDim0DiffInputDimsUint8Test(
216     armnn::IWorkloadFactory& workloadFactory,
217     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
218     const armnn::ITensorHandleFactory& tensorHandleFactory);
219 
220 LayerTestResult<uint8_t, 2> Concat2dDim1DiffInputDimsUint8Test(
221     armnn::IWorkloadFactory& workloadFactory,
222     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
223     const armnn::ITensorHandleFactory& tensorHandleFactory);
224 
225 LayerTestResult<uint8_t, 3> Concat3dDim0Uint8Test(
226     armnn::IWorkloadFactory& workloadFactory,
227     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
228     const armnn::ITensorHandleFactory& tensorHandleFactory);
229 
230 LayerTestResult<uint8_t, 3> Concat3dDim1Uint8Test(
231     armnn::IWorkloadFactory& workloadFactory,
232     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
233     const armnn::ITensorHandleFactory& tensorHandleFactory);
234 
235 LayerTestResult<uint8_t, 3> Concat3dDim2Uint8Test(
236     armnn::IWorkloadFactory& workloadFactory,
237     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
238     const armnn::ITensorHandleFactory& tensorHandleFactory,
239     bool useSubtensor);
240 
241 LayerTestResult<uint8_t, 3> Concat3dDim0DiffInputDimsUint8Test(
242     armnn::IWorkloadFactory& workloadFactory,
243     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
244     const armnn::ITensorHandleFactory& tensorHandleFactory);
245 
246 LayerTestResult<uint8_t, 3> Concat3dDim1DiffInputDimsUint8Test(
247     armnn::IWorkloadFactory& workloadFactory,
248     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
249     const armnn::ITensorHandleFactory& tensorHandleFactory);
250 
251 LayerTestResult<uint8_t, 3> Concat3dDim2DiffInputDimsUint8Test(
252     armnn::IWorkloadFactory& workloadFactory,
253     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
254     const armnn::ITensorHandleFactory& tensorHandleFactory,
255     bool useSubtensor);
256 
257 LayerTestResult<uint8_t, 3> ConcatDifferentInputOutputQParamUint8Test(
258     armnn::IWorkloadFactory& workloadFactory,
259     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
260     const armnn::ITensorHandleFactory& tensorHandleFactory,
261     bool useSubtensor);
262 
263 LayerTestResult<int16_t, 3> ConcatDifferentInputOutputQParamInt16Test(
264     armnn::IWorkloadFactory& workloadFactory,
265     const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
266     const armnn::ITensorHandleFactory& tensorHandleFactory,
267     bool useSubtensor);
268