You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2026/09/06 19:42:27 UTC

(tvm-site) branch asf-site updated: deploying docs (apache/tvm@7e06fc6c1420d0188eb9d889bd74e2e1fb76e448)

This is an automated email from the ASF dual-hosted git repository.

tqchen pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/tvm-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new f5356eac257 deploying docs (apache/tvm@7e06fc6c1420d0188eb9d889bd74e2e1fb76e448)
f5356eac257 is described below

commit f5356eac2571cb440cf12157419a62327538a319
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Sun Sep 6 19:42:19 2026 +0000

    deploying docs (apache/tvm@7e06fc6c1420d0188eb9d889bd74e2e1fb76e448)
---
 .../import_model.zip                               |  Bin 35138 -> 35138 bytes
 .../dlight_gpu_scheduling.zip                      |  Bin 26311 -> 26311 bytes
 .../11c11e53c7dace51a8be968ee169ed0d/ir_module.zip |  Bin 23756 -> 23756 bytes
 .../tir_transformation.zip                         |  Bin 15923 -> 15923 bytes
 .../meta_schedule.zip                              |  Bin 24239 -> 24239 bytes
 .../mix_python_and_tvm_with_pymodule.zip           |  Bin 38907 -> 38907 bytes
 .../relax_creation.zip                             |  Bin 22429 -> 22429 bytes
 .../relax_transformation.zip                       |  Bin 11480 -> 11480 bytes
 .../optimize_llm.zip                               |  Bin 53997 -> 53997 bytes
 .../bring_your_own_codegen.zip                     |  Bin 36295 -> 36295 bytes
 .../e2e_opt_model.zip                              |  Bin 14479 -> 14479 bytes
 .../quick_start.zip                                |  Bin 16252 -> 16252 bytes
 .../export_and_load_executable.zip                 |  Bin 31408 -> 31408 bytes
 .../tir_creation.zip                               |  Bin 24580 -> 24580 bytes
 .../cross_compilation_and_rpc.zip                  |  Bin 62286 -> 62286 bytes
 .../customize_opt.zip                              |  Bin 20522 -> 20522 bytes
 .../relax/tutorials/sg_execution_times.rst         |    6 +-
 .../tensor_ir/tutorials/sg_execution_times.rst     |    8 +-
 .../tensor_ir/tutorials/tir_transformation.rst     |    6 +-
 docs/_sources/get_started/tutorials/ir_module.rst  |    8 +-
 .../_sources/get_started/tutorials/quick_start.rst |    4 +-
 .../get_started/tutorials/sg_execution_times.rst   |    6 +-
 .../how_to/tutorials/cross_compilation_and_rpc.rst |    6 +-
 docs/_sources/how_to/tutorials/e2e_opt_model.rst   |    2 +-
 .../how_to/tutorials/sg_execution_times.rst        |   16 +-
 docs/_sources/sg_execution_times.rst               |   30 +-
 docs/commit_hash                                   |    2 +-
 .../relax/tutorials/sg_execution_times.html        |    6 +-
 .../tensor_ir/tutorials/sg_execution_times.html    |    8 +-
 .../tensor_ir/tutorials/tir_transformation.html    |    6 +-
 docs/get_started/tutorials/ir_module.html          |    8 +-
 docs/get_started/tutorials/quick_start.html        |    4 +-
 docs/get_started/tutorials/sg_execution_times.html |    6 +-
 .../tutorials/cross_compilation_and_rpc.html       |    6 +-
 docs/how_to/tutorials/e2e_opt_model.html           |    4 +-
 docs/how_to/tutorials/sg_execution_times.html      |   16 +-
 docs/reference/api/doxygen/analyzer_8h_source.html |    6 +-
 .../api/doxygen/axis__group__graph_8h_source.html  |   10 +-
 .../api/doxygen/base__expr_8h_source.html          | 1009 +++++++-------
 .../api/doxygen/binding__rewrite_8h_source.html    |    4 +-
 .../api/doxygen/block__builder_8h_source.html      |    8 +-
 docs/reference/api/doxygen/bnn_8h_source.html      |    6 +-
 docs/reference/api/doxygen/bound_8h_source.html    |    4 +-
 docs/reference/api/doxygen/broadcast_8h.html       |    2 +-
 .../reference/api/doxygen/broadcast_8h_source.html |    2 +-
 docs/reference/api/doxygen/buffer_8h_source.html   |   14 +-
 .../api/doxygen/buffer__region_8h_source.html      |    6 +-
 docs/reference/api/doxygen/bytecode_8h_source.html |    2 +-
 .../classtvm_1_1ExprNode__inherit__graph.svg       |   43 +-
 .../doxygen/classtvm_1_1FuncTypeNode-members.html  |   13 +-
 .../api/doxygen/classtvm_1_1FuncTypeNode.html      |    6 +-
 .../classtvm_1_1FuncTypeNode__coll__graph.svg      |  127 +-
 .../classtvm_1_1FuncTypeNode__inherit__graph.svg   |   47 +-
 .../api/doxygen/classtvm_1_1NodeFunctor.html       |    2 +-
 .../classtvm_1_1OpaqueTypeNode-members.html        |    9 +-
 .../api/doxygen/classtvm_1_1OpaqueTypeNode.html    |    6 +-
 .../classtvm_1_1OpaqueTypeNode__coll__graph.svg    |   93 +-
 .../classtvm_1_1OpaqueTypeNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1PointerTypeNode-members.html       |   13 +-
 .../api/doxygen/classtvm_1_1PointerTypeNode.html   |    6 +-
 .../classtvm_1_1PointerTypeNode__coll__graph.svg   |  127 +-
 ...classtvm_1_1PointerTypeNode__inherit__graph.svg |   47 +-
 .../doxygen/classtvm_1_1PrimTypeNode-members.html  |   11 +-
 .../api/doxygen/classtvm_1_1PrimTypeNode.html      |    6 +-
 .../classtvm_1_1PrimTypeNode__coll__graph.svg      |   93 +-
 .../classtvm_1_1PrimTypeNode__inherit__graph.svg   |   47 +-
 .../classtvm_1_1TensorMapTypeNode-members.html     |    9 +-
 .../api/doxygen/classtvm_1_1TensorMapTypeNode.html |    6 +-
 .../classtvm_1_1TensorMapTypeNode__coll__graph.svg |   93 +-
 ...asstvm_1_1TensorMapTypeNode__inherit__graph.svg |   47 +-
 .../doxygen/classtvm_1_1TupleTypeNode-members.html |   13 +-
 .../api/doxygen/classtvm_1_1TupleTypeNode.html     |    6 +-
 .../classtvm_1_1TupleTypeNode__coll__graph.svg     |   93 +-
 .../classtvm_1_1TupleTypeNode__inherit__graph.svg  |   47 +-
 .../api/doxygen/classtvm_1_1TypeNode-members.html  |    7 +-
 .../api/doxygen/classtvm_1_1TypeNode.html          |   28 +-
 .../doxygen/classtvm_1_1TypeNode__coll__graph.svg  |   89 +-
 .../classtvm_1_1TypeNode__inherit__graph.svg       |   99 +-
 .../api/doxygen/classtvm_1_1VarNode-members.html   |   15 +-
 .../reference/api/doxygen/classtvm_1_1VarNode.html |   28 +-
 .../doxygen/classtvm_1_1VarNode__coll__graph.svg   |  163 +--
 .../classtvm_1_1VarNode__inherit__graph.svg        |   91 +-
 .../classtvm_1_1arith_1_1ConstraintContext.html    |    2 +-
 .../classtvm_1_1relax_1_1AnyTypeNode-members.html  |    9 +-
 .../doxygen/classtvm_1_1relax_1_1AnyTypeNode.html  |    6 +-
 ...asstvm_1_1relax_1_1AnyTypeNode__coll__graph.svg |   93 +-
 ...tvm_1_1relax_1_1AnyTypeNode__inherit__graph.svg |   47 +-
 ...asstvm_1_1relax_1_1DataflowVarNode-members.html |   17 +-
 .../classtvm_1_1relax_1_1DataflowVarNode.html      |    6 +-
 ...vm_1_1relax_1_1DataflowVarNode__coll__graph.svg |  165 +--
 ...1_1relax_1_1DataflowVarNode__inherit__graph.svg |   91 +-
 .../classtvm_1_1relax_1_1FuncTypeNode-members.html |   19 +-
 .../doxygen/classtvm_1_1relax_1_1FuncTypeNode.html |    6 +-
 ...sstvm_1_1relax_1_1FuncTypeNode__coll__graph.svg |  127 +-
 ...vm_1_1relax_1_1FuncTypeNode__inherit__graph.svg |   47 +-
 ...tvm_1_1relax_1_1PackedFuncTypeNode-members.html |    9 +-
 .../classtvm_1_1relax_1_1PackedFuncTypeNode.html   |    6 +-
 ...1_1relax_1_1PackedFuncTypeNode__coll__graph.svg |   93 +-
 ...relax_1_1PackedFuncTypeNode__inherit__graph.svg |   47 +-
 ...classtvm_1_1relax_1_1ShapeTypeNode-members.html |   15 +-
 .../classtvm_1_1relax_1_1ShapeTypeNode.html        |    6 +-
 ...stvm_1_1relax_1_1ShapeTypeNode__coll__graph.svg |   93 +-
 ...m_1_1relax_1_1ShapeTypeNode__inherit__graph.svg |   47 +-
 ...lasstvm_1_1relax_1_1TensorTypeNode-members.html |   23 +-
 .../classtvm_1_1relax_1_1TensorTypeNode.html       |    6 +-
 ...tvm_1_1relax_1_1TensorTypeNode__coll__graph.svg |   93 +-
 ..._1_1relax_1_1TensorTypeNode__inherit__graph.svg |   47 +-
 ..._1_1distributed_1_1DTensorTypeNode-members.html |   19 +-
 ...1_1relax_1_1distributed_1_1DTensorTypeNode.html |    6 +-
 ...distributed_1_1DTensorTypeNode__coll__graph.svg |  277 ++--
 ...tributed_1_1DTensorTypeNode__inherit__graph.svg |   47 +-
 ...lasstvm_1_1tirx_1_1AllocBufferNode-members.html |   17 +-
 .../classtvm_1_1tirx_1_1AllocBufferNode.html       |    6 +-
 ...tvm_1_1tirx_1_1AllocBufferNode__coll__graph.svg |  169 +--
 ..._1_1tirx_1_1AllocBufferNode__inherit__graph.svg |   47 +-
 ...classtvm_1_1tirx_1_1AssertStmtNode-members.html |   19 +-
 .../classtvm_1_1tirx_1_1AssertStmtNode.html        |    6 +-
 ...stvm_1_1tirx_1_1AssertStmtNode__coll__graph.svg |  163 +--
 ...m_1_1tirx_1_1AssertStmtNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1AttrStmtNode-members.html  |   21 +-
 .../doxygen/classtvm_1_1tirx_1_1AttrStmtNode.html  |    6 +-
 ...asstvm_1_1tirx_1_1AttrStmtNode__coll__graph.svg |  191 +--
 ...tvm_1_1tirx_1_1AttrStmtNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1BindNode-members.html      |   17 +-
 .../api/doxygen/classtvm_1_1tirx_1_1BindNode.html  |    6 +-
 .../classtvm_1_1tirx_1_1BindNode__coll__graph.svg  |  177 +--
 ...lasstvm_1_1tirx_1_1BindNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1BreakNode-members.html     |   13 +-
 .../api/doxygen/classtvm_1_1tirx_1_1BreakNode.html |    6 +-
 .../classtvm_1_1tirx_1_1BreakNode__coll__graph.svg |   93 +-
 ...asstvm_1_1tirx_1_1BreakNode__inherit__graph.svg |   47 +-
 ...vm_1_1tirx_1_1BufferRegionTypeNode-members.html |    9 +-
 .../classtvm_1_1tirx_1_1BufferRegionTypeNode.html  |    6 +-
 ..._1tirx_1_1BufferRegionTypeNode__coll__graph.svg |   93 +-
 ...irx_1_1BufferRegionTypeNode__inherit__graph.svg |   47 +-
 ...lasstvm_1_1tirx_1_1BufferStoreNode-members.html |   19 +-
 .../classtvm_1_1tirx_1_1BufferStoreNode.html       |    6 +-
 ...tvm_1_1tirx_1_1BufferStoreNode__coll__graph.svg |  205 +--
 ..._1_1tirx_1_1BufferStoreNode__inherit__graph.svg |   47 +-
 ...classtvm_1_1tirx_1_1BufferTypeNode-members.html |   37 +-
 .../classtvm_1_1tirx_1_1BufferTypeNode.html        |    6 +-
 ...stvm_1_1tirx_1_1BufferTypeNode__coll__graph.svg |  195 +--
 ...m_1_1tirx_1_1BufferTypeNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1ContinueNode-members.html  |   13 +-
 .../doxygen/classtvm_1_1tirx_1_1ContinueNode.html  |    6 +-
 ...asstvm_1_1tirx_1_1ContinueNode__coll__graph.svg |   93 +-
 ...tvm_1_1tirx_1_1ContinueNode__inherit__graph.svg |   47 +-
 ...classtvm_1_1tirx_1_1DeclBufferNode-members.html |   17 +-
 .../classtvm_1_1tirx_1_1DeclBufferNode.html        |    6 +-
 ...stvm_1_1tirx_1_1DeclBufferNode__coll__graph.svg |  175 +--
 ...m_1_1tirx_1_1DeclBufferNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1EvaluateNode-members.html  |   15 +-
 .../doxygen/classtvm_1_1tirx_1_1EvaluateNode.html  |    6 +-
 ...asstvm_1_1tirx_1_1EvaluateNode__coll__graph.svg |  133 +-
 ...tvm_1_1tirx_1_1EvaluateNode__inherit__graph.svg |   47 +-
 .../doxygen/classtvm_1_1tirx_1_1ExprFunctor.html   |    2 +-
 .../classtvm_1_1tirx_1_1ForNode-members.html       |   31 +-
 .../api/doxygen/classtvm_1_1tirx_1_1ForNode.html   |   14 +-
 .../classtvm_1_1tirx_1_1ForNode__coll__graph.svg   |  187 +--
 ...classtvm_1_1tirx_1_1ForNode__inherit__graph.svg |   45 +-
 ...classtvm_1_1tirx_1_1IfThenElseNode-members.html |   19 +-
 .../classtvm_1_1tirx_1_1IfThenElseNode.html        |    6 +-
 ...stvm_1_1tirx_1_1IfThenElseNode__coll__graph.svg |  191 +--
 ...m_1_1tirx_1_1IfThenElseNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1ReturnNode-members.html    |   15 +-
 .../doxygen/classtvm_1_1tirx_1_1ReturnNode.html    |    6 +-
 ...classtvm_1_1tirx_1_1ReturnNode__coll__graph.svg |  133 +-
 ...sstvm_1_1tirx_1_1ReturnNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1SBlockNode-members.html    |   31 +-
 .../doxygen/classtvm_1_1tirx_1_1SBlockNode.html    |    8 +-
 ...classtvm_1_1tirx_1_1SBlockNode__coll__graph.svg |  121 +-
 ...sstvm_1_1tirx_1_1SBlockNode__inherit__graph.svg |   45 +-
 ...sstvm_1_1tirx_1_1SBlockRealizeNode-members.html |   19 +-
 .../classtvm_1_1tirx_1_1SBlockRealizeNode.html     |    6 +-
 ...m_1_1tirx_1_1SBlockRealizeNode__coll__graph.svg |  189 +--
 ..._1tirx_1_1SBlockRealizeNode__inherit__graph.svg |   47 +-
 ...stvm_1_1tirx_1_1ScopeIdDefStmtNode-members.html |   15 +-
 .../classtvm_1_1tirx_1_1ScopeIdDefStmtNode.html    |    6 +-
 ..._1_1tirx_1_1ScopeIdDefStmtNode__coll__graph.svg |  137 +-
 ...1tirx_1_1ScopeIdDefStmtNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1SeqStmtNode-members.html   |   19 +-
 .../doxygen/classtvm_1_1tirx_1_1SeqStmtNode.html   |    6 +-
 ...lasstvm_1_1tirx_1_1SeqStmtNode__coll__graph.svg |   93 +-
 ...stvm_1_1tirx_1_1SeqStmtNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1StmtNode-members.html      |   11 +-
 .../api/doxygen/classtvm_1_1tirx_1_1StmtNode.html  |   28 +-
 .../classtvm_1_1tirx_1_1StmtNode__coll__graph.svg  |   89 +-
 ...lasstvm_1_1tirx_1_1StmtNode__inherit__graph.svg |  115 +-
 .../doxygen/classtvm_1_1tirx_1_1StmtSRefNode.html  |    2 +-
 ...asstvm_1_1tirx_1_1StmtSRefNode__coll__graph.svg |   99 +-
 ...m_1_1tirx_1_1TilePrimitiveCallNode-members.html |   29 +-
 .../classtvm_1_1tirx_1_1TilePrimitiveCallNode.html |    6 +-
 ...1tirx_1_1TilePrimitiveCallNode__coll__graph.svg |  205 +--
 ...rx_1_1TilePrimitiveCallNode__inherit__graph.svg |   47 +-
 .../classtvm_1_1tirx_1_1WhileNode-members.html     |   17 +-
 .../api/doxygen/classtvm_1_1tirx_1_1WhileNode.html |   10 +-
 .../classtvm_1_1tirx_1_1WhileNode__coll__graph.svg |  191 +--
 ...asstvm_1_1tirx_1_1WhileNode__inherit__graph.svg |   47 +-
 .../api/doxygen/constant__utils_8h_source.html     |    4 +-
 docs/reference/api/doxygen/cublas_8h_source.html   |    2 +-
 .../api/doxygen/data__layout_8h_source.html        |    2 +-
 .../api/doxygen/dataflow__matcher_8h_source.html   |    2 +-
 .../api/doxygen/dataflow__pattern_8h_source.html   |    4 +-
 docs/reference/api/doxygen/dense_8h_source.html    |    4 +-
 .../api/doxygen/detail_2broadcast_8h_source.html   |    4 +-
 docs/reference/api/doxygen/dilate_8h_source.html   |    2 +-
 docs/reference/api/doxygen/doc_8h_source.html      |    6 +-
 docs/reference/api/doxygen/elemwise_8h_source.html |    6 +-
 .../api/doxygen/exec__context_8h_source.html       |    2 +-
 .../api/doxygen/exec__scope_8h_source.html         |  215 +--
 docs/reference/api/doxygen/extern_8h_source.html   |   12 +-
 docs/reference/api/doxygen/flatten_8h_source.html  |    2 +-
 docs/reference/api/doxygen/functions__.html        |    2 +
 docs/reference/api/doxygen/functions_func_g.html   |    4 +-
 docs/reference/api/doxygen/functions_g.html        |    2 +-
 docs/reference/api/doxygen/functions_k.html        |    4 +-
 docs/reference/api/doxygen/functions_vars.html     |    2 +
 .../api/doxygen/group__norm_8h_source.html         |    6 +-
 .../api/doxygen/index__map_8h_source.html          |    2 +-
 .../api/doxygen/instance__norm_8h_source.html      |    6 +-
 docs/reference/api/doxygen/int__set_8h_source.html |    4 +-
 .../api/doxygen/int__solver_8h_source.html         |    4 +-
 docs/reference/api/doxygen/ir_2expr_8h_source.html |  656 ++++-----
 .../api/doxygen/ir_2function_8h_source.html        |    4 +-
 docs/reference/api/doxygen/ir_2op_8h_source.html   |    4 +-
 .../api/doxygen/ir_2prim_2expr_8h_source.html      |  239 ++--
 docs/reference/api/doxygen/ir_2type_8h_source.html |    2 +-
 .../api/doxygen/iter__affine__map_8h_source.html   |    4 +-
 .../api/doxygen/layer__norm_8h_source.html         |    6 +-
 docs/reference/api/doxygen/layout_8h_source.html   |    4 +-
 .../doxygen/local__response__norm_8h_source.html   |    6 +-
 docs/reference/api/doxygen/module_8h_source.html   |    4 +-
 .../api/doxygen/namespacetvm_1_1relax.html         |    2 +-
 .../api/doxygen/nested__msg_8h_source.html         |    4 +-
 .../reference/api/doxygen/operation_8h_source.html |   10 +-
 .../api/doxygen/pad__utils_8h_source.html          |    2 +-
 docs/reference/api/doxygen/pattern_8h_source.html  |    2 +-
 docs/reference/api/doxygen/pooling_8h_source.html  |   10 +-
 .../api/doxygen/ravel__unravel_8h_source.html      |    2 +-
 .../reference/api/doxygen/reduction_8h_source.html |    8 +-
 .../api/doxygen/relax_2analysis_8h_source.html     |   10 +-
 ...relax_2distributed_2global__info_8h_source.html |    2 +-
 .../relax_2distributed_2type_8h_source.html        |    2 +-
 .../api/doxygen/relax_2expr_8h_source.html         |   10 +-
 .../doxygen/relax_2expr__functor_8h_source.html    |   18 +-
 .../doxygen/relax_2op__attr__types_8h_source.html  |    6 +-
 .../relax_2script_2builder_2frame_8h_source.html   |    4 +-
 .../relax_2script_2builder_2ir_8h_source.html      |    6 +-
 .../api/doxygen/relax_2transform_8h_source.html    |    8 +-
 .../api/doxygen/relax_2type_8h_source.html         |    8 +-
 .../api/doxygen/relax_2utils_8h_source.html        |    6 +-
 .../reference/api/doxygen/rms__norm_8h_source.html |    2 +-
 .../api/doxygen/s__tir_2analysis_8h_source.html    |    8 +-
 docs/reference/api/doxygen/s__tir_2utils_8h.html   |    4 +-
 .../api/doxygen/s__tir_2utils_8h_source.html       |   10 +-
 docs/reference/api/doxygen/schedule_8h_source.html |   10 +-
 .../script_2ir__builder_2ir_2ir_8h_source.html     |    2 +-
 docs/reference/api/doxygen/search/all_1.js         |   16 +-
 docs/reference/api/doxygen/search/all_3.js         |    2 +-
 docs/reference/api/doxygen/search/all_8.js         |    2 +-
 docs/reference/api/doxygen/search/all_c.js         |    2 +-
 docs/reference/api/doxygen/search/functions_6.js   |    2 +-
 docs/reference/api/doxygen/search/variables_0.js   |   16 +-
 docs/reference/api/doxygen/softmax_8h_source.html  |    6 +-
 docs/reference/api/doxygen/state_8h_source.html    |    2 +-
 .../api/doxygen/stmt__functor_8h_source.html       |   34 +-
 .../api/doxygen/strided__slice_8h_source.html      |    4 +-
 .../api/doxygen/task__scheduler_8h_source.html     |    2 +-
 .../api/doxygen/te_2tensor_8h_source.html          |   12 +-
 .../api/doxygen/tensor__utils_8h_source.html       |    4 +-
 .../api/doxygen/thread__bind_8h_source.html        |    2 +-
 .../api/doxygen/tile__primitive_8h_source.html     |    6 +-
 .../api/doxygen/tirx_2analysis_8h_source.html      |    6 +-
 .../api/doxygen/tirx_2expr__functor_8h_source.html |   12 +-
 .../api/doxygen/tirx_2function_8h_source.html      |    6 +-
 docs/reference/api/doxygen/tirx_2op_8h_source.html |   44 +-
 .../doxygen/tirx_2op__attr__types_8h_source.html   |    2 +-
 .../tirx_2script_2builder_2frame_8h_source.html    |    6 +-
 .../tirx_2script_2builder_2ir_8h_source.html       |   14 +-
 .../api/doxygen/tirx_2stmt_8h_source.html          | 1470 ++++++++++----------
 docs/reference/api/doxygen/topi_2nn_8h_source.html |   12 +-
 .../api/doxygen/topi_2transform_8h_source.html     |   20 +-
 .../api/doxygen/type__functor_8h_source.html       |    8 +-
 docs/reference/api/doxygen/var_8h_source.html      |   16 +-
 .../api/doxygen/vector__expr_8h_source.html        |    4 +-
 .../api/typedoc/classes/ArtifactCache.html         |   14 +-
 .../classes/ArtifactCrossOriginStorageCache.html   |   12 +-
 .../typedoc/classes/ArtifactIndexedDBCache.html    |   16 +-
 .../api/typedoc/classes/ArtifactOPFSCache.html     |   14 +-
 docs/reference/api/typedoc/classes/CacheState.html |   10 +-
 docs/reference/api/typedoc/classes/DLDataType.html |   14 +-
 docs/reference/api/typedoc/classes/DLDevice.html   |   12 +-
 docs/reference/api/typedoc/classes/Instance.html   |  118 +-
 docs/reference/api/typedoc/classes/LRUCache.html   |   14 +-
 .../classes/LinearCongruentialGenerator.html       |   20 +-
 docs/reference/api/typedoc/classes/Module.html     |   16 +-
 docs/reference/api/typedoc/classes/RPCServer.html  |   16 +-
 docs/reference/api/typedoc/classes/Scalar.html     |    8 +-
 docs/reference/api/typedoc/classes/TVMArray.html   |   16 +-
 docs/reference/api/typedoc/classes/TVMObject.html  |   12 +-
 docs/reference/api/typedoc/classes/Tensor.html     |   36 +-
 .../api/typedoc/classes/VirtualMachine.html        |   10 +-
 .../classes/_internal_.AsyncifyHandler.html        |   14 +-
 .../classes/_internal_.CachedCallStack.html        |   38 +-
 .../classes/_internal_.CanvasRenderManager.html    |   10 +-
 .../classes/_internal_.CrossOriginStorage.html     |   12 +-
 .../typedoc/classes/_internal_.Environment.html    |   14 +-
 .../api/typedoc/classes/_internal_.FFILibrary.html |   22 +-
 .../api/typedoc/classes/_internal_.Memory.html     |   50 +-
 .../api/typedoc/classes/_internal_.OPFSStore.html  |   16 +-
 .../typedoc/classes/_internal_.PackedFuncCell.html |   12 +-
 .../typedoc/classes/_internal_.RuntimeContext.html |   74 +-
 .../typedoc/classes/_internal_.WebGPUContext.html  |   30 +-
 .../enums/_internal_.AsyncifyStateKind.html        |    8 +-
 .../typedoc/enums/_internal_.RPCServerState.html   |   14 +-
 docs/reference/api/typedoc/functions/assert.html   |    2 +-
 .../api/typedoc/functions/createArtifactCache.html |    2 +-
 .../api/typedoc/functions/createPolyfillWASI.html  |    2 +-
 .../api/typedoc/functions/deleteTensorCache.html   |    4 +-
 .../api/typedoc/functions/detectGPUDevice.html     |    2 +-
 .../api/typedoc/functions/hasTensorInCache.html    |    4 +-
 .../api/typedoc/functions/instantiate.html         |    2 +-
 docs/reference/api/typedoc/functions/wasmPath.html |    2 +-
 .../typedoc/interfaces/ArtifactCacheTemplate.html  |   10 +-
 .../api/typedoc/interfaces/Disposable.html         |    4 +-
 .../interfaces/FetchTensorCacheOptions.html        |   12 +-
 .../typedoc/interfaces/GPUDeviceDetectOutput.html  |    8 +-
 .../api/typedoc/interfaces/InitProgressReport.html |    8 +-
 .../api/typedoc/interfaces/LibraryProvider.html    |    6 +-
 .../interfaces/TensorCacheAccessOptions.html       |   10 +-
 .../_internal_.CrossOriginHashDescriptor.html      |    6 +-
 .../_internal_.CrossOriginStorageAPI.html          |    4 +-
 .../_internal_.CrossOriginStorageHandle.html       |    6 +-
 ...CrossOriginStorageRequestFileHandleOptions.html |    6 +-
 .../_internal_.CrossOriginStorageWritable.html     |    6 +-
 .../interfaces/_internal_.FunctionInfo.html        |    8 +-
 .../interfaces/_internal_.OPFSDirectoryHandle.html |    8 +-
 .../interfaces/_internal_.OPFSFileHandle.html      |    8 +-
 .../interfaces/_internal_.OPFSStorageManager.html  |    4 +-
 .../interfaces/_internal_.OPFSStoreRecord.html     |    8 +-
 .../interfaces/_internal_.OPFSStoredEntry.html     |    6 +-
 .../_internal_.OPFSSyncAccessHandle.html           |   14 +-
 .../_internal_.OPFSWritableFileStream.html         |    6 +-
 .../interfaces/_internal_.TensorCacheEntry.html    |   14 +-
 .../interfaces/_internal_.TensorShardEntry.html    |   10 +-
 .../api/typedoc/types/ArtifactCacheType.html       |    2 +-
 .../api/typedoc/types/InitProgressCallback.html    |    2 +-
 .../api/typedoc/types/OPFSAccessMode.html          |    2 +-
 docs/reference/api/typedoc/types/PackedFunc.html   |    2 +-
 docs/reference/api/typedoc/types/RNGState.html     |    2 +-
 .../typedoc/types/_internal_.AsyncPackedFunc.html  |    2 +-
 .../types/_internal_.FObjectConstructor.html       |    2 +-
 .../types/_internal_.FTVMFFIWasmSafeCallType.html  |    2 +-
 .../types/_internal_.FTVMWasmAllocSpace.html       |    2 +-
 .../types/_internal_.FTVMWasmFreeSpace.html        |    2 +-
 .../types/_internal_.OPFSEffectiveAccessMode.html  |    2 +-
 .../types/_internal_.OPFSSyncAccessHandleMode.html |    2 +-
 .../api/typedoc/types/_internal_.Pointer.html      |    2 +-
 .../api/typedoc/types/_internal_.RequestLike.html  |    2 +-
 .../typedoc/types/_internal_.TVMObjectBase.html    |    2 +-
 docs/searchindex.js                                |    2 +-
 docs/sg_execution_times.html                       |   30 +-
 362 files changed, 6838 insertions(+), 6427 deletions(-)

diff --git a/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip b/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip
index 43db4c72fbd..816f8c00783 100644
Binary files a/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip and b/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip differ
diff --git a/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip b/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip
index a67c1271547..7081f6f76e8 100644
Binary files a/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip and b/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip differ
diff --git a/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip b/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip
index ead48899996..353370e4966 100644
Binary files a/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip and b/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip differ
diff --git a/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip b/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip
index dd61bef1a00..08d43a0a550 100644
Binary files a/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip and b/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip differ
diff --git a/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip b/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip
index b20390a14a6..adaeb7de7e2 100644
Binary files a/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip and b/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip differ
diff --git a/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip b/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip
index 7078b33957b..9fc58507500 100644
Binary files a/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip and b/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip differ
diff --git a/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip b/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip
index 8f6042ae24c..7efbcad31af 100644
Binary files a/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip and b/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip differ
diff --git a/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip b/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip
index 9d87cd44beb..fffbaafa23d 100644
Binary files a/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip and b/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip differ
diff --git a/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip b/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip
index ab23907305b..211a9e7c54a 100644
Binary files a/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip and b/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip differ
diff --git a/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip b/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip
index 5a0f9d75e36..c09ee67a997 100644
Binary files a/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip and b/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip differ
diff --git a/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip b/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip
index 5a3aaee0c15..0c2d2ee2ff4 100644
Binary files a/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip and b/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip differ
diff --git a/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip b/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip
index 32fbf248ce0..fb2a74a6034 100644
Binary files a/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip and b/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip differ
diff --git a/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip b/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip
index 687da6fec34..a85bed485b6 100644
Binary files a/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip and b/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip differ
diff --git a/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip b/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip
index 856c79b017f..fd02a89e7fc 100644
Binary files a/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip and b/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip differ
diff --git a/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip b/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip
index bc5416ef5a8..4d04889a3d0 100644
Binary files a/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip and b/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip differ
diff --git a/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip b/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip
index eadf45b1a7f..36190a103b3 100644
Binary files a/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip and b/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip differ
diff --git a/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
index b57a5fdec4b..62ad0a5340a 100644
--- a/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
+++ b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:00.222** total execution time for 2 files **from deep_dive/relax/tutorials**:
+**00:00.226** total execution time for 2 files **from deep_dive/relax/tutorials**:
 
 .. container::
 
@@ -33,8 +33,8 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``relax_creation.py``)
-     - 00:00.170
+     - 00:00.172
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``relax_transformation.py``)
-     - 00:00.053
+     - 00:00.054
      - 0.0
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
index e75b81b8b36..e4d996a6246 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:00.741** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
+**00:00.755** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
 
 .. container::
 
@@ -33,13 +33,13 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``tir_transformation.py``)
-     - 00:00.308
+     - 00:00.314
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``tir_creation.py``)
-     - 00:00.305
+     - 00:00.310
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_dlight_gpu_scheduling.py` (``dlight_gpu_scheduling.py``)
-     - 00:00.120
+     - 00:00.123
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``meta_schedule.py``)
      - 00:00.008
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
index 635f7ac4757..1c270f15b5e 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
@@ -120,7 +120,7 @@ original implementation.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       2.5973       2.5973       2.5973       2.5973       0.0000                  
+       2.7251       2.7251       2.7251       2.7251       0.0000                  
 
 
 
@@ -294,7 +294,7 @@ action involves reordering these two loops.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       0.8710       0.8710       0.8710       0.8710       0.0000                  
+       0.8687       0.8687       0.8687       0.8687       0.0000                  
 
 
 
@@ -424,7 +424,7 @@ from the reduction update via the **decompose_reduction** primitive.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       0.3508       0.3508       0.3508       0.3508       0.0000                  
+       0.3574       0.3574       0.3574       0.3574       0.0000                  
 
 
 
diff --git a/docs/_sources/get_started/tutorials/ir_module.rst b/docs/_sources/get_started/tutorials/ir_module.rst
index 9680c580701..03e09348438 100644
--- a/docs/_sources/get_started/tutorials/ir_module.rst
+++ b/docs/_sources/get_started/tutorials/ir_module.rst
@@ -696,8 +696,8 @@ We can deploy the IRModule on CPU by specifying the target as ``llvm``.
 
  .. code-block:: none
 
-    [[ 0.07230724 -0.15476     0.01303603  0.14224944 -0.11339368  0.11653914
-      -0.18400961 -0.09251943 -0.22786066 -0.00755053]]
+    [[-0.04906079  0.08248854 -0.09884828 -0.06321444 -0.02596358 -0.15142602
+       0.15036292  0.00141574 -0.09718873 -0.07536506]]
 
 
 
@@ -763,8 +763,8 @@ Now we can compile the IRModule on GPU, the similar way as we did on CPU.
 
  .. code-block:: none
 
-    [[ 0.07230722 -0.15476003  0.01303594  0.14224944 -0.11339366  0.11653913
-      -0.18400967 -0.09251944 -0.22786066 -0.00755055]]
+    [[-0.04906078  0.08248855 -0.09884827 -0.06321447 -0.02596364 -0.15142602
+       0.15036294  0.00141578 -0.09718873 -0.07536507]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/quick_start.rst b/docs/_sources/get_started/tutorials/quick_start.rst
index d51dbbbecb5..7b234e64778 100644
--- a/docs/_sources/get_started/tutorials/quick_start.rst
+++ b/docs/_sources/get_started/tutorials/quick_start.rst
@@ -224,8 +224,8 @@ different devices.
 
  .. code-block:: none
 
-    [[24544.922 25563.053 25170.848 24380.697 25840.262 25150.59  25745.281
-      26018.486 25568.842 25856.84 ]]
+    [[26075.84  23849.334 25417.9   24608.441 23918.44  24763.023 25066.568
+      23739.2   24092.348 24750.365]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/sg_execution_times.rst b/docs/_sources/get_started/tutorials/sg_execution_times.rst
index fba21af6432..3bec68f275c 100644
--- a/docs/_sources/get_started/tutorials/sg_execution_times.rst
+++ b/docs/_sources/get_started/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:05.299** total execution time for 2 files **from get_started/tutorials**:
+**00:05.261** total execution time for 2 files **from get_started/tutorials**:
 
 .. container::
 
@@ -33,8 +33,8 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``ir_module.py``)
-     - 00:05.143
+     - 00:05.102
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``quick_start.py``)
-     - 00:00.156
+     - 00:00.159
      - 0.0
diff --git a/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst b/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
index 2125c2f1e6c..ed2d147c501 100644
--- a/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
+++ b/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
@@ -275,7 +275,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    8.8e-08 secs/op
+    9e-08 secs/op
 
 
 
@@ -864,8 +864,8 @@ This workflow is applicable to various deployment scenarios:
     Converted PyTorch model to Relax:
       - Number of parameters: 4
     Using local target for demonstration
-    Exported library to: /tmp/tmp1u14oacz/model_deployed.so
-    Saved parameters to: /tmp/tmp1u14oacz/model_params.npz
+    Exported library to: /tmp/tmpfp48snxk/model_deployed.so
+    Saved parameters to: /tmp/tmpfp48snxk/model_params.npz
 
     RPC workflow (works for any remote device):
     ==================================================
diff --git a/docs/_sources/how_to/tutorials/e2e_opt_model.rst b/docs/_sources/how_to/tutorials/e2e_opt_model.rst
index 7a3515849cb..7a4485ee0c2 100644
--- a/docs/_sources/how_to/tutorials/e2e_opt_model.rst
+++ b/docs/_sources/how_to/tutorials/e2e_opt_model.rst
@@ -54,7 +54,7 @@ PyTorch.
  .. code-block:: none
 
     Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
-       0%|          | 0.00/44.7M [00:00<?, ?B/s]      67%|██████▋   | 30.1M/44.7M [00:00<00:00, 315MB/s]     100%|██████████| 44.7M/44.7M [00:00<00:00, 354MB/s]
+       0%|          | 0.00/44.7M [00:00<?, ?B/s]      69%|██████▉   | 30.9M/44.7M [00:00<00:00, 323MB/s]     100%|██████████| 44.7M/44.7M [00:00<00:00, 353MB/s]
 
 
 
diff --git a/docs/_sources/how_to/tutorials/sg_execution_times.rst b/docs/_sources/how_to/tutorials/sg_execution_times.rst
index 271510d1f26..ef1d316b25a 100644
--- a/docs/_sources/how_to/tutorials/sg_execution_times.rst
+++ b/docs/_sources/how_to/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:13.964** total execution time for 8 files **from how_to/tutorials**:
+**00:14.183** total execution time for 8 files **from how_to/tutorials**:
 
 .. container::
 
@@ -33,25 +33,25 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``optimize_llm.py``)
-     - 00:09.249
+     - 00:09.367
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``import_model.py``)
-     - 00:03.282
+     - 00:03.340
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``e2e_opt_model.py``)
-     - 00:00.625
+     - 00:00.662
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
-     - 00:00.471
+     - 00:00.474
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``customize_opt.py``)
-     - 00:00.291
+     - 00:00.294
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``bring_your_own_codegen.py``)
-     - 00:00.040
+     - 00:00.039
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_mix_python_and_tvm_with_pymodule.py` (``mix_python_and_tvm_with_pymodule.py``)
-     - 00:00.004
+     - 00:00.005
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_export_and_load_executable.py` (``export_and_load_executable.py``)
      - 00:00.002
diff --git a/docs/_sources/sg_execution_times.rst b/docs/_sources/sg_execution_times.rst
index cf31d59df1f..580136394d5 100644
--- a/docs/_sources/sg_execution_times.rst
+++ b/docs/_sources/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:20.227** total execution time for 16 files **from all galleries**:
+**00:20.424** total execution time for 16 files **from all galleries**:
 
 .. container::
 
@@ -33,49 +33,49 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``../how_to/tutorials/optimize_llm.py``)
-     - 00:09.249
+     - 00:09.367
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``../get_started/tutorials/ir_module.py``)
-     - 00:05.143
+     - 00:05.102
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``../how_to/tutorials/import_model.py``)
-     - 00:03.282
+     - 00:03.340
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``../how_to/tutorials/e2e_opt_model.py``)
-     - 00:00.625
+     - 00:00.662
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``../how_to/tutorials/cross_compilation_and_rpc.py``)
-     - 00:00.471
+     - 00:00.474
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``../deep_dive/tensor_ir/tutorials/tir_transformation.py``)
-     - 00:00.308
+     - 00:00.314
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``../deep_dive/tensor_ir/tutorials/tir_creation.py``)
-     - 00:00.305
+     - 00:00.310
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``../how_to/tutorials/customize_opt.py``)
-     - 00:00.291
+     - 00:00.294
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``../deep_dive/relax/tutorials/relax_creation.py``)
-     - 00:00.170
+     - 00:00.172
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``../get_started/tutorials/quick_start.py``)
-     - 00:00.156
+     - 00:00.159
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_dlight_gpu_scheduling.py` (``../deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.py``)
-     - 00:00.120
+     - 00:00.123
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``../deep_dive/relax/tutorials/relax_transformation.py``)
-     - 00:00.053
+     - 00:00.054
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``../how_to/tutorials/bring_your_own_codegen.py``)
-     - 00:00.040
+     - 00:00.039
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``../deep_dive/tensor_ir/tutorials/meta_schedule.py``)
      - 00:00.008
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_mix_python_and_tvm_with_pymodule.py` (``../how_to/tutorials/mix_python_and_tvm_with_pymodule.py``)
-     - 00:00.004
+     - 00:00.005
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_export_and_load_executable.py` (``../how_to/tutorials/export_and_load_executable.py``)
      - 00:00.002
diff --git a/docs/commit_hash b/docs/commit_hash
index f18280baf2f..d92c569e5b7 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-b5d13cd919dc2498f59a3b134f39996cf27604db
+7e06fc6c1420d0188eb9d889bd74e2e1fb76e448
diff --git a/docs/deep_dive/relax/tutorials/sg_execution_times.html b/docs/deep_dive/relax/tutorials/sg_execution_times.html
index 44ab43765a7..d53f375211f 100644
--- a/docs/deep_dive/relax/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/relax/tutorials/sg_execution_times.html
@@ -635,7 +635,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-deep-dive-relax-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:00.222</strong> total execution time for 2 files <strong>from deep_dive/relax/tutorials</strong>:</p>
+<p><strong>00:00.226</strong> total execution time for 2 files <strong>from deep_dive/relax/tutorials</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -657,11 +657,11 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="relax_creation.html#sphx-glr-deep-dive-relax-tutorials-relax-creation-py"><span class="std std-ref">Relax Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">relax_creation.py</span></code>)</p></td>
-<td><p>00:00.170</p></td>
+<td><p>00:00.172</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="relax_transformation.html#sphx-glr-deep-dive-relax-tutorials-relax-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">relax_transformation.py</span></code>)</p></td>
-<td><p>00:00.053</p></td>
+<td><p>00:00.054</p></td>
 <td><p>0.0</p></td>
 </tr>
 </tbody>
diff --git a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
index 14827b81c27..883a8142d90 100644
--- a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
@@ -635,7 +635,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-deep-dive-tensor-ir-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:00.741</strong> total execution time for 4 files <strong>from deep_dive/tensor_ir/tutorials</strong>:</p>
+<p><strong>00:00.755</strong> total execution time for 4 files <strong>from deep_dive/tensor_ir/tutorials</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -657,15 +657,15 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="tir_transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">tir_transformation.py</span></code>)</p></td>
-<td><p>00:00.308</p></td>
+<td><p>00:00.314</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tir_creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-creation-py"><span class="std std-ref">TensorIR Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">tir_creation.py</span></code>)</p></td>
-<td><p>00:00.305</p></td>
+<td><p>00:00.310</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="dlight_gpu_scheduling.html#sphx-glr-deep-dive-tensor-ir-tutorials-dlight-gpu-scheduling-py"><span class="std std-ref">DLight: Rule-Based GPU Scheduling</span></a> (<code class="docutils literal notranslate"><span class="pre">dlight_gpu_scheduling.py</span></code>)</p></td>
-<td><p>00:00.120</p></td>
+<td><p>00:00.123</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="meta_schedule.html#sphx-glr-deep-dive-tensor-ir-tutorials-meta-schedule-py"><span class="std std-ref">MetaSchedule: Search-Based Auto-Tuning</span></a> (<code class="docutils literal notranslate"><span class="pre">meta_schedule.py</span></code>)</p></td>
diff --git a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
index 2ba8d85ebf0..696a0c217a1 100644
--- a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
@@ -722,7 +722,7 @@ original implementation.</p>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   2.5973       2.5973       2.5973       2.5973       0.0000
+   2.7251       2.7251       2.7251       2.7251       0.0000
 </pre></div>
 </div>
 <section id="initialization-schedule">
@@ -820,7 +820,7 @@ class Module:
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.8710       0.8710       0.8710       0.8710       0.0000
+   0.8687       0.8687       0.8687       0.8687       0.0000
 </pre></div>
 </div>
 </section>
@@ -916,7 +916,7 @@ class Module:
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.3508       0.3508       0.3508       0.3508       0.0000
+   0.3574       0.3574       0.3574       0.3574       0.0000
 </pre></div>
 </div>
 </section>
diff --git a/docs/get_started/tutorials/ir_module.html b/docs/get_started/tutorials/ir_module.html
index 15ffdfb1086..ddecb7d7f7c 100644
--- a/docs/get_started/tutorials/ir_module.html
+++ b/docs/get_started/tutorials/ir_module.html
@@ -1162,8 +1162,8 @@ backends.</p>
 <span class="nb">print</span><span class="p">(</span><span class="n">cpu_out</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[ 0.07230724 -0.15476     0.01303603  0.14224944 -0.11339368  0.11653914
-  -0.18400961 -0.09251943 -0.22786066 -0.00755053]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.04906079  0.08248854 -0.09884828 -0.06321444 -0.02596358 -0.15142602
+   0.15036292  0.00141574 -0.09718873 -0.07536506]]
 </pre></div>
 </div>
 </section>
@@ -1197,8 +1197,8 @@ the details of <code class="docutils literal notranslate"><span class="pre">DLig
 <span class="k">assert</span> <span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="n">cpu_out</span><span class="p">,</span> <span class="n">gpu_out</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[ 0.07230722 -0.15476003  0.01303594  0.14224944 -0.11339366  0.11653913
-  -0.18400967 -0.09251944 -0.22786066 -0.00755055]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.04906078  0.08248855 -0.09884827 -0.06321447 -0.02596364 -0.15142602
+   0.15036294  0.00141578 -0.09718873 -0.07536507]]
 </pre></div>
 </div>
 </section>
diff --git a/docs/get_started/tutorials/quick_start.html b/docs/get_started/tutorials/quick_start.html
index a1c200bb868..97b6d713ee9 100644
--- a/docs/get_started/tutorials/quick_start.html
+++ b/docs/get_started/tutorials/quick_start.html
@@ -803,8 +803,8 @@ different devices.</p>
 <span class="nb">print</span><span class="p">(</span><span class="n">vm</span><span class="p">[</span><span class="s2">&quot;forward&quot;</span><span class="p">](</span><span class="n">tvm_data</span><span class="p">,</span> <span class="o">*</span><a href="https://docs.python.org/3/library/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a><span class="p">)</span><s [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[24544.922 25563.053 25170.848 24380.697 25840.262 25150.59  25745.281
-  26018.486 25568.842 25856.84 ]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[26075.84  23849.334 25417.9   24608.441 23918.44  24763.023 25066.568
+  23739.2   24092.348 24750.365]]
 </pre></div>
 </div>
 <p>Our goal is to bring machine learning to the application with any language of interest,
diff --git a/docs/get_started/tutorials/sg_execution_times.html b/docs/get_started/tutorials/sg_execution_times.html
index 01efdb030b4..64f83d44aaa 100644
--- a/docs/get_started/tutorials/sg_execution_times.html
+++ b/docs/get_started/tutorials/sg_execution_times.html
@@ -635,7 +635,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-get-started-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:05.299</strong> total execution time for 2 files <strong>from get_started/tutorials</strong>:</p>
+<p><strong>00:05.261</strong> total execution time for 2 files <strong>from get_started/tutorials</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -657,11 +657,11 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="ir_module.html#sphx-glr-get-started-tutorials-ir-module-py"><span class="std std-ref">IRModule</span></a> (<code class="docutils literal notranslate"><span class="pre">ir_module.py</span></code>)</p></td>
-<td><p>00:05.143</p></td>
+<td><p>00:05.102</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="quick_start.html#sphx-glr-get-started-tutorials-quick-start-py"><span class="std std-ref">Quick Start</span></a> (<code class="docutils literal notranslate"><span class="pre">quick_start.py</span></code>)</p></td>
-<td><p>00:00.156</p></td>
+<td><p>00:00.159</p></td>
 <td><p>0.0</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/tutorials/cross_compilation_and_rpc.html b/docs/how_to/tutorials/cross_compilation_and_rpc.html
index 45d0f287316..c674d408b8d 100644
--- a/docs/how_to/tutorials/cross_compilation_and_rpc.html
+++ b/docs/how_to/tutorials/cross_compilation_and_rpc.html
@@ -834,7 +834,7 @@ device and returns the measured cost. Network overhead is excluded.</p>
 <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">cost</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2"> secs/op&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>8.8e-08 secs/op
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>9e-08 secs/op
 </pre></div>
 </div>
 </section>
@@ -1363,8 +1363,8 @@ for ONNX models. Simply replace <code class="docutils literal notranslate"><span
 Converted PyTorch model to Relax:
   - Number of parameters: 4
 Using local target for demonstration
-Exported library to: /tmp/tmp1u14oacz/model_deployed.so
-Saved parameters to: /tmp/tmp1u14oacz/model_params.npz
+Exported library to: /tmp/tmpfp48snxk/model_deployed.so
+Saved parameters to: /tmp/tmpfp48snxk/model_params.npz
 
 RPC workflow (works for any remote device):
 ==================================================
diff --git a/docs/how_to/tutorials/e2e_opt_model.html b/docs/how_to/tutorials/e2e_opt_model.html
index 546fe8902a9..2376b136406 100644
--- a/docs/how_to/tutorials/e2e_opt_model.html
+++ b/docs/how_to/tutorials/e2e_opt_model.html
@@ -675,8 +675,8 @@ PyTorch.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://download.pytorch.org/models/resnet18-f37072fd.pth&quot; to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
 
   0%|          | 0.00/44.7M [00:00&lt;?, ?B/s]
- 67%|██████▋   | 30.1M/44.7M [00:00&lt;00:00, 315MB/s]
-100%|██████████| 44.7M/44.7M [00:00&lt;00:00, 354MB/s]
+ 69%|██████▉   | 30.9M/44.7M [00:00&lt;00:00, 323MB/s]
+100%|██████████| 44.7M/44.7M [00:00&lt;00:00, 353MB/s]
 </pre></div>
 </div>
 </section>
diff --git a/docs/how_to/tutorials/sg_execution_times.html b/docs/how_to/tutorials/sg_execution_times.html
index ad1c336146c..8997bec8d28 100644
--- a/docs/how_to/tutorials/sg_execution_times.html
+++ b/docs/how_to/tutorials/sg_execution_times.html
@@ -635,7 +635,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-how-to-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:13.964</strong> total execution time for 8 files <strong>from how_to/tutorials</strong>:</p>
+<p><strong>00:14.183</strong> total execution time for 8 files <strong>from how_to/tutorials</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -657,31 +657,31 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="optimize_llm.html#sphx-glr-how-to-tutorials-optimize-llm-py"><span class="std std-ref">Optimize Large Language Model</span></a> (<code class="docutils literal notranslate"><span class="pre">optimize_llm.py</span></code>)</p></td>
-<td><p>00:09.249</p></td>
+<td><p>00:09.367</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="import_model.html#sphx-glr-how-to-tutorials-import-model-py"><span class="std std-ref">Importing Models from ML Frameworks</span></a> (<code class="docutils literal notranslate"><span class="pre">import_model.py</span></code>)</p></td>
-<td><p>00:03.282</p></td>
+<td><p>00:03.340</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="e2e_opt_model.html#sphx-glr-how-to-tutorials-e2e-opt-model-py"><span class="std std-ref">End-to-End Optimize Model</span></a> (<code class="docutils literal notranslate"><span class="pre">e2e_opt_model.py</span></code>)</p></td>
-<td><p>00:00.625</p></td>
+<td><p>00:00.662</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="cross_compilation_and_rpc.html#sphx-glr-how-to-tutorials-cross-compilation-and-rpc-py"><span class="std std-ref">Cross Compilation and RPC</span></a> (<code class="docutils literal notranslate"><span class="pre">cross_compilation_and_rpc.py</span></code>)</p></td>
-<td><p>00:00.471</p></td>
+<td><p>00:00.474</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="customize_opt.html#sphx-glr-how-to-tutorials-customize-opt-py"><span class="std std-ref">Customize Optimization</span></a> (<code class="docutils literal notranslate"><span class="pre">customize_opt.py</span></code>)</p></td>
-<td><p>00:00.291</p></td>
+<td><p>00:00.294</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="bring_your_own_codegen.html#sphx-glr-how-to-tutorials-bring-your-own-codegen-py"><span class="std std-ref">Bring Your Own Codegen</span></a> (<code class="docutils literal notranslate"><span class="pre">bring_your_own_codegen.py</span></code>)</p></td>
-<td><p>00:00.040</p></td>
+<td><p>00:00.039</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="mix_python_and_tvm_with_pymodule.html#sphx-glr-how-to-tutorials-mix-python-and-tvm-with-pymodule-py"><span class="std std-ref">Mix Python/PyTorch with TVM Using BasePyModule</span></a> (<code class="docutils literal notranslate"><span class="pre">mix_python_and_tvm_with_pymodule.py</span></code>)</p></td>
-<td><p>00:00.004</p></td>
+<td><p>00:00.005</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="export_and_load_executable.html#sphx-glr-how-to-tutorials-export-and-load-executable-py"><span class="std std-ref">Export and Load Relax Executables</span></a> (<code class="docutils literal notranslate"><span class="pre">export_and_load_executable.py</span></code>)</p></td>
diff --git a/docs/reference/api/doxygen/analyzer_8h_source.html b/docs/reference/api/doxygen/analyzer_8h_source.html
index dd2ec144e16..60203063132 100644
--- a/docs/reference/api/doxygen/analyzer_8h_source.html
+++ b/docs/reference/api/doxygen/analyzer_8h_source.html
@@ -575,9 +575,9 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span>}  <span class="comment">// namespace tvm</span></div>
 </div>
 <div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_ARITH_ANALYZER_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:401</div></div>
-<div class="ttc" id="aclasstvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range container</div><div class="ttdef"><b>Definition</b> expr.h:610</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:372</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:402</div></div>
+<div class="ttc" id="aclasstvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range container</div><div class="ttdef"><b>Definition</b> expr.h:613</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1arith_1_1AnalyzerObj_html"><div class="ttname"><a href="classtvm_1_1arith_1_1AnalyzerObj.html">tvm::arith::AnalyzerObj</a></div><div class="ttdoc">Analyzer that contains bunch of sub-analyzers.</div><div class="ttdef"><b>Definition</b> analyzer.h:730</div></div>
 <div class="ttc" id="aclasstvm_1_1arith_1_1AnalyzerObj_html_a19f9b83800c85ab898a23220fbf000b1"><div class="ttname"><a href="classtvm_1_1arith_1_1AnalyzerObj.html#a19f9b83800c85ab898a23220fbf000b1">tvm::arith::AnalyzerObj::Simplify</a></div><div class="ttdeci">PrimExpr Simplify(const PrimExpr &amp;expr, int steps=2)</div><div class="ttdoc">Simplify expr.</div></div>
diff --git a/docs/reference/api/doxygen/axis__group__graph_8h_source.html b/docs/reference/api/doxygen/axis__group__graph_8h_source.html
index 8b689ebdda0..0d268c9bb4f 100644
--- a/docs/reference/api/doxygen/axis__group__graph_8h_source.html
+++ b/docs/reference/api/doxygen/axis__group__graph_8h_source.html
@@ -531,12 +531,12 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span> </div>
 <div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAX_DISTRIBUTED_AXIS_GROUP_GRAPH_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:474</div></div>
-<div class="ttc" id="aclasstvm_1_1ExprNode_html"><div class="ttname"><a href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></div><div class="ttdoc">Base type of all the expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:300</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:401</div></div>
+<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:477</div></div>
+<div class="ttc" id="aclasstvm_1_1ExprNode_html"><div class="ttname"><a href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></div><div class="ttdoc">Base type of all the expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:301</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:402</div></div>
 <div class="ttc" id="aclasstvm_1_1Range_html_a91e7301ca1d135ca5f8ed199efbb9818"><div class="ttname"><a href="classtvm_1_1Range.html#a91e7301ca1d135ca5f8ed199efbb9818">tvm::Range::FromMinExtent</a></div><div class="ttdeci">static Range FromMinExtent(PrimExpr min, PrimExpr extent, Span span=Span())</div><div class="ttdoc">construct a new range with min and extent The corresponding constructor is removed,...</div></div>
 <div class="ttc" id="aclasstvm_1_1VarNode_html"><div class="ttname"><a href="classtvm_1_1VarNode.html">tvm::VarNode</a></div><div class="ttdoc">A local variable in the IR.</div><div class="ttdef"><b>Definition</b> expr.h:355</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:372</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1arith_1_1Analyzer_html"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html">tvm::arith::Analyzer</a></div><div class="ttdoc">Managed reference to AnalyzerObj.</div><div class="ttdef"><b>Definition</b> analyzer.h:931</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1ConstantNode_html"><div class="ttname"><a href="classtvm_1_1relax_1_1ConstantNode.html">tvm::relax::ConstantNode</a></div><div class="ttdoc">Constant tensor.</div><div class="ttdef"><b>Definition</b> expr.h:93</div></div>
@@ -562,7 +562,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="anamespacetvm_1_1tirx_html_aa2311cd730cdca8a01c1d2ff35417ad2"><div class="ttname"><a href="namespacetvm_1_1tirx.html#aa2311cd730cdca8a01c1d2ff35417ad2">tvm::tirx::TIRVarAxis</a></div><div class="ttdeci">std::pair&lt; Var, int &gt; TIRVarAxis</div><div class="ttdef"><b>Definition</b> axis_group_graph.h:41</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_aae66818353d29c42b5f0337479f5d272"><div class="ttname"><a href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">tvm::tirx::BufferAxis</a></div><div class="ttdeci">std::pair&lt; BufferVar, int &gt; BufferAxis</div><div class="ttdef"><b>Definition</b> axis_group_graph.h:43</div></div>
 <div class="ttc" id="anamespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdoc">An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.</div><div class="ttdef"><b>Definition</b> analyzer.h:40</div></div>
-<div class="ttc" id="anamespacetvm_html_ad7c45c38af02ce88083d976f9be743b4"><div class="ttname"><a href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">tvm::operator==</a></div><div class="ttdeci">bool operator==(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:290</div></div>
+<div class="ttc" id="anamespacetvm_html_ad7c45c38af02ce88083d976f9be743b4"><div class="ttname"><a href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">tvm::operator==</a></div><div class="ttdeci">bool operator==(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:291</div></div>
 <div class="ttc" id="arelax_2distributed_2type_8h_html"><div class="ttname"><a href="relax_2distributed_2type_8h.html">type.h</a></div><div class="ttdoc">Type definitions for DTensor (Distributed Tensor)</div></div>
 <div class="ttc" id="arelax_2expr_8h_html"><div class="ttname"><a href="relax_2expr_8h.html">expr.h</a></div></div>
 <div class="ttc" id="astmt__functor_8h_html"><div class="ttname"><a href="stmt__functor_8h.html">stmt_functor.h</a></div><div class="ttdoc">Functors for tirx stmts utility functions to call common functors.</div></div>
diff --git a/docs/reference/api/doxygen/base__expr_8h_source.html b/docs/reference/api/doxygen/base__expr_8h_source.html
index d60e418a979..340ac84c83c 100644
--- a/docs/reference/api/doxygen/base__expr_8h_source.html
+++ b/docs/reference/api/doxygen/base__expr_8h_source.html
@@ -131,556 +131,559 @@ $(document).ready(function() { init_codefold(0); });
 </div>
 <div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span> </div>
 <div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">   67</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classtvm_1_1With.html">TVMFFISEqHashKind</a> <a class="code hl_variable" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a> = <a class="code hl_class" href="classtvm_1_1Wit [...]
-<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
-<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">   69</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">uint32_t</a> <a class="code hl_variable" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a> = 14;</div>
-<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">   70</a></span>  <a class="code hl_function" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.Type&quot;</span>, <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a>, ffi::Object);</div>
-<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>};</div>
-</div>
-<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> </div>
-<div class="foldopen" id="foldopen00077" data-start="{" data-end="};">
-<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="classtvm_1_1Type.html">   77</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1Type.html">Type</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
-<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">   80</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> <a class="code hl_function" href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">Missing</a>();</div>
-<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span> </div>
-<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="classtvm_1_1Type.html#a72af00ddec758c4ae997262d73ddf66c">   83</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Type.html#a72af00ddec758c4ae997262d73ddf66c">IsMissing</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span> </div>
-<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="classtvm_1_1Type.html#ada76bb43bdaa718bcff5c1f6337d4984">   85</a></span>  <a class="code hl_function" href="classtvm_1_1Type.html#ada76bb43bdaa718bcff5c1f6337d4984">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1Type.html">Type</a>, ffi::ObjectRef, <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a>);</div>
-<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>};</div>
-</div>
-<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span> </div>
-<div class="foldopen" id="foldopen00094" data-start="{" data-end="};">
-<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueTypeNode.html">   94</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueTypeNode.html">OpaqueTypeNode</a> <a class="code hl_class" href="classtvm_1_1With.html">final</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a> {</div>
-<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span> <span class="keyword">public</span>:</div>
-<div class="foldopen" id="foldopen00096" data-start="{" data-end="}">
-<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">   96</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">RegisterReflection</a>() {</div>
-<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>    <span class="keyword">namespace </span><a class="code hl_class" href="classtvm_1_1With.html">refl</a> = tvm::ffi::reflection;</div>
-<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>    refl::ObjectDef&lt;OpaqueTypeNode&gt;();</div>
-<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>  }</div>
-</div>
-<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span> </div>
-<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueTypeNode.html#a788cf9986a6a373d56a05b2561d63ef5">  101</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueTypeNode.html#a788cf9986a6a373d56a05b2561d63ef5">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;ir.OpaqueType&quot;</span>, <a class="code hl_class" href="classtvm_1_1OpaqueTypeNode.html">OpaqueTypeNode</a>, <a class="code hl_class" hre [...]
-<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>};</div>
-</div>
-<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="foldopen" id="foldopen00105" data-start="{" data-end="};">
-<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueType.html">  105</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueType.html">OpaqueType</a> <a class="code hl_class" href="classtvm_1_1With.html">final</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> {</div>
-<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueType.html#a6c374ff2d7cb64952ec2e7067e438d8f">  107</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1OpaqueType.html#a6c374ff2d7cb64952ec2e7067e438d8f">OpaqueType</a>();</div>
-<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span> </div>
-<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueType.html#a3c529cf6fa069430092013c2bd1e7cc9">  109</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueType.html#a3c529cf6fa069430092013c2bd1e7cc9">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1OpaqueType.html">OpaqueType</a>, <a class="code hl_class" href="classtvm_1_1Type.html">Type</a>, <a class="code hl_class" href= [...]
-<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>};</div>
-</div>
-<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span> </div>
-<div class="foldopen" id="foldopen00119" data-start="{" data-end="};">
-<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimTypeNode.html">  119</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a> <a class="code hl_class" href="classtvm_1_1With.html">final</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a> {</div>
-<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">  124</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> <a class="code hl_variable" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">dtype</a>;</div>
-<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span> </div>
-<div class="foldopen" id="foldopen00126" data-start="{" data-end="}">
-<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimTypeNode.html#a8fc416c89e0f5bc71e20e867390e8d5e">  126</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1PrimTypeNode.html#a8fc416c89e0f5bc71e20e867390e8d5e">RegisterReflection</a>() {</div>
-<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>    <span class="keyword">namespace </span><a class="code hl_class" href="classtvm_1_1With.html">refl</a> = tvm::ffi::reflection;</div>
-<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>    refl::ObjectDef&lt;PrimTypeNode&gt;().def_ro(<span class="stringliteral">&quot;dtype&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">PrimTypeNode::dtype</a>);</div>
-<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>  }</div>
-</div>
-<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimTypeNode.html#a5d5f59db0bd058ab5711fa3fc0cdf533">  130</a></span>  <a class="code hl_function" href="classtvm_1_1PrimTypeNode.html#a5d5f59db0bd058ab5711fa3fc0cdf533">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;ir.PrimType&quot;</span>, <a class="code hl_class" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a>, <a class="code hl_class" href="classtv [...]
-<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>};</div>
-</div>
-<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span> </div>
-<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span><span class="comment">/*</span></div>
-<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span><span class="comment"> * \brief Managed reference to PrimTypeNode.</span></div>
-<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span><span class="comment"> * \sa PrimTypeNode</span></div>
-<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span><span class="comment"> */</span></div>
-<div class="foldopen" id="foldopen00137" data-start="{" data-end="};">
-<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html">  137</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_class" href="classtvm_1_1With.html">final</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> {</div>
-<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ae89872084a876dc729f39c888167a640">  143</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#ae89872084a876dc729f39c888167a640">PrimType</a>(<a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype);</div>
-<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span> </div>
-<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ac72302fb1ed0e2110333d57bbb2930cc">  151</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#ac72302fb1ed0e2110333d57bbb2930cc">PrimType</a>(<a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCode</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1 [...]
-<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span> </div>
-<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a496ea0b2e00473c7e1bc9960fc76d955">  154</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a496ea0b2e00473c7e1bc9960fc76d955">Int</a>(<span class="keywordtype">int</span> <a cla [...]
-<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ae57549a48d3eba299f8f5d873361030a">  156</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#ae57549a48d3eba299f8f5d873361030a">UInt</a>(<span class="keywordtype">int</span> <a cl [...]
-<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a1bb3dfd11f6b94b50107a02b8a34fbea">  158</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a1bb3dfd11f6b94b50107a02b8a34fbea">Float</a>(<span class="keywordtype">int</span> <a c [...]
-<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a8ec664b32f6861b1b5085c0ef7cecf38">  160</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a8ec664b32f6861b1b5085c0ef7cecf38">BFloat</a>(<span class="keywordtype">int</span> <a  [...]
-<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a5b9fd389b621d3cad6d5a4eb6d525f56">  162</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a5b9fd389b621d3cad6d5a4eb6d525f56">Bool</a>(<span class="keywordtype">int</span> <a cl [...]
-<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">  164</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">Void</a>();</div>
-<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">  171</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">ScalableVector</a>(<a class="code hl_class" href="c [...]
-<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span> </div>
-<div class="foldopen" id="foldopen00174" data-start="{" data-end="}">
-<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">  174</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCode</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCode</a><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(get()-&gt;dtype.code));</div>
-<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>  }</div>
-</div>
-<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span> </div>
-<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a6ede8ddc39f1f66131626975b287e825">  179</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1With.html">int32_t</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a6ede8ddc39f1f66131626975b287e825">bits</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</spa [...]
-<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span> </div>
-<div class="foldopen" id="foldopen00185" data-start="{" data-end="}">
-<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ad07bdd138a531d6918d61fdcd7c3e04d">  185</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1With.html">int32_t</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#ad07bdd138a531d6918d61fdcd7c3e04d">lanes</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes);</div>
-<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_PREDICT_FALSE</a>(<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &lt; 0)) {</div>
-<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>      <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_THROW</a>(<a class="code hl_class" href="classtvm_1_1With.html">InternalError</a>)</div>
-<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>          &lt;&lt; <span class="stringliteral">&quot;Can&#39;t fetch the lanes of a scalable vector at a compile time.&quot;</span>;</div>
-<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>    }</div>
-<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>;</div>
-<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>  }</div>
-</div>
-<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span> </div>
-<div class="foldopen" id="foldopen00198" data-start="{" data-end="}">
-<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#aa70b5d45beeca18c0ef0baa88e94a737">  198</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#aa70b5d45beeca18c0ef0baa88e94a737">MatchesElementType</a>(<a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCode</a> <a class="code hl [...]
-<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
-<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>    <span class="keywordflow">return</span> dtype.code == <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint8_t</a><span class="keyword">&gt;</span>(<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>) &amp;&amp; dtype.bits == <a class="code hl_function" href="classtvm_1_1PrimType.html#a6ede8ddc39f1f661 [...]
-<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>  }</div>
-</div>
-<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span> </div>
-<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... <a class="code hl_class" href="classtvm_1_1With.html">Codes</a>&gt;</div>
-<div class="foldopen" id="foldopen00208" data-start="{" data-end="}">
-<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a89248a39565e01bd9ac20f3822f4bc95">  208</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a89248a39565e01bd9ac20f3822f4bc95">MatchesCode</a>(<a class="code hl_class" href="classtvm_1_1With.html">Codes</a>... <a class="code hl_class" href= [...]
-<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>    <a class="code hl_class" href="classtvm_1_1With.html">uint8_t</a> <a class="code hl_class" href="classtvm_1_1With.html">dtype_code</a> = get()-&gt;dtype.code;</div>
-<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>    <span class="keywordflow">return</span> ((<a class="code hl_class" href="classtvm_1_1With.html">dtype_code</a> == <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint8_t</a><span class="keyword">&gt;</span>(<a class="code hl_class" href="classtvm_1_1With.html">codes</a>)) || ...);</div>
-<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>  }</div>
-</div>
-<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span> </div>
-<div class="foldopen" id="foldopen00214" data-start="{" data-end="}">
-<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a863246183a239b6fcd2fd6961ba5464b">  214</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a863246183a239b6fcd2fd6961ba5464b">IsScalar</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes);</div>
-<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> == 1;</div>
-<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span>  }</div>
-</div>
-<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span> </div>
-<div class="foldopen" id="foldopen00220" data-start="{" data-end="}">
-<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a33bc36efcf1c2977a1bf0ac335cb6344">  220</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a33bc36efcf1c2977a1bf0ac335cb6344">IsVoid</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
-<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span>    <span class="keywordflow">return</span> dtype.code == <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint8_t</a><span class="keyword">&gt;</span>(DLDataTypeCode::kDLOpaqueHandle) &amp;&amp; dtype.bits == 0 &amp;&amp;</div>
-<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span>           <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(dtype.lanes) == 0;</div>
-<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span>  }</div>
-</div>
-<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span> </div>
-<div class="foldopen" id="foldopen00227" data-start="{" data-end="}">
-<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a4d89bc6607e5e9e861a4071646befd7f">  227</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a4d89bc6607e5e9e861a4071646befd7f">IsScalableVector</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span>    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes) &lt; -1;</div>
-<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>  }</div>
-</div>
-<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span> </div>
-<div class="foldopen" id="foldopen00232" data-start="{" data-end="}">
-<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a7e34429d50552f60a2d278109b3baff2">  232</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a7e34429d50552f60a2d278109b3baff2">IsFixedLengthVector</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span>    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes) &gt; 1;</div>
-<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span>  }</div>
-</div>
-<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span> </div>
-<div class="foldopen" id="foldopen00242" data-start="{" data-end="}">
-<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ae38ccfedf456e6d6cf364249fabe75ce">  242</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">size_t</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#ae38ccfedf456e6d6cf364249fabe75ce">StorageBytes</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
-<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(dtype.lanes);</div>
-<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_PREDICT_FALSE</a>(<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &lt; 0)) {</div>
-<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>      <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_THROW</a>(<a class="code hl_class" href="classtvm_1_1With.html">InternalError</a>)</div>
-<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>          &lt;&lt; <span class="stringliteral">&quot;Cannot compute compile-time storage bytes for non-fixed vector type &quot;</span> &lt;&lt; dtype;</div>
-<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span>    }</div>
-<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span>    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(</div>
-<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span>        (<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint64_t</a><span class="keyword">&gt;</span>(dtype.bits) * <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint64_t</a><span class="keyword">&gt;</span>(dtype.lanes) + 7) / 8);</div>
-<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>  }</div>
-</div>
-<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span> </div>
-<div class="foldopen" id="foldopen00254" data-start="{" data-end="}">
-<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#af33533fc1888a773bcd9f39f5bc57a31">  254</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#af33533fc1888a773bcd9f39f5bc57a31">WithCode</a>(<a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCod [...]
-<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
-<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(dtype.lanes);</div>
-<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &lt; -1) {</div>
-<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span>      <span class="keywordflow">return</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">ScalableVector</a>(<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>, dtype.bits, -<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>);</div>
-<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span>    }</div>
-<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>(<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>, dtype.bits, <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>);</div>
-<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span>  }</div>
-</div>
-<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span> </div>
-<div class="foldopen" id="foldopen00264" data-start="{" data-end="}">
-<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ad2b426ac8de89f4860ec48d3c1614482">  264</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#ad2b426ac8de89f4860ec48d3c1614482">WithBits</a>(<span class="keywordtype">int</span> <a class="code hl_function" hr [...]
-<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
-<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(dtype.lanes);</div>
-<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &lt; -1) {</div>
-<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  268</span>      <span class="keywordflow">return</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">ScalableVector</a>(this-&gt;<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>(), bits, -<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>);</div>
-<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span>    }</div>
-<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  270</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>(this-&gt;<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>(), bits, <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>);</div>
-<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span>  }</div>
-</div>
-<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span> </div>
-<div class="foldopen" id="foldopen00274" data-start="{" data-end="}">
-<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a47021aa229034baedd51cb5bd78a0b6c">  274</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a47021aa229034baedd51cb5bd78a0b6c">WithLanes</a>(<span class="keywordtype">int</span> <a class="code hl_function" h [...]
-<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>(this-&gt;<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>(), this-&gt;<a class="code hl_function" href="classtvm_1_1PrimType.html#a6ede8ddc39f1f66131626975b287e825">bits</a>(), lanes);</div>
-<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span>  }</div>
-</div>
-<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span> </div>
-<div class="foldopen" id="foldopen00279" data-start="{" data-end="}">
-<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#abc0ace579c1e6ff2d38103f56a0bade6">  279</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1With.html">int32_t</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#abc0ace579c1e6ff2d38103f56a0bade6">VScaleFactor</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes);</div>
-<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &gt;= -1) {</div>
-<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span>      <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_THROW</a>(<a class="code hl_class" href="classtvm_1_1With.html">InternalError</a>) &lt;&lt; <span class="stringliteral">&quot;A fixed length vector doesn&#39;t have a vscale factor.&quot;</span>;</div>
-<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span>    }</div>
-<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span>    <span class="keywordflow">return</span> -<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>;</div>
-<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span>  }</div>
-</div>
-<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span> </div>
-<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#aa9a2e914e0a4f42781bb93104a78b771">  287</a></span>  <a class="code hl_function" href="classtvm_1_1PrimType.html#aa9a2e914e0a4f42781bb93104a78b771">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>, <a class="code hl_class" href="classtvm_1_1Type.html">Type</a>, <a class="code hl_class" href="classtv [...]
-<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  288</span>};</div>
-</div>
-<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span> </div>
-<div class="foldopen" id="foldopen00290" data-start="{" data-end="}">
-<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"><a class="line" href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">  290</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">operator==</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&amp; lhs, <span class="keyword">const</span> <a [...]
-<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span>  <span class="keywordflow">return</span> lhs-&gt;dtype == rhs-&gt;dtype;</div>
-<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span>}</div>
-</div>
-<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span> </div>
-<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="namespacetvm.html#a56fac2bf30a61d8dd727f7b1956dd0db">  294</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacetvm.html#a56fac2bf30a61d8dd727f7b1956dd0db">operator!=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&amp; lhs, <span class="keyword">const</span> <a [...]
-<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span> </div>
-<div class="foldopen" id="foldopen00300" data-start="{" data-end="};">
-<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html">  300</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a> : <span class="keyword">public</span> ffi::Object {</div>
-<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">  306</a></span>  <span class="keyword">mutable</span> <a class="code hl_class" href="classtvm_1_1Span.html">Span</a> <a class="code hl_variable" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">span</a>;</div>
-<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  307</span> </div>
-<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">  314</a></span>  <span class="keyword">mutable</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> <a class="code hl_variable" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">ty</a> = <a class="code hl_function" href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">Type::Missing</a>();</div>
-<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  315</span> </div>
-<div class="foldopen" id="foldopen00316" data-start="{" data-end="}">
-<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#ae10a6ed3fb0e55e098b4e1e223799f8c">  316</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1ExprNode.html#ae10a6ed3fb0e55e098b4e1e223799f8c">RegisterReflection</a>() {</div>
-<div class="line"><a id="l00317" name="l00317"></a><span class="lineno">  317</span>    <span class="keyword">namespace </span><a class="code hl_class" href="classtvm_1_1With.html">refl</a> = tvm::ffi::reflection;</div>
-<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  318</span>    <span class="comment">// span does not participate in structural equal and hash.</span></div>
-<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  319</span>    refl::ObjectDef&lt;ExprNode&gt;()</div>
-<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span>        .def_ro(<span class="stringliteral">&quot;span&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">ExprNode::span</a>, refl::DefaultValue(<a class="code hl_class" href="classtvm_1_1Span.html">Span</a>()),</div>
-<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span>                refl::AttachFieldFlag::SEqHashIgnore())</div>
-<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  322</span>        .def_ro(<span class="stringliteral">&quot;ty&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">ExprNode::ty</a>, refl::DefaultValue(<a class="code hl_function" href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">Type::Missing</a>()));</div>
-<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span>  }</div>
-</div>
-<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  324</span> </div>
-<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d796e7b298">  325</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classtvm_1_1With.html">TVMFFISEqHashKind</a> <a class="code hl_variable" href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d796e7b298">_type_s_eq_hash_kind</a> = <a class="code hl_class" href="classtvm_1_1Wit [...]
-<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  326</span> </div>
-<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a998e4b1d8caa76f66e9d947931178f01">  327</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">uint32_t</a> <a class="code hl_variable" href="classtvm_1_1ExprNode.html#a998e4b1d8caa76f66e9d947931178f01">_type_child_slots</a> = 64;</div>
-<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">  328</a></span>  <a class="code hl_function" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.Expr&quot;</span>, <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a>, ffi::Object);</div>
-<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span>};</div>
-</div>
-<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="foldopen" id="foldopen00335" data-start="{" data-end="};">
-<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html">  335</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
-<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  336</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  337</span>  <span class="comment">// Expressions do not implicitly compare by object identity or address.  Callers must name</span></div>
-<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span>  <span class="comment">// whether they intend object identity, structural equality, or primitive symbolic comparison.</span></div>
-<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">  339</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&amp; <a class="code hl_class" href="classtvm_1_1With.html">other</a>) <span class [...]
-<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">  340</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&amp; <a class="code hl_class" href="classtvm_1_1With.html">other</a>) <span class [...]
-<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">  341</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&amp; <a class="code hl_class" href="classtvm_1_1With.html">other</a>) <span cla [...]
-<div class="line"><a id="l00342" name="l00342"></a><span class="lineno">  342</span> </div>
-<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">  343</a></span>  <a class="code hl_function" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a>);</div>
-<div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  344</span>};</div>
-</div>
-<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span> </div>
-<div class="foldopen" id="foldopen00352" data-start="{" data-end="};">
-<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html">  352</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueExprNode.html">OpaqueExprNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a> {</div>
-<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  353</span> <span class="keyword">public</span>:</div>
-<div class="foldopen" id="foldopen00354" data-start="{" data-end="}">
-<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">  354</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">RegisterReflection</a>() {</div>
-<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  355</span>    <span class="keyword">namespace </span><a class="code hl_class" href="classtvm_1_1With.html">refl</a> = tvm::ffi::reflection;</div>
-<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  356</span>    refl::ObjectDef&lt;OpaqueExprNode&gt;();</div>
-<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  357</span>  }</div>
-</div>
-<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span> </div>
-<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">  359</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">uint32_t</a> <a class="code hl_variable" href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">_type_child_slots</a> = 2;</div>
-<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">  360</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.OpaqueExpr&quot;</span>, <a class="code hl_class" href="classtvm_1_1OpaqueExprNode.html">OpaqueExprNode</a>, <a class="code hl_class" href="cla [...]
-<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  361</span>};</div>
-</div>
-<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span> </div>
-<div class="foldopen" id="foldopen00364" data-start="{" data-end="};">
-<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html">  364</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueExpr.html">OpaqueExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> {</div>
-<div class="line"><a id="l00365" name="l00365"></a><span class="lineno">  365</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html#ab40bce2a8f40aa5101cbc5c53d80315e">  366</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueExpr.html#ab40bce2a8f40aa5101cbc5c53d80315e">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1OpaqueExpr.html">OpaqueExpr</a>, <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, <a class="code hl_class" href="cl [...]
-<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  367</span>};</div>
-</div>
-<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span> </div>
-<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1Call.html">Call</a>;</div>
-<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span> </div>
-<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  376</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
-<div class="foldopen" id="foldopen00377" data-start="{" data-end="};">
-<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html">  377</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> {</div>
-<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span> <span class="keyword">public</span>:</div>
-<div class="foldopen" id="foldopen00380" data-start="{" data-end="}">
-<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">  380</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">ExpectedType</a> <a class="code hl_function" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">ty</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* node = get();</div>
-<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  382</span>    <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_DCHECK</a>(node != <span class="keyword">nullptr</span>);</div>
-<div class="line"><a id="l00383" name="l00383"></a><span class="lineno">  383</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* <a class="code hl_class" href="classtvm_1_1With.html">ty_node</a> = node-&gt;ExprNode::ty.template <a class="code hl_class" href="classtvm_1_1With.html">as&lt;typename ExpectedType::ContainerType&gt;</a>();</div>
-<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span>    <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_DCHECK</a>(<a class="code hl_class" href="classtvm_1_1With.html">ty_node</a> != <span class="keyword">nullptr</span>);</div>
-<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span>    <span class="keywordflow">return</span> ffi::GetRef&lt;ExpectedType&gt;(<a class="code hl_class" href="classtvm_1_1With.html">ty_node</a>);</div>
-<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span>  }</div>
-</div>
-<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span> </div>
-<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#aef373abb5a1725e75779715bfc590d3b">  388</a></span>  <a class="code hl_function" href="classtvm_1_1TypedExpr.html#aef373abb5a1725e75779715bfc590d3b">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>, <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, <a class="code hl_class" href="classt [...]
-<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">  389</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span>};</div>
-</div>
-<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  391</span> </div>
-<div class="foldopen" id="foldopen00401" data-start="{" data-end="};">
-<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html">  401</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;PrimType&gt; {</div>
-<div class="line"><a id="l00402" name="l00402"></a><span class="lineno">  402</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00403" name="l00403"></a><span class="lineno">  403</span>  <span class="keyword">using </span><a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&gt;<a class="code hl_function" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">::ty</a>;</div>
-<div class="line"><a id="l00404" name="l00404"></a><span class="lineno">  404</span> </div>
-<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">  410</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">PrimExpr</a>(<a class="code hl_class" href="classtvm_1_1Call.html">Call</a> <a class="code hl_class" href="classtvm_1_1With.html">call</a>);  <span class="com [...]
-<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span> </div>
-<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">  416</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">PrimExpr</a>(<a class="code hl_class" href="classtvm_1_1With.html">int32_t</a> value);  <span class="comment">// NOLINT(*)</span></div>
-<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">  421</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">PrimExpr</a>(<span class="keywordtype">float</span> value);  <span class="comment">// NOLINT(*)</span></div>
-<div class="line"><a id="l00422" name="l00422"></a><span class="lineno">  422</span> </div>
-<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a611b175971d5ca7e5a549c55fae12ac6">  423</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a611b175971d5ca7e5a549c55fae12ac6">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>, <a class="code hl_class" href="classtvm_1_1With.html">TypedExpr&lt;PrimType&gt;</a>, <a class="code hl_cl [...]
-<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">  424</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span> </div>
-<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a8839598722144f363e11e377ebd6f5ad">  430</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a8839598722144f363e11e377ebd6f5ad">ConvertFallbackValue</a>(ffi::String value);  <span [...]
-<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span>};</div>
-</div>
-<div class="line"><a id="l00432" name="l00432"></a><span class="lineno">  432</span> </div>
-<div class="foldopen" id="foldopen00438" data-start="{" data-end="};">
-<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html">  438</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a> : <span class="keyword">public</span> ffi::Object {</div>
-<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">  440</a></span>  <span class="keyword">virtual</span> <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">~PrimExprConvertibleNode</a>() {}</div>
-<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">  441</a></span>  <span class="keyword">virtual</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">ToPrimExpr</a>() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">  442</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.PrimExprConvertible&quot;</span>, <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibl [...]
-<div class="line"><a id="l00443" name="l00443"></a><span class="lineno">  443</span>};</div>
-</div>
-<div class="line"><a id="l00444" name="l00444"></a><span class="lineno">  444</span> </div>
-<div class="foldopen" id="foldopen00449" data-start="{" data-end="};">
-<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertible.html">  449</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
-<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">  451</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a>, ffi::ObjectRef,</div>
-<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span>                                             <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a>);</div>
-<div class="line"><a id="l00453" name="l00453"></a><span class="lineno">  453</span>};</div>
-</div>
-<div class="line"><a id="l00454" name="l00454"></a><span class="lineno">  454</span> </div>
-<div class="line"><a id="l00455" name="l00455"></a><span class="lineno">  455</span><span class="keyword">namespace </span>ffi {</div>
-<div class="line"><a id="l00456" name="l00456"></a><span class="lineno">  456</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a919f86f3cbe6b3aeae34c3a3bafe98a4">  457</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">use_default_type_traits_v&lt;PrimType&gt;</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00458" name="l00458"></a><span class="lineno">  458</span> </div>
-<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="foldopen" id="foldopen00460" data-start="{" data-end="};">
-<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html">  460</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;PrimType, DLDataType&gt; {</div>
-<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">  461</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111 [...]
-<div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span>};</div>
-</div>
-<div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span> </div>
-<div class="line"><a id="l00464" name="l00464"></a><span class="lineno">  464</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
-<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a989ab76251427253427563ab92948640">  465</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">use_default_type_traits_v&lt;TypedExpr&lt;ExpectedType&gt;</a>&gt; = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00466" name="l00466"></a><span class="lineno">  466</span> </div>
-<div class="line"><a id="l00467" name="l00467"></a><span class="lineno">  467</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
-<div class="foldopen" id="foldopen00468" data-start="{" data-end="};">
-<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html">  468</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;<a class="code hl_class" href="classtvm_1_1With.html">ExpectedType</a>&gt;&gt;</div>
-<div class="line"><a id="l00469" name="l00469"></a><span class="lineno">  469</span>    : <span class="keyword">public</span> ObjectRefTypeTraitsBase&lt;TypedExpr&lt;ExpectedType&gt;&gt; {</div>
-<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a261eb8941abd472c85c45bf32a4f4131">  470</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a261eb8941abd472c85c45bf32a4f4131">Base</a> = <a class="code hl_class" href="classtvm_1_1With.html">ObjectRefTypeTraitsBase [...]
-<div class="line"><a id="l00471" name="l00471"></a><span class="lineno">  471</span>  <span class="keyword">using </span>Base::CopyFromAnyViewAfterCheck;</div>
-<div class="line"><a id="l00472" name="l00472"></a><span class="lineno">  472</span>  <span class="keyword">using </span>Base::CopyToAnyView;</div>
-<div class="line"><a id="l00473" name="l00473"></a><span class="lineno">  473</span>  <span class="keyword">using </span>Base::GetMismatchTypeInfo;</div>
-<div class="line"><a id="l00474" name="l00474"></a><span class="lineno">  474</span>  <span class="keyword">using </span>Base::MoveFromAnyAfterCheck;</div>
-<div class="line"><a id="l00475" name="l00475"></a><span class="lineno">  475</span>  <span class="keyword">using </span>Base::MoveToAny;</div>
-<div class="line"><a id="l00476" name="l00476"></a><span class="lineno">  476</span>  <span class="keyword">using </span>Base::TypeSchema;</div>
-<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span>  <span class="keyword">using </span>Base::TypeStr;</div>
-<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span> </div>
-<div class="foldopen" id="foldopen00479" data-start="{" data-end="}">
-<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">  479</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfe [...]
-<div class="line"><a id="l00480" name="l00480"></a><span class="lineno">  480</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) {</div>
-<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span>      <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr&lt;ExpectedType&gt;::_type_is_nullable</a>;</div>
-<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span>    }</div>
-<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>    <span class="keywordflow">if</span> (src-&gt;type_index &lt; TypeIndex::kTVMFFIStaticObjectBegin ||</div>
-<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span>        !details::IsObjectInstance&lt;ExprNode&gt;(src-&gt;type_index)) {</div>
-<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span>      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span>    }</div>
-<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* expr = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a>*<span class="keyword">&gt;</span>(</div>
-<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>        details::ObjectUnsafe::ObjectPtrFromUnowned&lt;Object&gt;(src-&gt;v_obj).get());</div>
-<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span>    <span class="keywordflow">return</span> details::AnyUnsafe::CheckAnyStrict&lt;ExpectedType&gt;(expr-&gt;ty);</div>
-<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span>  }</div>
-</div>
-<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span> </div>
-<div class="foldopen" id="foldopen00492" data-start="{" data-end="}">
-<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a4408a1640666c94fc5619d4910d2570a">  492</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> std::optional&lt;TypedExpr&lt;ExpectedType&gt;&gt; <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.ht [...]
-<div class="line"><a id="l00493" name="l00493"></a><span class="lineno">  493</span>      <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">TVMFFIAny</a>* src) {</div>
-<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span>    <span class="keywordflow">if</span> (CheckAnyStrict(src)) {</div>
-<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span>      <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) {</div>
-<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span>        <span class="keywordflow">return</span> details::ObjectUnsafe::ObjectRefFromObjectPtr&lt;TypedExpr&lt;ExpectedType&gt;&gt;(<span class="keyword">nullptr</span>);</div>
-<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span>      }</div>
-<div class="line"><a id="l00498" name="l00498"></a><span class="lineno">  498</span>      <span class="keywordflow">return</span> details::ObjectUnsafe::ObjectRefFromObjectPtr&lt;TypedExpr&lt;ExpectedType&gt;&gt;(</div>
-<div class="line"><a id="l00499" name="l00499"></a><span class="lineno">  499</span>          details::ObjectUnsafe::ObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj));</div>
-<div class="line"><a id="l00500" name="l00500"></a><span class="lineno">  500</span>    }</div>
-<div class="line"><a id="l00501" name="l00501"></a><span class="lineno">  501</span>    <span class="keywordflow">return</span> std::nullopt;</div>
-<div class="line"><a id="l00502" name="l00502"></a><span class="lineno">  502</span>  }</div>
-</div>
-<div class="line"><a id="l00503" name="l00503"></a><span class="lineno">  503</span>};</div>
-</div>
-<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span> </div>
-<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a3953ced274a99f70b1ab2cd282f266e2">  506</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">use_default_type_traits_v&lt;PrimExpr&gt;</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span> </div>
-<div class="line"><a id="l00508" name="l00508"></a><span class="lineno">  508</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> <a class="code hl_class" href="classtvm_1_1With.html">ObjectRefType</a>, <span class="keyword">typename</span> <a class="code hl_class" href="classtvm_1_1With.html">ExpectedType</a>, <span class="keyword">typename</span>... <a class="code hl_class" href="classtvm_1_1With.html">FallbackTypes</a>&gt;</div>
-<div class="foldopen" id="foldopen00509" data-start="{" data-end="};">
-<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">  509</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">TypedExprWithFallbackTraitsBase</a></div>
-<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span>    : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;ObjectRefType, FallbackTypes...&gt; {</div>
-<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#af3446c89272971590ddfc8be9a1ca6ac">  511</a></span>  <span class="keyword">using </span><a class="code hl_class" href="classtvm_1_1With.html">Base</a> = ObjectRefWithFallbackTraitsBase&lt;<a class="code hl_class" href="classtvm_1_1With.html">ObjectRefType</a>, <a class="code hl_class" href="classtvm_1_1With.html">FallbackTypes</a>...&gt;;</div>
-<div class="line"><a id="l00512" name="l00512"></a><span class="lineno">  512</span> </div>
-<div class="foldopen" id="foldopen00513" data-start="{" data-end="}">
-<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a61bb950127d8832881b8e6d8e115e2b2">  513</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a61bb950127d8832881b8e6d8e115e2b2">CheckAnyStrict< [...]
-<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1With.html">TypeTraits&lt;TypedExpr&lt;ExpectedType&gt;</a>&gt;<a class="code hl_function" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a61bb950127d8832881b8e6d8e115e2b2">::CheckAnyStrict</a>(src);</div>
-<div class="line"><a id="l00515" name="l00515"></a><span class="lineno">  515</span>  }</div>
-</div>
-<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span> </div>
-<div class="foldopen" id="foldopen00517" data-start="{" data-end="}">
-<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a20e704664670a73f6868c5e754ad99f9">  517</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> std::optional&lt;ObjectRefType&gt; <a class="code hl_function" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a20e704664670a73f6868c5e754ad99f9">TryCastFromAnyView [...]
-<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span>    <span class="keywordflow">if</span> (TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1With.html">TypedExpr&lt;ExpectedType&gt;</a>&gt;<a class="code hl_function" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a20e704664670a73f6868c5e754ad99f9">::TryCastFromAnyView</a>(src)) {</div>
-<div class="line"><a id="l00519" name="l00519"></a><span class="lineno">  519</span>      <span class="keywordflow">return</span> details::ObjectUnsafe::ObjectRefFromObjectPtr&lt;ObjectRefType&gt;(</div>
-<div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span>          details::ObjectUnsafe::ObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj));</div>
-<div class="line"><a id="l00521" name="l00521"></a><span class="lineno">  521</span>    }</div>
-<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="classtvm_1_1With.html#a19fcda1557550b2a5f2e942f08bd38f2">Base::template</a> <a class="code hl_class" href="classtvm_1_1With.html">TryFallbackTypes</a>&lt;<a class="code hl_class" href="classtvm_1_1With.html">FallbackTypes</a>...&gt;(src);</div>
-<div class="line"><a id="l00523" name="l00523"></a><span class="lineno">  523</span>  }</div>
-</div>
-<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span>};</div>
-</div>
-<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span> </div>
-<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span><span class="comment">// define automatic conversion from bool, int64_t, double, ffi::String to PrimExpr</span></div>
-<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span><span class="comment">// These functions are declared early to avoid circular dependency</span></div>
-<div class="line"><a id="l00528" name="l00528"></a><span class="lineno">  528</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="foldopen" id="foldopen00529" data-start="{" data-end="};">
-<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html">  529</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&gt;</div>
-<div class="line"><a id="l00530" name="l00530"></a><span class="lineno">  530</span>    : <span class="keyword">public</span> <a class="code hl_struct" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">TypedExprWithFallbackTraitsBase</a>&lt;PrimExpr, PrimType, StrictBool, int64_t, double,</div>
-<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span>                                             ffi::String, PrimExprConvertible&gt; {</div>
-<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ae2548942823dde9a5f5032aedeade4b9">  532</a></span>  <span class="keyword">using </span><a class="code hl_class" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">Base</a> = <a class="code hl_struct" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">TypedExprWithFallbackTraitsBase</a>&lt;<a class="code hl_class" hr [...]
-<div class="line"><a id="l00533" name="l00533"></a><span class="lineno">  533</span>                                               ffi::String, <a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a>&gt;;</div>
-<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span>  <span class="keyword">using </span>Base::CheckAnyStrict;</div>
-<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span>  <span class="keyword">using </span>Base::CopyFromAnyViewAfterCheck;</div>
-<div class="line"><a id="l00536" name="l00536"></a><span class="lineno">  536</span>  <span class="keyword">using </span>Base::CopyToAnyView;</div>
-<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span>  <span class="keyword">using </span>Base::GetMismatchTypeInfo;</div>
-<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span>  <span class="keyword">using </span>Base::MoveFromAnyAfterCheck;</div>
-<div class="line"><a id="l00539" name="l00539"></a><span class="lineno">  539</span>  <span class="keyword">using </span>Base::MoveToAny;</div>
-<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span>  <span class="keyword">using </span>Base::TryCastFromAnyView;</div>
-<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span>  <span class="keyword">using </span>Base::TypeSchema;</div>
-<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span>  <span class="keyword">using </span>Base::TypeStr;</div>
-<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span> </div>
-<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc7533525d5">  544</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc753352 [...]
-<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b7733a2">  545</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b773 [...]
-<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aaaa3">  546</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aa [...]
-<div class="foldopen" id="foldopen00547" data-start="{" data-end="}">
-<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1921a329c085ce2856c3e83e5954e052">  547</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1921a329c085ce2856c3e8 [...]
-<div class="line"><a id="l00548" name="l00548"></a><span class="lineno">  548</span>    <span class="keywordflow">return</span> PrimExpr::ConvertFallbackValue(value);</div>
-<div class="line"><a id="l00549" name="l00549"></a><span class="lineno">  549</span>  }</div>
-</div>
-<div class="foldopen" id="foldopen00550" data-start="{" data-end="}">
-<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">  550</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183 [...]
-<div class="line"><a id="l00551" name="l00551"></a><span class="lineno">  551</span>    <span class="keywordflow">return</span> value-&gt;ToPrimExpr();</div>
-<div class="line"><a id="l00552" name="l00552"></a><span class="lineno">  552</span>  }</div>
-</div>
-<div class="line"><a id="l00553" name="l00553"></a><span class="lineno">  553</span>};</div>
-</div>
-<div class="line"><a id="l00554" name="l00554"></a><span class="lineno">  554</span> </div>
-<div class="line"><a id="l00555" name="l00555"></a><span class="lineno">  555</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a2a487df61f267ffa50e8ed5e6e00323a">  556</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">use_default_type_traits_v&lt;Expr&gt;</a> = <span class="keyword">false</span>;</div>
-<div class="line"><a id="l00557" name="l00557"></a><span class="lineno">  557</span> </div>
-<div class="line"><a id="l00558" name="l00558"></a><span class="lineno">  558</span><span class="comment">// Allow generic Expr arguments to use the primitive-literal conversions</span></div>
-<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span><span class="comment">// already defined by PrimExpr.</span></div>
-<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="foldopen" id="foldopen00561" data-start="{" data-end="};">
-<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html">  561</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;Expr, PrimExpr&gt; {</div>
-<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">  562</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">Conv [...]
-<div class="line"><a id="l00563" name="l00563"></a><span class="lineno">  563</span>};</div>
-</div>
-<div class="line"><a id="l00564" name="l00564"></a><span class="lineno">  564</span>}  <span class="comment">// namespace ffi</span></div>
-<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span> </div>
-<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>}  <span class="comment">// namespace tvm</span></div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">   68</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">   70</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">uint32_t</a> <a class="code hl_variable" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a> = 14;</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">   71</a></span>  <a class="code hl_function" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.Type&quot;</span>, <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a>, ffi::Object);</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>};</div>
+</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="foldopen" id="foldopen00078" data-start="{" data-end="};">
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="classtvm_1_1Type.html">   78</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1Type.html">Type</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">   81</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> <a class="code hl_function" href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">Missing</a>();</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="classtvm_1_1Type.html#a72af00ddec758c4ae997262d73ddf66c">   84</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Type.html#a72af00ddec758c4ae997262d73ddf66c">IsMissing</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="classtvm_1_1Type.html#ada76bb43bdaa718bcff5c1f6337d4984">   86</a></span>  <a class="code hl_function" href="classtvm_1_1Type.html#ada76bb43bdaa718bcff5c1f6337d4984">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1Type.html">Type</a>, ffi::ObjectRef, <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a>);</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>};</div>
+</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span> </div>
+<div class="foldopen" id="foldopen00095" data-start="{" data-end="};">
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueTypeNode.html">   95</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueTypeNode.html">OpaqueTypeNode</a> <a class="code hl_class" href="classtvm_1_1With.html">final</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a> {</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span> <span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00097" data-start="{" data-end="}">
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">   97</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">RegisterReflection</a>() {</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>    <span class="keyword">namespace </span><a class="code hl_class" href="classtvm_1_1With.html">refl</a> = tvm::ffi::reflection;</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>    refl::ObjectDef&lt;OpaqueTypeNode&gt;();</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>  }</div>
+</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span> </div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueTypeNode.html#a788cf9986a6a373d56a05b2561d63ef5">  102</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueTypeNode.html#a788cf9986a6a373d56a05b2561d63ef5">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;ir.OpaqueType&quot;</span>, <a class="code hl_class" href="classtvm_1_1OpaqueTypeNode.html">OpaqueTypeNode</a>, <a class="code hl_class" hre [...]
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>};</div>
+</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="foldopen" id="foldopen00106" data-start="{" data-end="};">
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueType.html">  106</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueType.html">OpaqueType</a> <a class="code hl_class" href="classtvm_1_1With.html">final</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> {</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueType.html#a6c374ff2d7cb64952ec2e7067e438d8f">  108</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1OpaqueType.html#a6c374ff2d7cb64952ec2e7067e438d8f">OpaqueType</a>();</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span> </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueType.html#a3c529cf6fa069430092013c2bd1e7cc9">  110</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueType.html#a3c529cf6fa069430092013c2bd1e7cc9">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1OpaqueType.html">OpaqueType</a>, <a class="code hl_class" href="classtvm_1_1Type.html">Type</a>, <a class="code hl_class" href= [...]
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>};</div>
+</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="foldopen" id="foldopen00120" data-start="{" data-end="};">
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimTypeNode.html">  120</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a> <a class="code hl_class" href="classtvm_1_1With.html">final</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a> {</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">  125</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> <a class="code hl_variable" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">dtype</a>;</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span> </div>
+<div class="foldopen" id="foldopen00127" data-start="{" data-end="}">
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimTypeNode.html#a8fc416c89e0f5bc71e20e867390e8d5e">  127</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1PrimTypeNode.html#a8fc416c89e0f5bc71e20e867390e8d5e">RegisterReflection</a>() {</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>    <span class="keyword">namespace </span><a class="code hl_class" href="classtvm_1_1With.html">refl</a> = tvm::ffi::reflection;</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>    refl::ObjectDef&lt;PrimTypeNode&gt;().def_ro(<span class="stringliteral">&quot;dtype&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">PrimTypeNode::dtype</a>);</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>  }</div>
+</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimTypeNode.html#a5d5f59db0bd058ab5711fa3fc0cdf533">  131</a></span>  <a class="code hl_function" href="classtvm_1_1PrimTypeNode.html#a5d5f59db0bd058ab5711fa3fc0cdf533">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;ir.PrimType&quot;</span>, <a class="code hl_class" href="classtvm_1_1PrimTypeNode.html">PrimTypeNode</a>, <a class="code hl_class" href="classtv [...]
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>};</div>
+</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span><span class="comment">/*</span></div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span><span class="comment"> * \brief Managed reference to PrimTypeNode.</span></div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span><span class="comment"> * \sa PrimTypeNode</span></div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span><span class="comment"> */</span></div>
+<div class="foldopen" id="foldopen00138" data-start="{" data-end="};">
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html">  138</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_class" href="classtvm_1_1With.html">final</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> {</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ae89872084a876dc729f39c888167a640">  144</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#ae89872084a876dc729f39c888167a640">PrimType</a>(<a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype);</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ac72302fb1ed0e2110333d57bbb2930cc">  152</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#ac72302fb1ed0e2110333d57bbb2930cc">PrimType</a>(<a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCode</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1 [...]
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a496ea0b2e00473c7e1bc9960fc76d955">  155</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a496ea0b2e00473c7e1bc9960fc76d955">Int</a>(<span class="keywordtype">int</span> <a cla [...]
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ae57549a48d3eba299f8f5d873361030a">  157</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#ae57549a48d3eba299f8f5d873361030a">UInt</a>(<span class="keywordtype">int</span> <a cl [...]
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a1bb3dfd11f6b94b50107a02b8a34fbea">  159</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a1bb3dfd11f6b94b50107a02b8a34fbea">Float</a>(<span class="keywordtype">int</span> <a c [...]
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a8ec664b32f6861b1b5085c0ef7cecf38">  161</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a8ec664b32f6861b1b5085c0ef7cecf38">BFloat</a>(<span class="keywordtype">int</span> <a  [...]
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a5b9fd389b621d3cad6d5a4eb6d525f56">  163</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a5b9fd389b621d3cad6d5a4eb6d525f56">Bool</a>(<span class="keywordtype">int</span> <a cl [...]
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">  165</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">Void</a>();</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">  172</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">ScalableVector</a>(<a class="code hl_class" href="c [...]
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="foldopen" id="foldopen00175" data-start="{" data-end="}">
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">  175</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCode</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCode</a><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(get()-&gt;dtype.code));</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>  }</div>
+</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span> </div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a6ede8ddc39f1f66131626975b287e825">  180</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1With.html">int32_t</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a6ede8ddc39f1f66131626975b287e825">bits</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</spa [...]
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="foldopen" id="foldopen00186" data-start="{" data-end="}">
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ad07bdd138a531d6918d61fdcd7c3e04d">  186</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1With.html">int32_t</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#ad07bdd138a531d6918d61fdcd7c3e04d">lanes</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes);</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_PREDICT_FALSE</a>(<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &lt; 0)) {</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>      <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_THROW</a>(<a class="code hl_class" href="classtvm_1_1With.html">InternalError</a>)</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>          &lt;&lt; <span class="stringliteral">&quot;Can&#39;t fetch the lanes of a scalable vector at a compile time.&quot;</span>;</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>    }</div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>;</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>  }</div>
+</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="foldopen" id="foldopen00199" data-start="{" data-end="}">
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#aa70b5d45beeca18c0ef0baa88e94a737">  199</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#aa70b5d45beeca18c0ef0baa88e94a737">MatchesElementType</a>(<a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCode</a> <a class="code hl [...]
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>    <span class="keywordflow">return</span> dtype.code == <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint8_t</a><span class="keyword">&gt;</span>(<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>) &amp;&amp; dtype.bits == <a class="code hl_function" href="classtvm_1_1PrimType.html#a6ede8ddc39f1f661 [...]
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>  }</div>
+</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... <a class="code hl_class" href="classtvm_1_1With.html">Codes</a>&gt;</div>
+<div class="foldopen" id="foldopen00209" data-start="{" data-end="}">
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a89248a39565e01bd9ac20f3822f4bc95">  209</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a89248a39565e01bd9ac20f3822f4bc95">MatchesCode</a>(<a class="code hl_class" href="classtvm_1_1With.html">Codes</a>... <a class="code hl_class" href= [...]
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>    <a class="code hl_class" href="classtvm_1_1With.html">uint8_t</a> <a class="code hl_class" href="classtvm_1_1With.html">dtype_code</a> = get()-&gt;dtype.code;</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>    <span class="keywordflow">return</span> ((<a class="code hl_class" href="classtvm_1_1With.html">dtype_code</a> == <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint8_t</a><span class="keyword">&gt;</span>(<a class="code hl_class" href="classtvm_1_1With.html">codes</a>)) || ...);</div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span>  }</div>
+</div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="foldopen" id="foldopen00215" data-start="{" data-end="}">
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a863246183a239b6fcd2fd6961ba5464b">  215</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a863246183a239b6fcd2fd6961ba5464b">IsScalar</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes);</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> == 1;</div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span>  }</div>
+</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="foldopen" id="foldopen00221" data-start="{" data-end="}">
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a33bc36efcf1c2977a1bf0ac335cb6344">  221</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a33bc36efcf1c2977a1bf0ac335cb6344">IsVoid</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span>    <span class="keywordflow">return</span> dtype.code == <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint8_t</a><span class="keyword">&gt;</span>(DLDataTypeCode::kDLOpaqueHandle) &amp;&amp; dtype.bits == 0 &amp;&amp;</div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span>           <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(dtype.lanes) == 0;</div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span>  }</div>
+</div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="foldopen" id="foldopen00228" data-start="{" data-end="}">
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a4d89bc6607e5e9e861a4071646befd7f">  228</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a4d89bc6607e5e9e861a4071646befd7f">IsScalableVector</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes) &lt; -1;</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>  }</div>
+</div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="foldopen" id="foldopen00233" data-start="{" data-end="}">
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a7e34429d50552f60a2d278109b3baff2">  233</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a7e34429d50552f60a2d278109b3baff2">IsFixedLengthVector</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span>    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes) &gt; 1;</div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span>  }</div>
+</div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span> </div>
+<div class="foldopen" id="foldopen00243" data-start="{" data-end="}">
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ae38ccfedf456e6d6cf364249fabe75ce">  243</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keywordtype">size_t</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#ae38ccfedf456e6d6cf364249fabe75ce">StorageBytes</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(dtype.lanes);</div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_PREDICT_FALSE</a>(<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &lt; 0)) {</div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>      <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_THROW</a>(<a class="code hl_class" href="classtvm_1_1With.html">InternalError</a>)</div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span>          &lt;&lt; <span class="stringliteral">&quot;Cannot compute compile-time storage bytes for non-fixed vector type &quot;</span> &lt;&lt; dtype;</div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span>    }</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span>    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(</div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>        (<span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint64_t</a><span class="keyword">&gt;</span>(dtype.bits) * <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">uint64_t</a><span class="keyword">&gt;</span>(dtype.lanes) + 7) / 8);</div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span>  }</div>
+</div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="foldopen" id="foldopen00255" data-start="{" data-end="}">
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#af33533fc1888a773bcd9f39f5bc57a31">  255</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#af33533fc1888a773bcd9f39f5bc57a31">WithCode</a>(<a class="code hl_class" href="classtvm_1_1With.html">DLDataTypeCod [...]
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(dtype.lanes);</div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &lt; -1) {</div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span>      <span class="keywordflow">return</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">ScalableVector</a>(<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>, dtype.bits, -<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>);</div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>    }</div>
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>(<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>, dtype.bits, <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>);</div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span>  }</div>
+</div>
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="foldopen" id="foldopen00265" data-start="{" data-end="}">
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#ad2b426ac8de89f4860ec48d3c1614482">  265</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#ad2b426ac8de89f4860ec48d3c1614482">WithBits</a>(<span class="keywordtype">int</span> <a class="code hl_function" hr [...]
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span>    <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> dtype = get()-&gt;dtype;</div>
+<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(dtype.lanes);</div>
+<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  268</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &lt; -1) {</div>
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span>      <span class="keywordflow">return</span> <a class="code hl_function" href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">ScalableVector</a>(this-&gt;<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>(), bits, -<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>);</div>
+<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  270</span>    }</div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>(this-&gt;<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>(), bits, <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>);</div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span>  }</div>
+</div>
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="foldopen" id="foldopen00275" data-start="{" data-end="}">
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#a47021aa229034baedd51cb5bd78a0b6c">  275</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#a47021aa229034baedd51cb5bd78a0b6c">WithLanes</a>(<span class="keywordtype">int</span> <a class="code hl_function" h [...]
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>(this-&gt;<a class="code hl_function" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">code</a>(), this-&gt;<a class="code hl_function" href="classtvm_1_1PrimType.html#a6ede8ddc39f1f66131626975b287e825">bits</a>(), lanes);</div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span>  }</div>
+</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span> </div>
+<div class="foldopen" id="foldopen00280" data-start="{" data-end="}">
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#abc0ace579c1e6ff2d38103f56a0bade6">  280</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <a class="code hl_class" href="classtvm_1_1With.html">int32_t</a> <a class="code hl_function" href="classtvm_1_1PrimType.html#abc0ace579c1e6ff2d38103f56a0bade6">VScaleFactor</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span>    <a class="code hl_class" href="classtvm_1_1With.html">int16_t</a> <a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> = <span class="keyword">static_cast&lt;</span><a class="code hl_class" href="classtvm_1_1With.html">int16_t</a><span class="keyword">&gt;</span>(get()-&gt;dtype.lanes);</div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a> &gt;= -1) {</div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span>      <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_THROW</a>(<a class="code hl_class" href="classtvm_1_1With.html">InternalError</a>) &lt;&lt; <span class="stringliteral">&quot;A fixed length vector doesn&#39;t have a vscale factor.&quot;</span>;</div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span>    }</div>
+<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span>    <span class="keywordflow">return</span> -<a class="code hl_class" href="classtvm_1_1With.html">encoded_lanes</a>;</div>
+<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span>  }</div>
+</div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimType.html#aa9a2e914e0a4f42781bb93104a78b771">  288</a></span>  <a class="code hl_function" href="classtvm_1_1PrimType.html#aa9a2e914e0a4f42781bb93104a78b771">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>, <a class="code hl_class" href="classtvm_1_1Type.html">Type</a>, <a class="code hl_class" href="classtv [...]
+<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span>};</div>
+</div>
+<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  290</span> </div>
+<div class="foldopen" id="foldopen00291" data-start="{" data-end="}">
+<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"><a class="line" href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">  291</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">operator==</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&amp; lhs, <span class="keyword">const</span> <a [...]
+<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span>  <span class="keywordflow">return</span> lhs-&gt;dtype == rhs-&gt;dtype;</div>
+<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span>}</div>
+</div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  294</span> </div>
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"><a class="line" href="namespacetvm.html#a56fac2bf30a61d8dd727f7b1956dd0db">  295</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacetvm.html#a56fac2bf30a61d8dd727f7b1956dd0db">operator!=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&amp; lhs, <span class="keyword">const</span> <a [...]
+<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  296</span> </div>
+<div class="foldopen" id="foldopen00301" data-start="{" data-end="};">
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html">  301</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a> : <span class="keyword">public</span> ffi::Object {</div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">  307</a></span>  <span class="keyword">mutable</span> <a class="code hl_class" href="classtvm_1_1Span.html">Span</a> <a class="code hl_variable" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">span</a>;</div>
+<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  308</span> </div>
+<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">  315</a></span>  <span class="keyword">mutable</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> <a class="code hl_variable" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">ty</a> = <a class="code hl_function" href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">Type::Missing</a>();</div>
+<div class="line"><a id="l00316" name="l00316"></a><span class="lineno">  316</span> </div>
+<div class="foldopen" id="foldopen00317" data-start="{" data-end="}">
+<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#ae10a6ed3fb0e55e098b4e1e223799f8c">  317</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1ExprNode.html#ae10a6ed3fb0e55e098b4e1e223799f8c">RegisterReflection</a>() {</div>
+<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  318</span>    <span class="keyword">namespace </span><a class="code hl_class" href="classtvm_1_1With.html">refl</a> = tvm::ffi::reflection;</div>
+<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  319</span>    <span class="comment">// span does not participate in structural equal and hash.</span></div>
+<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span>    refl::ObjectDef&lt;ExprNode&gt;()</div>
+<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span>        .def_ro(<span class="stringliteral">&quot;span&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">ExprNode::span</a>, refl::DefaultValue(<a class="code hl_class" href="classtvm_1_1Span.html">Span</a>()),</div>
+<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  322</span>                refl::AttachFieldFlag::SEqHashIgnore())</div>
+<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span>        .def_ro(<span class="stringliteral">&quot;ty&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">ExprNode::ty</a>, refl::DefaultValue(<a class="code hl_function" href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">Type::Missing</a>()));</div>
+<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  324</span>  }</div>
+</div>
+<div class="line"><a id="l00325" name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d796e7b298">  326</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_class" href="classtvm_1_1With.html">TVMFFISEqHashKind</a> <a class="code hl_variable" href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d796e7b298">_type_s_eq_hash_kind</a> = <a class="code hl_class" href="classtvm_1_1Wit [...]
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a998e4b1d8caa76f66e9d947931178f01">  328</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">uint32_t</a> <a class="code hl_variable" href="classtvm_1_1ExprNode.html#a998e4b1d8caa76f66e9d947931178f01">_type_child_slots</a> = 64;</div>
+<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"><a class="line" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">  329</a></span>  <a class="code hl_function" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.Expr&quot;</span>, <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a>, ffi::Object);</div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span>};</div>
+</div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="foldopen" id="foldopen00336" data-start="{" data-end="};">
+<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html">  336</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
+<div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  337</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span>  <span class="comment">// Expressions do not implicitly compare by object identity or address.  Callers must name</span></div>
+<div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  339</span>  <span class="comment">// whether they intend object identity, structural equality, or primitive symbolic comparison.</span></div>
+<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">  340</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">operator==</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&amp; <a class="code hl_class" href="classtvm_1_1With.html">other</a>) <span class [...]
+<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">  341</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&amp; <a class="code hl_class" href="classtvm_1_1With.html">other</a>) <span class [...]
+<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">  342</a></span>  <span class="keywordtype">bool</span> <a class="code hl_function" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&amp; <a class="code hl_class" href="classtvm_1_1With.html">other</a>) <span cla [...]
+<div class="line"><a id="l00343" name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"><a class="line" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">  344</a></span>  <a class="code hl_function" href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, ffi::ObjectRef, <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a>);</div>
+<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span>};</div>
+</div>
+<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span> </div>
+<div class="foldopen" id="foldopen00353" data-start="{" data-end="};">
+<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html">  353</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueExprNode.html">OpaqueExprNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1ExprNode.html">ExprNode</a> {</div>
+<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  354</span> <span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00355" data-start="{" data-end="}">
+<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">  355</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">RegisterReflection</a>() {</div>
+<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  356</span>    <span class="keyword">namespace </span><a class="code hl_class" href="classtvm_1_1With.html">refl</a> = tvm::ffi::reflection;</div>
+<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  357</span>    refl::ObjectDef&lt;OpaqueExprNode&gt;();</div>
+<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span>  }</div>
+</div>
+<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">  360</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">uint32_t</a> <a class="code hl_variable" href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">_type_child_slots</a> = 2;</div>
+<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">  361</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.OpaqueExpr&quot;</span>, <a class="code hl_class" href="classtvm_1_1OpaqueExprNode.html">OpaqueExprNode</a>, <a class="code hl_class" href="cla [...]
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span>};</div>
+</div>
+<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="foldopen" id="foldopen00365" data-start="{" data-end="};">
+<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html">  365</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1OpaqueExpr.html">OpaqueExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a id="l00366" name="l00366"></a><span class="lineno">  366</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"><a class="line" href="classtvm_1_1OpaqueExpr.html#ab40bce2a8f40aa5101cbc5c53d80315e">  367</a></span>  <a class="code hl_function" href="classtvm_1_1OpaqueExpr.html#ab40bce2a8f40aa5101cbc5c53d80315e">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1OpaqueExpr.html">OpaqueExpr</a>, <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, <a class="code hl_class" href="cl [...]
+<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span>};</div>
+</div>
+<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1Call.html">Call</a>;</div>
+<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  377</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
+<div class="foldopen" id="foldopen00378" data-start="{" data-end="};">
+<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html">  378</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a id="l00379" name="l00379"></a><span class="lineno">  379</span> <span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00381" data-start="{" data-end="}">
+<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">  381</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">ExpectedType</a> <a class="code hl_function" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">ty</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  382</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* node = get();</div>
+<div class="line"><a id="l00383" name="l00383"></a><span class="lineno">  383</span>    <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_DCHECK</a>(node != <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* <a class="code hl_class" href="classtvm_1_1With.html">ty_node</a> = node-&gt;ExprNode::ty.template <a class="code hl_class" href="classtvm_1_1With.html">as&lt;typename ExpectedType::ContainerType&gt;</a>();</div>
+<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span>    <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_DCHECK</a>(<a class="code hl_class" href="classtvm_1_1With.html">ty_node</a> != <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span>    <span class="keywordflow">return</span> ffi::GetRef&lt;ExpectedType&gt;(<a class="code hl_class" href="classtvm_1_1With.html">ty_node</a>);</div>
+<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span>  }</div>
+</div>
+<div class="line"><a id="l00388" name="l00388"></a><span class="lineno">  388</span> </div>
+<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#aef373abb5a1725e75779715bfc590d3b">  389</a></span>  <a class="code hl_function" href="classtvm_1_1TypedExpr.html#aef373abb5a1725e75779715bfc590d3b">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>, <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>, <a class="code hl_class" href="classt [...]
+<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"><a class="line" href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">  390</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  391</span>};</div>
+</div>
+<div class="line"><a id="l00392" name="l00392"></a><span class="lineno">  392</span> </div>
+<div class="foldopen" id="foldopen00402" data-start="{" data-end="};">
+<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html">  402</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;PrimType&gt; {</div>
+<div class="line"><a id="l00403" name="l00403"></a><span class="lineno">  403</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00404" name="l00404"></a><span class="lineno">  404</span>  <span class="keyword">using </span><a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&gt;<a class="code hl_function" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">::ty</a>;</div>
+<div class="line"><a id="l00405" name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">  411</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">PrimExpr</a>(<a class="code hl_class" href="classtvm_1_1Call.html">Call</a> <a class="code hl_class" href="classtvm_1_1With.html">call</a>);  <span class="com [...]
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span> </div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">  417</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">PrimExpr</a>(<a class="code hl_class" href="classtvm_1_1With.html">int32_t</a> value);  <span class="comment">// NOLINT(*)</span></div>
+<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">  422</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">PrimExpr</a>(<span class="keywordtype">float</span> value);  <span class="comment">// NOLINT(*)</span></div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a611b175971d5ca7e5a549c55fae12ac6">  424</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a611b175971d5ca7e5a549c55fae12ac6">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>, <a class="code hl_class" href="classtvm_1_1With.html">TypedExpr&lt;PrimType&gt;</a>, <a class="code hl_cl [...]
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">  425</a></span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno">  426</span> </div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExpr.html#a8839598722144f363e11e377ebd6f5ad">  431</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1PrimExpr.html#a8839598722144f363e11e377ebd6f5ad">ConvertFallbackValue</a>(ffi::String value);  <span [...]
+<div class="line"><a id="l00432" name="l00432"></a><span class="lineno">  432</span>};</div>
+</div>
+<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span> </div>
+<div class="foldopen" id="foldopen00439" data-start="{" data-end="};">
+<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html">  439</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a> : <span class="keyword">public</span> ffi::Object {</div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno">  440</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">  441</a></span>  <span class="keyword">virtual</span> <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">~PrimExprConvertibleNode</a>() {}</div>
+<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">  442</a></span>  <span class="keyword">virtual</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">ToPrimExpr</a>() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">  443</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;ir.PrimExprConvertible&quot;</span>, <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibl [...]
+<div class="line"><a id="l00444" name="l00444"></a><span class="lineno">  444</span>};</div>
+</div>
+<div class="line"><a id="l00445" name="l00445"></a><span class="lineno">  445</span> </div>
+<div class="foldopen" id="foldopen00450" data-start="{" data-end="};">
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertible.html">  450</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno">  451</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"><a class="line" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">  452</a></span>  <a class="code hl_function" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a>, ffi::ObjectRef,</div>
+<div class="line"><a id="l00453" name="l00453"></a><span class="lineno">  453</span>                                             <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a>);</div>
+<div class="line"><a id="l00454" name="l00454"></a><span class="lineno">  454</span>};</div>
+</div>
+<div class="line"><a id="l00455" name="l00455"></a><span class="lineno">  455</span> </div>
+<div class="line"><a id="l00456" name="l00456"></a><span class="lineno">  456</span><span class="keyword">namespace </span>ffi {</div>
+<div class="line"><a id="l00457" name="l00457"></a><span class="lineno">  457</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a919f86f3cbe6b3aeae34c3a3bafe98a4">  458</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">use_default_type_traits_v&lt;PrimType&gt;</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a id="l00460" name="l00460"></a><span class="lineno">  460</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="foldopen" id="foldopen00461" data-start="{" data-end="};">
+<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html">  461</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;PrimType, DLDataType&gt; {</div>
+<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">  462</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111 [...]
+<div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span>};</div>
+</div>
+<div class="line"><a id="l00464" name="l00464"></a><span class="lineno">  464</span> </div>
+<div class="line"><a id="l00465" name="l00465"></a><span class="lineno">  465</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
+<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a989ab76251427253427563ab92948640">  466</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">use_default_type_traits_v&lt;TypedExpr&lt;ExpectedType&gt;</a>&gt; = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00467" name="l00467"></a><span class="lineno">  467</span> </div>
+<div class="line"><a id="l00468" name="l00468"></a><span class="lineno">  468</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> ExpectedType&gt;</div>
+<div class="foldopen" id="foldopen00469" data-start="{" data-end="};">
+<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html">  469</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr</a>&lt;<a class="code hl_class" href="classtvm_1_1With.html">ExpectedType</a>&gt;&gt;</div>
+<div class="line"><a id="l00470" name="l00470"></a><span class="lineno">  470</span>    : <span class="keyword">public</span> ObjectRefTypeTraitsBase&lt;TypedExpr&lt;ExpectedType&gt;&gt; {</div>
+<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a261eb8941abd472c85c45bf32a4f4131">  471</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a261eb8941abd472c85c45bf32a4f4131">Base</a> = <a class="code hl_class" href="classtvm_1_1With.html">ObjectRefTypeTraitsBase [...]
+<div class="line"><a id="l00472" name="l00472"></a><span class="lineno">  472</span>  <span class="keyword">using </span>Base::CopyFromAnyViewAfterCheck;</div>
+<div class="line"><a id="l00473" name="l00473"></a><span class="lineno">  473</span>  <span class="keyword">using </span>Base::CopyToAnyView;</div>
+<div class="line"><a id="l00474" name="l00474"></a><span class="lineno">  474</span>  <span class="keyword">using </span>Base::GetMismatchTypeInfo;</div>
+<div class="line"><a id="l00475" name="l00475"></a><span class="lineno">  475</span>  <span class="keyword">using </span>Base::MoveFromAnyAfterCheck;</div>
+<div class="line"><a id="l00476" name="l00476"></a><span class="lineno">  476</span>  <span class="keyword">using </span>Base::MoveToAny;</div>
+<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span>  <span class="keyword">using </span>Base::TypeSchema;</div>
+<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span>  <span class="keyword">using </span>Base::TypeStr;</div>
+<div class="line"><a id="l00479" name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="foldopen" id="foldopen00480" data-start="{" data-end="}">
+<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">  480</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfe [...]
+<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) {</div>
+<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span>      <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1TypedExpr.html">TypedExpr&lt;ExpectedType&gt;::_type_is_nullable</a>;</div>
+<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>    }</div>
+<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span>    <span class="keywordflow">if</span> (src-&gt;type_index &lt; TypeIndex::kTVMFFIStaticObjectBegin ||</div>
+<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span>        !details::IsObjectInstance&lt;ExprNode&gt;(src-&gt;type_index)) {</div>
+<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span>      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span>    }</div>
+<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>    <span class="comment">// Non-owning: this only reads `ty`, and the owning form&#39;s incref/decref pair costs two</span></div>
+<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span>    <span class="comment">// atomics per check on a path every typed field assignment takes.</span></div>
+<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* expr = details::ObjectUnsafe::RawObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj);</div>
+<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span>    <span class="keywordflow">return</span> details::AnyUnsafe::CheckAnyStrict&lt;ExpectedType&gt;(expr-&gt;ty);</div>
+<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span>  }</div>
+</div>
+<div class="line"><a id="l00493" name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="foldopen" id="foldopen00494" data-start="{" data-end="}">
+<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a4408a1640666c94fc5619d4910d2570a">  494</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> std::optional&lt;TypedExpr&lt;ExpectedType&gt;&gt; <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.ht [...]
+<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span>      <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">TVMFFIAny</a>* src) {</div>
+<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span>    <span class="keywordflow">if</span> (CheckAnyStrict(src)) {</div>
+<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span>      <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) {</div>
+<div class="line"><a id="l00498" name="l00498"></a><span class="lineno">  498</span>        <span class="keywordflow">return</span> details::ObjectUnsafe::ObjectRefFromObjectPtr&lt;TypedExpr&lt;ExpectedType&gt;&gt;(<span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00499" name="l00499"></a><span class="lineno">  499</span>      }</div>
+<div class="line"><a id="l00500" name="l00500"></a><span class="lineno">  500</span>      <span class="keywordflow">return</span> details::ObjectUnsafe::ObjectRefFromObjectPtr&lt;TypedExpr&lt;ExpectedType&gt;&gt;(</div>
+<div class="line"><a id="l00501" name="l00501"></a><span class="lineno">  501</span>          details::ObjectUnsafe::ObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj));</div>
+<div class="line"><a id="l00502" name="l00502"></a><span class="lineno">  502</span>    }</div>
+<div class="line"><a id="l00503" name="l00503"></a><span class="lineno">  503</span>    <span class="keywordflow">return</span> std::nullopt;</div>
+<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span>  }</div>
+</div>
+<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span>};</div>
+</div>
+<div class="line"><a id="l00506" name="l00506"></a><span class="lineno">  506</span> </div>
+<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a3953ced274a99f70b1ab2cd282f266e2">  508</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">use_default_type_traits_v&lt;PrimExpr&gt;</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00509" name="l00509"></a><span class="lineno">  509</span> </div>
+<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> <a class="code hl_class" href="classtvm_1_1With.html">ObjectRefType</a>, <span class="keyword">typename</span> <a class="code hl_class" href="classtvm_1_1With.html">ExpectedType</a>, <span class="keyword">typename</span>... <a class="code hl_class" href="classtvm_1_1With.html">FallbackTypes</a>&gt;</div>
+<div class="foldopen" id="foldopen00511" data-start="{" data-end="};">
+<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">  511</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">TypedExprWithFallbackTraitsBase</a></div>
+<div class="line"><a id="l00512" name="l00512"></a><span class="lineno">  512</span>    : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;ObjectRefType, FallbackTypes...&gt; {</div>
+<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#af3446c89272971590ddfc8be9a1ca6ac">  513</a></span>  <span class="keyword">using </span><a class="code hl_class" href="classtvm_1_1With.html">Base</a> = ObjectRefWithFallbackTraitsBase&lt;<a class="code hl_class" href="classtvm_1_1With.html">ObjectRefType</a>, <a class="code hl_class" href="classtvm_1_1With.html">FallbackTypes</a>...&gt;;</div>
+<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span> </div>
+<div class="foldopen" id="foldopen00515" data-start="{" data-end="}">
+<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a61bb950127d8832881b8e6d8e115e2b2">  515</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a61bb950127d8832881b8e6d8e115e2b2">CheckAnyStrict< [...]
+<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1With.html">TypeTraits&lt;TypedExpr&lt;ExpectedType&gt;</a>&gt;<a class="code hl_function" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a61bb950127d8832881b8e6d8e115e2b2">::CheckAnyStrict</a>(src);</div>
+<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span>  }</div>
+</div>
+<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span> </div>
+<div class="foldopen" id="foldopen00519" data-start="{" data-end="}">
+<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a20e704664670a73f6868c5e754ad99f9">  519</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> std::optional&lt;ObjectRefType&gt; <a class="code hl_function" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a20e704664670a73f6868c5e754ad99f9">TryCastFromAnyView [...]
+<div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span>    <span class="keywordflow">if</span> (TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1With.html">TypedExpr&lt;ExpectedType&gt;</a>&gt;<a class="code hl_function" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a20e704664670a73f6868c5e754ad99f9">::TryCastFromAnyView</a>(src)) {</div>
+<div class="line"><a id="l00521" name="l00521"></a><span class="lineno">  521</span>      <span class="keywordflow">return</span> details::ObjectUnsafe::ObjectRefFromObjectPtr&lt;ObjectRefType&gt;(</div>
+<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span>          details::ObjectUnsafe::ObjectPtrFromUnowned&lt;ExprNode&gt;(src-&gt;v_obj));</div>
+<div class="line"><a id="l00523" name="l00523"></a><span class="lineno">  523</span>    }</div>
+<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="classtvm_1_1With.html#a19fcda1557550b2a5f2e942f08bd38f2">Base::template</a> <a class="code hl_class" href="classtvm_1_1With.html">TryFallbackTypes</a>&lt;<a class="code hl_class" href="classtvm_1_1With.html">FallbackTypes</a>...&gt;(src);</div>
+<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span>  }</div>
+</div>
+<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span>};</div>
+</div>
+<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a id="l00528" name="l00528"></a><span class="lineno">  528</span><span class="comment">// define automatic conversion from bool, int64_t, double, ffi::String to PrimExpr</span></div>
+<div class="line"><a id="l00529" name="l00529"></a><span class="lineno">  529</span><span class="comment">// These functions are declared early to avoid circular dependency</span></div>
+<div class="line"><a id="l00530" name="l00530"></a><span class="lineno">  530</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="foldopen" id="foldopen00531" data-start="{" data-end="};">
+<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html">  531</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&gt;</div>
+<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span>    : <span class="keyword">public</span> <a class="code hl_struct" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">TypedExprWithFallbackTraitsBase</a>&lt;PrimExpr, PrimType, StrictBool, int64_t, double,</div>
+<div class="line"><a id="l00533" name="l00533"></a><span class="lineno">  533</span>                                             ffi::String, PrimExprConvertible&gt; {</div>
+<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ae2548942823dde9a5f5032aedeade4b9">  534</a></span>  <span class="keyword">using </span><a class="code hl_class" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">Base</a> = <a class="code hl_struct" href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">TypedExprWithFallbackTraitsBase</a>&lt;<a class="code hl_class" hr [...]
+<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span>                                               ffi::String, <a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a>&gt;;</div>
+<div class="line"><a id="l00536" name="l00536"></a><span class="lineno">  536</span>  <span class="keyword">using </span>Base::CheckAnyStrict;</div>
+<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span>  <span class="keyword">using </span>Base::CopyFromAnyViewAfterCheck;</div>
+<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span>  <span class="keyword">using </span>Base::CopyToAnyView;</div>
+<div class="line"><a id="l00539" name="l00539"></a><span class="lineno">  539</span>  <span class="keyword">using </span>Base::GetMismatchTypeInfo;</div>
+<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span>  <span class="keyword">using </span>Base::MoveFromAnyAfterCheck;</div>
+<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span>  <span class="keyword">using </span>Base::MoveToAny;</div>
+<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span>  <span class="keyword">using </span>Base::TryCastFromAnyView;</div>
+<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span>  <span class="keyword">using </span>Base::TypeSchema;</div>
+<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span>  <span class="keyword">using </span>Base::TypeStr;</div>
+<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span> </div>
+<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc7533525d5">  546</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc753352 [...]
+<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b7733a2">  547</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b773 [...]
+<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aaaa3">  548</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aa [...]
+<div class="foldopen" id="foldopen00549" data-start="{" data-end="}">
+<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1921a329c085ce2856c3e83e5954e052">  549</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1921a329c085ce2856c3e8 [...]
+<div class="line"><a id="l00550" name="l00550"></a><span class="lineno">  550</span>    <span class="keywordflow">return</span> PrimExpr::ConvertFallbackValue(value);</div>
+<div class="line"><a id="l00551" name="l00551"></a><span class="lineno">  551</span>  }</div>
+</div>
+<div class="foldopen" id="foldopen00552" data-start="{" data-end="}">
+<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">  552</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183 [...]
+<div class="line"><a id="l00553" name="l00553"></a><span class="lineno">  553</span>    <span class="keywordflow">return</span> value-&gt;ToPrimExpr();</div>
+<div class="line"><a id="l00554" name="l00554"></a><span class="lineno">  554</span>  }</div>
+</div>
+<div class="line"><a id="l00555" name="l00555"></a><span class="lineno">  555</span>};</div>
+</div>
+<div class="line"><a id="l00556" name="l00556"></a><span class="lineno">  556</span> </div>
+<div class="line"><a id="l00557" name="l00557"></a><span class="lineno">  557</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"><a class="line" href="namespacetvm_1_1ffi.html#a2a487df61f267ffa50e8ed5e6e00323a">  558</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">use_default_type_traits_v&lt;Expr&gt;</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span> </div>
+<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span><span class="comment">// Allow generic Expr arguments to use the primitive-literal conversions</span></div>
+<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span><span class="comment">// already defined by PrimExpr.</span></div>
+<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="foldopen" id="foldopen00563" data-start="{" data-end="};">
+<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html">  563</a></span><span class="keyword">struct </span>TypeTraits&lt;<a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a>&gt; : <span class="keyword">public</span> ObjectRefWithFallbackTraitsBase&lt;Expr, PrimExpr&gt; {</div>
+<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">  564</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">Conv [...]
+<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span>};</div>
+</div>
+<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>}  <span class="comment">// namespace ffi</span></div>
 <div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span> </div>
-<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_IR_BASE_EXPR_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:474</div></div>
-<div class="ttc" id="aclasstvm_1_1ExprNode_html"><div class="ttname"><a href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></div><div class="ttdoc">Base type of all the expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:300</div></div>
-<div class="ttc" id="aclasstvm_1_1ExprNode_html_a4c2a9b792a5ec422d8e04d6d78707fcb"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">tvm::ExprNode::ty</a></div><div class="ttdeci">Type ty</div><div class="ttdoc">The deduced or annotated type of the expression.</div><div class="ttdef"><b>Definition</b> base_expr.h:314</div></div>
-<div class="ttc" id="aclasstvm_1_1ExprNode_html_a52b366cd48d311f2406d86d92991c834"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">tvm::ExprNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">Span that points to the original source code. Reserved debug information.</div><div class="ttdef"><b>Definition</b> base_expr.h:306</div></div>
-<div class="ttc" id="aclasstvm_1_1ExprNode_html_a549f3165583edbbc9a13c6d796e7b298"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d796e7b298">tvm::ExprNode::_type_s_eq_hash_kind</a></div><div class="ttdeci">static constexpr TVMFFISEqHashKind _type_s_eq_hash_kind</div><div class="ttdef"><b>Definition</b> base_expr.h:325</div></div>
+<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span>}  <span class="comment">// namespace tvm</span></div>
+<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span> </div>
+<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_IR_BASE_EXPR_H_</span></div>
+<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:477</div></div>
+<div class="ttc" id="aclasstvm_1_1ExprNode_html"><div class="ttname"><a href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></div><div class="ttdoc">Base type of all the expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:301</div></div>
+<div class="ttc" id="aclasstvm_1_1ExprNode_html_a4c2a9b792a5ec422d8e04d6d78707fcb"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">tvm::ExprNode::ty</a></div><div class="ttdeci">Type ty</div><div class="ttdoc">The deduced or annotated type of the expression.</div><div class="ttdef"><b>Definition</b> base_expr.h:315</div></div>
+<div class="ttc" id="aclasstvm_1_1ExprNode_html_a52b366cd48d311f2406d86d92991c834"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">tvm::ExprNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">Span that points to the original source code. Reserved debug information.</div><div class="ttdef"><b>Definition</b> base_expr.h:307</div></div>
+<div class="ttc" id="aclasstvm_1_1ExprNode_html_a549f3165583edbbc9a13c6d796e7b298"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d796e7b298">tvm::ExprNode::_type_s_eq_hash_kind</a></div><div class="ttdeci">static constexpr TVMFFISEqHashKind _type_s_eq_hash_kind</div><div class="ttdef"><b>Definition</b> base_expr.h:326</div></div>
 <div class="ttc" id="aclasstvm_1_1ExprNode_html_a79424fe36b005bfd36e56dfcfcb4a118"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">tvm::ExprNode::TVM_FFI_DECLARE_OBJECT_INFO</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO(&quot;ir.Expr&quot;, ExprNode, ffi::Object)</div></div>
-<div class="ttc" id="aclasstvm_1_1ExprNode_html_a998e4b1d8caa76f66e9d947931178f01"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a998e4b1d8caa76f66e9d947931178f01">tvm::ExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:327</div></div>
-<div class="ttc" id="aclasstvm_1_1ExprNode_html_ae10a6ed3fb0e55e098b4e1e223799f8c"><div class="ttname"><a href="classtvm_1_1ExprNode.html#ae10a6ed3fb0e55e098b4e1e223799f8c">tvm::ExprNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:316</div></div>
-<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:335</div></div>
+<div class="ttc" id="aclasstvm_1_1ExprNode_html_a998e4b1d8caa76f66e9d947931178f01"><div class="ttname"><a href="classtvm_1_1ExprNode.html#a998e4b1d8caa76f66e9d947931178f01">tvm::ExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:328</div></div>
+<div class="ttc" id="aclasstvm_1_1ExprNode_html_ae10a6ed3fb0e55e098b4e1e223799f8c"><div class="ttname"><a href="classtvm_1_1ExprNode.html#ae10a6ed3fb0e55e098b4e1e223799f8c">tvm::ExprNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:317</div></div>
+<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:336</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html_a081d3512d899e352e81e8eda6385c444"><div class="ttname"><a href="classtvm_1_1Expr.html#a081d3512d899e352e81e8eda6385c444">tvm::Expr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(Expr, ffi::ObjectRef, ExprNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html_a637231cfc91838b8f14745ac199b5fbf"><div class="ttname"><a href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">tvm::Expr::operator==</a></div><div class="ttdeci">bool operator==(const Expr &amp;other) const =delete</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html_a86bd9da75268e479e3bbe61729dce8ac"><div class="ttname"><a href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">tvm::Expr::operator!=</a></div><div class="ttdeci">bool operator!=(const Expr &amp;other) const =delete</div></div>
 <div class="ttc" id="aclasstvm_1_1Expr_html_afb14020d9ae652a64a6f15dcba073c0e"><div class="ttname"><a href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">tvm::Expr::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const Expr &amp;other) const =delete</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html">tvm::OpaqueExprNode</a></div><div class="ttdoc">Base node for opaque construction-time expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:352</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a0aec85b5f32e134740ab24a36850af5a"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">tvm::OpaqueExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:359</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html">tvm::OpaqueExprNode</a></div><div class="ttdoc">Base node for opaque construction-time expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:353</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a0aec85b5f32e134740ab24a36850af5a"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a0aec85b5f32e134740ab24a36850af5a">tvm::OpaqueExprNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:360</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a43b8b6676f146d6b431a793a7bf6c12e"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a43b8b6676f146d6b431a793a7bf6c12e">tvm::OpaqueExprNode::TVM_FFI_DECLARE_OBJECT_INFO</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO(&quot;ir.OpaqueExpr&quot;, OpaqueExprNode, ExprNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a6c57e5bf56efcb43b92283af89be09fc"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">tvm::OpaqueExprNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:354</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueExpr_html"><div class="ttname"><a href="classtvm_1_1OpaqueExpr.html">tvm::OpaqueExpr</a></div><div class="ttdoc">Managed reference to OpaqueExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:364</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExprNode_html_a6c57e5bf56efcb43b92283af89be09fc"><div class="ttname"><a href="classtvm_1_1OpaqueExprNode.html#a6c57e5bf56efcb43b92283af89be09fc">tvm::OpaqueExprNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:355</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueExpr_html"><div class="ttname"><a href="classtvm_1_1OpaqueExpr.html">tvm::OpaqueExpr</a></div><div class="ttdoc">Managed reference to OpaqueExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:365</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueExpr_html_ab40bce2a8f40aa5101cbc5c53d80315e"><div class="ttname"><a href="classtvm_1_1OpaqueExpr.html#ab40bce2a8f40aa5101cbc5c53d80315e">tvm::OpaqueExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(OpaqueExpr, Expr, OpaqueExprNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueTypeNode_html"><div class="ttname"><a href="classtvm_1_1OpaqueTypeNode.html">tvm::OpaqueTypeNode</a></div><div class="ttdoc">Type marker for opaque construction-time expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:94</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueTypeNode_html"><div class="ttname"><a href="classtvm_1_1OpaqueTypeNode.html">tvm::OpaqueTypeNode</a></div><div class="ttdoc">Type marker for opaque construction-time expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:95</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueTypeNode_html_a788cf9986a6a373d56a05b2561d63ef5"><div class="ttname"><a href="classtvm_1_1OpaqueTypeNode.html#a788cf9986a6a373d56a05b2561d63ef5">tvm::OpaqueTypeNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;ir.OpaqueType&quot;, OpaqueTypeNode, TypeNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueTypeNode_html_ac20b91ece9c84c339ec1971d0422c434"><div class="ttname"><a href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">tvm::OpaqueTypeNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:96</div></div>
-<div class="ttc" id="aclasstvm_1_1OpaqueType_html"><div class="ttname"><a href="classtvm_1_1OpaqueType.html">tvm::OpaqueType</a></div><div class="ttdoc">Managed reference to OpaqueTypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:105</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueTypeNode_html_ac20b91ece9c84c339ec1971d0422c434"><div class="ttname"><a href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">tvm::OpaqueTypeNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:97</div></div>
+<div class="ttc" id="aclasstvm_1_1OpaqueType_html"><div class="ttname"><a href="classtvm_1_1OpaqueType.html">tvm::OpaqueType</a></div><div class="ttdoc">Managed reference to OpaqueTypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:106</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueType_html_a3c529cf6fa069430092013c2bd1e7cc9"><div class="ttname"><a href="classtvm_1_1OpaqueType.html#a3c529cf6fa069430092013c2bd1e7cc9">tvm::OpaqueType::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(OpaqueType, Type, OpaqueTypeNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1OpaqueType_html_a6c374ff2d7cb64952ec2e7067e438d8f"><div class="ttname"><a href="classtvm_1_1OpaqueType.html#a6c374ff2d7cb64952ec2e7067e438d8f">tvm::OpaqueType::OpaqueType</a></div><div class="ttdeci">OpaqueType()</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html">tvm::PrimExprConvertibleNode</a></div><div class="ttdoc">Base class for other IR constructs that can be converted to PrimExpr. This is useful for the FFI to c...</div><div class="ttdef"><b>Definition</b> base_expr.h:438</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html_a625eda6a9ec8f03c69802a1300053d8b"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">tvm::PrimExprConvertibleNode::~PrimExprConvertibleNode</a></div><div class="ttdeci">virtual ~PrimExprConvertibleNode()</div><div class="ttdef"><b>Definition</b> base_expr.h:440</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html">tvm::PrimExprConvertibleNode</a></div><div class="ttdoc">Base class for other IR constructs that can be converted to PrimExpr. This is useful for the FFI to c...</div><div class="ttdef"><b>Definition</b> base_expr.h:439</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html_a625eda6a9ec8f03c69802a1300053d8b"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html#a625eda6a9ec8f03c69802a1300053d8b">tvm::PrimExprConvertibleNode::~PrimExprConvertibleNode</a></div><div class="ttdeci">virtual ~PrimExprConvertibleNode()</div><div class="ttdef"><b>Definition</b> base_expr.h:441</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html_ab9efcf82acd9a64e2cda50108c98e458"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html#ab9efcf82acd9a64e2cda50108c98e458">tvm::PrimExprConvertibleNode::ToPrimExpr</a></div><div class="ttdeci">virtual PrimExpr ToPrimExpr() const =0</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExprConvertibleNode_html_add3904e335bd840516d486a6ca398f86"><div class="ttname"><a href="classtvm_1_1PrimExprConvertibleNode.html#add3904e335bd840516d486a6ca398f86">tvm::PrimExprConvertibleNode::TVM_FFI_DECLARE_OBJECT_INFO</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO(&quot;ir.PrimExprConvertible&quot;, PrimExprConvertibleNode, ffi::Object)</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExprConvertible_html"><div class="ttname"><a href="classtvm_1_1PrimExprConvertible.html">tvm::PrimExprConvertible</a></div><div class="ttdoc">Managed reference to PrimExprConvertibleNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:449</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExprConvertible_html"><div class="ttname"><a href="classtvm_1_1PrimExprConvertible.html">tvm::PrimExprConvertible</a></div><div class="ttdoc">Managed reference to PrimExprConvertibleNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:450</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExprConvertible_html_a0bad5536ab9ff5ab07a22e75c2c2102c"><div class="ttname"><a href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">tvm::PrimExprConvertible::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(PrimExprConvertible, ffi::ObjectRef, PrimExprConvertibleNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:401</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html_a33afa5fbcf78f349305e222f182ee28b"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">tvm::PrimExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:424</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:402</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html_a33afa5fbcf78f349305e222f182ee28b"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a33afa5fbcf78f349305e222f182ee28b">tvm::PrimExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:425</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html_a611b175971d5ca7e5a549c55fae12ac6"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a611b175971d5ca7e5a549c55fae12ac6">tvm::PrimExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(PrimExpr, TypedExpr&lt; PrimType &gt;, ExprNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html_a756d3f8b17b019560946524951ae6118"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a756d3f8b17b019560946524951ae6118">tvm::PrimExpr::PrimExpr</a></div><div class="ttdeci">PrimExpr(float value)</div><div class="ttdoc">construct from float.</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html_a7f0ca30e951608a0b36a77a66d4d19e0"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a7f0ca30e951608a0b36a77a66d4d19e0">tvm::PrimExpr::PrimExpr</a></div><div class="ttdeci">PrimExpr(int32_t value)</div><div class="ttdoc">construct from integer.</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html_a8839598722144f363e11e377ebd6f5ad"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a8839598722144f363e11e377ebd6f5ad">tvm::PrimExpr::ConvertFallbackValue</a></div><div class="ttdeci">static PrimExpr ConvertFallbackValue(ffi::String value)</div><div class="ttdoc">construct from string to form a StringImm.</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html_a8e6c9b7691f897badf413f21469f7f9d"><div class="ttname"><a href="classtvm_1_1PrimExpr.html#a8e6c9b7691f897badf413f21469f7f9d">tvm::PrimExpr::PrimExpr</a></div><div class="ttdeci">PrimExpr(Call call)</div><div class="ttdoc">Construct from a call after checking that its result type is PrimType.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimTypeNode_html"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></div><div class="ttdoc">Primitive data types used in the low-level IR.</div><div class="ttdef"><b>Definition</b> base_expr.h:119</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimTypeNode_html_a33ddd141d33f41e97a81974e59f56e39"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">tvm::PrimTypeNode::dtype</a></div><div class="ttdeci">DLDataType dtype</div><div class="ttdoc">The raw DLPack dtype represented by this primitive type.</div><div class="ttdef"><b>Definition</b> base_expr.h:124</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimTypeNode_html"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></div><div class="ttdoc">Primitive data types used in the low-level IR.</div><div class="ttdef"><b>Definition</b> base_expr.h:120</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimTypeNode_html_a33ddd141d33f41e97a81974e59f56e39"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">tvm::PrimTypeNode::dtype</a></div><div class="ttdeci">DLDataType dtype</div><div class="ttdoc">The raw DLPack dtype represented by this primitive type.</div><div class="ttdef"><b>Definition</b> base_expr.h:125</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimTypeNode_html_a5d5f59db0bd058ab5711fa3fc0cdf533"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#a5d5f59db0bd058ab5711fa3fc0cdf533">tvm::PrimTypeNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;ir.PrimType&quot;, PrimTypeNode, TypeNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimTypeNode_html_a8fc416c89e0f5bc71e20e867390e8d5e"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#a8fc416c89e0f5bc71e20e867390e8d5e">tvm::PrimTypeNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:126</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html"><div class="ttname"><a href="classtvm_1_1PrimType.html">tvm::PrimType</a></div><div class="ttdef"><b>Definition</b> base_expr.h:137</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimTypeNode_html_a8fc416c89e0f5bc71e20e867390e8d5e"><div class="ttname"><a href="classtvm_1_1PrimTypeNode.html#a8fc416c89e0f5bc71e20e867390e8d5e">tvm::PrimTypeNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:127</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html"><div class="ttname"><a href="classtvm_1_1PrimType.html">tvm::PrimType</a></div><div class="ttdef"><b>Definition</b> base_expr.h:138</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a043514f4e0b140cb32826f8153205d35"><div class="ttname"><a href="classtvm_1_1PrimType.html#a043514f4e0b140cb32826f8153205d35">tvm::PrimType::ScalableVector</a></div><div class="ttdeci">static PrimType ScalableVector(DLDataTypeCode code, int bits, int lanes)</div><div class="ttdoc">Construct a scalable vector type.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_a0d4b4cdc6d1307df9540202d86fb6f5e"><div class="ttname"><a href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">tvm::PrimType::code</a></div><div class="ttdeci">TVM_FFI_INLINE DLDataTypeCode code() const</div><div class="ttdef"><b>Definition</b> base_expr.h:174</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_a0d4b4cdc6d1307df9540202d86fb6f5e"><div class="ttname"><a href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">tvm::PrimType::code</a></div><div class="ttdeci">TVM_FFI_INLINE DLDataTypeCode code() const</div><div class="ttdef"><b>Definition</b> base_expr.h:175</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a1bb3dfd11f6b94b50107a02b8a34fbea"><div class="ttname"><a href="classtvm_1_1PrimType.html#a1bb3dfd11f6b94b50107a02b8a34fbea">tvm::PrimType::Float</a></div><div class="ttdeci">static PrimType Float(int bits, int lanes=1)</div><div class="ttdoc">Construct a floating-point type with fixed lanes.</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a2c807e9555c520595aeb7f84e4ac18f9"><div class="ttname"><a href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">tvm::PrimType::Void</a></div><div class="ttdeci">static PrimType Void()</div><div class="ttdoc">Construct the void sentinel type, encoded as handle(0, 0).</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_a33bc36efcf1c2977a1bf0ac335cb6344"><div class="ttname"><a href="classtvm_1_1PrimType.html#a33bc36efcf1c2977a1bf0ac335cb6344">tvm::PrimType::IsVoid</a></div><div class="ttdeci">TVM_FFI_INLINE bool IsVoid() const</div><div class="ttdoc">Whether this type is the void sentinel handle(0, 0).</div><div class="ttdef"><b>Definition</b> base_expr.h:220</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_a47021aa229034baedd51cb5bd78a0b6c"><div class="ttname"><a href="classtvm_1_1PrimType.html#a47021aa229034baedd51cb5bd78a0b6c">tvm::PrimType::WithLanes</a></div><div class="ttdeci">TVM_FFI_INLINE PrimType WithLanes(int lanes) const</div><div class="ttdoc">Return the same scalar element type with a fixed lane count.</div><div class="ttdef"><b>Definition</b> base_expr.h:274</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_a33bc36efcf1c2977a1bf0ac335cb6344"><div class="ttname"><a href="classtvm_1_1PrimType.html#a33bc36efcf1c2977a1bf0ac335cb6344">tvm::PrimType::IsVoid</a></div><div class="ttdeci">TVM_FFI_INLINE bool IsVoid() const</div><div class="ttdoc">Whether this type is the void sentinel handle(0, 0).</div><div class="ttdef"><b>Definition</b> base_expr.h:221</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_a47021aa229034baedd51cb5bd78a0b6c"><div class="ttname"><a href="classtvm_1_1PrimType.html#a47021aa229034baedd51cb5bd78a0b6c">tvm::PrimType::WithLanes</a></div><div class="ttdeci">TVM_FFI_INLINE PrimType WithLanes(int lanes) const</div><div class="ttdoc">Return the same scalar element type with a fixed lane count.</div><div class="ttdef"><b>Definition</b> base_expr.h:275</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a496ea0b2e00473c7e1bc9960fc76d955"><div class="ttname"><a href="classtvm_1_1PrimType.html#a496ea0b2e00473c7e1bc9960fc76d955">tvm::PrimType::Int</a></div><div class="ttdeci">static PrimType Int(int bits, int lanes=1)</div><div class="ttdoc">Construct a signed integer type with fixed lanes.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_a4d89bc6607e5e9e861a4071646befd7f"><div class="ttname"><a href="classtvm_1_1PrimType.html#a4d89bc6607e5e9e861a4071646befd7f">tvm::PrimType::IsScalableVector</a></div><div class="ttdeci">TVM_FFI_INLINE bool IsScalableVector() const</div><div class="ttdoc">Whether this type is a scalable vector.</div><div class="ttdef"><b>Definition</b> base_expr.h:227</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_a4d89bc6607e5e9e861a4071646befd7f"><div class="ttname"><a href="classtvm_1_1PrimType.html#a4d89bc6607e5e9e861a4071646befd7f">tvm::PrimType::IsScalableVector</a></div><div class="ttdeci">TVM_FFI_INLINE bool IsScalableVector() const</div><div class="ttdoc">Whether this type is a scalable vector.</div><div class="ttdef"><b>Definition</b> base_expr.h:228</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a5b9fd389b621d3cad6d5a4eb6d525f56"><div class="ttname"><a href="classtvm_1_1PrimType.html#a5b9fd389b621d3cad6d5a4eb6d525f56">tvm::PrimType::Bool</a></div><div class="ttdeci">static PrimType Bool(int lanes=1)</div><div class="ttdoc">Construct a boolean type with fixed lanes.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_a6ede8ddc39f1f66131626975b287e825"><div class="ttname"><a href="classtvm_1_1PrimType.html#a6ede8ddc39f1f66131626975b287e825">tvm::PrimType::bits</a></div><div class="ttdeci">TVM_FFI_INLINE int32_t bits() const</div><div class="ttdef"><b>Definition</b> base_expr.h:179</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_a7e34429d50552f60a2d278109b3baff2"><div class="ttname"><a href="classtvm_1_1PrimType.html#a7e34429d50552f60a2d278109b3baff2">tvm::PrimType::IsFixedLengthVector</a></div><div class="ttdeci">TVM_FFI_INLINE bool IsFixedLengthVector() const</div><div class="ttdoc">Whether this type is a fixed-length vector.</div><div class="ttdef"><b>Definition</b> base_expr.h:232</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_a863246183a239b6fcd2fd6961ba5464b"><div class="ttname"><a href="classtvm_1_1PrimType.html#a863246183a239b6fcd2fd6961ba5464b">tvm::PrimType::IsScalar</a></div><div class="ttdeci">TVM_FFI_INLINE bool IsScalar() const</div><div class="ttdoc">Whether this type is a scalar, excluding fixed and scalable vectors.</div><div class="ttdef"><b>Definition</b> base_expr.h:214</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_a89248a39565e01bd9ac20f3822f4bc95"><div class="ttname"><a href="classtvm_1_1PrimType.html#a89248a39565e01bd9ac20f3822f4bc95">tvm::PrimType::MatchesCode</a></div><div class="ttdeci">TVM_FFI_INLINE bool MatchesCode(Codes... codes) const</div><div class="ttdoc">Check whether the dtype code matches any of the provided DLPack codes.</div><div class="ttdef"><b>Definition</b> base_expr.h:208</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_a6ede8ddc39f1f66131626975b287e825"><div class="ttname"><a href="classtvm_1_1PrimType.html#a6ede8ddc39f1f66131626975b287e825">tvm::PrimType::bits</a></div><div class="ttdeci">TVM_FFI_INLINE int32_t bits() const</div><div class="ttdef"><b>Definition</b> base_expr.h:180</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_a7e34429d50552f60a2d278109b3baff2"><div class="ttname"><a href="classtvm_1_1PrimType.html#a7e34429d50552f60a2d278109b3baff2">tvm::PrimType::IsFixedLengthVector</a></div><div class="ttdeci">TVM_FFI_INLINE bool IsFixedLengthVector() const</div><div class="ttdoc">Whether this type is a fixed-length vector.</div><div class="ttdef"><b>Definition</b> base_expr.h:233</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_a863246183a239b6fcd2fd6961ba5464b"><div class="ttname"><a href="classtvm_1_1PrimType.html#a863246183a239b6fcd2fd6961ba5464b">tvm::PrimType::IsScalar</a></div><div class="ttdeci">TVM_FFI_INLINE bool IsScalar() const</div><div class="ttdoc">Whether this type is a scalar, excluding fixed and scalable vectors.</div><div class="ttdef"><b>Definition</b> base_expr.h:215</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_a89248a39565e01bd9ac20f3822f4bc95"><div class="ttname"><a href="classtvm_1_1PrimType.html#a89248a39565e01bd9ac20f3822f4bc95">tvm::PrimType::MatchesCode</a></div><div class="ttdeci">TVM_FFI_INLINE bool MatchesCode(Codes... codes) const</div><div class="ttdoc">Check whether the dtype code matches any of the provided DLPack codes.</div><div class="ttdef"><b>Definition</b> base_expr.h:209</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a8ec664b32f6861b1b5085c0ef7cecf38"><div class="ttname"><a href="classtvm_1_1PrimType.html#a8ec664b32f6861b1b5085c0ef7cecf38">tvm::PrimType::BFloat</a></div><div class="ttdeci">static PrimType BFloat(int bits, int lanes=1)</div><div class="ttdoc">Construct a bfloat type with fixed lanes.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_aa70b5d45beeca18c0ef0baa88e94a737"><div class="ttname"><a href="classtvm_1_1PrimType.html#aa70b5d45beeca18c0ef0baa88e94a737">tvm::PrimType::MatchesElementType</a></div><div class="ttdeci">TVM_FFI_INLINE bool MatchesElementType(DLDataTypeCode code, int bits) const</div><div class="ttdoc">Check the scalar element code and bit width.</div><div class="ttdef"><b>Definition</b> base_expr.h:198</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_aa70b5d45beeca18c0ef0baa88e94a737"><div class="ttname"><a href="classtvm_1_1PrimType.html#aa70b5d45beeca18c0ef0baa88e94a737">tvm::PrimType::MatchesElementType</a></div><div class="ttdeci">TVM_FFI_INLINE bool MatchesElementType(DLDataTypeCode code, int bits) const</div><div class="ttdoc">Check the scalar element code and bit width.</div><div class="ttdef"><b>Definition</b> base_expr.h:199</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_aa9a2e914e0a4f42781bb93104a78b771"><div class="ttname"><a href="classtvm_1_1PrimType.html#aa9a2e914e0a4f42781bb93104a78b771">tvm::PrimType::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(PrimType, Type, PrimTypeNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_abc0ace579c1e6ff2d38103f56a0bade6"><div class="ttname"><a href="classtvm_1_1PrimType.html#abc0ace579c1e6ff2d38103f56a0bade6">tvm::PrimType::VScaleFactor</a></div><div class="ttdeci">TVM_FFI_INLINE int32_t VScaleFactor() const</div><div class="ttdef"><b>Definition</b> base_expr.h:279</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_abc0ace579c1e6ff2d38103f56a0bade6"><div class="ttname"><a href="classtvm_1_1PrimType.html#abc0ace579c1e6ff2d38103f56a0bade6">tvm::PrimType::VScaleFactor</a></div><div class="ttdeci">TVM_FFI_INLINE int32_t VScaleFactor() const</div><div class="ttdef"><b>Definition</b> base_expr.h:280</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_ac72302fb1ed0e2110333d57bbb2930cc"><div class="ttname"><a href="classtvm_1_1PrimType.html#ac72302fb1ed0e2110333d57bbb2930cc">tvm::PrimType::PrimType</a></div><div class="ttdeci">PrimType(DLDataTypeCode code, int bits, int lanes=1)</div><div class="ttdoc">Construct from DLPack dtype fields.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_ad07bdd138a531d6918d61fdcd7c3e04d"><div class="ttname"><a href="classtvm_1_1PrimType.html#ad07bdd138a531d6918d61fdcd7c3e04d">tvm::PrimType::lanes</a></div><div class="ttdeci">TVM_FFI_INLINE int32_t lanes() const</div><div class="ttdef"><b>Definition</b> base_expr.h:185</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_ad2b426ac8de89f4860ec48d3c1614482"><div class="ttname"><a href="classtvm_1_1PrimType.html#ad2b426ac8de89f4860ec48d3c1614482">tvm::PrimType::WithBits</a></div><div class="ttdeci">TVM_FFI_INLINE PrimType WithBits(int bits) const</div><div class="ttdoc">Return the same type with a different scalar bit width, preserving code and lanes.</div><div class="ttdef"><b>Definition</b> base_expr.h:264</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_ae38ccfedf456e6d6cf364249fabe75ce"><div class="ttname"><a href="classtvm_1_1PrimType.html#ae38ccfedf456e6d6cf364249fabe75ce">tvm::PrimType::StorageBytes</a></div><div class="ttdeci">TVM_FFI_INLINE size_t StorageBytes() const</div><div class="ttdoc">Return the number of bytes needed to store one value of this type.</div><div class="ttdef"><b>Definition</b> base_expr.h:242</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_ad07bdd138a531d6918d61fdcd7c3e04d"><div class="ttname"><a href="classtvm_1_1PrimType.html#ad07bdd138a531d6918d61fdcd7c3e04d">tvm::PrimType::lanes</a></div><div class="ttdeci">TVM_FFI_INLINE int32_t lanes() const</div><div class="ttdef"><b>Definition</b> base_expr.h:186</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_ad2b426ac8de89f4860ec48d3c1614482"><div class="ttname"><a href="classtvm_1_1PrimType.html#ad2b426ac8de89f4860ec48d3c1614482">tvm::PrimType::WithBits</a></div><div class="ttdeci">TVM_FFI_INLINE PrimType WithBits(int bits) const</div><div class="ttdoc">Return the same type with a different scalar bit width, preserving code and lanes.</div><div class="ttdef"><b>Definition</b> base_expr.h:265</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_ae38ccfedf456e6d6cf364249fabe75ce"><div class="ttname"><a href="classtvm_1_1PrimType.html#ae38ccfedf456e6d6cf364249fabe75ce">tvm::PrimType::StorageBytes</a></div><div class="ttdeci">TVM_FFI_INLINE size_t StorageBytes() const</div><div class="ttdoc">Return the number of bytes needed to store one value of this type.</div><div class="ttdef"><b>Definition</b> base_expr.h:243</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_ae57549a48d3eba299f8f5d873361030a"><div class="ttname"><a href="classtvm_1_1PrimType.html#ae57549a48d3eba299f8f5d873361030a">tvm::PrimType::UInt</a></div><div class="ttdeci">static PrimType UInt(int bits, int lanes=1)</div><div class="ttdoc">Construct an unsigned integer type with fixed lanes.</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_ae89872084a876dc729f39c888167a640"><div class="ttname"><a href="classtvm_1_1PrimType.html#ae89872084a876dc729f39c888167a640">tvm::PrimType::PrimType</a></div><div class="ttdeci">PrimType(DLDataType dtype)</div><div class="ttdoc">Construct from a raw DLPack dtype.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html_af33533fc1888a773bcd9f39f5bc57a31"><div class="ttname"><a href="classtvm_1_1PrimType.html#af33533fc1888a773bcd9f39f5bc57a31">tvm::PrimType::WithCode</a></div><div class="ttdeci">TVM_FFI_INLINE PrimType WithCode(DLDataTypeCode code) const</div><div class="ttdoc">Return the same type with a different dtype code, preserving bits and lanes.</div><div class="ttdef"><b>Definition</b> base_expr.h:254</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html_af33533fc1888a773bcd9f39f5bc57a31"><div class="ttname"><a href="classtvm_1_1PrimType.html#af33533fc1888a773bcd9f39f5bc57a31">tvm::PrimType::WithCode</a></div><div class="ttdeci">TVM_FFI_INLINE PrimType WithCode(DLDataTypeCode code) const</div><div class="ttdoc">Return the same type with a different dtype code, preserving bits and lanes.</div><div class="ttdef"><b>Definition</b> base_expr.h:255</div></div>
 <div class="ttc" id="aclasstvm_1_1Span_html"><div class="ttname"><a href="classtvm_1_1Span.html">tvm::Span</a></div><div class="ttdef"><b>Definition</b> source_map.h:111</div></div>
 <div class="ttc" id="aclasstvm_1_1TypeNode_html"><div class="ttname"><a href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></div><div class="ttdoc">Type is the base type of all types.</div><div class="ttdef"><b>Definition</b> base_expr.h:52</div></div>
-<div class="ttc" id="aclasstvm_1_1TypeNode_html_a3b89ba3edb5418e9369f3440ca1485a1"><div class="ttname"><a href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">tvm::TypeNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:69</div></div>
+<div class="ttc" id="aclasstvm_1_1TypeNode_html_a3b89ba3edb5418e9369f3440ca1485a1"><div class="ttname"><a href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">tvm::TypeNode::_type_child_slots</a></div><div class="ttdeci">static constexpr const uint32_t _type_child_slots</div><div class="ttdef"><b>Definition</b> base_expr.h:70</div></div>
 <div class="ttc" id="aclasstvm_1_1TypeNode_html_a4d408897b10b369c127803f7f595b6c0"><div class="ttname"><a href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">tvm::TypeNode::_type_s_eq_hash_kind</a></div><div class="ttdeci">static constexpr TVMFFISEqHashKind _type_s_eq_hash_kind</div><div class="ttdef"><b>Definition</b> base_expr.h:67</div></div>
+<div class="ttc" id="aclasstvm_1_1TypeNode_html_a572a584101469f4e16cb36229b25d4d4"><div class="ttname"><a href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">tvm::TypeNode::_type_s_eq_hash_subclass_kind_fixed</a></div><div class="ttdeci">static constexpr bool _type_s_eq_hash_subclass_kind_fixed</div><div class="ttdef"><b>Definition</b> base_expr.h:68</div></div>
 <div class="ttc" id="aclasstvm_1_1TypeNode_html_a5a07ff7b7fc5146f257ffa17391215a8"><div class="ttname"><a href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">tvm::TypeNode::TVM_FFI_DECLARE_OBJECT_INFO</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO(&quot;ir.Type&quot;, TypeNode, ffi::Object)</div></div>
 <div class="ttc" id="aclasstvm_1_1TypeNode_html_a77d3614d6bc9152b82cc67a63cedcd1e"><div class="ttname"><a href="classtvm_1_1TypeNode.html#a77d3614d6bc9152b82cc67a63cedcd1e">tvm::TypeNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> base_expr.h:60</div></div>
 <div class="ttc" id="aclasstvm_1_1TypeNode_html_a7b06d502a5162d51bb205691bbb95bb5"><div class="ttname"><a href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">tvm::TypeNode::span</a></div><div class="ttdeci">Span span</div><div class="ttdoc">Span that points to the original source code. Reserved debug information.</div><div class="ttdef"><b>Definition</b> base_expr.h:58</div></div>
-<div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:77</div></div>
+<div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:78</div></div>
 <div class="ttc" id="aclasstvm_1_1Type_html_a13b41c597288962b84de7f56474826d1"><div class="ttname"><a href="classtvm_1_1Type.html#a13b41c597288962b84de7f56474826d1">tvm::Type::Missing</a></div><div class="ttdeci">static Type Missing()</div><div class="ttdoc">Sentinel for a type that has not been populated yet.</div></div>
 <div class="ttc" id="aclasstvm_1_1Type_html_a72af00ddec758c4ae997262d73ddf66c"><div class="ttname"><a href="classtvm_1_1Type.html#a72af00ddec758c4ae997262d73ddf66c">tvm::Type::IsMissing</a></div><div class="ttdeci">bool IsMissing() const</div></div>
 <div class="ttc" id="aclasstvm_1_1Type_html_ada76bb43bdaa718bcff5c1f6337d4984"><div class="ttname"><a href="classtvm_1_1Type.html#ada76bb43bdaa718bcff5c1f6337d4984">tvm::Type::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(Type, ffi::ObjectRef, TypeNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1TypedExpr_html"><div class="ttname"><a href="classtvm_1_1TypedExpr.html">tvm::TypedExpr</a></div><div class="ttdoc">Typed reference/view over an expression whose result type is a specific Type subtype.</div><div class="ttdef"><b>Definition</b> base_expr.h:377</div></div>
-<div class="ttc" id="aclasstvm_1_1TypedExpr_html_a699c3725d3b3cb02b7363cab5cc68914"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">tvm::TypedExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:389</div></div>
-<div class="ttc" id="aclasstvm_1_1TypedExpr_html_a7d83b1f31a1cc6f0774df309e207e678"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">tvm::TypedExpr::ty</a></div><div class="ttdeci">ExpectedType ty() const</div><div class="ttdef"><b>Definition</b> base_expr.h:380</div></div>
+<div class="ttc" id="aclasstvm_1_1TypedExpr_html"><div class="ttname"><a href="classtvm_1_1TypedExpr.html">tvm::TypedExpr</a></div><div class="ttdoc">Typed reference/view over an expression whose result type is a specific Type subtype.</div><div class="ttdef"><b>Definition</b> base_expr.h:378</div></div>
+<div class="ttc" id="aclasstvm_1_1TypedExpr_html_a699c3725d3b3cb02b7363cab5cc68914"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#a699c3725d3b3cb02b7363cab5cc68914">tvm::TypedExpr::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> base_expr.h:390</div></div>
+<div class="ttc" id="aclasstvm_1_1TypedExpr_html_a7d83b1f31a1cc6f0774df309e207e678"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">tvm::TypedExpr::ty</a></div><div class="ttdeci">ExpectedType ty() const</div><div class="ttdef"><b>Definition</b> base_expr.h:381</div></div>
 <div class="ttc" id="aclasstvm_1_1TypedExpr_html_aef373abb5a1725e75779715bfc590d3b"><div class="ttname"><a href="classtvm_1_1TypedExpr.html#aef373abb5a1725e75779715bfc590d3b">tvm::TypedExpr::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(TypedExpr, Expr, ExprNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html_a19fcda1557550b2a5f2e942f08bd38f2"><div class="ttname"><a href="classtvm_1_1With.html#a19fcda1557550b2a5f2e942f08bd38f2">tvm::With::With</a></div><div class="ttdeci">With(Args &amp;&amp;... args)</div><div class="ttdoc">constructor. Enter the scope of the context.</div><div class="ttdef"><b>Definition</b> with_context.h:66</div></div>
 <div class="ttc" id="anamespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdoc">An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.</div><div class="ttdef"><b>Definition</b> analyzer.h:40</div></div>
-<div class="ttc" id="anamespacetvm_html_a56fac2bf30a61d8dd727f7b1956dd0db"><div class="ttname"><a href="namespacetvm.html#a56fac2bf30a61d8dd727f7b1956dd0db">tvm::operator!=</a></div><div class="ttdeci">bool operator!=(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:294</div></div>
-<div class="ttc" id="anamespacetvm_html_ad7c45c38af02ce88083d976f9be743b4"><div class="ttname"><a href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">tvm::operator==</a></div><div class="ttdeci">bool operator==(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:290</div></div>
+<div class="ttc" id="anamespacetvm_html_a56fac2bf30a61d8dd727f7b1956dd0db"><div class="ttname"><a href="namespacetvm.html#a56fac2bf30a61d8dd727f7b1956dd0db">tvm::operator!=</a></div><div class="ttdeci">bool operator!=(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:295</div></div>
+<div class="ttc" id="anamespacetvm_html_ad7c45c38af02ce88083d976f9be743b4"><div class="ttname"><a href="namespacetvm.html#ad7c45c38af02ce88083d976f9be743b4">tvm::operator==</a></div><div class="ttdeci">bool operator==(const PrimType &amp;lhs, const PrimType &amp;rhs)</div><div class="ttdef"><b>Definition</b> base_expr.h:291</div></div>
 <div class="ttc" id="asource__map_8h_html"><div class="ttname"><a href="source__map_8h.html">source_map.h</a></div><div class="ttdoc">A map from source names to source code.</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4_html_a3ac03c8423e9d3ac76c7f81b80623eb9"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">tvm::ffi::TypeTraits&lt; Expr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE Expr ConvertFallbackValue(PrimExpr value)</div><div class="ttdef"><b>Definition</b> base_expr.h:562</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a1921a329c085ce2856c3e83e5954e052"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1921a329c085ce2856c3e83e5954e052">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimExpr ConvertFallbackValue(ffi::String value)</div><div class="ttdef"><b>Definition</b> base_expr.h:547</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4_html_a3ac03c8423e9d3ac76c7f81b80623eb9"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">tvm::ffi::TypeTraits&lt; Expr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE Expr ConvertFallbackValue(PrimExpr value)</div><div class="ttdef"><b>Definition</b> base_expr.h:564</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a1921a329c085ce2856c3e83e5954e052"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a1921a329c085ce2856c3e83e5954e052">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimExpr ConvertFallbackValue(ffi::String value)</div><div class="ttdef"><b>Definition</b> base_expr.h:549</div></div>
 <div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a39a8f422a13c06451ce2fa1c6b7733a2"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a39a8f422a13c06451ce2fa1c6b7733a2">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static PrimExpr ConvertFallbackValue(int64_t value)</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a8a9804726d037144ce7183a05739d3ca"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimExpr ConvertFallbackValue(PrimExprConvertible value)</div><div class="ttdef"><b>Definition</b> base_expr.h:550</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a8a9804726d037144ce7183a05739d3ca"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a8a9804726d037144ce7183a05739d3ca">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimExpr ConvertFallbackValue(PrimExprConvertible value)</div><div class="ttdef"><b>Definition</b> base_expr.h:552</div></div>
 <div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_a91a59fcdc9e5602d4b296cc7533525d5"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#a91a59fcdc9e5602d4b296cc7533525d5">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static PrimExpr ConvertFallbackValue(StrictBool value)</div></div>
 <div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4_html_ac92ddf3ce25ca16a0b9c8030121aaaa3"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html#ac92ddf3ce25ca16a0b9c8030121aaaa3">tvm::ffi::TypeTraits&lt; PrimExpr &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static PrimExpr ConvertFallbackValue(double value)</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4_html_a9b9a904d5c21d5bb330111cb80ec3570"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">tvm::ffi::TypeTraits&lt; PrimType &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimType ConvertFallbackValue(DLDataType dtype)</div><div class="ttdef"><b>Definition</b> base_expr.h:461</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a261eb8941abd472c85c45bf32a4f4131"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a261eb8941abd472c85c45bf32a4f4131">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::Base</a></div><div class="ttdeci">ObjectRefTypeTraitsBase&lt; TypedExpr&lt; ExpectedType &gt; &gt; Base</div><div class="ttdef"><b>Definition</b> base_exp [...]
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a4408a1640666c94fc5619d4910d2570a"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a4408a1640666c94fc5619d4910d2570a">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::TryCastFromAnyView</a></div><div class="ttdeci">static TVM_FFI_INLINE std::optional&lt; TypedExpr&lt; ExpectedType &gt; &gt; TryCastFromAnyView(const TVMF [...]
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a91f94dcfec7dbd7024c4912234d3f445"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base [...]
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase_html"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">tvm::ffi::TypedExprWithFallbackTraitsBase</a></div><div class="ttdef"><b>Definition</b> base_expr.h:510</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase_html_a20e704664670a73f6868c5e754ad99f9"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a20e704664670a73f6868c5e754ad99f9">tvm::ffi::TypedExprWithFallbackTraitsBase::TryCastFromAnyView</a></div><div class="ttdeci">static TVM_FFI_INLINE std::optional&lt; ObjectRefType &gt; TryCastFromAnyView(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:517</div></div>
-<div class="ttc" id="astructtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase_html_a61bb950127d8832881b8e6d8e115e2b2"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a61bb950127d8832881b8e6d8e115e2b2">tvm::ffi::TypedExprWithFallbackTraitsBase::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:513</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4_html_a9b9a904d5c21d5bb330111cb80ec3570"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html#a9b9a904d5c21d5bb330111cb80ec3570">tvm::ffi::TypeTraits&lt; PrimType &gt;::ConvertFallbackValue</a></div><div class="ttdeci">static TVM_FFI_INLINE PrimType ConvertFallbackValue(DLDataType dtype)</div><div class="ttdef"><b>Definition</b> base_expr.h:462</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a261eb8941abd472c85c45bf32a4f4131"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a261eb8941abd472c85c45bf32a4f4131">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::Base</a></div><div class="ttdeci">ObjectRefTypeTraitsBase&lt; TypedExpr&lt; ExpectedType &gt; &gt; Base</div><div class="ttdef"><b>Definition</b> base_exp [...]
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a4408a1640666c94fc5619d4910d2570a"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a4408a1640666c94fc5619d4910d2570a">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::TryCastFromAnyView</a></div><div class="ttdeci">static TVM_FFI_INLINE std::optional&lt; TypedExpr&lt; ExpectedType &gt; &gt; TryCastFromAnyView(const TVMF [...]
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4_html_a91f94dcfec7dbd7024c4912234d3f445"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html#a91f94dcfec7dbd7024c4912234d3f445">tvm::ffi::TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base [...]
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase_html"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html">tvm::ffi::TypedExprWithFallbackTraitsBase</a></div><div class="ttdef"><b>Definition</b> base_expr.h:512</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase_html_a20e704664670a73f6868c5e754ad99f9"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a20e704664670a73f6868c5e754ad99f9">tvm::ffi::TypedExprWithFallbackTraitsBase::TryCastFromAnyView</a></div><div class="ttdeci">static TVM_FFI_INLINE std::optional&lt; ObjectRefType &gt; TryCastFromAnyView(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:519</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase_html_a61bb950127d8832881b8e6d8e115e2b2"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypedExprWithFallbackTraitsBase.html#a61bb950127d8832881b8e6d8e115e2b2">tvm::ffi::TypedExprWithFallbackTraitsBase::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> base_expr.h:515</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/binding__rewrite_8h_source.html b/docs/reference/api/doxygen/binding__rewrite_8h_source.html
index fc2dc04fcd1..74caabb4f67 100644
--- a/docs/reference/api/doxygen/binding__rewrite_8h_source.html
+++ b/docs/reference/api/doxygen/binding__rewrite_8h_source.html
@@ -187,10 +187,10 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span> </div>
 <div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="binding__rewrite_8h.html#a3ce77ac22e5aa454d3803902b888f6e1">  117</a></span><span class="preprocessor">#define TVM_RELAX_BINDING_REWRITE_H_</span></div>
 <div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAX_BINDING_REWRITE_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:335</div></div>
+<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:336</div></div>
 <div class="ttc" id="aclasstvm_1_1IRModule_html"><div class="ttname"><a href="classtvm_1_1IRModule.html">tvm::IRModule</a></div><div class="ttdoc">Managed reference class to IRModuleNode.</div><div class="ttdef"><b>Definition</b> module.h:255</div></div>
 <div class="ttc" id="aclasstvm_1_1UniqueNameSupply_html"><div class="ttname"><a href="classtvm_1_1UniqueNameSupply.html">tvm::UniqueNameSupply</a></div><div class="ttdoc">Managed reference class to UniqueNameSupplyNode.</div><div class="ttdef"><b>Definition</b> unique_name_supply.h:115</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:372</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1Binding_html"><div class="ttname"><a href="classtvm_1_1relax_1_1Binding.html">tvm::relax::Binding</a></div><div class="ttdef"><b>Definition</b> expr.h:211</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1DataflowBlockRewriteNode_html"><div class="ttname"><a href="classtvm_1_1relax_1_1DataflowBlockRewriteNode.html">tvm::relax::DataflowBlockRewriteNode</a></div><div class="ttdoc">Statement rewriter for relax.DataflowBlock.</div><div class="ttdef"><b>Definition</b> binding_rewrite.h:42</div></div>
diff --git a/docs/reference/api/doxygen/block__builder_8h_source.html b/docs/reference/api/doxygen/block__builder_8h_source.html
index a672194d240..ddfec89a1a4 100644
--- a/docs/reference/api/doxygen/block__builder_8h_source.html
+++ b/docs/reference/api/doxygen/block__builder_8h_source.html
@@ -190,12 +190,12 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAX_BLOCK_BUILDER_H_</span></div>
 <div class="ttc" id="aanalyzer_8h_html"><div class="ttname"><a href="analyzer_8h.html">analyzer.h</a></div><div class="ttdoc">Algebra expression simplifications.</div></div>
 <div class="ttc" id="aclasstvm_1_1BaseFunc_html"><div class="ttname"><a href="classtvm_1_1BaseFunc.html">tvm::BaseFunc</a></div><div class="ttdoc">Managed reference to BaseFuncNode.</div><div class="ttdef"><b>Definition</b> function.h:250</div></div>
-<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:335</div></div>
-<div class="ttc" id="aclasstvm_1_1GlobalVar_html"><div class="ttname"><a href="classtvm_1_1GlobalVar.html">tvm::GlobalVar</a></div><div class="ttdoc">Managed reference to GlobalVarNode.</div><div class="ttdef"><b>Definition</b> expr.h:429</div></div>
+<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:336</div></div>
+<div class="ttc" id="aclasstvm_1_1GlobalVar_html"><div class="ttname"><a href="classtvm_1_1GlobalVar.html">tvm::GlobalVar</a></div><div class="ttdoc">Managed reference to GlobalVarNode.</div><div class="ttdef"><b>Definition</b> expr.h:432</div></div>
 <div class="ttc" id="aclasstvm_1_1IRModule_html"><div class="ttname"><a href="classtvm_1_1IRModule.html">tvm::IRModule</a></div><div class="ttdoc">Managed reference class to IRModuleNode.</div><div class="ttdef"><b>Definition</b> module.h:255</div></div>
-<div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:77</div></div>
+<div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:78</div></div>
 <div class="ttc" id="aclasstvm_1_1UniqueNameSupply_html"><div class="ttname"><a href="classtvm_1_1UniqueNameSupply.html">tvm::UniqueNameSupply</a></div><div class="ttdoc">Managed reference class to UniqueNameSupplyNode.</div><div class="ttdef"><b>Definition</b> unique_name_supply.h:115</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:372</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1arith_1_1Analyzer_html"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html">tvm::arith::Analyzer</a></div><div class="ttdoc">Managed reference to AnalyzerObj.</div><div class="ttdef"><b>Definition</b> analyzer.h:931</div></div>
 <div class="ttc" id="aclasstvm_1_1relax_1_1BindingBlock_html"><div class="ttname"><a href="classtvm_1_1relax_1_1BindingBlock.html">tvm::relax::BindingBlock</a></div><div class="ttdef"><b>Definition</b> expr.h:307</div></div>
diff --git a/docs/reference/api/doxygen/bnn_8h_source.html b/docs/reference/api/doxygen/bnn_8h_source.html
index b3b3b3e303b..9a1a4c178bc 100644
--- a/docs/reference/api/doxygen/bnn_8h_source.html
+++ b/docs/reference/api/doxygen/bnn_8h_source.html
@@ -188,10 +188,10 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_TOPI_NN_BNN_H_</span></div>
 <div class="ttc" id="aanalyzer_8h_html"><div class="ttname"><a href="analyzer_8h.html">analyzer.h</a></div><div class="ttdoc">Algebra expression simplifications.</div></div>
-<div class="ttc" id="aclasstvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode.</div><div class="ttdef"><b>Definition</b> expr.h:504</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:401</div></div>
+<div class="ttc" id="aclasstvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode.</div><div class="ttdef"><b>Definition</b> expr.h:507</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:402</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_ae57549a48d3eba299f8f5d873361030a"><div class="ttname"><a href="classtvm_1_1PrimType.html#ae57549a48d3eba299f8f5d873361030a">tvm::PrimType::UInt</a></div><div class="ttdeci">static PrimType UInt(int bits, int lanes=1)</div><div class="ttdoc">Construct an unsigned integer type with fixed lanes.</div></div>
-<div class="ttc" id="aclasstvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range container</div><div class="ttdef"><b>Definition</b> expr.h:610</div></div>
+<div class="ttc" id="aclasstvm_1_1Range_html"><div class="ttname"><a href="classtvm_1_1Range.html">tvm::Range</a></div><div class="ttdoc">Range container</div><div class="ttdef"><b>Definition</b> expr.h:613</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1arith_1_1Analyzer_html"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html">tvm::arith::Analyzer</a></div><div class="ttdoc">Managed reference to AnalyzerObj.</div><div class="ttdef"><b>Definition</b> analyzer.h:931</div></div>
 <div class="ttc" id="aclasstvm_1_1te_1_1Tensor_html"><div class="ttname"><a href="classtvm_1_1te_1_1Tensor.html">tvm::te::Tensor</a></div><div class="ttdoc">Tensor structure representing a possible input, or intermediate computation result.</div><div class="ttdef"><b>Definition</b> tensor.h:98</div></div>
diff --git a/docs/reference/api/doxygen/bound_8h_source.html b/docs/reference/api/doxygen/bound_8h_source.html
index bf7ebab9d56..6a60f3e7631 100644
--- a/docs/reference/api/doxygen/bound_8h_source.html
+++ b/docs/reference/api/doxygen/bound_8h_source.html
@@ -129,11 +129,11 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>}  <span class="comment">// namespace arith</span></div>
 <div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_ARITH_BOUND_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:401</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:402</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1arith_1_1IntSet_html"><div class="ttname"><a href="classtvm_1_1arith_1_1IntSet.html">tvm::arith::IntSet</a></div><div class="ttdoc">Managed reference to IntSetNode.</div><div class="ttdef"><b>Definition</b> int_set.h:68</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a></div><div class="ttdoc">Checked zero-state view over an ordinary VarNode with BufferType.</div><div class="ttdef"><b>Definition</b> buffer.h:179</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Stmt_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1Stmt.html">tvm::tirx::Stmt</a></div><div class="ttdoc">Container of all statements.</div><div class="ttdef"><b>Definition</b> stmt.h:67</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1Stmt_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1Stmt.html">tvm::tirx::Stmt</a></div><div class="ttdoc">Container of all statements.</div><div class="ttdef"><b>Definition</b> stmt.h:68</div></div>
 <div class="ttc" id="aint__set_8h_html"><div class="ttname"><a href="int__set_8h.html">int_set.h</a></div><div class="ttdoc">Integer set.</div></div>
 <div class="ttc" id="air_2expr_8h_html"><div class="ttname"><a href="ir_2expr_8h.html">expr.h</a></div><div class="ttdoc">Base expr nodes in TVM.</div></div>
 <div class="ttc" id="air_2prim_2expr_8h_html"><div class="ttname"><a href="ir_2prim_2expr_8h.html">expr.h</a></div><div class="ttdoc">TIR expressions.</div></div>
diff --git a/docs/reference/api/doxygen/broadcast_8h.html b/docs/reference/api/doxygen/broadcast_8h.html
index 462f4babbf2..38d081f9409 100644
--- a/docs/reference/api/doxygen/broadcast_8h.html
+++ b/docs/reference/api/doxygen/broadcast_8h.html
@@ -454,7 +454,7 @@ Functions</h2></td></tr>
 <div class="line">        B-&gt;shape, [&amp;](const ::tvm::ffi::Array&lt;::tvm::tirx::PrimVar&gt;&amp; i) { return l(A, B(i)); }, \</div>
 <div class="line">        name, tag);                                                                             \</div>
 <div class="line">  }</div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:401</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:402</div></div>
 <div class="ttc" id="aclasstvm_1_1te_1_1Tensor_html"><div class="ttname"><a href="classtvm_1_1te_1_1Tensor.html">tvm::te::Tensor</a></div><div class="ttdoc">Tensor structure representing a possible input, or intermediate computation result.</div><div class="ttdef"><b>Definition</b> tensor.h:98</div></div>
 <div class="ttc" id="anamespacetvm_1_1te_html_ad98d13fdbc71aede147f419e218fc680"><div class="ttname"><a href="namespacetvm_1_1te.html#ad98d13fdbc71aede147f419e218fc680">tvm::te::compute</a></div><div class="ttdeci">Tensor compute(ffi::Array&lt; PrimExpr &gt; shape, FCompute fcompute, std::string name=&quot;tensor&quot;, std::string tag=&quot;&quot;, ffi::Map&lt; ffi::String, ffi::Any &gt; attrs={})</div><div class="ttdoc">Construct a new tensor by computing over shape, using the computat [...]
 </div><!-- fragment -->
diff --git a/docs/reference/api/doxygen/broadcast_8h_source.html b/docs/reference/api/doxygen/broadcast_8h_source.html
index ffd2afd4e9f..0e7b75940f1 100644
--- a/docs/reference/api/doxygen/broadcast_8h_source.html
+++ b/docs/reference/api/doxygen/broadcast_8h_source.html
@@ -278,7 +278,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00513" name="l00513"></a><span class="lineno">  513</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_TOPI_BROADCAST_H_</span></div>
 <div class="ttc" id="abroadcast_8h_html_a7f3943bdaba8836ffa7d14457a7d730c"><div class="ttname"><a href="broadcast_8h.html#a7f3943bdaba8836ffa7d14457a7d730c">TOPI_DEFINE_OP_OVERLOAD</a></div><div class="ttdeci">#define TOPI_DEFINE_OP_OVERLOAD(Name, OpName)</div><div class="ttdef"><b>Definition</b> broadcast.h:94</div></div>
 <div class="ttc" id="abroadcast_8h_html_acb867d9c8250a748f59b5a47711b495a"><div class="ttname"><a href="broadcast_8h.html#acb867d9c8250a748f59b5a47711b495a">TOPI_DEFINE_BCAST_OP</a></div><div class="ttdeci">#define TOPI_DEFINE_BCAST_OP(Name, ComputeRule)</div><div class="ttdef"><b>Definition</b> broadcast.h:72</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html"><div class="ttname"><a href="classtvm_1_1PrimType.html">tvm::PrimType</a></div><div class="ttdef"><b>Definition</b> base_expr.h:137</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html"><div class="ttname"><a href="classtvm_1_1PrimType.html">tvm::PrimType</a></div><div class="ttdef"><b>Definition</b> base_expr.h:138</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1te_1_1Tensor_html"><div class="ttname"><a href="classtvm_1_1te_1_1Tensor.html">tvm::te::Tensor</a></div><div class="ttdoc">Tensor structure representing a possible input, or intermediate computation result.</div><div class="ttdef"><b>Definition</b> tensor.h:98</div></div>
 <div class="ttc" id="aconstant__utils_8h_html"><div class="ttname"><a href="constant__utils_8h.html">constant_utils.h</a></div><div class="ttdoc">Utility functions for handling constants in TVM expressions.</div></div>
diff --git a/docs/reference/api/doxygen/buffer_8h_source.html b/docs/reference/api/doxygen/buffer_8h_source.html
index 948fc871c36..7bd6f635932 100644
--- a/docs/reference/api/doxygen/buffer_8h_source.html
+++ b/docs/reference/api/doxygen/buffer_8h_source.html
@@ -364,21 +364,21 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>}  <span class="comment">// namespace tvm::ffi</span></div>
 <div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span> </div>
 <div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_TIR_BUFFER_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:335</div></div>
-<div class="ttc" id="aclasstvm_1_1IntImm_html_acdcc68acec1b9fda51dfbf76b4836ef3"><div class="ttname"><a href="classtvm_1_1IntImm.html#acdcc68acec1b9fda51dfbf76b4836ef3">tvm::IntImm::Int32</a></div><div class="ttdeci">static IntImm Int32(int64_t value, Span span=Span())</div><div class="ttdoc">Construct a scalar int32 constant.</div><div class="ttdef"><b>Definition</b> expr.h:528</div></div>
+<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:336</div></div>
+<div class="ttc" id="aclasstvm_1_1IntImm_html_acdcc68acec1b9fda51dfbf76b4836ef3"><div class="ttname"><a href="classtvm_1_1IntImm.html#acdcc68acec1b9fda51dfbf76b4836ef3">tvm::IntImm::Int32</a></div><div class="ttdeci">static IntImm Int32(int64_t value, Span span=Span())</div><div class="ttdoc">Construct a scalar int32 constant.</div><div class="ttdef"><b>Definition</b> expr.h:531</div></div>
 <div class="ttc" id="aclasstvm_1_1PointerType_html"><div class="ttname"><a href="classtvm_1_1PointerType.html">tvm::PointerType</a></div><div class="ttdef"><b>Definition</b> type.h:71</div></div>
 <div class="ttc" id="aclasstvm_1_1PointerType_html_a58efde5cf86381c865ca2750cfc444c2"><div class="ttname"><a href="classtvm_1_1PointerType.html#a58efde5cf86381c865ca2750cfc444c2">tvm::PointerType::VoidPointerTy</a></div><div class="ttdeci">static PointerType VoidPointerTy(ffi::String storage_scope=&quot;&quot;)</div><div class="ttdoc">Construct an opaque pointer with void element type.</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:401</div></div>
-<div class="ttc" id="aclasstvm_1_1PrimType_html"><div class="ttname"><a href="classtvm_1_1PrimType.html">tvm::PrimType</a></div><div class="ttdef"><b>Definition</b> base_expr.h:137</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Typed reference/view over any Expr whose ExprNode::ty is PrimType.</div><div class="ttdef"><b>Definition</b> base_expr.h:402</div></div>
+<div class="ttc" id="aclasstvm_1_1PrimType_html"><div class="ttname"><a href="classtvm_1_1PrimType.html">tvm::PrimType</a></div><div class="ttdef"><b>Definition</b> base_expr.h:138</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a1bb3dfd11f6b94b50107a02b8a34fbea"><div class="ttname"><a href="classtvm_1_1PrimType.html#a1bb3dfd11f6b94b50107a02b8a34fbea">tvm::PrimType::Float</a></div><div class="ttdeci">static PrimType Float(int bits, int lanes=1)</div><div class="ttdoc">Construct a floating-point type with fixed lanes.</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a2c807e9555c520595aeb7f84e4ac18f9"><div class="ttname"><a href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">tvm::PrimType::Void</a></div><div class="ttdeci">static PrimType Void()</div><div class="ttdoc">Construct the void sentinel type, encoded as handle(0, 0).</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimType_html_a496ea0b2e00473c7e1bc9960fc76d955"><div class="ttname"><a href="classtvm_1_1PrimType.html#a496ea0b2e00473c7e1bc9960fc76d955">tvm::PrimType::Int</a></div><div class="ttdeci">static PrimType Int(int bits, int lanes=1)</div><div class="ttdoc">Construct a signed integer type with fixed lanes.</div></div>
 <div class="ttc" id="aclasstvm_1_1Span_html"><div class="ttname"><a href="classtvm_1_1Span.html">tvm::Span</a></div><div class="ttdef"><b>Definition</b> source_map.h:111</div></div>
 <div class="ttc" id="aclasstvm_1_1TensorLoad_html"><div class="ttname"><a href="classtvm_1_1TensorLoad.html">tvm::TensorLoad</a></div><div class="ttdoc">Managed reference to TensorLoadNode.</div><div class="ttdef"><b>Definition</b> expr.h:127</div></div>
 <div class="ttc" id="aclasstvm_1_1TypeNode_html"><div class="ttname"><a href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></div><div class="ttdoc">Type is the base type of all types.</div><div class="ttdef"><b>Definition</b> base_expr.h:52</div></div>
-<div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:77</div></div>
+<div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:78</div></div>
 <div class="ttc" id="aclasstvm_1_1VarNode_html"><div class="ttname"><a href="classtvm_1_1VarNode.html">tvm::VarNode</a></div><div class="ttdoc">A local variable in the IR.</div><div class="ttdef"><b>Definition</b> expr.h:355</div></div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:372</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html">tvm::tirx::BufferTypeNode</a></div><div class="ttdoc">Structural type of a TIRx buffer variable.</div><div class="ttdef"><b>Definition</b> buffer.h:71</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_a10ef36de199e4c51a14635da470b50de"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#a10ef36de199e4c51a14635da470b50de">tvm::tirx::BufferTypeNode::ElementType</a></div><div class="ttdeci">PrimType ElementType() const</div><div class="ttdef"><b>Definition</b> buffer.h:134</div></div>
@@ -431,7 +431,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_af2228f33f5298e99f17c50c34ecd823a"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#af2228f33f5298e99f17c50c34ecd823a">tvm::tirx::BufferVar::with_dtype</a></div><div class="ttdeci">BufferVar with_dtype(PrimType dtype) const</div><div class="ttdoc">Return a new buffer with the dtype.</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_af3f1683463a646192ae0ce3f2c744a5e"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#af3f1683463a646192ae0ce3f2c744a5e">tvm::tirx::BufferVar::TVM_FFI_DEFINE_DEFAULT_COPY_MOVE_AND_ASSIGN</a></div><div class="ttdeci">TVM_FFI_DEFINE_DEFAULT_COPY_MOVE_AND_ASSIGN(BufferVar)</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_af6dfc10cf5b3b9df04fae89b4121f673"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#af6dfc10cf5b3b9df04fae89b4121f673">tvm::tirx::BufferVar::vstore</a></div><div class="ttdeci">Stmt vstore(ffi::Array&lt; PrimExpr &gt; begin, PrimExpr value) const</div><div class="ttdoc">Create a Stmt that does a vector store at begin index.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Stmt_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1Stmt.html">tvm::tirx::Stmt</a></div><div class="ttdoc">Container of all statements.</div><div class="ttdef"><b>Definition</b> stmt.h:67</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1Stmt_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1Stmt.html">tvm::tirx::Stmt</a></div><div class="ttdoc">Container of all statements.</div><div class="ttdef"><b>Definition</b> stmt.h:68</div></div>
 <div class="ttc" id="air_2expr_8h_html"><div class="ttname"><a href="ir_2expr_8h.html">expr.h</a></div><div class="ttdoc">Base expr nodes in TVM.</div></div>
 <div class="ttc" id="alayout_8h_html"><div class="ttname"><a href="layout_8h.html">layout.h</a></div><div class="ttdoc">Definition of layout.</div></div>
 <div class="ttc" id="anamespacetvm_1_1ffi_html"><div class="ttname"><a href="namespacetvm_1_1ffi.html">tvm::ffi</a></div><div class="ttdef"><b>Definition</b> iter_affine_map.h:231</div></div>
diff --git a/docs/reference/api/doxygen/buffer__region_8h_source.html b/docs/reference/api/doxygen/buffer__region_8h_source.html
index 7f892489c18..0edd5d18ac1 100644
--- a/docs/reference/api/doxygen/buffer__region_8h_source.html
+++ b/docs/reference/api/doxygen/buffer__region_8h_source.html
@@ -170,11 +170,11 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span> </div>
 <div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_TIRX_BUFFER_REGION_H_</span></div>
 <div class="ttc" id="abuffer_8h_html"><div class="ttname"><a href="buffer_8h.html">buffer.h</a></div><div class="ttdoc">Symbolic n-dimensional array, to represent a memory buffer.</div></div>
-<div class="ttc" id="aclasstvm_1_1ExprNode_html"><div class="ttname"><a href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></div><div class="ttdoc">Base type of all the expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:300</div></div>
-<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:335</div></div>
+<div class="ttc" id="aclasstvm_1_1ExprNode_html"><div class="ttname"><a href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></div><div class="ttdoc">Base type of all the expressions.</div><div class="ttdef"><b>Definition</b> base_expr.h:301</div></div>
+<div class="ttc" id="aclasstvm_1_1Expr_html"><div class="ttname"><a href="classtvm_1_1Expr.html">tvm::Expr</a></div><div class="ttdoc">Managed reference to ExprNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:336</div></div>
 <div class="ttc" id="aclasstvm_1_1Span_html"><div class="ttname"><a href="classtvm_1_1Span.html">tvm::Span</a></div><div class="ttdef"><b>Definition</b> source_map.h:111</div></div>
 <div class="ttc" id="aclasstvm_1_1TypeNode_html"><div class="ttname"><a href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></div><div class="ttdoc">Type is the base type of all types.</div><div class="ttdef"><b>Definition</b> base_expr.h:52</div></div>
-<div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:77</div></div>
+<div class="ttc" id="aclasstvm_1_1Type_html"><div class="ttname"><a href="classtvm_1_1Type.html">tvm::Type</a></div><div class="ttdoc">Managed reference to TypeNode.</div><div class="ttdef"><b>Definition</b> base_expr.h:78</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferRegionNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferRegionNode.html">tvm::tirx::BufferRegionNode</a></div><div class="ttdoc">Representing a region of multi-dimensional buffer access.</div><div class="ttdef"><b>Definition</b> buffer_region.h:49</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferRegionNode_html_a1a22ee46690e95e125fded3ea24673bf"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferRegionNode.html#a1a22ee46690e95e125fded3ea24673bf">tvm::tirx::BufferRegionNode::region</a></div><div class="ttdeci">ffi::Array&lt; Range &gt; region</div><div class="ttdef"><b>Definition</b> buffer_region.h:52</div></div>
diff --git a/docs/reference/api/doxygen/bytecode_8h_source.html b/docs/reference/api/doxygen/bytecode_8h_source.html
index f46bb9644e4..fe1b357e621 100644
--- a/docs/reference/api/doxygen/bytecode_8h_source.html
+++ b/docs/reference/api/doxygen/bytecode_8h_source.html
@@ -223,7 +223,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span>}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span> </div>
 <div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_RUNTIME_VM_BYTECODE_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:474</div></div>
+<div class="ttc" id="aclasstvm_1_1Call_html"><div class="ttname"><a href="classtvm_1_1Call.html">tvm::Call</a></div><div class="ttdoc">Managed reference to CallNode.</div><div class="ttdef"><b>Definition</b> expr.h:477</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg.html">tvm::runtime::vm::Instruction::Arg</a></div><div class="ttdoc">The auxiliary data structure for instruction argument.</div><div class="ttdef"><b>Definition</b> bytecode.h:119</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg_html_a3c60a8aefabee0c04cafa08fc2e3c69e"><div class="ttname"><a href="classtvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg.html#a3c60a8aefabee0c04cafa08fc2e3c69e">tvm::runtime::vm::Instruction::Arg::ConstIdx</a></div><div class="ttdeci">static Arg ConstIdx(Index index)</div><div class="ttdoc">construct a ConstIdx arg.</div><div class="ttdef"><b>Definition</b> bytecode.h:139</div></div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1ExprNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1ExprNode__inherit__graph.svg
index 1a9ceb5966d..72907748948 100644
--- a/docs/reference/api/doxygen/classtvm_1_1ExprNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1ExprNode__inherit__graph.svg
@@ -908,23 +908,26 @@
 <g id="Node000048" class="node">
 <title>Node48</title>
 <g id="a_Node000048"><a xlink:href="classtvm_1_1VarNode.html" target="_top" xlink:title="A local variable in the IR.">
-<polygon fill="white" stroke="transparent" points="4851.5,-358.5 4695.5,-358.5 4695.5,-253.5 4851.5,-253.5 4851.5,-358.5"/>
-<text text-anchor="start" x="4740" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
-<text text-anchor="start" x="4699.5" y="-331" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4712.5" y="-331" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
-<text text-anchor="start" x="4699.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4712.5" y="-316" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="4699.5" y="-301" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4712.5" y="-301" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
-<text text-anchor="start" x="4699.5" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4712.5" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="4712.5" y="-275" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4699.5" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4712.5" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="4695.5,-341 4695.5,-341 4851.5,-341 4851.5,-341 4695.5,-341"/>
-<polygon fill="#666666" stroke="#666666" points="4695.5,-296 4695.5,-296 4710.5,-296 4710.5,-296 4695.5,-296"/>
-<polygon fill="#666666" stroke="#666666" points="4710.5,-296 4710.5,-296 4851.5,-296 4851.5,-296 4710.5,-296"/>
-<polygon fill="none" stroke="#666666" points="4695.5,-253.5 4695.5,-358.5 4851.5,-358.5 4851.5,-253.5 4695.5,-253.5"/>
+<polygon fill="white" stroke="transparent" points="4851.5,-371.5 4695.5,-371.5 4695.5,-240.5 4851.5,-240.5 4851.5,-371.5"/>
+<text text-anchor="start" x="4740" y="-359" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
+<text text-anchor="start" x="4699.5" y="-344" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4712.5" y="-344" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
+<text text-anchor="start" x="4699.5" y="-329" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4712.5" y="-329" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4699.5" y="-314" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4712.5" y="-314" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="4699.5" y="-299" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4712.5" y="-299" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots_can</text>
+<text text-anchor="start" x="4712.5" y="-288" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="4699.5" y="-273" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4712.5" y="-273" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="4712.5" y="-262" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="4699.5" y="-247" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4712.5" y="-247" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="4695.5,-354 4695.5,-354 4851.5,-354 4851.5,-354 4695.5,-354"/>
+<polygon fill="#666666" stroke="#666666" points="4695.5,-283 4695.5,-283 4710.5,-283 4710.5,-283 4695.5,-283"/>
+<polygon fill="#666666" stroke="#666666" points="4710.5,-283 4710.5,-283 4851.5,-283 4851.5,-283 4710.5,-283"/>
+<polygon fill="none" stroke="#666666" points="4695.5,-240.5 4695.5,-371.5 4851.5,-371.5 4851.5,-240.5 4695.5,-240.5"/>
 </a>
 </g>
 </g>
@@ -932,7 +935,7 @@
 <g id="edge47_Node000001_Node000048" class="edge">
 <title>Node1&#45;&gt;Node48</title>
 <g id="a_edge47_Node000001_Node000048"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4426.86,-480.05C4500.38,-467.96 4605.68,-443.53 4686.5,-396 4703.08,-386.25 4718.64,-372.52 4731.9,-358.76"/>
+<path fill="none" stroke="#63b8ff" d="M4426.86,-480.05C4500.38,-467.96 4605.68,-443.53 4686.5,-396 4697.86,-389.32 4708.75,-380.77 4718.74,-371.62"/>
 <polygon fill="none" stroke="#63b8ff" points="4426.03,-476.64 4416.71,-481.67 4427.13,-483.55 4426.03,-476.64"/>
 </a>
 </g>
@@ -2176,8 +2179,8 @@
 <g id="edge48_Node000048_Node000049" class="edge">
 <title>Node48&#45;&gt;Node49</title>
 <g id="a_edge48_Node000048_Node000049"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4773.5,-243.18C4773.5,-205.77 4773.5,-159.35 4773.5,-127.68"/>
-<polygon fill="none" stroke="#63b8ff" points="4770,-243.47 4773.5,-253.47 4777,-243.47 4770,-243.47"/>
+<path fill="none" stroke="#63b8ff" d="M4773.5,-230.09C4773.5,-195.35 4773.5,-155.65 4773.5,-127.58"/>
+<polygon fill="none" stroke="#63b8ff" points="4770,-230.21 4773.5,-240.21 4777,-230.21 4770,-230.21"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode-members.html
index 8af22499aa2..012e8b4a1ed 100644
--- a/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode-members.html
@@ -81,12 +81,13 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html#aa8e067bd61ced30bc55f637f4792aef4">arg_types</a></td><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html">tvm::FuncTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html#aeedfacc485083858874b03436a4c3c26">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html">tvm::FuncTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html#a4d30bd05ee4751f963daf10f0c69036d">ret_type</a></td><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html">tvm::FuncTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html#a1f1f7c1a41b11ff04bff13e6972230a7">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.FuncType&quot;, FuncTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html">tvm::FuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html#aa8e067bd61ced30bc55f637f4792aef4">arg_types</a></td><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html">tvm::FuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html#aeedfacc485083858874b03436a4c3c26">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html">tvm::FuncTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html#a4d30bd05ee4751f963daf10f0c69036d">ret_type</a></td><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html">tvm::FuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html#a1f1f7c1a41b11ff04bff13e6972230a7">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.FuncType&quot;, FuncTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1FuncTypeNode.html">tvm::FuncTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode.html
index 4d710ddd8c4..9c2213e8d93 100644
--- a/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::FuncTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1FuncTypeNode__inherit__graph.svg" width="219" height="432"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1FuncTypeNode__inherit__graph.svg" width="219" height="467"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::FuncTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1FuncTypeNode__coll__graph.svg" width="492" height="683"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1FuncTypeNode__coll__graph.svg" width="492" height="718"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -131,6 +131,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode__coll__graph.svg
index 2b2b680e8aa..1bd40926477 100644
--- a/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::FuncTypeNode Pages: 1 -->
-<svg width="369pt" height="512pt"
- viewBox="0.00 0.00 368.50 512.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 508)">
+<svg width="369pt" height="538pt"
+ viewBox="0.00 0.00 368.50 538.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 534)">
 <title>tvm::FuncTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -32,10 +32,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="213,-202 57,-202 57,-112 213,-112 213,-202"/>
-<text text-anchor="start" x="98" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="61" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="74" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="213,-228 57,-228 57,-112 213,-112 213,-228"/>
+<text text-anchor="start" x="98" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="61" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="74" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="61" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="74" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="74" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="61" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="74" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="61" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -43,10 +46,10 @@
 <text text-anchor="start" x="74" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="61" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="74" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="57,-185 57,-185 213,-185 213,-185 57,-185"/>
+<polygon fill="#666666" stroke="#666666" points="57,-211 57,-211 213,-211 213,-211 57,-211"/>
 <polygon fill="#666666" stroke="#666666" points="57,-155 57,-155 72,-155 72,-155 57,-155"/>
 <polygon fill="#666666" stroke="#666666" points="72,-155 72,-155 213,-155 213,-155 72,-155"/>
-<polygon fill="none" stroke="#666666" points="57,-112 57,-202 213,-202 213,-112 57,-112"/>
+<polygon fill="none" stroke="#666666" points="57,-112 57,-228 213,-228 213,-112 57,-112"/>
 </a>
 </g>
 </g>
@@ -54,8 +57,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M162.52,-102.99C167.4,-93.58 172.39,-83.98 176.97,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="159.39,-101.43 157.89,-111.91 165.6,-104.65 159.39,-101.43"/>
+<path fill="none" stroke="#63b8ff" d="M166.01,-102.66C170.45,-93.15 174.88,-83.68 178.92,-75.04"/>
+<polygon fill="none" stroke="#63b8ff" points="162.82,-101.22 161.76,-111.76 169.16,-104.18 162.82,-101.22"/>
 </a>
 </g>
 </g>
@@ -63,13 +66,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-397.5 0,-397.5 0,-348.5 58,-348.5 58,-397.5"/>
-<text text-anchor="start" x="5" y="-385" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-370" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-355" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-380 0,-380 58,-380 58,-380 0,-380"/>
-<polygon fill="#666666" stroke="#666666" points="0,-365 0,-365 58,-365 58,-365 0,-365"/>
-<polygon fill="none" stroke="#666666" points="0,-348.5 0,-397.5 58,-397.5 58,-348.5 0,-348.5"/>
+<polygon fill="white" stroke="transparent" points="58,-423.5 0,-423.5 0,-374.5 58,-374.5 58,-423.5"/>
+<text text-anchor="start" x="5" y="-411" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-396" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-381" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-406 0,-406 58,-406 58,-406 0,-406"/>
+<polygon fill="#666666" stroke="#666666" points="0,-391 0,-391 58,-391 58,-391 0,-391"/>
+<polygon fill="none" stroke="#666666" points="0,-374.5 0,-423.5 58,-423.5 58,-374.5 0,-374.5"/>
 </a>
 </g>
 </g>
@@ -77,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M45.33,-339.03C63.49,-302.37 92.91,-242.97 113.07,-202.27"/>
-<polygon fill="none" stroke="#63b8ff" points="42.05,-337.77 40.75,-348.28 48.32,-340.87 42.05,-337.77"/>
+<path fill="none" stroke="#63b8ff" d="M44.58,-364.64C61.31,-328.8 88.2,-271.21 108.32,-228.14"/>
+<polygon fill="none" stroke="#63b8ff" points="41.2,-363.59 40.14,-374.14 47.55,-366.56 41.2,-363.59"/>
 </a>
 </g>
 </g>
@@ -86,19 +89,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-418 76,-418 76,-328 240,-328 240,-418"/>
-<text text-anchor="start" x="133" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-376" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-376" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-361" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-361" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-401 76,-401 240,-401 240,-401 76,-401"/>
-<polygon fill="#666666" stroke="#666666" points="76,-386 76,-386 240,-386 240,-386 76,-386"/>
-<polygon fill="none" stroke="#666666" points="76,-328 76,-418 240,-418 240,-328 76,-328"/>
+<polygon fill="white" stroke="transparent" points="240,-444 76,-444 76,-354 240,-354 240,-444"/>
+<text text-anchor="start" x="133" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-402" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-402" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-372" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-372" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-361" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-427 76,-427 240,-427 240,-427 76,-427"/>
+<polygon fill="#666666" stroke="#666666" points="76,-412 76,-412 240,-412 240,-412 76,-412"/>
+<polygon fill="none" stroke="#666666" points="76,-354 76,-444 240,-444 240,-354 76,-354"/>
 </a>
 </g>
 </g>
@@ -106,23 +109,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.06,-327.97C134.98,-322.04 133.2,-315.95 132,-310 125.72,-278.78 126.02,-243.23 128.1,-214.36"/>
-<polygon fill="none" stroke="#63b8ff" points="128.14,-213.98 124.64,-207.67 129.13,-202.02 132.62,-208.33 128.14,-213.98"/>
+<path fill="none" stroke="#63b8ff" d="M137.06,-353.97C134.98,-348.04 133.2,-341.95 132,-336 125.74,-304.9 125.46,-269.82 127.15,-240.04"/>
+<polygon fill="none" stroke="#63b8ff" points="127.15,-240.03 123.56,-233.77 127.96,-228.05 131.55,-234.31 127.15,-240.03"/>
 </a>
 </g>
-<text text-anchor="middle" x="149.5" y="-262.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="149.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="250,-504 176,-504 176,-455 250,-455 250,-504"/>
-<text text-anchor="start" x="181" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="211" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="211" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="176,-486.5 176,-486.5 250,-486.5 250,-486.5 176,-486.5"/>
-<polygon fill="#666666" stroke="#666666" points="176,-471.5 176,-471.5 250,-471.5 250,-471.5 176,-471.5"/>
-<polygon fill="none" stroke="#666666" points="176,-455 176,-504 250,-504 250,-455 176,-455"/>
+<polygon fill="white" stroke="transparent" points="250,-530 176,-530 176,-481 250,-481 250,-530"/>
+<text text-anchor="start" x="181" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="211" y="-502.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="211" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="176,-512.5 176,-512.5 250,-512.5 250,-512.5 176,-512.5"/>
+<polygon fill="#666666" stroke="#666666" points="176,-497.5 176,-497.5 250,-497.5 250,-497.5 176,-497.5"/>
+<polygon fill="none" stroke="#666666" points="176,-481 176,-530 250,-530 250,-481 176,-481"/>
 </a>
 </g>
 </g>
@@ -130,8 +133,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M195.74,-445.71C191.15,-436.98 186.11,-427.41 181.25,-418.18"/>
-<polygon fill="none" stroke="#63b8ff" points="192.76,-447.57 200.52,-454.79 198.96,-444.31 192.76,-447.57"/>
+<path fill="none" stroke="#63b8ff" d="M195.74,-471.71C191.15,-462.98 186.11,-453.41 181.25,-444.18"/>
+<polygon fill="none" stroke="#63b8ff" points="192.76,-473.57 200.52,-480.79 198.96,-470.31 192.76,-473.57"/>
 </a>
 </g>
 </g>
@@ -139,19 +142,19 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="transparent" points="360.5,-310 175.5,-310 175.5,-220 360.5,-220 360.5,-310"/>
-<text text-anchor="start" x="244" y="-298" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="266.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="180" y="-268" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-268" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<polygon fill="white" stroke="transparent" points="360.5,-336 175.5,-336 175.5,-246 360.5,-246 360.5,-336"/>
+<text text-anchor="start" x="244" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="266.5" y="-309" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="180" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="193" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="180" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="193" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="193" y="-268" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
 <text text-anchor="start" x="180" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="193" y="-242" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="180" y="-227" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-227" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="176,-293 176,-293 361,-293 361,-293 176,-293"/>
-<polygon fill="#666666" stroke="#666666" points="176,-278 176,-278 361,-278 361,-278 176,-278"/>
-<polygon fill="none" stroke="#666666" points="175.5,-220 175.5,-310 360.5,-310 360.5,-220 175.5,-220"/>
+<text text-anchor="start" x="193" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="176,-319 176,-319 361,-319 361,-319 176,-319"/>
+<polygon fill="#666666" stroke="#666666" points="176,-304 176,-304 361,-304 361,-304 176,-304"/>
+<polygon fill="none" stroke="#666666" points="175.5,-246 175.5,-336 360.5,-336 360.5,-246 175.5,-246"/>
 </a>
 </g>
 </g>
@@ -159,8 +162,8 @@
 <g id="edge6_Node000006_Node000005" class="edge">
 <title>Node5&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M235.57,-446.14C240.75,-437.36 245.7,-427.61 249,-418 261,-383.04 265.57,-341.23 267.24,-310.32"/>
-<polygon fill="none" stroke="#63b8ff" points="232.43,-444.55 230.14,-454.9 238.38,-448.24 232.43,-444.55"/>
+<path fill="none" stroke="#63b8ff" d="M235.57,-472.14C240.75,-463.36 245.7,-453.61 249,-444 261,-409.04 265.57,-367.23 267.24,-336.32"/>
+<polygon fill="none" stroke="#63b8ff" points="232.43,-470.55 230.14,-480.9 238.38,-474.24 232.43,-470.55"/>
 </a>
 </g>
 </g>
@@ -168,11 +171,11 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node6&#45;&gt;Node1</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M255.25,-219.93C246.3,-189.5 233.86,-148.15 222,-112 219.27,-103.69 216.27,-94.89 213.3,-86.38"/>
-<polygon fill="none" stroke="#63b8ff" points="213.28,-86.34 207.52,-82.01 209.29,-75.02 215.06,-79.35 213.28,-86.34"/>
+<path fill="none" stroke="#63b8ff" d="M257.71,-245.81C249.02,-209.61 235.8,-157.18 222,-112 219.5,-103.82 216.65,-95.19 213.77,-86.85"/>
+<polygon fill="none" stroke="#63b8ff" points="213.7,-86.63 207.94,-82.29 209.73,-75.31 215.49,-79.64 213.7,-86.63"/>
 </a>
 </g>
-<text text-anchor="middle" x="275" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ret_type</text>
+<text text-anchor="middle" x="279" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ret_type</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode__inherit__graph.svg
index 6ea4238e3a0..78bcd80d02a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1FuncTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::FuncTypeNode Pages: 1 -->
-<svg width="164pt" height="324pt"
- viewBox="0.00 0.00 164.00 324.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 320)">
+<svg width="164pt" height="350pt"
+ viewBox="0.00 0.00 164.00 350.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 346)">
 <title>tvm::FuncTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -34,12 +34,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-231 0,-231 0,-126 156,-126 156,-231"/>
-<text text-anchor="start" x="41" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-257 0,-257 0,-126 156,-126 156,-257"/>
+<text text-anchor="start" x="41" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -47,10 +50,10 @@
 <text text-anchor="start" x="17" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-213.5 0,-213.5 156,-213.5 156,-213.5 0,-213.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-239.5 0,-239.5 156,-239.5 156,-239.5 0,-239.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-168.5 0,-168.5 15,-168.5 15,-168.5 0,-168.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-168.5 15,-168.5 156,-168.5 156,-168.5 15,-168.5"/>
-<polygon fill="none" stroke="#666666" points="0,-126 0,-231 156,-231 156,-126 0,-126"/>
+<polygon fill="none" stroke="#666666" points="0,-126 0,-257 156,-257 156,-126 0,-126"/>
 </a>
 </g>
 </g>
@@ -58,8 +61,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-115.83C78,-107.19 78,-98.44 78,-90.21"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-115.91 78,-125.91 81.5,-115.91 74.5,-115.91"/>
+<path fill="none" stroke="#63b8ff" d="M78,-115.68C78,-107 78,-98.37 78,-90.29"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-115.86 78,-125.86 81.5,-115.86 74.5,-115.86"/>
 </a>
 </g>
 </g>
@@ -67,13 +70,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-316 49,-316 49,-267 107,-267 107,-316"/>
-<text text-anchor="start" x="54" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-298.5 49,-298.5 107,-298.5 107,-298.5 49,-298.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-283.5 49,-283.5 107,-283.5 107,-283.5 49,-283.5"/>
-<polygon fill="none" stroke="#666666" points="49,-267 49,-316 107,-316 107,-267 49,-267"/>
+<polygon fill="white" stroke="transparent" points="107,-342 49,-342 49,-293 107,-293 107,-342"/>
+<text text-anchor="start" x="54" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-324.5 49,-324.5 107,-324.5 107,-324.5 49,-324.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-309.5 49,-309.5 107,-309.5 107,-309.5 49,-309.5"/>
+<polygon fill="none" stroke="#666666" points="49,-293 49,-342 107,-342 107,-293 49,-293"/>
 </a>
 </g>
 </g>
@@ -81,8 +84,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-256.85C78,-248.79 78,-240 78,-231.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-256.96 78,-266.96 81.5,-256.96 74.5,-256.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-282.85C78,-274.82 78,-265.98 78,-257.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-282.88 78,-292.88 81.5,-282.88 74.5,-282.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1NodeFunctor.html b/docs/reference/api/doxygen/classtvm_1_1NodeFunctor.html
index 66c29ed2862..7abbb2493d3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1NodeFunctor.html
+++ b/docs/reference/api/doxygen/classtvm_1_1NodeFunctor.html
@@ -102,7 +102,7 @@ class tvm::NodeFunctor&lt; FType &gt;</div><p>A dynamically dispatched functor o
 <div class="line">LOG(INFO) &lt;&lt; tostr(x, <span class="stringliteral">&quot;My&quot;</span>);</div>
 <div class="line"><span class="comment">// dispatch to IntImm, outputs &quot;MyAdd&quot;</span></div>
 <div class="line">LOG(INFO) &lt;&lt; tostr(y, <span class="stringliteral">&quot;My&quot;</span>);</div>
-<div class="ttc" id="aclasstvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode.</div><div class="ttdef"><b>Definition</b> expr.h:504</div></div>
+<div class="ttc" id="aclasstvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode.</div><div class="ttdef"><b>Definition</b> expr.h:507</div></div>
 <div class="ttc" id="aclasstvm_1_1NodeFunctor_html"><div class="ttname"><a href="classtvm_1_1NodeFunctor.html">tvm::NodeFunctor</a></div><div class="ttdoc">A dynamically dispatched functor on the type of the first argument.</div><div class="ttdef"><b>Definition</b> node_functor.h:62</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 </div><!-- fragment --><dl class="tparams"><dt>Template Parameters</dt><dd>
diff --git a/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode-members.html
index 0e46a0e6054..b7b6e1ea24a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode-members.html
@@ -81,10 +81,11 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1OpaqueTypeNode.html">tvm::OpaqueTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1OpaqueTypeNode.html#a788cf9986a6a373d56a05b2561d63ef5">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.OpaqueType&quot;, OpaqueTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1OpaqueTypeNode.html">tvm::OpaqueTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1OpaqueTypeNode.html#ac20b91ece9c84c339ec1971d0422c434">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1OpaqueTypeNode.html">tvm::OpaqueTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1OpaqueTypeNode.html#a788cf9986a6a373d56a05b2561d63ef5">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.OpaqueType&quot;, OpaqueTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1OpaqueTypeNode.html">tvm::OpaqueTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode.html
index 8e0eac1511b..8cc22ff896b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode.html
@@ -88,12 +88,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::OpaqueTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1OpaqueTypeNode__inherit__graph.svg" width="219" height="412"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1OpaqueTypeNode__inherit__graph.svg" width="219" height="447"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::OpaqueTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1OpaqueTypeNode__coll__graph.svg" width="343" height="578"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1OpaqueTypeNode__coll__graph.svg" width="343" height="612"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -121,6 +121,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode__coll__graph.svg
index 65bd18f3b00..4c9b364fd1d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::OpaqueTypeNode Pages: 1 -->
-<svg width="257pt" height="433pt"
- viewBox="0.00 0.00 257.00 433.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 429)">
+<svg width="257pt" height="459pt"
+ viewBox="0.00 0.00 257.00 459.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 455)">
 <title>tvm::OpaqueTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,10 +30,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-202 0,-202 0,-112 156,-112 156,-202"/>
-<text text-anchor="start" x="41" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-228 0,-228 0,-112 156,-112 156,-228"/>
+<text text-anchor="start" x="41" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -41,10 +44,10 @@
 <text text-anchor="start" x="17" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-185 0,-185 156,-185 156,-185 0,-185"/>
+<polygon fill="#666666" stroke="#666666" points="0,-211 0,-211 156,-211 156,-211 0,-211"/>
 <polygon fill="#666666" stroke="#666666" points="0,-155 0,-155 15,-155 15,-155 0,-155"/>
 <polygon fill="#666666" stroke="#666666" points="15,-155 15,-155 156,-155 156,-155 15,-155"/>
-<polygon fill="none" stroke="#666666" points="0,-112 0,-202 156,-202 156,-112 0,-112"/>
+<polygon fill="none" stroke="#666666" points="0,-112 0,-228 156,-228 156,-112 0,-112"/>
 </a>
 </g>
 </g>
@@ -52,8 +55,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-101.82C78,-92.79 78,-83.62 78,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-101.91 78,-111.91 81.5,-101.91 74.5,-101.91"/>
+<path fill="none" stroke="#63b8ff" d="M78,-101.49C78,-92.37 78,-83.32 78,-75.04"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-101.76 78,-111.76 81.5,-101.76 74.5,-101.76"/>
 </a>
 </g>
 </g>
@@ -61,13 +64,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-318.5 9,-318.5 9,-269.5 67,-269.5 67,-318.5"/>
-<text text-anchor="start" x="14" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-301 9,-301 67,-301 67,-301 9,-301"/>
-<polygon fill="#666666" stroke="#666666" points="9,-286 9,-286 67,-286 67,-286 9,-286"/>
-<polygon fill="none" stroke="#666666" points="9,-269.5 9,-318.5 67,-318.5 67,-269.5 9,-269.5"/>
+<polygon fill="white" stroke="transparent" points="67,-344.5 9,-344.5 9,-295.5 67,-295.5 67,-344.5"/>
+<text text-anchor="start" x="14" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-317" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-327 9,-327 67,-327 67,-327 9,-327"/>
+<polygon fill="#666666" stroke="#666666" points="9,-312 9,-312 67,-312 67,-312 9,-312"/>
+<polygon fill="none" stroke="#666666" points="9,-295.5 9,-344.5 67,-344.5 67,-295.5 9,-295.5"/>
 </a>
 </g>
 </g>
@@ -75,8 +78,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.84,-259.8C52.98,-242.44 59.34,-220.98 64.89,-202.23"/>
-<polygon fill="none" stroke="#63b8ff" points="44.45,-258.9 44.97,-269.48 51.16,-260.89 44.45,-258.9"/>
+<path fill="none" stroke="#63b8ff" d="M47.11,-285.29C51.67,-268.43 57.31,-247.55 62.52,-228.27"/>
+<polygon fill="none" stroke="#63b8ff" points="43.66,-284.65 44.43,-295.22 50.41,-286.48 43.66,-284.65"/>
 </a>
 </g>
 </g>
@@ -84,19 +87,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-339 85,-339 85,-249 249,-249 249,-339"/>
-<text text-anchor="start" x="142" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="165" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="89" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="89" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="89" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="102" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="85,-322 85,-322 249,-322 249,-322 85,-322"/>
-<polygon fill="#666666" stroke="#666666" points="85,-307 85,-307 249,-307 249,-307 85,-307"/>
-<polygon fill="none" stroke="#666666" points="85,-249 85,-339 249,-339 249,-249 85,-249"/>
+<polygon fill="white" stroke="transparent" points="249,-365 85,-365 85,-275 249,-275 249,-365"/>
+<text text-anchor="start" x="142" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="165" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="89" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="89" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="89" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="85,-348 85,-348 249,-348 249,-348 85,-348"/>
+<polygon fill="#666666" stroke="#666666" points="85,-333 85,-333 249,-333 249,-333 85,-333"/>
+<polygon fill="none" stroke="#666666" points="85,-275 85,-365 249,-365 249,-275 85,-275"/>
 </a>
 </g>
 </g>
@@ -104,23 +107,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.86,-248.8C130.25,-237.26 121.96,-224.68 114.04,-212.67"/>
-<polygon fill="none" stroke="#63b8ff" points="113.81,-212.32 107.17,-209.51 107.21,-202.3 113.85,-205.11 113.81,-212.32"/>
+<path fill="none" stroke="#63b8ff" d="M140.54,-275C133.61,-263.48 125.99,-250.8 118.51,-238.37"/>
+<polygon fill="none" stroke="#63b8ff" points="118.47,-238.3 111.95,-235.22 112.28,-228.01 118.8,-231.09 118.47,-238.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="142.5" y="-223" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="144.5" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="204,-425 130,-425 130,-376 204,-376 204,-425"/>
-<text text-anchor="start" x="135" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="165" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="165" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="130,-407.5 130,-407.5 204,-407.5 204,-407.5 130,-407.5"/>
-<polygon fill="#666666" stroke="#666666" points="130,-392.5 130,-392.5 204,-392.5 204,-392.5 130,-392.5"/>
-<polygon fill="none" stroke="#666666" points="130,-376 130,-425 204,-425 204,-376 130,-376"/>
+<polygon fill="white" stroke="transparent" points="204,-451 130,-451 130,-402 204,-402 204,-451"/>
+<text text-anchor="start" x="135" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="165" y="-423.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="165" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="130,-433.5 130,-433.5 204,-433.5 204,-433.5 130,-433.5"/>
+<polygon fill="#666666" stroke="#666666" points="130,-418.5 130,-418.5 204,-418.5 204,-418.5 130,-418.5"/>
+<polygon fill="none" stroke="#666666" points="130,-402 130,-451 204,-451 204,-402 130,-402"/>
 </a>
 </g>
 </g>
@@ -128,8 +131,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M167,-365.59C167,-357.16 167,-348.01 167,-339.18"/>
-<polygon fill="none" stroke="#63b8ff" points="163.5,-365.79 167,-375.79 170.5,-365.79 163.5,-365.79"/>
+<path fill="none" stroke="#63b8ff" d="M167,-391.59C167,-383.16 167,-374.01 167,-365.18"/>
+<polygon fill="none" stroke="#63b8ff" points="163.5,-391.79 167,-401.79 170.5,-391.79 163.5,-391.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode__inherit__graph.svg
index d3479087df6..5dc08549b65 100644
--- a/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1OpaqueTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::OpaqueTypeNode Pages: 1 -->
-<svg width="164pt" height="309pt"
- viewBox="0.00 0.00 164.00 309.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 305)">
+<svg width="164pt" height="335pt"
+ viewBox="0.00 0.00 164.00 335.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 331)">
 <title>tvm::OpaqueTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,12 +30,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-216 0,-216 0,-111 156,-111 156,-216"/>
-<text text-anchor="start" x="41" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-242 0,-242 0,-111 156,-111 156,-242"/>
+<text text-anchor="start" x="41" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -43,10 +46,10 @@
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-198.5 0,-198.5 156,-198.5 156,-198.5 0,-198.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-224.5 0,-224.5 156,-224.5 156,-224.5 0,-224.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-153.5 0,-153.5 15,-153.5 15,-153.5 0,-153.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-153.5 15,-153.5 156,-153.5 156,-153.5 15,-153.5"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-216 156,-216 156,-111 0,-111"/>
+<polygon fill="none" stroke="#666666" points="0,-111 0,-242 156,-242 156,-111 0,-111"/>
 </a>
 </g>
 </g>
@@ -54,8 +57,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-100.8C78,-92.08 78,-83.35 78,-75.3"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-100.99 78,-110.99 81.5,-100.99 74.5,-100.99"/>
+<path fill="none" stroke="#63b8ff" d="M78,-100.34C78,-91.62 78,-83.04 78,-75.18"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-100.61 78,-110.61 81.5,-100.61 74.5,-100.61"/>
 </a>
 </g>
 </g>
@@ -63,13 +66,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-301 49,-301 49,-252 107,-252 107,-301"/>
-<text text-anchor="start" x="54" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-258.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-283.5 49,-283.5 107,-283.5 107,-283.5 49,-283.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-268.5 49,-268.5 107,-268.5 107,-268.5 49,-268.5"/>
-<polygon fill="none" stroke="#666666" points="49,-252 49,-301 107,-301 107,-252 49,-252"/>
+<polygon fill="white" stroke="transparent" points="107,-327 49,-327 49,-278 107,-278 107,-327"/>
+<text text-anchor="start" x="54" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-309.5 49,-309.5 107,-309.5 107,-309.5 49,-309.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-294.5 49,-294.5 107,-294.5 107,-294.5 49,-294.5"/>
+<polygon fill="none" stroke="#666666" points="49,-278 49,-327 107,-327 107,-278 49,-278"/>
 </a>
 </g>
 </g>
@@ -77,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-241.85C78,-233.79 78,-225 78,-216.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-241.96 78,-251.96 81.5,-241.96 74.5,-241.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-267.85C78,-259.82 78,-250.98 78,-242.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-267.88 78,-277.88 81.5,-267.88 74.5,-267.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode-members.html
index a394e3b9cf8..43377181c7c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode-members.html
@@ -81,12 +81,13 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html#a3ce20495711da0c9f83f02df466ae8a0">element_type</a></td><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html">tvm::PointerTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html#af8961e3a962f85e9416e4e0a00a9b824">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html">tvm::PointerTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html#ae309f7f562a4243bf92f070a9d86ebe4">storage_scope</a></td><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html">tvm::PointerTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html#aeddcb5b817de34157a3f1ba2f7edad70">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.PointerType&quot;, PointerTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html">tvm::PointerTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html#a3ce20495711da0c9f83f02df466ae8a0">element_type</a></td><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html">tvm::PointerTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html#af8961e3a962f85e9416e4e0a00a9b824">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html">tvm::PointerTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html#ae309f7f562a4243bf92f070a9d86ebe4">storage_scope</a></td><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html">tvm::PointerTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html#aeddcb5b817de34157a3f1ba2f7edad70">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.PointerType&quot;, PointerTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1PointerTypeNode.html">tvm::PointerTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode.html
index 901bf0a99b4..79b0e5a7cb1 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::PointerTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PointerTypeNode__inherit__graph.svg" width="219" height="432"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PointerTypeNode__inherit__graph.svg" width="219" height="467"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::PointerTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PointerTypeNode__coll__graph.svg" width="492" height="683"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PointerTypeNode__coll__graph.svg" width="492" height="718"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -131,6 +131,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode__coll__graph.svg
index 096f0ba64f9..2ef3d67416c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::PointerTypeNode Pages: 1 -->
-<svg width="369pt" height="512pt"
- viewBox="0.00 0.00 368.50 512.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 508)">
+<svg width="369pt" height="538pt"
+ viewBox="0.00 0.00 368.50 538.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 534)">
 <title>tvm::PointerTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -32,10 +32,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="213,-202 57,-202 57,-112 213,-112 213,-202"/>
-<text text-anchor="start" x="98" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="61" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="74" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="213,-228 57,-228 57,-112 213,-112 213,-228"/>
+<text text-anchor="start" x="98" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="61" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="74" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="61" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="74" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="74" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="61" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="74" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="61" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -43,10 +46,10 @@
 <text text-anchor="start" x="74" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="61" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="74" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="57,-185 57,-185 213,-185 213,-185 57,-185"/>
+<polygon fill="#666666" stroke="#666666" points="57,-211 57,-211 213,-211 213,-211 57,-211"/>
 <polygon fill="#666666" stroke="#666666" points="57,-155 57,-155 72,-155 72,-155 57,-155"/>
 <polygon fill="#666666" stroke="#666666" points="72,-155 72,-155 213,-155 213,-155 72,-155"/>
-<polygon fill="none" stroke="#666666" points="57,-112 57,-202 213,-202 213,-112 57,-112"/>
+<polygon fill="none" stroke="#666666" points="57,-112 57,-228 213,-228 213,-112 57,-112"/>
 </a>
 </g>
 </g>
@@ -54,8 +57,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M162.52,-102.99C167.4,-93.58 172.39,-83.98 176.97,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="159.39,-101.43 157.89,-111.91 165.6,-104.65 159.39,-101.43"/>
+<path fill="none" stroke="#63b8ff" d="M166.01,-102.66C170.45,-93.15 174.88,-83.68 178.92,-75.04"/>
+<polygon fill="none" stroke="#63b8ff" points="162.82,-101.22 161.76,-111.76 169.16,-104.18 162.82,-101.22"/>
 </a>
 </g>
 </g>
@@ -63,13 +66,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-397.5 0,-397.5 0,-348.5 58,-348.5 58,-397.5"/>
-<text text-anchor="start" x="5" y="-385" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-370" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-355" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-380 0,-380 58,-380 58,-380 0,-380"/>
-<polygon fill="#666666" stroke="#666666" points="0,-365 0,-365 58,-365 58,-365 0,-365"/>
-<polygon fill="none" stroke="#666666" points="0,-348.5 0,-397.5 58,-397.5 58,-348.5 0,-348.5"/>
+<polygon fill="white" stroke="transparent" points="58,-423.5 0,-423.5 0,-374.5 58,-374.5 58,-423.5"/>
+<text text-anchor="start" x="5" y="-411" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-396" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-381" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-406 0,-406 58,-406 58,-406 0,-406"/>
+<polygon fill="#666666" stroke="#666666" points="0,-391 0,-391 58,-391 58,-391 0,-391"/>
+<polygon fill="none" stroke="#666666" points="0,-374.5 0,-423.5 58,-423.5 58,-374.5 0,-374.5"/>
 </a>
 </g>
 </g>
@@ -77,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M45.33,-339.03C63.49,-302.37 92.91,-242.97 113.07,-202.27"/>
-<polygon fill="none" stroke="#63b8ff" points="42.05,-337.77 40.75,-348.28 48.32,-340.87 42.05,-337.77"/>
+<path fill="none" stroke="#63b8ff" d="M44.58,-364.64C61.31,-328.8 88.2,-271.21 108.32,-228.14"/>
+<polygon fill="none" stroke="#63b8ff" points="41.2,-363.59 40.14,-374.14 47.55,-366.56 41.2,-363.59"/>
 </a>
 </g>
 </g>
@@ -86,19 +89,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-418 76,-418 76,-328 240,-328 240,-418"/>
-<text text-anchor="start" x="133" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-376" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-376" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-361" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-361" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-401 76,-401 240,-401 240,-401 76,-401"/>
-<polygon fill="#666666" stroke="#666666" points="76,-386 76,-386 240,-386 240,-386 76,-386"/>
-<polygon fill="none" stroke="#666666" points="76,-328 76,-418 240,-418 240,-328 76,-328"/>
+<polygon fill="white" stroke="transparent" points="240,-444 76,-444 76,-354 240,-354 240,-444"/>
+<text text-anchor="start" x="133" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-402" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-402" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-372" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-372" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-361" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-427 76,-427 240,-427 240,-427 76,-427"/>
+<polygon fill="#666666" stroke="#666666" points="76,-412 76,-412 240,-412 240,-412 76,-412"/>
+<polygon fill="none" stroke="#666666" points="76,-354 76,-444 240,-444 240,-354 76,-354"/>
 </a>
 </g>
 </g>
@@ -106,23 +109,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.06,-327.97C134.98,-322.04 133.2,-315.95 132,-310 125.72,-278.78 126.02,-243.23 128.1,-214.36"/>
-<polygon fill="none" stroke="#63b8ff" points="128.14,-213.98 124.64,-207.67 129.13,-202.02 132.62,-208.33 128.14,-213.98"/>
+<path fill="none" stroke="#63b8ff" d="M137.06,-353.97C134.98,-348.04 133.2,-341.95 132,-336 125.74,-304.9 125.46,-269.82 127.15,-240.04"/>
+<polygon fill="none" stroke="#63b8ff" points="127.15,-240.03 123.56,-233.77 127.96,-228.05 131.55,-234.31 127.15,-240.03"/>
 </a>
 </g>
-<text text-anchor="middle" x="149.5" y="-262.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="149.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="250,-504 176,-504 176,-455 250,-455 250,-504"/>
-<text text-anchor="start" x="181" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="211" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="211" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="176,-486.5 176,-486.5 250,-486.5 250,-486.5 176,-486.5"/>
-<polygon fill="#666666" stroke="#666666" points="176,-471.5 176,-471.5 250,-471.5 250,-471.5 176,-471.5"/>
-<polygon fill="none" stroke="#666666" points="176,-455 176,-504 250,-504 250,-455 176,-455"/>
+<polygon fill="white" stroke="transparent" points="250,-530 176,-530 176,-481 250,-481 250,-530"/>
+<text text-anchor="start" x="181" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="211" y="-502.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="211" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="176,-512.5 176,-512.5 250,-512.5 250,-512.5 176,-512.5"/>
+<polygon fill="#666666" stroke="#666666" points="176,-497.5 176,-497.5 250,-497.5 250,-497.5 176,-497.5"/>
+<polygon fill="none" stroke="#666666" points="176,-481 176,-530 250,-530 250,-481 176,-481"/>
 </a>
 </g>
 </g>
@@ -130,8 +133,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M195.74,-445.71C191.15,-436.98 186.11,-427.41 181.25,-418.18"/>
-<polygon fill="none" stroke="#63b8ff" points="192.76,-447.57 200.52,-454.79 198.96,-444.31 192.76,-447.57"/>
+<path fill="none" stroke="#63b8ff" d="M195.74,-471.71C191.15,-462.98 186.11,-453.41 181.25,-444.18"/>
+<polygon fill="none" stroke="#63b8ff" points="192.76,-473.57 200.52,-480.79 198.96,-470.31 192.76,-473.57"/>
 </a>
 </g>
 </g>
@@ -139,19 +142,19 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="transparent" points="360.5,-310 175.5,-310 175.5,-220 360.5,-220 360.5,-310"/>
-<text text-anchor="start" x="244" y="-298" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="266.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="180" y="-268" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-268" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<polygon fill="white" stroke="transparent" points="360.5,-336 175.5,-336 175.5,-246 360.5,-246 360.5,-336"/>
+<text text-anchor="start" x="244" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="266.5" y="-309" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="180" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="193" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="180" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="193" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="193" y="-268" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
 <text text-anchor="start" x="180" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="193" y="-242" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="180" y="-227" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-227" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="176,-293 176,-293 361,-293 361,-293 176,-293"/>
-<polygon fill="#666666" stroke="#666666" points="176,-278 176,-278 361,-278 361,-278 176,-278"/>
-<polygon fill="none" stroke="#666666" points="175.5,-220 175.5,-310 360.5,-310 360.5,-220 175.5,-220"/>
+<text text-anchor="start" x="193" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="176,-319 176,-319 361,-319 361,-319 176,-319"/>
+<polygon fill="#666666" stroke="#666666" points="176,-304 176,-304 361,-304 361,-304 176,-304"/>
+<polygon fill="none" stroke="#666666" points="175.5,-246 175.5,-336 360.5,-336 360.5,-246 175.5,-246"/>
 </a>
 </g>
 </g>
@@ -159,8 +162,8 @@
 <g id="edge6_Node000006_Node000005" class="edge">
 <title>Node5&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M235.57,-446.14C240.75,-437.36 245.7,-427.61 249,-418 261,-383.04 265.57,-341.23 267.24,-310.32"/>
-<polygon fill="none" stroke="#63b8ff" points="232.43,-444.55 230.14,-454.9 238.38,-448.24 232.43,-444.55"/>
+<path fill="none" stroke="#63b8ff" d="M235.57,-472.14C240.75,-463.36 245.7,-453.61 249,-444 261,-409.04 265.57,-367.23 267.24,-336.32"/>
+<polygon fill="none" stroke="#63b8ff" points="232.43,-470.55 230.14,-480.9 238.38,-474.24 232.43,-470.55"/>
 </a>
 </g>
 </g>
@@ -168,11 +171,11 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node6&#45;&gt;Node1</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M255.25,-219.93C246.3,-189.5 233.86,-148.15 222,-112 219.27,-103.69 216.27,-94.89 213.3,-86.38"/>
-<polygon fill="none" stroke="#63b8ff" points="213.28,-86.34 207.52,-82.01 209.29,-75.02 215.06,-79.35 213.28,-86.34"/>
+<path fill="none" stroke="#63b8ff" d="M257.71,-245.81C249.02,-209.61 235.8,-157.18 222,-112 219.5,-103.82 216.65,-95.19 213.77,-86.85"/>
+<polygon fill="none" stroke="#63b8ff" points="213.7,-86.63 207.94,-82.29 209.73,-75.31 215.49,-79.64 213.7,-86.63"/>
 </a>
 </g>
-<text text-anchor="middle" x="288.5" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +element_type</text>
+<text text-anchor="middle" x="292.5" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +element_type</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode__inherit__graph.svg
index 14d5ece5074..eb27564485b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1PointerTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::PointerTypeNode Pages: 1 -->
-<svg width="164pt" height="324pt"
- viewBox="0.00 0.00 164.00 324.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 320)">
+<svg width="164pt" height="350pt"
+ viewBox="0.00 0.00 164.00 350.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 346)">
 <title>tvm::PointerTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -34,12 +34,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-231 0,-231 0,-126 156,-126 156,-231"/>
-<text text-anchor="start" x="41" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-257 0,-257 0,-126 156,-126 156,-257"/>
+<text text-anchor="start" x="41" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -47,10 +50,10 @@
 <text text-anchor="start" x="17" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-213.5 0,-213.5 156,-213.5 156,-213.5 0,-213.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-239.5 0,-239.5 156,-239.5 156,-239.5 0,-239.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-168.5 0,-168.5 15,-168.5 15,-168.5 0,-168.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-168.5 15,-168.5 156,-168.5 156,-168.5 15,-168.5"/>
-<polygon fill="none" stroke="#666666" points="0,-126 0,-231 156,-231 156,-126 0,-126"/>
+<polygon fill="none" stroke="#666666" points="0,-126 0,-257 156,-257 156,-126 0,-126"/>
 </a>
 </g>
 </g>
@@ -58,8 +61,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-115.83C78,-107.19 78,-98.44 78,-90.21"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-115.91 78,-125.91 81.5,-115.91 74.5,-115.91"/>
+<path fill="none" stroke="#63b8ff" d="M78,-115.68C78,-107 78,-98.37 78,-90.29"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-115.86 78,-125.86 81.5,-115.86 74.5,-115.86"/>
 </a>
 </g>
 </g>
@@ -67,13 +70,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-316 49,-316 49,-267 107,-267 107,-316"/>
-<text text-anchor="start" x="54" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-298.5 49,-298.5 107,-298.5 107,-298.5 49,-298.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-283.5 49,-283.5 107,-283.5 107,-283.5 49,-283.5"/>
-<polygon fill="none" stroke="#666666" points="49,-267 49,-316 107,-316 107,-267 49,-267"/>
+<polygon fill="white" stroke="transparent" points="107,-342 49,-342 49,-293 107,-293 107,-342"/>
+<text text-anchor="start" x="54" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-324.5 49,-324.5 107,-324.5 107,-324.5 49,-324.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-309.5 49,-309.5 107,-309.5 107,-309.5 49,-309.5"/>
+<polygon fill="none" stroke="#666666" points="49,-293 49,-342 107,-342 107,-293 49,-293"/>
 </a>
 </g>
 </g>
@@ -81,8 +84,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-256.85C78,-248.79 78,-240 78,-231.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-256.96 78,-266.96 81.5,-256.96 74.5,-256.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-282.85C78,-274.82 78,-265.98 78,-257.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-282.88 78,-292.88 81.5,-282.88 74.5,-282.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode-members.html
index 6a3199edd2b..a965d6b98a4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode-members.html
@@ -81,11 +81,12 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">dtype</a></td><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html#a8fc416c89e0f5bc71e20e867390e8d5e">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html#a5d5f59db0bd058ab5711fa3fc0cdf533">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.PrimType&quot;, PrimTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html#a33ddd141d33f41e97a81974e59f56e39">dtype</a></td><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html#a8fc416c89e0f5bc71e20e867390e8d5e">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html#a5d5f59db0bd058ab5711fa3fc0cdf533">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.PrimType&quot;, PrimTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1PrimTypeNode.html">tvm::PrimTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode.html
index 698f5a69c19..bd28dc0aaca 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::PrimTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PrimTypeNode__inherit__graph.svg" width="219" height="412"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PrimTypeNode__inherit__graph.svg" width="219" height="447"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::PrimTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PrimTypeNode__coll__graph.svg" width="343" height="578"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1PrimTypeNode__coll__graph.svg" width="343" height="612"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -128,6 +128,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__coll__graph.svg
index 4d3cb245406..91fa8011655 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::PrimTypeNode Pages: 1 -->
-<svg width="257pt" height="433pt"
- viewBox="0.00 0.00 257.00 433.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 429)">
+<svg width="257pt" height="459pt"
+ viewBox="0.00 0.00 257.00 459.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 455)">
 <title>tvm::PrimTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -32,10 +32,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-202 0,-202 0,-112 156,-112 156,-202"/>
-<text text-anchor="start" x="41" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-228 0,-228 0,-112 156,-112 156,-228"/>
+<text text-anchor="start" x="41" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -43,10 +46,10 @@
 <text text-anchor="start" x="17" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-185 0,-185 156,-185 156,-185 0,-185"/>
+<polygon fill="#666666" stroke="#666666" points="0,-211 0,-211 156,-211 156,-211 0,-211"/>
 <polygon fill="#666666" stroke="#666666" points="0,-155 0,-155 15,-155 15,-155 0,-155"/>
 <polygon fill="#666666" stroke="#666666" points="15,-155 15,-155 156,-155 156,-155 15,-155"/>
-<polygon fill="none" stroke="#666666" points="0,-112 0,-202 156,-202 156,-112 0,-112"/>
+<polygon fill="none" stroke="#666666" points="0,-112 0,-228 156,-228 156,-112 0,-112"/>
 </a>
 </g>
 </g>
@@ -54,8 +57,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-101.82C78,-92.79 78,-83.62 78,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-101.91 78,-111.91 81.5,-101.91 74.5,-101.91"/>
+<path fill="none" stroke="#63b8ff" d="M78,-101.49C78,-92.37 78,-83.32 78,-75.04"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-101.76 78,-111.76 81.5,-101.76 74.5,-101.76"/>
 </a>
 </g>
 </g>
@@ -63,13 +66,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-318.5 9,-318.5 9,-269.5 67,-269.5 67,-318.5"/>
-<text text-anchor="start" x="14" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-301 9,-301 67,-301 67,-301 9,-301"/>
-<polygon fill="#666666" stroke="#666666" points="9,-286 9,-286 67,-286 67,-286 9,-286"/>
-<polygon fill="none" stroke="#666666" points="9,-269.5 9,-318.5 67,-318.5 67,-269.5 9,-269.5"/>
+<polygon fill="white" stroke="transparent" points="67,-344.5 9,-344.5 9,-295.5 67,-295.5 67,-344.5"/>
+<text text-anchor="start" x="14" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-317" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-327 9,-327 67,-327 67,-327 9,-327"/>
+<polygon fill="#666666" stroke="#666666" points="9,-312 9,-312 67,-312 67,-312 9,-312"/>
+<polygon fill="none" stroke="#666666" points="9,-295.5 9,-344.5 67,-344.5 67,-295.5 9,-295.5"/>
 </a>
 </g>
 </g>
@@ -77,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.84,-259.8C52.98,-242.44 59.34,-220.98 64.89,-202.23"/>
-<polygon fill="none" stroke="#63b8ff" points="44.45,-258.9 44.97,-269.48 51.16,-260.89 44.45,-258.9"/>
+<path fill="none" stroke="#63b8ff" d="M47.11,-285.29C51.67,-268.43 57.31,-247.55 62.52,-228.27"/>
+<polygon fill="none" stroke="#63b8ff" points="43.66,-284.65 44.43,-295.22 50.41,-286.48 43.66,-284.65"/>
 </a>
 </g>
 </g>
@@ -86,19 +89,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-339 85,-339 85,-249 249,-249 249,-339"/>
-<text text-anchor="start" x="142" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="165" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="89" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="89" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="89" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="102" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="85,-322 85,-322 249,-322 249,-322 85,-322"/>
-<polygon fill="#666666" stroke="#666666" points="85,-307 85,-307 249,-307 249,-307 85,-307"/>
-<polygon fill="none" stroke="#666666" points="85,-249 85,-339 249,-339 249,-249 85,-249"/>
+<polygon fill="white" stroke="transparent" points="249,-365 85,-365 85,-275 249,-275 249,-365"/>
+<text text-anchor="start" x="142" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="165" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="89" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="89" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="89" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="85,-348 85,-348 249,-348 249,-348 85,-348"/>
+<polygon fill="#666666" stroke="#666666" points="85,-333 85,-333 249,-333 249,-333 85,-333"/>
+<polygon fill="none" stroke="#666666" points="85,-275 85,-365 249,-365 249,-275 85,-275"/>
 </a>
 </g>
 </g>
@@ -106,23 +109,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.86,-248.8C130.25,-237.26 121.96,-224.68 114.04,-212.67"/>
-<polygon fill="none" stroke="#63b8ff" points="113.81,-212.32 107.17,-209.51 107.21,-202.3 113.85,-205.11 113.81,-212.32"/>
+<path fill="none" stroke="#63b8ff" d="M140.54,-275C133.61,-263.48 125.99,-250.8 118.51,-238.37"/>
+<polygon fill="none" stroke="#63b8ff" points="118.47,-238.3 111.95,-235.22 112.28,-228.01 118.8,-231.09 118.47,-238.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="142.5" y="-223" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="144.5" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="204,-425 130,-425 130,-376 204,-376 204,-425"/>
-<text text-anchor="start" x="135" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="165" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="165" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="130,-407.5 130,-407.5 204,-407.5 204,-407.5 130,-407.5"/>
-<polygon fill="#666666" stroke="#666666" points="130,-392.5 130,-392.5 204,-392.5 204,-392.5 130,-392.5"/>
-<polygon fill="none" stroke="#666666" points="130,-376 130,-425 204,-425 204,-376 130,-376"/>
+<polygon fill="white" stroke="transparent" points="204,-451 130,-451 130,-402 204,-402 204,-451"/>
+<text text-anchor="start" x="135" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="165" y="-423.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="165" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="130,-433.5 130,-433.5 204,-433.5 204,-433.5 130,-433.5"/>
+<polygon fill="#666666" stroke="#666666" points="130,-418.5 130,-418.5 204,-418.5 204,-418.5 130,-418.5"/>
+<polygon fill="none" stroke="#666666" points="130,-402 130,-451 204,-451 204,-402 130,-402"/>
 </a>
 </g>
 </g>
@@ -130,8 +133,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M167,-365.59C167,-357.16 167,-348.01 167,-339.18"/>
-<polygon fill="none" stroke="#63b8ff" points="163.5,-365.79 167,-375.79 170.5,-365.79 163.5,-365.79"/>
+<path fill="none" stroke="#63b8ff" d="M167,-391.59C167,-383.16 167,-374.01 167,-365.18"/>
+<polygon fill="none" stroke="#63b8ff" points="163.5,-391.79 167,-401.79 170.5,-391.79 163.5,-391.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__inherit__graph.svg
index bbacef5f889..29ede09effe 100644
--- a/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1PrimTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::PrimTypeNode Pages: 1 -->
-<svg width="164pt" height="309pt"
- viewBox="0.00 0.00 164.00 309.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 305)">
+<svg width="164pt" height="335pt"
+ viewBox="0.00 0.00 164.00 335.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 331)">
 <title>tvm::PrimTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -32,12 +32,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-216 0,-216 0,-111 156,-111 156,-216"/>
-<text text-anchor="start" x="41" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-242 0,-242 0,-111 156,-111 156,-242"/>
+<text text-anchor="start" x="41" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -45,10 +48,10 @@
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-198.5 0,-198.5 156,-198.5 156,-198.5 0,-198.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-224.5 0,-224.5 156,-224.5 156,-224.5 0,-224.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-153.5 0,-153.5 15,-153.5 15,-153.5 0,-153.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-153.5 15,-153.5 156,-153.5 156,-153.5 15,-153.5"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-216 156,-216 156,-111 0,-111"/>
+<polygon fill="none" stroke="#666666" points="0,-111 0,-242 156,-242 156,-111 0,-111"/>
 </a>
 </g>
 </g>
@@ -56,8 +59,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-100.8C78,-92.08 78,-83.35 78,-75.3"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-100.99 78,-110.99 81.5,-100.99 74.5,-100.99"/>
+<path fill="none" stroke="#63b8ff" d="M78,-100.34C78,-91.62 78,-83.04 78,-75.18"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-100.61 78,-110.61 81.5,-100.61 74.5,-100.61"/>
 </a>
 </g>
 </g>
@@ -65,13 +68,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-301 49,-301 49,-252 107,-252 107,-301"/>
-<text text-anchor="start" x="54" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-258.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-283.5 49,-283.5 107,-283.5 107,-283.5 49,-283.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-268.5 49,-268.5 107,-268.5 107,-268.5 49,-268.5"/>
-<polygon fill="none" stroke="#666666" points="49,-252 49,-301 107,-301 107,-252 49,-252"/>
+<polygon fill="white" stroke="transparent" points="107,-327 49,-327 49,-278 107,-278 107,-327"/>
+<text text-anchor="start" x="54" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-309.5 49,-309.5 107,-309.5 107,-309.5 49,-309.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-294.5 49,-294.5 107,-294.5 107,-294.5 49,-294.5"/>
+<polygon fill="none" stroke="#666666" points="49,-278 49,-327 107,-327 107,-278 49,-278"/>
 </a>
 </g>
 </g>
@@ -79,8 +82,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-241.85C78,-233.79 78,-225 78,-216.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-241.96 78,-251.96 81.5,-241.96 74.5,-241.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-267.85C78,-259.82 78,-250.98 78,-242.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-267.88 78,-277.88 81.5,-267.88 74.5,-267.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode-members.html
index 347d84375db..0618cd4f4e2 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode-members.html
@@ -81,10 +81,11 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TensorMapTypeNode.html#a6c6ea5993eb10a13ead578849b2d38c8">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1TensorMapTypeNode.html">tvm::TensorMapTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TensorMapTypeNode.html#a85dd007baa39a0312d289e80f50eb406">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.TensorMapType&quot;, TensorMapTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1TensorMapTypeNode.html">tvm::TensorMapTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TensorMapTypeNode.html#a6c6ea5993eb10a13ead578849b2d38c8">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1TensorMapTypeNode.html">tvm::TensorMapTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TensorMapTypeNode.html#a85dd007baa39a0312d289e80f50eb406">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.TensorMapType&quot;, TensorMapTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1TensorMapTypeNode.html">tvm::TensorMapTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode.html
index be05b5c8c92..08fdbce99ac 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode.html
@@ -88,12 +88,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::TensorMapTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TensorMapTypeNode__inherit__graph.svg" width="219" height="412"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TensorMapTypeNode__inherit__graph.svg" width="219" height="447"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::TensorMapTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TensorMapTypeNode__coll__graph.svg" width="343" height="578"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TensorMapTypeNode__coll__graph.svg" width="343" height="612"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -121,6 +121,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode__coll__graph.svg
index 921c07ac0cf..1d729ddb132 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TensorMapTypeNode Pages: 1 -->
-<svg width="257pt" height="433pt"
- viewBox="0.00 0.00 257.00 433.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 429)">
+<svg width="257pt" height="459pt"
+ viewBox="0.00 0.00 257.00 459.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 455)">
 <title>tvm::TensorMapTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,10 +30,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-202 0,-202 0,-112 156,-112 156,-202"/>
-<text text-anchor="start" x="41" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-228 0,-228 0,-112 156,-112 156,-228"/>
+<text text-anchor="start" x="41" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -41,10 +44,10 @@
 <text text-anchor="start" x="17" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-185 0,-185 156,-185 156,-185 0,-185"/>
+<polygon fill="#666666" stroke="#666666" points="0,-211 0,-211 156,-211 156,-211 0,-211"/>
 <polygon fill="#666666" stroke="#666666" points="0,-155 0,-155 15,-155 15,-155 0,-155"/>
 <polygon fill="#666666" stroke="#666666" points="15,-155 15,-155 156,-155 156,-155 15,-155"/>
-<polygon fill="none" stroke="#666666" points="0,-112 0,-202 156,-202 156,-112 0,-112"/>
+<polygon fill="none" stroke="#666666" points="0,-112 0,-228 156,-228 156,-112 0,-112"/>
 </a>
 </g>
 </g>
@@ -52,8 +55,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-101.82C78,-92.79 78,-83.62 78,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-101.91 78,-111.91 81.5,-101.91 74.5,-101.91"/>
+<path fill="none" stroke="#63b8ff" d="M78,-101.49C78,-92.37 78,-83.32 78,-75.04"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-101.76 78,-111.76 81.5,-101.76 74.5,-101.76"/>
 </a>
 </g>
 </g>
@@ -61,13 +64,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-318.5 9,-318.5 9,-269.5 67,-269.5 67,-318.5"/>
-<text text-anchor="start" x="14" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-301 9,-301 67,-301 67,-301 9,-301"/>
-<polygon fill="#666666" stroke="#666666" points="9,-286 9,-286 67,-286 67,-286 9,-286"/>
-<polygon fill="none" stroke="#666666" points="9,-269.5 9,-318.5 67,-318.5 67,-269.5 9,-269.5"/>
+<polygon fill="white" stroke="transparent" points="67,-344.5 9,-344.5 9,-295.5 67,-295.5 67,-344.5"/>
+<text text-anchor="start" x="14" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-317" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-327 9,-327 67,-327 67,-327 9,-327"/>
+<polygon fill="#666666" stroke="#666666" points="9,-312 9,-312 67,-312 67,-312 9,-312"/>
+<polygon fill="none" stroke="#666666" points="9,-295.5 9,-344.5 67,-344.5 67,-295.5 9,-295.5"/>
 </a>
 </g>
 </g>
@@ -75,8 +78,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.84,-259.8C52.98,-242.44 59.34,-220.98 64.89,-202.23"/>
-<polygon fill="none" stroke="#63b8ff" points="44.45,-258.9 44.97,-269.48 51.16,-260.89 44.45,-258.9"/>
+<path fill="none" stroke="#63b8ff" d="M47.11,-285.29C51.67,-268.43 57.31,-247.55 62.52,-228.27"/>
+<polygon fill="none" stroke="#63b8ff" points="43.66,-284.65 44.43,-295.22 50.41,-286.48 43.66,-284.65"/>
 </a>
 </g>
 </g>
@@ -84,19 +87,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-339 85,-339 85,-249 249,-249 249,-339"/>
-<text text-anchor="start" x="142" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="165" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="89" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="89" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="89" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="102" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="85,-322 85,-322 249,-322 249,-322 85,-322"/>
-<polygon fill="#666666" stroke="#666666" points="85,-307 85,-307 249,-307 249,-307 85,-307"/>
-<polygon fill="none" stroke="#666666" points="85,-249 85,-339 249,-339 249,-249 85,-249"/>
+<polygon fill="white" stroke="transparent" points="249,-365 85,-365 85,-275 249,-275 249,-365"/>
+<text text-anchor="start" x="142" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="165" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="89" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="89" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="89" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="85,-348 85,-348 249,-348 249,-348 85,-348"/>
+<polygon fill="#666666" stroke="#666666" points="85,-333 85,-333 249,-333 249,-333 85,-333"/>
+<polygon fill="none" stroke="#666666" points="85,-275 85,-365 249,-365 249,-275 85,-275"/>
 </a>
 </g>
 </g>
@@ -104,23 +107,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.86,-248.8C130.25,-237.26 121.96,-224.68 114.04,-212.67"/>
-<polygon fill="none" stroke="#63b8ff" points="113.81,-212.32 107.17,-209.51 107.21,-202.3 113.85,-205.11 113.81,-212.32"/>
+<path fill="none" stroke="#63b8ff" d="M140.54,-275C133.61,-263.48 125.99,-250.8 118.51,-238.37"/>
+<polygon fill="none" stroke="#63b8ff" points="118.47,-238.3 111.95,-235.22 112.28,-228.01 118.8,-231.09 118.47,-238.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="142.5" y="-223" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="144.5" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="204,-425 130,-425 130,-376 204,-376 204,-425"/>
-<text text-anchor="start" x="135" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="165" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="165" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="130,-407.5 130,-407.5 204,-407.5 204,-407.5 130,-407.5"/>
-<polygon fill="#666666" stroke="#666666" points="130,-392.5 130,-392.5 204,-392.5 204,-392.5 130,-392.5"/>
-<polygon fill="none" stroke="#666666" points="130,-376 130,-425 204,-425 204,-376 130,-376"/>
+<polygon fill="white" stroke="transparent" points="204,-451 130,-451 130,-402 204,-402 204,-451"/>
+<text text-anchor="start" x="135" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="165" y="-423.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="165" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="130,-433.5 130,-433.5 204,-433.5 204,-433.5 130,-433.5"/>
+<polygon fill="#666666" stroke="#666666" points="130,-418.5 130,-418.5 204,-418.5 204,-418.5 130,-418.5"/>
+<polygon fill="none" stroke="#666666" points="130,-402 130,-451 204,-451 204,-402 130,-402"/>
 </a>
 </g>
 </g>
@@ -128,8 +131,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M167,-365.59C167,-357.16 167,-348.01 167,-339.18"/>
-<polygon fill="none" stroke="#63b8ff" points="163.5,-365.79 167,-375.79 170.5,-365.79 163.5,-365.79"/>
+<path fill="none" stroke="#63b8ff" d="M167,-391.59C167,-383.16 167,-374.01 167,-365.18"/>
+<polygon fill="none" stroke="#63b8ff" points="163.5,-391.79 167,-401.79 170.5,-391.79 163.5,-391.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode__inherit__graph.svg
index a8af142e7c6..13865e3d418 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TensorMapTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TensorMapTypeNode Pages: 1 -->
-<svg width="164pt" height="309pt"
- viewBox="0.00 0.00 164.00 309.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 305)">
+<svg width="164pt" height="335pt"
+ viewBox="0.00 0.00 164.00 335.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 331)">
 <title>tvm::TensorMapTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,12 +30,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-216 0,-216 0,-111 156,-111 156,-216"/>
-<text text-anchor="start" x="41" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-242 0,-242 0,-111 156,-111 156,-242"/>
+<text text-anchor="start" x="41" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -43,10 +46,10 @@
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-198.5 0,-198.5 156,-198.5 156,-198.5 0,-198.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-224.5 0,-224.5 156,-224.5 156,-224.5 0,-224.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-153.5 0,-153.5 15,-153.5 15,-153.5 0,-153.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-153.5 15,-153.5 156,-153.5 156,-153.5 15,-153.5"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-216 156,-216 156,-111 0,-111"/>
+<polygon fill="none" stroke="#666666" points="0,-111 0,-242 156,-242 156,-111 0,-111"/>
 </a>
 </g>
 </g>
@@ -54,8 +57,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-100.8C78,-92.08 78,-83.35 78,-75.3"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-100.99 78,-110.99 81.5,-100.99 74.5,-100.99"/>
+<path fill="none" stroke="#63b8ff" d="M78,-100.34C78,-91.62 78,-83.04 78,-75.18"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-100.61 78,-110.61 81.5,-100.61 74.5,-100.61"/>
 </a>
 </g>
 </g>
@@ -63,13 +66,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-301 49,-301 49,-252 107,-252 107,-301"/>
-<text text-anchor="start" x="54" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-258.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-283.5 49,-283.5 107,-283.5 107,-283.5 49,-283.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-268.5 49,-268.5 107,-268.5 107,-268.5 49,-268.5"/>
-<polygon fill="none" stroke="#666666" points="49,-252 49,-301 107,-301 107,-252 49,-252"/>
+<polygon fill="white" stroke="transparent" points="107,-327 49,-327 49,-278 107,-278 107,-327"/>
+<text text-anchor="start" x="54" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-309.5 49,-309.5 107,-309.5 107,-309.5 49,-309.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-294.5 49,-294.5 107,-294.5 107,-294.5 49,-294.5"/>
+<polygon fill="none" stroke="#666666" points="49,-278 49,-327 107,-327 107,-278 49,-278"/>
 </a>
 </g>
 </g>
@@ -77,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-241.85C78,-233.79 78,-225 78,-216.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-241.96 78,-251.96 81.5,-241.96 74.5,-241.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-267.85C78,-259.82 78,-250.98 78,-242.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-267.88 78,-277.88 81.5,-267.88 74.5,-267.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode-members.html
index 2adadf82604..f620c7be7d5 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode-members.html
@@ -81,12 +81,13 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html#af6790064025fe877aac01d55b929215c">fields</a></td><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html">tvm::TupleTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html#ab3e6641d194a70fdb6fe19748b4053e9">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html">tvm::TupleTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html#a1e9cbe8e91816366c181fb888ddc18d9">TupleTypeNode</a>()</td><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html">tvm::TupleTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html#a2e2113ae9a9eea0d91d465262709011b">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.TupleType&quot;, TupleTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html">tvm::TupleTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html#af6790064025fe877aac01d55b929215c">fields</a></td><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html">tvm::TupleTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html#ab3e6641d194a70fdb6fe19748b4053e9">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html">tvm::TupleTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html#a1e9cbe8e91816366c181fb888ddc18d9">TupleTypeNode</a>()</td><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html">tvm::TupleTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html#a2e2113ae9a9eea0d91d465262709011b">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;ir.TupleType&quot;, TupleTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1TupleTypeNode.html">tvm::TupleTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode.html
index 2d97a179943..a63af30e538 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::TupleTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TupleTypeNode__inherit__graph.svg" width="219" height="432"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TupleTypeNode__inherit__graph.svg" width="219" height="467"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::TupleTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TupleTypeNode__coll__graph.svg" width="343" height="598"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TupleTypeNode__coll__graph.svg" width="343" height="632"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -130,6 +130,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode__coll__graph.svg
index fc505332ee8..835d63ae0aa 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TupleTypeNode Pages: 1 -->
-<svg width="257pt" height="448pt"
- viewBox="0.00 0.00 257.00 448.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 444)">
+<svg width="257pt" height="474pt"
+ viewBox="0.00 0.00 257.00 474.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 470)">
 <title>tvm::TupleTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -34,10 +34,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-217 0,-217 0,-127 156,-127 156,-217"/>
-<text text-anchor="start" x="41" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-243 0,-243 0,-127 156,-127 156,-243"/>
+<text text-anchor="start" x="41" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -45,10 +48,10 @@
 <text text-anchor="start" x="17" y="-149" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-200 0,-200 156,-200 156,-200 0,-200"/>
+<polygon fill="#666666" stroke="#666666" points="0,-226 0,-226 156,-226 156,-226 0,-226"/>
 <polygon fill="#666666" stroke="#666666" points="0,-170 0,-170 15,-170 15,-170 0,-170"/>
 <polygon fill="#666666" stroke="#666666" points="15,-170 15,-170 156,-170 156,-170 15,-170"/>
-<polygon fill="none" stroke="#666666" points="0,-127 0,-217 156,-217 156,-127 0,-127"/>
+<polygon fill="none" stroke="#666666" points="0,-127 0,-243 156,-243 156,-127 0,-127"/>
 </a>
 </g>
 </g>
@@ -56,8 +59,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-116.66C78,-107.78 78,-98.68 78,-90.09"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-116.93 78,-126.93 81.5,-116.93 74.5,-116.93"/>
+<path fill="none" stroke="#63b8ff" d="M78,-116.63C78,-107.7 78,-98.72 78,-90.31"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-116.67 78,-126.67 81.5,-116.67 74.5,-116.67"/>
 </a>
 </g>
 </g>
@@ -65,13 +68,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-333.5 9,-333.5 9,-284.5 67,-284.5 67,-333.5"/>
-<text text-anchor="start" x="14" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-316 9,-316 67,-316 67,-316 9,-316"/>
-<polygon fill="#666666" stroke="#666666" points="9,-301 9,-301 67,-301 67,-301 9,-301"/>
-<polygon fill="none" stroke="#666666" points="9,-284.5 9,-333.5 67,-333.5 67,-284.5 9,-284.5"/>
+<polygon fill="white" stroke="transparent" points="67,-359.5 9,-359.5 9,-310.5 67,-310.5 67,-359.5"/>
+<text text-anchor="start" x="14" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-317" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-342 9,-342 67,-342 67,-342 9,-342"/>
+<polygon fill="#666666" stroke="#666666" points="9,-327 9,-327 67,-327 67,-327 9,-327"/>
+<polygon fill="none" stroke="#666666" points="9,-310.5 9,-359.5 67,-359.5 67,-310.5 9,-310.5"/>
 </a>
 </g>
 </g>
@@ -79,8 +82,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.84,-274.8C52.98,-257.44 59.34,-235.98 64.89,-217.23"/>
-<polygon fill="none" stroke="#63b8ff" points="44.45,-273.9 44.97,-284.48 51.16,-275.89 44.45,-273.9"/>
+<path fill="none" stroke="#63b8ff" d="M47.11,-300.29C51.67,-283.43 57.31,-262.55 62.52,-243.27"/>
+<polygon fill="none" stroke="#63b8ff" points="43.66,-299.65 44.43,-310.22 50.41,-301.48 43.66,-299.65"/>
 </a>
 </g>
 </g>
@@ -88,19 +91,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-354 85,-354 85,-264 249,-264 249,-354"/>
-<text text-anchor="start" x="142" y="-342" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="165" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="89" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="89" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="89" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="102" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="85,-337 85,-337 249,-337 249,-337 85,-337"/>
-<polygon fill="#666666" stroke="#666666" points="85,-322 85,-322 249,-322 249,-322 85,-322"/>
-<polygon fill="none" stroke="#666666" points="85,-264 85,-354 249,-354 249,-264 85,-264"/>
+<polygon fill="white" stroke="transparent" points="249,-380 85,-380 85,-290 249,-290 249,-380"/>
+<text text-anchor="start" x="142" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="165" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="89" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="89" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="89" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="102" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="85,-363 85,-363 249,-363 249,-363 85,-363"/>
+<polygon fill="#666666" stroke="#666666" points="85,-348 85,-348 249,-348 249,-348 85,-348"/>
+<polygon fill="none" stroke="#666666" points="85,-290 85,-380 249,-380 249,-290 85,-290"/>
 </a>
 </g>
 </g>
@@ -108,23 +111,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.86,-263.8C130.25,-252.26 121.96,-239.68 114.04,-227.67"/>
-<polygon fill="none" stroke="#63b8ff" points="113.81,-227.32 107.17,-224.51 107.21,-217.3 113.85,-220.11 113.81,-227.32"/>
+<path fill="none" stroke="#63b8ff" d="M140.54,-290C133.61,-278.48 125.99,-265.8 118.51,-253.37"/>
+<polygon fill="none" stroke="#63b8ff" points="118.47,-253.3 111.95,-250.22 112.28,-243.01 118.8,-246.09 118.47,-253.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="142.5" y="-238" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="144.5" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="204,-440 130,-440 130,-391 204,-391 204,-440"/>
-<text text-anchor="start" x="135" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="165" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="165" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="130,-422.5 130,-422.5 204,-422.5 204,-422.5 130,-422.5"/>
-<polygon fill="#666666" stroke="#666666" points="130,-407.5 130,-407.5 204,-407.5 204,-407.5 130,-407.5"/>
-<polygon fill="none" stroke="#666666" points="130,-391 130,-440 204,-440 204,-391 130,-391"/>
+<polygon fill="white" stroke="transparent" points="204,-466 130,-466 130,-417 204,-417 204,-466"/>
+<text text-anchor="start" x="135" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="165" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="165" y="-423.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="130,-448.5 130,-448.5 204,-448.5 204,-448.5 130,-448.5"/>
+<polygon fill="#666666" stroke="#666666" points="130,-433.5 130,-433.5 204,-433.5 204,-433.5 130,-433.5"/>
+<polygon fill="none" stroke="#666666" points="130,-417 130,-466 204,-466 204,-417 130,-417"/>
 </a>
 </g>
 </g>
@@ -132,8 +135,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M167,-380.59C167,-372.16 167,-363.01 167,-354.18"/>
-<polygon fill="none" stroke="#63b8ff" points="163.5,-380.79 167,-390.79 170.5,-380.79 163.5,-380.79"/>
+<path fill="none" stroke="#63b8ff" d="M167,-406.59C167,-398.16 167,-389.01 167,-380.18"/>
+<polygon fill="none" stroke="#63b8ff" points="163.5,-406.79 167,-416.79 170.5,-406.79 163.5,-406.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode__inherit__graph.svg
index 843564e7a78..9889baa97af 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TupleTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TupleTypeNode Pages: 1 -->
-<svg width="164pt" height="324pt"
- viewBox="0.00 0.00 164.00 324.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 320)">
+<svg width="164pt" height="350pt"
+ viewBox="0.00 0.00 164.00 350.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 346)">
 <title>tvm::TupleTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -34,12 +34,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-231 0,-231 0,-126 156,-126 156,-231"/>
-<text text-anchor="start" x="41" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-257 0,-257 0,-126 156,-126 156,-257"/>
+<text text-anchor="start" x="41" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -47,10 +50,10 @@
 <text text-anchor="start" x="17" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-213.5 0,-213.5 156,-213.5 156,-213.5 0,-213.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-239.5 0,-239.5 156,-239.5 156,-239.5 0,-239.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-168.5 0,-168.5 15,-168.5 15,-168.5 0,-168.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-168.5 15,-168.5 156,-168.5 156,-168.5 15,-168.5"/>
-<polygon fill="none" stroke="#666666" points="0,-126 0,-231 156,-231 156,-126 0,-126"/>
+<polygon fill="none" stroke="#666666" points="0,-126 0,-257 156,-257 156,-126 0,-126"/>
 </a>
 </g>
 </g>
@@ -58,8 +61,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-115.83C78,-107.19 78,-98.44 78,-90.21"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-115.91 78,-125.91 81.5,-115.91 74.5,-115.91"/>
+<path fill="none" stroke="#63b8ff" d="M78,-115.68C78,-107 78,-98.37 78,-90.29"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-115.86 78,-125.86 81.5,-115.86 74.5,-115.86"/>
 </a>
 </g>
 </g>
@@ -67,13 +70,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-316 49,-316 49,-267 107,-267 107,-316"/>
-<text text-anchor="start" x="54" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-298.5 49,-298.5 107,-298.5 107,-298.5 49,-298.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-283.5 49,-283.5 107,-283.5 107,-283.5 49,-283.5"/>
-<polygon fill="none" stroke="#666666" points="49,-267 49,-316 107,-316 107,-267 49,-267"/>
+<polygon fill="white" stroke="transparent" points="107,-342 49,-342 49,-293 107,-293 107,-342"/>
+<text text-anchor="start" x="54" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-324.5 49,-324.5 107,-324.5 107,-324.5 49,-324.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-309.5 49,-309.5 107,-309.5 107,-309.5 49,-309.5"/>
+<polygon fill="none" stroke="#666666" points="49,-293 49,-342 107,-342 107,-293 49,-293"/>
 </a>
 </g>
 </g>
@@ -81,8 +84,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-256.85C78,-248.79 78,-240 78,-231.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-256.96 78,-266.96 81.5,-256.96 74.5,-256.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-282.85C78,-274.82 78,-265.98 78,-257.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-282.88 78,-292.88 81.5,-282.88 74.5,-282.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1TypeNode-members.html
index 7bb0fd111c8..84afcf89a60 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TypeNode-members.html
@@ -81,9 +81,10 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a77d3614d6bc9152b82cc67a63cedcd1e">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a77d3614d6bc9152b82cc67a63cedcd1e">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TypeNode.html b/docs/reference/api/doxygen/classtvm_1_1TypeNode.html
index 31ff1951966..f0cf548ced2 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TypeNode.html
@@ -90,12 +90,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::TypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TypeNode__inherit__graph.svg" width="3275" height="672"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TypeNode__inherit__graph.svg" width="3275" height="707"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::TypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TypeNode__coll__graph.svg" width="343" height="428"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1TypeNode__coll__graph.svg" width="343" height="463"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -118,6 +118,8 @@ Public Attributes</h2></td></tr>
 Static Public Attributes</h2></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a> = <a class="e [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a> = <a class= [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca14 [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
@@ -233,6 +235,28 @@ Static Public Attributes</h2></td></tr>
 </table>
 </div><div class="memdoc">
 
+</div>
+</div>
+<a id="a572a584101469f4e16cb36229b25d4d4" name="a572a584101469f4e16cb36229b25d4d4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a572a584101469f4e16cb36229b25d4d4">&#9670;&#160;</a></span>_type_s_eq_hash_subclass_kind_fixed</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a> tvm::TypeNode::_type_s_eq_hash_subclass_kind_fixed = <a class="el" href="classtvm_1_1With.html">true</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
 </div>
 </div>
 <a id="a7b06d502a5162d51bb205691bbb95bb5" name="a7b06d502a5162d51bb205691bbb95bb5"></a>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1TypeNode__coll__graph.svg
index 56f69af94e8..7d6becd88b2 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TypeNode__coll__graph.svg
@@ -4,18 +4,21 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TypeNode Pages: 1 -->
-<svg width="257pt" height="321pt"
- viewBox="0.00 0.00 257.00 321.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 317)">
+<svg width="257pt" height="347pt"
+ viewBox="0.00 0.00 257.00 347.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 343)">
 <title>tvm::TypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Type is the base type of all types.">
-<polygon fill="#999999" stroke="transparent" points="156,-90 0,-90 0,0 156,0 156,-90"/>
-<text text-anchor="start" x="41" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="#999999" stroke="transparent" points="156,-116 0,-116 0,0 156,0 156,-116"/>
+<text text-anchor="start" x="41" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -23,10 +26,10 @@
 <text text-anchor="start" x="17" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-73 0,-73 156,-73 156,-73 0,-73"/>
+<polygon fill="#666666" stroke="#666666" points="0,-99 0,-99 156,-99 156,-99 0,-99"/>
 <polygon fill="#666666" stroke="#666666" points="0,-43 0,-43 15,-43 15,-43 0,-43"/>
 <polygon fill="#666666" stroke="#666666" points="15,-43 15,-43 156,-43 156,-43 15,-43"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-90 156,-90 156,0 0,0"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-116 156,-116 156,0 0,0"/>
 </a>
 </g>
 </g>
@@ -34,13 +37,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-206.5 9,-206.5 9,-157.5 67,-157.5 67,-206.5"/>
-<text text-anchor="start" x="14" y="-194" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-179" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-164" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-189 9,-189 67,-189 67,-189 9,-189"/>
-<polygon fill="#666666" stroke="#666666" points="9,-174 9,-174 67,-174 67,-174 9,-174"/>
-<polygon fill="none" stroke="#666666" points="9,-157.5 9,-206.5 67,-206.5 67,-157.5 9,-157.5"/>
+<polygon fill="white" stroke="transparent" points="67,-232.5 9,-232.5 9,-183.5 67,-183.5 67,-232.5"/>
+<text text-anchor="start" x="14" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-215 9,-215 67,-215 67,-215 9,-215"/>
+<polygon fill="#666666" stroke="#666666" points="9,-200 9,-200 67,-200 67,-200 9,-200"/>
+<polygon fill="none" stroke="#666666" points="9,-183.5 9,-232.5 67,-232.5 67,-183.5 9,-183.5"/>
 </a>
 </g>
 </g>
@@ -48,8 +51,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.84,-147.8C52.98,-130.44 59.34,-108.98 64.89,-90.23"/>
-<polygon fill="none" stroke="#63b8ff" points="44.45,-146.9 44.97,-157.48 51.16,-148.89 44.45,-146.9"/>
+<path fill="none" stroke="#63b8ff" d="M47.11,-173.29C51.67,-156.43 57.31,-135.55 62.52,-116.27"/>
+<polygon fill="none" stroke="#63b8ff" points="43.66,-172.65 44.43,-183.22 50.41,-174.48 43.66,-172.65"/>
 </a>
 </g>
 </g>
@@ -57,19 +60,19 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-227 85,-227 85,-137 249,-137 249,-227"/>
-<text text-anchor="start" x="142" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="165" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="89" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="89" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="89" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="102" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="85,-210 85,-210 249,-210 249,-210 85,-210"/>
-<polygon fill="#666666" stroke="#666666" points="85,-195 85,-195 249,-195 249,-195 85,-195"/>
-<polygon fill="none" stroke="#666666" points="85,-137 85,-227 249,-227 249,-137 85,-137"/>
+<polygon fill="white" stroke="transparent" points="249,-253 85,-253 85,-163 249,-163 249,-253"/>
+<text text-anchor="start" x="142" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="165" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="89" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="89" y="-196" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-196" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="89" y="-181" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-181" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="102" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="85,-236 85,-236 249,-236 249,-236 85,-236"/>
+<polygon fill="#666666" stroke="#666666" points="85,-221 85,-221 249,-221 249,-221 85,-221"/>
+<polygon fill="none" stroke="#666666" points="85,-163 85,-253 249,-253 249,-163 85,-163"/>
 </a>
 </g>
 </g>
@@ -77,23 +80,23 @@
 <g id="edge2_Node000001_Node000003" class="edge">
 <title>Node3&#45;&gt;Node1</title>
 <g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.86,-136.8C130.25,-125.26 121.96,-112.68 114.04,-100.67"/>
-<polygon fill="none" stroke="#63b8ff" points="113.81,-100.32 107.17,-97.51 107.21,-90.3 113.85,-93.11 113.81,-100.32"/>
+<path fill="none" stroke="#63b8ff" d="M140.54,-163C133.61,-151.48 125.99,-138.8 118.51,-126.37"/>
+<polygon fill="none" stroke="#63b8ff" points="118.47,-126.3 111.95,-123.22 112.28,-116.01 118.8,-119.09 118.47,-126.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="142.5" y="-111" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="144.5" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node4 -->
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="204,-313 130,-313 130,-264 204,-264 204,-313"/>
-<text text-anchor="start" x="135" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="165" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="165" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="130,-295.5 130,-295.5 204,-295.5 204,-295.5 130,-295.5"/>
-<polygon fill="#666666" stroke="#666666" points="130,-280.5 130,-280.5 204,-280.5 204,-280.5 130,-280.5"/>
-<polygon fill="none" stroke="#666666" points="130,-264 130,-313 204,-313 204,-264 130,-264"/>
+<polygon fill="white" stroke="transparent" points="204,-339 130,-339 130,-290 204,-290 204,-339"/>
+<text text-anchor="start" x="135" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="165" y="-311.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="165" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="130,-321.5 130,-321.5 204,-321.5 204,-321.5 130,-321.5"/>
+<polygon fill="#666666" stroke="#666666" points="130,-306.5 130,-306.5 204,-306.5 204,-306.5 130,-306.5"/>
+<polygon fill="none" stroke="#666666" points="130,-290 130,-339 204,-339 204,-290 130,-290"/>
 </a>
 </g>
 </g>
@@ -101,8 +104,8 @@
 <g id="edge3_Node000003_Node000004" class="edge">
 <title>Node4&#45;&gt;Node3</title>
 <g id="a_edge3_Node000003_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M167,-253.59C167,-245.16 167,-236.01 167,-227.18"/>
-<polygon fill="none" stroke="#63b8ff" points="163.5,-253.79 167,-263.79 170.5,-253.79 163.5,-253.79"/>
+<path fill="none" stroke="#63b8ff" d="M167,-279.59C167,-271.16 167,-262.01 167,-253.18"/>
+<polygon fill="none" stroke="#63b8ff" points="163.5,-279.79 167,-289.79 170.5,-279.79 163.5,-279.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1TypeNode__inherit__graph.svg
index 67db0a4bf37..d362d511a84 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TypeNode__inherit__graph.svg
@@ -4,20 +4,23 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TypeNode Pages: 1 -->
-<svg width="2456pt" height="504pt"
- viewBox="0.00 0.00 2456.00 504.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 500)">
+<svg width="2456pt" height="530pt"
+ viewBox="0.00 0.00 2456.00 530.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 526)">
 <title>tvm::TypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Type is the base type of all types.">
-<polygon fill="#999999" stroke="transparent" points="1287,-411 1131,-411 1131,-306 1287,-306 1287,-411"/>
-<text text-anchor="start" x="1172" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="1135" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1148" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="1135" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1148" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="#999999" stroke="transparent" points="1287,-437 1131,-437 1131,-306 1287,-306 1287,-437"/>
+<text text-anchor="start" x="1172" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="1135" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="1135" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="1135" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="1148" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="1135" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="1148" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="1135" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -25,10 +28,10 @@
 <text text-anchor="start" x="1148" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="1135" y="-312.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="1148" y="-312.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1131,-393.5 1131,-393.5 1287,-393.5 1287,-393.5 1131,-393.5"/>
+<polygon fill="#666666" stroke="#666666" points="1131,-419.5 1131,-419.5 1287,-419.5 1287,-419.5 1131,-419.5"/>
 <polygon fill="#666666" stroke="#666666" points="1131,-348.5 1131,-348.5 1146,-348.5 1146,-348.5 1131,-348.5"/>
 <polygon fill="#666666" stroke="#666666" points="1146,-348.5 1146,-348.5 1287,-348.5 1287,-348.5 1146,-348.5"/>
-<polygon fill="none" stroke="#666666" points="1131,-306 1131,-411 1287,-411 1287,-306 1131,-306"/>
+<polygon fill="none" stroke="#666666" points="1131,-306 1131,-437 1287,-437 1287,-306 1131,-306"/>
 </a>
 </g>
 </g>
@@ -58,8 +61,8 @@
 <g id="edge2_Node000001_Node000003" class="edge">
 <title>Node1&#45;&gt;Node3</title>
 <g id="a_edge2_Node000001_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1120.48,-354.52C883.32,-345.92 246.07,-318.52 165,-270 131.2,-249.77 108.13,-210.76 94.29,-180.02"/>
-<polygon fill="none" stroke="#63b8ff" points="1120.67,-358.03 1130.79,-354.89 1120.92,-351.03 1120.67,-358.03"/>
+<path fill="none" stroke="#63b8ff" d="M1120.46,-366.37C883.24,-354.69 245.86,-319.07 165,-270 131.45,-249.64 108.41,-210.85 94.51,-180.22"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.61,-369.88 1130.77,-366.88 1120.95,-362.89 1120.61,-369.88"/>
 </a>
 </g>
 </g>
@@ -85,8 +88,8 @@
 <g id="edge3_Node000001_Node000004" class="edge">
 <title>Node1&#45;&gt;Node4</title>
 <g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1120.7,-358.12C926.36,-357.98 468.56,-349 339,-270 302.65,-247.83 278.61,-204.07 265.19,-172.58"/>
-<polygon fill="none" stroke="#63b8ff" points="1120.88,-361.62 1130.88,-358.12 1120.88,-354.62 1120.88,-361.62"/>
+<path fill="none" stroke="#63b8ff" d="M1120.65,-369.67C926.19,-366.38 468.18,-350.09 339,-270 302.93,-247.64 278.9,-204.14 265.4,-172.76"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.77,-373.18 1130.83,-369.84 1120.89,-366.18 1120.77,-373.18"/>
 </a>
 </g>
 </g>
@@ -116,8 +119,8 @@
 <g id="edge4_Node000001_Node000005" class="edge">
 <title>Node1&#45;&gt;Node5</title>
 <g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1120.66,-355.53C956.58,-350.4 612.42,-332.33 513,-270 479.86,-249.23 456.84,-210.69 442.84,-180.25"/>
-<polygon fill="none" stroke="#63b8ff" points="1120.62,-359.03 1130.72,-355.84 1120.83,-352.03 1120.62,-359.03"/>
+<path fill="none" stroke="#63b8ff" d="M1120.91,-366.75C956.85,-358.33 612.16,-333.44 513,-270 480.06,-248.92 457.01,-210.41 442.95,-180.07"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.81,-370.25 1130.97,-367.26 1121.16,-363.26 1120.81,-370.25"/>
 </a>
 </g>
 </g>
@@ -145,8 +148,8 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node1&#45;&gt;Node6</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1120.52,-351.26C990.81,-340.69 756.85,-315.82 687,-270 651.63,-246.8 627.53,-203.69 613.82,-172.62"/>
-<polygon fill="none" stroke="#63b8ff" points="1120.58,-354.77 1130.82,-352.09 1121.14,-347.8 1120.58,-354.77"/>
+<path fill="none" stroke="#63b8ff" d="M1120.46,-361.88C990.66,-347.85 756.6,-316.86 687,-270 652.03,-246.45 627.91,-203.63 614.09,-172.72"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.45,-365.4 1130.77,-362.98 1121.19,-358.44 1120.45,-365.4"/>
 </a>
 </g>
 </g>
@@ -172,8 +175,8 @@
 <g id="edge6_Node000001_Node000007" class="edge">
 <title>Node1&#45;&gt;Node7</title>
 <g id="a_edge6_Node000001_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1120.58,-353.08C1045.39,-345.42 937.72,-324.84 861,-270 826.82,-245.56 802.62,-203.12 788.57,-172.54"/>
-<polygon fill="none" stroke="#63b8ff" points="1120.68,-356.61 1130.97,-354.08 1121.35,-349.64 1120.68,-356.61"/>
+<path fill="none" stroke="#63b8ff" d="M1120.92,-362.34C1045.63,-351.59 937.62,-326.82 861,-270 827.36,-245.05 803.13,-202.92 788.92,-172.55"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.47,-365.81 1130.86,-363.71 1121.42,-358.88 1120.47,-365.81"/>
 </a>
 </g>
 </g>
@@ -203,8 +206,8 @@
 <g id="edge7_Node000001_Node000008" class="edge">
 <title>Node1&#45;&gt;Node8</title>
 <g id="a_edge7_Node000001_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1121.69,-324.63C1092.05,-310.73 1060.11,-292.49 1035,-270 1006.9,-244.83 984.1,-208.59 968.91,-180.14"/>
-<polygon fill="none" stroke="#63b8ff" points="1120.25,-327.82 1130.8,-328.8 1123.17,-321.45 1120.25,-327.82"/>
+<path fill="none" stroke="#63b8ff" d="M1121.82,-330.63C1092.19,-314.48 1060.22,-293.94 1035,-270 1007.84,-244.22 985.13,-208.37 969.73,-180.23"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.46,-333.87 1130.93,-335.5 1123.76,-327.7 1120.46,-333.87"/>
 </a>
 </g>
 </g>
@@ -230,8 +233,8 @@
 <g id="edge8_Node000001_Node000009" class="edge">
 <title>Node1&#45;&gt;Node9</title>
 <g id="a_edge8_Node000001_Node000009"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1185.05,-296.53C1169.48,-256.88 1149.68,-206.47 1136.46,-172.82"/>
-<polygon fill="none" stroke="#63b8ff" points="1181.8,-297.82 1188.71,-305.85 1188.31,-295.26 1181.8,-297.82"/>
+<path fill="none" stroke="#63b8ff" d="M1181.49,-296.34C1166.21,-255.16 1147.88,-205.75 1135.64,-172.77"/>
+<polygon fill="none" stroke="#63b8ff" points="1178.24,-297.64 1185,-305.8 1184.8,-295.21 1178.24,-297.64"/>
 </a>
 </g>
 </g>
@@ -267,8 +270,8 @@
 <g id="edge9_Node000001_Node000010" class="edge">
 <title>Node1&#45;&gt;Node10</title>
 <g id="a_edge9_Node000001_Node000010"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1233.06,-296.25C1244.44,-267.26 1258.07,-232.57 1269.72,-202.9"/>
-<polygon fill="none" stroke="#63b8ff" points="1229.69,-295.26 1229.29,-305.85 1236.2,-297.82 1229.69,-295.26"/>
+<path fill="none" stroke="#63b8ff" d="M1236.56,-296.21C1247.71,-266.16 1260.48,-231.74 1271.32,-202.53"/>
+<polygon fill="none" stroke="#63b8ff" points="1233.2,-295.21 1233,-305.8 1239.76,-297.64 1233.2,-295.21"/>
 </a>
 </g>
 </g>
@@ -294,8 +297,8 @@
 <g id="edge10_Node000001_Node000011" class="edge">
 <title>Node1&#45;&gt;Node11</title>
 <g id="a_edge10_Node000001_Node000011"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1296.59,-323.68C1325.97,-309.78 1357.66,-291.78 1383,-270 1415.01,-242.49 1441.76,-202 1458.63,-172.74"/>
-<polygon fill="none" stroke="#63b8ff" points="1294.75,-320.67 1287.14,-328.04 1297.69,-327.02 1294.75,-320.67"/>
+<path fill="none" stroke="#63b8ff" d="M1296.45,-329.6C1325.81,-313.47 1357.53,-293.21 1383,-270 1414.09,-241.67 1440.89,-201.5 1458.03,-172.54"/>
+<polygon fill="none" stroke="#63b8ff" points="1294.56,-326.65 1287.43,-334.48 1297.89,-332.8 1294.56,-326.65"/>
 </a>
 </g>
 </g>
@@ -327,8 +330,8 @@
 <g id="edge11_Node000001_Node000012" class="edge">
 <title>Node1&#45;&gt;Node12</title>
 <g id="a_edge11_Node000001_Node000012"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1297.63,-354.4C1376.38,-347.67 1491.36,-327.72 1573,-270 1601.99,-249.5 1623.74,-216 1638.24,-187.63"/>
-<polygon fill="none" stroke="#63b8ff" points="1296.93,-350.94 1287.24,-355.22 1297.49,-357.92 1296.93,-350.94"/>
+<path fill="none" stroke="#63b8ff" d="M1297.76,-363.73C1376.61,-353.86 1491.63,-329.6 1573,-270 1601.53,-249.1 1623.22,-215.78 1637.81,-187.6"/>
+<polygon fill="none" stroke="#63b8ff" points="1296.88,-360.31 1287.37,-364.98 1297.71,-367.26 1296.88,-360.31"/>
 </a>
 </g>
 </g>
@@ -368,8 +371,8 @@
 <g id="edge12_Node000001_Node000013" class="edge">
 <title>Node1&#45;&gt;Node13</title>
 <g id="a_edge12_Node000001_Node000013"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1297.37,-351.77C1430.44,-341.72 1674.44,-317.34 1747,-270 1766.98,-256.97 1783.35,-237.57 1796.29,-217.55"/>
-<polygon fill="none" stroke="#63b8ff" points="1296.92,-348.3 1287.2,-352.53 1297.44,-355.28 1296.92,-348.3"/>
+<path fill="none" stroke="#63b8ff" d="M1297.17,-362.49C1430.27,-349.01 1674.66,-318.42 1747,-270 1766.71,-256.81 1782.96,-237.48 1795.86,-217.59"/>
+<polygon fill="none" stroke="#63b8ff" points="1296.6,-359.03 1287,-363.51 1297.3,-366 1296.6,-359.03"/>
 </a>
 </g>
 </g>
@@ -406,8 +409,8 @@
 <g id="edge13_Node000001_Node000014" class="edge">
 <title>Node1&#45;&gt;Node14</title>
 <g id="a_edge13_Node000001_Node000014"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1297.45,-355.82C1464.51,-351.16 1818.85,-333.85 1921,-270 1944.52,-255.3 1962.94,-231.64 1976.66,-208.26"/>
-<polygon fill="none" stroke="#63b8ff" points="1297.11,-352.32 1287.21,-356.09 1297.3,-359.32 1297.11,-352.32"/>
+<path fill="none" stroke="#63b8ff" d="M1297.26,-367.07C1464.32,-359.13 1819.13,-334.95 1921,-270 1944.39,-255.09 1962.78,-231.38 1976.51,-208.02"/>
+<polygon fill="none" stroke="#63b8ff" points="1297.09,-363.57 1287.26,-367.54 1297.42,-370.57 1297.09,-363.57"/>
 </a>
 </g>
 </g>
@@ -433,8 +436,8 @@
 <g id="edge14_Node000001_Node000015" class="edge">
 <title>Node1&#45;&gt;Node15</title>
 <g id="a_edge14_Node000001_Node000015"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1297.33,-357.97C1494.02,-357.56 1961.28,-348.13 2095,-270 2132.66,-248 2158.96,-204.2 2173.97,-172.66"/>
-<polygon fill="none" stroke="#63b8ff" points="1297.31,-354.47 1287.32,-357.98 1297.32,-361.47 1297.31,-354.47"/>
+<path fill="none" stroke="#63b8ff" d="M1297.02,-369.55C1493.6,-366.02 1961.56,-349.26 2095,-270 2132.5,-247.72 2158.83,-203.98 2173.9,-172.53"/>
+<polygon fill="none" stroke="#63b8ff" points="1296.95,-366.05 1287.01,-369.73 1297.07,-373.05 1296.95,-366.05"/>
 </a>
 </g>
 </g>
@@ -488,8 +491,8 @@
 <g id="edge15_Node000001_Node000016" class="edge">
 <title>Node1&#45;&gt;Node16</title>
 <g id="a_edge15_Node000001_Node000016"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1297.54,-354.74C1539.47,-346.59 2199.27,-319.98 2283,-270 2285.98,-268.22 2288.87,-266.3 2291.68,-264.25"/>
-<polygon fill="none" stroke="#63b8ff" points="1297.25,-351.25 1287.38,-355.08 1297.49,-358.25 1297.25,-351.25"/>
+<path fill="none" stroke="#63b8ff" d="M1297.56,-366.62C1539.55,-355.42 2199.48,-320.53 2283,-270 2286.09,-268.13 2289.08,-266.11 2291.99,-263.95"/>
+<polygon fill="none" stroke="#63b8ff" points="1297.22,-363.14 1287.39,-367.09 1297.55,-370.13 1297.22,-363.14"/>
 </a>
 </g>
 </g>
@@ -497,13 +500,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1238,-496 1180,-496 1180,-447 1238,-447 1238,-496"/>
-<text text-anchor="start" x="1185" y="-483.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="1207" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="1207" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="1180,-478.5 1180,-478.5 1238,-478.5 1238,-478.5 1180,-478.5"/>
-<polygon fill="#666666" stroke="#666666" points="1180,-463.5 1180,-463.5 1238,-463.5 1238,-463.5 1180,-463.5"/>
-<polygon fill="none" stroke="#666666" points="1180,-447 1180,-496 1238,-496 1238,-447 1180,-447"/>
+<polygon fill="white" stroke="transparent" points="1238,-522 1180,-522 1180,-473 1238,-473 1238,-522"/>
+<text text-anchor="start" x="1185" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="1207" y="-494.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1207" y="-479.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="1180,-504.5 1180,-504.5 1238,-504.5 1238,-504.5 1180,-504.5"/>
+<polygon fill="#666666" stroke="#666666" points="1180,-489.5 1180,-489.5 1238,-489.5 1238,-489.5 1180,-489.5"/>
+<polygon fill="none" stroke="#666666" points="1180,-473 1180,-522 1238,-522 1238,-473 1180,-473"/>
 </a>
 </g>
 </g>
@@ -511,8 +514,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1209,-436.85C1209,-428.79 1209,-420 1209,-411.32"/>
-<polygon fill="none" stroke="#63b8ff" points="1205.5,-436.96 1209,-446.96 1212.5,-436.96 1205.5,-436.96"/>
+<path fill="none" stroke="#63b8ff" d="M1209,-462.85C1209,-454.82 1209,-445.98 1209,-437.06"/>
+<polygon fill="none" stroke="#63b8ff" points="1205.5,-462.88 1209,-472.88 1212.5,-462.88 1205.5,-462.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1VarNode-members.html b/docs/reference/api/doxygen/classtvm_1_1VarNode-members.html
index 4259ce555da..8b5a6cc08bc 100644
--- a/docs/reference/api/doxygen/classtvm_1_1VarNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1VarNode-members.html
@@ -80,13 +80,14 @@ $(function() {
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#a189deb7019df8af48603e9c430077af6">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#ad34fcb6cd6adc1608f9c4011921f2f74">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#aa2e3641bec37fa8594944046d9cc8379">name</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#ac1f55810a6cf46f7659a8a1bc3561db8">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">span</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#a071758448cb35970df307942d69425e3">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Var&quot;, VarNode, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">tvm::ExprNode::TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Expr&quot;, ExprNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">ty</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#a9b7101f10e0b662472ee35546c704fa6">_type_child_slots_can_overflow</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#ad34fcb6cd6adc1608f9c4011921f2f74">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#aa2e3641bec37fa8594944046d9cc8379">name</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#ac1f55810a6cf46f7659a8a1bc3561db8">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">span</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#a071758448cb35970df307942d69425e3">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Var&quot;, VarNode, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">tvm::ExprNode::TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Expr&quot;, ExprNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">ty</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1VarNode.html b/docs/reference/api/doxygen/classtvm_1_1VarNode.html
index d36f789e0cd..d2fbe27a6e5 100644
--- a/docs/reference/api/doxygen/classtvm_1_1VarNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1VarNode.html
@@ -90,12 +90,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::VarNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1VarNode__inherit__graph.svg" width="219" height="620"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1VarNode__inherit__graph.svg" width="219" height="655"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::VarNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1VarNode__coll__graph.svg" width="603" height="618"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1VarNode__coll__graph.svg" width="603" height="652"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -133,6 +133,8 @@ Static Public Attributes</h2></td></tr>
 <tr class="separator:ad34fcb6cd6adc1608f9c4011921f2f74"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a189deb7019df8af48603e9c430077af6" id="r_a189deb7019df8af48603e9c430077af6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1VarNode.html#a189deb7019df8af48603e9c430077 [...]
 <tr class="separator:a189deb7019df8af48603e9c430077af6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b7101f10e0b662472ee35546c704fa6" id="r_a9b7101f10e0b662472ee35546c704fa6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1VarNode.html#a9b7101f10e0b662472ee35546c704fa6">_type_child_slots_can_overflow</a> = <a class="el" h [...]
+<tr class="separator:a9b7101f10e0b662472ee35546c704fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1ExprNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1ExprNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td></tr>
 <tr class="memitem:a549f3165583edbbc9a13c6d796e7b298 inherit pub_static_attribs_classtvm_1_1ExprNode" id="r_a549f3165583edbbc9a13c6d796e7b298"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d7 [...]
 <tr class="separator:a549f3165583edbbc9a13c6d796e7b298 inherit pub_static_attribs_classtvm_1_1ExprNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -223,6 +225,28 @@ Static Public Attributes</h2></td></tr>
 </table>
 </div><div class="memdoc">
 
+</div>
+</div>
+<a id="a9b7101f10e0b662472ee35546c704fa6" name="a9b7101f10e0b662472ee35546c704fa6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9b7101f10e0b662472ee35546c704fa6">&#9670;&#160;</a></span>_type_child_slots_can_overflow</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a> tvm::VarNode::_type_child_slots_can_overflow = <a class="el" href="classtvm_1_1With.html">false</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
 </div>
 </div>
 <a id="ad34fcb6cd6adc1608f9c4011921f2f74" name="ad34fcb6cd6adc1608f9c4011921f2f74"></a>
diff --git a/docs/reference/api/doxygen/classtvm_1_1VarNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1VarNode__coll__graph.svg
index b8b05a37848..54424a5f130 100644
--- a/docs/reference/api/doxygen/classtvm_1_1VarNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1VarNode__coll__graph.svg
@@ -4,31 +4,34 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::VarNode Pages: 1 -->
-<svg width="452pt" height="463pt"
- viewBox="0.00 0.00 451.50 463.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 459)">
+<svg width="452pt" height="489pt"
+ viewBox="0.00 0.00 451.50 489.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 485)">
 <title>tvm::VarNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="A local variable in the IR.">
-<polygon fill="#999999" stroke="transparent" points="236,-105 80,-105 80,0 236,0 236,-105"/>
-<text text-anchor="start" x="124.5" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
-<text text-anchor="start" x="84" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
-<text text-anchor="start" x="84" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="84" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<polygon fill="#999999" stroke="transparent" points="236,-131 80,-131 80,0 236,0 236,-131"/>
+<text text-anchor="start" x="124.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
+<text text-anchor="start" x="84" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
+<text text-anchor="start" x="84" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="84" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="84" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-58.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots_can</text>
+<text text-anchor="start" x="97" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
 <text text-anchor="start" x="84" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="97" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
 <text text-anchor="start" x="97" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="84" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="97" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="80,-87.5 80,-87.5 236,-87.5 236,-87.5 80,-87.5"/>
+<polygon fill="#666666" stroke="#666666" points="80,-113.5 80,-113.5 236,-113.5 236,-113.5 80,-113.5"/>
 <polygon fill="#666666" stroke="#666666" points="80,-42.5 80,-42.5 95,-42.5 95,-42.5 80,-42.5"/>
 <polygon fill="#666666" stroke="#666666" points="95,-42.5 95,-42.5 236,-42.5 236,-42.5 95,-42.5"/>
-<polygon fill="none" stroke="#666666" points="80,0 80,-105 236,-105 236,0 80,0"/>
+<polygon fill="none" stroke="#666666" points="80,0 80,-131 236,-131 236,0 80,0"/>
 </a>
 </g>
 </g>
@@ -36,21 +39,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1ExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="transparent" points="236,-232 80,-232 80,-142 236,-142 236,-232"/>
-<text text-anchor="start" x="121.5" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
-<text text-anchor="start" x="84" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="84" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<polygon fill="white" stroke="transparent" points="236,-258 80,-258 80,-168 236,-168 236,-258"/>
+<text text-anchor="start" x="121.5" y="-246" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
+<text text-anchor="start" x="84" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="84" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="84" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="97" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="84" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="97" y="-164" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="84" y="-149" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-149" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="80,-215 80,-215 236,-215 236,-215 80,-215"/>
-<polygon fill="#666666" stroke="#666666" points="80,-185 80,-185 95,-185 95,-185 80,-185"/>
-<polygon fill="#666666" stroke="#666666" points="95,-185 95,-185 236,-185 236,-185 95,-185"/>
-<polygon fill="none" stroke="#666666" points="80,-142 80,-232 236,-232 236,-142 80,-142"/>
+<text text-anchor="start" x="97" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="80,-241 80,-241 236,-241 236,-241 80,-241"/>
+<polygon fill="#666666" stroke="#666666" points="80,-211 80,-211 95,-211 95,-211 80,-211"/>
+<polygon fill="#666666" stroke="#666666" points="95,-211 95,-211 236,-211 236,-211 95,-211"/>
+<polygon fill="none" stroke="#666666" points="80,-168 80,-258 236,-258 236,-168 80,-168"/>
 </a>
 </g>
 </g>
@@ -58,8 +61,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158,-131.76C158,-122.99 158,-113.94 158,-105.23"/>
-<polygon fill="none" stroke="#63b8ff" points="154.5,-131.88 158,-141.88 161.5,-131.88 154.5,-131.88"/>
+<path fill="none" stroke="#63b8ff" d="M158,-157.9C158,-149.16 158,-140.03 158,-131.07"/>
+<polygon fill="none" stroke="#63b8ff" points="154.5,-157.95 158,-167.95 161.5,-157.95 154.5,-157.95"/>
 </a>
 </g>
 </g>
@@ -67,13 +70,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-348.5 0,-348.5 0,-299.5 58,-299.5 58,-348.5"/>
-<text text-anchor="start" x="5" y="-336" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-331 0,-331 58,-331 58,-331 0,-331"/>
-<polygon fill="#666666" stroke="#666666" points="0,-316 0,-316 58,-316 58,-316 0,-316"/>
-<polygon fill="none" stroke="#666666" points="0,-299.5 0,-348.5 58,-348.5 58,-299.5 0,-299.5"/>
+<polygon fill="white" stroke="transparent" points="58,-374.5 0,-374.5 0,-325.5 58,-325.5 58,-374.5"/>
+<text text-anchor="start" x="5" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-357 0,-357 58,-357 58,-357 0,-357"/>
+<polygon fill="#666666" stroke="#666666" points="0,-342 0,-342 58,-342 58,-342 0,-342"/>
+<polygon fill="none" stroke="#666666" points="0,-325.5 0,-374.5 58,-374.5 58,-325.5 0,-325.5"/>
 </a>
 </g>
 </g>
@@ -81,8 +84,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M55.5,-291.74C59.31,-287.42 63.22,-283.07 67,-279 81.45,-263.45 97.71,-246.91 112.44,-232.26"/>
-<polygon fill="none" stroke="#63b8ff" points="52.73,-289.59 48.8,-299.43 58.01,-294.19 52.73,-289.59"/>
+<path fill="none" stroke="#63b8ff" d="M55.5,-317.74C59.31,-313.42 63.22,-309.07 67,-305 81.45,-289.45 97.71,-272.91 112.44,-258.26"/>
+<polygon fill="none" stroke="#63b8ff" points="52.73,-315.59 48.8,-325.43 58.01,-320.19 52.73,-315.59"/>
 </a>
 </g>
 </g>
@@ -90,19 +93,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-369 76,-369 76,-279 240,-279 240,-369"/>
-<text text-anchor="start" x="133" y="-357" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-342" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-352 76,-352 240,-352 240,-352 76,-352"/>
-<polygon fill="#666666" stroke="#666666" points="76,-337 76,-337 240,-337 240,-337 76,-337"/>
-<polygon fill="none" stroke="#666666" points="76,-279 76,-369 240,-369 240,-279 76,-279"/>
+<polygon fill="white" stroke="transparent" points="240,-395 76,-395 76,-305 240,-305 240,-395"/>
+<text text-anchor="start" x="133" y="-383" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-378 76,-378 240,-378 240,-378 76,-378"/>
+<polygon fill="#666666" stroke="#666666" points="76,-363 76,-363 240,-363 240,-363 76,-363"/>
+<polygon fill="none" stroke="#666666" points="76,-305 76,-395 240,-395 240,-305 76,-305"/>
 </a>
 </g>
 </g>
@@ -110,23 +113,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158,-278.8C158,-267.84 158,-255.95 158,-244.5"/>
-<polygon fill="none" stroke="#63b8ff" points="158,-244.3 154,-238.3 158,-232.3 162,-238.3 158,-244.3"/>
+<path fill="none" stroke="#63b8ff" d="M158,-304.8C158,-293.84 158,-281.95 158,-270.5"/>
+<polygon fill="none" stroke="#63b8ff" points="158,-270.3 154,-264.3 158,-258.3 162,-264.3 158,-270.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="175.5" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="175.5" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="291,-455 217,-455 217,-406 291,-406 291,-455"/>
-<text text-anchor="start" x="222" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="252" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="252" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="217,-437.5 217,-437.5 291,-437.5 291,-437.5 217,-437.5"/>
-<polygon fill="#666666" stroke="#666666" points="217,-422.5 217,-422.5 291,-422.5 291,-422.5 217,-422.5"/>
-<polygon fill="none" stroke="#666666" points="217,-406 217,-455 291,-455 291,-406 217,-406"/>
+<polygon fill="white" stroke="transparent" points="291,-481 217,-481 217,-432 291,-432 291,-481"/>
+<text text-anchor="start" x="222" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="252" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="252" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="217,-463.5 217,-463.5 291,-463.5 291,-463.5 217,-463.5"/>
+<polygon fill="#666666" stroke="#666666" points="217,-448.5 217,-448.5 291,-448.5 291,-448.5 217,-448.5"/>
+<polygon fill="none" stroke="#666666" points="217,-432 217,-481 291,-481 291,-432 217,-432"/>
 </a>
 </g>
 </g>
@@ -134,8 +137,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M225.4,-398.37C216.98,-389.2 207.6,-379 198.59,-369.18"/>
-<polygon fill="none" stroke="#63b8ff" points="222.87,-400.79 232.22,-405.79 228.03,-396.06 222.87,-400.79"/>
+<path fill="none" stroke="#63b8ff" d="M225.4,-424.37C216.98,-415.2 207.6,-405 198.59,-395.18"/>
+<polygon fill="none" stroke="#63b8ff" points="222.87,-426.79 232.22,-431.79 228.03,-422.06 222.87,-426.79"/>
 </a>
 </g>
 </g>
@@ -143,19 +146,19 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="transparent" points="443.5,-369 258.5,-369 258.5,-279 443.5,-279 443.5,-369"/>
-<text text-anchor="start" x="327" y="-357" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="349.5" y="-342" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="263" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<polygon fill="white" stroke="transparent" points="443.5,-395 258.5,-395 258.5,-305 443.5,-305 443.5,-395"/>
+<text text-anchor="start" x="327" y="-383" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="349.5" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="263" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="263" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="276" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
 <text text-anchor="start" x="263" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="276" y="-301" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="263" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="259,-352 259,-352 444,-352 444,-352 259,-352"/>
-<polygon fill="#666666" stroke="#666666" points="259,-337 259,-337 444,-337 444,-337 259,-337"/>
-<polygon fill="none" stroke="#666666" points="258.5,-279 258.5,-369 443.5,-369 443.5,-279 258.5,-279"/>
+<text text-anchor="start" x="276" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="259,-378 259,-378 444,-378 444,-378 259,-378"/>
+<polygon fill="#666666" stroke="#666666" points="259,-363 259,-363 444,-363 444,-363 259,-363"/>
+<polygon fill="none" stroke="#666666" points="258.5,-305 258.5,-395 443.5,-395 443.5,-305 258.5,-305"/>
 </a>
 </g>
 </g>
@@ -163,8 +166,8 @@
 <g id="edge6_Node000006_Node000005" class="edge">
 <title>Node5&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M282.9,-398.37C291.41,-389.2 300.88,-379 309.99,-369.18"/>
-<polygon fill="none" stroke="#63b8ff" points="280.25,-396.08 276.01,-405.79 285.38,-400.84 280.25,-396.08"/>
+<path fill="none" stroke="#63b8ff" d="M282.9,-424.37C291.41,-415.2 300.88,-405 309.99,-395.18"/>
+<polygon fill="none" stroke="#63b8ff" points="280.25,-422.08 276.01,-431.79 285.38,-426.84 280.25,-422.08"/>
 </a>
 </g>
 </g>
@@ -172,11 +175,11 @@
 <g id="edge5_Node000002_Node000006" class="edge">
 <title>Node6&#45;&gt;Node2</title>
 <g id="a_edge5_Node000002_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M288.07,-278.98C269.89,-266.26 249.89,-252.28 231.14,-239.16"/>
-<polygon fill="none" stroke="#63b8ff" points="231.01,-239.07 223.8,-238.91 221.17,-232.19 228.38,-232.35 231.01,-239.07"/>
+<path fill="none" stroke="#63b8ff" d="M288.07,-304.98C269.89,-292.26 249.89,-278.28 231.14,-265.16"/>
+<polygon fill="none" stroke="#63b8ff" points="231.01,-265.07 223.8,-264.91 221.17,-258.19 228.38,-258.35 231.01,-265.07"/>
 </a>
 </g>
-<text text-anchor="middle" x="271" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ty</text>
+<text text-anchor="middle" x="271" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ty</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1VarNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1VarNode__inherit__graph.svg
index e52dcaabad1..2a724ce6478 100644
--- a/docs/reference/api/doxygen/classtvm_1_1VarNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1VarNode__inherit__graph.svg
@@ -4,31 +4,34 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::VarNode Pages: 1 -->
-<svg width="164pt" height="465pt"
- viewBox="0.00 0.00 164.00 465.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 461)">
+<svg width="164pt" height="491pt"
+ viewBox="0.00 0.00 164.00 491.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 487)">
 <title>tvm::VarNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="A local variable in the IR.">
-<polygon fill="#999999" stroke="transparent" points="156,-216 0,-216 0,-111 156,-111 156,-216"/>
-<text text-anchor="start" x="44.5" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
-<text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<polygon fill="#999999" stroke="transparent" points="156,-242 0,-242 0,-111 156,-111 156,-242"/>
+<text text-anchor="start" x="44.5" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="4" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots_can</text>
+<text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
 <text text-anchor="start" x="4" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-198.5 0,-198.5 156,-198.5 156,-198.5 0,-198.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-224.5 0,-224.5 156,-224.5 156,-224.5 0,-224.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-153.5 0,-153.5 15,-153.5 15,-153.5 0,-153.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-153.5 15,-153.5 156,-153.5 156,-153.5 15,-153.5"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-216 156,-216 156,-111 0,-111"/>
+<polygon fill="none" stroke="#666666" points="0,-111 0,-242 156,-242 156,-111 0,-111"/>
 </a>
 </g>
 </g>
@@ -56,8 +59,8 @@
 <g id="edge3_Node000001_Node000004" class="edge">
 <title>Node1&#45;&gt;Node4</title>
 <g id="a_edge3_Node000001_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-100.8C78,-92.08 78,-83.35 78,-75.3"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-100.99 78,-110.99 81.5,-100.99 74.5,-100.99"/>
+<path fill="none" stroke="#63b8ff" d="M78,-100.34C78,-91.62 78,-83.04 78,-75.18"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-100.61 78,-110.61 81.5,-100.61 74.5,-100.61"/>
 </a>
 </g>
 </g>
@@ -65,25 +68,25 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1ExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="transparent" points="156,-372 0,-372 0,-252 156,-252 156,-372"/>
-<text text-anchor="start" x="41.5" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
-<text text-anchor="start" x="4" y="-345" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-345" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-330" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-330" font-family="Helvetica,sans-Serif" font-size="10.00">ty</text>
-<text text-anchor="start" x="4" y="-315" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-315" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="4" y="-300" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-300" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<polygon fill="white" stroke="transparent" points="156,-398 0,-398 0,-278 156,-278 156,-398"/>
+<text text-anchor="start" x="41.5" y="-386" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
+<text text-anchor="start" x="4" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00">ty</text>
+<text text-anchor="start" x="4" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="4" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-300" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-274" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-355 0,-355 156,-355 156,-355 0,-355"/>
-<polygon fill="#666666" stroke="#666666" points="0,-295 0,-295 15,-295 15,-295 0,-295"/>
-<polygon fill="#666666" stroke="#666666" points="15,-295 15,-295 156,-295 156,-295 15,-295"/>
-<polygon fill="none" stroke="#666666" points="0,-252 0,-372 156,-372 156,-252 0,-252"/>
+<text text-anchor="start" x="17" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-381 0,-381 156,-381 156,-381 0,-381"/>
+<polygon fill="#666666" stroke="#666666" points="0,-321 0,-321 15,-321 15,-321 0,-321"/>
+<polygon fill="#666666" stroke="#666666" points="15,-321 15,-321 156,-321 156,-321 15,-321"/>
+<polygon fill="none" stroke="#666666" points="0,-278 0,-398 156,-398 156,-278 0,-278"/>
 </a>
 </g>
 </g>
@@ -91,8 +94,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-241.83C78,-233.25 78,-224.6 78,-216.34"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-241.84 78,-251.84 81.5,-241.84 74.5,-241.84"/>
+<path fill="none" stroke="#63b8ff" d="M78,-267.42C78,-258.98 78,-250.39 78,-242.03"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-267.61 78,-277.61 81.5,-267.61 74.5,-267.61"/>
 </a>
 </g>
 </g>
@@ -100,13 +103,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-457 49,-457 49,-408 107,-408 107,-457"/>
-<text text-anchor="start" x="54" y="-444.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-429.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-439.5 49,-439.5 107,-439.5 107,-439.5 49,-439.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-424.5 49,-424.5 107,-424.5 107,-424.5 49,-424.5"/>
-<polygon fill="none" stroke="#666666" points="49,-408 49,-457 107,-457 107,-408 49,-408"/>
+<polygon fill="white" stroke="transparent" points="107,-483 49,-483 49,-434 107,-434 107,-483"/>
+<text text-anchor="start" x="54" y="-470.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-455.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-465.5 49,-465.5 107,-465.5 107,-465.5 49,-465.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-450.5 49,-450.5 107,-450.5 107,-450.5 49,-450.5"/>
+<polygon fill="none" stroke="#666666" points="49,-434 49,-483 107,-483 107,-434 49,-434"/>
 </a>
 </g>
 </g>
@@ -114,8 +117,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-397.59C78,-389.71 78,-381.09 78,-372.47"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-397.8 78,-407.8 81.5,-397.8 74.5,-397.8"/>
+<path fill="none" stroke="#63b8ff" d="M78,-423.59C78,-415.71 78,-407.09 78,-398.47"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-423.8 78,-433.8 81.5,-423.8 74.5,-423.8"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1arith_1_1ConstraintContext.html b/docs/reference/api/doxygen/classtvm_1_1arith_1_1ConstraintContext.html
index 08f1ec563a8..ec1fac8e497 100644
--- a/docs/reference/api/doxygen/classtvm_1_1arith_1_1ConstraintContext.html
+++ b/docs/reference/api/doxygen/classtvm_1_1arith_1_1ConstraintContext.html
@@ -105,7 +105,7 @@ Friends</h2></td></tr>
 <div class="line">}</div>
 <div class="line"><span class="comment">// constraint no longer in effect.</span></div>
 <div class="line"><a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_ICHECK_NE</a>(<a class="code hl_class" href="classtvm_1_1With.html">analyzer</a>-&gt;modular_set(<a class="code hl_class" href="classtvm_1_1With.html">x</a>)-&gt;coeff, 3);</div>
-<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:372</div></div>
+<div class="ttc" id="aclasstvm_1_1Var_html"><div class="ttname"><a href="classtvm_1_1Var.html">tvm::Var</a></div><div class="ttdoc">Managed reference to VarNode.</div><div class="ttdef"><b>Definition</b> expr.h:375</div></div>
 <div class="ttc" id="aclasstvm_1_1With_html"><div class="ttname"><a href="classtvm_1_1With.html">tvm::With</a></div><div class="ttdoc">RAII wrapper function to enter and exit a context object similar to python's with syntax.</div><div class="ttdef"><b>Definition</b> with_context.h:59</div></div>
 <div class="ttc" id="aclasstvm_1_1arith_1_1Analyzer_html"><div class="ttname"><a href="classtvm_1_1arith_1_1Analyzer.html">tvm::arith::Analyzer</a></div><div class="ttdoc">Managed reference to AnalyzerObj.</div><div class="ttdef"><b>Definition</b> analyzer.h:931</div></div>
 <div class="ttc" id="anamespacetvm_html_a8683adb542beba8ecc69354e50d62ef6"><div class="ttname"><a href="namespacetvm.html#a8683adb542beba8ecc69354e50d62ef6">tvm::floormod</a></div><div class="ttdeci">PrimExpr floormod(PrimExpr a, PrimExpr b, Span span=Span())</div><div class="ttdoc">compute the remainder of floordiv</div></div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode-members.html
index 7695cd52d21..95a3cead410 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode-members.html
@@ -81,10 +81,11 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1AnyTypeNode.html#adb452f0994fe28f9ec2c3475e83f53f4">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1AnyTypeNode.html">tvm::relax::AnyTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1AnyTypeNode.html#aebebfe84e523fb49a166721547b3747a">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.AnyType&quot;, AnyTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1AnyTypeNode.html">tvm::relax::AnyTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1AnyTypeNode.html#adb452f0994fe28f9ec2c3475e83f53f4">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1AnyTypeNode.html">tvm::relax::AnyTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1AnyTypeNode.html#aebebfe84e523fb49a166721547b3747a">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.AnyType&quot;, AnyTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1AnyTypeNode.html">tvm::relax::AnyTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode.html
index aec377abae2..d336d651623 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode.html
@@ -88,12 +88,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::relax::AnyTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1AnyTypeNode__inherit__graph.svg" width="219" height="412"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1AnyTypeNode__inherit__graph.svg" width="219" height="447"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::AnyTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1AnyTypeNode__coll__graph.svg" width="343" height="578"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1AnyTypeNode__coll__graph.svg" width="343" height="612"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -121,6 +121,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode__coll__graph.svg
index 387310207e0..f096e98ed88 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::AnyTypeNode Pages: 1 -->
-<svg width="257pt" height="433pt"
- viewBox="0.00 0.00 257.00 433.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 429)">
+<svg width="257pt" height="459pt"
+ viewBox="0.00 0.00 257.00 459.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 455)">
 <title>tvm::relax::AnyTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,10 +30,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-202 0,-202 0,-112 156,-112 156,-202"/>
-<text text-anchor="start" x="41" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-228 0,-228 0,-112 156,-112 156,-228"/>
+<text text-anchor="start" x="41" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -41,10 +44,10 @@
 <text text-anchor="start" x="17" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-185 0,-185 156,-185 156,-185 0,-185"/>
+<polygon fill="#666666" stroke="#666666" points="0,-211 0,-211 156,-211 156,-211 0,-211"/>
 <polygon fill="#666666" stroke="#666666" points="0,-155 0,-155 15,-155 15,-155 0,-155"/>
 <polygon fill="#666666" stroke="#666666" points="15,-155 15,-155 156,-155 156,-155 15,-155"/>
-<polygon fill="none" stroke="#666666" points="0,-112 0,-202 156,-202 156,-112 0,-112"/>
+<polygon fill="none" stroke="#666666" points="0,-112 0,-228 156,-228 156,-112 0,-112"/>
 </a>
 </g>
 </g>
@@ -52,8 +55,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-101.82C78,-92.79 78,-83.62 78,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-101.91 78,-111.91 81.5,-101.91 74.5,-101.91"/>
+<path fill="none" stroke="#63b8ff" d="M78,-101.49C78,-92.37 78,-83.32 78,-75.04"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-101.76 78,-111.76 81.5,-101.76 74.5,-101.76"/>
 </a>
 </g>
 </g>
@@ -61,13 +64,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-318.5 9,-318.5 9,-269.5 67,-269.5 67,-318.5"/>
-<text text-anchor="start" x="14" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-301 9,-301 67,-301 67,-301 9,-301"/>
-<polygon fill="#666666" stroke="#666666" points="9,-286 9,-286 67,-286 67,-286 9,-286"/>
-<polygon fill="none" stroke="#666666" points="9,-269.5 9,-318.5 67,-318.5 67,-269.5 9,-269.5"/>
+<polygon fill="white" stroke="transparent" points="67,-344.5 9,-344.5 9,-295.5 67,-295.5 67,-344.5"/>
+<text text-anchor="start" x="14" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-317" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-327 9,-327 67,-327 67,-327 9,-327"/>
+<polygon fill="#666666" stroke="#666666" points="9,-312 9,-312 67,-312 67,-312 9,-312"/>
+<polygon fill="none" stroke="#666666" points="9,-295.5 9,-344.5 67,-344.5 67,-295.5 9,-295.5"/>
 </a>
 </g>
 </g>
@@ -75,8 +78,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.84,-259.8C52.98,-242.44 59.34,-220.98 64.89,-202.23"/>
-<polygon fill="none" stroke="#63b8ff" points="44.45,-258.9 44.97,-269.48 51.16,-260.89 44.45,-258.9"/>
+<path fill="none" stroke="#63b8ff" d="M47.11,-285.29C51.67,-268.43 57.31,-247.55 62.52,-228.27"/>
+<polygon fill="none" stroke="#63b8ff" points="43.66,-284.65 44.43,-295.22 50.41,-286.48 43.66,-284.65"/>
 </a>
 </g>
 </g>
@@ -84,19 +87,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-339 85,-339 85,-249 249,-249 249,-339"/>
-<text text-anchor="start" x="142" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="165" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="89" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="89" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="89" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="102" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="85,-322 85,-322 249,-322 249,-322 85,-322"/>
-<polygon fill="#666666" stroke="#666666" points="85,-307 85,-307 249,-307 249,-307 85,-307"/>
-<polygon fill="none" stroke="#666666" points="85,-249 85,-339 249,-339 249,-249 85,-249"/>
+<polygon fill="white" stroke="transparent" points="249,-365 85,-365 85,-275 249,-275 249,-365"/>
+<text text-anchor="start" x="142" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="165" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="89" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="89" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="89" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="102" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="85,-348 85,-348 249,-348 249,-348 85,-348"/>
+<polygon fill="#666666" stroke="#666666" points="85,-333 85,-333 249,-333 249,-333 85,-333"/>
+<polygon fill="none" stroke="#666666" points="85,-275 85,-365 249,-365 249,-275 85,-275"/>
 </a>
 </g>
 </g>
@@ -104,23 +107,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.86,-248.8C130.25,-237.26 121.96,-224.68 114.04,-212.67"/>
-<polygon fill="none" stroke="#63b8ff" points="113.81,-212.32 107.17,-209.51 107.21,-202.3 113.85,-205.11 113.81,-212.32"/>
+<path fill="none" stroke="#63b8ff" d="M140.54,-275C133.61,-263.48 125.99,-250.8 118.51,-238.37"/>
+<polygon fill="none" stroke="#63b8ff" points="118.47,-238.3 111.95,-235.22 112.28,-228.01 118.8,-231.09 118.47,-238.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="142.5" y="-223" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="144.5" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="204,-425 130,-425 130,-376 204,-376 204,-425"/>
-<text text-anchor="start" x="135" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="165" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="165" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="130,-407.5 130,-407.5 204,-407.5 204,-407.5 130,-407.5"/>
-<polygon fill="#666666" stroke="#666666" points="130,-392.5 130,-392.5 204,-392.5 204,-392.5 130,-392.5"/>
-<polygon fill="none" stroke="#666666" points="130,-376 130,-425 204,-425 204,-376 130,-376"/>
+<polygon fill="white" stroke="transparent" points="204,-451 130,-451 130,-402 204,-402 204,-451"/>
+<text text-anchor="start" x="135" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="165" y="-423.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="165" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="130,-433.5 130,-433.5 204,-433.5 204,-433.5 130,-433.5"/>
+<polygon fill="#666666" stroke="#666666" points="130,-418.5 130,-418.5 204,-418.5 204,-418.5 130,-418.5"/>
+<polygon fill="none" stroke="#666666" points="130,-402 130,-451 204,-451 204,-402 130,-402"/>
 </a>
 </g>
 </g>
@@ -128,8 +131,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M167,-365.59C167,-357.16 167,-348.01 167,-339.18"/>
-<polygon fill="none" stroke="#63b8ff" points="163.5,-365.79 167,-375.79 170.5,-365.79 163.5,-365.79"/>
+<path fill="none" stroke="#63b8ff" d="M167,-391.59C167,-383.16 167,-374.01 167,-365.18"/>
+<polygon fill="none" stroke="#63b8ff" points="163.5,-391.79 167,-401.79 170.5,-391.79 163.5,-391.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode__inherit__graph.svg
index b5b2d0ce7f4..9623af463dc 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AnyTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::AnyTypeNode Pages: 1 -->
-<svg width="164pt" height="309pt"
- viewBox="0.00 0.00 164.00 309.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 305)">
+<svg width="164pt" height="335pt"
+ viewBox="0.00 0.00 164.00 335.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 331)">
 <title>tvm::relax::AnyTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,12 +30,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-216 0,-216 0,-111 156,-111 156,-216"/>
-<text text-anchor="start" x="41" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-242 0,-242 0,-111 156,-111 156,-242"/>
+<text text-anchor="start" x="41" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -43,10 +46,10 @@
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-198.5 0,-198.5 156,-198.5 156,-198.5 0,-198.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-224.5 0,-224.5 156,-224.5 156,-224.5 0,-224.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-153.5 0,-153.5 15,-153.5 15,-153.5 0,-153.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-153.5 15,-153.5 156,-153.5 156,-153.5 15,-153.5"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-216 156,-216 156,-111 0,-111"/>
+<polygon fill="none" stroke="#666666" points="0,-111 0,-242 156,-242 156,-111 0,-111"/>
 </a>
 </g>
 </g>
@@ -54,8 +57,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-100.8C78,-92.08 78,-83.35 78,-75.3"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-100.99 78,-110.99 81.5,-100.99 74.5,-100.99"/>
+<path fill="none" stroke="#63b8ff" d="M78,-100.34C78,-91.62 78,-83.04 78,-75.18"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-100.61 78,-110.61 81.5,-100.61 74.5,-100.61"/>
 </a>
 </g>
 </g>
@@ -63,13 +66,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-301 49,-301 49,-252 107,-252 107,-301"/>
-<text text-anchor="start" x="54" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-258.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-283.5 49,-283.5 107,-283.5 107,-283.5 49,-283.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-268.5 49,-268.5 107,-268.5 107,-268.5 49,-268.5"/>
-<polygon fill="none" stroke="#666666" points="49,-252 49,-301 107,-301 107,-252 49,-252"/>
+<polygon fill="white" stroke="transparent" points="107,-327 49,-327 49,-278 107,-278 107,-327"/>
+<text text-anchor="start" x="54" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-309.5 49,-309.5 107,-309.5 107,-309.5 49,-309.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-294.5 49,-294.5 107,-294.5 107,-294.5 49,-294.5"/>
+<polygon fill="none" stroke="#666666" points="49,-278 49,-327 107,-327 107,-278 49,-278"/>
 </a>
 </g>
 </g>
@@ -77,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-241.85C78,-233.79 78,-225 78,-216.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-241.96 78,-251.96 81.5,-241.96 74.5,-241.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-267.85C78,-259.82 78,-250.98 78,-242.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-267.88 78,-277.88 81.5,-267.88 74.5,-267.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode-members.html
index 0abe4412f8a..4c1a89181b4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode-members.html
@@ -80,14 +80,15 @@ $(function() {
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html">tvm::relax::DataflowVarNode</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#a189deb7019df8af48603e9c430077af6">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html#aec917891aefd0f6f3a95cbe289f62a5a">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html">tvm::relax::DataflowVarNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#aa2e3641bec37fa8594944046d9cc8379">name</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html#aaeac81543f7e5b8edc85b52a2c9a0746">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html">tvm::relax::DataflowVarNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">span</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#a071758448cb35970df307942d69425e3">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Var&quot;, VarNode, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">tvm::ExprNode::TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Expr&quot;, ExprNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html#aba6f7768daca31f0df853e6271a85a74">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.expr.DataflowVar&quot;, DataflowVarNode, VarNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html">tvm::relax::DataflowVarNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">ty</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#a9b7101f10e0b662472ee35546c704fa6">_type_child_slots_can_overflow</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html#aec917891aefd0f6f3a95cbe289f62a5a">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html">tvm::relax::DataflowVarNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#aa2e3641bec37fa8594944046d9cc8379">name</a></td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html#aaeac81543f7e5b8edc85b52a2c9a0746">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html">tvm::relax::DataflowVarNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a52b366cd48d311f2406d86d92991c834">span</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1VarNode.html#a071758448cb35970df307942d69425e3">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Var&quot;, VarNode, ExprNode)</td><td class="entry"><a class="el" href="classtvm_1_1VarNode.html">tvm::VarNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">tvm::ExprNode::TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Expr&quot;, ExprNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html#aba6f7768daca31f0df853e6271a85a74">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.expr.DataflowVar&quot;, DataflowVarNode, VarNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1DataflowVarNode.html">tvm::relax::DataflowVarNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">ty</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode.html
index 7153ec9fbef..f4359a3c329 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::relax::DataflowVarNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DataflowVarNode__inherit__graph.svg" width="219" height="620"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DataflowVarNode__inherit__graph.svg" width="219" height="655"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::DataflowVarNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DataflowVarNode__coll__graph.svg" width="603" height="767"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DataflowVarNode__coll__graph.svg" width="603" height="802"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -128,6 +128,8 @@ Static Public Attributes</h2></td></tr>
 <tr class="separator:ad34fcb6cd6adc1608f9c4011921f2f74 inherit pub_static_attribs_classtvm_1_1VarNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a189deb7019df8af48603e9c430077af6 inherit pub_static_attribs_classtvm_1_1VarNode" id="r_a189deb7019df8af48603e9c430077af6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm [...]
 <tr class="separator:a189deb7019df8af48603e9c430077af6 inherit pub_static_attribs_classtvm_1_1VarNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b7101f10e0b662472ee35546c704fa6 inherit pub_static_attribs_classtvm_1_1VarNode" id="r_a9b7101f10e0b662472ee35546c704fa6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1VarNode.html#a9b7101f10e0b662472ee35546c704fa6">_type [...]
+<tr class="separator:a9b7101f10e0b662472ee35546c704fa6 inherit pub_static_attribs_classtvm_1_1VarNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1ExprNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1ExprNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td></tr>
 <tr class="memitem:a549f3165583edbbc9a13c6d796e7b298 inherit pub_static_attribs_classtvm_1_1ExprNode" id="r_a549f3165583edbbc9a13c6d796e7b298"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d7 [...]
 <tr class="separator:a549f3165583edbbc9a13c6d796e7b298 inherit pub_static_attribs_classtvm_1_1ExprNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode__coll__graph.svg
index 0331eca79e0..529134af425 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::DataflowVarNode Pages: 1 -->
-<svg width="452pt" height="575pt"
- viewBox="0.00 0.00 451.50 575.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 571)">
+<svg width="452pt" height="601pt"
+ viewBox="0.00 0.00 451.50 601.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 597)">
 <title>tvm::relax::DataflowVarNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -32,23 +32,26 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1VarNode.html" target="_top" xlink:title="A local variable in the IR.">
-<polygon fill="white" stroke="transparent" points="236,-217 80,-217 80,-112 236,-112 236,-217"/>
-<text text-anchor="start" x="124.5" y="-204.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
-<text text-anchor="start" x="84" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
-<text text-anchor="start" x="84" y="-174.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-174.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="84" y="-159.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-159.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<polygon fill="white" stroke="transparent" points="236,-243 80,-243 80,-112 236,-112 236,-243"/>
+<text text-anchor="start" x="124.5" y="-230.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
+<text text-anchor="start" x="84" y="-215.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-215.5" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
+<text text-anchor="start" x="84" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="84" y="-185.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-185.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="84" y="-170.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-170.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots_can</text>
+<text text-anchor="start" x="97" y="-159.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
 <text text-anchor="start" x="84" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="97" y="-144.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
 <text text-anchor="start" x="97" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="84" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="97" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="80,-199.5 80,-199.5 236,-199.5 236,-199.5 80,-199.5"/>
+<polygon fill="#666666" stroke="#666666" points="80,-225.5 80,-225.5 236,-225.5 236,-225.5 80,-225.5"/>
 <polygon fill="#666666" stroke="#666666" points="80,-154.5 80,-154.5 95,-154.5 95,-154.5 80,-154.5"/>
 <polygon fill="#666666" stroke="#666666" points="95,-154.5 95,-154.5 236,-154.5 236,-154.5 95,-154.5"/>
-<polygon fill="none" stroke="#666666" points="80,-112 80,-217 236,-217 236,-112 80,-112"/>
+<polygon fill="none" stroke="#666666" points="80,-112 80,-243 236,-243 236,-112 80,-112"/>
 </a>
 </g>
 </g>
@@ -56,7 +59,7 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158,-101.69C158,-92.58 158,-83.44 158,-75.06"/>
+<path fill="none" stroke="#63b8ff" d="M158,-101.87C158,-92.61 158,-83.48 158,-75.17"/>
 <polygon fill="none" stroke="#63b8ff" points="154.5,-101.94 158,-111.94 161.5,-101.94 154.5,-101.94"/>
 </a>
 </g>
@@ -65,21 +68,21 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1ExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="transparent" points="236,-344 80,-344 80,-254 236,-254 236,-344"/>
-<text text-anchor="start" x="121.5" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
-<text text-anchor="start" x="84" y="-317" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-317" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="84" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<polygon fill="white" stroke="transparent" points="236,-370 80,-370 80,-280 236,-280 236,-370"/>
+<text text-anchor="start" x="121.5" y="-358" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
+<text text-anchor="start" x="84" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="84" y="-328" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-328" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="84" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="97" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="84" y="-287" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-287" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="97" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="84" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="80,-327 80,-327 236,-327 236,-327 80,-327"/>
-<polygon fill="#666666" stroke="#666666" points="80,-297 80,-297 95,-297 95,-297 80,-297"/>
-<polygon fill="#666666" stroke="#666666" points="95,-297 95,-297 236,-297 236,-297 95,-297"/>
-<polygon fill="none" stroke="#666666" points="80,-254 80,-344 236,-344 236,-254 80,-254"/>
+<text text-anchor="start" x="97" y="-287" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="80,-353 80,-353 236,-353 236,-353 80,-353"/>
+<polygon fill="#666666" stroke="#666666" points="80,-323 80,-323 95,-323 95,-323 80,-323"/>
+<polygon fill="#666666" stroke="#666666" points="95,-323 95,-323 236,-323 236,-323 95,-323"/>
+<polygon fill="none" stroke="#666666" points="80,-280 80,-370 236,-370 236,-280 80,-280"/>
 </a>
 </g>
 </g>
@@ -87,8 +90,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158,-243.76C158,-234.99 158,-225.94 158,-217.23"/>
-<polygon fill="none" stroke="#63b8ff" points="154.5,-243.88 158,-253.88 161.5,-243.88 154.5,-243.88"/>
+<path fill="none" stroke="#63b8ff" d="M158,-269.9C158,-261.16 158,-252.03 158,-243.07"/>
+<polygon fill="none" stroke="#63b8ff" points="154.5,-269.95 158,-279.95 161.5,-269.95 154.5,-269.95"/>
 </a>
 </g>
 </g>
@@ -96,13 +99,13 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-460.5 0,-460.5 0,-411.5 58,-411.5 58,-460.5"/>
-<text text-anchor="start" x="5" y="-448" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-433" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-418" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-443 0,-443 58,-443 58,-443 0,-443"/>
-<polygon fill="#666666" stroke="#666666" points="0,-428 0,-428 58,-428 58,-428 0,-428"/>
-<polygon fill="none" stroke="#666666" points="0,-411.5 0,-460.5 58,-460.5 58,-411.5 0,-411.5"/>
+<polygon fill="white" stroke="transparent" points="58,-486.5 0,-486.5 0,-437.5 58,-437.5 58,-486.5"/>
+<text text-anchor="start" x="5" y="-474" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-444" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-469 0,-469 58,-469 58,-469 0,-469"/>
+<polygon fill="#666666" stroke="#666666" points="0,-454 0,-454 58,-454 58,-454 0,-454"/>
+<polygon fill="none" stroke="#666666" points="0,-437.5 0,-486.5 58,-486.5 58,-437.5 0,-437.5"/>
 </a>
 </g>
 </g>
@@ -110,8 +113,8 @@
 <g id="edge3_Node000003_Node000004" class="edge">
 <title>Node4&#45;&gt;Node3</title>
 <g id="a_edge3_Node000003_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M55.5,-403.74C59.31,-399.42 63.22,-395.07 67,-391 81.45,-375.45 97.71,-358.91 112.44,-344.26"/>
-<polygon fill="none" stroke="#63b8ff" points="52.73,-401.59 48.8,-411.43 58.01,-406.19 52.73,-401.59"/>
+<path fill="none" stroke="#63b8ff" d="M55.5,-429.74C59.31,-425.42 63.22,-421.07 67,-417 81.45,-401.45 97.71,-384.91 112.44,-370.26"/>
+<polygon fill="none" stroke="#63b8ff" points="52.73,-427.59 48.8,-437.43 58.01,-432.19 52.73,-427.59"/>
 </a>
 </g>
 </g>
@@ -119,19 +122,19 @@
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-481 76,-481 76,-391 240,-391 240,-481"/>
-<text text-anchor="start" x="133" y="-469" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-454" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-439" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-439" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-424" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-424" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-464 76,-464 240,-464 240,-464 76,-464"/>
-<polygon fill="#666666" stroke="#666666" points="76,-449 76,-449 240,-449 240,-449 76,-449"/>
-<polygon fill="none" stroke="#666666" points="76,-391 76,-481 240,-481 240,-391 76,-391"/>
+<polygon fill="white" stroke="transparent" points="240,-507 76,-507 76,-417 240,-417 240,-507"/>
+<text text-anchor="start" x="133" y="-495" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-480" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-465" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-465" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-450" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-450" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-435" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-435" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-424" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-490 76,-490 240,-490 240,-490 76,-490"/>
+<polygon fill="#666666" stroke="#666666" points="76,-475 76,-475 240,-475 240,-475 76,-475"/>
+<polygon fill="none" stroke="#666666" points="76,-417 76,-507 240,-507 240,-417 76,-417"/>
 </a>
 </g>
 </g>
@@ -139,23 +142,23 @@
 <g id="edge4_Node000003_Node000005" class="edge">
 <title>Node5&#45;&gt;Node3</title>
 <g id="a_edge4_Node000003_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158,-390.8C158,-379.84 158,-367.95 158,-356.5"/>
-<polygon fill="none" stroke="#63b8ff" points="158,-356.3 154,-350.3 158,-344.3 162,-350.3 158,-356.3"/>
+<path fill="none" stroke="#63b8ff" d="M158,-416.8C158,-405.84 158,-393.95 158,-382.5"/>
+<polygon fill="none" stroke="#63b8ff" points="158,-382.3 154,-376.3 158,-370.3 162,-376.3 158,-382.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="175.5" y="-365" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="175.5" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node6 -->
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="291,-567 217,-567 217,-518 291,-518 291,-567"/>
-<text text-anchor="start" x="222" y="-554.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="252" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="252" y="-524.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="217,-549.5 217,-549.5 291,-549.5 291,-549.5 217,-549.5"/>
-<polygon fill="#666666" stroke="#666666" points="217,-534.5 217,-534.5 291,-534.5 291,-534.5 217,-534.5"/>
-<polygon fill="none" stroke="#666666" points="217,-518 217,-567 291,-567 291,-518 217,-518"/>
+<polygon fill="white" stroke="transparent" points="291,-593 217,-593 217,-544 291,-544 291,-593"/>
+<text text-anchor="start" x="222" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="252" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="252" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="217,-575.5 217,-575.5 291,-575.5 291,-575.5 217,-575.5"/>
+<polygon fill="#666666" stroke="#666666" points="217,-560.5 217,-560.5 291,-560.5 291,-560.5 217,-560.5"/>
+<polygon fill="none" stroke="#666666" points="217,-544 217,-593 291,-593 291,-544 217,-544"/>
 </a>
 </g>
 </g>
@@ -163,8 +166,8 @@
 <g id="edge5_Node000005_Node000006" class="edge">
 <title>Node6&#45;&gt;Node5</title>
 <g id="a_edge5_Node000005_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M225.4,-510.37C216.98,-501.2 207.6,-491 198.59,-481.18"/>
-<polygon fill="none" stroke="#63b8ff" points="222.87,-512.79 232.22,-517.79 228.03,-508.06 222.87,-512.79"/>
+<path fill="none" stroke="#63b8ff" d="M225.4,-536.37C216.98,-527.2 207.6,-517 198.59,-507.18"/>
+<polygon fill="none" stroke="#63b8ff" points="222.87,-538.79 232.22,-543.79 228.03,-534.06 222.87,-538.79"/>
 </a>
 </g>
 </g>
@@ -172,19 +175,19 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="transparent" points="443.5,-481 258.5,-481 258.5,-391 443.5,-391 443.5,-481"/>
-<text text-anchor="start" x="327" y="-469" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="349.5" y="-454" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="263" y="-439" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-439" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<polygon fill="white" stroke="transparent" points="443.5,-507 258.5,-507 258.5,-417 443.5,-417 443.5,-507"/>
+<text text-anchor="start" x="327" y="-495" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="349.5" y="-480" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="263" y="-465" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-465" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="263" y="-450" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-450" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="276" y="-439" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
 <text text-anchor="start" x="263" y="-424" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-424" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="276" y="-413" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="263" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="259,-464 259,-464 444,-464 444,-464 259,-464"/>
-<polygon fill="#666666" stroke="#666666" points="259,-449 259,-449 444,-449 444,-449 259,-449"/>
-<polygon fill="none" stroke="#666666" points="258.5,-391 258.5,-481 443.5,-481 443.5,-391 258.5,-391"/>
+<text text-anchor="start" x="276" y="-424" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="259,-490 259,-490 444,-490 444,-490 259,-490"/>
+<polygon fill="#666666" stroke="#666666" points="259,-475 259,-475 444,-475 444,-475 259,-475"/>
+<polygon fill="none" stroke="#666666" points="258.5,-417 258.5,-507 443.5,-507 443.5,-417 258.5,-417"/>
 </a>
 </g>
 </g>
@@ -192,8 +195,8 @@
 <g id="edge7_Node000007_Node000006" class="edge">
 <title>Node6&#45;&gt;Node7</title>
 <g id="a_edge7_Node000007_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M282.9,-510.37C291.41,-501.2 300.88,-491 309.99,-481.18"/>
-<polygon fill="none" stroke="#63b8ff" points="280.25,-508.08 276.01,-517.79 285.38,-512.84 280.25,-508.08"/>
+<path fill="none" stroke="#63b8ff" d="M282.9,-536.37C291.41,-527.2 300.88,-517 309.99,-507.18"/>
+<polygon fill="none" stroke="#63b8ff" points="280.25,-534.08 276.01,-543.79 285.38,-538.84 280.25,-534.08"/>
 </a>
 </g>
 </g>
@@ -201,11 +204,11 @@
 <g id="edge6_Node000003_Node000007" class="edge">
 <title>Node7&#45;&gt;Node3</title>
 <g id="a_edge6_Node000003_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M288.07,-390.98C269.89,-378.26 249.89,-364.28 231.14,-351.16"/>
-<polygon fill="none" stroke="#63b8ff" points="231.01,-351.07 223.8,-350.91 221.17,-344.19 228.38,-344.35 231.01,-351.07"/>
+<path fill="none" stroke="#63b8ff" d="M288.07,-416.98C269.89,-404.26 249.89,-390.28 231.14,-377.16"/>
+<polygon fill="none" stroke="#63b8ff" points="231.01,-377.07 223.8,-376.91 221.17,-370.19 228.38,-370.35 231.01,-377.07"/>
 </a>
 </g>
-<text text-anchor="middle" x="271" y="-365" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ty</text>
+<text text-anchor="middle" x="271" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ty</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode__inherit__graph.svg
index 3329ebccae7..44fa3dec23b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowVarNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::DataflowVarNode Pages: 1 -->
-<svg width="164pt" height="465pt"
- viewBox="0.00 0.00 164.00 465.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 461)">
+<svg width="164pt" height="491pt"
+ viewBox="0.00 0.00 164.00 491.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 487)">
 <title>tvm::relax::DataflowVarNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -32,23 +32,26 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1VarNode.html" target="_top" xlink:title="A local variable in the IR.">
-<polygon fill="white" stroke="transparent" points="156,-216 0,-216 0,-111 156,-111 156,-216"/>
-<text text-anchor="start" x="44.5" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
-<text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
-<text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="4" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<polygon fill="white" stroke="transparent" points="156,-242 0,-242 0,-111 156,-111 156,-242"/>
+<text text-anchor="start" x="44.5" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::VarNode</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
+<text text-anchor="start" x="4" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="4" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots_can</text>
+<text text-anchor="start" x="17" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
 <text text-anchor="start" x="4" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-198.5 0,-198.5 156,-198.5 156,-198.5 0,-198.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-224.5 0,-224.5 156,-224.5 156,-224.5 0,-224.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-153.5 0,-153.5 15,-153.5 15,-153.5 0,-153.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-153.5 15,-153.5 156,-153.5 156,-153.5 15,-153.5"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-216 156,-216 156,-111 0,-111"/>
+<polygon fill="none" stroke="#666666" points="0,-111 0,-242 156,-242 156,-111 0,-111"/>
 </a>
 </g>
 </g>
@@ -56,8 +59,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-100.8C78,-92.08 78,-83.35 78,-75.3"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-100.99 78,-110.99 81.5,-100.99 74.5,-100.99"/>
+<path fill="none" stroke="#63b8ff" d="M78,-100.34C78,-91.62 78,-83.04 78,-75.18"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-100.61 78,-110.61 81.5,-100.61 74.5,-100.61"/>
 </a>
 </g>
 </g>
@@ -65,25 +68,25 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1ExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="transparent" points="156,-372 0,-372 0,-252 156,-252 156,-372"/>
-<text text-anchor="start" x="41.5" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
-<text text-anchor="start" x="4" y="-345" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-345" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-330" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-330" font-family="Helvetica,sans-Serif" font-size="10.00">ty</text>
-<text text-anchor="start" x="4" y="-315" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-315" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="4" y="-300" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-300" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<polygon fill="white" stroke="transparent" points="156,-398 0,-398 0,-278 156,-278 156,-398"/>
+<text text-anchor="start" x="41.5" y="-386" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
+<text text-anchor="start" x="4" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00">ty</text>
+<text text-anchor="start" x="4" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="4" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-300" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-274" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-355 0,-355 156,-355 156,-355 0,-355"/>
-<polygon fill="#666666" stroke="#666666" points="0,-295 0,-295 15,-295 15,-295 0,-295"/>
-<polygon fill="#666666" stroke="#666666" points="15,-295 15,-295 156,-295 156,-295 15,-295"/>
-<polygon fill="none" stroke="#666666" points="0,-252 0,-372 156,-372 156,-252 0,-252"/>
+<text text-anchor="start" x="17" y="-285" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-381 0,-381 156,-381 156,-381 0,-381"/>
+<polygon fill="#666666" stroke="#666666" points="0,-321 0,-321 15,-321 15,-321 0,-321"/>
+<polygon fill="#666666" stroke="#666666" points="15,-321 15,-321 156,-321 156,-321 15,-321"/>
+<polygon fill="none" stroke="#666666" points="0,-278 0,-398 156,-398 156,-278 0,-278"/>
 </a>
 </g>
 </g>
@@ -91,8 +94,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-241.83C78,-233.25 78,-224.6 78,-216.34"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-241.84 78,-251.84 81.5,-241.84 74.5,-241.84"/>
+<path fill="none" stroke="#63b8ff" d="M78,-267.42C78,-258.98 78,-250.39 78,-242.03"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-267.61 78,-277.61 81.5,-267.61 74.5,-267.61"/>
 </a>
 </g>
 </g>
@@ -100,13 +103,13 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-457 49,-457 49,-408 107,-408 107,-457"/>
-<text text-anchor="start" x="54" y="-444.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-429.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-439.5 49,-439.5 107,-439.5 107,-439.5 49,-439.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-424.5 49,-424.5 107,-424.5 107,-424.5 49,-424.5"/>
-<polygon fill="none" stroke="#666666" points="49,-408 49,-457 107,-457 107,-408 49,-408"/>
+<polygon fill="white" stroke="transparent" points="107,-483 49,-483 49,-434 107,-434 107,-483"/>
+<text text-anchor="start" x="54" y="-470.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-455.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-440.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-465.5 49,-465.5 107,-465.5 107,-465.5 49,-465.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-450.5 49,-450.5 107,-450.5 107,-450.5 49,-450.5"/>
+<polygon fill="none" stroke="#666666" points="49,-434 49,-483 107,-483 107,-434 49,-434"/>
 </a>
 </g>
 </g>
@@ -114,8 +117,8 @@
 <g id="edge3_Node000003_Node000004" class="edge">
 <title>Node4&#45;&gt;Node3</title>
 <g id="a_edge3_Node000003_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-397.59C78,-389.71 78,-381.09 78,-372.47"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-397.8 78,-407.8 81.5,-397.8 74.5,-397.8"/>
+<path fill="none" stroke="#63b8ff" d="M78,-423.59C78,-415.71 78,-407.09 78,-398.47"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-423.8 78,-433.8 81.5,-423.8 74.5,-423.8"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode-members.html
index 34ad1645e07..a4f31fe9e91 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode-members.html
@@ -81,15 +81,16 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#ab877d4cbc0b07a7ae93ccf2b2e55e718">derive_func</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a1c2c188bdbe5ba412dbe5d10ad35973a">IsOpaque</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a6dc2a70fe0696902b53b8dea1daa0bc3">params</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a4856099db6a1f8f6ae9908ac4e47e3c5">purity</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a715a09f7b14a093963ec4eca5e0ef9a0">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a106fdc6e77c3d27f8a3e876f53688263">ret</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#abd090d2859460491db9f1b66da9ca2bc">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.FuncType&quot;, FuncTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#ab877d4cbc0b07a7ae93ccf2b2e55e718">derive_func</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a1c2c188bdbe5ba412dbe5d10ad35973a">IsOpaque</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a6dc2a70fe0696902b53b8dea1daa0bc3">params</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a4856099db6a1f8f6ae9908ac4e47e3c5">purity</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a715a09f7b14a093963ec4eca5e0ef9a0">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#a106fdc6e77c3d27f8a3e876f53688263">ret</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html#abd090d2859460491db9f1b66da9ca2bc">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.FuncType&quot;, FuncTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1FuncTypeNode.html">tvm::relax::FuncTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode.html
index 4d8bc09708b..2739ff44596 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::relax::FuncTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1FuncTypeNode__inherit__graph.svg" width="219" height="492"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1FuncTypeNode__inherit__graph.svg" width="219" height="527"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::FuncTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1FuncTypeNode__coll__graph.svg" width="492" height="743"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1FuncTypeNode__coll__graph.svg" width="492" height="778"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -139,6 +139,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode__coll__graph.svg
index 8e283b5d6d3..f0e3f91915c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::FuncTypeNode Pages: 1 -->
-<svg width="369pt" height="557pt"
- viewBox="0.00 0.00 368.50 557.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 553)">
+<svg width="369pt" height="583pt"
+ viewBox="0.00 0.00 368.50 583.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 579)">
 <title>tvm::relax::FuncTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -38,10 +38,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="213,-247 57,-247 57,-157 213,-157 213,-247"/>
-<text text-anchor="start" x="98" y="-235" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="61" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="74" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="213,-273 57,-273 57,-157 213,-157 213,-273"/>
+<text text-anchor="start" x="98" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="61" y="-246" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="74" y="-246" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="61" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="74" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="74" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="61" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="74" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="61" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -49,10 +52,10 @@
 <text text-anchor="start" x="74" y="-179" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="61" y="-164" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="74" y="-164" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="57,-230 57,-230 213,-230 213,-230 57,-230"/>
+<polygon fill="#666666" stroke="#666666" points="57,-256 57,-256 213,-256 213,-256 57,-256"/>
 <polygon fill="#666666" stroke="#666666" points="57,-200 57,-200 72,-200 72,-200 57,-200"/>
 <polygon fill="#666666" stroke="#666666" points="72,-200 72,-200 213,-200 213,-200 72,-200"/>
-<polygon fill="none" stroke="#666666" points="57,-157 57,-247 213,-247 213,-157 57,-157"/>
+<polygon fill="none" stroke="#666666" points="57,-157 57,-273 213,-273 213,-157 57,-157"/>
 </a>
 </g>
 </g>
@@ -60,8 +63,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158.3,-147.53C162.2,-138.56 166.28,-129.22 170.24,-120.12"/>
-<polygon fill="none" stroke="#63b8ff" points="155.09,-146.14 154.3,-156.7 161.5,-148.93 155.09,-146.14"/>
+<path fill="none" stroke="#63b8ff" d="M161.62,-147.24C165.23,-138.17 168.92,-128.92 172.48,-120"/>
+<polygon fill="none" stroke="#63b8ff" points="158.34,-146.01 157.89,-156.59 164.84,-148.6 158.34,-146.01"/>
 </a>
 </g>
 </g>
@@ -69,13 +72,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-442.5 0,-442.5 0,-393.5 58,-393.5 58,-442.5"/>
-<text text-anchor="start" x="5" y="-430" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-400" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-425 0,-425 58,-425 58,-425 0,-425"/>
-<polygon fill="#666666" stroke="#666666" points="0,-410 0,-410 58,-410 58,-410 0,-410"/>
-<polygon fill="none" stroke="#666666" points="0,-393.5 0,-442.5 58,-442.5 58,-393.5 0,-393.5"/>
+<polygon fill="white" stroke="transparent" points="58,-468.5 0,-468.5 0,-419.5 58,-419.5 58,-468.5"/>
+<text text-anchor="start" x="5" y="-456" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-441" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-426" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-451 0,-451 58,-451 58,-451 0,-451"/>
+<polygon fill="#666666" stroke="#666666" points="0,-436 0,-436 58,-436 58,-436 0,-436"/>
+<polygon fill="none" stroke="#666666" points="0,-419.5 0,-468.5 58,-468.5 58,-419.5 0,-419.5"/>
 </a>
 </g>
 </g>
@@ -83,8 +86,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M45.33,-384.03C63.49,-347.37 92.91,-287.97 113.07,-247.27"/>
-<polygon fill="none" stroke="#63b8ff" points="42.05,-382.77 40.75,-393.28 48.32,-385.87 42.05,-382.77"/>
+<path fill="none" stroke="#63b8ff" d="M44.58,-409.64C61.31,-373.8 88.2,-316.21 108.32,-273.14"/>
+<polygon fill="none" stroke="#63b8ff" points="41.2,-408.59 40.14,-419.14 47.55,-411.56 41.2,-408.59"/>
 </a>
 </g>
 </g>
@@ -92,19 +95,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-463 76,-463 76,-373 240,-373 240,-463"/>
-<text text-anchor="start" x="133" y="-451" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-436" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-421" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-421" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-446 76,-446 240,-446 240,-446 76,-446"/>
-<polygon fill="#666666" stroke="#666666" points="76,-431 76,-431 240,-431 240,-431 76,-431"/>
-<polygon fill="none" stroke="#666666" points="76,-373 76,-463 240,-463 240,-373 76,-373"/>
+<polygon fill="white" stroke="transparent" points="240,-489 76,-489 76,-399 240,-399 240,-489"/>
+<text text-anchor="start" x="133" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-472 76,-472 240,-472 240,-472 76,-472"/>
+<polygon fill="#666666" stroke="#666666" points="76,-457 76,-457 240,-457 240,-457 76,-457"/>
+<polygon fill="none" stroke="#666666" points="76,-399 76,-489 240,-489 240,-399 76,-399"/>
 </a>
 </g>
 </g>
@@ -112,23 +115,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.06,-372.97C134.98,-367.04 133.2,-360.95 132,-355 125.72,-323.78 126.02,-288.23 128.1,-259.36"/>
-<polygon fill="none" stroke="#63b8ff" points="128.14,-258.98 124.64,-252.67 129.13,-247.02 132.62,-253.33 128.14,-258.98"/>
+<path fill="none" stroke="#63b8ff" d="M137.06,-398.97C134.98,-393.04 133.2,-386.95 132,-381 125.74,-349.9 125.46,-314.82 127.15,-285.04"/>
+<polygon fill="none" stroke="#63b8ff" points="127.15,-285.03 123.56,-278.77 127.96,-273.05 131.55,-279.31 127.15,-285.03"/>
 </a>
 </g>
-<text text-anchor="middle" x="149.5" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="149.5" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="250,-549 176,-549 176,-500 250,-500 250,-549"/>
-<text text-anchor="start" x="181" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="211" y="-521.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="211" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="176,-531.5 176,-531.5 250,-531.5 250,-531.5 176,-531.5"/>
-<polygon fill="#666666" stroke="#666666" points="176,-516.5 176,-516.5 250,-516.5 250,-516.5 176,-516.5"/>
-<polygon fill="none" stroke="#666666" points="176,-500 176,-549 250,-549 250,-500 176,-500"/>
+<polygon fill="white" stroke="transparent" points="250,-575 176,-575 176,-526 250,-526 250,-575"/>
+<text text-anchor="start" x="181" y="-562.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="211" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="211" y="-532.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="176,-557.5 176,-557.5 250,-557.5 250,-557.5 176,-557.5"/>
+<polygon fill="#666666" stroke="#666666" points="176,-542.5 176,-542.5 250,-542.5 250,-542.5 176,-542.5"/>
+<polygon fill="none" stroke="#666666" points="176,-526 176,-575 250,-575 250,-526 176,-526"/>
 </a>
 </g>
 </g>
@@ -136,8 +139,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M195.74,-490.71C191.15,-481.98 186.11,-472.41 181.25,-463.18"/>
-<polygon fill="none" stroke="#63b8ff" points="192.76,-492.57 200.52,-499.79 198.96,-489.31 192.76,-492.57"/>
+<path fill="none" stroke="#63b8ff" d="M195.74,-516.71C191.15,-507.98 186.11,-498.41 181.25,-489.18"/>
+<polygon fill="none" stroke="#63b8ff" points="192.76,-518.57 200.52,-525.79 198.96,-515.31 192.76,-518.57"/>
 </a>
 </g>
 </g>
@@ -145,19 +148,19 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="transparent" points="360.5,-355 175.5,-355 175.5,-265 360.5,-265 360.5,-355"/>
-<text text-anchor="start" x="244" y="-343" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="266.5" y="-328" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="180" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<polygon fill="white" stroke="transparent" points="360.5,-381 175.5,-381 175.5,-291 360.5,-291 360.5,-381"/>
+<text text-anchor="start" x="244" y="-369" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="266.5" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="180" y="-339" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="193" y="-339" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="180" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="193" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="193" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
 <text text-anchor="start" x="180" y="-298" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-298" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="193" y="-287" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="180" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="193" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="176,-338 176,-338 361,-338 361,-338 176,-338"/>
-<polygon fill="#666666" stroke="#666666" points="176,-323 176,-323 361,-323 361,-323 176,-323"/>
-<polygon fill="none" stroke="#666666" points="175.5,-265 175.5,-355 360.5,-355 360.5,-265 175.5,-265"/>
+<text text-anchor="start" x="193" y="-298" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="176,-364 176,-364 361,-364 361,-364 176,-364"/>
+<polygon fill="#666666" stroke="#666666" points="176,-349 176,-349 361,-349 361,-349 176,-349"/>
+<polygon fill="none" stroke="#666666" points="175.5,-291 175.5,-381 360.5,-381 360.5,-291 175.5,-291"/>
 </a>
 </g>
 </g>
@@ -165,8 +168,8 @@
 <g id="edge6_Node000006_Node000005" class="edge">
 <title>Node5&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M235.57,-491.14C240.75,-482.36 245.7,-472.61 249,-463 261,-428.04 265.57,-386.23 267.24,-355.32"/>
-<polygon fill="none" stroke="#63b8ff" points="232.43,-489.55 230.14,-499.9 238.38,-493.24 232.43,-489.55"/>
+<path fill="none" stroke="#63b8ff" d="M235.57,-517.14C240.75,-508.36 245.7,-498.61 249,-489 261,-454.04 265.57,-412.23 267.24,-381.32"/>
+<polygon fill="none" stroke="#63b8ff" points="232.43,-515.55 230.14,-525.9 238.38,-519.24 232.43,-515.55"/>
 </a>
 </g>
 </g>
@@ -174,11 +177,11 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node6&#45;&gt;Node1</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M255.21,-264.95C244.5,-228.05 229.01,-174.69 216.56,-131.81"/>
-<polygon fill="none" stroke="#63b8ff" points="216.48,-131.54 210.96,-126.89 213.13,-120.01 218.65,-124.66 216.48,-131.54"/>
+<path fill="none" stroke="#63b8ff" d="M256.71,-290.71C247.48,-254.67 234.04,-202.51 222,-157 219.85,-148.89 217.58,-140.4 215.32,-131.96"/>
+<polygon fill="none" stroke="#63b8ff" points="215.25,-131.71 209.83,-126.95 212.13,-120.12 217.55,-124.87 215.25,-131.71"/>
 </a>
 </g>
-<text text-anchor="middle" x="261.5" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ret</text>
+<text text-anchor="middle" x="264.5" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ret</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode__inherit__graph.svg
index 4a50c42985e..67c0b07ef0f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FuncTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::FuncTypeNode Pages: 1 -->
-<svg width="164pt" height="369pt"
- viewBox="0.00 0.00 164.00 369.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 365)">
+<svg width="164pt" height="395pt"
+ viewBox="0.00 0.00 164.00 395.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 391)">
 <title>tvm::relax::FuncTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -40,12 +40,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-276 0,-276 0,-171 156,-171 156,-276"/>
-<text text-anchor="start" x="41" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-302 0,-302 0,-171 156,-171 156,-302"/>
+<text text-anchor="start" x="41" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -53,10 +56,10 @@
 <text text-anchor="start" x="17" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-258.5 0,-258.5 156,-258.5 156,-258.5 0,-258.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-284.5 0,-284.5 156,-284.5 156,-284.5 0,-284.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-213.5 0,-213.5 15,-213.5 15,-213.5 0,-213.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-213.5 15,-213.5 156,-213.5 156,-213.5 15,-213.5"/>
-<polygon fill="none" stroke="#666666" points="0,-171 0,-276 156,-276 156,-171 0,-171"/>
+<polygon fill="none" stroke="#666666" points="0,-171 0,-302 156,-302 156,-171 0,-171"/>
 </a>
 </g>
 </g>
@@ -64,8 +67,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-160.68C78,-152.27 78,-143.61 78,-135.11"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-160.79 78,-170.79 81.5,-160.79 74.5,-160.79"/>
+<path fill="none" stroke="#63b8ff" d="M78,-160.92C78,-152.32 78,-143.59 78,-135.1"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-160.93 78,-170.93 81.5,-160.93 74.5,-160.93"/>
 </a>
 </g>
 </g>
@@ -73,13 +76,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-361 49,-361 49,-312 107,-312 107,-361"/>
-<text text-anchor="start" x="54" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-343.5 49,-343.5 107,-343.5 107,-343.5 49,-343.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-328.5 49,-328.5 107,-328.5 107,-328.5 49,-328.5"/>
-<polygon fill="none" stroke="#666666" points="49,-312 49,-361 107,-361 107,-312 49,-312"/>
+<polygon fill="white" stroke="transparent" points="107,-387 49,-387 49,-338 107,-338 107,-387"/>
+<text text-anchor="start" x="54" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-369.5 49,-369.5 107,-369.5 107,-369.5 49,-369.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-354.5 49,-354.5 107,-354.5 107,-354.5 49,-354.5"/>
+<polygon fill="none" stroke="#666666" points="49,-338 49,-387 107,-387 107,-338 49,-338"/>
 </a>
 </g>
 </g>
@@ -87,8 +90,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-301.85C78,-293.79 78,-285 78,-276.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-301.96 78,-311.96 81.5,-301.96 74.5,-301.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-327.85C78,-319.82 78,-310.98 78,-302.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-327.88 78,-337.88 81.5,-327.88 74.5,-327.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode-members.html
index 81d46cca88d..c408ddc45f4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode-members.html
@@ -81,10 +81,11 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html#ac1462c724b46c046e1b5c34ff04b3685">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html">tvm::relax::PackedFuncTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html#ae3a23460dcc706fbc64ca530c2ce5a22">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.PackedFuncType&quot;, PackedFuncTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html">tvm::relax::PackedFuncTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html#ac1462c724b46c046e1b5c34ff04b3685">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html">tvm::relax::PackedFuncTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html#ae3a23460dcc706fbc64ca530c2ce5a22">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.PackedFuncType&quot;, PackedFuncTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html">tvm::relax::PackedFuncTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode.html
index a9ec30b99f1..07b091be848 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode.html
@@ -85,12 +85,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::relax::PackedFuncTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1PackedFuncTypeNode__inherit__graph.svg" width="239" height="412"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1PackedFuncTypeNode__inherit__graph.svg" width="239" height="447"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::PackedFuncTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1PackedFuncTypeNode__coll__graph.svg" width="354" height="578"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1PackedFuncTypeNode__coll__graph.svg" width="354" height="612"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -118,6 +118,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode__coll__graph.svg
index 08f22da9c68..37c92f1dc35 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::PackedFuncTypeNode Pages: 1 -->
-<svg width="265pt" height="433pt"
- viewBox="0.00 0.00 264.50 433.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 429)">
+<svg width="265pt" height="459pt"
+ viewBox="0.00 0.00 264.50 459.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 455)">
 <title>tvm::relax::PackedFuncTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,10 +30,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="163.5,-202 7.5,-202 7.5,-112 163.5,-112 163.5,-202"/>
-<text text-anchor="start" x="48.5" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="11.5" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="24.5" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="163.5,-228 7.5,-228 7.5,-112 163.5,-112 163.5,-228"/>
+<text text-anchor="start" x="48.5" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="11.5" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="24.5" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="11.5" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="24.5" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="24.5" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="11.5" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="24.5" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="11.5" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -41,10 +44,10 @@
 <text text-anchor="start" x="24.5" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="11.5" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="24.5" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="7.5,-185 7.5,-185 163.5,-185 163.5,-185 7.5,-185"/>
+<polygon fill="#666666" stroke="#666666" points="7.5,-211 7.5,-211 163.5,-211 163.5,-211 7.5,-211"/>
 <polygon fill="#666666" stroke="#666666" points="7.5,-155 7.5,-155 22.5,-155 22.5,-155 7.5,-155"/>
 <polygon fill="#666666" stroke="#666666" points="22.5,-155 22.5,-155 163.5,-155 163.5,-155 22.5,-155"/>
-<polygon fill="none" stroke="#666666" points="7.5,-112 7.5,-202 163.5,-202 163.5,-112 7.5,-112"/>
+<polygon fill="none" stroke="#666666" points="7.5,-112 7.5,-228 163.5,-228 163.5,-112 7.5,-112"/>
 </a>
 </g>
 </g>
@@ -52,8 +55,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M85.5,-101.82C85.5,-92.79 85.5,-83.62 85.5,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="82,-101.91 85.5,-111.91 89,-101.91 82,-101.91"/>
+<path fill="none" stroke="#63b8ff" d="M85.5,-101.49C85.5,-92.37 85.5,-83.32 85.5,-75.04"/>
+<polygon fill="none" stroke="#63b8ff" points="82,-101.76 85.5,-111.76 89,-101.76 82,-101.76"/>
 </a>
 </g>
 </g>
@@ -61,13 +64,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="74.5,-318.5 16.5,-318.5 16.5,-269.5 74.5,-269.5 74.5,-318.5"/>
-<text text-anchor="start" x="21.5" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="43.5" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="43.5" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="16.5,-301 16.5,-301 74.5,-301 74.5,-301 16.5,-301"/>
-<polygon fill="#666666" stroke="#666666" points="16.5,-286 16.5,-286 74.5,-286 74.5,-286 16.5,-286"/>
-<polygon fill="none" stroke="#666666" points="16.5,-269.5 16.5,-318.5 74.5,-318.5 74.5,-269.5 16.5,-269.5"/>
+<polygon fill="white" stroke="transparent" points="74.5,-344.5 16.5,-344.5 16.5,-295.5 74.5,-295.5 74.5,-344.5"/>
+<text text-anchor="start" x="21.5" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="43.5" y="-317" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="43.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="16.5,-327 16.5,-327 74.5,-327 74.5,-327 16.5,-327"/>
+<polygon fill="#666666" stroke="#666666" points="16.5,-312 16.5,-312 74.5,-312 74.5,-312 16.5,-312"/>
+<polygon fill="none" stroke="#666666" points="16.5,-295.5 16.5,-344.5 74.5,-344.5 74.5,-295.5 16.5,-295.5"/>
 </a>
 </g>
 </g>
@@ -75,8 +78,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M55.34,-259.8C60.48,-242.44 66.84,-220.98 72.39,-202.23"/>
-<polygon fill="none" stroke="#63b8ff" points="51.95,-258.9 52.47,-269.48 58.66,-260.89 51.95,-258.9"/>
+<path fill="none" stroke="#63b8ff" d="M54.61,-285.29C59.17,-268.43 64.81,-247.55 70.02,-228.27"/>
+<polygon fill="none" stroke="#63b8ff" points="51.16,-284.65 51.93,-295.22 57.91,-286.48 51.16,-284.65"/>
 </a>
 </g>
 </g>
@@ -84,19 +87,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="256.5,-339 92.5,-339 92.5,-249 256.5,-249 256.5,-339"/>
-<text text-anchor="start" x="149.5" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="172.5" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="96.5" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="109.5" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="96.5" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="109.5" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="96.5" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="109.5" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="109.5" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="92.5,-322 92.5,-322 256.5,-322 256.5,-322 92.5,-322"/>
-<polygon fill="#666666" stroke="#666666" points="92.5,-307 92.5,-307 256.5,-307 256.5,-307 92.5,-307"/>
-<polygon fill="none" stroke="#666666" points="92.5,-249 92.5,-339 256.5,-339 256.5,-249 92.5,-249"/>
+<polygon fill="white" stroke="transparent" points="256.5,-365 92.5,-365 92.5,-275 256.5,-275 256.5,-365"/>
+<text text-anchor="start" x="149.5" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="172.5" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="96.5" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="109.5" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="96.5" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="109.5" y="-308" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="96.5" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="109.5" y="-293" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="109.5" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="92.5,-348 92.5,-348 256.5,-348 256.5,-348 92.5,-348"/>
+<polygon fill="#666666" stroke="#666666" points="92.5,-333 92.5,-333 256.5,-333 256.5,-333 92.5,-333"/>
+<polygon fill="none" stroke="#666666" points="92.5,-275 92.5,-365 256.5,-365 256.5,-275 92.5,-275"/>
 </a>
 </g>
 </g>
@@ -104,23 +107,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M145.36,-248.8C137.75,-237.26 129.46,-224.68 121.54,-212.67"/>
-<polygon fill="none" stroke="#63b8ff" points="121.31,-212.32 114.67,-209.51 114.71,-202.3 121.35,-205.11 121.31,-212.32"/>
+<path fill="none" stroke="#63b8ff" d="M148.04,-275C141.11,-263.48 133.49,-250.8 126.01,-238.37"/>
+<polygon fill="none" stroke="#63b8ff" points="125.97,-238.3 119.45,-235.22 119.78,-228.01 126.3,-231.09 125.97,-238.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="150" y="-223" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="152" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="211.5,-425 137.5,-425 137.5,-376 211.5,-376 211.5,-425"/>
-<text text-anchor="start" x="142.5" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="172.5" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="172.5" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="137.5,-407.5 137.5,-407.5 211.5,-407.5 211.5,-407.5 137.5,-407.5"/>
-<polygon fill="#666666" stroke="#666666" points="137.5,-392.5 137.5,-392.5 211.5,-392.5 211.5,-392.5 137.5,-392.5"/>
-<polygon fill="none" stroke="#666666" points="137.5,-376 137.5,-425 211.5,-425 211.5,-376 137.5,-376"/>
+<polygon fill="white" stroke="transparent" points="211.5,-451 137.5,-451 137.5,-402 211.5,-402 211.5,-451"/>
+<text text-anchor="start" x="142.5" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="172.5" y="-423.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="172.5" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="137.5,-433.5 137.5,-433.5 211.5,-433.5 211.5,-433.5 137.5,-433.5"/>
+<polygon fill="#666666" stroke="#666666" points="137.5,-418.5 137.5,-418.5 211.5,-418.5 211.5,-418.5 137.5,-418.5"/>
+<polygon fill="none" stroke="#666666" points="137.5,-402 137.5,-451 211.5,-451 211.5,-402 137.5,-402"/>
 </a>
 </g>
 </g>
@@ -128,8 +131,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M174.5,-365.59C174.5,-357.16 174.5,-348.01 174.5,-339.18"/>
-<polygon fill="none" stroke="#63b8ff" points="171,-365.79 174.5,-375.79 178,-365.79 171,-365.79"/>
+<path fill="none" stroke="#63b8ff" d="M174.5,-391.59C174.5,-383.16 174.5,-374.01 174.5,-365.18"/>
+<polygon fill="none" stroke="#63b8ff" points="171,-391.79 174.5,-401.79 178,-391.79 171,-391.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode__inherit__graph.svg
index 67493a00286..d47b669b7b3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1PackedFuncTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::PackedFuncTypeNode Pages: 1 -->
-<svg width="179pt" height="309pt"
- viewBox="0.00 0.00 179.00 309.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 305)">
+<svg width="179pt" height="335pt"
+ viewBox="0.00 0.00 179.00 335.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 331)">
 <title>tvm::relax::PackedFuncTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,12 +30,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="163.5,-216 7.5,-216 7.5,-111 163.5,-111 163.5,-216"/>
-<text text-anchor="start" x="48.5" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="11.5" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="24.5" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="11.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="24.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="163.5,-242 7.5,-242 7.5,-111 163.5,-111 163.5,-242"/>
+<text text-anchor="start" x="48.5" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="11.5" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="24.5" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="11.5" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="24.5" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="11.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="24.5" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="24.5" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="11.5" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="24.5" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="11.5" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -43,10 +46,10 @@
 <text text-anchor="start" x="24.5" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="11.5" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="24.5" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="7.5,-198.5 7.5,-198.5 163.5,-198.5 163.5,-198.5 7.5,-198.5"/>
+<polygon fill="#666666" stroke="#666666" points="7.5,-224.5 7.5,-224.5 163.5,-224.5 163.5,-224.5 7.5,-224.5"/>
 <polygon fill="#666666" stroke="#666666" points="7.5,-153.5 7.5,-153.5 22.5,-153.5 22.5,-153.5 7.5,-153.5"/>
 <polygon fill="#666666" stroke="#666666" points="22.5,-153.5 22.5,-153.5 163.5,-153.5 163.5,-153.5 22.5,-153.5"/>
-<polygon fill="none" stroke="#666666" points="7.5,-111 7.5,-216 163.5,-216 163.5,-111 7.5,-111"/>
+<polygon fill="none" stroke="#666666" points="7.5,-111 7.5,-242 163.5,-242 163.5,-111 7.5,-111"/>
 </a>
 </g>
 </g>
@@ -54,8 +57,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M85.5,-100.8C85.5,-92.08 85.5,-83.35 85.5,-75.3"/>
-<polygon fill="none" stroke="#63b8ff" points="82,-100.99 85.5,-110.99 89,-100.99 82,-100.99"/>
+<path fill="none" stroke="#63b8ff" d="M85.5,-100.34C85.5,-91.62 85.5,-83.04 85.5,-75.18"/>
+<polygon fill="none" stroke="#63b8ff" points="82,-100.61 85.5,-110.61 89,-100.61 82,-100.61"/>
 </a>
 </g>
 </g>
@@ -63,13 +66,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="114.5,-301 56.5,-301 56.5,-252 114.5,-252 114.5,-301"/>
-<text text-anchor="start" x="61.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="83.5" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="83.5" y="-258.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="56.5,-283.5 56.5,-283.5 114.5,-283.5 114.5,-283.5 56.5,-283.5"/>
-<polygon fill="#666666" stroke="#666666" points="56.5,-268.5 56.5,-268.5 114.5,-268.5 114.5,-268.5 56.5,-268.5"/>
-<polygon fill="none" stroke="#666666" points="56.5,-252 56.5,-301 114.5,-301 114.5,-252 56.5,-252"/>
+<polygon fill="white" stroke="transparent" points="114.5,-327 56.5,-327 56.5,-278 114.5,-278 114.5,-327"/>
+<text text-anchor="start" x="61.5" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="83.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="83.5" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="56.5,-309.5 56.5,-309.5 114.5,-309.5 114.5,-309.5 56.5,-309.5"/>
+<polygon fill="#666666" stroke="#666666" points="56.5,-294.5 56.5,-294.5 114.5,-294.5 114.5,-294.5 56.5,-294.5"/>
+<polygon fill="none" stroke="#666666" points="56.5,-278 56.5,-327 114.5,-327 114.5,-278 56.5,-278"/>
 </a>
 </g>
 </g>
@@ -77,8 +80,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M85.5,-241.85C85.5,-233.79 85.5,-225 85.5,-216.32"/>
-<polygon fill="none" stroke="#63b8ff" points="82,-241.96 85.5,-251.96 89,-241.96 82,-241.96"/>
+<path fill="none" stroke="#63b8ff" d="M85.5,-267.85C85.5,-259.82 85.5,-250.98 85.5,-242.06"/>
+<polygon fill="none" stroke="#63b8ff" points="82,-267.88 85.5,-277.88 89,-267.88 82,-267.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode-members.html
index 26e97eafedf..45616373e28 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode-members.html
@@ -81,13 +81,14 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#af1b5e4d2553949d7785c6e9f29d2e6e5">IsUnknownNdim</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#a29b8e9bcf85a0517d20c1891af6aa727">ndim</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#adee137349be1aabd0f560053cb36d60a">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#aa1241db4460f5c68b4a586af2c67ea1d">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.ShapeType&quot;, ShapeTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#add3416d082274253baf955642455fcf6">values</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#af1b5e4d2553949d7785c6e9f29d2e6e5">IsUnknownNdim</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#a29b8e9bcf85a0517d20c1891af6aa727">ndim</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#adee137349be1aabd0f560053cb36d60a">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#aa1241db4460f5c68b4a586af2c67ea1d">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.ShapeType&quot;, ShapeTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#add3416d082274253baf955642455fcf6">values</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html">tvm::relax::ShapeTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode.html
index baef957f42b..3acac8ee8a3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::relax::ShapeTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1ShapeTypeNode__inherit__graph.svg" width="219" height="452"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1ShapeTypeNode__inherit__graph.svg" width="219" height="487"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::ShapeTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1ShapeTypeNode__coll__graph.svg" width="343" height="618"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1ShapeTypeNode__coll__graph.svg" width="343" height="652"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -133,6 +133,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode__coll__graph.svg
index 87112c90855..e4ca871569f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::ShapeTypeNode Pages: 1 -->
-<svg width="257pt" height="463pt"
- viewBox="0.00 0.00 257.00 463.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 459)">
+<svg width="257pt" height="489pt"
+ viewBox="0.00 0.00 257.00 489.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 485)">
 <title>tvm::relax::ShapeTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -36,10 +36,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-232 0,-232 0,-142 156,-142 156,-232"/>
-<text text-anchor="start" x="41" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-258 0,-258 0,-142 156,-142 156,-258"/>
+<text text-anchor="start" x="41" y="-246" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -47,10 +50,10 @@
 <text text-anchor="start" x="17" y="-164" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-149" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-149" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-215 0,-215 156,-215 156,-215 0,-215"/>
+<polygon fill="#666666" stroke="#666666" points="0,-241 0,-241 156,-241 156,-241 0,-241"/>
 <polygon fill="#666666" stroke="#666666" points="0,-185 0,-185 15,-185 15,-185 0,-185"/>
 <polygon fill="#666666" stroke="#666666" points="15,-185 15,-185 156,-185 156,-185 15,-185"/>
-<polygon fill="none" stroke="#666666" points="0,-142 0,-232 156,-232 156,-142 0,-142"/>
+<polygon fill="none" stroke="#666666" points="0,-142 0,-258 156,-258 156,-142 0,-142"/>
 </a>
 </g>
 </g>
@@ -58,8 +61,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-131.76C78,-122.99 78,-113.94 78,-105.23"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-131.88 78,-141.88 81.5,-131.88 74.5,-131.88"/>
+<path fill="none" stroke="#63b8ff" d="M78,-131.88C78,-122.92 78,-113.85 78,-105.21"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-131.91 78,-141.91 81.5,-131.91 74.5,-131.91"/>
 </a>
 </g>
 </g>
@@ -67,13 +70,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-348.5 9,-348.5 9,-299.5 67,-299.5 67,-348.5"/>
-<text text-anchor="start" x="14" y="-336" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-331 9,-331 67,-331 67,-331 9,-331"/>
-<polygon fill="#666666" stroke="#666666" points="9,-316 9,-316 67,-316 67,-316 9,-316"/>
-<polygon fill="none" stroke="#666666" points="9,-299.5 9,-348.5 67,-348.5 67,-299.5 9,-299.5"/>
+<polygon fill="white" stroke="transparent" points="67,-374.5 9,-374.5 9,-325.5 67,-325.5 67,-374.5"/>
+<text text-anchor="start" x="14" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-357 9,-357 67,-357 67,-357 9,-357"/>
+<polygon fill="#666666" stroke="#666666" points="9,-342 9,-342 67,-342 67,-342 9,-342"/>
+<polygon fill="none" stroke="#666666" points="9,-325.5 9,-374.5 67,-374.5 67,-325.5 9,-325.5"/>
 </a>
 </g>
 </g>
@@ -81,8 +84,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.84,-289.8C52.98,-272.44 59.34,-250.98 64.89,-232.23"/>
-<polygon fill="none" stroke="#63b8ff" points="44.45,-288.9 44.97,-299.48 51.16,-290.89 44.45,-288.9"/>
+<path fill="none" stroke="#63b8ff" d="M47.11,-315.29C51.67,-298.43 57.31,-277.55 62.52,-258.27"/>
+<polygon fill="none" stroke="#63b8ff" points="43.66,-314.65 44.43,-325.22 50.41,-316.48 43.66,-314.65"/>
 </a>
 </g>
 </g>
@@ -90,19 +93,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-369 85,-369 85,-279 249,-279 249,-369"/>
-<text text-anchor="start" x="142" y="-357" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="165" y="-342" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="89" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-327" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="89" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="89" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-297" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="102" y="-286" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="85,-352 85,-352 249,-352 249,-352 85,-352"/>
-<polygon fill="#666666" stroke="#666666" points="85,-337 85,-337 249,-337 249,-337 85,-337"/>
-<polygon fill="none" stroke="#666666" points="85,-279 85,-369 249,-369 249,-279 85,-279"/>
+<polygon fill="white" stroke="transparent" points="249,-395 85,-395 85,-305 249,-305 249,-395"/>
+<text text-anchor="start" x="142" y="-383" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="165" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="89" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="89" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="89" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="102" y="-312" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="85,-378 85,-378 249,-378 249,-378 85,-378"/>
+<polygon fill="#666666" stroke="#666666" points="85,-363 85,-363 249,-363 249,-363 85,-363"/>
+<polygon fill="none" stroke="#666666" points="85,-305 85,-395 249,-395 249,-305 85,-305"/>
 </a>
 </g>
 </g>
@@ -110,23 +113,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.86,-278.8C130.25,-267.26 121.96,-254.68 114.04,-242.67"/>
-<polygon fill="none" stroke="#63b8ff" points="113.81,-242.32 107.17,-239.51 107.21,-232.3 113.85,-235.11 113.81,-242.32"/>
+<path fill="none" stroke="#63b8ff" d="M140.54,-305C133.61,-293.48 125.99,-280.8 118.51,-268.37"/>
+<polygon fill="none" stroke="#63b8ff" points="118.47,-268.3 111.95,-265.22 112.28,-258.01 118.8,-261.09 118.47,-268.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="142.5" y="-253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="144.5" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="204,-455 130,-455 130,-406 204,-406 204,-455"/>
-<text text-anchor="start" x="135" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="165" y="-427.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="165" y="-412.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="130,-437.5 130,-437.5 204,-437.5 204,-437.5 130,-437.5"/>
-<polygon fill="#666666" stroke="#666666" points="130,-422.5 130,-422.5 204,-422.5 204,-422.5 130,-422.5"/>
-<polygon fill="none" stroke="#666666" points="130,-406 130,-455 204,-455 204,-406 130,-406"/>
+<polygon fill="white" stroke="transparent" points="204,-481 130,-481 130,-432 204,-432 204,-481"/>
+<text text-anchor="start" x="135" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="165" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="165" y="-438.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="130,-463.5 130,-463.5 204,-463.5 204,-463.5 130,-463.5"/>
+<polygon fill="#666666" stroke="#666666" points="130,-448.5 130,-448.5 204,-448.5 204,-448.5 130,-448.5"/>
+<polygon fill="none" stroke="#666666" points="130,-432 130,-481 204,-481 204,-432 130,-432"/>
 </a>
 </g>
 </g>
@@ -134,8 +137,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M167,-395.59C167,-387.16 167,-378.01 167,-369.18"/>
-<polygon fill="none" stroke="#63b8ff" points="163.5,-395.79 167,-405.79 170.5,-395.79 163.5,-395.79"/>
+<path fill="none" stroke="#63b8ff" d="M167,-421.59C167,-413.16 167,-404.01 167,-395.18"/>
+<polygon fill="none" stroke="#63b8ff" points="163.5,-421.79 167,-431.79 170.5,-421.79 163.5,-421.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode__inherit__graph.svg
index 7d91a6fb5fe..4f03efe3923 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ShapeTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::ShapeTypeNode Pages: 1 -->
-<svg width="164pt" height="339pt"
- viewBox="0.00 0.00 164.00 339.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 335)">
+<svg width="164pt" height="365pt"
+ viewBox="0.00 0.00 164.00 365.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 361)">
 <title>tvm::relax::ShapeTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -36,12 +36,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-246 0,-246 0,-141 156,-141 156,-246"/>
-<text text-anchor="start" x="41" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-272 0,-272 0,-141 156,-141 156,-272"/>
+<text text-anchor="start" x="41" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -49,10 +52,10 @@
 <text text-anchor="start" x="17" y="-162.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-228.5 0,-228.5 156,-228.5 156,-228.5 0,-228.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-254.5 0,-254.5 156,-254.5 156,-254.5 0,-254.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-183.5 0,-183.5 15,-183.5 15,-183.5 0,-183.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-183.5 15,-183.5 156,-183.5 156,-183.5 15,-183.5"/>
-<polygon fill="none" stroke="#666666" points="0,-141 0,-246 156,-246 156,-141 0,-141"/>
+<polygon fill="none" stroke="#666666" points="0,-141 0,-272 156,-272 156,-141 0,-141"/>
 </a>
 </g>
 </g>
@@ -60,8 +63,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-130.56C78,-122.12 78,-113.53 78,-105.3"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-130.74 78,-140.74 81.5,-130.74 74.5,-130.74"/>
+<path fill="none" stroke="#63b8ff" d="M78,-130.6C78,-122.05 78,-113.48 78,-105.33"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-130.6 78,-140.6 81.5,-130.6 74.5,-130.6"/>
 </a>
 </g>
 </g>
@@ -69,13 +72,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-331 49,-331 49,-282 107,-282 107,-331"/>
-<text text-anchor="start" x="54" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-313.5 49,-313.5 107,-313.5 107,-313.5 49,-313.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-298.5 49,-298.5 107,-298.5 107,-298.5 49,-298.5"/>
-<polygon fill="none" stroke="#666666" points="49,-282 49,-331 107,-331 107,-282 49,-282"/>
+<polygon fill="white" stroke="transparent" points="107,-357 49,-357 49,-308 107,-308 107,-357"/>
+<text text-anchor="start" x="54" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-339.5 49,-339.5 107,-339.5 107,-339.5 49,-339.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-324.5 49,-324.5 107,-324.5 107,-324.5 49,-324.5"/>
+<polygon fill="none" stroke="#666666" points="49,-308 49,-357 107,-357 107,-308 49,-308"/>
 </a>
 </g>
 </g>
@@ -83,8 +86,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-271.85C78,-263.79 78,-255 78,-246.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-271.96 78,-281.96 81.5,-271.96 74.5,-271.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-297.85C78,-289.82 78,-280.98 78,-272.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-297.88 78,-307.88 81.5,-297.88 74.5,-297.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode-members.html
index 54c3be7b2b5..ef978a43ed8 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode-members.html
@@ -81,17 +81,18 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a9393d58a48679656580feaac8bdacaa9">dtype</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a586feda875d5d97a264c6baccdd4d787">GetShape</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a4eb0299269de2a93b6e1f8d21cd279d7">IsUnknownDtype</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#adaece7200a4417a7c6da03c84e77b3a3">IsUnknownNdim</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#ae889a7f7d8949d13d6ab571df5ddeaf6">ndim</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a9b5113c27f76d9a4f7cf6a1f58b3c4a8">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#adca4d8c9c80328aae4267b0c0ea0f496">shape</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a143df44cb4cc5d76285b14286ac3a181">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.TensorType&quot;, TensorTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a67c8791525c1523c77126c50826aab9e">vdevice</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a9393d58a48679656580feaac8bdacaa9">dtype</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a586feda875d5d97a264c6baccdd4d787">GetShape</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a4eb0299269de2a93b6e1f8d21cd279d7">IsUnknownDtype</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#adaece7200a4417a7c6da03c84e77b3a3">IsUnknownNdim</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#ae889a7f7d8949d13d6ab571df5ddeaf6">ndim</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a9b5113c27f76d9a4f7cf6a1f58b3c4a8">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#adca4d8c9c80328aae4267b0c0ea0f496">shape</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a143df44cb4cc5d76285b14286ac3a181">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.TensorType&quot;, TensorTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html#a67c8791525c1523c77126c50826aab9e">vdevice</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1TensorTypeNode.html">tvm::relax::TensorTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode.html
index 63791f90448..794457fce12 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::relax::TensorTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1TensorTypeNode__inherit__graph.svg" width="219" height="532"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1TensorTypeNode__inherit__graph.svg" width="219" height="567"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::TensorTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1TensorTypeNode__coll__graph.svg" width="343" height="698"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1TensorTypeNode__coll__graph.svg" width="343" height="732"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -143,6 +143,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode__coll__graph.svg
index 839c7aa8622..f98e9772101 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::TensorTypeNode Pages: 1 -->
-<svg width="257pt" height="523pt"
- viewBox="0.00 0.00 257.00 523.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 519)">
+<svg width="257pt" height="549pt"
+ viewBox="0.00 0.00 257.00 549.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 545)">
 <title>tvm::relax::TensorTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -44,10 +44,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-292 0,-292 0,-202 156,-202 156,-292"/>
-<text text-anchor="start" x="41" y="-280" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-265" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-265" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-318 0,-318 0,-202 156,-202 156,-318"/>
+<text text-anchor="start" x="41" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-291" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-276" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-265" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-235" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -55,10 +58,10 @@
 <text text-anchor="start" x="17" y="-224" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-209" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-209" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-275 0,-275 156,-275 156,-275 0,-275"/>
+<polygon fill="#666666" stroke="#666666" points="0,-301 0,-301 156,-301 156,-301 0,-301"/>
 <polygon fill="#666666" stroke="#666666" points="0,-245 0,-245 15,-245 15,-245 0,-245"/>
 <polygon fill="#666666" stroke="#666666" points="15,-245 15,-245 156,-245 156,-245 15,-245"/>
-<polygon fill="none" stroke="#666666" points="0,-202 0,-292 156,-292 156,-202 0,-202"/>
+<polygon fill="none" stroke="#666666" points="0,-202 0,-318 156,-318 156,-202 0,-202"/>
 </a>
 </g>
 </g>
@@ -66,8 +69,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-191.46C78,-182.95 78,-173.99 78,-165.03"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-191.6 78,-201.6 81.5,-191.6 74.5,-191.6"/>
+<path fill="none" stroke="#63b8ff" d="M78,-191.3C78,-182.78 78,-174 78,-165.29"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-191.53 78,-201.53 81.5,-191.53 74.5,-191.53"/>
 </a>
 </g>
 </g>
@@ -75,13 +78,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-408.5 9,-408.5 9,-359.5 67,-359.5 67,-408.5"/>
-<text text-anchor="start" x="14" y="-396" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-381" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-366" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-391 9,-391 67,-391 67,-391 9,-391"/>
-<polygon fill="#666666" stroke="#666666" points="9,-376 9,-376 67,-376 67,-376 9,-376"/>
-<polygon fill="none" stroke="#666666" points="9,-359.5 9,-408.5 67,-408.5 67,-359.5 9,-359.5"/>
+<polygon fill="white" stroke="transparent" points="67,-434.5 9,-434.5 9,-385.5 67,-385.5 67,-434.5"/>
+<text text-anchor="start" x="14" y="-422" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-407" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-392" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-417 9,-417 67,-417 67,-417 9,-417"/>
+<polygon fill="#666666" stroke="#666666" points="9,-402 9,-402 67,-402 67,-402 9,-402"/>
+<polygon fill="none" stroke="#666666" points="9,-385.5 9,-434.5 67,-434.5 67,-385.5 9,-385.5"/>
 </a>
 </g>
 </g>
@@ -89,8 +92,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.84,-349.8C52.98,-332.44 59.34,-310.98 64.89,-292.23"/>
-<polygon fill="none" stroke="#63b8ff" points="44.45,-348.9 44.97,-359.48 51.16,-350.89 44.45,-348.9"/>
+<path fill="none" stroke="#63b8ff" d="M47.11,-375.29C51.67,-358.43 57.31,-337.55 62.52,-318.27"/>
+<polygon fill="none" stroke="#63b8ff" points="43.66,-374.65 44.43,-385.22 50.41,-376.48 43.66,-374.65"/>
 </a>
 </g>
 </g>
@@ -98,19 +101,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-429 85,-429 85,-339 249,-339 249,-429"/>
-<text text-anchor="start" x="142" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="165" y="-402" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="89" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-387" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="89" y="-372" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-372" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="89" y="-357" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="102" y="-357" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="102" y="-346" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="85,-412 85,-412 249,-412 249,-412 85,-412"/>
-<polygon fill="#666666" stroke="#666666" points="85,-397 85,-397 249,-397 249,-397 85,-397"/>
-<polygon fill="none" stroke="#666666" points="85,-339 85,-429 249,-429 249,-339 85,-339"/>
+<polygon fill="white" stroke="transparent" points="249,-455 85,-455 85,-365 249,-365 249,-455"/>
+<text text-anchor="start" x="142" y="-443" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="165" y="-428" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="89" y="-413" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-413" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="89" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-398" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="89" y="-383" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="102" y="-383" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="102" y="-372" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="85,-438 85,-438 249,-438 249,-438 85,-438"/>
+<polygon fill="#666666" stroke="#666666" points="85,-423 85,-423 249,-423 249,-423 85,-423"/>
+<polygon fill="none" stroke="#666666" points="85,-365 85,-455 249,-455 249,-365 85,-365"/>
 </a>
 </g>
 </g>
@@ -118,23 +121,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M137.86,-338.8C130.25,-327.26 121.96,-314.68 114.04,-302.67"/>
-<polygon fill="none" stroke="#63b8ff" points="113.81,-302.32 107.17,-299.51 107.21,-292.3 113.85,-295.11 113.81,-302.32"/>
+<path fill="none" stroke="#63b8ff" d="M140.54,-365C133.61,-353.48 125.99,-340.8 118.51,-328.37"/>
+<polygon fill="none" stroke="#63b8ff" points="118.47,-328.3 111.95,-325.22 112.28,-318.01 118.8,-321.09 118.47,-328.3"/>
 </a>
 </g>
-<text text-anchor="middle" x="142.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="144.5" y="-339" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="204,-515 130,-515 130,-466 204,-466 204,-515"/>
-<text text-anchor="start" x="135" y="-502.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="165" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="165" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="130,-497.5 130,-497.5 204,-497.5 204,-497.5 130,-497.5"/>
-<polygon fill="#666666" stroke="#666666" points="130,-482.5 130,-482.5 204,-482.5 204,-482.5 130,-482.5"/>
-<polygon fill="none" stroke="#666666" points="130,-466 130,-515 204,-515 204,-466 130,-466"/>
+<polygon fill="white" stroke="transparent" points="204,-541 130,-541 130,-492 204,-492 204,-541"/>
+<text text-anchor="start" x="135" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="165" y="-513.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="165" y="-498.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="130,-523.5 130,-523.5 204,-523.5 204,-523.5 130,-523.5"/>
+<polygon fill="#666666" stroke="#666666" points="130,-508.5 130,-508.5 204,-508.5 204,-508.5 130,-508.5"/>
+<polygon fill="none" stroke="#666666" points="130,-492 130,-541 204,-541 204,-492 130,-492"/>
 </a>
 </g>
 </g>
@@ -142,8 +145,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M167,-455.59C167,-447.16 167,-438.01 167,-429.18"/>
-<polygon fill="none" stroke="#63b8ff" points="163.5,-455.79 167,-465.79 170.5,-455.79 163.5,-455.79"/>
+<path fill="none" stroke="#63b8ff" d="M167,-481.59C167,-473.16 167,-464.01 167,-455.18"/>
+<polygon fill="none" stroke="#63b8ff" points="163.5,-481.79 167,-491.79 170.5,-481.79 163.5,-481.79"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode__inherit__graph.svg
index a9cdfc434ee..1142ccd59d4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1TensorTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::TensorTypeNode Pages: 1 -->
-<svg width="164pt" height="399pt"
- viewBox="0.00 0.00 164.00 399.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 395)">
+<svg width="164pt" height="425pt"
+ viewBox="0.00 0.00 164.00 425.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 421)">
 <title>tvm::relax::TensorTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -44,12 +44,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-306 0,-306 0,-201 156,-201 156,-306"/>
-<text text-anchor="start" x="41" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-332 0,-332 0,-201 156,-201 156,-332"/>
+<text text-anchor="start" x="41" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -57,10 +60,10 @@
 <text text-anchor="start" x="17" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-207.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-207.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-288.5 0,-288.5 156,-288.5 156,-288.5 0,-288.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-314.5 0,-314.5 156,-314.5 156,-314.5 0,-314.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-243.5 0,-243.5 15,-243.5 15,-243.5 0,-243.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-243.5 15,-243.5 156,-243.5 156,-243.5 15,-243.5"/>
-<polygon fill="none" stroke="#666666" points="0,-201 0,-306 156,-306 156,-201 0,-201"/>
+<polygon fill="none" stroke="#666666" points="0,-201 0,-332 156,-332 156,-201 0,-201"/>
 </a>
 </g>
 </g>
@@ -68,8 +71,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-190.82C78,-182.42 78,-173.69 78,-165.01"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-190.88 78,-200.88 81.5,-190.88 74.5,-190.88"/>
+<path fill="none" stroke="#63b8ff" d="M78,-190.67C78,-182.26 78,-173.66 78,-165.16"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-190.82 78,-200.82 81.5,-190.82 74.5,-190.82"/>
 </a>
 </g>
 </g>
@@ -77,13 +80,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-391 49,-391 49,-342 107,-342 107,-391"/>
-<text text-anchor="start" x="54" y="-378.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-363.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-373.5 49,-373.5 107,-373.5 107,-373.5 49,-373.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-358.5 49,-358.5 107,-358.5 107,-358.5 49,-358.5"/>
-<polygon fill="none" stroke="#666666" points="49,-342 49,-391 107,-391 107,-342 49,-342"/>
+<polygon fill="white" stroke="transparent" points="107,-417 49,-417 49,-368 107,-368 107,-417"/>
+<text text-anchor="start" x="54" y="-404.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-389.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-399.5 49,-399.5 107,-399.5 107,-399.5 49,-399.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-384.5 49,-384.5 107,-384.5 107,-384.5 49,-384.5"/>
+<polygon fill="none" stroke="#666666" points="49,-368 49,-417 107,-417 107,-368 49,-368"/>
 </a>
 </g>
 </g>
@@ -91,8 +94,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-331.85C78,-323.79 78,-315 78,-306.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-331.96 78,-341.96 81.5,-331.96 74.5,-331.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-357.85C78,-349.82 78,-340.98 78,-332.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-357.88 78,-367.88 81.5,-357.88 74.5,-357.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode-members.html
index f6d60e3e7eb..f340dc6a8d8 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode-members.html
@@ -81,15 +81,16 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a3b89ba3edb5418e9369f3440ca1485a1">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7f595b6c0">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a61de2bdcf9c0792583d77db9283f24a6">device_mesh</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#ae220ba4439014b88dc1da27862a75508">DTensorTypeNode</a>(ffi::UnsafeInit)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#ae5c9fc429eb819ebad2c27e9136cff1e">DTensorTypeNode</a>(TensorType tensor_ty, DeviceMesh device_mesh, Placement placement)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a8aa315762ba57d4080e8b2eaad769bc9">placement</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a68fa99fe2ae6575414d970cdf9aee915">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a26dc2379bb166c7fe99d45858f69de42">tensor_ty</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#abb6672b5916804d73a5291b43e831db2">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.DTensorType&quot;, DTensorTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a61de2bdcf9c0792583d77db9283f24a6">device_mesh</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#ae220ba4439014b88dc1da27862a75508">DTensorTypeNode</a>(ffi::UnsafeInit)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#ae5c9fc429eb819ebad2c27e9136cff1e">DTensorTypeNode</a>(TensorType tensor_ty, DeviceMesh device_mesh, Placement placement)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a8aa315762ba57d4080e8b2eaad769bc9">placement</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a68fa99fe2ae6575414d970cdf9aee915">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a7b06d502a5162d51bb205691bbb95bb5">span</a></td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a26dc2379bb166c7fe99d45858f69de42">tensor_ty</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html#a5a07ff7b7fc5146f257ffa17391215a8">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;ir.Type&quot;, TypeNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#abb6672b5916804d73a5291b43e831db2">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;relax.DTensorType&quot;, DTensorTypeNode, TypeNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html">tvm::relax::distributed::DTensorTypeNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html
index 105a1a3ef56..e1caefcd2f0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::relax::distributed::DTensorTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__inherit__graph.svg" width="219" height="507"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__inherit__graph.svg" width="219" height="542"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::distributed::DTensorTypeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__coll__graph.svg" width="998" height="786"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__coll__graph.svg" width="998" height="800"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -138,6 +138,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1TypeNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1TypeNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1TypeNode.html">tvm::TypeNode</a></td></tr>
 <tr class="memitem:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a4d408897b10b369c127803f7f595b6c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a4d408897b10b369c127803f7 [...]
 <tr class="separator:a4d408897b10b369c127803f7f595b6c0 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a572a584101469f4e16cb36229b25d4d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1TypeNode.html#a572a584101469f4e16cb36229b25d4d4">_ty [...]
+<tr class="separator:a572a584101469f4e16cb36229b25d4d4 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode" id="r_a3b89ba3edb5418e9369f3440ca1485a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtv [...]
 <tr class="separator:a3b89ba3edb5418e9369f3440ca1485a1 inherit pub_static_attribs_classtvm_1_1TypeNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__coll__graph.svg
index 7693fedb4aa..98f98aa6f53 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::distributed::DTensorTypeNode Pages: 1 -->
-<svg width="748pt" height="589pt"
- viewBox="0.00 0.00 748.00 589.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 585)">
+<svg width="748pt" height="600pt"
+ viewBox="0.00 0.00 748.00 600.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 596)">
 <title>tvm::relax::distributed::DTensorTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -35,21 +35,24 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="236,-260.5 80,-260.5 80,-170.5 236,-170.5 236,-260.5"/>
-<text text-anchor="start" x="121" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="84" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="84" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
-<text text-anchor="start" x="84" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="97" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="84" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="80,-243.5 80,-243.5 236,-243.5 236,-243.5 80,-243.5"/>
-<polygon fill="#666666" stroke="#666666" points="80,-213.5 80,-213.5 95,-213.5 95,-213.5 80,-213.5"/>
-<polygon fill="#666666" stroke="#666666" points="95,-213.5 95,-213.5 236,-213.5 236,-213.5 95,-213.5"/>
-<polygon fill="none" stroke="#666666" points="80,-170.5 80,-260.5 236,-260.5 236,-170.5 80,-170.5"/>
+<polygon fill="white" stroke="transparent" points="236,-279 80,-279 80,-163 236,-163 236,-279"/>
+<text text-anchor="start" x="121" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="84" y="-252" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-252" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="84" y="-237" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-237" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="97" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
+<text text-anchor="start" x="84" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="84" y="-196" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-196" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="97" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="84" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="80,-262 80,-262 236,-262 236,-262 80,-262"/>
+<polygon fill="#666666" stroke="#666666" points="80,-206 80,-206 95,-206 95,-206 80,-206"/>
+<polygon fill="#666666" stroke="#666666" points="95,-206 95,-206 236,-206 236,-206 95,-206"/>
+<polygon fill="none" stroke="#666666" points="80,-163 80,-279 236,-279 236,-163 80,-163"/>
 </a>
 </g>
 </g>
@@ -57,8 +60,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M242.45,-165.52C243.98,-164.67 245.5,-163.83 247,-163 286.1,-141.43 330.02,-118.25 366.55,-99.27"/>
-<polygon fill="none" stroke="#63b8ff" points="240.64,-162.52 233.62,-170.46 244.06,-168.63 240.64,-162.52"/>
+<path fill="none" stroke="#63b8ff" d="M245.03,-164.15C245.69,-163.76 246.35,-163.38 247,-163 285.77,-140.46 329.86,-117.09 366.58,-98.22"/>
+<polygon fill="none" stroke="#63b8ff" points="243.21,-161.16 236.39,-169.28 246.78,-167.18 243.21,-161.16"/>
 </a>
 </g>
 </g>
@@ -66,13 +69,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-474.5 0,-474.5 0,-425.5 58,-425.5 58,-474.5"/>
-<text text-anchor="start" x="5" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-457 0,-457 58,-457 58,-457 0,-457"/>
-<polygon fill="#666666" stroke="#666666" points="0,-442 0,-442 58,-442 58,-442 0,-442"/>
-<polygon fill="none" stroke="#666666" points="0,-425.5 0,-474.5 58,-474.5 58,-425.5 0,-425.5"/>
+<polygon fill="white" stroke="transparent" points="58,-485.5 0,-485.5 0,-436.5 58,-436.5 58,-485.5"/>
+<text text-anchor="start" x="5" y="-473" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-458" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-443" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-468 0,-468 58,-468 58,-468 0,-468"/>
+<polygon fill="#666666" stroke="#666666" points="0,-453 0,-453 58,-453 58,-453 0,-453"/>
+<polygon fill="none" stroke="#666666" points="0,-436.5 0,-485.5 58,-485.5 58,-436.5 0,-436.5"/>
 </a>
 </g>
 </g>
@@ -80,8 +83,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M47.04,-416.49C69.58,-375.86 108.25,-306.17 133.47,-260.72"/>
-<polygon fill="none" stroke="#63b8ff" points="43.87,-414.98 42.08,-425.43 49.99,-418.38 43.87,-414.98"/>
+<path fill="none" stroke="#63b8ff" d="M46.78,-427.19C67.44,-389.08 101.89,-325.52 126.99,-279.22"/>
+<polygon fill="none" stroke="#63b8ff" points="43.53,-425.85 41.84,-436.31 49.68,-429.19 43.53,-425.85"/>
 </a>
 </g>
 </g>
@@ -89,19 +92,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-495 76,-495 76,-405 240,-405 240,-495"/>
-<text text-anchor="start" x="133" y="-483" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-468" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-453" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-453" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-423" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-423" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-412" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-478 76,-478 240,-478 240,-478 76,-478"/>
-<polygon fill="#666666" stroke="#666666" points="76,-463 76,-463 240,-463 240,-463 76,-463"/>
-<polygon fill="none" stroke="#666666" points="76,-405 76,-495 240,-495 240,-405 76,-405"/>
+<polygon fill="white" stroke="transparent" points="240,-506 76,-506 76,-416 240,-416 240,-506"/>
+<text text-anchor="start" x="133" y="-494" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-479" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-464" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-464" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-449" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-449" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-434" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-434" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-423" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-489 76,-489 240,-489 240,-489 76,-489"/>
+<polygon fill="#666666" stroke="#666666" points="76,-474 76,-474 240,-474 240,-474 76,-474"/>
+<polygon fill="none" stroke="#666666" points="76,-416 76,-506 240,-506 240,-416 76,-416"/>
 </a>
 </g>
 </g>
@@ -109,23 +112,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158,-405C158,-367.53 158,-313.49 158,-272.86"/>
-<polygon fill="none" stroke="#63b8ff" points="158,-272.72 154,-266.72 158,-260.72 162,-266.72 158,-272.72"/>
+<path fill="none" stroke="#63b8ff" d="M158,-415.79C158,-380.83 158,-331.38 158,-291.18"/>
+<polygon fill="none" stroke="#63b8ff" points="158,-291.03 154,-285.03 158,-279.03 162,-285.03 158,-291.03"/>
 </a>
 </g>
-<text text-anchor="middle" x="175.5" y="-334" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="175.5" y="-345" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="469,-581 395,-581 395,-532 469,-532 469,-581"/>
-<text text-anchor="start" x="400" y="-568.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="430" y="-553.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="430" y="-538.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="395,-563.5 395,-563.5 469,-563.5 469,-563.5 395,-563.5"/>
-<polygon fill="#666666" stroke="#666666" points="395,-548.5 395,-548.5 469,-548.5 469,-548.5 395,-548.5"/>
-<polygon fill="none" stroke="#666666" points="395,-532 395,-581 469,-581 469,-532 395,-532"/>
+<polygon fill="white" stroke="transparent" points="469,-592 395,-592 395,-543 469,-543 469,-592"/>
+<text text-anchor="start" x="400" y="-579.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="430" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="430" y="-549.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="395,-574.5 395,-574.5 469,-574.5 469,-574.5 395,-574.5"/>
+<polygon fill="#666666" stroke="#666666" points="395,-559.5 395,-559.5 469,-559.5 469,-559.5 395,-559.5"/>
+<polygon fill="none" stroke="#666666" points="395,-543 395,-592 469,-592 469,-543 395,-543"/>
 </a>
 </g>
 </g>
@@ -133,8 +136,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M385.07,-541.84C347.74,-530.54 294.41,-513.39 249,-495 246.07,-493.81 243.11,-492.58 240.12,-491.3"/>
-<polygon fill="none" stroke="#63b8ff" points="384.1,-545.21 394.68,-544.73 386.11,-538.5 384.1,-545.21"/>
+<path fill="none" stroke="#63b8ff" d="M385.07,-552.84C347.74,-541.54 294.41,-524.39 249,-506 246.07,-504.81 243.11,-503.58 240.12,-502.3"/>
+<polygon fill="none" stroke="#63b8ff" points="384.1,-556.21 394.68,-555.73 386.11,-549.5 384.1,-556.21"/>
 </a>
 </g>
 </g>
@@ -142,19 +145,19 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="transparent" points="443.5,-495 258.5,-495 258.5,-405 443.5,-405 443.5,-495"/>
-<text text-anchor="start" x="327" y="-483" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="349.5" y="-468" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="263" y="-453" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-453" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
-<text text-anchor="start" x="263" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="276" y="-427" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="263" y="-412" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-412" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="259,-478 259,-478 444,-478 444,-478 259,-478"/>
-<polygon fill="#666666" stroke="#666666" points="259,-463 259,-463 444,-463 444,-463 259,-463"/>
-<polygon fill="none" stroke="#666666" points="258.5,-405 258.5,-495 443.5,-495 443.5,-405 258.5,-405"/>
+<polygon fill="white" stroke="transparent" points="443.5,-506 258.5,-506 258.5,-416 443.5,-416 443.5,-506"/>
+<text text-anchor="start" x="327" y="-494" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="349.5" y="-479" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="263" y="-464" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-464" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="263" y="-449" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-449" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="276" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="263" y="-423" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-423" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="259,-489 259,-489 444,-489 444,-489 259,-489"/>
+<polygon fill="#666666" stroke="#666666" points="259,-474 259,-474 444,-474 444,-474 259,-474"/>
+<polygon fill="none" stroke="#666666" points="258.5,-416 258.5,-506 443.5,-506 443.5,-416 258.5,-416"/>
 </a>
 </g>
 </g>
@@ -162,8 +165,8 @@
 <g id="edge7_Node000007_Node000005" class="edge">
 <title>Node5&#45;&gt;Node7</title>
 <g id="a_edge7_Node000007_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M407.44,-523.82C400.45,-514.79 392.7,-504.8 385.24,-495.18"/>
-<polygon fill="none" stroke="#63b8ff" points="404.73,-526.03 413.62,-531.79 410.26,-521.74 404.73,-526.03"/>
+<path fill="none" stroke="#63b8ff" d="M407.44,-534.82C400.45,-525.79 392.7,-515.8 385.24,-506.18"/>
+<polygon fill="none" stroke="#63b8ff" points="404.73,-537.03 413.62,-542.79 410.26,-532.74 404.73,-537.03"/>
 </a>
 </g>
 </g>
@@ -171,15 +174,15 @@
 <g id="Node000009" class="node">
 <title>Node9</title>
 <g id="a_Node000009"><a xlink:href="classtvm_1_1GlobalInfo.html" target="_top" xlink:title="Managed reference to GlobalInfoNode.">
-<polygon fill="white" stroke="transparent" points="626,-480 462,-480 462,-420 626,-420 626,-480"/>
-<text text-anchor="start" x="506" y="-468" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GlobalInfo</text>
-<text text-anchor="start" x="542" y="-453" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="466" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="479" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="479" y="-427" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="462,-463 462,-463 626,-463 626,-463 462,-463"/>
-<polygon fill="#666666" stroke="#666666" points="462,-448 462,-448 626,-448 626,-448 462,-448"/>
-<polygon fill="none" stroke="#666666" points="462,-420 462,-480 626,-480 626,-420 462,-420"/>
+<polygon fill="white" stroke="transparent" points="626,-491 462,-491 462,-431 626,-431 626,-491"/>
+<text text-anchor="start" x="506" y="-479" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GlobalInfo</text>
+<text text-anchor="start" x="542" y="-464" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="466" y="-449" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="479" y="-449" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="479" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="462,-474 462,-474 626,-474 626,-474 462,-474"/>
+<polygon fill="#666666" stroke="#666666" points="462,-459 462,-459 626,-459 626,-459 462,-459"/>
+<polygon fill="none" stroke="#666666" points="462,-431 462,-491 626,-491 626,-431 462,-431"/>
 </a>
 </g>
 </g>
@@ -187,8 +190,8 @@
 <g id="edge10_Node000009_Node000005" class="edge">
 <title>Node5&#45;&gt;Node9</title>
 <g id="a_edge10_Node000009_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M465.02,-524.69C480.08,-510.64 497.83,-494.07 512.69,-480.22"/>
-<polygon fill="none" stroke="#63b8ff" points="462.34,-522.41 457.41,-531.79 467.11,-527.52 462.34,-522.41"/>
+<path fill="none" stroke="#63b8ff" d="M465.02,-535.69C480.08,-521.64 497.83,-505.07 512.69,-491.22"/>
+<polygon fill="none" stroke="#63b8ff" points="462.34,-533.41 457.41,-542.79 467.11,-538.52 462.34,-533.41"/>
 </a>
 </g>
 </g>
@@ -196,20 +199,20 @@
 <g id="Node000010" class="node">
 <title>Node10</title>
 <g id="a_Node000010"><a xlink:href="classtvm_1_1relax_1_1distributed_1_1Placement.html" target="_top" xlink:title="Managed reference to a Placement.">
-<polygon fill="white" stroke="transparent" points="740,-387 576,-387 576,-286 740,-286 740,-387"/>
-<text text-anchor="start" x="603.5" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
-<text text-anchor="start" x="629" y="-363.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Placement</text>
-<text text-anchor="start" x="656" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="580" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="593" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00">Placement()</text>
-<text text-anchor="start" x="580" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="593" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="593" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="580" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="593" y="-292.5" font-family="Helvetica,sans-Serif" font-size="10.00">FromText()</text>
-<polygon fill="#666666" stroke="#666666" points="576,-358.5 576,-358.5 740,-358.5 740,-358.5 576,-358.5"/>
-<polygon fill="#666666" stroke="#666666" points="576,-343.5 576,-343.5 740,-343.5 740,-343.5 576,-343.5"/>
-<polygon fill="none" stroke="#666666" points="576,-286 576,-387 740,-387 740,-286 576,-286"/>
+<polygon fill="white" stroke="transparent" points="740,-398 576,-398 576,-297 740,-297 740,-398"/>
+<text text-anchor="start" x="603.5" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
+<text text-anchor="start" x="629" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">::Placement</text>
+<text text-anchor="start" x="656" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="580" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="593" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00">Placement()</text>
+<text text-anchor="start" x="580" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="593" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="593" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="580" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="593" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">FromText()</text>
+<polygon fill="#666666" stroke="#666666" points="576,-369.5 576,-369.5 740,-369.5 740,-369.5 576,-369.5"/>
+<polygon fill="#666666" stroke="#666666" points="576,-354.5 576,-354.5 740,-354.5 740,-354.5 576,-354.5"/>
+<polygon fill="none" stroke="#666666" points="576,-297 576,-398 740,-398 740,-297 576,-297"/>
 </a>
 </g>
 </g>
@@ -217,8 +220,8 @@
 <g id="edge12_Node000010_Node000005" class="edge">
 <title>Node5&#45;&gt;Node10</title>
 <g id="a_edge12_Node000010_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M479.26,-555.18C526.11,-552.14 596.31,-539.74 635,-495 660.31,-465.74 664.81,-421.38 663.7,-387.18"/>
-<polygon fill="none" stroke="#63b8ff" points="478.86,-551.7 469.06,-555.72 479.23,-558.69 478.86,-551.7"/>
+<path fill="none" stroke="#63b8ff" d="M479.26,-566.18C526.11,-563.14 596.31,-550.74 635,-506 660.31,-476.74 664.81,-432.38 663.7,-398.18"/>
+<polygon fill="none" stroke="#63b8ff" points="478.86,-562.7 469.06,-566.72 479.23,-569.69 478.86,-562.7"/>
 </a>
 </g>
 </g>
@@ -226,21 +229,21 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1relax_1_1TensorType.html" target="_top" xlink:title="Managed reference to TensorTypeNode.">
-<polygon fill="white" stroke="transparent" points="441.5,-268 256.5,-268 256.5,-163 441.5,-163 441.5,-268"/>
-<text text-anchor="start" x="294" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::TensorType</text>
-<text text-anchor="start" x="347.5" y="-240.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="261" y="-225.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-225.5" font-family="Helvetica,sans-Serif" font-size="10.00">TensorType()</text>
-<text text-anchor="start" x="261" y="-210.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-210.5" font-family="Helvetica,sans-Serif" font-size="10.00">TensorType()</text>
-<text text-anchor="start" x="261" y="-195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-195.5" font-family="Helvetica,sans-Serif" font-size="10.00">TensorType()</text>
-<text text-anchor="start" x="261" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="274" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="274" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="257,-250.5 257,-250.5 442,-250.5 442,-250.5 257,-250.5"/>
-<polygon fill="#666666" stroke="#666666" points="257,-235.5 257,-235.5 442,-235.5 442,-235.5 257,-235.5"/>
-<polygon fill="none" stroke="#666666" points="256.5,-163 256.5,-268 441.5,-268 441.5,-163 256.5,-163"/>
+<polygon fill="white" stroke="transparent" points="441.5,-273.5 256.5,-273.5 256.5,-168.5 441.5,-168.5 441.5,-273.5"/>
+<text text-anchor="start" x="294" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::TensorType</text>
+<text text-anchor="start" x="347.5" y="-246" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="261" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">TensorType()</text>
+<text text-anchor="start" x="261" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">TensorType()</text>
+<text text-anchor="start" x="261" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-201" font-family="Helvetica,sans-Serif" font-size="10.00">TensorType()</text>
+<text text-anchor="start" x="261" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-186" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="274" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="257,-256 257,-256 442,-256 442,-256 257,-256"/>
+<polygon fill="#666666" stroke="#666666" points="257,-241 257,-241 442,-241 442,-241 257,-241"/>
+<polygon fill="none" stroke="#666666" points="256.5,-168.5 256.5,-273.5 441.5,-273.5 441.5,-168.5 256.5,-168.5"/>
 </a>
 </g>
 </g>
@@ -248,18 +251,18 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node6&#45;&gt;Node1</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M380.97,-162.72C388.1,-151.17 395.76,-138.76 403.22,-126.68"/>
-<polygon fill="none" stroke="#63b8ff" points="403.4,-126.39 403.15,-119.18 409.7,-116.18 409.95,-123.38 403.4,-126.39"/>
+<path fill="none" stroke="#63b8ff" d="M379.9,-168.17C387.81,-154.91 396.43,-140.46 404.73,-126.54"/>
+<polygon fill="none" stroke="#63b8ff" points="404.85,-126.33 404.49,-119.13 411,-116.03 411.36,-123.23 404.85,-126.33"/>
 </a>
 </g>
-<text text-anchor="middle" x="426" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +tensor_ty</text>
+<text text-anchor="middle" x="429" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +tensor_ty</text>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge6_Node000006_Node000007" class="edge">
 <title>Node7&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M350.53,-394.57C350.2,-356.36 349.77,-305.58 349.44,-268.03"/>
-<polygon fill="none" stroke="#63b8ff" points="347.04,-395.03 350.62,-405 354.04,-394.97 347.04,-395.03"/>
+<path fill="none" stroke="#63b8ff" d="M350.54,-405.79C350.21,-366.2 349.76,-312.86 349.44,-273.84"/>
+<polygon fill="none" stroke="#63b8ff" points="347.04,-405.82 350.63,-415.79 354.04,-405.76 347.04,-405.82"/>
 </a>
 </g>
 </g>
@@ -267,20 +270,20 @@
 <g id="Node000008" class="node">
 <title>Node8</title>
 <g id="a_Node000008"><a xlink:href="classtvm_1_1relax_1_1distributed_1_1DeviceMesh.html" target="_top" xlink:title="Managed reference to a DeviceMesh.">
-<polygon fill="white" stroke="transparent" points="624,-266 460,-266 460,-165 624,-165 624,-266"/>
-<text text-anchor="start" x="487.5" y="-253.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
-<text text-anchor="start" x="508.5" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">::DeviceMesh</text>
-<text text-anchor="start" x="540" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="464" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="477" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">DeviceMesh()</text>
-<text text-anchor="start" x="464" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="477" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">DeviceMesh()</text>
-<text text-anchor="start" x="464" y="-182.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="477" y="-182.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="477" y="-171.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="460,-237.5 460,-237.5 624,-237.5 624,-237.5 460,-237.5"/>
-<polygon fill="#666666" stroke="#666666" points="460,-222.5 460,-222.5 624,-222.5 624,-222.5 460,-222.5"/>
-<polygon fill="none" stroke="#666666" points="460,-165 460,-266 624,-266 624,-165 460,-165"/>
+<polygon fill="white" stroke="transparent" points="624,-271.5 460,-271.5 460,-170.5 624,-170.5 624,-271.5"/>
+<text text-anchor="start" x="487.5" y="-259" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
+<text text-anchor="start" x="508.5" y="-248" font-family="Helvetica,sans-Serif" font-size="10.00">::DeviceMesh</text>
+<text text-anchor="start" x="540" y="-233" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="464" y="-218" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="477" y="-218" font-family="Helvetica,sans-Serif" font-size="10.00">DeviceMesh()</text>
+<text text-anchor="start" x="464" y="-203" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="477" y="-203" font-family="Helvetica,sans-Serif" font-size="10.00">DeviceMesh()</text>
+<text text-anchor="start" x="464" y="-188" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="477" y="-188" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="477" y="-177" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="460,-243 460,-243 624,-243 624,-243 460,-243"/>
+<polygon fill="#666666" stroke="#666666" points="460,-228 460,-228 624,-228 624,-228 460,-228"/>
+<polygon fill="none" stroke="#666666" points="460,-170.5 460,-271.5 624,-271.5 624,-170.5 460,-170.5"/>
 </a>
 </g>
 </g>
@@ -288,8 +291,8 @@
 <g id="edge8_Node000001_Node000008" class="edge">
 <title>Node8&#45;&gt;Node1</title>
 <g id="a_edge8_Node000001_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M511.04,-164.87C503.39,-152.6 495.06,-139.24 486.97,-126.28"/>
-<polygon fill="none" stroke="#63b8ff" points="486.91,-126.19 480.34,-123.21 480.56,-116 487.13,-118.98 486.91,-126.19"/>
+<path fill="none" stroke="#63b8ff" d="M512.11,-170.38C503.77,-156.55 494.58,-141.29 485.74,-126.62"/>
+<polygon fill="none" stroke="#63b8ff" points="485.57,-126.34 479.05,-123.27 479.38,-116.06 485.9,-119.14 485.57,-126.34"/>
 </a>
 </g>
 <text text-anchor="middle" x="535" y="-137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +device_mesh</text>
@@ -298,8 +301,8 @@
 <g id="edge9_Node000008_Node000009" class="edge">
 <title>Node9&#45;&gt;Node8</title>
 <g id="a_edge9_Node000008_Node000009"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M543.66,-409.48C543.32,-369.88 542.79,-308.82 542.43,-266.01"/>
-<polygon fill="none" stroke="#63b8ff" points="540.16,-409.58 543.75,-419.55 547.16,-409.52 540.16,-409.58"/>
+<path fill="none" stroke="#63b8ff" d="M543.67,-420.72C543.33,-379.95 542.79,-316.05 542.42,-271.77"/>
+<polygon fill="none" stroke="#63b8ff" points="540.17,-420.85 543.75,-430.82 547.17,-420.79 540.17,-420.85"/>
 </a>
 </g>
 </g>
@@ -307,11 +310,11 @@
 <g id="edge11_Node000001_Node000010" class="edge">
 <title>Node10&#45;&gt;Node1</title>
 <g id="a_edge11_Node000001_Node000010"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M662.06,-285.92C662.59,-248.95 657.77,-198.85 633,-163 609.36,-128.8 570.67,-104.66 534.51,-88.31"/>
-<polygon fill="none" stroke="#63b8ff" points="534.39,-88.26 527.3,-89.54 523.38,-83.48 530.48,-82.2 534.39,-88.26"/>
+<path fill="none" stroke="#63b8ff" d="M662.77,-296.64C664.01,-257.08 659.8,-202.13 633,-163 609.41,-128.56 570.52,-104.35 534.2,-88.02"/>
+<polygon fill="none" stroke="#63b8ff" points="534.05,-87.95 526.96,-89.25 523.04,-83.2 530.13,-81.9 534.05,-87.95"/>
 </a>
 </g>
-<text text-anchor="middle" x="693" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +placement</text>
+<text text-anchor="middle" x="694" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +placement</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__inherit__graph.svg
index 4f76268cd82..d15089194d5 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::distributed::DTensorTypeNode Pages: 1 -->
-<svg width="164pt" height="380pt"
- viewBox="0.00 0.00 164.00 380.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 376)">
+<svg width="164pt" height="406pt"
+ viewBox="0.00 0.00 164.00 406.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 402)">
 <title>tvm::relax::distributed::DTensorTypeNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -41,12 +41,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="transparent" points="156,-287 0,-287 0,-182 156,-182 156,-287"/>
-<text text-anchor="start" x="41" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="4" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-313 0,-313 0,-182 156,-182 156,-313"/>
+<text text-anchor="start" x="41" y="-300.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="4" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-270.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -54,10 +57,10 @@
 <text text-anchor="start" x="17" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-269.5 0,-269.5 156,-269.5 156,-269.5 0,-269.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-295.5 0,-295.5 156,-295.5 156,-295.5 0,-295.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-224.5 0,-224.5 15,-224.5 15,-224.5 0,-224.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-224.5 15,-224.5 156,-224.5 156,-224.5 15,-224.5"/>
-<polygon fill="none" stroke="#666666" points="0,-182 0,-287 156,-287 156,-182 0,-182"/>
+<polygon fill="none" stroke="#666666" points="0,-182 0,-313 156,-313 156,-182 0,-182"/>
 </a>
 </g>
 </g>
@@ -65,8 +68,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-171.66C78,-163.29 78,-154.64 78,-146.1"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-171.71 78,-181.71 81.5,-171.71 74.5,-171.71"/>
+<path fill="none" stroke="#63b8ff" d="M78,-171.54C78,-163.08 78,-154.46 78,-146.03"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-171.78 78,-181.78 81.5,-171.78 74.5,-171.78"/>
 </a>
 </g>
 </g>
@@ -74,13 +77,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-372 49,-372 49,-323 107,-323 107,-372"/>
-<text text-anchor="start" x="54" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-354.5 49,-354.5 107,-354.5 107,-354.5 49,-354.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-339.5 49,-339.5 107,-339.5 107,-339.5 49,-339.5"/>
-<polygon fill="none" stroke="#666666" points="49,-323 49,-372 107,-372 107,-323 49,-323"/>
+<polygon fill="white" stroke="transparent" points="107,-398 49,-398 49,-349 107,-349 107,-398"/>
+<text text-anchor="start" x="54" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-380.5 49,-380.5 107,-380.5 107,-380.5 49,-380.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-365.5 49,-365.5 107,-365.5 107,-365.5 49,-365.5"/>
+<polygon fill="none" stroke="#666666" points="49,-349 49,-398 107,-398 107,-349 49,-349"/>
 </a>
 </g>
 </g>
@@ -88,8 +91,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-312.85C78,-304.79 78,-296 78,-287.32"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-312.96 78,-322.96 81.5,-312.96 74.5,-312.96"/>
+<path fill="none" stroke="#63b8ff" d="M78,-338.85C78,-330.82 78,-321.98 78,-313.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-338.88 78,-348.88 81.5,-338.88 74.5,-338.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode-members.html
index 6a03b3a43fc..bc63fb213ff 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode-members.html
@@ -81,14 +81,15 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a09de80eac0810ad49c95119094e55197">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a4ff6e9d1f8a7597a88a02364">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a25323026042939b20ff3297a14e7bca0">annotations</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html">tvm::tirx::AllocBufferNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a1f385338e938827f85b51bc779d7e7a4">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html">tvm::tirx::AllocBufferNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a881c36f09d15d9bbf196058ef674a183">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html">tvm::tirx::AllocBufferNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a847776bc4e845cf02e7c8b6c6f5aff48">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.AllocBuffer&quot;, AllocBufferNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html">tvm::tirx::AllocBufferNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d34545f6c76afad">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a25323026042939b20ff3297a14e7bca0">annotations</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html">tvm::tirx::AllocBufferNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a1f385338e938827f85b51bc779d7e7a4">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html">tvm::tirx::AllocBufferNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a881c36f09d15d9bbf196058ef674a183">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html">tvm::tirx::AllocBufferNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a847776bc4e845cf02e7c8b6c6f5aff48">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.AllocBuffer&quot;, AllocBufferNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html">tvm::tirx::AllocBufferNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode.html
index 1770afbeca2..d289e6a0964 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::tirx::AllocBufferNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AllocBufferNode__inherit__graph.svg" width="219" height="472"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AllocBufferNode__inherit__graph.svg" width="219" height="507"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::tirx::AllocBufferNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AllocBufferNode__coll__graph.svg" width="574" height="1000"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AllocBufferNode__coll__graph.svg" width="574" height="1035"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -135,6 +135,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1tirx_1_1StmtNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td></tr>
 <tr class="memitem:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a3c7cfa4a4ff6e9d1f8a7597a88a02364"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a [...]
 <tr class="separator:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_ab13804ba5bb4f0723d34545f6c76afad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d345 [...]
+<tr class="separator:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a09de80eac0810ad49c95119094e55197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href= [...]
 <tr class="separator:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode__coll__graph.svg
index d1725ea4f31..99012a24bb8 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::AllocBufferNode Pages: 1 -->
-<svg width="430pt" height="750pt"
- viewBox="0.00 0.00 430.00 750.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 746)">
+<svg width="430pt" height="776pt"
+ viewBox="0.00 0.00 430.00 776.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 772)">
 <title>tvm::tirx::AllocBufferNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -32,10 +32,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="236,-504 80,-504 80,-384 236,-384 236,-504"/>
-<text text-anchor="start" x="109.5" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="84" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="236,-530 80,-530 80,-384 236,-384 236,-530"/>
+<text text-anchor="start" x="109.5" y="-518" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="84" y="-503" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-503" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="84" y="-488" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-488" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="97" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="84" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="97" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="84" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -47,10 +50,10 @@
 <text text-anchor="start" x="97" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="84" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="97" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="80,-487 80,-487 236,-487 236,-487 80,-487"/>
+<polygon fill="#666666" stroke="#666666" points="80,-513 80,-513 236,-513 236,-513 80,-513"/>
 <polygon fill="#666666" stroke="#666666" points="80,-457 80,-457 95,-457 95,-457 80,-457"/>
 <polygon fill="#666666" stroke="#666666" points="95,-457 95,-457 236,-457 236,-457 95,-457"/>
-<polygon fill="none" stroke="#666666" points="80,-384 80,-504 236,-504 236,-384 80,-384"/>
+<polygon fill="none" stroke="#666666" points="80,-384 80,-530 236,-530 236,-384 80,-384"/>
 </a>
 </g>
 </g>
@@ -58,8 +61,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M168.61,-373.75C181.88,-287.23 204.08,-142.37 214.41,-75"/>
-<polygon fill="none" stroke="#63b8ff" points="165.14,-373.33 167.08,-383.75 172.06,-374.39 165.14,-373.33"/>
+<path fill="none" stroke="#63b8ff" d="M170.21,-373.78C183.67,-283.17 204.71,-141.47 214.56,-75.1"/>
+<polygon fill="none" stroke="#63b8ff" points="166.74,-373.35 168.73,-383.75 173.66,-374.38 166.74,-373.35"/>
 </a>
 </g>
 </g>
@@ -67,13 +70,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-628 0,-628 0,-579 58,-579 58,-628"/>
-<text text-anchor="start" x="5" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-585.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-610.5 0,-610.5 58,-610.5 58,-610.5 0,-610.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-595.5 0,-595.5 58,-595.5 58,-595.5 0,-595.5"/>
-<polygon fill="none" stroke="#666666" points="0,-579 0,-628 58,-628 58,-579 0,-579"/>
+<polygon fill="white" stroke="transparent" points="58,-654 0,-654 0,-605 58,-605 58,-654"/>
+<text text-anchor="start" x="5" y="-641.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-626.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-636.5 0,-636.5 58,-636.5 58,-636.5 0,-636.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-621.5 0,-621.5 58,-621.5 58,-621.5 0,-621.5"/>
+<polygon fill="none" stroke="#666666" points="0,-605 0,-654 58,-654 58,-605 0,-605"/>
 </a>
 </g>
 </g>
@@ -81,8 +84,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M51.86,-570.74C56.77,-564.15 61.99,-557.29 67,-551 79.31,-535.54 93.01,-519.18 105.96,-504.06"/>
-<polygon fill="none" stroke="#63b8ff" points="48.97,-568.77 45.86,-578.9 54.61,-572.92 48.97,-568.77"/>
+<path fill="none" stroke="#63b8ff" d="M52.28,-596.77C57.13,-590.22 62.21,-583.37 67,-577 78.4,-561.82 90.7,-545.62 102.46,-530.22"/>
+<polygon fill="none" stroke="#63b8ff" points="49.44,-594.72 46.32,-604.85 55.07,-598.88 49.44,-594.72"/>
 </a>
 </g>
 </g>
@@ -90,19 +93,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-648.5 76,-648.5 76,-558.5 240,-558.5 240,-648.5"/>
-<text text-anchor="start" x="133" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-576.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-576.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-631.5 76,-631.5 240,-631.5 240,-631.5 76,-631.5"/>
-<polygon fill="#666666" stroke="#666666" points="76,-616.5 76,-616.5 240,-616.5 240,-616.5 76,-616.5"/>
-<polygon fill="none" stroke="#666666" points="76,-558.5 76,-648.5 240,-648.5 240,-558.5 76,-558.5"/>
+<polygon fill="white" stroke="transparent" points="240,-674.5 76,-674.5 76,-584.5 240,-584.5 240,-674.5"/>
+<text text-anchor="start" x="133" y="-662.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-632.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-632.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-617.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-617.5" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-602.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-602.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-657.5 76,-657.5 240,-657.5 240,-657.5 76,-657.5"/>
+<polygon fill="#666666" stroke="#666666" points="76,-642.5 76,-642.5 240,-642.5 240,-642.5 76,-642.5"/>
+<polygon fill="none" stroke="#666666" points="76,-584.5 76,-674.5 240,-674.5 240,-584.5 76,-584.5"/>
 </a>
 </g>
 </g>
@@ -110,23 +113,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158,-558.21C158,-545.26 158,-530.76 158,-516.58"/>
-<polygon fill="none" stroke="#63b8ff" points="158,-516.24 154,-510.24 158,-504.24 162,-510.24 158,-516.24"/>
+<path fill="none" stroke="#63b8ff" d="M158,-584.15C158,-571.28 158,-556.77 158,-542.3"/>
+<polygon fill="none" stroke="#63b8ff" points="158,-542.2 154,-536.2 158,-530.2 162,-536.2 158,-542.2"/>
 </a>
 </g>
-<text text-anchor="middle" x="175.5" y="-525" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="175.5" y="-551" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="285,-742 211,-742 211,-693 285,-693 285,-742"/>
-<text text-anchor="start" x="216" y="-729.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="246" y="-714.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="246" y="-699.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="211,-724.5 211,-724.5 285,-724.5 285,-724.5 211,-724.5"/>
-<polygon fill="#666666" stroke="#666666" points="211,-709.5 211,-709.5 285,-709.5 285,-709.5 211,-709.5"/>
-<polygon fill="none" stroke="#666666" points="211,-693 211,-742 285,-742 285,-693 211,-693"/>
+<polygon fill="white" stroke="transparent" points="285,-768 211,-768 211,-719 285,-719 285,-768"/>
+<text text-anchor="start" x="216" y="-755.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="246" y="-740.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="246" y="-725.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="211,-750.5 211,-750.5 285,-750.5 285,-750.5 211,-750.5"/>
+<polygon fill="#666666" stroke="#666666" points="211,-735.5 211,-735.5 285,-735.5 285,-735.5 211,-735.5"/>
+<polygon fill="none" stroke="#666666" points="211,-719 211,-768 285,-768 285,-719 211,-719"/>
 </a>
 </g>
 </g>
@@ -134,8 +137,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M222.58,-684.86C213.52,-673.59 203.15,-660.69 193.41,-648.56"/>
-<polygon fill="none" stroke="#63b8ff" points="219.92,-687.14 228.91,-692.75 225.38,-682.76 219.92,-687.14"/>
+<path fill="none" stroke="#63b8ff" d="M222.58,-710.86C213.52,-699.59 203.15,-686.69 193.41,-674.56"/>
+<polygon fill="none" stroke="#63b8ff" points="219.92,-713.14 228.91,-718.75 225.38,-708.76 219.92,-713.14"/>
 </a>
 </g>
 </g>
@@ -143,21 +146,21 @@
 <g id="Node000008" class="node">
 <title>Node8</title>
 <g id="a_Node000008"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="422,-656 258,-656 258,-551 422,-551 422,-656"/>
-<text text-anchor="start" x="316" y="-643.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="338" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="262" y="-613.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-613.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="262" y="-598.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-598.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="262" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="262" y="-568.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-568.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="275" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="258,-638.5 258,-638.5 422,-638.5 422,-638.5 258,-638.5"/>
-<polygon fill="#666666" stroke="#666666" points="258,-623.5 258,-623.5 422,-623.5 422,-623.5 258,-623.5"/>
-<polygon fill="none" stroke="#666666" points="258,-551 258,-656 422,-656 422,-551 258,-551"/>
+<polygon fill="white" stroke="transparent" points="422,-682 258,-682 258,-577 422,-577 422,-682"/>
+<text text-anchor="start" x="316" y="-669.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="338" y="-654.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="262" y="-639.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-639.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="262" y="-624.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-624.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="262" y="-609.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-609.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="262" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="275" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="258,-664.5 258,-664.5 422,-664.5 422,-664.5 258,-664.5"/>
+<polygon fill="#666666" stroke="#666666" points="258,-649.5 258,-649.5 422,-649.5 422,-649.5 258,-649.5"/>
+<polygon fill="none" stroke="#666666" points="258,-577 258,-682 422,-682 422,-577 258,-577"/>
 </a>
 </g>
 </g>
@@ -165,8 +168,8 @@
 <g id="edge8_Node000008_Node000005" class="edge">
 <title>Node5&#45;&gt;Node8</title>
 <g id="a_edge8_Node000008_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M273.96,-684.9C281.27,-676 289.42,-666.08 297.43,-656.33"/>
-<polygon fill="none" stroke="#63b8ff" points="271.15,-682.8 267.51,-692.75 276.56,-687.24 271.15,-682.8"/>
+<path fill="none" stroke="#63b8ff" d="M273.96,-710.9C281.27,-702 289.42,-692.08 297.43,-682.33"/>
+<polygon fill="none" stroke="#63b8ff" points="271.15,-708.8 267.51,-718.75 276.56,-713.24 271.15,-708.8"/>
 </a>
 </g>
 </g>
@@ -223,23 +226,23 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1Var.html" target="_top" xlink:title="Managed reference to VarNode.">
-<polygon fill="white" stroke="transparent" points="420,-504 256,-504 256,-384 420,-384 420,-504"/>
-<text text-anchor="start" x="330" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">Var</text>
-<text text-anchor="start" x="336" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="260" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="273" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
-<text text-anchor="start" x="260" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="273" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
-<text text-anchor="start" x="260" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="273" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
-<text text-anchor="start" x="260" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="273" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
-<text text-anchor="start" x="260" y="-402" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="273" y="-402" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="273" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="256,-487 256,-487 420,-487 420,-487 256,-487"/>
-<polygon fill="#666666" stroke="#666666" points="256,-472 256,-472 420,-472 420,-472 256,-472"/>
-<polygon fill="none" stroke="#666666" points="256,-384 256,-504 420,-504 420,-384 256,-384"/>
+<polygon fill="white" stroke="transparent" points="420,-517 256,-517 256,-397 420,-397 420,-517"/>
+<text text-anchor="start" x="330" y="-505" font-family="Helvetica,sans-Serif" font-size="10.00">Var</text>
+<text text-anchor="start" x="336" y="-490" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="260" y="-475" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="273" y="-475" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
+<text text-anchor="start" x="260" y="-460" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="273" y="-460" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
+<text text-anchor="start" x="260" y="-445" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="273" y="-445" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="260" y="-430" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="273" y="-430" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="260" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="273" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="273" y="-404" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="256,-500 256,-500 420,-500 420,-500 256,-500"/>
+<polygon fill="#666666" stroke="#666666" points="256,-485 256,-485 420,-485 420,-485 256,-485"/>
+<polygon fill="none" stroke="#666666" points="256,-397 256,-517 420,-517 420,-397 256,-397"/>
 </a>
 </g>
 </g>
@@ -247,8 +250,8 @@
 <g id="edge6_Node000006_Node000007" class="edge">
 <title>Node7&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M329.64,-373.64C328.62,-365.13 327.55,-356.28 326.48,-347.35"/>
-<polygon fill="none" stroke="#63b8ff" points="326.2,-374.31 330.87,-383.82 333.15,-373.47 326.2,-374.31"/>
+<path fill="none" stroke="#63b8ff" d="M330.17,-386.93C328.73,-374.24 327.19,-360.69 325.66,-347.12"/>
+<polygon fill="none" stroke="#63b8ff" points="326.7,-387.37 331.3,-396.91 333.65,-386.58 326.7,-387.37"/>
 </a>
 </g>
 </g>
@@ -256,8 +259,8 @@
 <g id="edge7_Node000007_Node000008" class="edge">
 <title>Node8&#45;&gt;Node7</title>
 <g id="a_edge7_Node000007_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M339.22,-540.91C339.06,-528.79 338.9,-516.1 338.75,-504.06"/>
-<polygon fill="none" stroke="#63b8ff" points="335.72,-540.97 339.35,-550.93 342.72,-540.88 335.72,-540.97"/>
+<path fill="none" stroke="#63b8ff" d="M339.27,-566.51C339.08,-550.43 338.88,-533.15 338.69,-517.21"/>
+<polygon fill="none" stroke="#63b8ff" points="335.78,-566.92 339.39,-576.88 342.78,-566.84 335.78,-566.92"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode__inherit__graph.svg
index d55c2b970c9..86701cf5be7 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::AllocBufferNode Pages: 1 -->
-<svg width="164pt" height="354pt"
- viewBox="0.00 0.00 164.00 354.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 350)">
+<svg width="164pt" height="380pt"
+ viewBox="0.00 0.00 164.00 380.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 376)">
 <title>tvm::tirx::AllocBufferNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -34,12 +34,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="156,-261 0,-261 0,-126 156,-126 156,-261"/>
-<text text-anchor="start" x="29.5" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="4" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-287 0,-287 0,-126 156,-126 156,-287"/>
+<text text-anchor="start" x="29.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="4" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -51,10 +54,10 @@
 <text text-anchor="start" x="17" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-243.5 0,-243.5 156,-243.5 156,-243.5 0,-243.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-269.5 0,-269.5 156,-269.5 156,-269.5 0,-269.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-198.5 0,-198.5 15,-198.5 15,-198.5 0,-198.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-198.5 15,-198.5 156,-198.5 156,-198.5 15,-198.5"/>
-<polygon fill="none" stroke="#666666" points="0,-126 0,-261 156,-261 156,-126 0,-126"/>
+<polygon fill="none" stroke="#666666" points="0,-126 0,-287 156,-287 156,-126 0,-126"/>
 </a>
 </g>
 </g>
@@ -62,8 +65,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-115.47C78,-106.77 78,-98.14 78,-90.08"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-115.68 78,-125.68 81.5,-115.68 74.5,-115.68"/>
+<path fill="none" stroke="#63b8ff" d="M78,-115.68C78,-106.8 78,-98.1 78,-90.01"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-115.75 78,-125.75 81.5,-115.75 74.5,-115.75"/>
 </a>
 </g>
 </g>
@@ -71,13 +74,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-346 49,-346 49,-297 107,-297 107,-346"/>
-<text text-anchor="start" x="54" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-328.5 49,-328.5 107,-328.5 107,-328.5 49,-328.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-313.5 49,-313.5 107,-313.5 107,-313.5 49,-313.5"/>
-<polygon fill="none" stroke="#666666" points="49,-297 49,-346 107,-346 107,-297 49,-297"/>
+<polygon fill="white" stroke="transparent" points="107,-372 49,-372 49,-323 107,-323 107,-372"/>
+<text text-anchor="start" x="54" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-354.5 49,-354.5 107,-354.5 107,-354.5 49,-354.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-339.5 49,-339.5 107,-339.5 107,-339.5 49,-339.5"/>
+<polygon fill="none" stroke="#666666" points="49,-323 49,-372 107,-372 107,-323 49,-323"/>
 </a>
 </g>
 </g>
@@ -85,8 +88,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-286.56C78,-278.65 78,-269.96 78,-261.17"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-286.8 78,-296.8 81.5,-286.8 74.5,-286.8"/>
+<path fill="none" stroke="#63b8ff" d="M78,-312.77C78,-304.91 78,-296.2 78,-287.26"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-312.92 78,-322.92 81.5,-312.92 74.5,-312.92"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode-members.html
index f5597b9bc03..ddbd3075d4e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode-members.html
@@ -81,15 +81,16 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a09de80eac0810ad49c95119094e55197">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a4ff6e9d1f8a7597a88a02364">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a2f4ccf6b400aa1ff67077c78966f26e6">condition</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a8fc4f79a7e2a0b44ad8eb456d9874672">error_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a06b0b53755bf1435e98ee33d01cad4f7">message_parts</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a90b3e8d1d32b75e220cd852410130824">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a9ff55d5889363116055a5ad53a065f0e">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.AssertStmt&quot;, AssertStmtNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d34545f6c76afad">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a2f4ccf6b400aa1ff67077c78966f26e6">condition</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a8fc4f79a7e2a0b44ad8eb456d9874672">error_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a06b0b53755bf1435e98ee33d01cad4f7">message_parts</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a90b3e8d1d32b75e220cd852410130824">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html#a9ff55d5889363116055a5ad53a065f0e">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.AssertStmt&quot;, AssertStmtNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AssertStmtNode.html">tvm::tirx::AssertStmtNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode.html
index 34e3b030554..e3090d7eea5 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::tirx::AssertStmtNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AssertStmtNode__inherit__graph.svg" width="219" height="492"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AssertStmtNode__inherit__graph.svg" width="219" height="527"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::tirx::AssertStmtNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AssertStmtNode__coll__graph.svg" width="582" height="1074"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AssertStmtNode__coll__graph.svg" width="582" height="1108"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -138,6 +138,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1tirx_1_1StmtNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td></tr>
 <tr class="memitem:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a3c7cfa4a4ff6e9d1f8a7597a88a02364"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a [...]
 <tr class="separator:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_ab13804ba5bb4f0723d34545f6c76afad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d345 [...]
+<tr class="separator:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a09de80eac0810ad49c95119094e55197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href= [...]
 <tr class="separator:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode__coll__graph.svg
index 37dc5a5e877..12660209400 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::AssertStmtNode Pages: 1 -->
-<svg width="436pt" height="805pt"
- viewBox="0.00 0.00 436.00 805.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 801)">
+<svg width="436pt" height="831pt"
+ viewBox="0.00 0.00 436.00 831.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 827)">
 <title>tvm::tirx::AssertStmtNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -32,10 +32,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="221,-559 65,-559 65,-439 221,-439 221,-559"/>
-<text text-anchor="start" x="94.5" y="-547" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="69" y="-532" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="82" y="-532" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="221,-585 65,-585 65,-439 221,-439 221,-585"/>
+<text text-anchor="start" x="94.5" y="-573" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="69" y="-558" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="82" y="-558" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="69" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="82" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="82" y="-532" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="69" y="-517" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="82" y="-517" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="69" y="-502" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -47,10 +50,10 @@
 <text text-anchor="start" x="82" y="-461" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="69" y="-446" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="82" y="-446" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="65,-542 65,-542 221,-542 221,-542 65,-542"/>
+<polygon fill="#666666" stroke="#666666" points="65,-568 65,-568 221,-568 221,-568 65,-568"/>
 <polygon fill="#666666" stroke="#666666" points="65,-512 65,-512 80,-512 80,-512 65,-512"/>
 <polygon fill="#666666" stroke="#666666" points="80,-512 80,-512 221,-512 221,-512 80,-512"/>
-<polygon fill="none" stroke="#666666" points="65,-439 65,-559 221,-559 221,-439 65,-439"/>
+<polygon fill="none" stroke="#666666" points="65,-439 65,-585 221,-585 221,-439 65,-439"/>
 </a>
 </g>
 </g>
@@ -58,8 +61,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M144.84,-428.86C147.82,-347.88 155.51,-209.92 175,-93 175.96,-87.22 177.24,-81.15 178.64,-75.25"/>
-<polygon fill="none" stroke="#63b8ff" points="141.33,-428.81 144.48,-438.93 148.33,-429.06 141.33,-428.81"/>
+<path fill="none" stroke="#63b8ff" d="M145.05,-428.73C148.15,-344.06 155.88,-208.58 175,-93 175.96,-87.22 177.23,-81.15 178.63,-75.25"/>
+<polygon fill="none" stroke="#63b8ff" points="141.55,-428.68 144.7,-438.8 148.55,-428.93 141.55,-428.68"/>
 </a>
 </g>
 </g>
@@ -67,13 +70,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-683 0,-683 0,-634 58,-634 58,-683"/>
-<text text-anchor="start" x="5" y="-670.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-640.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-665.5 0,-665.5 58,-665.5 58,-665.5 0,-665.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-650.5 0,-650.5 58,-650.5 58,-650.5 0,-650.5"/>
-<polygon fill="none" stroke="#666666" points="0,-634 0,-683 58,-683 58,-634 0,-634"/>
+<polygon fill="white" stroke="transparent" points="58,-709 0,-709 0,-660 58,-660 58,-709"/>
+<text text-anchor="start" x="5" y="-696.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-681.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-691.5 0,-691.5 58,-691.5 58,-691.5 0,-691.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-676.5 0,-676.5 58,-676.5 58,-676.5 0,-676.5"/>
+<polygon fill="none" stroke="#666666" points="0,-660 0,-709 58,-709 58,-660 0,-660"/>
 </a>
 </g>
 </g>
@@ -81,8 +84,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M52.09,-625.59C65.9,-606.53 83.86,-581.7 100.18,-559.16"/>
-<polygon fill="none" stroke="#63b8ff" points="49.1,-623.77 46.07,-633.92 54.77,-627.87 49.1,-623.77"/>
+<path fill="none" stroke="#63b8ff" d="M50.49,-651.35C63.01,-632.63 79.32,-608.24 94.76,-585.15"/>
+<polygon fill="none" stroke="#63b8ff" points="47.5,-649.53 44.85,-659.79 53.32,-653.43 47.5,-649.53"/>
 </a>
 </g>
 </g>
@@ -90,19 +93,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-703.5 76,-703.5 76,-613.5 240,-613.5 240,-703.5"/>
-<text text-anchor="start" x="133" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-676.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-661.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-661.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-631.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-631.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-620.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-686.5 76,-686.5 240,-686.5 240,-686.5 76,-686.5"/>
-<polygon fill="#666666" stroke="#666666" points="76,-671.5 76,-671.5 240,-671.5 240,-671.5 76,-671.5"/>
-<polygon fill="none" stroke="#666666" points="76,-613.5 76,-703.5 240,-703.5 240,-613.5 76,-613.5"/>
+<polygon fill="white" stroke="transparent" points="240,-729.5 76,-729.5 76,-639.5 240,-639.5 240,-729.5"/>
+<text text-anchor="start" x="133" y="-717.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-702.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-687.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-687.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-672.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-672.5" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-646.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-712.5 76,-712.5 240,-712.5 240,-712.5 76,-712.5"/>
+<polygon fill="#666666" stroke="#666666" points="76,-697.5 76,-697.5 240,-697.5 240,-697.5 76,-697.5"/>
+<polygon fill="none" stroke="#666666" points="76,-639.5 76,-729.5 240,-729.5 240,-639.5 76,-639.5"/>
 </a>
 </g>
 </g>
@@ -110,23 +113,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M153.78,-613.21C152.55,-600.26 151.17,-585.76 149.82,-571.58"/>
-<polygon fill="none" stroke="#63b8ff" points="149.78,-571.19 145.23,-565.59 148.64,-559.24 153.19,-564.84 149.78,-571.19"/>
+<path fill="none" stroke="#63b8ff" d="M154.1,-639.15C152.97,-626.28 151.69,-611.77 150.42,-597.3"/>
+<polygon fill="none" stroke="#63b8ff" points="150.4,-597.15 145.89,-591.52 149.35,-585.2 153.86,-590.82 150.4,-597.15"/>
 </a>
 </g>
-<text text-anchor="middle" x="168.5" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="169.5" y="-606" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="285,-797 211,-797 211,-748 285,-748 285,-797"/>
-<text text-anchor="start" x="216" y="-784.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="246" y="-769.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="246" y="-754.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="211,-779.5 211,-779.5 285,-779.5 285,-779.5 211,-779.5"/>
-<polygon fill="#666666" stroke="#666666" points="211,-764.5 211,-764.5 285,-764.5 285,-764.5 211,-764.5"/>
-<polygon fill="none" stroke="#666666" points="211,-748 211,-797 285,-797 285,-748 211,-748"/>
+<polygon fill="white" stroke="transparent" points="285,-823 211,-823 211,-774 285,-774 285,-823"/>
+<text text-anchor="start" x="216" y="-810.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="246" y="-795.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="246" y="-780.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="211,-805.5 211,-805.5 285,-805.5 285,-805.5 211,-805.5"/>
+<polygon fill="#666666" stroke="#666666" points="211,-790.5 211,-790.5 285,-790.5 285,-790.5 211,-790.5"/>
+<polygon fill="none" stroke="#666666" points="211,-774 211,-823 285,-823 285,-774 211,-774"/>
 </a>
 </g>
 </g>
@@ -134,8 +137,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M222.58,-739.86C213.52,-728.59 203.15,-715.69 193.41,-703.56"/>
-<polygon fill="none" stroke="#63b8ff" points="219.92,-742.14 228.91,-747.75 225.38,-737.76 219.92,-742.14"/>
+<path fill="none" stroke="#63b8ff" d="M222.58,-765.86C213.52,-754.59 203.15,-741.69 193.41,-729.56"/>
+<polygon fill="none" stroke="#63b8ff" points="219.92,-768.14 228.91,-773.75 225.38,-763.76 219.92,-768.14"/>
 </a>
 </g>
 </g>
@@ -143,21 +146,21 @@
 <g id="Node000008" class="node">
 <title>Node8</title>
 <g id="a_Node000008"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="422,-711 258,-711 258,-606 422,-606 422,-711"/>
-<text text-anchor="start" x="316" y="-698.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="338" y="-683.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="262" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-668.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="262" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-653.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="262" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="262" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="275" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="258,-693.5 258,-693.5 422,-693.5 422,-693.5 258,-693.5"/>
-<polygon fill="#666666" stroke="#666666" points="258,-678.5 258,-678.5 422,-678.5 422,-678.5 258,-678.5"/>
-<polygon fill="none" stroke="#666666" points="258,-606 258,-711 422,-711 422,-606 258,-606"/>
+<polygon fill="white" stroke="transparent" points="422,-737 258,-737 258,-632 422,-632 422,-737"/>
+<text text-anchor="start" x="316" y="-724.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="338" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="262" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="262" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="262" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-664.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="262" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="275" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="258,-719.5 258,-719.5 422,-719.5 422,-719.5 258,-719.5"/>
+<polygon fill="#666666" stroke="#666666" points="258,-704.5 258,-704.5 422,-704.5 422,-704.5 258,-704.5"/>
+<polygon fill="none" stroke="#666666" points="258,-632 258,-737 422,-737 422,-632 258,-632"/>
 </a>
 </g>
 </g>
@@ -165,8 +168,8 @@
 <g id="edge8_Node000008_Node000005" class="edge">
 <title>Node5&#45;&gt;Node8</title>
 <g id="a_edge8_Node000008_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M273.96,-739.9C281.27,-731 289.42,-721.08 297.43,-711.33"/>
-<polygon fill="none" stroke="#63b8ff" points="271.15,-737.8 267.51,-747.75 276.56,-742.24 271.15,-737.8"/>
+<path fill="none" stroke="#63b8ff" d="M273.96,-765.9C281.27,-757 289.42,-747.08 297.43,-737.33"/>
+<polygon fill="none" stroke="#63b8ff" points="271.15,-763.8 267.51,-773.75 276.56,-768.24 271.15,-763.8"/>
 </a>
 </g>
 </g>
@@ -244,20 +247,20 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1TypedExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="422,-542 258,-542 258,-456 422,-456 422,-542"/>
-<text text-anchor="start" x="268" y="-530" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
-<text text-anchor="start" x="262" y="-515" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-515" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="275" y="-504" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="262" y="-489" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-489" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
-<text text-anchor="start" x="262" y="-474" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-474" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="275" y="-463" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="258,-525 258,-525 422,-525 422,-525 258,-525"/>
-<polygon fill="#666666" stroke="#666666" points="258,-499 258,-499 273,-499 273,-499 258,-499"/>
-<polygon fill="#666666" stroke="#666666" points="273,-499 273,-499 422,-499 422,-499 273,-499"/>
-<polygon fill="none" stroke="#666666" points="258,-456 258,-542 422,-542 422,-456 258,-456"/>
+<polygon fill="white" stroke="transparent" points="422,-555 258,-555 258,-469 422,-469 422,-555"/>
+<text text-anchor="start" x="268" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
+<text text-anchor="start" x="262" y="-528" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-528" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="275" y="-517" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="262" y="-502" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-502" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
+<text text-anchor="start" x="262" y="-487" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-487" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="275" y="-476" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="258,-538 258,-538 422,-538 422,-538 258,-538"/>
+<polygon fill="#666666" stroke="#666666" points="258,-512 258,-512 273,-512 273,-512 258,-512"/>
+<polygon fill="#666666" stroke="#666666" points="273,-512 273,-512 422,-512 422,-512 273,-512"/>
+<polygon fill="none" stroke="#666666" points="258,-469 258,-555 422,-555 422,-469 258,-469"/>
 </a>
 </g>
 </g>
@@ -265,8 +268,8 @@
 <g id="edge6_Node000006_Node000007" class="edge">
 <title>Node7&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M340,-445.5C340,-431.63 340,-416.5 340,-402.07"/>
-<polygon fill="none" stroke="#63b8ff" points="336.5,-445.83 340,-455.83 343.5,-445.83 336.5,-445.83"/>
+<path fill="none" stroke="#63b8ff" d="M340,-458.41C340,-440.69 340,-420.71 340,-402.17"/>
+<polygon fill="none" stroke="#63b8ff" points="336.5,-458.56 340,-468.56 343.5,-458.56 336.5,-458.56"/>
 </a>
 </g>
 </g>
@@ -274,8 +277,8 @@
 <g id="edge7_Node000007_Node000008" class="edge">
 <title>Node8&#45;&gt;Node7</title>
 <g id="a_edge7_Node000007_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M340,-595.82C340,-577.88 340,-558.68 340,-542.23"/>
-<polygon fill="none" stroke="#63b8ff" points="336.5,-595.93 340,-605.93 343.5,-595.93 336.5,-595.93"/>
+<path fill="none" stroke="#63b8ff" d="M340,-621.87C340,-599.67 340,-575.14 340,-555"/>
+<polygon fill="none" stroke="#63b8ff" points="336.5,-621.88 340,-631.88 343.5,-621.88 336.5,-621.88"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode__inherit__graph.svg
index cd7fd5486a0..75eb52fc78a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AssertStmtNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::AssertStmtNode Pages: 1 -->
-<svg width="164pt" height="369pt"
- viewBox="0.00 0.00 164.00 369.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 365)">
+<svg width="164pt" height="395pt"
+ viewBox="0.00 0.00 164.00 395.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 391)">
 <title>tvm::tirx::AssertStmtNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -36,12 +36,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="156,-276 0,-276 0,-141 156,-141 156,-276"/>
-<text text-anchor="start" x="29.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="4" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-302 0,-302 0,-141 156,-141 156,-302"/>
+<text text-anchor="start" x="29.5" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="4" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -53,10 +56,10 @@
 <text text-anchor="start" x="17" y="-162.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-258.5 0,-258.5 156,-258.5 156,-258.5 0,-258.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-284.5 0,-284.5 156,-284.5 156,-284.5 0,-284.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-213.5 0,-213.5 15,-213.5 15,-213.5 0,-213.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-213.5 15,-213.5 156,-213.5 156,-213.5 15,-213.5"/>
-<polygon fill="none" stroke="#666666" points="0,-141 0,-276 156,-276 156,-141 0,-141"/>
+<polygon fill="none" stroke="#666666" points="0,-141 0,-302 156,-302 156,-141 0,-141"/>
 </a>
 </g>
 </g>
@@ -64,8 +67,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-130.78C78,-122.18 78,-113.58 78,-105.4"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-130.85 78,-140.85 81.5,-130.85 74.5,-130.85"/>
+<path fill="none" stroke="#63b8ff" d="M78,-130.7C78,-122.02 78,-113.43 78,-105.31"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-130.91 78,-140.91 81.5,-130.91 74.5,-130.91"/>
 </a>
 </g>
 </g>
@@ -73,13 +76,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-361 49,-361 49,-312 107,-312 107,-361"/>
-<text text-anchor="start" x="54" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-343.5 49,-343.5 107,-343.5 107,-343.5 49,-343.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-328.5 49,-328.5 107,-328.5 107,-328.5 49,-328.5"/>
-<polygon fill="none" stroke="#666666" points="49,-312 49,-361 107,-361 107,-312 49,-312"/>
+<polygon fill="white" stroke="transparent" points="107,-387 49,-387 49,-338 107,-338 107,-387"/>
+<text text-anchor="start" x="54" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-369.5 49,-369.5 107,-369.5 107,-369.5 49,-369.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-354.5 49,-354.5 107,-354.5 107,-354.5 49,-354.5"/>
+<polygon fill="none" stroke="#666666" points="49,-338 49,-387 107,-387 107,-338 49,-338"/>
 </a>
 </g>
 </g>
@@ -87,8 +90,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-301.56C78,-293.65 78,-284.96 78,-276.17"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-301.8 78,-311.8 81.5,-301.8 74.5,-301.8"/>
+<path fill="none" stroke="#63b8ff" d="M78,-327.77C78,-319.91 78,-311.2 78,-302.26"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-327.92 78,-337.92 81.5,-327.92 74.5,-327.92"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode-members.html
index ae2ffad8117..d99c1513ce0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode-members.html
@@ -81,16 +81,17 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a09de80eac0810ad49c95119094e55197">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a4ff6e9d1f8a7597a88a02364">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a9f8f6c3b8084ee7a3ecf60783e1380ae">attr_key</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#aff0b451c2e1d38556712d5aaf83e8336">body</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a50050b87d31dbef806b4708aa3a4744f">node</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a06c326749ea184290df2317731d09a38">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a84fccb5d258d56d9c109712b27e6dfb2">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.AttrStmt&quot;, AttrStmtNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a1c14f3a08535b633afd049a2c85c9dae">value</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d34545f6c76afad">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a9f8f6c3b8084ee7a3ecf60783e1380ae">attr_key</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#aff0b451c2e1d38556712d5aaf83e8336">body</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a50050b87d31dbef806b4708aa3a4744f">node</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a06c326749ea184290df2317731d09a38">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a84fccb5d258d56d9c109712b27e6dfb2">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.AttrStmt&quot;, AttrStmtNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html#a1c14f3a08535b633afd049a2c85c9dae">value</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AttrStmtNode.html">tvm::tirx::AttrStmtNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode.html
index c452d7883b1..192d291663c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::tirx::AttrStmtNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AttrStmtNode__inherit__graph.svg" width="219" height="512"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AttrStmtNode__inherit__graph.svg" width="219" height="547"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::tirx::AttrStmtNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AttrStmtNode__coll__graph.svg" width="720" height="974"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1AttrStmtNode__coll__graph.svg" width="720" height="1008"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -141,6 +141,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1tirx_1_1StmtNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td></tr>
 <tr class="memitem:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a3c7cfa4a4ff6e9d1f8a7597a88a02364"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a [...]
 <tr class="separator:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_ab13804ba5bb4f0723d34545f6c76afad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d345 [...]
+<tr class="separator:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a09de80eac0810ad49c95119094e55197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href= [...]
 <tr class="separator:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode__coll__graph.svg
index 4728fdc1118..126c0b59339 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::AttrStmtNode Pages: 1 -->
-<svg width="540pt" height="730pt"
- viewBox="0.00 0.00 540.00 730.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 726)">
+<svg width="540pt" height="756pt"
+ viewBox="0.00 0.00 540.00 756.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 752)">
 <title>tvm::tirx::AttrStmtNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -34,10 +34,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="236,-435 80,-435 80,-315 236,-315 236,-435"/>
-<text text-anchor="start" x="109.5" y="-423" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="84" y="-408" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="97" y="-408" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="236,-461 80,-461 80,-315 236,-315 236,-461"/>
+<text text-anchor="start" x="109.5" y="-449" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="84" y="-434" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-434" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="84" y="-419" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-419" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="97" y="-408" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="84" y="-393" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="97" y="-393" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="84" y="-378" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -49,10 +52,10 @@
 <text text-anchor="start" x="97" y="-337" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="84" y="-322" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="97" y="-322" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="80,-418 80,-418 236,-418 236,-418 80,-418"/>
+<polygon fill="#666666" stroke="#666666" points="80,-444 80,-444 236,-444 236,-444 80,-444"/>
 <polygon fill="#666666" stroke="#666666" points="80,-388 80,-388 95,-388 95,-388 80,-388"/>
 <polygon fill="#666666" stroke="#666666" points="95,-388 95,-388 236,-388 236,-388 95,-388"/>
-<polygon fill="none" stroke="#666666" points="80,-315 80,-435 236,-435 236,-315 80,-315"/>
+<polygon fill="none" stroke="#666666" points="80,-315 80,-461 236,-461 236,-315 80,-315"/>
 </a>
 </g>
 </g>
@@ -60,8 +63,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M176.07,-305.14C190.95,-255.81 215.13,-189.15 249,-137 259.83,-120.32 274.13,-104.24 288.18,-90.36"/>
-<polygon fill="none" stroke="#63b8ff" points="172.7,-304.18 173.22,-314.77 179.42,-306.17 172.7,-304.18"/>
+<path fill="none" stroke="#63b8ff" d="M178,-305.12C192.74,-254.2 216.01,-188.78 249,-137 259.68,-120.23 273.94,-104.12 287.99,-90.24"/>
+<polygon fill="none" stroke="#63b8ff" points="174.62,-304.21 175.25,-314.78 181.35,-306.12 174.62,-304.21"/>
 </a>
 </g>
 </g>
@@ -69,13 +72,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-608 0,-608 0,-559 58,-559 58,-608"/>
-<text text-anchor="start" x="5" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-565.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-590.5 0,-590.5 58,-590.5 58,-590.5 0,-590.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-575.5 0,-575.5 58,-575.5 58,-575.5 0,-575.5"/>
-<polygon fill="none" stroke="#666666" points="0,-559 0,-608 58,-608 58,-559 0,-559"/>
+<polygon fill="white" stroke="transparent" points="58,-634 0,-634 0,-585 58,-585 58,-634"/>
+<text text-anchor="start" x="5" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-616.5 0,-616.5 58,-616.5 58,-616.5 0,-616.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-601.5 0,-601.5 58,-601.5 58,-601.5 0,-601.5"/>
+<polygon fill="none" stroke="#666666" points="0,-585 0,-634 58,-634 58,-585 0,-585"/>
 </a>
 </g>
 </g>
@@ -83,8 +86,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M49.17,-550.21C68.38,-519.46 97.75,-472.45 121.14,-435.01"/>
-<polygon fill="none" stroke="#63b8ff" points="46.13,-548.48 43.8,-558.81 52.06,-552.19 46.13,-548.48"/>
+<path fill="none" stroke="#63b8ff" d="M48.24,-575.76C65.97,-545.59 92.89,-499.78 115.64,-461.08"/>
+<polygon fill="none" stroke="#63b8ff" points="45.1,-574.2 43.05,-584.59 51.14,-577.74 45.1,-574.2"/>
 </a>
 </g>
 </g>
@@ -92,19 +95,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-628.5 76,-628.5 76,-538.5 240,-538.5 240,-628.5"/>
-<text text-anchor="start" x="133" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-601.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-586.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-545.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-611.5 76,-611.5 240,-611.5 240,-611.5 76,-611.5"/>
-<polygon fill="#666666" stroke="#666666" points="76,-596.5 76,-596.5 240,-596.5 240,-596.5 76,-596.5"/>
-<polygon fill="none" stroke="#666666" points="76,-538.5 76,-628.5 240,-628.5 240,-538.5 76,-538.5"/>
+<polygon fill="white" stroke="transparent" points="240,-654.5 76,-654.5 76,-564.5 240,-564.5 240,-654.5"/>
+<text text-anchor="start" x="133" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-612.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-597.5" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-582.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-582.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-637.5 76,-637.5 240,-637.5 240,-637.5 76,-637.5"/>
+<polygon fill="#666666" stroke="#666666" points="76,-622.5 76,-622.5 240,-622.5 240,-622.5 76,-622.5"/>
+<polygon fill="none" stroke="#666666" points="76,-564.5 76,-654.5 240,-654.5 240,-564.5 76,-564.5"/>
 </a>
 </g>
 </g>
@@ -112,23 +115,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158,-538.45C158,-512.01 158,-477.74 158,-447.5"/>
-<polygon fill="none" stroke="#63b8ff" points="158,-447.26 154,-441.26 158,-435.26 162,-441.26 158,-447.26"/>
+<path fill="none" stroke="#63b8ff" d="M158,-564.34C158,-538.26 158,-504.37 158,-473.35"/>
+<polygon fill="none" stroke="#63b8ff" points="158,-473.17 154,-467.17 158,-461.17 162,-467.17 158,-473.17"/>
 </a>
 </g>
-<text text-anchor="middle" x="175.5" y="-480.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="175.5" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="377,-722 303,-722 303,-673 377,-673 377,-722"/>
-<text text-anchor="start" x="308" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="338" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="338" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="303,-704.5 303,-704.5 377,-704.5 377,-704.5 303,-704.5"/>
-<polygon fill="#666666" stroke="#666666" points="303,-689.5 303,-689.5 377,-689.5 377,-689.5 303,-689.5"/>
-<polygon fill="none" stroke="#666666" points="303,-673 303,-722 377,-722 377,-673 303,-673"/>
+<polygon fill="white" stroke="transparent" points="377,-748 303,-748 303,-699 377,-699 377,-748"/>
+<text text-anchor="start" x="308" y="-735.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="338" y="-720.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="338" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="303,-730.5 303,-730.5 377,-730.5 377,-730.5 303,-730.5"/>
+<polygon fill="#666666" stroke="#666666" points="303,-715.5 303,-715.5 377,-715.5 377,-715.5 303,-715.5"/>
+<polygon fill="none" stroke="#666666" points="303,-699 303,-748 377,-748 377,-699 303,-699"/>
 </a>
 </g>
 </g>
@@ -136,8 +139,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M294.06,-668.23C274.6,-656.25 251.45,-642.01 229.82,-628.7"/>
-<polygon fill="none" stroke="#63b8ff" points="292.38,-671.3 302.73,-673.56 296.05,-665.34 292.38,-671.3"/>
+<path fill="none" stroke="#63b8ff" d="M294.06,-694.23C274.6,-682.25 251.45,-668.01 229.82,-654.7"/>
+<polygon fill="none" stroke="#63b8ff" points="292.38,-697.3 302.73,-699.56 296.05,-691.34 292.38,-697.3"/>
 </a>
 </g>
 </g>
@@ -145,21 +148,21 @@
 <g id="Node000008" class="node">
 <title>Node8</title>
 <g id="a_Node000008"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="422,-636 258,-636 258,-531 422,-531 422,-636"/>
-<text text-anchor="start" x="316" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="338" y="-608.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="262" y="-593.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-593.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="262" y="-578.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-578.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="262" y="-563.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-563.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="262" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="275" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="258,-618.5 258,-618.5 422,-618.5 422,-618.5 258,-618.5"/>
-<polygon fill="#666666" stroke="#666666" points="258,-603.5 258,-603.5 422,-603.5 422,-603.5 258,-603.5"/>
-<polygon fill="none" stroke="#666666" points="258,-531 258,-636 422,-636 422,-531 258,-531"/>
+<polygon fill="white" stroke="transparent" points="422,-662 258,-662 258,-557 422,-557 422,-662"/>
+<text text-anchor="start" x="316" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="338" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="262" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-619.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="262" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="262" y="-589.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-589.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="262" y="-574.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-574.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="275" y="-563.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="258,-644.5 258,-644.5 422,-644.5 422,-644.5 258,-644.5"/>
+<polygon fill="#666666" stroke="#666666" points="258,-629.5 258,-629.5 422,-629.5 422,-629.5 258,-629.5"/>
+<polygon fill="none" stroke="#666666" points="258,-557 258,-662 422,-662 422,-557 258,-557"/>
 </a>
 </g>
 </g>
@@ -167,8 +170,8 @@
 <g id="edge8_Node000008_Node000005" class="edge">
 <title>Node5&#45;&gt;Node8</title>
 <g id="a_edge8_Node000008_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M340,-662.7C340,-654.38 340,-645.28 340,-636.33"/>
-<polygon fill="none" stroke="#63b8ff" points="336.5,-662.75 340,-672.75 343.5,-662.75 336.5,-662.75"/>
+<path fill="none" stroke="#63b8ff" d="M340,-688.7C340,-680.38 340,-671.28 340,-662.33"/>
+<polygon fill="none" stroke="#63b8ff" points="336.5,-688.75 340,-698.75 343.5,-688.75 336.5,-688.75"/>
 </a>
 </g>
 </g>
@@ -176,15 +179,15 @@
 <g id="Node000009" class="node">
 <title>Node9</title>
 <g id="a_Node000009"><a xlink:href="classtvm_1_1tirx_1_1Stmt.html" target="_top" xlink:title="Container of all statements.">
-<polygon fill="white" stroke="transparent" points="532,-513 368,-513 368,-453 532,-453 532,-513"/>
-<text text-anchor="start" x="414" y="-501" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::Stmt</text>
-<text text-anchor="start" x="448" y="-486" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="372" y="-471" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="385" y="-471" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="385" y="-460" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="368,-496 368,-496 532,-496 532,-496 368,-496"/>
-<polygon fill="#666666" stroke="#666666" points="368,-481 368,-481 532,-481 532,-481 368,-481"/>
-<polygon fill="none" stroke="#666666" points="368,-453 368,-513 532,-513 532,-453 368,-453"/>
+<polygon fill="white" stroke="transparent" points="532,-539 368,-539 368,-479 532,-479 532,-539"/>
+<text text-anchor="start" x="414" y="-527" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::Stmt</text>
+<text text-anchor="start" x="448" y="-512" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="372" y="-497" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="385" y="-497" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="385" y="-486" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="368,-522 368,-522 532,-522 532,-522 368,-522"/>
+<polygon fill="#666666" stroke="#666666" points="368,-507 368,-507 532,-507 532,-507 368,-507"/>
+<polygon fill="none" stroke="#666666" points="368,-479 368,-539 532,-539 532,-479 368,-479"/>
 </a>
 </g>
 </g>
@@ -192,8 +195,8 @@
 <g id="edge10_Node000009_Node000005" class="edge">
 <title>Node5&#45;&gt;Node9</title>
 <g id="a_edge10_Node000009_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M386.47,-675.99C403.17,-666.28 420.47,-653.01 431,-636 454.23,-598.46 455.32,-545.69 453.22,-513.23"/>
-<polygon fill="none" stroke="#63b8ff" points="384.38,-673.15 377.3,-681.03 387.75,-679.28 384.38,-673.15"/>
+<path fill="none" stroke="#63b8ff" d="M386.47,-701.99C403.17,-692.28 420.47,-679.01 431,-662 454.23,-624.46 455.32,-571.69 453.22,-539.23"/>
+<polygon fill="none" stroke="#63b8ff" points="384.38,-699.15 377.3,-707.03 387.75,-705.28 384.38,-699.15"/>
 </a>
 </g>
 </g>
@@ -238,20 +241,20 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1TypedExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="422,-418 258,-418 258,-332 422,-332 422,-418"/>
-<text text-anchor="start" x="268" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
-<text text-anchor="start" x="262" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-391" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="275" y="-380" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="262" y="-365" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-365" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
-<text text-anchor="start" x="262" y="-350" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-350" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="275" y="-339" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="258,-401 258,-401 422,-401 422,-401 258,-401"/>
-<polygon fill="#666666" stroke="#666666" points="258,-375 258,-375 273,-375 273,-375 258,-375"/>
-<polygon fill="#666666" stroke="#666666" points="273,-375 273,-375 422,-375 422,-375 273,-375"/>
-<polygon fill="none" stroke="#666666" points="258,-332 258,-418 422,-418 422,-332 258,-332"/>
+<polygon fill="white" stroke="transparent" points="422,-431 258,-431 258,-345 422,-345 422,-431"/>
+<text text-anchor="start" x="268" y="-419" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
+<text text-anchor="start" x="262" y="-404" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-404" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="275" y="-393" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="262" y="-378" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-378" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
+<text text-anchor="start" x="262" y="-363" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-363" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="275" y="-352" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="258,-414 258,-414 422,-414 422,-414 258,-414"/>
+<polygon fill="#666666" stroke="#666666" points="258,-388 258,-388 273,-388 273,-388 258,-388"/>
+<polygon fill="#666666" stroke="#666666" points="273,-388 273,-388 422,-388 422,-388 273,-388"/>
+<polygon fill="none" stroke="#666666" points="258,-345 258,-431 422,-431 422,-345 258,-345"/>
 </a>
 </g>
 </g>
@@ -259,8 +262,8 @@
 <g id="edge6_Node000006_Node000007" class="edge">
 <title>Node7&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M340,-321.62C340,-304.7 340,-285.75 340,-268.07"/>
-<polygon fill="none" stroke="#63b8ff" points="336.5,-321.85 340,-331.85 343.5,-321.85 336.5,-321.85"/>
+<path fill="none" stroke="#63b8ff" d="M340,-334.7C340,-313.96 340,-289.89 340,-268.08"/>
+<polygon fill="none" stroke="#63b8ff" points="336.5,-334.9 340,-344.9 343.5,-334.9 336.5,-334.9"/>
 </a>
 </g>
 </g>
@@ -268,8 +271,8 @@
 <g id="edge7_Node000007_Node000008" class="edge">
 <title>Node8&#45;&gt;Node7</title>
 <g id="a_edge7_Node000007_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M340,-520.89C340,-487.78 340,-447.81 340,-418.24"/>
-<polygon fill="none" stroke="#63b8ff" points="336.5,-520.92 340,-530.92 343.5,-520.92 336.5,-520.92"/>
+<path fill="none" stroke="#63b8ff" d="M340,-546.62C340,-509.75 340,-463.92 340,-431.2"/>
+<polygon fill="none" stroke="#63b8ff" points="336.5,-546.76 340,-556.76 343.5,-546.76 336.5,-546.76"/>
 </a>
 </g>
 </g>
@@ -277,11 +280,11 @@
 <g id="edge9_Node000001_Node000009" class="edge">
 <title>Node9&#45;&gt;Node1</title>
 <g id="a_edge9_Node000001_Node000009"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M455.12,-452.66C464.47,-391.03 479.21,-244.89 431,-137 424.89,-123.32 415.73,-110.56 405.55,-99.18"/>
-<polygon fill="none" stroke="#63b8ff" points="405.44,-99.07 398.41,-97.46 397.19,-90.36 404.22,-91.96 405.44,-99.07"/>
+<path fill="none" stroke="#63b8ff" d="M455.27,-478.94C465.61,-414.21 483.26,-254.57 431,-137 424.91,-123.31 415.77,-110.54 405.59,-99.16"/>
+<polygon fill="none" stroke="#63b8ff" points="405.49,-99.05 398.46,-97.44 397.24,-90.34 404.27,-91.95 405.49,-99.05"/>
 </a>
 </g>
-<text text-anchor="middle" x="483" y="-289" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +body</text>
+<text text-anchor="middle" x="484" y="-289" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +body</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode__inherit__graph.svg
index 80b06adb341..ab33454fed1 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AttrStmtNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::AttrStmtNode Pages: 1 -->
-<svg width="164pt" height="384pt"
- viewBox="0.00 0.00 164.00 384.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 380)">
+<svg width="164pt" height="410pt"
+ viewBox="0.00 0.00 164.00 410.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 406)">
 <title>tvm::tirx::AttrStmtNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -38,12 +38,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="156,-291 0,-291 0,-156 156,-156 156,-291"/>
-<text text-anchor="start" x="29.5" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="4" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-317 0,-317 0,-156 156,-156 156,-317"/>
+<text text-anchor="start" x="29.5" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="4" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -55,10 +58,10 @@
 <text text-anchor="start" x="17" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-162.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-162.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-273.5 0,-273.5 156,-273.5 156,-273.5 0,-273.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-299.5 0,-299.5 156,-299.5 156,-299.5 0,-299.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-228.5 0,-228.5 15,-228.5 15,-228.5 0,-228.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-228.5 15,-228.5 156,-228.5 156,-228.5 15,-228.5"/>
-<polygon fill="none" stroke="#666666" points="0,-156 0,-291 156,-291 156,-156 0,-156"/>
+<polygon fill="none" stroke="#666666" points="0,-156 0,-317 156,-317 156,-156 0,-156"/>
 </a>
 </g>
 </g>
@@ -66,8 +69,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-145.83C78,-137.23 78,-128.57 78,-120.23"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-145.88 78,-155.88 81.5,-145.88 74.5,-145.88"/>
+<path fill="none" stroke="#63b8ff" d="M78,-145.72C78,-137.04 78,-128.39 78,-120.11"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-145.91 78,-155.91 81.5,-145.91 74.5,-145.91"/>
 </a>
 </g>
 </g>
@@ -75,13 +78,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-376 49,-376 49,-327 107,-327 107,-376"/>
-<text text-anchor="start" x="54" y="-363.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-358.5 49,-358.5 107,-358.5 107,-358.5 49,-358.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-343.5 49,-343.5 107,-343.5 107,-343.5 49,-343.5"/>
-<polygon fill="none" stroke="#666666" points="49,-327 49,-376 107,-376 107,-327 49,-327"/>
+<polygon fill="white" stroke="transparent" points="107,-402 49,-402 49,-353 107,-353 107,-402"/>
+<text text-anchor="start" x="54" y="-389.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-384.5 49,-384.5 107,-384.5 107,-384.5 49,-384.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-369.5 49,-369.5 107,-369.5 107,-369.5 49,-369.5"/>
+<polygon fill="none" stroke="#666666" points="49,-353 49,-402 107,-402 107,-353 49,-353"/>
 </a>
 </g>
 </g>
@@ -89,8 +92,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-316.56C78,-308.65 78,-299.96 78,-291.17"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-316.8 78,-326.8 81.5,-316.8 74.5,-316.8"/>
+<path fill="none" stroke="#63b8ff" d="M78,-342.77C78,-334.91 78,-326.2 78,-317.26"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-342.92 78,-352.92 81.5,-342.92 74.5,-342.92"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode-members.html
index 18690a898a8..9766d742d22 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode-members.html
@@ -81,14 +81,15 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a09de80eac0810ad49c95119094e55197">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a4ff6e9d1f8a7597a88a02364">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html#a7c1459c91271fb5e609c17138230c9b8">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html">tvm::tirx::BindNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html#a391d1aa0fbac11e39526fd0dbb33448d">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.Bind&quot;, BindNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html">tvm::tirx::BindNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html#a04fb12de12c00e6b19009e0c29c8398a">value</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html">tvm::tirx::BindNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html#ac4bf32fb5d6c044f6d8a2462275a0b03">var</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html">tvm::tirx::BindNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d34545f6c76afad">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html#a7c1459c91271fb5e609c17138230c9b8">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html">tvm::tirx::BindNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html#a391d1aa0fbac11e39526fd0dbb33448d">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.Bind&quot;, BindNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html">tvm::tirx::BindNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html#a04fb12de12c00e6b19009e0c29c8398a">value</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html">tvm::tirx::BindNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html#ac4bf32fb5d6c044f6d8a2462275a0b03">var</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BindNode.html">tvm::tirx::BindNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode.html
index 29497dea154..650e5877329 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode.html
@@ -89,12 +89,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::tirx::BindNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BindNode__inherit__graph.svg" width="219" height="472"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BindNode__inherit__graph.svg" width="219" height="507"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::tirx::BindNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BindNode__coll__graph.svg" width="598" height="651"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BindNode__coll__graph.svg" width="598" height="686"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -135,6 +135,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1tirx_1_1StmtNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td></tr>
 <tr class="memitem:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a3c7cfa4a4ff6e9d1f8a7597a88a02364"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a [...]
 <tr class="separator:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_ab13804ba5bb4f0723d34545f6c76afad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d345 [...]
+<tr class="separator:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a09de80eac0810ad49c95119094e55197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href= [...]
 <tr class="separator:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode__coll__graph.svg
index 3bc9179ee5a..048c61391e4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::BindNode Pages: 1 -->
-<svg width="448pt" height="488pt"
- viewBox="0.00 0.00 448.00 488.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 484)">
+<svg width="448pt" height="514pt"
+ viewBox="0.00 0.00 448.00 514.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 510)">
 <title>tvm::tirx::BindNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,10 +30,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="183,-242 27,-242 27,-122 183,-122 183,-242"/>
-<text text-anchor="start" x="56.5" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="31" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="44" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="183,-268 27,-268 27,-122 183,-122 183,-268"/>
+<text text-anchor="start" x="56.5" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="31" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="44" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="31" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="44" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="44" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="31" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="44" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="31" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -45,10 +48,10 @@
 <text text-anchor="start" x="44" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="31" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="44" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="27,-225 27,-225 183,-225 183,-225 27,-225"/>
+<polygon fill="#666666" stroke="#666666" points="27,-251 27,-251 183,-251 183,-251 27,-251"/>
 <polygon fill="#666666" stroke="#666666" points="27,-195 27,-195 42,-195 42,-195 27,-195"/>
 <polygon fill="#666666" stroke="#666666" points="42,-195 42,-195 183,-195 183,-195 42,-195"/>
-<polygon fill="none" stroke="#666666" points="27,-122 27,-242 183,-242 183,-122 27,-122"/>
+<polygon fill="none" stroke="#666666" points="27,-122 27,-268 183,-268 183,-122 27,-122"/>
 </a>
 </g>
 </g>
@@ -56,8 +59,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M158.9,-113.63C169.46,-100.43 180.16,-87.06 189.54,-75.32"/>
-<polygon fill="none" stroke="#63b8ff" points="155.87,-111.81 152.36,-121.81 161.34,-116.18 155.87,-111.81"/>
+<path fill="none" stroke="#63b8ff" d="M164.12,-113.36C173.96,-99.94 183.71,-86.63 192.21,-75.04"/>
+<polygon fill="none" stroke="#63b8ff" points="161.08,-111.58 158,-121.71 166.73,-115.72 161.08,-111.58"/>
 </a>
 </g>
 </g>
@@ -65,13 +68,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-366 0,-366 0,-317 58,-317 58,-366"/>
-<text text-anchor="start" x="5" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-348.5 0,-348.5 58,-348.5 58,-348.5 0,-348.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-333.5 0,-333.5 58,-333.5 58,-333.5 0,-333.5"/>
-<polygon fill="none" stroke="#666666" points="0,-317 0,-366 58,-366 58,-317 0,-317"/>
+<polygon fill="white" stroke="transparent" points="58,-392 0,-392 0,-343 58,-343 58,-392"/>
+<text text-anchor="start" x="5" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-374.5 0,-374.5 58,-374.5 58,-374.5 0,-374.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-359.5 0,-359.5 58,-359.5 58,-359.5 0,-359.5"/>
+<polygon fill="none" stroke="#666666" points="0,-343 0,-392 58,-392 58,-343 0,-343"/>
 </a>
 </g>
 </g>
@@ -79,8 +82,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M44.77,-307.82C53.92,-288.86 65.72,-264.4 76.45,-242.16"/>
-<polygon fill="none" stroke="#63b8ff" points="41.57,-306.39 40.38,-316.92 47.88,-309.44 41.57,-306.39"/>
+<path fill="none" stroke="#63b8ff" d="M43.67,-333.59C51.97,-314.97 62.69,-290.92 72.84,-268.15"/>
+<polygon fill="none" stroke="#63b8ff" points="40.44,-332.23 39.57,-342.79 46.84,-335.08 40.44,-332.23"/>
 </a>
 </g>
 </g>
@@ -88,19 +91,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="240,-386.5 76,-386.5 76,-296.5 240,-296.5 240,-386.5"/>
-<text text-anchor="start" x="133" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-369.5 76,-369.5 240,-369.5 240,-369.5 76,-369.5"/>
-<polygon fill="#666666" stroke="#666666" points="76,-354.5 76,-354.5 240,-354.5 240,-354.5 76,-354.5"/>
-<polygon fill="none" stroke="#666666" points="76,-296.5 76,-386.5 240,-386.5 240,-296.5 76,-296.5"/>
+<polygon fill="white" stroke="transparent" points="240,-412.5 76,-412.5 76,-322.5 240,-322.5 240,-412.5"/>
+<text text-anchor="start" x="133" y="-400.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
+<text text-anchor="start" x="80" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
+<text text-anchor="start" x="80" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-395.5 76,-395.5 240,-395.5 240,-395.5 76,-395.5"/>
+<polygon fill="#666666" stroke="#666666" points="76,-380.5 76,-380.5 240,-380.5 240,-380.5 76,-380.5"/>
+<polygon fill="none" stroke="#666666" points="76,-322.5 76,-412.5 240,-412.5 240,-322.5 76,-322.5"/>
 </a>
 </g>
 </g>
@@ -108,23 +111,23 @@
 <g id="edge3_Node000002_Node000004" class="edge">
 <title>Node4&#45;&gt;Node2</title>
 <g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M143.1,-296.21C138.65,-283 133.66,-268.18 128.8,-253.72"/>
-<polygon fill="none" stroke="#63b8ff" points="128.76,-253.62 123.06,-249.2 124.94,-242.24 130.64,-246.65 128.76,-253.62"/>
+<path fill="none" stroke="#63b8ff" d="M144.21,-322.15C140.17,-309.15 135.61,-294.48 131.07,-279.87"/>
+<polygon fill="none" stroke="#63b8ff" points="131,-279.66 125.4,-275.11 127.44,-268.2 133.04,-272.74 131,-279.66"/>
 </a>
 </g>
-<text text-anchor="middle" x="151.5" y="-263" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="154.5" y="-289" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="285,-480 211,-480 211,-431 285,-431 285,-480"/>
-<text text-anchor="start" x="216" y="-467.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="246" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="246" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="211,-462.5 211,-462.5 285,-462.5 285,-462.5 211,-462.5"/>
-<polygon fill="#666666" stroke="#666666" points="211,-447.5 211,-447.5 285,-447.5 285,-447.5 211,-447.5"/>
-<polygon fill="none" stroke="#666666" points="211,-431 211,-480 285,-480 285,-431 211,-431"/>
+<polygon fill="white" stroke="transparent" points="285,-506 211,-506 211,-457 285,-457 285,-506"/>
+<text text-anchor="start" x="216" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="246" y="-478.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="246" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="211,-488.5 211,-488.5 285,-488.5 285,-488.5 211,-488.5"/>
+<polygon fill="#666666" stroke="#666666" points="211,-473.5 211,-473.5 285,-473.5 285,-473.5 211,-473.5"/>
+<polygon fill="none" stroke="#666666" points="211,-457 211,-506 285,-506 285,-457 211,-457"/>
 </a>
 </g>
 </g>
@@ -132,8 +135,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node5&#45;&gt;Node4</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M222.58,-422.86C213.52,-411.59 203.15,-398.69 193.41,-386.56"/>
-<polygon fill="none" stroke="#63b8ff" points="219.92,-425.14 228.91,-430.75 225.38,-420.76 219.92,-425.14"/>
+<path fill="none" stroke="#63b8ff" d="M222.58,-448.86C213.52,-437.59 203.15,-424.69 193.41,-412.56"/>
+<polygon fill="none" stroke="#63b8ff" points="219.92,-451.14 228.91,-456.75 225.38,-446.76 219.92,-451.14"/>
 </a>
 </g>
 </g>
@@ -141,21 +144,21 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="422,-394 258,-394 258,-289 422,-289 422,-394"/>
-<text text-anchor="start" x="316" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="338" y="-366.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="262" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="262" y="-336.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-336.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="262" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="262" y="-306.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="275" y="-306.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="275" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="258,-376.5 258,-376.5 422,-376.5 422,-376.5 258,-376.5"/>
-<polygon fill="#666666" stroke="#666666" points="258,-361.5 258,-361.5 422,-361.5 422,-361.5 258,-361.5"/>
-<polygon fill="none" stroke="#666666" points="258,-289 258,-394 422,-394 422,-289 258,-289"/>
+<polygon fill="white" stroke="transparent" points="422,-420 258,-420 258,-315 422,-315 422,-420"/>
+<text text-anchor="start" x="316" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="338" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="262" y="-377.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-377.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="262" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="262" y="-347.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-347.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="262" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="275" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="275" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="258,-402.5 258,-402.5 422,-402.5 422,-402.5 258,-402.5"/>
+<polygon fill="#666666" stroke="#666666" points="258,-387.5 258,-387.5 422,-387.5 422,-387.5 258,-387.5"/>
+<polygon fill="none" stroke="#666666" points="258,-315 258,-420 422,-420 422,-315 258,-315"/>
 </a>
 </g>
 </g>
@@ -163,8 +166,8 @@
 <g id="edge7_Node000007_Node000005" class="edge">
 <title>Node5&#45;&gt;Node7</title>
 <g id="a_edge7_Node000007_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M273.96,-422.9C281.27,-414 289.42,-404.08 297.43,-394.33"/>
-<polygon fill="none" stroke="#63b8ff" points="271.15,-420.8 267.51,-430.75 276.56,-425.24 271.15,-420.8"/>
+<path fill="none" stroke="#63b8ff" d="M273.96,-448.9C281.27,-440 289.42,-430.08 297.43,-420.33"/>
+<polygon fill="none" stroke="#63b8ff" points="271.15,-446.8 267.51,-456.75 276.56,-451.24 271.15,-446.8"/>
 </a>
 </g>
 </g>
@@ -172,23 +175,23 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1Var.html" target="_top" xlink:title="Managed reference to VarNode.">
-<polygon fill="white" stroke="transparent" points="440,-242 276,-242 276,-122 440,-122 440,-242"/>
-<text text-anchor="start" x="337" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
-<text text-anchor="start" x="356" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="280" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="293" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
-<text text-anchor="start" x="280" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="293" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
-<text text-anchor="start" x="280" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="293" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
-<text text-anchor="start" x="280" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="293" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
-<text text-anchor="start" x="280" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="293" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="293" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="276,-225 276,-225 440,-225 440,-225 276,-225"/>
-<polygon fill="#666666" stroke="#666666" points="276,-210 276,-210 440,-210 440,-210 276,-210"/>
-<polygon fill="none" stroke="#666666" points="276,-122 276,-242 440,-242 440,-122 276,-122"/>
+<polygon fill="white" stroke="transparent" points="440,-255 276,-255 276,-135 440,-135 440,-255"/>
+<text text-anchor="start" x="337" y="-243" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
+<text text-anchor="start" x="356" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="280" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="293" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
+<text text-anchor="start" x="280" y="-198" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="293" y="-198" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
+<text text-anchor="start" x="280" y="-183" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="293" y="-183" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="280" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="293" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="280" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="293" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="293" y="-142" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="276,-238 276,-238 440,-238 440,-238 276,-238"/>
+<polygon fill="#666666" stroke="#666666" points="276,-223 276,-223 440,-223 440,-223 276,-223"/>
+<polygon fill="none" stroke="#666666" points="276,-135 276,-255 440,-255 440,-135 276,-135"/>
 </a>
 </g>
 </g>
@@ -196,28 +199,28 @@
 <g id="edge5_Node000001_Node000006" class="edge">
 <title>Node6&#45;&gt;Node1</title>
 <g id="a_edge5_Node000001_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M300.26,-121.81C288.01,-109.25 275.27,-96.19 263.6,-84.22"/>
-<polygon fill="none" stroke="#63b8ff" points="263.3,-83.91 256.24,-82.41 254.92,-75.32 261.97,-76.82 263.3,-83.91"/>
+<path fill="none" stroke="#63b8ff" d="M305.05,-134.77C290.05,-117.98 273.95,-99.97 259.78,-84.12"/>
+<polygon fill="none" stroke="#63b8ff" points="259.68,-84.01 252.7,-82.2 251.68,-75.06 258.66,-76.87 259.68,-84.01"/>
 </a>
 </g>
-<text text-anchor="middle" x="295" y="-96" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +var</text>
+<text text-anchor="middle" x="291" y="-96" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +var</text>
 </g>
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge8_Node000001_Node000007" class="edge">
 <title>Node7&#45;&gt;Node1</title>
 <g id="a_edge8_Node000001_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M264.08,-288.94C249.65,-275.43 236.45,-259.63 228,-242 204.63,-193.23 205.97,-130.12 210.84,-87.2"/>
-<polygon fill="none" stroke="#63b8ff" points="210.86,-87.02 207.64,-80.57 212.36,-75.11 215.58,-81.57 210.86,-87.02"/>
+<path fill="none" stroke="#63b8ff" d="M264.01,-314.98C249.59,-301.46 236.4,-285.65 228,-268 200.64,-210.54 203.9,-135.52 210.23,-87.17"/>
+<polygon fill="none" stroke="#63b8ff" points="210.25,-87.06 207.13,-80.56 211.94,-75.18 215.05,-81.68 210.25,-87.06"/>
 </a>
 </g>
-<text text-anchor="middle" x="247.5" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +value</text>
+<text text-anchor="middle" x="247.5" y="-192.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +value</text>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge6_Node000006_Node000007" class="edge">
 <title>Node7&#45;&gt;Node6</title>
 <g id="a_edge6_Node000006_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M347.04,-278.91C348.42,-266.79 349.87,-254.1 351.25,-242.06"/>
-<polygon fill="none" stroke="#63b8ff" points="343.55,-278.6 345.89,-288.93 350.51,-279.39 343.55,-278.6"/>
+<path fill="none" stroke="#63b8ff" d="M346.54,-304.51C348.24,-288.43 350.07,-271.15 351.75,-255.21"/>
+<polygon fill="none" stroke="#63b8ff" points="343.02,-304.57 345.45,-314.88 349.98,-305.3 343.02,-304.57"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode__inherit__graph.svg
index 270bcec86b5..5008ef25a3f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BindNode__inherit__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::BindNode Pages: 1 -->
-<svg width="164pt" height="354pt"
- viewBox="0.00 0.00 164.00 354.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 350)">
+<svg width="164pt" height="380pt"
+ viewBox="0.00 0.00 164.00 380.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 376)">
 <title>tvm::tirx::BindNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -34,12 +34,15 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="156,-261 0,-261 0,-126 156,-126 156,-261"/>
-<text text-anchor="start" x="29.5" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="4" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="4" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-287 0,-287 0,-126 156,-126 156,-287"/>
+<text text-anchor="start" x="29.5" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="4" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="4" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -51,10 +54,10 @@
 <text text-anchor="start" x="17" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-243.5 0,-243.5 156,-243.5 156,-243.5 0,-243.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-269.5 0,-269.5 156,-269.5 156,-269.5 0,-269.5"/>
 <polygon fill="#666666" stroke="#666666" points="0,-198.5 0,-198.5 15,-198.5 15,-198.5 0,-198.5"/>
 <polygon fill="#666666" stroke="#666666" points="15,-198.5 15,-198.5 156,-198.5 156,-198.5 15,-198.5"/>
-<polygon fill="none" stroke="#666666" points="0,-126 0,-261 156,-261 156,-126 0,-126"/>
+<polygon fill="none" stroke="#666666" points="0,-126 0,-287 156,-287 156,-126 0,-126"/>
 </a>
 </g>
 </g>
@@ -62,8 +65,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-115.47C78,-106.77 78,-98.14 78,-90.08"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-115.68 78,-125.68 81.5,-115.68 74.5,-115.68"/>
+<path fill="none" stroke="#63b8ff" d="M78,-115.68C78,-106.8 78,-98.1 78,-90.01"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-115.75 78,-125.75 81.5,-115.75 74.5,-115.75"/>
 </a>
 </g>
 </g>
@@ -71,13 +74,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-346 49,-346 49,-297 107,-297 107,-346"/>
-<text text-anchor="start" x="54" y="-333.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-303.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-328.5 49,-328.5 107,-328.5 107,-328.5 49,-328.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-313.5 49,-313.5 107,-313.5 107,-313.5 49,-313.5"/>
-<polygon fill="none" stroke="#666666" points="49,-297 49,-346 107,-346 107,-297 49,-297"/>
+<polygon fill="white" stroke="transparent" points="107,-372 49,-372 49,-323 107,-323 107,-372"/>
+<text text-anchor="start" x="54" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-344.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-354.5 49,-354.5 107,-354.5 107,-354.5 49,-354.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-339.5 49,-339.5 107,-339.5 107,-339.5 49,-339.5"/>
+<polygon fill="none" stroke="#666666" points="49,-323 49,-372 107,-372 107,-323 49,-323"/>
 </a>
 </g>
 </g>
@@ -85,8 +88,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-286.56C78,-278.65 78,-269.96 78,-261.17"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-286.8 78,-296.8 81.5,-286.8 74.5,-286.8"/>
+<path fill="none" stroke="#63b8ff" d="M78,-312.77C78,-304.91 78,-296.2 78,-287.26"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-312.92 78,-322.92 81.5,-312.92 74.5,-312.92"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode-members.html
index 4a17eb80395..9eb72a17a6b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode-members.html
@@ -81,12 +81,13 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a09de80eac0810ad49c95119094e55197">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a4ff6e9d1f8a7597a88a02364">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html#a2f90b5c0537a49ff35be9170e55bf898">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html">tvm::tirx::BreakNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html#a9710aeb8639970b9a72292171fcb2c5a">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.Break&quot;, BreakNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html">tvm::tirx::BreakNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d34545f6c76afad">_type_s_eq_hash_subclass_kind_fixed</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html#a2f90b5c0537a49ff35be9170e55bf898">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html">tvm::tirx::BreakNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3ca19d0e9b82a0ffaf884c9fb54c2976">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a813b36d5b9d1f83085515b2a9abd7756">StmtNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a93524f007313a50107df74db46979532">StmtNode</a>(Span span)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a9a9a9857c48d1f35a6ea1c8f41c6fbe5">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;tirx.Stmt&quot;, StmtNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html#a9710aeb8639970b9a72292171fcb2c5a">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.Break&quot;, BreakNode, StmtNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html">tvm::tirx::BreakNode</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode.html
index d72392994de..11ae129225e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode.html
@@ -88,12 +88,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::tirx::BreakNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BreakNode__inherit__graph.svg" width="219" height="452"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BreakNode__inherit__graph.svg" width="219" height="487"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <div class="dynheader">
 Collaboration diagram for tvm::tirx::BreakNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BreakNode__coll__graph.svg" width="343" height="618"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BreakNode__coll__graph.svg" width="343" height="652"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
 </div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
@@ -125,6 +125,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="inherit_header pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1tirx_1_1StmtNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1tirx_1_1StmtNode.html">tvm::tirx::StmtNode</a></td></tr>
 <tr class="memitem:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a3c7cfa4a4ff6e9d1f8a7597a88a02364"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">TVMFFISEqHashKind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#a3c7cfa4a [...]
 <tr class="separator:a3c7cfa4a4ff6e9d1f8a7597a88a02364 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_ab13804ba5bb4f0723d34545f6c76afad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html#ab13804ba5bb4f0723d345 [...]
+<tr class="separator:ab13804ba5bb4f0723d34545f6c76afad inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode" id="r_a09de80eac0810ad49c95119094e55197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1With.html">constexpr</a> <a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1With.html">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href= [...]
 <tr class="separator:a09de80eac0810ad49c95119094e55197 inherit pub_static_attribs_classtvm_1_1tirx_1_1StmtNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode__coll__graph.svg
index 4c2a401b17e..668a6a4ab55 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BreakNode__coll__graph.svg
@@ -4,9 +4,9 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::BreakNode Pages: 1 -->
-<svg width="257pt" height="463pt"
- viewBox="0.00 0.00 257.00 463.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 459)">
+<svg width="257pt" height="489pt"
+ viewBox="0.00 0.00 257.00 489.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 485)">
 <title>tvm::tirx::BreakNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
@@ -30,10 +30,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1tirx_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="transparent" points="156,-232 0,-232 0,-112 156,-112 156,-232"/>
-<text text-anchor="start" x="29.5" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="4" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<polygon fill="white" stroke="transparent" points="156,-258 0,-258 0,-112 156,-112 156,-258"/>
+<text text-anchor="start" x="29.5" y="-246" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
+<text text-anchor="start" x="4" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-231" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="4" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-216" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_subclass</text>
+<text text-anchor="start" x="17" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">_kind_fixed</text>
 <text text-anchor="start" x="4" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
 <text text-anchor="start" x="4" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
@@ -45,10 +48,10 @@
 <text text-anchor="start" x="17" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="17" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-215 0,-215 156,-215 156,-215 0,-215"/>
+<polygon fill="#666666" stroke="#666666" points="0,-241 0,-241 156,-241 156,-241 0,-241"/>
 <polygon fill="#666666" stroke="#666666" points="0,-185 0,-185 15,-185 15,-185 0,-185"/>
 <polygon fill="#666666" stroke="#666666" points="15,-185 15,-185 156,-185 156,-185 15,-185"/>
-<polygon fill="none" stroke="#666666" points="0,-112 0,-232 156,-232 156,-112 0,-112"/>
+<polygon fill="none" stroke="#666666" points="0,-112 0,-258 156,-258 156,-112 0,-112"/>
 </a>
 </g>
 </g>
@@ -56,8 +59,8 @@
 <g id="edge1_Node000001_Node000002" class="edge">
 <title>Node2&#45;&gt;Node1</title>
 <g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M78,-101.51C78,-92.47 78,-83.5 78,-75.29"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-101.73 78,-111.73 81.5,-101.73 74.5,-101.73"/>
+<path fill="none" stroke="#63b8ff" d="M78,-101.59C78,-92.34 78,-83.3 78,-75.09"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-101.68 78,-111.68 81.5,-101.68 74.5,-101.68"/>
 </a>
 </g>
 </g>
@@ -65,13 +68,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="67,-348.5 9,-348.5 9,-299.5 67,-299.5 67,-348.5"/>
-<text text-anchor="start" x="14" y="-336" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="36" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="36" y="-306" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="9,-331 9,-331 67,-331 67,-331 9,-331"/>
-<polygon fill="#666666" stroke="#666666" points="9,-316 9,-316 67,-316 67,-316 9,-316"/>
-<polygon fill="none" stroke="#666666" points="9,-299.5 9,-348.5 67,-348.5 67,-299.5 9,-299.5"/>
+<polygon fill="white" stroke="transparent" points="67,-374.5 9,-374.5 9,-325.5 67,-325.5 67,-374.5"/>
+<text text-anchor="start" x="14" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="36" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="36" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="9,-357 9,-357 67,-357 67,-357 9,-357"/>
+<polygon fill="#666666" stroke="#666666" points="9,-342 9,-342 67,-342 67,-342 9,-342"/>
+<polygon fill="none" stroke="#666666" points="9,-325.5 9,-374.5 67,-374.5 67,-325.5 9,-325.5"/>
 </a>
 </g>
 </g>
@@ -79,8 +82,8 @@
 <g id="edge2_Node000002_Node000003" class="edge">
 <title>Node3&#45;&gt;Node2</title>
 <g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M46.98,-289.33C51.47,-272.5 57.03,-251.64 62.2,-232.25"/>
-<polygon fill="none" stroke="#63b8ff" points="43.53,-288.67 44.34,-299.23 50.3,-290.47 43.53,-288.67"/>
+<path fill="none" stroke="#63b8ff" d="M46.22,-315.52C50.3,-298.89 55.39,-278.12 60.31,-258.1"/>
+<polygon fill="none" stroke="#63b8ff" points="42.8,-314.75 43.82,-325.3 49.6,-316.42 42.8,-314.75"/>
 </a>
 </g>
 </g>
@@ -88,19 +91,19 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="249,-369 85,-369 85,-279 249,-279 249,-369"/>
... 15924 lines suppressed ...