构建源信息#
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
:递归地填充从entry
到inputs
的所有Expr
的跨度。void RecursivelyFillSpan(const tir::Stmt& entry, const std::unordered_set<PrimExpr, ObjectPtrHash, ObjectPtrEqual>& inputs) const
:递归地填充从entry
到inputs
的所有PrimExpr
的跨度。void RecursivelyFillSpan(const tir::Stmt& entry, const std::unordered_set<tir::Stmt, ObjectPtrHash, ObjectPtrEqual>& inputs) const
:递归地填充从entry
到inputs
的所有Stmt
的跨度。
私有成员变量包括:
struct Impl;
:内部实现结构体。std::unique_ptr<Impl> impl_
:指向内部实现结构体的指针。std::unique_ptr<Impl> CreateImpl(const Span& span)
:根据给定的span
创建内部实现结构体。