tvm
Loading...
Searching...
No Matches
Classes | Namespaces | Enumerations | Functions | Variables
stmt.h File Reference

TIR statements. More...

#include <tvm/ffi/reflection/registry.h>
#include <tvm/ir/prim/expr.h>
#include <tvm/tirx/buffer.h>
#include <tvm/tirx/buffer_region.h>
#include <tvm/tirx/exec_scope.h>
#include <tvm/tirx/layout.h>
#include <optional>
#include <string>
#include <type_traits>
#include <utility>
Include dependency graph for stmt.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  tvm::tirx::StmtNode
 Base node of all statements. More...
 
class  tvm::tirx::Stmt
 Container of all statements. More...
 
class  tvm::tirx::BindNode
 Bind a variable to a value in the enclosing scope. More...
 
class  tvm::tirx::Bind
 Managed reference to BindNode. More...
 
class  tvm::tirx::AttrStmtNode
 Define certain auxiliary attribute for the body to be a symbolic value. This provide auxiliary information for IR passes that transforms body. More...
 
class  tvm::tirx::AttrStmt
 Managed reference to AttrStmtNode. More...
 
class  tvm::tirx::AssertStmtNode
 Assert condition, if an error occurs, return the error message. More...
 
class  tvm::tirx::AssertStmt
 Managed reference to AssertStmtNode. More...
 
class  tvm::tirx::BufferStoreNode
 Store value to the high dimension buffer. More...
 
class  tvm::tirx::BufferStore
 Managed reference to BufferStoreNode. More...
 
class  tvm::tirx::DeclBufferNode
 Declare a buffer that can be used in the body. More...
 
class  tvm::tirx::DeclBuffer
 Managed reference to DeclBufferNode. More...
 
class  tvm::tirx::AllocBufferNode
 Allocate a buffer and declare it in scope. More...
 
class  tvm::tirx::AllocBuffer
 Managed reference to AllocBufferNode. More...
 
class  tvm::tirx::SeqStmtNode
 The container of seq statement. Represent a sequence of statements. More...
 
class  tvm::tirx::EvaluateNode
 Evaluates an expression. This is mostly used for putting a Call node into Stmt. More...
 
class  tvm::tirx::Evaluate
 Managed reference to EvaluateNode. More...
 
class  tvm::tirx::SeqStmt
 Sequence statement. More...
 
class  tvm::tirx::SeqStmt::Flattener
 Helper class to flatten sequence of arguments into Array. More...
 
class  tvm::tirx::IfThenElseNode
 IfThenElse statement. More...
 
class  tvm::tirx::IfThenElse
 Managed reference to IfThenElseNode. More...
 
class  tvm::tirx::ForNode
 A for loop, with possible type annotations. More...
 
class  tvm::tirx::For
 Managed reference to ForNode. More...
 
class  tvm::tirx::WhileNode
 A While loop. More...
 
class  tvm::tirx::While
 Managed reference to WhileNode. More...
 
class  tvm::tirx::ReturnNode
 A return from the current function. More...
 
class  tvm::tirx::Return
 Managed reference to ReturnNode. More...
 
class  tvm::tirx::BreakNode
 A Break in control flow. More...
 
class  tvm::tirx::Break
 Managed reference to BreakNode. More...
 
class  tvm::tirx::ContinueNode
 A Continue in control flow. More...
 
class  tvm::tirx::Continue
 Managed reference to ContinueNode. More...
 
class  tvm::tirx::MatchBufferRegionNode
 Match introduces a constraint that the source buffer region can be remapped to the data layout specified by the buffer field. The constraint can be checked in later part of lowering (or optionally during runtime). More...
 
class  tvm::tirx::MatchBufferRegion
 Managed reference to MatchBufferRegionNode. More...
 
class  tvm::tirx::SBlockNode
 A block is a basic schedule unit in TIR. More...
 
class  tvm::tirx::SBlock
 Managed reference to SBlockNode. More...
 
class  tvm::tirx::SBlockRealizeNode
 A block realization node represents execution of the block at the binding values. More...
 
