24#ifndef TVM_RELAX_BLOCK_BUILDER_H_
25#define TVM_RELAX_BLOCK_BUILDER_H_
140 virtual void BeginScope(ffi::Optional<ffi::Array<Var>> params) = 0;
Algebra expression simplifications.
Managed reference to BaseFuncNode.
Definition function.h:250
Managed reference to ExprNode.
Definition base_expr.h:335
Managed reference to GlobalVarNode.
Definition expr.h:429
Managed reference class to IRModuleNode.
Definition module.h:255
Managed reference to TypeNode.
Definition base_expr.h:77
Managed reference class to UniqueNameSupplyNode.
Definition unique_name_supply.h:115
Managed reference to VarNode.
Definition expr.h:372
RAII wrapper function to enter and exit a context object similar to python's with syntax.
Definition with_context.h:59
Managed reference to AnalyzerObj.
Definition analyzer.h:931
A builder to build Relax binding blocks.
Definition block_builder.h:65
virtual void BeginDataflowBlock()=0
Begin to build a DataflowBlock.
virtual IRModule GetContextIRModule() const =0
Get the context IRModule in this builder.
virtual arith::Analyzer GetAnalyzer()=0
Get the analyzer of the BlockBuilder.
virtual Var Emit(Expr expr, ffi::String name_hint="")=0
Emits an Expr, and returns the variable it is bound to.
virtual void BeginInnerScope()=0
Begin a new scope, which inherits visible parameters from its parent scope.
virtual void EmitNormalized(Binding normalized_binding)=0
Emit a binding that is already normalized.
virtual GlobalVar AddFunction(const BaseFunc &func, ffi::String func_name_hint)=0
Add a Relax function or a TIR PrimFunc to internal context module.
virtual IRModule Finalize()=0
Finalize the building process and return the result IRModule. Possibly rename GlobalVars in the IRMod...
virtual Expr Normalize(const Expr &expr)=0
Convert an expression to normal form, and try to eagerly infer types and shapes.
virtual void BeginScope(ffi::Optional< ffi::Array< Var > > params)=0
Begin a new scope, with optional parameters that are visible within the scope.
TVM_FFI_DECLARE_OBJECT_INFO("relax.BlockBuilder", BlockBuilderNode, ffi::Object)
virtual void EndScope()=0
End the previously defined scope.
virtual UniqueNameSupply name_supply()=0
Get the unique name supply for generating unique names.
virtual Var EmitMatchCast(Expr value, Type ty, ffi::String name_hint="")=0
Emit a MatchCast.
virtual void UpdateFunction(const GlobalVar &gv, BaseFunc function)=0
Update a Relax function or a TIR PrimFunc in the internal context module.
virtual Var EmitOutput(Expr output, ffi::String name_hint="")=0
Generate an output for the current dataflow block.
virtual void AddDefinitionToScope(Var var)=0
Append a definition to the current scope.
virtual bool CurrentBlockIsDataFlow()=0
Check if the block being built is DataflowBlock or not.
virtual BindingBlock EndBlock()=0
End building a BindingBlock.
virtual void BeginBindingBlock()=0
Begin to build a BindingBlock.
virtual ffi::Optional< Expr > LookupBinding(const Var &var)=0
Lookup the binding value that var binds to in the current emitted sequences.
static constexpr const bool _type_mutable
Definition block_builder.h:253
virtual Expr NormalizeArgument(const Expr &expr)=0
Normalize argument to a call or another IRNode.
Definition block_builder.h:257
static BlockBuilder Create(ffi::Optional< IRModule > ctx_mod, DisableOperatorSpecificNormalizationForTVMScript tag)
Create a BlockBuilder.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(BlockBuilder, ffi::ObjectRef, BlockBuilderNode)
static BlockBuilder Create(ffi::Optional< IRModule > ctx_mod)
Create a BlockBuilder.
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition analyzer.h:40
Utility classes and functions for working with the Relax IR.
A marker struct to disable FNormalize.
Definition block_builder.h:295
DisableOperatorSpecificNormalizationForTVMScript()=default
UniqueNameSupply that can be used to generate unique variable names.