构建源信息

构建源信息#

tvm/include/tvm/ir/si_builder.h 定义了名为 SIBuilder 的类,用于在重写表达式期间构建源信息。

该类提供了以下公共成员函数:

  • SIBuilder(const Span& span = Span()):创建空的 SIBuilder 对象。

  • SIBuilder(const Array<Span>& spans = Array<Span>()):从一个 Span 数组中创建一个 SIBuilder 对象。

  • SIBuilder(const std::initializer_list<Span>& init):从一个 Span 初始化器列表中创建一个 SIBuilder 对象。

  • SIBuilder(const T& entry, const tvm::Array<T>& inputs = {}):从一个给定的 entry 和一个输入 inputs 创建一个 SIBuilder 对象。

  • SIBuilder(const tir::Stmt& entry, const tvm::Array<PrimExpr>& inputs = {}):从一个给定的 entry 和一个输入 inputs 创建一个 SIBuilder 对象。

  • SIBuilder(const tir::Stmt& entry, const tvm::Array<tir::Stmt>& inputs = {}):从一个给定的 entry 和一个输入 inputs 创建一个 SIBuilder 对象。

  • ~SIBuilder():析构函数。

  • SIBuilder(const SIBuilder&) = delete:禁止拷贝构造。

  • SIBuilder& operator=(const SIBuilder&) = delete:禁止赋值拷贝。

  • Span Build() const:构建一个基于给定的 Span 或子图的源信息跨度。

  • void RecursivelyFillSpan(const T& entry, const std::unordered_set<T, ObjectPtrHash, ObjectPtrEqual>& inputs) const:递归地填充从 entryinputs 的所有 Expr 的跨度。

  • void RecursivelyFillSpan(const tir::Stmt& entry, const std::unordered_set<PrimExpr, ObjectPtrHash, ObjectPtrEqual>& inputs) const:递归地填充从 entryinputs 的所有 PrimExpr 的跨度。

  • void RecursivelyFillSpan(const tir::Stmt& entry, const std::unordered_set<tir::Stmt, ObjectPtrHash, ObjectPtrEqual>& inputs) const:递归地填充从 entryinputs 的所有 Stmt 的跨度。

私有成员变量包括:

  • struct Impl;:内部实现结构体。

  • std::unique_ptr<Impl> impl_:指向内部实现结构体的指针。

  • std::unique_ptr<Impl> CreateImpl(const Span& span):根据给定的 span 创建内部实现结构体。