Imported Upstream version 1.9.0
[platform/core/ml/nnfw.git] / runtime / onert / backend / acl_common / AclTensorRegistry.h
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __ONERT_BACKEND_ACL_COMMON_ACL_TENSOR_REGISTRY_H__
18 #define __ONERT_BACKEND_ACL_COMMON_ACL_TENSOR_REGISTRY_H__
19
20 #include "backend/ITensorRegistry.h"
21
22 namespace onert
23 {
24 namespace backend
25 {
26 namespace acl_common
27 {
28
29 /**
30  * @brief Tensor registry class for acl backends
31  *
32  * This is implemented as a wrapper of AclTensorManager.
33  */
34 template <typename T_AclTensorManager> class AclTensorRegistry : public ITensorRegistry
35 {
36 public:
37   AclTensorRegistry(T_AclTensorManager *tensor_mgr) : _tensor_mgr{tensor_mgr} {}
38
39   std::shared_ptr<ITensor> getITensor(const ir::OperandIndex &ind) override
40   {
41     return _tensor_mgr->at(ind);
42   }
43
44   std::shared_ptr<ITensor> getNativeITensor(const ir::OperandIndex &ind) override
45   {
46     return getITensor(ind);
47   }
48
49   auto getAclTensor(const ir::OperandIndex &ind) { return _tensor_mgr->at(ind); }
50
51 private:
52   T_AclTensorManager *_tensor_mgr;
53 };
54
55 } // namespace acl_common
56 } // namespace backend
57 } // namespace onert
58
59 #endif // __ONERT_BACKEND_ACL_COMMON_ACL_TENSOR_REGISTRY_H__