class  tvm::tirx::SBlockRealize
 Managed reference to BlockRealizeNode. More...
 
class  tvm::tirx::ScopeIdDefStmtNode
 Standalone statement that declares a scope-id binding (e.g. cta_id, warp_id, lane_id). Carries a ScopeIdDef value. More...
 
class  tvm::tirx::ScopeIdDefStmt
 Managed reference to ScopeIdDefStmtNode. More...
 

Namespaces

namespace  tvm
 An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
 
namespace  tvm::tirx
 
namespace  tvm::tirx::attr
 PrimFunc specific attribute names.
 

Enumerations

enum class  tvm::tirx::ForKind : int {
  tvm::tirx::kSerial = 0 , tvm::tirx::kParallel = 1 , tvm::tirx::kVectorized = 2 , tvm::tirx::kUnrolled = 3 ,
  tvm::tirx::kThreadBinding = 4
}
 The kind of the loop. More...
 

Functions

bool tvm::tirx::attr::IsPragmaKey (const std::string &attr_key)
 Check if attr_key is a pragma key extension.
 
PrimExpr tvm::tirx::TypeAnnotation (PrimType dtype, Span span=Span())
 Create a type annotation expression.
 
std::ostream & tvm::tirx::operator<< (std::ostream &os, ForKind kind)
 
const chartvm::tirx::ForKind2String (ForKind t)
 

Variables

constexpr const chartvm::tirx::attr::compute_scope = "compute_scope"
 Mark the scope as when computation start to happen. This can hint some code generator to create a new function for compute.
 
constexpr const chartvm::tirx::attr::device_id = "device_id"
 The allocation device for global malloc in host.
 
constexpr const chartvm::tirx::attr::device_scope = "device_scope"
 Mark that it is in the device scope.
 
constexpr const chartvm::tirx::attr::device_type = "device_type"
 The device type.
 
constexpr const chartvm::tirx::attr::extern_scope = "extern_scope"
 Mark the scope as generated by extern primitive. Such scope can contain arbitrary ir program and we need to be careful when making certain assumptions about the structure of the program.
 
constexpr const chartvm::tirx::attr::pragma_auto_unroll_max_step = "pragma_auto_unroll_max_step"
 Pragma: auto-unroll, max_step.
 
constexpr const chartvm::tirx::attr::pragma_import_c = "pragma_import_c"
 Import C source or file into the final code gen module.
 
constexpr const chartvm::tirx::attr::pragma_import_llvm = "pragma_import_llvm"
 Import llvm source or file into the final code gen module.
 
constexpr const chartvm::tirx::attr::pragma_unroll_explicit = "pragma_unroll_explicit"
 Pragma: unroll explicit.
 
constexpr const chartvm::tirx::attr::storage_alignment = "storage_alignment"
 Mark storage alignment requirement of buffers.
 
constexpr const chartvm::tirx::attr::thread_extent = "thread_extent"
 Mark launching extent of thread, used by device API.
 
constexpr const chartvm::tirx::attr::kVolatile = "tirx.volatile"
 Annotation key on AllocBuffer marking the allocation as volatile.
 
constexpr const chartvm::tirx::attr::buffer_data_alignment = "buffer_data_alignment"
 Mark buffer initial addr alignment in bytes.
 
constexpr const chartvm::tirx::attr::buffer_allocated_addr = "buffer_allocated_addr"
 Mark buffer allocated addr in bytes.
 
constexpr const chartvm::tirx::attr::tensorized_nki_instruction = "tensorized_nki_instruction"
 
constexpr const chartvm::tirx::attr::kPersistentKernel = "tirx.persistent_kernel"
 Mark the kernel as persistent.
 
constexpr const chartvm::tirx::attr::kDeviceEntry = "tirx.device_entry"
 Mark the device-region entry within a PrimFunc body. The AttrStmt so-keyed has a body that is the device-side region; anything before the marker (within the PrimFunc body) is host code. Value is IntImm("bool", 1) – a boolean marker, similar to kPersistentKernel.
 

Detailed Description

TIR statements.