25 #include <doctest/doctest.h> 32 TEST_CASE(
"NeonAbsEndToEndTestFloat32")
34 std::vector<float> expectedOutput =
36 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
37 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
40 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
46 TEST_CASE(
"ConstantUsage_Neon_Float32")
48 CHECK(ConstantUsageFloat32Test(neonDefaultBackends));
51 #if defined(ARMNNREF_ENABLED) 55 TEST_CASE(
"FallbackToCpuRef")
57 using namespace armnn;
86 CHECK(runtime->LoadNetwork(netId, std::move(optNet)) ==
Status::Success);
91 TEST_CASE(
"NeonGreaterSimpleEndToEndTest")
93 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
94 0, 0, 0, 0, 0, 0, 0, 0 });
96 ComparisonSimpleEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
101 TEST_CASE(
"NeonGreaterSimpleEndToEndUint8Test")
103 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
104 0, 0, 0, 0, 0, 0, 0, 0 });
106 ComparisonSimpleEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
111 TEST_CASE(
"NeonGreaterBroadcastEndToEndTest")
113 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
116 ComparisonBroadcastEndToEnd<armnn::DataType::Float32>(neonDefaultBackends,
121 TEST_CASE(
"NeonGreaterBroadcastEndToEndUint8Test")
123 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
126 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends,
131 TEST_CASE(
"NeonConcatEndToEndDim0Test")
133 ConcatDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
136 TEST_CASE(
"NeonConcatEndToEndDim0Uint8Test")
138 ConcatDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
141 TEST_CASE(
"NeonConcatEndToEndDim1Test")
143 ConcatDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
146 TEST_CASE(
"NeonConcatEndToEndDim1Uint8Test")
148 ConcatDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
151 TEST_CASE(
"NeonConcatEndToEndDim3Test")
153 ConcatDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
156 TEST_CASE(
"NeonConcatEndToEndDim3Uint8Test")
158 ConcatDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
162 TEST_CASE(
"DephtToSpaceEndToEndNchwFloat32")
167 TEST_CASE(
"DephtToSpaceEndToEndNchwFloat16")
172 TEST_CASE(
"DephtToSpaceEndToEndNchwUint8")
177 TEST_CASE(
"DephtToSpaceEndToEndNchwInt16")
182 TEST_CASE(
"DephtToSpaceEndToEndNhwcFloat32")
187 TEST_CASE(
"DephtToSpaceEndToEndNhwcFloat16")
192 TEST_CASE(
"DephtToSpaceEndToEndNhwcUint8")
197 TEST_CASE(
"DephtToSpaceEndToEndNhwcInt16")
203 TEST_CASE(
"DequantizeEndToEndSimpleTest")
205 DequantizeEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
208 TEST_CASE(
"DequantizeEndToEndOffsetTest")
210 DequantizeEndToEndOffset<armnn::DataType::QAsymmU8>(neonDefaultBackends);
213 TEST_CASE(
"NeonEluEndToEndTestFloat32")
215 EluEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
218 TEST_CASE(
"NeonEluEndToEndTestFloat16")
220 EluEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
224 TEST_CASE(
"NeonHardSwishEndToEndTestFloat32")
226 HardSwishEndToEndTest<armnn::DataType::Float32>(neonDefaultBackends);
229 TEST_CASE(
"NeonHardSwishEndToEndTestFloat16")
231 HardSwishEndToEndTest<armnn::DataType::Float16>(neonDefaultBackends);
234 TEST_CASE(
"NeonHardSwishEndToEndTestQAsymmS8")
236 HardSwishEndToEndTest<armnn::DataType::QAsymmS8>(neonDefaultBackends);
239 TEST_CASE(
"NeonHardSwishEndToEndTestQAsymmU8")
241 HardSwishEndToEndTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
244 TEST_CASE(
"NeonPreluEndToEndFloat32Test")
246 PreluEndToEndNegativeTest<armnn::DataType::Float32>(neonDefaultBackends);
249 TEST_CASE(
"NeonPreluEndToEndTestUint8Test")
251 PreluEndToEndPositiveTest<armnn::DataType::QAsymmU8>(neonDefaultBackends);
254 TEST_CASE(
"NeonSpaceToDepthNhwcEndToEndTest1")
259 TEST_CASE(
"NeonSpaceToDepthNchwEndToEndTest1")
264 TEST_CASE(
"NeonSpaceToDepthNhwcEndToEndTest2")
269 TEST_CASE(
"NeonSpaceToDepthNchwEndToEndTest2")
274 TEST_CASE(
"NeonSplitter1dEndToEndTest")
276 Splitter1dEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
279 TEST_CASE(
"NeonSplitter1dEndToEndUint8Test")
281 Splitter1dEndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
284 TEST_CASE(
"NeonSplitter2dDim0EndToEndTest")
286 Splitter2dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
289 TEST_CASE(
"NeonSplitter2dDim1EndToEndTest")
291 Splitter2dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
294 TEST_CASE(
"NeonSplitter2dDim0EndToEndUint8Test")
296 Splitter2dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
299 TEST_CASE(
"NeonSplitter2dDim1EndToEndUint8Test")
301 Splitter2dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
304 TEST_CASE(
"NeonSplitter3dDim0EndToEndTest")
306 Splitter3dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
309 TEST_CASE(
"NeonSplitter3dDim1EndToEndTest")
311 Splitter3dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
314 TEST_CASE(
"NeonSplitter3dDim2EndToEndTest")
316 Splitter3dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
319 TEST_CASE(
"NeonSplitter3dDim0EndToEndUint8Test")
321 Splitter3dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
324 TEST_CASE(
"NeonSplitter3dDim1EndToEndUint8Test")
326 Splitter3dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
329 TEST_CASE(
"NeonSplitter3dDim2EndToEndUint8Test")
331 Splitter3dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
334 TEST_CASE(
"NeonSplitter4dDim0EndToEndTest")
336 Splitter4dDim0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
339 TEST_CASE(
"NeonSplitter4dDim1EndToEndTest")
341 Splitter4dDim1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
344 TEST_CASE(
"NeonSplitter4dDim2EndToEndTest")
346 Splitter4dDim2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
349 TEST_CASE(
"NeonSplitter4dDim3EndToEndTest")
351 Splitter4dDim3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
354 TEST_CASE(
"NeonSplitter4dDim0EndToEndUint8Test")
356 Splitter4dDim0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
359 TEST_CASE(
"NeonSplitter4dDim1EndToEndUint8Test")
361 Splitter4dDim1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
364 TEST_CASE(
"NeonSplitter4dDim2EndToEndUint8Test")
366 Splitter4dDim2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
369 TEST_CASE(
"NeonSplitter4dDim3EndToEndUint8Test")
371 Splitter4dDim3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
374 TEST_CASE(
"NeonQuantizedLstmEndToEndTest")
379 TEST_CASE(
"NeonTransposeConvolution2dEndToEndFloatNchwTest")
381 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
385 TEST_CASE(
"NeonTransposeConvolution2dEndToEndUint8NchwTest")
387 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
391 TEST_CASE(
"NeonTransposeConvolution2dEndToEndFloatNhwcTest")
393 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
397 TEST_CASE(
"NeonTransposeConvolution2dEndToEndUint8NhwcTest")
399 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
403 TEST_CASE(
"NeonImportNonAlignedInputPointerTest")
405 ImportNonAlignedInputPointerTest(neonDefaultBackends);
408 TEST_CASE(
"NeonExportNonAlignedOutputPointerTest")
410 ExportNonAlignedOutputPointerTest(neonDefaultBackends);
413 TEST_CASE(
"NeonImportAlignedPointerTest")
415 ImportAlignedPointerTest(neonDefaultBackends);
418 TEST_CASE(
"NeonImportOnlyWorkload")
420 ImportOnlyWorkload(neonDefaultBackends);
423 TEST_CASE(
"NeonExportOnlyWorkload")
425 ExportOnlyWorkload(neonDefaultBackends);
428 TEST_CASE(
"NeonImportAndExportWorkload")
430 ImportAndExportWorkload(neonDefaultBackends);
433 TEST_CASE(
"NeonExportOutputWithSeveralOutputSlotConnectionsTest")
435 ExportOutputWithSeveralOutputSlotConnectionsTest(neonDefaultBackends);
439 TEST_CASE(
"NeonInstanceNormalizationNchwEndToEndTest1")
444 TEST_CASE(
"NeonInstanceNormalizationNchwEndToEndTest2")
450 TEST_CASE(
"NeonFillEndToEndTest")
452 FillEndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
455 TEST_CASE(
"RefFillEndToEndTestFloat16")
457 FillEndToEnd<armnn::DataType::Float16>(neonDefaultBackends);
460 TEST_CASE(
"NeonFillEndToEndTestInt32")
462 FillEndToEnd<armnn::DataType::Signed32>(neonDefaultBackends);
466 TEST_CASE(
"NeonArgMaxSimpleTest")
468 ArgMaxEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
471 TEST_CASE(
"NeonArgMinSimpleTest")
473 ArgMinEndToEndSimple<armnn::DataType::Float32>(neonDefaultBackends);
476 TEST_CASE(
"NeonArgMaxAxis0Test")
478 ArgMaxAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
481 TEST_CASE(
"NeonArgMinAxis0Test")
483 ArgMinAxis0EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
486 TEST_CASE(
"NeonArgMaxAxis1Test")
488 ArgMaxAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
491 TEST_CASE(
"NeonArgMinAxis1Test")
493 ArgMinAxis1EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
496 TEST_CASE(
"NeonArgMaxAxis2Test")
498 ArgMaxAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
501 TEST_CASE(
"NeonArgMinAxis2Test")
503 ArgMinAxis2EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
506 TEST_CASE(
"NeonArgMaxAxis3Test")
508 ArgMaxAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
511 TEST_CASE(
"NeonArgMinAxis3Test")
513 ArgMinAxis3EndToEnd<armnn::DataType::Float32>(neonDefaultBackends);
516 TEST_CASE(
"NeonArgMaxSimpleTestQuantisedAsymm8")
518 ArgMaxEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
521 TEST_CASE(
"NeonArgMinSimpleTestQuantisedAsymm8")
523 ArgMinEndToEndSimple<armnn::DataType::QAsymmU8>(neonDefaultBackends);
526 TEST_CASE(
"NeonArgMaxAxis0TestQuantisedAsymm8")
528 ArgMaxAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
531 TEST_CASE(
"NeonArgMinAxis0TestQuantisedAsymm8")
533 ArgMinAxis0EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
536 TEST_CASE(
"NeonArgMaxAxis1TestQuantisedAsymm8")
538 ArgMaxAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
541 TEST_CASE(
"NeonArgMinAxis1TestQuantisedAsymm8")
543 ArgMinAxis1EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
546 TEST_CASE(
"NeonArgMaxAxis2TestQuantisedAsymm8")
548 ArgMaxAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
551 TEST_CASE(
"NeonArgMinAxis2TestQuantisedAsymm8")
553 ArgMinAxis2EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
556 TEST_CASE(
"NeonArgMaxAxis3TestQuantisedAsymm8")
558 ArgMaxAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
561 TEST_CASE(
"NeonArgMinAxis3TestQuantisedAsymm8")
563 ArgMinAxis3EndToEnd<armnn::DataType::QAsymmU8>(neonDefaultBackends);
566 TEST_CASE(
"NeonStridedSliceInvalidSliceEndToEndTest")
568 StridedSliceInvalidSliceEndToEndTest(neonDefaultBackends);
744 TEST_CASE(
"NeonQLstmEndToEndTest")
void SpaceToDepthNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
static IRuntimePtr Create(const CreationOptions &options)
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
CPU Execution: Reference C++ kernels.
void QuantizeData(RawType *quant, const float *dequant, const armnn::TensorInfo &info)
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
void InstanceNormalizationNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
Copyright (c) 2021 ARM Limited and Contributors.
void QLstmEndToEnd(const std::vector< armnn::BackendId > &backends)
void SpaceToDepthNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
TEST_SUITE("NeonEndToEnd")
virtual void SetTensorInfo(const TensorInfo &tensorInfo)=0
void SpaceToDepthNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
void SpaceToDepthNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
Create an optimized version of the network.
int32_t GetQuantizationOffset() const
float GetQuantizationScale() const
std::unique_ptr< IOptimizedNetwork, void(*)(IOptimizedNetwork *network)> IOptimizedNetworkPtr
void QuantizedLstmEndToEnd(const std::vector< armnn::BackendId > &backends)
CPU Execution: NEON: ArmCompute.
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
virtual int Connect(IInputSlot &destination)=0
A NormalizationDescriptor for the NormalizationLayer.
static INetworkPtr Create(NetworkOptions networkOptions={})
unsigned int GetNumElements() const
void InstanceNormalizationNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)