blob: 7a6df11d7fb388c90989a1f5c666f2591beaface [file] [log] [blame]
Aron Virginas-Tar56055192018-11-12 18:10:43 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <backendsCommon/IBackendInternal.hpp>
9#include <backendsCommon/IMemoryManager.hpp>
10#include <backendsCommon/test/WorkloadFactoryHelper.hpp>
11
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000012#include <neon/NeonBackend.hpp>
Aron Virginas-Tar56055192018-11-12 18:10:43 +000013#include <neon/NeonWorkloadFactory.hpp>
14
Aron Virginas-Tar56055192018-11-12 18:10:43 +000015#include <boost/polymorphic_pointer_cast.hpp>
16
17namespace
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(
30 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
31 {
Aron Virginas-Tar56055192018-11-12 18:10:43 +000032 return armnn::NeonWorkloadFactory(
33 boost::polymorphic_pointer_downcast<armnn::NeonMemoryManager>(memoryManager));
34 }
35};
36
37using NeonWorkloadFactoryHelper = WorkloadFactoryHelper<armnn::NeonWorkloadFactory>;
38
39} // anonymous namespace