24 #ifndef TVM_TIR_ANALYSIS_H_ 25 #define TVM_TIR_ANALYSIS_H_ 65 template <
class FLambda>
68 const BaseFunc& base_func = kv.second;
104 TVM_DLL
bool UsesVar(
const Stmt& stmt, std::function<
bool(
const VarNode*)> vset_contains);
197 const Integer& workspace_byte_alignment);
211 namespace transform {
245 #endif // TVM_TIR_ANALYSIS_H_ Managed reference to BlockNode.
Definition: stmt.h:1164
Map< Buffer, Optional< Stmt > > DetectBufferAccessLCA(const PrimFunc &func)
Detect the lowest common ancestor(LCA) of buffer access, including both high-level access(BufferLoad...
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 ...
IRModule that holds the functions and type definitions.
Performance counters for profiling via the PAPI library.
Definition: analyzer.h:36
Attribute types in the Op registry for TIR ops.
A variable node in the IR.
Definition: var.h:47
Primitive functions that contains TIR statements.
Definition: function.h:46
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 numb...
CallEffectKind
The effect type of the call.
Definition: op_attr_types.h:60
Compare two expressions recursively and check if they are equal to each other without var remapping...
Definition: analysis.h:54
Map< GlobalVar, BaseFunc > functions
A map from ids to all global functions.
Definition: module.h:57
Array, container representing a contiguous sequence of ObjectRefs.
Definition: array.h:270
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(i...
Managed reference to PrimFuncNode.
Definition: function.h:135
bool VerifyMemory(const PrimFunc &func)
Verify if memory accesses are legal for a specific target device type.
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.
Container of all statements.
Definition: stmt.h:57
Array< Var > UndefinedVars(const Stmt &stmt, const Array< Var > &defs)
Find undefined vars in the statement.
void VisitPrimFuncs(const IRModule &mod, FLambda fvisit)
Visit the PrimFuncs in the IRModule.
Definition: analysis.h:66
size_t CalculateExprComplexity(const PrimExpr &expr)
Calculate the expresion complexity based on number of symbols it contains.
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...
Managed reference class to IRModuleNode.
Definition: module.h:352
bool UsesVar(const Stmt &stmt, std::function< bool(const VarNode *)> vset_contains)
Whether the given Stmt uses any var in the given variable set.
Map container of NodeRef->NodeRef in DSL graph. Map implements copy on write semantics, which means map is mutable but copy will happen when array is referenced in more than two places.
Definition: map.h:1235
CallEffectKind SideEffect(const PrimExpr &expr)
Analyze the side effect.
Managed reference to BaseFuncNode.
Definition: function.h:143
bool operator()(const PrimExpr &lhs, const PrimExpr &rhs) const
Reference to PrimExprNode.
Definition: expr.h:109
tvm::PrimExpr mod(const tvm::PrimExpr &a, const tvm::PrimExpr &b)
Definition: broadcast.h:271
const ObjectType * as() const
Try to downcast the internal Object to a raw pointer of a corresponding type.
Definition: object.h:858
Container of constant int that adds more constructors.
Definition: expr.h:356