diff options
Diffstat (limited to 'runtime/neurun/core/include/ir/Operand.h')
-rw-r--r-- | runtime/neurun/core/include/ir/Operand.h | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/runtime/neurun/core/include/ir/Operand.h b/runtime/neurun/core/include/ir/Operand.h deleted file mode 100644 index b1f28de48..000000000 --- a/runtime/neurun/core/include/ir/Operand.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERAND_H__ -#define __NEURUN_IR_OPERAND_H__ - -#include <cassert> -#include <cstdint> -#include <cpp14/memory.h> -#include <algorithm> - -#include "ir/Data.h" -#include "ir/DataType.h" -#include "ir/OperandInfo.h" -#include "ir/operand/ParentInfo.h" // TODO Remove this dependency -#include "ir/OperationIndexList.h" - -namespace neurun -{ -namespace ir -{ - -class Operand -{ -public: - explicit Operand(const Shape &shape, const TypeInfo &type) : _info{shape, type} - { - // DO NOTHING - } - -public: - const Shape &shape(void) const { return _info.shape(); } - const TypeInfo &typeInfo(void) const { return _info.typeInfo(); } - const OperandInfo &info(void) const { return _info; } - size_t operandSize(void) const; - - const OperationIndexList &getUses() const { return _uses; } - const OperationIndexList &getDef() const { return _def; } - void appendUse(const OperationIndex &idx); - void removeUse(const OperationIndex &idx); - void appendDef(const OperationIndex &idx); - void removeDef(const OperationIndex &idx); - -public: - void type(const DataType type) { _info.type(type); }; - -public: - void data(std::unique_ptr<Data> &&data) { _data = std::move(data); } - const Data &data(void) const - { - assert(_data); - return *_data; - } - - /** - * @brief Get true if Operand has data, otherwise @c false - a @return @c true if Operand has data, otherwise @c false - */ - bool isConstant(void) const { return _data != nullptr; } - -public: - template <typename T, typename... Args> void data(Args &&... args) - { - data(nnfw::cpp14::make_unique<T>(std::forward<Args>(args)...)); - } - -public: - template <typename T> T asScalar(void) const - { - assert((shape().rank() == 0) || ((shape().rank() == 1) && (shape().dim(0) == 1))); - assert(_data != nullptr); - assert((_data->base() != nullptr) && (_data->size() == sizeof(T))); - - return *(reinterpret_cast<const T *>(_data->base())); - } - - template <typename T> std::vector<T> asVector() const - { - assert(isConstant()); - assert(_data->size() % sizeof(T) == 0); - - const auto *base = reinterpret_cast<const T *>(_data->base()); - const std::size_t size = _data->size() / sizeof(T); - return std::vector<T>(base, base + size); - } - -public: - /** - * @brief Set parent information - * @param[in] parent_info Parent information - */ - void parent_info(std::unique_ptr<operand::ParentInfo> &&parent_info); - /** - * @brief Return parent information pointer as constant - * @return Parent information pointer - */ - const operand::ParentInfo *parent_info() const; - /** - * @brief Return parent information pointer - * @return Perent information pointer - */ - operand::ParentInfo *parent_info(); - -private: - OperandInfo _info; - std::shared_ptr<Data> _data; - - OperationIndexList _uses; - OperationIndexList _def; // size is 0 (constant) or 1 (from def operation) - - std::shared_ptr<operand::ParentInfo> _parent_info; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERAND_H__ |