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