xref: /aosp_15_r20/external/armnn/src/backends/tosaReference/TosaRefTensorHandleFactory.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "TosaRefTensorHandleFactory.hpp"
7 #include "TosaRefTensorHandle.hpp"
8 
9 #include <armnn/utility/IgnoreUnused.hpp>
10 
11 namespace armnn
12 {
13 
14 using FactoryId = ITensorHandleFactory::FactoryId;
15 
GetIdStatic()16 const FactoryId& TosaRefTensorHandleFactory::GetIdStatic()
17 {
18     static const FactoryId s_Id(TosaRefTensorHandleFactoryId());
19     return s_Id;
20 }
21 
CreateSubTensorHandle(ITensorHandle & parent,const TensorShape & subTensorShape,const unsigned int * subTensorOrigin) const22 std::unique_ptr<ITensorHandle> TosaRefTensorHandleFactory::CreateSubTensorHandle(ITensorHandle& parent,
23                                                                                  const TensorShape& subTensorShape,
24                                                                                  const unsigned int* subTensorOrigin)
25                                                                                  const
26 {
27     IgnoreUnused(parent, subTensorShape, subTensorOrigin);
28     return nullptr;
29 }
30 
CreateTensorHandle(const TensorInfo & tensorInfo) const31 std::unique_ptr<ITensorHandle> TosaRefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo) const
32 {
33     return std::make_unique<TosaRefTensorHandle>(tensorInfo, m_MemoryManager);
34 }
35 
CreateTensorHandle(const TensorInfo & tensorInfo,DataLayout dataLayout) const36 std::unique_ptr<ITensorHandle> TosaRefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
37                                                                               DataLayout dataLayout) const
38 {
39     IgnoreUnused(dataLayout);
40     return std::make_unique<TosaRefTensorHandle>(tensorInfo, m_MemoryManager);
41 }
42 
CreateTensorHandle(const TensorInfo & tensorInfo,const bool IsMemoryManaged) const43 std::unique_ptr<ITensorHandle> TosaRefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
44                                                                               const bool IsMemoryManaged) const
45 {
46     if (IsMemoryManaged)
47     {
48         return std::make_unique<TosaRefTensorHandle>(tensorInfo, m_MemoryManager);
49     }
50     else
51     {
52         return std::make_unique<TosaRefTensorHandle>(tensorInfo, m_ImportFlags);
53     }
54 }
55 
CreateTensorHandle(const TensorInfo & tensorInfo,DataLayout dataLayout,const bool IsMemoryManaged) const56 std::unique_ptr<ITensorHandle> TosaRefTensorHandleFactory::CreateTensorHandle(const TensorInfo& tensorInfo,
57                                                                               DataLayout dataLayout,
58                                                                               const bool IsMemoryManaged) const
59 {
60     IgnoreUnused(dataLayout);
61     if (IsMemoryManaged)
62     {
63         return std::make_unique<TosaRefTensorHandle>(tensorInfo, m_MemoryManager);
64     }
65     else
66     {
67         return std::make_unique<TosaRefTensorHandle>(tensorInfo, m_ImportFlags);
68     }
69 }
70 
GetId() const71 const FactoryId& TosaRefTensorHandleFactory::GetId() const
72 {
73     return GetIdStatic();
74 }
75 
SupportsSubTensors() const76 bool TosaRefTensorHandleFactory::SupportsSubTensors() const
77 {
78     return false;
79 }
80 
GetExportFlags() const81 MemorySourceFlags TosaRefTensorHandleFactory::GetExportFlags() const
82 {
83     return m_ExportFlags;
84 }
85 
GetImportFlags() const86 MemorySourceFlags TosaRefTensorHandleFactory::GetImportFlags() const
87 {
88     return m_ImportFlags;
89 }
90 
91 } // namespace armnn