xref: /aosp_15_r20/external/armnn/src/backends/reference/RefTensorHandleFactory.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "RefTensorHandleFactory.hpp"
7 #include "RefTensorHandle.hpp"
8 
9 #include <armnn/utility/IgnoreUnused.hpp>
10 
11 namespace armnn
12 {
13 
14 using FactoryId = ITensorHandleFactory::FactoryId;
15 
GetIdStatic()16 const FactoryId& RefTensorHandleFactory::GetIdStatic()
17 {
18     static const FactoryId s_Id(RefTensorHandleFactoryId());
19     return s_Id;
20 }
21 
CreateSubTensorHandle(ITensorHandle & parent,TensorShape const & subTensorShape,unsigned int const * subTensorOrigin) const22 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateSubTensorHandle(ITensorHandle& parent,
23                                                                              TensorShape const& subTensorShape,
24                                                                              unsigned int const* subTensorOrigin) const
25 {
26     IgnoreUnused(parent, subTensorShape, subTensorOrigin);
27     return nullptr;
28 }
29 
CreateTensorHandle(const TensorInfo & tensorInfo) const30 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const
31 {
32     return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
33 }
34 
CreateTensorHandle(const TensorInfo & tensorInfo,DataLayout dataLayout) const35 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
36                                                                           DataLayout dataLayout) const
37 {
38     IgnoreUnused(dataLayout);
39     return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
40 }
41 
CreateTensorHandle(const TensorInfo & tensorInfo,const bool IsMemoryManaged) const42 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
43                                                                           const bool IsMemoryManaged) const
44 {
45     if (IsMemoryManaged)
46     {
47         return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
48     }
49     else
50     {
51         return std::make_unique<RefTensorHandle>(tensorInfo);
52     }
53 }
54 
CreateTensorHandle(const TensorInfo & tensorInfo,DataLayout dataLayout,const bool IsMemoryManaged) const55 std::unique_ptr<ITensorHandle> RefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
56                                                                           DataLayout dataLayout,
57                                                                           const bool IsMemoryManaged) const
58 {
59     IgnoreUnused(dataLayout);
60     if (IsMemoryManaged)
61     {
62         return std::make_unique<RefTensorHandle>(tensorInfo, m_MemoryManager);
63     }
64     else
65     {
66         return std::make_unique<RefTensorHandle>(tensorInfo);
67     }
68 }
69 
GetId() const70 const FactoryId& RefTensorHandleFactory::GetId() const
71 {
72     return GetIdStatic();
73 }
74 
SupportsSubTensors() const75 bool RefTensorHandleFactory::SupportsSubTensors() const
76 {
77     return false;
78 }
79 
GetExportFlags() const80 MemorySourceFlags RefTensorHandleFactory::GetExportFlags() const
81 {
82     return m_ExportFlags;
83 }
84 
GetImportFlags() const85 MemorySourceFlags RefTensorHandleFactory::GetImportFlags() const
86 {
87     return m_ImportFlags;
88 }
89 
90 } // namespace armnn
91