blob: 89052d634e78c675e4c0d207baa289be2cd6a427 [file] [log] [blame]
Aron Virginas-Tar56055192018-11-12 18:10:43 +00001//
Teresa Charlinfc8978f2020-08-06 11:30:46 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tar56055192018-11-12 18:10:43 +00003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Matteo Martincighe5b8eb92019-11-28 15:45:42 +00008#include <armnn/backends/IBackendInternal.hpp>
9#include <armnn/backends/IMemoryManager.hpp>
Jan Eilers3c9e0452020-04-10 13:00:44 +010010#include <armnn/utility/PolymorphicDowncast.hpp>
Aron Virginas-Tar56055192018-11-12 18:10:43 +000011#include <backendsCommon/test/WorkloadFactoryHelper.hpp>
12
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000013#include <neon/NeonBackend.hpp>
Aron Virginas-Tar56055192018-11-12 18:10:43 +000014#include <neon/NeonWorkloadFactory.hpp>
Teresa Charlinfc8978f2020-08-06 11:30:46 +010015#include "neon/NeonTensorHandleFactory.hpp"
Aron Virginas-Tar56055192018-11-12 18:10:43 +000016
Aron Virginas-Tar56055192018-11-12 18:10:43 +000017namespace
18{
19
20template<>
21struct WorkloadFactoryHelper<armnn::NeonWorkloadFactory>
22{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000023 static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
Aron Virginas-Tar56055192018-11-12 18:10:43 +000024 {
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000025 armnn::NeonBackend backend;
26 return backend.CreateMemoryManager();
27 }
Aron Virginas-Tar56055192018-11-12 18:10:43 +000028
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000029 static armnn::NeonWorkloadFactory GetFactory(
Sadik Armagan04a72972020-09-14 15:44:18 +010030 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
31 const armnn::ModelOptions& modelOptions = {})
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000032 {
Sadik Armagan04a72972020-09-14 15:44:18 +010033 armnn::NeonBackend backend;
34 return armnn::NeonWorkloadFactory(armnn::PolymorphicPointerDowncast<armnn::NeonMemoryManager>(memoryManager),
35 backend.CreateBackendSpecificModelContext(modelOptions));
Aron Virginas-Tar56055192018-11-12 18:10:43 +000036 }
Teresa Charlinfc8978f2020-08-06 11:30:46 +010037
38 static armnn::NeonTensorHandleFactory GetTensorHandleFactory(
39 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager = nullptr)
40 {
41
42 return armnn::NeonTensorHandleFactory(
43 armnn::PolymorphicPointerDowncast<armnn::NeonMemoryManager>(memoryManager));
44 }
Aron Virginas-Tar56055192018-11-12 18:10:43 +000045};
46
47using NeonWorkloadFactoryHelper = WorkloadFactoryHelper<armnn::NeonWorkloadFactory>;
48
49} // anonymous namespace