|
class | BufferAxisHash |
|
class | BufferAxisGraphExtractor |
| Construct an axis group graph from a PrimFunc. Two buffer axis are connected if they are accessed by the same index. More...
|
|
struct | ExprDeepEqual |
| Compare two expressions recursively and check if they are equal to each other without var remapping. More...
|
|
struct | MemCpyDetails |
| Helper struct for return value of IdentifyMemCpy. More...
|
|
class | BlockDependenceInfoNode |
| An object that helps build and query block level dependences using the 2 core objects BlockScope and StmtSRef. More...
|
|
class | BlockDependenceInfo |
| Managed reference to BlockDependenceInfoNode. More...
|
|
class | StmtSRefNode |
| An object that refers to schedulable elements (block/for-loop) in TensorIR, aka "sref". More...
|
|
class | StmtSRef |
| Managed reference to StmtSRefNode. More...
|
|
class | SRefTreeCreator |
|
class | DependencyNode |
| A tuple (src, dst, kind) representing certain types of dependency. For example, (A, B, kRAW) means block B depends on block A, and the dependency kind is read-after-write, which means block B reads the result written by block A. More...
|
|
class | Dependency |
| Managed reference to DependencyNode. More...
|
|
class | BlockScopeNode |
| An object with 1-to-1 correspondence with each block reference in the sref tree. This data structure is used to track the producer-consumer dependencies between blocks. For example even leaf nodes have a scope node, even though they have no dependencies. More...
|
|
class | BlockScope |
| Managed reference to BlockScopeNode. More...
|
|
class | BufferNode |
| Node to represent a buffer. More...
|
|
class | Buffer |
| Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types, used to specify the memory layout of the Tensor used in program input. More...
|
|
class | DataProducerNode |
| Base node for data producers. More...
|
|
class | DataProducer |
| Managed reference to DataProducerNode. More...
|
|
class | LayoutAxis |
|
class | LayoutNode |
| Layout is to describe how data is organized within an N-dimention tensor. It is composed of upper cases, lower cases and numbers, where upper case indicates a primal axis and the corresponding lower case with factor size indicates the subordinate axis. For example, NCHW16c can describe a 5-D tensor of [batch_size, channel, height, width, channel_block]. Here subordinate axis channel_block=16 is the factor size of the primal axis C (channel). Layout for scalar is defined, while both its name and axes have size 0. More...
|
|
class | Layout |
| Managed reference to LayoutNode. More...
|
|
class | BijectiveLayoutNode |
|
class | BijectiveLayout |
| Bijective function mapping for data layout transformation. Given two Layout, BijectiveLayout build and store the mapping rules, provides API to transform N-dimention tensor from the source indices (i0, i1, .., im) to the destination indices (j0, j1, .., jm). More...
|
|
class | DataTypeLegalizer |
| Legalize the data types of expressions to make sure they are consistent with other parts of the program. More...
|
|
class | IndexDataTypeRewriter |
| Data type rewriter for buffer indices. More...
|
|
class | IndexDataTypeNormalizer |
| Normalize the data types of buffer shapes and indices to the same data type. More...
|
|
class | StringImmNode |
| String constants, only used in asserts. More...
|
|
class | StringImm |
| Managed reference to StringImmNode. More...
|
|
class | CastNode |
| Cast value from one data type to another. More...
|
|
class | Cast |
| Managed reference to CastNode. More...
|
|
class | BinaryOpNode |
| Base template to implement binary ops. More...
|
|
class | AddNode |
| a + b More...
|
|
class | Add |
| Managed reference to AddNode. More...
|
|
class | SubNode |
| a - b More...
|
|
class | Sub |
| Managed reference to SubNode. More...
|
|
class | MulNode |
| a * b More...
|
|
class | Mul |
| Managed reference to MulNode. More...
|
|
class | DivNode |
| a / b in the C semnatics. More...
|
|
class | Div |
| Managed reference to DivNode. More...
|
|
class | ModNode |
| a % b in the C semnatics. More...
|
|
class | Mod |
| Managed reference to ModNode. More...
|
|
class | FloorDivNode |
| Floor division, floor(a/b) More...
|
|
class | FloorDiv |
| Managed reference to FloorDivNode. More...
|
|
class | FloorModNode |
| The remainder of the floordiv. More...
|
|
class | FloorMod |
| Managed reference to FloorModNode. More...
|
|
class | MinNode |
| min(a, b) More...
|
|
class | Min |
| Managed reference to MinNode. More...
|
|
class | MaxNode |
| max(a, b) More...
|
|
class | Max |
| Managed reference to MaxNode. More...
|
|
class | CmpOpNode |
| Base template to implement comparison ops. More...
|
|
class | EQNode |
| a == b More...
|
|
class | EQ |
| Managed reference to EQNode. More...
|
|
class | NENode |
| a != b More...
|
|
class | NE |
| Managed reference to NENode. More...
|
|
class | LTNode |
| a < b More...
|
|
class | LT |
| Managed reference to LTNode. More...
|
|
struct | LENode |
| a <= b More...
|
|
class | LE |
| Managed reference to LENode. More...
|
|
class | GTNode |
| a > b More...
|
|
class | GT |
| Managed reference to GTNode. More...
|
|
class | GENode |
| a >= b More...
|
|
class | GE |
| Managed reference to GENode. More...
|
|
class | AndNode |
| a && b More...
|
|
class | And |
| Managed reference to AndNode. More...
|
|
class | OrNode |
| a || b More...
|
|
class | Or |
| Managed reference to OrNode. More...
|
|
class | NotNode |
| !a More...
|
|
class | Not |
| Managed reference to NotNode. More...
|
|
class | SelectNode |
| return true_value if condition is true, otherwise return false_value. More...
|
|
class | Select |
| Managed reference to SelectNode. More...
|
|
class | BufferLoadNode |
| Load value from the high dimension buffer. More...
|
|
class | BufferLoad |
| Managed reference to BufferLoadNode. More...
|
|
class | ProducerLoadNode |
| Load value from the result produced by the producer. More...
|
|
class | ProducerLoad |
| Managed reference to ProducerLoadNode. More...
|
|
class | RampNode |
| Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to construct a index for a continuous vector load. More...
|
|
class | Ramp |
| Managed reference to RampNode. More...
|
|
class | BroadcastNode |
| Create a vector where all the elements are value. More...
|
|
class | Broadcast |
| Managed reference to BroadcastNode. More...
|
|
class | LetNode |
| Let binding. Bind var to value then evaluate body. More...
|
|
class | Let |
| Managed reference to LetNode. More...
|
|
class | CallNode |
| Call node. More...
|
|
class | Call |
| Managed reference to CallNode. More...
|
|
class | ShuffleNode |
| Shuffle instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...) More...
|
|
class | Shuffle |
| Managed reference to ShuffleNode. More...
|
|
class | CommReducerNode |
| A commutative reducer node to represent a commutative binary operator with identity element. More...
|
|
class | CommReducer |
| Managed reference to CommReducerNode. More...
|
|
class | ReduceNode |
| Reduction operator. More...
|
|
class | Reduce |
| Managed reference to ReduceNode. More...
|
|
class | AnyNode |
| Any shape. More...
|
|
class | Any |
| Managed reference to AnyNode. More...
|
|
class | ExprFunctor |
| A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerful Visitor, since it allows you to define function signatures of Visit Function. More...
|
|
class | ExprFunctor< R(const PrimExpr &n, Args...)> |
|
class | ExprVisitor |
| ExprVisitor. More...
|
|
class | ExprMutator |
| ExprMutator that mutates expressions. More...
|
|
class | PrimFuncNode |
| Primitive functions that contains TIR statements. More...
|
|
class | PrimFunc |
| Managed reference to PrimFuncNode. More...
|
|
class | TensorIntrinNode |
| Tensor intrinsics for tensorization. More...
|
|
class | TensorIntrin |
| Managed reference to TensorIntrinNode. More...
|
|
class | IndexMapNode |
| Defines a mapping between two representations of indices into a buffer. More...
|
|
class | IndexMap |
|
class | InstructionKindNode |
| Kind of an instruction, e.g. Split, Reorder, etc. Besides the name, every kind of instruction has its own properties, including: 1) A boolean indicating if the instruction is pure, i.e. change nothing in the schedule state 2) A functor that applies the instruction to a TensorIR schedule 3) A functor that converts the instruction to a statement in python syntax 4) A functor that serialize its attributes to JSON 5) A functor that deserialize its attributes from JSON. More...
|
|
class | InstructionKind |
| Managed reference to InstructionKindNode. More...
|
|
class | InstructionNode |
| Schedule instructions each corresponds to a schedule primitive. More...
|
|
class | Instruction |
| Managed reference to InstructionNode. More...
|
|
class | InstructionKindRegEntry |
| An entry in the registry of InstructionKind. More...
|
|
class | BlockRVNode |
| A random variable that evaluates to a TensorIR block. More...
|
|
class | BlockRV |
| Managed reference to BlockRVNode. More...
|
|
class | LoopRVNode |
| A random variable that evaluates to a TensorIR for loop. More...
|
|
class | LoopRV |
| Managed reference to LoopRVNode. More...
|
|
class | ScheduleNode |
| The user-facing schedule class. More...
|
|
class | Schedule |
| Managed reference to ScheduleNode. More...
|
|
struct | BlockInfo |
| The information about a TensorIR block, it contains two categories of information 1) Info on the block scope rooted at a specific block, including dependency tracking, flags indicating if the scope is a stage pipeline, etc. 2) Info on the block itself, including if the block has a quasi-affine binding, if the regions it reads are completely covered by their producers, etc. More...
|
|
class | ScheduleStateNode |
| The state of scheduling, which exposes a Replace method as the primary interface for all the scheduling primitives to manipulate the TensorIR. More...
|
|
class | ScheduleState |
| Managed reference to ScheduleStateNode. More...
|
|
class | TraceNode |
| An execution trace of a scheduling program. More...
|
|
class | Trace |
| Managed reference to TraceNode. More...
|
|
class | StmtNode |
| Base node of all statements. More...
|
|
class | Stmt |
| Container of all statements. More...
|
|
class | LetStmtNode |
| Let binding, bind var to value, then run body. More...
|
|
class | LetStmt |
| Managed reference to LetStmtNode. More...
|
|
class | 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 | AttrStmt |
| Managed reference to AttrStmtNode. More...
|
|
class | AssertStmtNode |
| Assert condition, if an error occurs, return the error message. More...
|
|
class | AssertStmt |
| Managed reference to AssertStmtNode. More...
|
|
class | BufferStoreNode |
| Store value to the high dimension buffer. More...
|
|
class | BufferStore |
| Managed reference to BufferStoreNode. More...
|
|
class | BufferRealizeNode |
| Annotate the region where the buffer need to be read and write in the body. We only need to allocate the space for the corresponding region. More...
|
|
class | BufferRealize |
| Managed reference to BufferRealizeNode. More...
|
|
class | ProducerStoreNode |
| Store value into mult-dimensional array that will be read by the consumer of the producer. More...
|
|
class | ProducerStore |
| Managed reference to ProducerStoreNode. More...
|
|
class | ProducerRealizeNode |
| Annotate the bounds where the data produced by the producer need to be written and read in body. We will need to allocate space for the corresponding regions. More...
|
|
class | ProducerRealize |
| Managed reference to ProducerRealizeNode. More...
|
|
class | AllocateNode |
| Allocate a buffer that can be used in body. More...
|
|
class | Allocate |
| Managed reference to AllocateNode. More...
|
|
class | AllocateConstNode |
| Allocate a buffer that can be used in body. More...
|
|
class | AllocateConst |
| Managed reference to AllocateConstNode. More...
|
|
class | DeclBufferNode |
| Declare a buffer that can be used in the body. More...
|
|
class | DeclBuffer |
| Managed reference to DeclBufferNode. More...
|
|
class | SeqStmtNode |
| The container of seq statement. Represent a sequence of statements. More...
|
|
class | EvaluateNode |
| Evaluates an expression. This is mostly used for putting a Call node into Stmt. More...
|
|
class | Evaluate |
| Managed reference to EvaluateNode. More...
|
|
class | SeqStmt |
| Sequence statement. More...
|
|
class | IfThenElseNode |
| IfThenElse statement. More...
|
|
class | IfThenElse |
| Managed reference to IfThenElseNode. More...
|
|
class | ForNode |
| A for loop, with possible type annotations. More...
|
|
class | For |
| Managed reference to ForNode. More...
|
|
class | WhileNode |
| A While loop. More...
|
|
class | While |
| Managed reference to WhileNode. More...
|
|
class | PrefetchNode |
| A prefetch hint for a buffer. More...
|
|
class | Prefetch |
| Managed reference to PrefetchNode. More...
|
|
class | BufferRegionNode |
| Representing the region of multi-dimensional buffer access. More...
|
|
class | BufferRegion |
| Managed reference to BufferRegionNode. More...
|
|
class | 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 | MatchBufferRegion |
| Managed reference to MatchBufferRegionNode. More...
|
|
class | BlockNode |
| A block is a basic schedule unit in TIR. More...
|
|
class | Block |
| Managed reference to BlockNode. More...
|
|
class | BlockRealizeNode |
| A block realization node represents execution of the block at the binding values. More...
|
|
class | BlockRealize |
| Managed reference to BlockRealizeNode. More...
|
|
class | StmtFunctor |
| Same as ExprFunctor except it is applied on statements. More...
|
|
class | StmtFunctor< R(const Stmt &n, Args... args)> |
|
class | StmtVisitor |
| StmtVisitor. More...
|
|
class | StmtMutator |
| StmtMutator that mutates the statements. More...
|
|
class | StmtExprVisitor |
| Visitor that recursively visit stmts and exprs on them. More...
|
|
class | StmtExprMutator |
| Mutator that recursively mutates stmts and exprs on them. More...
|
|
class | VarNode |
| A variable node in the IR. More...
|
|
class | Var |
| a named variable in TIR More...
|
|
class | SizeVarNode |
| A variable node represent a tensor index size, whose value must be non-negative. More...
|
|
class | SizeVar |
| a named variable represents a tensor index size More...
|
|
class | IterVarNode |
| An iteration variable representing an iteration over a one dimensional interval. More...
|
|
class | IterVar |
| Iteration Variable, represents an iteration over an integer interval. More...
|
|
|
Var | GetShardingVarFromIndex (PrimExpr index, Map< Var, Range > var_range, arith::Analyzer *analyzer) |
| Suppose we want to shard a buffer along a specific dimension, we need to know how to rewrite the access index of the buffer. To make it simple, we only support the case that the access can be rewritten by changing the extent of an iter var. More...
|
|
template<class FLambda > |
void | VisitPrimFuncs (const IRModule &mod, FLambda fvisit) |
| Visit the PrimFuncs in the IRModule. More...
|
|
double | EstimateTIRFlops (const Stmt &stmt) |
| Estimate the FLOPs of a TIR fragment. More...
|
|
double | EstimateTIRFlops (const IRModule &mod) |
| Estimate the FLOPs of TIRs in an IRModule. More...
|
|
Array< Var > | UndefinedVars (const Stmt &stmt, const Array< Var > &defs) |
| Find undefined vars in the statement. More...
|
|
Array< Var > | UndefinedVars (const PrimExpr &expr) |
| Find undefined vars in the expression. More...
|
|
Array< Var > | UndefinedVars (const PrimExpr &expr, const Array< Var > &defs) |
| Find undefined vars in the expression. More...
|
|
CallEffectKind | SideEffect (const PrimExpr &expr) |
| Analyze the side effect of an expression. More...
|
|
bool | IsPureFunction (const PrimFunc &func, bool assert_on_error=false) |
| Analyze the side effect of a function. More...
|
|
bool | UsesVar (const Stmt &stmt, std::function< bool(const VarNode *)> vset_contains) |
| Whether the given Stmt uses any var in the given variable set. More...
|
|
bool | UsesVar (const PrimExpr &expr, std::function< bool(const VarNode *)> vset_contains) |
| Whether the given PrimExpr uses any var in the given variable set. More...
|
|
bool | VerifySSA (const PrimFunc &func) |
| Verifies whether the IR stmt or Expr is in SSA form. That is: each Var is defined and assigned once(in Let/For) More...
|
|
bool | VerifyMemory (const PrimFunc &func) |
| Verify if memory accesses are legal for a specific target device type. More...
|
|
bool | VerifyGPUCode (const PrimFunc &func, Map< String, PrimExpr > constraints) |
| Verify the correctness of a GPU code It will check the whether the amount of memory usage or the number of threads in a block exceeds the limit. More...
|
|
Array< tvm::transform::Pass > | GetVTCMCompactionPasses () |
| Utility function to get the list of lowering passes to be applied to calculate the compacted VTCM allocation size. More...
|
|
bool | VerifyVTCMLimit (const IRModule &mod, Integer limit) |
| Verifies that the VTCM usage for all prim_funcs in the given IRModule. More...
|
|
bool | VerifyVTCMLimit (const PrimFunc &func, Integer limit) |
| Verifies that the VTCM usage of the given prim_func is within the provided limit. More...
|
|
Array< Array< BufferRegion > > | GetBlockAccessRegion (const Block &block, const Map< Var, Buffer > &buffer_var_map) |
| Auto detect the block access region according to its body stmt It will detect the access region as an array in order of appearance in AST. More...
|
|
Array< Array< BufferRegion > > | GetBlockReadWriteRegion (const Block &block, const Map< Var, Buffer > &buffer_var_map) |
| Auto detect the block read/write region according to its body stmt. An opaque access will be counted as both a read and a write access. More...
|
|
std::optional< MemCpyDetails > | IdentifyMemCpy (const For &loop, arith::Analyzer *analyzer) |
| Identify whether a For loop is semantically equivalent to MemCpy. More...
|
|
size_t | CalculateExprComplexity (const PrimExpr &expr) |
| Calculate the expresion complexity based on number of symbols it contains. More...
|
|
size_t | CalculateConstantBytes (const PrimFunc &func, const Integer &constant_byte_alignment) |
| Calculate the constants size in bytes needed by the TIR allocates inside the TIR PrimFunc. More...
|
|
size_t | CalculateWorkspaceBytes (const PrimFunc &func, const Integer &workspace_byte_alignment) |
| Calculate the workspace size in bytes needed by the TIR allocates inside the TIR PrimFunc. More...
|
|
tvm::Map< String, tvm::Map< String, Integer > > | CalculateAllocatedBytes (const PrimFunc &func) |
| Calculate the allocated memory per scope in bytes needed inside the TIR PrimFunc. More...
|
|
tvm::Map< String, tvm::Map< String, Integer > > | CalculateAllocatedBytes (const IRModule &mod) |
| Calculate the allocated memory per scope in bytes for each function inside the module. More...
|
|
Map< Buffer, Optional< Stmt > > | DetectBufferAccessLCA (const PrimFunc &func) |
| Detect the lowest common ancestor(LCA) of buffer access, including both high-level access(BufferLoad, BufferStore) and low-level access(Load, Store and opaque access). The LCA may be a For loop or a Block. More...
|
|
bool | VerifyWellFormed (const PrimFunc &func, bool assert_mode=true) |
| Verify if the given TIR is well-formed. The verification includes: More...
|
|
bool | VerifyWellFormed (const IRModule &mod, bool assert_mode=true) |
| Verify if the TIR in the given IRMOdule is well-formed. More...
|
|
const PrimFuncNode * | FindEntryFunc (const IRModule &mod, GlobalVar *result_g_var) |
| Find the entry function of the given IRModule, i.e, functions marked by tir::attr::kIsEntryFunc , whose name is main or being the only PrimeFunc. More...
|
|
const tir::BlockNode * | FindAnchorBlock (const IRModule &mod) |
| Find the "anchor block" of the given module. We define the anchor block to be the block with (1) an init statement and (2) having the biggest flops count. The latter condition is only used when there are multiple blocks with an init statement. For example, if the input module is conv2d + fused spatial blocks, conv2d is the anchor block. The input module may not contain more than one such block. For example, a module having two conv2d is not allowed as an input. However, a module created from winograd convolution has multiple blocks with an init statement (input transform, batched GEMM, and output transform). We use the second condition, the flops count, to determine that the batched GEMM block is the anchor block. More...
|
|
DataType | DefaultIndexType () |
| if TVM_INDEX_DEFAULT_I64 is set, return int64, otherwise return int32 More...
|
|
Buffer | decl_buffer (Array< PrimExpr > shape, DataType dtype=DataType::Float(32), String name="buffer", String storage_scope="", Array< IntImm > axis_separators={}, Span span=Span()) |
| Construct a new buffer given shape, and dtype. More...
|
|
tir::Buffer | BufferWithOffsetAlignment (Array< PrimExpr > shape, DataType dtype, std::string name, int data_alignment, int offset_factor, bool compact, std::string memory_scope="") |
| Creates TIR Buffer for provided parameters. More...
|
|
template<typename K , typename V > |
std::unordered_map< K, V > | as_unordered_map (const Map< K, V > &dmap) |
|
PrimFunc | Specialize (PrimFunc func, const Map< Var, ObjectRef > ¶m_map) |
| Specialize parameters of PrimFunc. More...
|
|
IndexMap | Substitute (const IndexMap &index_map, std::function< Optional< PrimExpr >(const Var &var)> f_subst) |
| Substitute variables in an index map. More...
|
|
bool | IsPointerType (const Type &type, const DataType &element_type) |
| Check if type is a pointer to a runtime element type. More...
|
|
template<typename ValueType , typename = typename std::enable_if<std::is_pod<ValueType>::value>::type> |
PrimExpr | make_const (DataType t, ValueType value, Span span=Span()) |
| Make a const value with certain data type. More...
|
|
PrimExpr | make_zero (DataType t, Span span=Span()) |
| Make a const zero expr. More...
|
|
PrimExpr | const_true (int lanes=1, Span span=Span()) |
| Make a constant true expression. More...
|
|
PrimExpr | const_false (int lanes=1, Span span=Span()) |
| Make a constant false expression. More...
|
|
const int64_t * | as_const_int (const PrimExpr &x) |
| Get x as constant int expression. More...
|
|
bool | is_const_int (const PrimExpr &x, int64_t value) |
| Check whether x is a constant integer expression. More...
|
|
bool | is_no_op (const tir::Stmt &stmt) |
| Check whether stmt is nop. More...
|
|
bool | is_one (const PrimExpr &x) |
| Check whether x is a constant integer 1. More...
|
|
bool | is_zero (const PrimExpr &x) |
| Check whether x is a constant integer 0. More...
|
|
bool | is_const_int (const PrimExpr &x) |
| Check whether x is an integer constant. More...
|
|
bool | is_const_number (const PrimExpr &x) |
| Check whether x is an integer/float constant. More...
|
|
template<typename FReduce > |
PrimExpr | foldl (FReduce freduce, PrimExpr init_value, const Array< PrimExpr > &values, Span span=Span()) |
| Left fold. More...
|
|
bool | is_const_power_of_two_integer (const PrimExpr &x, int *shift) |
| Check whether x is a constant power of two If x is power of two, write the power to the shift. More...
|
|
bool | is_positive_const (const PrimExpr &a) |
|
bool | is_negative_const (const PrimExpr &a) |
|
template<typename ValueType > |
PrimExpr | MakeConstScalar (DataType t, ValueType value, Span span=Span()) |
|
template<> |
PrimExpr | MakeConstScalar (DataType t, bool value, Span span) |
|
std::ostream & | operator<< (std::ostream &os, CallEffectKind side_effect) |
|
PrimExpr | TypeAnnotation (DataType dtype, Span span=Span()) |
| Create a type annotation expression. More...
|
|
std::ostream & | operator<< (std::ostream &os, ForKind kind) |
|
const char * | ForKind2String (ForKind t) |
|
Stmt | IRTransform (Stmt stmt, const runtime::PackedFunc &preorder, const runtime::PackedFunc &postorder, Optional< Array< String >> only_enable=NullOpt) |
| recursively visit the ir nodes in post DFS order, and transform it More...
|
|
void | PostOrderVisit (const ObjectRef &node, std::function< void(const ObjectRef &)> fvisit) |
| Recursively visit the ir in post DFS order node, apply fvisit Each node is guaranteed to be visited only once. More...
|
|
Stmt | Substitute (Stmt stmt, std::function< Optional< PrimExpr >(const Var &var)> vmap) |
| Substitute the var specified by vmap. More...
|
|
PrimExpr | Substitute (PrimExpr expr, std::function< Optional< PrimExpr >(const Var &var)> vmap) |
| Substitute the var specified by vmap. More...
|
|
template<typename T > |
Array< T > | Substitute (const Array< T > &arr, std::function< Optional< PrimExpr >(const Var &var)> vmap) |
| Substitute the var specified by vmap. More...
|
|
Range | Substitute (const Range &range, std::function< Optional< PrimExpr >(const Var &var)> vmap) |
| Substitute the vars specified by vmap. More...
|
|
template<typename Obj > |
auto | Substitute (Obj &&obj, const Map< Var, PrimExpr > &vmap) |
| Substitute the vars specified by vmap. More...
|
|
template<typename Obj , typename Expr , typename = std::enable_if_t<std::is_base_of_v<PrimExpr, Expr>>> |
auto | Substitute (Obj &&obj, const Map< Var, Expr > &vmap) |
| Substitute the vars specified by vmap. More...
|
|
template<typename Obj , typename Expr , typename = std::enable_if_t<std::is_base_of_v<PrimExpr, Expr>>> |
auto | Substitute (Obj &&obj, const std::unordered_map< const VarNode *, Expr > &vmap) |
| Substitute the vars specified by vmap. More...
|
|
template<typename Obj , typename Expr , typename Hasher , typename EqualityChecker , typename = std::enable_if_t<std::is_base_of_v<PrimExpr, Expr>>> |
auto | Substitute (Obj &&obj, const std::unordered_map< Var, Expr, Hasher, EqualityChecker > &vmap) |
| Substitute the vars specified by vmap. More...
|
|
template<typename Obj , typename Expr , typename = std::enable_if_t<std::is_base_of_v<PrimExpr, Expr>>> |
auto | Substitute (Obj &&obj, const std::unordered_map< IterVar, Expr > &iter_vmap) |
| Substitute the vars specified by vmap. More...
|
|
Stmt | SubstituteWithDataTypeLegalization (Stmt stmt, std::function< Optional< PrimExpr >(const Var &)> vmap) |
| Substitute the var specified by vmap and legalize data types after substitution. More...
|
|
PrimExpr | SubstituteWithDataTypeLegalization (PrimExpr expr, std::function< Optional< PrimExpr >(const Var &)> vmap) |
| Substitute the var specified by vmap and legalize data types after substitution. More...
|
|
void | PreOrderVisit (const ObjectRef &stmt_or_expr, const std::function< bool(const ObjectRef &)> &fvisit) |
| Recursively visit the IR in pre DFS order node, apply fvisit. If fvisit returns false, it won't visit the children of the node. More...
|
|
PrimFunc | RenewDefs (const PrimFunc &func) |
| Renew the definition nodes for a TIR, including Var, Buffer and IterVar. This pass works as a simple DeepCopy to duplicate a function with different Vars and Buffers but the same behavior. More...
|
|
template<typename Node , typename = std::enable_if_t<std::is_base_of_v<StmtNode, Node>>> |
bool | ContainsNode (const Stmt &stmt) |
| Check if the statement contains the specified node type. More...
|
|
void | SetSeqIndex (std::unordered_map< const StmtNode *, StmtSRef > &stmt2ref, const Stmt &stmt, int seq_index, bool include_loops=true) |
| Set the StmtSRefNode::seq_index field for stmt. More...
|
|
void | SetSeqIndexInChildren (std::unordered_map< const StmtNode *, StmtSRef > &stmt2ref, const SeqStmtNode *seq_stmt, bool include_loops=true) |
| Update seq_index of the children of a SeqStmt. More...
|
|
const char * | IterVarType2String (IterVarType t) |
|