blob: 8d92ddf44d880a0ad1ada102ef60d69073808479 [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
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>
15
Aron Virginas-Tar56055192018-11-12 18:10:43 +000016namespace
17{
18
19template<>
20struct WorkloadFactoryHelper<armnn::NeonWorkloadFactory>
21{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000022 static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
Aron Virginas-Tar56055192018-11-12 18:10:43 +000023 {
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000024 armnn::NeonBackend backend;
25 return backend.CreateMemoryManager();
26 }
Aron Virginas-Tar56055192018-11-12 18:10:43 +000027
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000028 static armnn::NeonWorkloadFactory GetFactory(
29 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
30 {
Aron Virginas-Tar56055192018-11-12 18:10:43 +000031 return armnn::NeonWorkloadFactory(
Jan Eilers3c9e0452020-04-10 13:00:44 +010032 armnn::PolymorphicPointerDowncast<armnn::NeonMemoryManager>(memoryManager));
Aron Virginas-Tar56055192018-11-12 18:10:43 +000033 }
34};
35
36using NeonWorkloadFactoryHelper = WorkloadFactoryHelper<armnn::NeonWorkloadFactory>;
37
38} // anonymous namespace