19 #ifndef TVM_SCRIPT_IR_BUILDER_TIR_FRAME_H_
20 #define TVM_SCRIPT_IR_BUILDER_TIR_FRAME_H_
30 namespace ir_builder {
41 ffi::Array<tvm::tirx::Stmt>
stmts;
72 ffi::Optional<ffi::String>
name;
74 ffi::Array<tvm::tirx::Var>
args;
82 ffi::Map<ffi::String, Any>
attrs;
90 refl::ObjectDef<PrimFuncFrameNode>()
119 TVM_FFI_ICHECK(data !=
nullptr);
120 data_ = std::move(data);
137 ffi::Optional<ffi::Array<tvm::tirx::BufferRegion>>
reads;
139 ffi::Optional<ffi::Array<tvm::tirx::BufferRegion>>
writes;
141 ffi::Optional<tvm::tirx::Stmt>
init;
160 refl::ObjectDef<SBlockFrameNode>()
193 TVM_FFI_ICHECK(data !=
nullptr);
194 data_ = std::move(data);
208 refl::ObjectDef<BlockInitFrameNode>();
234 TVM_FFI_ICHECK(data !=
nullptr);
235 data_ = std::move(data);
255 ffi::Array<tvm::tirx::Var> loop_vars, ffi::Array<Range> loop_extents,
256 ffi::Array<ffi::Optional<PrimExpr>> loop_steps,
tvm::tirx::Stmt loop_body)>;
258 ffi::Array<tvm::tirx::Var>
vars;
262 ffi::Array<ffi::Optional<PrimExpr>>
steps;
268 refl::ObjectDef<ForFrameNode>()
291 TVM_FFI_ICHECK(data !=
nullptr);
292 data_ = std::move(data);
314 refl::ObjectDef<AssertFrameNode>()
338 TVM_FFI_ICHECK(data !=
nullptr);
339 data_ = std::move(data);
359 refl::ObjectDef<LaunchThreadFrameNode>()
383 TVM_FFI_ICHECK(data !=
nullptr);
384 data_ = std::move(data);
405 refl::ObjectDef<AttrFrameNode>()
429 TVM_FFI_ICHECK(data !=
nullptr);
430 data_ = std::move(data);
468 TVM_FFI_ICHECK(data !=
nullptr);
469 data_ = std::move(data);
490 refl::ObjectDef<IfFrameNode>()
513 TVM_FFI_ICHECK(data !=
nullptr);
527 refl::ObjectDef<ThenFrameNode>();
553 TVM_FFI_ICHECK(data !=
nullptr);
567 refl::ObjectDef<ElseFrameNode>();
593 TVM_FFI_ICHECK(data !=
nullptr);
Reference to PrimExprNode.
Definition: expr.h:126
Managed reference to an IRBuilderFrameNode.
Definition: base.h:104
A frame that represents the assert statement. Proceeds if the condition is true, otherwise aborts wit...
Definition: frame.h:303
static void RegisterReflection()
Definition: frame.h:312
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.AssertFrame", AssertFrameNode, TIRFrameNode)
tvm::tirx::StringImm error_kind
The error kind, e.g. "RuntimeError", "TypeError", "ValueError".
Definition: frame.h:308
void ExitWithScope() final
The method called when exiting RAII scope.
ffi::Array< tvm::tirx::StringImm > message_parts
Error message fragments, concatenated at runtime when assertion fails.
Definition: frame.h:310
PrimExpr condition
The PrimExpr to test.
Definition: frame.h:306
Managed reference to AssertFrameNode.
Definition: frame.h:335
AssertFrame(ObjectPtr< AssertFrameNode > data)
Definition: frame.h:337
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(AssertFrame, TIRFrame, AssertFrameNode)
A frame that represents attribute node.
Definition: frame.h:394
ffi::String attr_key
Attribute type key.
Definition: frame.h:399
Any node
The node to annotate the attribute.
Definition: frame.h:397
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.AttrFrame", AttrFrameNode, TIRFrameNode)
void ExitWithScope() final
The method called when exiting RAII scope.
static void RegisterReflection()
Definition: frame.h:403
PrimExpr value
The value of the attribute.
Definition: frame.h:401
Managed reference to AttrFrameNode.
Definition: frame.h:426
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(AttrFrame, TIRFrame, AttrFrameNode)
AttrFrame(ObjectPtr< AttrFrameNode > data)
Definition: frame.h:428
A frame that represents the block initialization statment.
Definition: frame.h:204
void EnterWithScope() final
The method called when entering RAII scope.
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.SBlockInitFrame", BlockInitFrameNode, TIRFrameNode)
static void RegisterReflection()
Definition: frame.h:206
Managed reference to BlockInitFrameNode.
Definition: frame.h:231
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(BlockInitFrame, TIRFrame, BlockInitFrameNode)
BlockInitFrame(ObjectPtr< BlockInitFrameNode > data)
Definition: frame.h:233
A frame that represents else.
Definition: frame.h:563
void EnterWithScope() final
The method called when entering RAII scope.
static void RegisterReflection()
Definition: frame.h:565
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.ElseFrame", ElseFrameNode, TIRFrameNode)
Managed reference to ElseFrameNode.
Definition: frame.h:590
ElseFrame(ObjectPtr< ElseFrameNode > data)
Definition: frame.h:592
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ElseFrame, TIRFrame, ElseFrameNode)
A frame that represents the for loop.
Definition: frame.h:245
ffi::TypedFunction< tvm::tirx::Stmt(ffi::Array< tvm::tirx::Var > loop_vars, ffi::Array< Range > loop_extents, ffi::Array< ffi::Optional< PrimExpr > > loop_steps, tvm::tirx::Stmt loop_body)> FMakeForLoop
Functions that generate loop nests.
Definition: frame.h:256
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.ForFrame", ForFrameNode, TIRFrameNode)
FMakeForLoop f_make_for_loop
The for loop generating function.
Definition: frame.h:264
static void RegisterReflection()
Definition: frame.h:266
ffi::Array< Range > doms
The domains of iteration.
Definition: frame.h:260
ffi::Array< tvm::tirx::Var > vars
The loop variable.
Definition: frame.h:258
void ExitWithScope() final
The method called when exiting RAII scope.
ffi::Array< ffi::Optional< PrimExpr > > steps
The optional steps of iteration.
Definition: frame.h:262
Managed reference to ForFrameNode.
Definition: frame.h:288
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ForFrame, TIRFrame, ForFrameNode)
ForFrame(ObjectPtr< ForFrameNode > data)
Definition: frame.h:290
A frame that represents if statement.
Definition: frame.h:479
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.IfFrame", IfFrameNode, TIRFrameNode)
ffi::Optional< ffi::Array< tvm::tirx::Stmt > > else_stmts
The stetements in the false branch.
Definition: frame.h:486
ffi::Optional< ffi::Array< tvm::tirx::Stmt > > then_stmts
The statements in the true branch.
Definition: frame.h:484
void ExitWithScope() final
The method called when exiting RAII scope.
PrimExpr condition
The condition of the if statement.
Definition: frame.h:482
static void RegisterReflection()
Definition: frame.h:488
Managed reference to IfFrameNode.
Definition: frame.h:510
IfFrame(ObjectPtr< IfFrameNode > data)
Definition: frame.h:512
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(IfFrame, TIRFrame, IfFrameNode)
The LaunchThreadFrameNode.
Definition: frame.h:348
PrimExpr extent
The extent of environment thread.
Definition: frame.h:351
tvm::tirx::IterVar iter_var
The iteration variable.
Definition: frame.h:355
ffi::String attr_key
The attribute key, could be either virtual_thread or thread_extent.
Definition: frame.h:353
void ExitWithScope() final
The method called when exiting RAII scope.
static void RegisterReflection()
Definition: frame.h:357
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.LaunchThreadFrame", LaunchThreadFrameNode, TIRFrameNode)
Managed reference to LaunchThreadFrameNode.
Definition: frame.h:380
LaunchThreadFrame(ObjectPtr< LaunchThreadFrameNode > data)
Definition: frame.h:382
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(LaunchThreadFrame, TIRFrame, LaunchThreadFrameNode)
A frame that represents the PrimFunc containing TIR statements.
Definition: frame.h:69
void ExitWithScope() final
The method called when exiting RAII scope.
ffi::Map< tvm::tirx::Var, tvm::tirx::Buffer > buffer_map
Maps some parameters to specific Buffer data structures.
Definition: frame.h:80
ffi::Optional< Type > ret_type
The return type of the function.
Definition: frame.h:78
ffi::Map< ffi::String, Any > attrs
Additional attributes storing the meta-data.
Definition: frame.h:82
bool is_private
Whether the PrimFunc is annotated as private.
Definition: frame.h:76
static void RegisterReflection()
Definition: frame.h:88
ffi::Optional< ffi::String > name
The name of the block.
Definition: frame.h:72
ffi::Array< tvm::tirx::Var > args
Function parameters.
Definition: frame.h:74
ffi::Map< tvm::tirx::Var, tvm::tirx::IterVar > env_threads
The variable map bound to thread env.
Definition: frame.h:84
ffi::Array< tvm::tirx::Buffer > root_alloc_buffers
The buffer allocated in root block.
Definition: frame.h:86
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.PrimFuncFrame", PrimFuncFrameNode, TIRFrameNode)
Managed reference to PrimFuncFrameNode.
Definition: frame.h:116
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(PrimFuncFrame, TIRFrame, PrimFuncFrameNode)
PrimFuncFrame(ObjectPtr< PrimFuncFrameNode > data)
Definition: frame.h:118
A frame that represents the block.
Definition: frame.h:130
ffi::Optional< ffi::Array< tvm::tirx::BufferRegion > > writes
The write buffer regions of the block.
Definition: frame.h:139
ffi::Array< tvm::tirx::Buffer > alloc_buffers
The buffer allocated in the block.
Definition: frame.h:143
ffi::Optional< ffi::Array< tvm::tirx::BufferRegion > > reads
The read buffer regions of the block.
Definition: frame.h:137
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.SSBlockFrame", SBlockFrameNode, TIRFrameNode)
void ExitWithScope() final
The method called when exiting RAII scope.
ffi::Optional< tvm::tirx::Stmt > init
The init statement of the bolck.
Definition: frame.h:141
ffi::Optional< ffi::Map< ffi::String, Any > > annotations
The annotation of the block.
Definition: frame.h:147
ffi::Optional< PrimExpr > predicate
The predicate of the block realization, the block will only be executed when the predicate is true.
Definition: frame.h:154
ffi::Array< tvm::tirx::IterVar > iter_vars
The variables of the block.
Definition: frame.h:135
static void RegisterReflection()
Definition: frame.h:158
ffi::Array< PrimExpr > iter_values
The corresponding values of the iter vars.
Definition: frame.h:149
bool no_realize
The flag whether to construct BlockRealize or Block.
Definition: frame.h:156
ffi::Array< tvm::tirx::MatchBufferRegion > match_buffers
The match buffer regions.
Definition: frame.h:145
ffi::String name
The name of the block.
Definition: frame.h:133
Managed reference to SBlockFrameNode.
Definition: frame.h:190
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(SBlockFrame, TIRFrame, SBlockFrameNode)
SBlockFrame(ObjectPtr< SBlockFrameNode > data)
Definition: frame.h:192
A base frame that represents the TIR fame with body of statements.
Definition: frame.h:38
TVM_FFI_DECLARE_OBJECT_INFO("script.ir_builder.tirx.TIRFrame", TIRFrameNode, IRBuilderFrameNode)
static void RegisterReflection()
Definition: frame.h:43
ffi::Array< tvm::tirx::Stmt > stmts
The Stmt within in this frame.
Definition: frame.h:41
Managed reference to TIRFrameNode.
Definition: frame.h:55
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(TIRFrame, IRBuilderFrame, TIRFrameNode)
TIRFrame(ObjectPtr< TIRFrameNode > data)
Definition: frame.h:61
A frame that represents then.
Definition: frame.h:523
void EnterWithScope() final
The method called when entering RAII scope.
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.ThenFrame", ThenFrameNode, TIRFrameNode)
static void RegisterReflection()
Definition: frame.h:525
Managed reference to ThenFrameNode.
Definition: frame.h:550
ThenFrame(ObjectPtr< ThenFrameNode > data)
Definition: frame.h:552
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ThenFrame, TIRFrame, ThenFrameNode)
A frame that represents while loop.
Definition: frame.h:440
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.ir_builder.tirx.WhileFrame", WhileFrameNode, TIRFrameNode)
PrimExpr condition
The termination condition of while.
Definition: frame.h:443
void ExitWithScope() final
The method called when exiting RAII scope.
static void RegisterReflection()
Definition: frame.h:445
Managed reference to WhileFrameNode.
Definition: frame.h:465
WhileFrame(ObjectPtr< WhileFrameNode > data)
Definition: frame.h:467
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(WhileFrame, TIRFrame, WhileFrameNode)
Iteration Variable, represents an iteration over an integer interval.
Definition: var.h:296
Container of all statements.
Definition: stmt.h:65
Managed reference to StringImmNode.
Definition: expr.h:68
Definition: repr_printer.h:91
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition: analyzer.h:37