| /*! |
| * Copyright (c) 2017 by Contributors |
| * \file tvm/target_info.h |
| * \brief Various information about target. |
| */ |
| #ifndef TVM_TARGET_INFO_H_ |
| #define TVM_TARGET_INFO_H_ |
| |
| #include <string> |
| #include "base.h" |
| #include "expr.h" |
| |
| namespace tvm { |
| |
| /*! |
| * \brief Memory information of special memory region. |
| * Use MemoryInfo as its container type |
| */ |
| struct MemoryInfoNode : public Node { |
| /*! \brief The addressable unit */ |
| int unit_bits; |
| /*! \brief Maximum number of bits supported in the memory */ |
| int max_num_bits; |
| /*! \brief maximum number of bits to be used in simd op */ |
| int max_simd_bits; |
| /*! |
| * \brief head address of the buffer, if visible to CPU |
| * This address can be None. |
| */ |
| Expr head_address; |
| |
| void VisitAttrs(AttrVisitor* v) final { |
| v->Visit("unit_bits", &unit_bits); |
| v->Visit("max_num_bits", &max_num_bits); |
| v->Visit("max_simd_bits", &max_simd_bits); |
| v->Visit("head_address", &head_address); |
| } |
| |
| static constexpr const char* _type_key = "MemoryInfo"; |
| TVM_DECLARE_NODE_TYPE_INFO(MemoryInfoNode, Node); |
| }; |
| |
| /*! \brief Defines memory info */ |
| TVM_DEFINE_NODE_REF(MemoryInfo, MemoryInfoNode); |
| |
| /*! |
| * \brief get memory info given scope |
| * \param scope The scope name. |
| * \return info The memory info. |
| */ |
| TVM_DLL MemoryInfo GetMemoryInfo(const std::string& scope); |
| |
| } // namespace tvm |
| #endif // TVM_TARGET_INFO_H_ |