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/07/31 05:43:58 UTC

(tvm-site) branch asf-site updated: deploying docs (apache/tvm@36cf270e912a1abe20a099bde632683350da8dc6)

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 0e19f147b0a deploying docs (apache/tvm@36cf270e912a1abe20a099bde632683350da8dc6)
0e19f147b0a is described below

commit 0e19f147b0aa9782bf85c83d6cc392edbfa4488b
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Fri Jul 31 05:43:50 2026 +0000

    deploying docs (apache/tvm@36cf270e912a1abe20a099bde632683350da8dc6)
---
 .../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        |   12 +-
 docs/_sources/sg_execution_times.rst               |   30 +-
 docs/commit_hash                                   |    2 +-
 docs/deep_dive/relax/tutorials/relax_creation.html |    2 +-
 .../relax/tutorials/sg_execution_times.html        |    6 +-
 .../tensor_ir/tutorials/sg_execution_times.html    |    8 +-
 .../tensor_ir/tutorials/tir_transformation.html    |    6 +-
 docs/genindex.html                                 |   50 +-
 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      |   14 +-
 docs/objects.inv                                   |  Bin 25193 -> 25249 bytes
 docs/reference/api/doxygen/annotated.html          |  312 +-
 .../reference/api/doxygen/arg__info_8h_source.html |    2 +-
 .../api/doxygen/async__structs_8h_source.html      |   18 +-
 .../api/doxygen/axis__group__graph_8h.html         |    4 +-
 .../api/doxygen/axis__group__graph_8h_source.html  |   24 +-
 docs/reference/api/doxygen/bound_8h.html           |    6 +-
 docs/reference/api/doxygen/bound_8h_source.html    |    6 +-
 docs/reference/api/doxygen/buffer_8h.html          |   38 +-
 docs/reference/api/doxygen/buffer_8h_source.html   |  464 +-
 docs/reference/api/doxygen/classes.html            |    4 +-
 docs/reference/api/doxygen/classtvm_1_1Expr.html   |    2 +-
 .../doxygen/classtvm_1_1Expr__inherit__graph.svg   |  938 ++--
 docs/reference/api/doxygen/classtvm_1_1Type.html   |    2 +-
 .../api/doxygen/classtvm_1_1TypeNode.html          |    2 +-
 .../classtvm_1_1TypeNode__inherit__graph.svg       |  509 +-
 .../doxygen/classtvm_1_1Type__inherit__graph.svg   |  121 +-
 docs/reference/api/doxygen/classtvm_1_1Var.html    |    2 +-
 .../doxygen/classtvm_1_1Var__inherit__graph.svg    |  166 +-
 .../classtvm_1_1relax_1_1MatchResult-members.html  |    2 +-
 .../doxygen/classtvm_1_1relax_1_1MatchResult.html  |   12 +-
 ...asstvm_1_1relax_1_1MatchResultNode-members.html |    2 +-
 .../classtvm_1_1relax_1_1MatchResultNode.html      |   12 +-
 ...ilder_1_1IRBuilderFrameNode__inherit__graph.svg |   40 +-
 ...er_1_1tirx_1_1AllocBufferFrameNode-members.html |    2 +-
 ...r__builder_1_1tirx_1_1AllocBufferFrameNode.html |   14 +-
 ..._1tirx_1_1AllocBufferFrameNode__coll__graph.svg |  285 +-
 ...lder_1_1tirx_1_1ComposeOpFrameNode-members.html |    2 +-
 ...1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html |   12 +-
 ...der_1_1tirx_1_1DeclBufferFrameNode-members.html |   19 +-
 ...ir__builder_1_1tirx_1_1DeclBufferFrameNode.html |   35 +-
 ...1_1tirx_1_1DeclBufferFrameNode__coll__graph.svg |  301 +-
 ...tirx_1_1DeclBufferFrameNode__inherit__graph.svg |  128 +-
 ...ilder_1_1tirx_1_1PrimFuncFrameNode-members.html |    4 +-
 ..._1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html |   26 +-
 ...builder_1_1tirx_1_1SBlockFrameNode-members.html |    2 +-
 ..._1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html |   12 +-
 ...der_1_1tirx_1_1TIRFrameNode__inherit__graph.svg |   40 +-
 .../classtvm_1_1te_1_1ExternOp-members.html        |    2 +-
 .../api/doxygen/classtvm_1_1te_1_1ExternOp.html    |   12 +-
 .../classtvm_1_1te_1_1ExternOpNode-members.html    |    4 +-
 .../doxygen/classtvm_1_1te_1_1ExternOpNode.html    |   24 +-
 .../classtvm_1_1tirx_1_1AllocBuffer-members.html   |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1AllocBuffer.html   |   10 +-
 ...lasstvm_1_1tirx_1_1AllocBufferNode-members.html |    2 +-
 .../classtvm_1_1tirx_1_1AllocBufferNode.html       |   14 +-
 ...tvm_1_1tirx_1_1AllocBufferNode__coll__graph.svg |  291 +-
 .../classtvm_1_1tirx_1_1Buffer-members.html        |  105 -
 .../api/doxygen/classtvm_1_1tirx_1_1Buffer.html    |  698 ---
 ..._1tirx_1_1BufferAxisGraphExtractor-members.html |    4 +-
 ...asstvm_1_1tirx_1_1BufferAxisGraphExtractor.html |   20 +-
 .../classtvm_1_1tirx_1_1BufferAxisHash.html        |    4 +-
 .../classtvm_1_1tirx_1_1BufferLoad-members.html    |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1BufferLoad.html    |   10 +-
 ...classtvm_1_1tirx_1_1BufferLoadNode-members.html |    2 +-
 .../classtvm_1_1tirx_1_1BufferLoadNode.html        |   18 +-
 ...stvm_1_1tirx_1_1BufferLoadNode__coll__graph.svg |  329 +-
 .../classtvm_1_1tirx_1_1BufferNode-members.html    |  106 -
 .../doxygen/classtvm_1_1tirx_1_1BufferNode.html    |  560 ---
 ...classtvm_1_1tirx_1_1BufferNode__coll__graph.svg |  376 --
 .../classtvm_1_1tirx_1_1BufferRegion-members.html  |    6 +-
 .../doxygen/classtvm_1_1tirx_1_1BufferRegion.html  |   34 +-
 ...asstvm_1_1tirx_1_1BufferRegionNode-members.html |    2 +-
 .../classtvm_1_1tirx_1_1BufferRegionNode.html      |   14 +-
 ...vm_1_1tirx_1_1BufferRegionNode__coll__graph.svg |  219 +-
 .../classtvm_1_1tirx_1_1BufferStore-members.html   |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1BufferStore.html   |   10 +-
 ...lasstvm_1_1tirx_1_1BufferStoreNode-members.html |    2 +-
 .../classtvm_1_1tirx_1_1BufferStoreNode.html       |   18 +-
 ...tvm_1_1tirx_1_1BufferStoreNode__coll__graph.svg |  436 +-
 ...=> classtvm_1_1tirx_1_1BufferType-members.html} |   18 +-
 .../doxygen/classtvm_1_1tirx_1_1BufferType.html    |  268 ++
 ...classtvm_1_1tirx_1_1BufferTypeNode-members.html |  108 +
 .../classtvm_1_1tirx_1_1BufferTypeNode.html        |  532 +++
 ...stvm_1_1tirx_1_1BufferTypeNode__coll__graph.svg |  364 ++
 ..._1_1tirx_1_1BufferTypeNode__inherit__graph.svg} |  103 +-
 ...classtvm_1_1tirx_1_1BufferType__coll__graph.svg |   84 +
 ...sstvm_1_1tirx_1_1BufferType__inherit__graph.svg |   84 +
 .../classtvm_1_1tirx_1_1BufferVar-members.html     |  127 +
 .../api/doxygen/classtvm_1_1tirx_1_1BufferVar.html | 1039 +++++
 .../classtvm_1_1tirx_1_1BufferVar__coll__graph.svg |  138 +
 ...asstvm_1_1tirx_1_1BufferVar__inherit__graph.svg |  138 +
 .../classtvm_1_1tirx_1_1Buffer__coll__graph.svg    |   69 -
 .../classtvm_1_1tirx_1_1Buffer__inherit__graph.svg |   69 -
 .../classtvm_1_1tirx_1_1CopyPipeline-members.html  |    4 +-
 .../doxygen/classtvm_1_1tirx_1_1CopyPipeline.html  |   14 +-
 ...asstvm_1_1tirx_1_1CopyPipelineNode-members.html |    2 +-
 .../classtvm_1_1tirx_1_1CopyPipelineNode.html      |    6 +-
 .../classtvm_1_1tirx_1_1DeclBuffer-members.html    |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1DeclBuffer.html    |   16 +-
 ...classtvm_1_1tirx_1_1DeclBufferNode-members.html |   15 +-
 .../classtvm_1_1tirx_1_1DeclBufferNode.html        |   35 +-
 ...stvm_1_1tirx_1_1DeclBufferNode__coll__graph.svg |  297 +-
 ...m_1_1tirx_1_1DeclBufferNode__inherit__graph.svg |   82 +-
 ...tvm_1_1tirx_1_1DispatchContextNode-members.html |    4 +-
 .../classtvm_1_1tirx_1_1DispatchContextNode.html   |   24 +-
 ...stvm_1_1tirx_1_1ExprFunctor__inherit__graph.svg |    2 +-
 ...stvm_1_1tirx_1_1ExprMutator__inherit__graph.svg |    2 +-
 .../api/doxygen/classtvm_1_1tirx_1_1ForNode.html   |    8 +-
 .../doxygen/classtvm_1_1tirx_1_1IndexMapNode.html  |    2 +-
 ...sstvm_1_1tirx_1_1MatchBufferRegion-members.html |    2 +-
 .../classtvm_1_1tirx_1_1MatchBufferRegion.html     |   10 +-
 ...m_1_1tirx_1_1MatchBufferRegionNode-members.html |    2 +-
 .../classtvm_1_1tirx_1_1MatchBufferRegionNode.html |   14 +-
 ...1tirx_1_1MatchBufferRegionNode__coll__graph.svg |  311 +-
 .../classtvm_1_1tirx_1_1Pipeline-members.html      |    2 +-
 .../api/doxygen/classtvm_1_1tirx_1_1Pipeline.html  |   10 +-
 .../classtvm_1_1tirx_1_1PipelineNode-members.html  |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1PipelineNode.html  |   12 +-
 .../classtvm_1_1tirx_1_1PrimFunc-members.html      |    2 +-
 .../api/doxygen/classtvm_1_1tirx_1_1PrimFunc.html  |   14 +-
 .../classtvm_1_1tirx_1_1PrimFuncNode-members.html  |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1PrimFuncNode.html  |   16 +-
 .../classtvm_1_1tirx_1_1SBlock-members.html        |    4 +-
 .../api/doxygen/classtvm_1_1tirx_1_1SBlock.html    |   24 +-
 .../classtvm_1_1tirx_1_1SBlockNode-members.html    |    2 +-
 .../doxygen/classtvm_1_1tirx_1_1SBlockNode.html    |   14 +-
 ...lasstvm_1_1tirx_1_1SBlockScopeNode-members.html |    2 +-
 .../classtvm_1_1tirx_1_1SBlockScopeNode.html       |   12 +-
 ...lasstvm_1_1tirx_1_1StmtExprMutator-members.html |  115 +-
 .../classtvm_1_1tirx_1_1StmtExprMutator.html       |  112 +-
 ...tvm_1_1tirx_1_1StmtExprMutator__coll__graph.svg |    2 +-
 ..._1_1tirx_1_1StmtExprMutator__inherit__graph.svg |    2 +-
 ...lasstvm_1_1tirx_1_1StmtExprVisitor-members.html |    4 +-
 .../classtvm_1_1tirx_1_1StmtExprVisitor.html       |   12 +-
 .../classtvm_1_1tirx_1_1StmtMutator-members.html   |    6 +-
 .../doxygen/classtvm_1_1tirx_1_1StmtMutator.html   |   42 +-
 ...stvm_1_1tirx_1_1StmtMutator__inherit__graph.svg |    2 +-
 ...lasstvm_1_1tirx_1_1StmtNode__inherit__graph.svg |   30 +-
 .../classtvm_1_1tirx_1_1StmtVisitor-members.html   |    4 +-
 .../doxygen/classtvm_1_1tirx_1_1StmtVisitor.html   |   24 +-
 ...sstvm_1_1tirx_1_1TilePrimitiveCall-members.html |    2 +-
 .../classtvm_1_1tirx_1_1TilePrimitiveCall.html     |   10 +-
 ...m_1_1tirx_1_1TilePrimitiveCallNode-members.html |    4 +-
 .../classtvm_1_1tirx_1_1TilePrimitiveCallNode.html |   20 +-
 .../api/doxygen/classtvm_1_1tirx_1_1WhileNode.html |    4 +-
 docs/reference/api/doxygen/cublas_8h_source.html   |    4 +-
 docs/reference/api/doxygen/extern_8h_source.html   |   18 +-
 docs/reference/api/doxygen/functions__.html        |    6 +-
 docs/reference/api/doxygen/functions_a.html        |   12 +-
 docs/reference/api/doxygen/functions_b.html        |   22 +-
 docs/reference/api/doxygen/functions_c.html        |    8 +-
 docs/reference/api/doxygen/functions_d.html        |   13 +-
 docs/reference/api/doxygen/functions_e.html        |    8 +-
 docs/reference/api/doxygen/functions_f.html        |    4 +-
 docs/reference/api/doxygen/functions_func.html     |    8 +-
 docs/reference/api/doxygen/functions_func_b.html   |   13 +-
 docs/reference/api/doxygen/functions_func_c.html   |    4 +-
 docs/reference/api/doxygen/functions_func_d.html   |   11 +-
 docs/reference/api/doxygen/functions_func_e.html   |    6 +-
 docs/reference/api/doxygen/functions_func_f.html   |    4 +-
 docs/reference/api/doxygen/functions_func_g.html   |    8 +-
 docs/reference/api/doxygen/functions_func_i.html   |    2 +-
 docs/reference/api/doxygen/functions_func_m.html   |    8 +-
 docs/reference/api/doxygen/functions_func_n.html   |    4 +-
 docs/reference/api/doxygen/functions_func_o.html   |   10 +-
 docs/reference/api/doxygen/functions_func_p.html   |    4 +-
 docs/reference/api/doxygen/functions_func_r.html   |    2 +-
 docs/reference/api/doxygen/functions_func_s.html   |    5 +-
 docs/reference/api/doxygen/functions_func_t.html   |   21 +-
 docs/reference/api/doxygen/functions_func_v.html   |   11 +-
 docs/reference/api/doxygen/functions_func_w.html   |    5 +-
 docs/reference/api/doxygen/functions_g.html        |   10 +-
 docs/reference/api/doxygen/functions_i.html        |    6 +-
 docs/reference/api/doxygen/functions_l.html        |    2 +-
 docs/reference/api/doxygen/functions_m.html        |   10 +-
 docs/reference/api/doxygen/functions_n.html        |    2 +-
 docs/reference/api/doxygen/functions_o.html        |   14 +-
 docs/reference/api/doxygen/functions_p.html        |    4 +-
 docs/reference/api/doxygen/functions_r.html        |    4 +-
 docs/reference/api/doxygen/functions_s.html        |   14 +-
 docs/reference/api/doxygen/functions_t.html        |   25 +-
 docs/reference/api/doxygen/functions_type.html     |    4 +-
 docs/reference/api/doxygen/functions_v.html        |   14 +-
 docs/reference/api/doxygen/functions_vars.html     |    6 +-
 docs/reference/api/doxygen/functions_vars_a.html   |    4 +-
 docs/reference/api/doxygen/functions_vars_b.html   |    8 +-
 docs/reference/api/doxygen/functions_vars_d.html   |    6 +-
 docs/reference/api/doxygen/functions_vars_e.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_i.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_l.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_m.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_n.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_o.html   |    4 +-
 docs/reference/api/doxygen/functions_vars_r.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_s.html   |    8 +-
 docs/reference/api/doxygen/functions_vars_w.html   |    2 +-
 docs/reference/api/doxygen/functions_w.html        |    7 +-
 docs/reference/api/doxygen/hierarchy.html          |  184 +-
 docs/reference/api/doxygen/index__map_8h.html      |    2 +-
 docs/reference/api/doxygen/inherit_graph_1.svg     | 4860 ++++++++++----------
 docs/reference/api/doxygen/inherit_graph_14.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_16.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_17.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_2.svg     | 4508 +++++++++---------
 docs/reference/api/doxygen/inherit_graph_22.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_3.svg     |   57 +-
 docs/reference/api/doxygen/inherit_graph_32.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_33.svg    |    8 +-
 docs/reference/api/doxygen/inherit_graph_36.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_4.svg     |   32 +-
 docs/reference/api/doxygen/inherit_graph_41.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_42.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_89.svg    |   40 +-
 docs/reference/api/doxygen/inherits.html           |    6 +-
 docs/reference/api/doxygen/namespacemembers.html   |    2 +-
 docs/reference/api/doxygen/namespacemembers_b.html |   11 +-
 docs/reference/api/doxygen/namespacemembers_c.html |    5 +-
 docs/reference/api/doxygen/namespacemembers_d.html |    8 +-
 docs/reference/api/doxygen/namespacemembers_e.html |    2 +-
 .../api/doxygen/namespacemembers_func.html         |    2 +-
 .../api/doxygen/namespacemembers_func_b.html       |    7 +-
 .../api/doxygen/namespacemembers_func_c.html       |    5 +-
 .../api/doxygen/namespacemembers_func_d.html       |    8 +-
 .../api/doxygen/namespacemembers_func_g.html       |    7 +-
 .../api/doxygen/namespacemembers_func_m.html       |    2 +-
 .../api/doxygen/namespacemembers_func_o.html       |   14 +-
 .../api/doxygen/namespacemembers_func_r.html       |    1 +
 .../api/doxygen/namespacemembers_func_s.html       |    4 +-
 docs/reference/api/doxygen/namespacemembers_g.html |    7 +-
 docs/reference/api/doxygen/namespacemembers_m.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_o.html |   12 +-
 docs/reference/api/doxygen/namespacemembers_r.html |    1 +
 docs/reference/api/doxygen/namespacemembers_s.html |    4 +-
 .../api/doxygen/namespacemembers_type.html         |    2 +-
 docs/reference/api/doxygen/namespaces.html         |  312 +-
 .../api/doxygen/namespacetvm_1_1arith.html         |   12 +-
 .../reference/api/doxygen/namespacetvm_1_1ffi.html |    2 +
 ...espacetvm_1_1script_1_1ir__builder_1_1tirx.html |  104 +-
 .../api/doxygen/namespacetvm_1_1tirx.html          |  282 +-
 .../doxygen/namespacetvm_1_1tirx_1_1builtin.html   |   23 +
 .../doxygen/namespacetvm_1_1tirx_1_1callback.html  |    4 +-
 .../reference/api/doxygen/operation_8h_source.html |   20 +-
 .../api/doxygen/relax_2analysis_8h_source.html     |    2 +-
 .../reference/api/doxygen/s__tir_2analysis_8h.html |   18 +-
 .../api/doxygen/s__tir_2analysis_8h_source.html    |   26 +-
 .../api/doxygen/s__tir_2transform_8h_source.html   |    2 +-
 docs/reference/api/doxygen/s__tir_2utils_8h.html   |    4 +-
 .../api/doxygen/s__tir_2utils_8h_source.html       |    8 +-
 .../api/doxygen/sblock__scope_8h_source.html       |    8 +-
 docs/reference/api/doxygen/schedule_8h_source.html |    4 +-
 docs/reference/api/doxygen/search/all_1.js         |   12 +-
 docs/reference/api/doxygen/search/all_10.js        |   54 +-
 docs/reference/api/doxygen/search/all_11.js        |    8 +-
 docs/reference/api/doxygen/search/all_13.js        |  309 +-
 docs/reference/api/doxygen/search/all_14.js        |   48 +-
 docs/reference/api/doxygen/search/all_15.js        |  252 +-
 docs/reference/api/doxygen/search/all_17.js        |   24 +-
 docs/reference/api/doxygen/search/all_18.js        |   75 +-
 docs/reference/api/doxygen/search/all_2.js         |   16 +-
 docs/reference/api/doxygen/search/all_3.js         |   97 +-
 docs/reference/api/doxygen/search/all_4.js         |  129 +-
 docs/reference/api/doxygen/search/all_5.js         |  377 +-
 docs/reference/api/doxygen/search/all_6.js         |   12 +-
 docs/reference/api/doxygen/search/all_7.js         |    6 +-
 docs/reference/api/doxygen/search/all_8.js         |  213 +-
 docs/reference/api/doxygen/search/all_a.js         |    6 +-
 docs/reference/api/doxygen/search/all_d.js         |    2 +-
 docs/reference/api/doxygen/search/all_e.js         |   16 +-
 docs/reference/api/doxygen/search/all_f.js         |    2 +-
 docs/reference/api/doxygen/search/classes_1.js     |   26 +-
 docs/reference/api/doxygen/search/classes_11.js    |    9 +-
 docs/reference/api/doxygen/search/functions_0.js   |   10 +-
 docs/reference/api/doxygen/search/functions_1.js   |   42 +-
 docs/reference/api/doxygen/search/functions_11.js  |  189 +-
 docs/reference/api/doxygen/search/functions_12.js  |   14 +-
 docs/reference/api/doxygen/search/functions_13.js  |   93 +-
 docs/reference/api/doxygen/search/functions_15.js  |   14 +-
 docs/reference/api/doxygen/search/functions_16.js  |   59 +-
 docs/reference/api/doxygen/search/functions_2.js   |   97 +-
 docs/reference/api/doxygen/search/functions_3.js   |  187 +-
 docs/reference/api/doxygen/search/functions_4.js   |   10 +-
 docs/reference/api/doxygen/search/functions_5.js   |    6 +-
 docs/reference/api/doxygen/search/functions_6.js   |  185 +-
 docs/reference/api/doxygen/search/functions_8.js   |    2 +-
 docs/reference/api/doxygen/search/functions_c.js   |   14 +-
 docs/reference/api/doxygen/search/functions_d.js   |    2 +-
 docs/reference/api/doxygen/search/functions_e.js   |   30 +-
 docs/reference/api/doxygen/search/functions_f.js   |    4 +-
 docs/reference/api/doxygen/search/typedefs_2.js    |    4 +-
 docs/reference/api/doxygen/search/typedefs_3.js    |    2 +-
 docs/reference/api/doxygen/search/variables_0.js   |   12 +-
 docs/reference/api/doxygen/search/variables_1.js   |    4 +-
 docs/reference/api/doxygen/search/variables_11.js  |    2 +-
 docs/reference/api/doxygen/search/variables_12.js  |   10 +-
 docs/reference/api/doxygen/search/variables_16.js  |    2 +-
 docs/reference/api/doxygen/search/variables_2.js   |    8 +-
 docs/reference/api/doxygen/search/variables_4.js   |    6 +-
 docs/reference/api/doxygen/search/variables_5.js   |    2 +-
 docs/reference/api/doxygen/search/variables_9.js   |    2 +-
 docs/reference/api/doxygen/search/variables_b.js   |    2 +-
 docs/reference/api/doxygen/search/variables_c.js   |    2 +-
 docs/reference/api/doxygen/search/variables_d.js   |    4 +-
 docs/reference/api/doxygen/search/variables_e.js   |    4 +-
 .../api/doxygen/stmt__functor_8h_source.html       |  303 +-
 ...Traits_3_01tirx_1_1BufferVar_01_4-members.html} |   11 +-
 ...i_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html |  185 +
 ...its_3_01tirx_1_1BufferVar_01_4__coll__graph.svg |   54 +
 ..._3_01tirx_1_1BufferVar_01_4__inherit__graph.svg |   54 +
 .../api/doxygen/te_2tensor_8h_source.html          |    4 +-
 .../api/doxygen/tir__pattern_8h_source.html        |   14 +-
 .../api/doxygen/tirx_2analysis_8h_source.html      |    2 +-
 docs/reference/api/doxygen/tirx_2builtin_8h.html   |    3 +
 .../api/doxygen/tirx_2builtin_8h_source.html       |  101 +-
 .../api/doxygen/tirx_2expr_8h_source.html          |   14 +-
 docs/reference/api/doxygen/tirx_2function_8h.html  |    6 +-
 .../api/doxygen/tirx_2function_8h_source.html      |  235 +-
 docs/reference/api/doxygen/tirx_2op_8h_source.html |    4 +-
 .../tirx_2script_2builder_2frame_8h_source.html    |  350 +-
 .../api/doxygen/tirx_2script_2builder_2ir_8h.html  |   48 +-
 .../tirx_2script_2builder_2ir_8h_source.html       |   62 +-
 .../api/doxygen/tirx_2stmt_8h_source.html          | 1550 +++----
 .../api/doxygen/tirx_2transform_8h_source.html     |    2 +-
 docs/reference/api/doxygen/tirx__op_8h.html        |    2 +-
 docs/reference/api/doxygen/tirx__op_8h_source.html |   10 +-
 .../api/doxygen/tirx__stmt_8h_source.html          |   20 +-
 docs/reference/api/python/ir.html                  |  366 +-
 docs/reference/api/python/relax/analysis.html      |    4 +-
 docs/reference/api/python/s_tir/analysis.html      |   12 +-
 docs/reference/api/python/s_tir/dlight.html        |   16 +-
 docs/reference/api/python/s_tir/schedule.html      |   18 +-
 docs/reference/api/python/s_tir/tensor_intrin.html |    2 +-
 docs/reference/api/python/te.html                  |    8 +-
 docs/reference/api/python/topi.html                |   18 +-
 .../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     |   34 +-
 .../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     |   46 +-
 .../api/typedoc/classes/_internal_.OPFSStore.html  |   16 +-
 .../typedoc/classes/_internal_.PackedFuncCell.html |   12 +-
 .../typedoc/classes/_internal_.RuntimeContext.html |   72 +-
 .../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                       |   32 +-
 docs/tirx/api/tirx.html                            |  413 +-
 docs/tirx/api/transform.html                       |    8 +-
 441 files changed, 16394 insertions(+), 13815 deletions(-)

diff --git a/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip b/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip
index dcd3f0dd322..d0d950e301c 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 3b9dc597f11..6fb3855cfbd 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 caced294835..0f6f9ed48dc 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 7ba5846fbed..7288f4e17b8 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 376f9ff4346..11036980e71 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 2331c172c8e..fc6940ff872 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 4db358ea9df..9a3dae3e84b 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 e7b4b587c27..44caf168b14 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 26abac325fc..d0d67801cde 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 ed4440746bb..3a77d449163 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 5819494658f..08579e996c9 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 97e8c811d7d..8bd99f8f07b 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 6b33e3576d1..620e0507290 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 04e45e5d544..875b1f75077 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 dcd8112edb9..aca8bf1b4e6 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 bde7499e0a6..8e7dc7cce53 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 00db850b002..5e39fe450d5 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.233** total execution time for 2 files **from deep_dive/relax/tutorials**:
+**00:00.228** 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.169
+     - 00:00.165
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``relax_transformation.py``)
-     - 00:00.064
+     - 00:00.063
      - 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 f13b268d570..3babcfd9745 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.882** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
+**00:00.876** 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.370
+     - 00:00.374
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``tir_creation.py``)
-     - 00:00.331
+     - 00:00.322
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_dlight_gpu_scheduling.py` (``dlight_gpu_scheduling.py``)
-     - 00:00.166
+     - 00:00.165
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``meta_schedule.py``)
      - 00:00.015
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 f2b0652eeed..b84e0fdad1f 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.5575       2.5575       2.5575       2.5575       0.0000                  
+       2.6679       2.6679       2.6679       2.6679       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.8568       0.8568       0.8568       0.8568       0.0000                  
+       0.8685       0.8685       0.8685       0.8685       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.3400       0.3400       0.3400       0.3400       0.0000                  
+       0.3529       0.3529       0.3529       0.3529       0.0000                  
 
 
 
diff --git a/docs/_sources/get_started/tutorials/ir_module.rst b/docs/_sources/get_started/tutorials/ir_module.rst
index 4898be6c1cf..e79c9478ce3 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.10540085 -0.14369866  0.29414758  0.0748456   0.07827781  0.05264963
-      -0.15639795 -0.25290024  0.18853387  0.1793549 ]]
+    [[-0.01816903  0.03771164  0.0785255  -0.11476771 -0.07748116 -0.03673651
+      -0.1594218  -0.05873348 -0.23111917  0.03910953]]
 
 
 
@@ -763,8 +763,8 @@ Now we can compile the IRModule on GPU, the similar way as we did on CPU.
 
  .. code-block:: none
 
-    [[ 0.10540082 -0.14369863  0.29414755  0.07484558  0.07827783  0.05264967
-      -0.15639792 -0.25290036  0.18853384  0.17935492]]
+    [[-0.01816906  0.03771167  0.07852545 -0.11476764 -0.07748117 -0.0367365
+      -0.1594218  -0.05873356 -0.2311192   0.0391095 ]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/quick_start.rst b/docs/_sources/get_started/tutorials/quick_start.rst
index 7911280c1c4..ec9bbf5e86f 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
 
-    [[25621.4   24064.668 25141.17  23696.188 24442.953 26562.17  24058.588
-      24688.068 24206.094 22869.754]]
+    [[23831.408 24126.654 23790.18  24637.307 23886.379 24970.656 25216.723
+      24620.414 25048.535 23499.738]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/sg_execution_times.rst b/docs/_sources/get_started/tutorials/sg_execution_times.rst
index 53ddbfc5267..2e29158177f 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.376** total execution time for 2 files **from get_started/tutorials**:
+**00:05.345** 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.148
+     - 00:05.117
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``quick_start.py``)
-     - 00:00.229
+     - 00:00.228
      - 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 85d868e50d1..de2afe94826 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.9e-08 secs/op
+    8.7e-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/tmpn0p6lzy9/model_deployed.so
-    Saved parameters to: /tmp/tmpn0p6lzy9/model_params.npz
+    Exported library to: /tmp/tmp9_mj10cp/model_deployed.so
+    Saved parameters to: /tmp/tmp9_mj10cp/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 c5446f521ec..9ee74436ec4 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]      71%|███████   | 31.8M/44.7M [00:00<00:00, 333MB/s]     100%|██████████| 44.7M/44.7M [00:00<00:00, 360MB/s]
+       0%|          | 0.00/44.7M [00:00<?, ?B/s]      75%|███████▌  | 33.6M/44.7M [00:00<00:00, 352MB/s]     100%|██████████| 44.7M/44.7M [00:00<00:00, 357MB/s]
 
 
 
diff --git a/docs/_sources/how_to/tutorials/sg_execution_times.rst b/docs/_sources/how_to/tutorials/sg_execution_times.rst
index f61de870fc4..0e779726719 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:17.465** total execution time for 8 files **from how_to/tutorials**:
+**00:17.470** total execution time for 8 files **from how_to/tutorials**:
 
 .. container::
 
@@ -33,17 +33,17 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``optimize_llm.py``)
-     - 00:12.502
+     - 00:12.413
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``import_model.py``)
-     - 00:03.443
+     - 00:03.458
+     - 0.0
+   * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``e2e_opt_model.py``)
+     - 00:00.629
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
      - 00:00.562
      - 0.0
-   * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``e2e_opt_model.py``)
-     - 00:00.550
-     - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``customize_opt.py``)
      - 00:00.332
      - 0.0
diff --git a/docs/_sources/sg_execution_times.rst b/docs/_sources/sg_execution_times.rst
index d797f3e1f9e..1e13e5a413b 100644
--- a/docs/_sources/sg_execution_times.rst
+++ b/docs/_sources/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:23.957** total execution time for 16 files **from all galleries**:
+**00:23.920** total execution time for 16 files **from all galleries**:
 
 .. container::
 
@@ -33,43 +33,43 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``../how_to/tutorials/optimize_llm.py``)
-     - 00:12.502
+     - 00:12.413
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``../get_started/tutorials/ir_module.py``)
-     - 00:05.148
+     - 00:05.117
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``../how_to/tutorials/import_model.py``)
-     - 00:03.443
+     - 00:03.458
+     - 0.0
+   * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``../how_to/tutorials/e2e_opt_model.py``)
+     - 00:00.629
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``../how_to/tutorials/cross_compilation_and_rpc.py``)
      - 00:00.562
      - 0.0
-   * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``../how_to/tutorials/e2e_opt_model.py``)
-     - 00:00.550
-     - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``../deep_dive/tensor_ir/tutorials/tir_transformation.py``)
-     - 00:00.370
+     - 00:00.374
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``../how_to/tutorials/customize_opt.py``)
      - 00:00.332
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``../deep_dive/tensor_ir/tutorials/tir_creation.py``)
-     - 00:00.331
+     - 00:00.322
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``../get_started/tutorials/quick_start.py``)
-     - 00:00.229
-     - 0.0
-   * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``../deep_dive/relax/tutorials/relax_creation.py``)
-     - 00:00.169
+     - 00:00.228
      - 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.166
+     - 00:00.165
+     - 0.0
+   * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``../deep_dive/relax/tutorials/relax_creation.py``)
+     - 00:00.165
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``../how_to/tutorials/bring_your_own_codegen.py``)
      - 00:00.070
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``../deep_dive/relax/tutorials/relax_transformation.py``)
-     - 00:00.064
+     - 00:00.063
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``../deep_dive/tensor_ir/tutorials/meta_schedule.py``)
      - 00:00.015
diff --git a/docs/commit_hash b/docs/commit_hash
index bff619ec38c..8ee15b0d594 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-771193a5c26188713b2ec01f5bcd937bf7966fae
+36cf270e912a1abe20a099bde632683350da8dc6
diff --git a/docs/deep_dive/relax/tutorials/relax_creation.html b/docs/deep_dive/relax/tutorials/relax_creation.html
index 46d61ae4536..46f42237c24 100644
--- a/docs/deep_dive/relax/tutorials/relax_creation.html
+++ b/docs/deep_dive/relax/tutorials/relax_creation.html
@@ -869,7 +869,7 @@ Tensor Expression(TE), TensorIR functions or other TVM packed functions.</p>
         <span class="bp">self</span><span class="o">.</span><span class="n">fc2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
 
     <span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">):</span>
-        <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span><span class="o">.</span><span class="n">shape</span></a><s [...]
+        <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="o">.</span><span class="n">shape</span><s [...]
         <span class="c1"># We can call external functions using nn.extern</span>
         <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">extern</span><span class="p">(</span>
             <span class="s2">&quot;env.linear&quot;</span><span class="p">,</span>
diff --git a/docs/deep_dive/relax/tutorials/sg_execution_times.html b/docs/deep_dive/relax/tutorials/sg_execution_times.html
index a3ec8922366..55971fd4594 100644
--- a/docs/deep_dive/relax/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/relax/tutorials/sg_execution_times.html
@@ -618,7 +618,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.233</strong> total execution time for 2 files <strong>from deep_dive/relax/tutorials</strong>:</p>
+<p><strong>00:00.228</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" />
@@ -640,11 +640,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.169</p></td>
+<td><p>00:00.165</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.064</p></td>
+<td><p>00:00.063</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 abe8adafc3d..eb647b4148f 100644
--- a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
@@ -618,7 +618,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.882</strong> total execution time for 4 files <strong>from deep_dive/tensor_ir/tutorials</strong>:</p>
+<p><strong>00:00.876</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" />
@@ -640,15 +640,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.370</p></td>
+<td><p>00:00.374</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.331</p></td>
+<td><p>00:00.322</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.166</p></td>
+<td><p>00:00.165</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 d394a895b71..6a6ec57e59c 100644
--- a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
@@ -705,7 +705,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.5575       2.5575       2.5575       2.5575       0.0000
+   2.6679       2.6679       2.6679       2.6679       0.0000
 </pre></div>
 </div>
 <section id="initialization-schedule">
@@ -803,7 +803,7 @@ class Module:
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.8568       0.8568       0.8568       0.8568       0.0000
+   0.8685       0.8685       0.8685       0.8685       0.0000
 </pre></div>
 </div>
 </section>
@@ -899,7 +899,7 @@ class Module:
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.3400       0.3400       0.3400       0.3400       0.0000
+   0.3529       0.3529       0.3529       0.3529       0.0000
 </pre></div>
 </div>
 </section>
diff --git a/docs/genindex.html b/docs/genindex.html
index d180129213a..033a7237426 100644
--- a/docs/genindex.html
+++ b/docs/genindex.html
@@ -575,7 +575,7 @@ document.write(`
       </ul></li>
       <li><a href="reference/api/python/testing.html#tvm.testing.Path.absolute">absolute() (tvm.testing.Path method)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.access_ptr">access_ptr() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.access_ptr">access_ptr() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.IndexPutAttrs.accumulate">accumulate (tvm.relax.op.op_attrs.IndexPutAttrs property)</a>
 </li>
@@ -1041,12 +1041,12 @@ document.write(`
 </li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.bitpack">bitpack() (in module tvm.topi.nn)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.bitserial_conv2d_nchw">bitserial_conv2d_nchw() (in module tvm.topi.nn)</a>
 </li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.bitserial_conv2d_nhwc">bitserial_conv2d_nhwc() (in module tvm.topi.nn)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.bitserial_dense">bitserial_dense() (in module tvm.topi.nn)</a>
 </li>
       <li><a href="tirx/api/backend.html#tvm.backend.cuda.op.bitwise_and">bitwise_and() (in module tvm.backend.cuda.op)</a>
@@ -1105,13 +1105,21 @@ document.write(`
 </li>
       <li><a href="reference/api/python/relax/op.html#tvm.relax.op.bucketize">bucketize() (in module tvm.relax.op)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer">Buffer (class in tvm.tirx)</a>
+      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer">Buffer (in module tvm.tirx)</a>
+</li>
+      <li><a href="tirx/api/tirx.html#tvm.tirx.buffer_data">buffer_data() (in module tvm.tirx)</a>
+</li>
+      <li><a href="tirx/api/tirx.html#tvm.tirx.buffer_data_pointer_type">buffer_data_pointer_type() (in module tvm.tirx)</a>
+</li>
+      <li><a href="tirx/api/tirx.html#tvm.tirx.BufferAccessKind">BufferAccessKind (class in tvm.tirx)</a>
 </li>
       <li><a href="tirx/api/tirx.html#tvm.tirx.BufferLoad">BufferLoad (class in tvm.tirx)</a>
 </li>
       <li><a href="tirx/api/tirx.html#tvm.tirx.BufferRegion">BufferRegion (class in tvm.tirx)</a>
 </li>
       <li><a href="tirx/api/tirx.html#tvm.tirx.BufferStore">BufferStore (class in tvm.tirx)</a>
+</li>
+      <li><a href="tirx/api/tirx.html#tvm.tirx.BufferType">BufferType (class in tvm.tirx)</a>
 </li>
       <li><a href="reference/api/python/relax/relax.html#tvm.relax.build">build() (in module tvm.relax)</a>
 
@@ -1125,9 +1133,9 @@ document.write(`
 </li>
       <li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.BundleModelParams">BundleModelParams() (in module tvm.relax.transform)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.byte_offset">byte_offset (tvm.tirx.Buffer property)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.byte_offset">byte_offset (tvm.ir.Var property)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.byte_offset_of">byte_offset_of() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.byte_offset_of">byte_offset_of() (tvm.ir.Var method)</a>
 </li>
   </ul></td>
 </tr></table>
@@ -2061,7 +2069,7 @@ document.write(`
 </li>
       <li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.EinsumAttrs">EinsumAttrs (class in tvm.relax.op.op_attrs)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.elem_offset_of">elem_offset_of() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.elem_offset_of">elem_offset_of() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.EliminateCommonSubexpr">EliminateCommonSubexpr() (in module tvm.relax.transform)</a>
 </li>
@@ -2535,7 +2543,7 @@ document.write(`
 </li>
       <li><a href="reference/api/python/contrib.html#tvm.contrib.hexagon.ContainerSession.get_env">get_env() (tvm.contrib.hexagon.ContainerSession method)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.get_flattened_buffer">get_flattened_buffer() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.get_flattened_buffer">get_flattened_buffer() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/relax/relax.html#tvm.relax.BasePyModule.get_function">get_function() (tvm.relax.BasePyModule method)</a>
 
@@ -2964,6 +2972,8 @@ document.write(`
       <li><a href="reference/api/python/ir.html#tvm.ir.Type.is_base_of">is_base_of() (tvm.ir.Type method)</a>
 </li>
       <li><a href="reference/api/python/testing.html#tvm.testing.Path.is_block_device">is_block_device() (tvm.testing.Path method)</a>
+</li>
+      <li><a href="tirx/api/tirx.html#tvm.tirx.is_buffer_var">is_buffer_var() (in module tvm.tirx)</a>
 </li>
       <li><a href="reference/api/python/testing.html#tvm.testing.Path.is_char_device">is_char_device() (tvm.testing.Path method)</a>
 </li>
@@ -3022,7 +3032,7 @@ document.write(`
       <li><a href="reference/api/python/ir.html#tvm.ir.PrimType.is_scalar">is_scalar() (tvm.ir.PrimType method)</a>
 
       <ul>
-        <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.is_scalar">(tvm.tirx.Buffer method)</a>
+        <li><a href="reference/api/python/ir.html#tvm.ir.Var.is_scalar">(tvm.ir.Var method)</a>
 </li>
       </ul></li>
       <li><a href="reference/api/python/testing.html#tvm.testing.Path.is_socket">is_socket() (tvm.testing.Path method)</a>
@@ -3297,7 +3307,7 @@ document.write(`
 </li>
       <li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.Session.load_vm_module">load_vm_module() (tvm.runtime.disco.Session method)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.local">local() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.local">local() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/testing.html#tvm.testing.local_run">local_run() (in module tvm.testing)</a>
 </li>
@@ -3990,7 +4000,7 @@ document.write(`
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/api/python/relax/relax.html#tvm.relax.ObjectType">ObjectType (in module tvm.relax)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.offset_of">offset_of() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.offset_of">offset_of() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/relax/op.html#tvm.relax.op.one_hot">one_hot() (in module tvm.relax.op)</a>
 
@@ -4206,7 +4216,7 @@ document.write(`
 </li>
       <li><a href="reference/api/python/contrib.html#tvm.contrib.tvmjs.TensorCacheShardingManager.pending_nbytes">pending_nbytes (tvm.contrib.tvmjs.TensorCacheShardingManager property)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.permute">permute() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.permute">permute() (tvm.ir.Var method)</a>
 </li>
       <li><a href="tirx/api/tirx.html#tvm.tirx.TileLayout.permute_by_groups">permute_by_groups() (tvm.tirx.TileLayout method)</a>
 </li>
@@ -4364,7 +4374,7 @@ document.write(`
 </li>
       <li><a href="tirx/api/tirx.html#tvm.tirx.ptr_byte_offset">ptr_byte_offset() (in module tvm.tirx)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.ptr_to">ptr_to() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.ptr_to">ptr_to() (tvm.ir.Var method)</a>
 </li>
       <li><a href="tirx/api/backend.html#tvm.backend.cuda.op.ptx_add_f32">ptx_add_f32() (in module tvm.backend.cuda.op)</a>
 </li>
@@ -4998,7 +5008,7 @@ document.write(`
       </ul></li>
       <li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.ScheduleState">ScheduleState (class in tvm.s_tir.schedule)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.scope">scope() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.scope">scope() (tvm.ir.Var method)</a>
 </li>
       <li><a href="tirx/api/tirx.html#tvm.tirx.ScopeIdDef">ScopeIdDef (class in tvm.tirx)</a>
 </li>
@@ -6532,7 +6542,7 @@ document.write(`
       <li><a href="reference/api/python/relax/op.html#tvm.relax.op.memory.view">view() (in module tvm.relax.op.memory)</a>
 
       <ul>
-        <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.view">(tvm.tirx.Buffer method)</a>
+        <li><a href="reference/api/python/ir.html#tvm.ir.Var.view">(tvm.ir.Var method)</a>
 </li>
       </ul></li>
       <li><a href="reference/api/python/target.html#tvm.target.VirtualDevice.virtual_device_id">virtual_device_id (tvm.target.VirtualDevice property)</a>
@@ -7245,7 +7255,7 @@ document.write(`
       </ul></li>
       <li><a href="reference/api/python/relax/relax.html#tvm.relax.PyExprMutator.visit_with_new_scope">visit_with_new_scope() (tvm.relax.PyExprMutator method)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.vload">vload() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.vload">vload() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.VMBuiltinLower">VMBuiltinLower() (in module tvm.relax.transform)</a>
 </li>
@@ -7261,7 +7271,7 @@ document.write(`
 </li>
       <li><a href="tirx/api/tirx.html#tvm.tirx.vscale">vscale() (in module tvm.tirx)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.vstore">vstore() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.vstore">vstore() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.vulkan">vulkan() (tvm.rpc.RPCSession method)</a>
 </li>
@@ -7291,7 +7301,7 @@ document.write(`
 </li>
       <li><a href="reference/api/python/topi.html#tvm.topi.nn.winograd_transform_matrices">winograd_transform_matrices() (in module tvm.topi.nn)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.with_allocated_addr">with_allocated_addr() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.with_allocated_addr">with_allocated_addr() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/ir.html#tvm.ir.BaseFunc.with_attr">with_attr() (tvm.ir.BaseFunc method)</a>
 
@@ -7308,12 +7318,10 @@ document.write(`
   </ul></td>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="tirx/api/tirx.html#tvm.tirx.PrimFunc.with_body">with_body() (tvm.tirx.PrimFunc method)</a>
-</li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.with_data">with_data() (tvm.tirx.Buffer method)</a>
 </li>
       <li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Trace.with_decision">with_decision() (tvm.s_tir.schedule.Trace method)</a>
 </li>
-      <li><a href="tirx/api/tirx.html#tvm.tirx.Buffer.with_dtype">with_dtype() (tvm.tirx.Buffer method)</a>
+      <li><a href="reference/api/python/ir.html#tvm.ir.Var.with_dtype">with_dtype() (tvm.ir.Var method)</a>
 </li>
       <li><a href="reference/api/python/rpc.html#tvm.rpc.with_minrpc">with_minrpc() (in module tvm.rpc)</a>
 </li>
diff --git a/docs/get_started/tutorials/ir_module.html b/docs/get_started/tutorials/ir_module.html
index 59cc62a9f33..4dd6a69f614 100644
--- a/docs/get_started/tutorials/ir_module.html
+++ b/docs/get_started/tutorials/ir_module.html
@@ -1145,8 +1145,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.10540085 -0.14369866  0.29414758  0.0748456   0.07827781  0.05264963
-  -0.15639795 -0.25290024  0.18853387  0.1793549 ]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.01816903  0.03771164  0.0785255  -0.11476771 -0.07748116 -0.03673651
+  -0.1594218  -0.05873348 -0.23111917  0.03910953]]
 </pre></div>
 </div>
 </section>
@@ -1180,8 +1180,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.10540082 -0.14369863  0.29414755  0.07484558  0.07827783  0.05264967
-  -0.15639792 -0.25290036  0.18853384  0.17935492]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.01816906  0.03771167  0.07852545 -0.11476764 -0.07748117 -0.0367365
+  -0.1594218  -0.05873356 -0.2311192   0.0391095 ]]
 </pre></div>
 </div>
 </section>
diff --git a/docs/get_started/tutorials/quick_start.html b/docs/get_started/tutorials/quick_start.html
index a7a12d459b7..d8cd020523f 100644
--- a/docs/get_started/tutorials/quick_start.html
+++ b/docs/get_started/tutorials/quick_start.html
@@ -786,8 +786,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>[[25621.4   24064.668 25141.17  23696.188 24442.953 26562.17  24058.588
-  24688.068 24206.094 22869.754]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[23831.408 24126.654 23790.18  24637.307 23886.379 24970.656 25216.723
+  24620.414 25048.535 23499.738]]
 </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 f3a404e501c..2260d3e9ff9 100644
--- a/docs/get_started/tutorials/sg_execution_times.html
+++ b/docs/get_started/tutorials/sg_execution_times.html
@@ -618,7 +618,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.376</strong> total execution time for 2 files <strong>from get_started/tutorials</strong>:</p>
+<p><strong>00:05.345</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" />
@@ -640,11 +640,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.148</p></td>
+<td><p>00:05.117</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.229</p></td>
+<td><p>00:00.228</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 6ad8f61bca3..b34b470c57c 100644
--- a/docs/how_to/tutorials/cross_compilation_and_rpc.html
+++ b/docs/how_to/tutorials/cross_compilation_and_rpc.html
@@ -817,7 +817,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.9e-08 secs/op
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>8.7e-08 secs/op
 </pre></div>
 </div>
 </section>
@@ -1346,8 +1346,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/tmpn0p6lzy9/model_deployed.so
-Saved parameters to: /tmp/tmpn0p6lzy9/model_params.npz
+Exported library to: /tmp/tmp9_mj10cp/model_deployed.so
+Saved parameters to: /tmp/tmp9_mj10cp/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 85499786097..722e97c54c6 100644
--- a/docs/how_to/tutorials/e2e_opt_model.html
+++ b/docs/how_to/tutorials/e2e_opt_model.html
@@ -658,8 +658,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]
- 71%|███████   | 31.8M/44.7M [00:00&lt;00:00, 333MB/s]
-100%|██████████| 44.7M/44.7M [00:00&lt;00:00, 360MB/s]
+ 75%|███████▌  | 33.6M/44.7M [00:00&lt;00:00, 352MB/s]
+100%|██████████| 44.7M/44.7M [00:00&lt;00:00, 357MB/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 bc10cc3c62b..2fe93474b13 100644
--- a/docs/how_to/tutorials/sg_execution_times.html
+++ b/docs/how_to/tutorials/sg_execution_times.html
@@ -618,7 +618,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:17.465</strong> total execution time for 8 files <strong>from how_to/tutorials</strong>:</p>
+<p><strong>00:17.470</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" />
@@ -640,19 +640,19 @@ $(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:12.502</p></td>
+<td><p>00:12.413</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.443</p></td>
+<td><p>00:03.458</p></td>
 <td><p>0.0</p></td>
 </tr>
-<tr class="row-even"><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.562</p></td>
+<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.629</p></td>
 <td><p>0.0</p></td>
 </tr>
-<tr class="row-odd"><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.550</p></td>
+<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.562</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>
diff --git a/docs/objects.inv b/docs/objects.inv
index e292f268ee2..6efac9435ad 100644
Binary files a/docs/objects.inv and b/docs/objects.inv differ
diff --git a/docs/reference/api/doxygen/annotated.html b/docs/reference/api/doxygen/annotated.html
index 22a85cffa0b..dc90cdae351 100644
--- a/docs/reference/api/doxygen/annotated.html
+++ b/docs/reference/api/doxygen/annotated.html
@@ -115,9 +115,10 @@ $(function() {
 <tr id="row_0_1_3_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntImm_01_4.html" target="_self">TypeTraits&lt; IntImm &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_4_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html" target="_self">TypeTraits&lt; PrimExpr &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_0_1_5_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html" target="_self">TypeTraits&lt; PrimType &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_6_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1PrimVar_01_4.html" target="_self">TypeTraits&lt; tirx::PrimVar &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_7_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01tvm_1_1tirx_1_1StringImm_01_4.html" target="_self">TypeTraits&lt; tvm::tirx::StringImm &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_8_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html" target="_self">TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_6_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html" target="_self">TypeTraits&lt; tirx::BufferVar &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_7_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1PrimVar_01_4.html" target="_self">TypeTraits&lt; tirx::PrimVar &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_8_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01tvm_1_1tirx_1_1StringImm_01_4.html" target="_self">TypeTraits&lt; tvm::tirx::StringImm &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_9_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html" target="_self">TypeTraits&lt; TypedExpr&lt; ExpectedType &gt; &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_0_2_" class="odd" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_2_" class="arrow" onclick="toggleFolder('0_2_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1instrument.html" target="_self">instrument</a></td><td class="desc"></td></tr>
 <tr id="row_0_2_0_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1instrument_1_1PassInstrument.html" target="_self">PassInstrument</a></td><td class="desc">Managed reference class for <a class="el" href="classtvm_1_1instrument_1_1PassInstrumentNode.html" title="PassInstrumentNode forms an instrument implementation. It provides API for use [...]
 <tr id="row_0_2_1_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1instrument_1_1PassInstrumentNode.html" target="_self">PassInstrumentNode</a></td><td class="desc"><a class="el" href="classtvm_1_1instrument_1_1PassInstrumentNode.html" title="PassInstrumentNode forms an instrument implementation. It provides API for users to register callb [...]
@@ -641,164 +642,165 @@ $(function() {
 <tr id="row_0_10_20_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BreakNode.html" target="_self">BreakNode</a></td><td class="desc">A <a class="el" href="classtvm_1_1tirx_1_1Break.html" title="Managed reference to BreakNode.">Break</a> in control flow </td></tr>
 <tr id="row_0_10_21_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Broadcast.html" target="_self">Broadcast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BroadcastNode.html" title="Create a vector where all the elements are value.">BroadcastNode</a> </td></tr>
 <tr id="row_0_10_22_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BroadcastNode.html" target="_self">BroadcastNode</a></td><td class="desc">Create a vector where all the elements are value </td></tr>
-<tr id="row_0_10_23_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Buffer.html" target="_self">Buffer</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types,...">Buffer</a> is a symbolic n-darray structure. It is [...]
-<tr id="row_0_10_24_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html" target="_self">BufferAxisGraphExtractor</a></td><td class="desc">Construct an axis group graph from a <a class="el" href="classtvm_1_1tirx_1_1PrimFunc.html" title="Managed reference to PrimFuncNode.">PrimFunc</a>. Two buffer axis are [...]
-<tr id="row_0_10_25_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferAxisHash.html" target="_self">BufferAxisHash</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_26_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html" target="_self">BufferLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html" title="Load value from the high dimension buffer.">BufferLoadNode</a> </td></tr>
-<tr id="row_0_10_27_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html" target="_self">BufferLoadNode</a></td><td class="desc">Load value from the high dimension buffer </td></tr>
-<tr id="row_0_10_28_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html" target="_self">BufferNode</a></td><td class="desc">Node to represent a buffer </td></tr>
-<tr id="row_0_10_29_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html" target="_self">BufferRegion</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html" title="Representing the region of multi-dimensional buffer access.">BufferRegionNode</a> </td></tr>
-<tr id="row_0_10_30_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html" target="_self">BufferRegionNode</a></td><td class="desc">Representing the region of multi-dimensional buffer access </td></tr>
-<tr id="row_0_10_31_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferStore.html" target="_self">BufferStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferStoreNode.html" title="Store value to the high dimension buffer.">BufferStoreNode</a> </td></tr>
-<tr id="row_0_10_32_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferStoreNode.html" target="_self">BufferStoreNode</a></td><td class="desc">Store value to the high dimension buffer </td></tr>
-<tr id="row_0_10_33_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Cast.html" target="_self">Cast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1CastNode.html" title="Cast value from one data type to another.">CastNode</a> </td></tr>
-<tr id="row_0_10_34_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CastNode.html" target="_self">CastNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Cast.html" title="Managed reference to CastNode.">Cast</a> value from one data type to another </td></tr>
-<tr id="row_0_10_35_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CmpOpNode.html" target="_self">CmpOpNode</a></td><td class="desc">Base template to implement comparison ops </td></tr>
-<tr id="row_0_10_36_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CommReducer.html" target="_self">CommReducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1CommReducerNode.html" title="A commutative reducer node to represent a commutative binary operator with identity element.">CommReduce [...]
-<tr id="row_0_10_37_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CommReducerNode.html" target="_self">CommReducerNode</a></td><td class="desc">A commutative reducer node to represent a commutative binary operator with identity element </td></tr>
-<tr id="row_0_10_38_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ComposeLayout.html" target="_self">ComposeLayout</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_39_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ComposeLayoutNode.html" target="_self">ComposeLayoutNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_40_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Continue.html" target="_self">Continue</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ContinueNode.html" title="A Continue in control flow.">ContinueNode</a> </td></tr>
-<tr id="row_0_10_41_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ContinueNode.html" target="_self">ContinueNode</a></td><td class="desc">A <a class="el" href="classtvm_1_1tirx_1_1Continue.html" title="Managed reference to ContinueNode.">Continue</a> in control flow </td></tr>
-<tr id="row_0_10_42_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CopyPipeline.html" target="_self">CopyPipeline</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_43_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CopyPipelineNode.html" target="_self">CopyPipelineNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_44_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DataProducer.html" target="_self">DataProducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DataProducerNode.html" title="Base node for data producers.">DataProducerNode</a> </td></tr>
-<tr id="row_0_10_45_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DataProducerNode.html" target="_self">DataProducerNode</a></td><td class="desc">Base node for data producers </td></tr>
-<tr id="row_0_10_46_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DeclBuffer.html" target="_self">DeclBuffer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DeclBufferNode.html" title="Declare a buffer that can be used in the body.">DeclBufferNode</a> </td></tr>
-<tr id="row_0_10_47_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DeclBufferNode.html" target="_self">DeclBufferNode</a></td><td class="desc">Declare a buffer that can be used in the body </td></tr>
-<tr id="row_0_10_48_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Dependency.html" target="_self">Dependency</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DependencyNode.html" title="A tuple (src, dst, kind) representing certain types of dependency. For example, (A,...">DependencyNode</a>  [...]
-<tr id="row_0_10_49_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DependencyNode.html" target="_self">DependencyNode</a></td><td class="desc">A tuple (src, dst, kind) representing certain types of dependency. <a class="el" href="classtvm_1_1tirx_1_1For.html" title="Managed reference to ForNode.">For</a> example, (A, B, kRAW) mea [...]
-<tr id="row_0_10_50_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DispatchContext.html" target="_self">DispatchContext</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DispatchContextNode.html" title="The context information of the kernel required by op dispatch.">DispatchContextNode</a> </td></tr>
-<tr id="row_0_10_51_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DispatchContextNode.html" target="_self">DispatchContextNode</a></td><td class="desc">The context information of the kernel required by op dispatch </td></tr>
-<tr id="row_0_10_52_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Div.html" target="_self">Div</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DivNode.html" title="a / b in the C semnatics.">DivNode</a> </td></tr>
-<tr id="row_0_10_53_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DivNode.html" target="_self">DivNode</a></td><td class="desc">/ b in the C semnatics </td></tr>
-<tr id="row_0_10_54_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1EQ.html" target="_self">EQ</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1EQNode.html" title="a == b">EQNode</a> </td></tr>
-<tr id="row_0_10_55_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1EQNode.html" target="_self">EQNode</a></td><td class="desc">== b </td></tr>
-<tr id="row_0_10_56_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Evaluate.html" target="_self">Evaluate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1EvaluateNode.html" title="Evaluates an expression. This is mostly used for putting a Call node into Stmt.">EvaluateNode</a> </td></tr>
-<tr id="row_0_10_57_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1EvaluateNode.html" target="_self">EvaluateNode</a></td><td class="desc">Evaluates an expression. This is mostly used for putting a <a class="el" href="classtvm_1_1Call.html" title="Managed reference to CallNode.">Call</a> node into <a class="el" href="classtvm_1_1 [...]
-<tr id="row_0_10_58_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tirx_1_1ExecContext.html" target="_self">ExecContext</a></td><td class="desc">Per-program-point <a class="el" href="structtvm_1_1tirx_1_1ExecContext.html" title="Per-program-point ExecContext: active set + scope kind + split.">ExecContext</a>: active set + scope kind + s [...]
-<tr id="row_0_10_59_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExecScope.html" target="_self">ExecScope</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_60_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExecScopeNode.html" target="_self">ExecScopeNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_61_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tirx_1_1ExecSplit.html" target="_self">ExecSplit</a></td><td class="desc">One scope_switch split. Fields are sparse dicts keyed by active-set axis name, e.g. laneid/warpid/cta_id/wid_in_wg/wgid or factorized CTA axes such as cbx/cby/cbz. An empty map denotes the empty la [...]
-<tr id="row_0_10_62_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tirx_1_1ExprDeepEqual.html" target="_self">ExprDeepEqual</a></td><td class="desc">Compare two expressions recursively and check if they are equal to each other without var remapping </td></tr>
-<tr id="row_0_10_63_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExprFunctor.html" target="_self">ExprFunctor</a></td><td class="desc">A dynamical functor that dispatches on in the first <a class="el" href="classtvm_1_1Expr.html" title="Managed reference to ExprNode.">Expr</a> argument. You can use this as a more powerful Visit [...]
-<tr id="row_0_10_64_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExprFunctor_3_01R_07const_01Expr_01_6n_00_01Args_8_8_8_08_4.html" target="_self">ExprFunctor&lt; R(const Expr &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_65_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExprMutator.html" target="_self">ExprMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1ExprMutator.html" title="ExprMutator that mutates expressions.">ExprMutator</a> that mutates expressions </td></tr>
-<tr id="row_0_10_66_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExprVisitor.html" target="_self">ExprVisitor</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1ExprVisitor.html" title="ExprVisitor.">ExprVisitor</a> </td></tr>
-<tr id="row_0_10_67_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1FloorDiv.html" target="_self">FloorDiv</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1FloorDivNode.html" title="Floor division, floor(a/b)">FloorDivNode</a> </td></tr>
-<tr id="row_0_10_68_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1FloorDivNode.html" target="_self">FloorDivNode</a></td><td class="desc">Floor division, floor(a/b) </td></tr>
-<tr id="row_0_10_69_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1FloorMod.html" target="_self">FloorMod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1FloorModNode.html" title="The remainder of the floordiv.">FloorModNode</a> </td></tr>
-<tr id="row_0_10_70_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1FloorModNode.html" target="_self">FloorModNode</a></td><td class="desc">The remainder of the floordiv </td></tr>
-<tr id="row_0_10_71_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1For.html" target="_self">For</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ForNode.html" title="A for loop, with possible type annotations.">ForNode</a> </td></tr>
-<tr id="row_0_10_72_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ForNode.html" target="_self">ForNode</a></td><td class="desc">A for loop, with possible type annotations </td></tr>
-<tr id="row_0_10_73_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1GE.html" target="_self">GE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1GENode.html" title="a &gt;= b">GENode</a> </td></tr>
-<tr id="row_0_10_74_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1GENode.html" target="_self">GENode</a></td><td class="desc">&gt;= b </td></tr>
-<tr id="row_0_10_75_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1GT.html" target="_self">GT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1GTNode.html" title="a &gt; b">GTNode</a> </td></tr>
-<tr id="row_0_10_76_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1GTNode.html" target="_self">GTNode</a></td><td class="desc">&gt; b </td></tr>
-<tr id="row_0_10_77_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IfThenElse.html" target="_self">IfThenElse</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1IfThenElseNode.html" title="IfThenElse statement.">IfThenElseNode</a> </td></tr>
-<tr id="row_0_10_78_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IfThenElseNode.html" target="_self">IfThenElseNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1IfThenElse.html" title="Managed reference to IfThenElseNode.">IfThenElse</a> statement </td></tr>
-<tr id="row_0_10_79_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IndexMap.html" target="_self">IndexMap</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_80_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IndexMapNode.html" target="_self">IndexMapNode</a></td><td class="desc">Defines a mapping between two representations of indices into a buffer </td></tr>
-<tr id="row_0_10_81_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Iter.html" target="_self">Iter</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_82_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IterNode.html" target="_self">IterNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_83_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IterVar.html" target="_self">IterVar</a></td><td class="desc">Iteration Variable, represents an iteration over an integer interval </td></tr>
-<tr id="row_0_10_84_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IterVarNode.html" target="_self">IterVarNode</a></td><td class="desc">An iteration variable representing an iteration over a one dimensional interval </td></tr>
-<tr id="row_0_10_85_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Layout.html" target="_self">Layout</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_86_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LayoutNode.html" target="_self">LayoutNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_87_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LE.html" target="_self">LE</a></td><td class="desc">Managed reference to <a class="el" href="structtvm_1_1tirx_1_1LENode.html" title="a &lt;= b">LENode</a> </td></tr>
-<tr id="row_0_10_88_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tirx_1_1LENode.html" target="_self">LENode</a></td><td class="desc">&lt;= b </td></tr>
-<tr id="row_0_10_89_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Let.html" target="_self">Let</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1LetNode.html" title="Let binding. Bind var to value then evaluate body.">LetNode</a> </td></tr>
-<tr id="row_0_10_90_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LetNode.html" target="_self">LetNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Let.html" title="Managed reference to LetNode.">Let</a> binding. <a class="el" href="classtvm_1_1tirx_1_1Bind.html" title="Managed reference to BindNode.">Bind</a [...]
-<tr id="row_0_10_91_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LT.html" target="_self">LT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1LTNode.html" title="a &lt; b">LTNode</a> </td></tr>
-<tr id="row_0_10_92_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LTNode.html" target="_self">LTNode</a></td><td class="desc">&lt; b </td></tr>
-<tr id="row_0_10_93_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MatchBufferRegion.html" target="_self">MatchBufferRegion</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1MatchBufferRegionNode.html" title="Match introduces a constraint that the source buffer region can be remapped to the dat [...]
-<tr id="row_0_10_94_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MatchBufferRegionNode.html" target="_self">MatchBufferRegionNode</a></td><td class="desc">Match introduces a constraint that the source buffer region can be remapped to the data layout specified by the buffer field. The constraint can be checked in later part of l [...]
-<tr id="row_0_10_95_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Max.html" target="_self">Max</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1MaxNode.html" title="max(a, b)">MaxNode</a> </td></tr>
-<tr id="row_0_10_96_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MaxNode.html" target="_self">MaxNode</a></td><td class="desc">Max(a, b) </td></tr>
-<tr id="row_0_10_97_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Min.html" target="_self">Min</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1MinNode.html" title="min(a, b)">MinNode</a> </td></tr>
-<tr id="row_0_10_98_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MinNode.html" target="_self">MinNode</a></td><td class="desc">Min(a, b) </td></tr>
-<tr id="row_0_10_99_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Mod.html" target="_self">Mod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ModNode.html" title="a % b in the C semnatics.">ModNode</a> </td></tr>
-<tr id="row_0_10_100_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ModNode.html" target="_self">ModNode</a></td><td class="desc">% b in the C semnatics </td></tr>
-<tr id="row_0_10_101_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Mul.html" target="_self">Mul</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1MulNode.html" title="a * b">MulNode</a> </td></tr>
-<tr id="row_0_10_102_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MulNode.html" target="_self">MulNode</a></td><td class="desc"><ul>
+<tr id="row_0_10_23_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html" target="_self">BufferAxisGraphExtractor</a></td><td class="desc">Construct an axis group graph from a <a class="el" href="classtvm_1_1tirx_1_1PrimFunc.html" title="Managed reference to PrimFuncNode.">PrimFunc</a>. Two buffer axis are [...]
+<tr id="row_0_10_24_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferAxisHash.html" target="_self">BufferAxisHash</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_25_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html" target="_self">BufferLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html" title="Load value from the high dimension buffer.">BufferLoadNode</a> </td></tr>
+<tr id="row_0_10_26_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html" target="_self">BufferLoadNode</a></td><td class="desc">Load value from the high dimension buffer </td></tr>
+<tr id="row_0_10_27_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html" target="_self">BufferRegion</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html" title="Representing the region of multi-dimensional buffer access.">BufferRegionNode</a> </td></tr>
+<tr id="row_0_10_28_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html" target="_self">BufferRegionNode</a></td><td class="desc">Representing the region of multi-dimensional buffer access </td></tr>
+<tr id="row_0_10_29_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferStore.html" target="_self">BufferStore</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferStoreNode.html" title="Store value to the high dimension buffer.">BufferStoreNode</a> </td></tr>
+<tr id="row_0_10_30_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferStoreNode.html" target="_self">BufferStoreNode</a></td><td class="desc">Store value to the high dimension buffer </td></tr>
+<tr id="row_0_10_31_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferType.html" target="_self">BufferType</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferTypeNode.html" title="Structural type of a TIRx buffer variable.">BufferTypeNode</a> </td></tr>
+<tr id="row_0_10_32_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferTypeNode.html" target="_self">BufferTypeNode</a></td><td class="desc">Structural type of a TIRx buffer variable </td></tr>
+<tr id="row_0_10_33_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html" target="_self">BufferVar</a></td><td class="desc">Checked zero-state view over an ordinary <a class="el" href="classtvm_1_1VarNode.html" title="A local variable in the IR.">VarNode</a> with <a class="el" href="classtvm_1_1tirx_1_1BufferType.html" t [...]
+<tr id="row_0_10_34_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Cast.html" target="_self">Cast</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1CastNode.html" title="Cast value from one data type to another.">CastNode</a> </td></tr>
+<tr id="row_0_10_35_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CastNode.html" target="_self">CastNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Cast.html" title="Managed reference to CastNode.">Cast</a> value from one data type to another </td></tr>
+<tr id="row_0_10_36_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CmpOpNode.html" target="_self">CmpOpNode</a></td><td class="desc">Base template to implement comparison ops </td></tr>
+<tr id="row_0_10_37_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CommReducer.html" target="_self">CommReducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1CommReducerNode.html" title="A commutative reducer node to represent a commutative binary operator with identity element.">CommReduce [...]
+<tr id="row_0_10_38_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CommReducerNode.html" target="_self">CommReducerNode</a></td><td class="desc">A commutative reducer node to represent a commutative binary operator with identity element </td></tr>
+<tr id="row_0_10_39_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ComposeLayout.html" target="_self">ComposeLayout</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_40_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ComposeLayoutNode.html" target="_self">ComposeLayoutNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_41_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Continue.html" target="_self">Continue</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ContinueNode.html" title="A Continue in control flow.">ContinueNode</a> </td></tr>
+<tr id="row_0_10_42_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ContinueNode.html" target="_self">ContinueNode</a></td><td class="desc">A <a class="el" href="classtvm_1_1tirx_1_1Continue.html" title="Managed reference to ContinueNode.">Continue</a> in control flow </td></tr>
+<tr id="row_0_10_43_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CopyPipeline.html" target="_self">CopyPipeline</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_44_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1CopyPipelineNode.html" target="_self">CopyPipelineNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_45_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DataProducer.html" target="_self">DataProducer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DataProducerNode.html" title="Base node for data producers.">DataProducerNode</a> </td></tr>
+<tr id="row_0_10_46_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DataProducerNode.html" target="_self">DataProducerNode</a></td><td class="desc">Base node for data producers </td></tr>
+<tr id="row_0_10_47_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DeclBuffer.html" target="_self">DeclBuffer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DeclBufferNode.html" title="Declare a buffer that can be used in the body.">DeclBufferNode</a> </td></tr>
+<tr id="row_0_10_48_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DeclBufferNode.html" target="_self">DeclBufferNode</a></td><td class="desc">Declare a buffer that can be used in the body </td></tr>
+<tr id="row_0_10_49_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Dependency.html" target="_self">Dependency</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DependencyNode.html" title="A tuple (src, dst, kind) representing certain types of dependency. For example, (A,...">DependencyNode</a>  [...]
+<tr id="row_0_10_50_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DependencyNode.html" target="_self">DependencyNode</a></td><td class="desc">A tuple (src, dst, kind) representing certain types of dependency. <a class="el" href="classtvm_1_1tirx_1_1For.html" title="Managed reference to ForNode.">For</a> example, (A, B, kRAW) mea [...]
+<tr id="row_0_10_51_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DispatchContext.html" target="_self">DispatchContext</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DispatchContextNode.html" title="The context information of the kernel required by op dispatch.">DispatchContextNode</a> </td></tr>
+<tr id="row_0_10_52_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DispatchContextNode.html" target="_self">DispatchContextNode</a></td><td class="desc">The context information of the kernel required by op dispatch </td></tr>
+<tr id="row_0_10_53_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Div.html" target="_self">Div</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DivNode.html" title="a / b in the C semnatics.">DivNode</a> </td></tr>
+<tr id="row_0_10_54_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1DivNode.html" target="_self">DivNode</a></td><td class="desc">/ b in the C semnatics </td></tr>
+<tr id="row_0_10_55_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1EQ.html" target="_self">EQ</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1EQNode.html" title="a == b">EQNode</a> </td></tr>
+<tr id="row_0_10_56_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1EQNode.html" target="_self">EQNode</a></td><td class="desc">== b </td></tr>
+<tr id="row_0_10_57_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Evaluate.html" target="_self">Evaluate</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1EvaluateNode.html" title="Evaluates an expression. This is mostly used for putting a Call node into Stmt.">EvaluateNode</a> </td></tr>
+<tr id="row_0_10_58_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1EvaluateNode.html" target="_self">EvaluateNode</a></td><td class="desc">Evaluates an expression. This is mostly used for putting a <a class="el" href="classtvm_1_1Call.html" title="Managed reference to CallNode.">Call</a> node into <a class="el" href="classtvm_1_1 [...]
+<tr id="row_0_10_59_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tirx_1_1ExecContext.html" target="_self">ExecContext</a></td><td class="desc">Per-program-point <a class="el" href="structtvm_1_1tirx_1_1ExecContext.html" title="Per-program-point ExecContext: active set + scope kind + split.">ExecContext</a>: active set + scope kind + s [...]
+<tr id="row_0_10_60_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExecScope.html" target="_self">ExecScope</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_61_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExecScopeNode.html" target="_self">ExecScopeNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_62_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tirx_1_1ExecSplit.html" target="_self">ExecSplit</a></td><td class="desc">One scope_switch split. Fields are sparse dicts keyed by active-set axis name, e.g. laneid/warpid/cta_id/wid_in_wg/wgid or factorized CTA axes such as cbx/cby/cbz. An empty map denotes the empty la [...]
+<tr id="row_0_10_63_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tirx_1_1ExprDeepEqual.html" target="_self">ExprDeepEqual</a></td><td class="desc">Compare two expressions recursively and check if they are equal to each other without var remapping </td></tr>
+<tr id="row_0_10_64_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExprFunctor.html" target="_self">ExprFunctor</a></td><td class="desc">A dynamical functor that dispatches on in the first <a class="el" href="classtvm_1_1Expr.html" title="Managed reference to ExprNode.">Expr</a> argument. You can use this as a more powerful Visit [...]
+<tr id="row_0_10_65_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExprFunctor_3_01R_07const_01Expr_01_6n_00_01Args_8_8_8_08_4.html" target="_self">ExprFunctor&lt; R(const Expr &amp;n, Args...)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_66_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExprMutator.html" target="_self">ExprMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1ExprMutator.html" title="ExprMutator that mutates expressions.">ExprMutator</a> that mutates expressions </td></tr>
+<tr id="row_0_10_67_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ExprVisitor.html" target="_self">ExprVisitor</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1ExprVisitor.html" title="ExprVisitor.">ExprVisitor</a> </td></tr>
+<tr id="row_0_10_68_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1FloorDiv.html" target="_self">FloorDiv</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1FloorDivNode.html" title="Floor division, floor(a/b)">FloorDivNode</a> </td></tr>
+<tr id="row_0_10_69_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1FloorDivNode.html" target="_self">FloorDivNode</a></td><td class="desc">Floor division, floor(a/b) </td></tr>
+<tr id="row_0_10_70_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1FloorMod.html" target="_self">FloorMod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1FloorModNode.html" title="The remainder of the floordiv.">FloorModNode</a> </td></tr>
+<tr id="row_0_10_71_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1FloorModNode.html" target="_self">FloorModNode</a></td><td class="desc">The remainder of the floordiv </td></tr>
+<tr id="row_0_10_72_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1For.html" target="_self">For</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ForNode.html" title="A for loop, with possible type annotations.">ForNode</a> </td></tr>
+<tr id="row_0_10_73_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ForNode.html" target="_self">ForNode</a></td><td class="desc">A for loop, with possible type annotations </td></tr>
+<tr id="row_0_10_74_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1GE.html" target="_self">GE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1GENode.html" title="a &gt;= b">GENode</a> </td></tr>
+<tr id="row_0_10_75_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1GENode.html" target="_self">GENode</a></td><td class="desc">&gt;= b </td></tr>
+<tr id="row_0_10_76_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1GT.html" target="_self">GT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1GTNode.html" title="a &gt; b">GTNode</a> </td></tr>
+<tr id="row_0_10_77_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1GTNode.html" target="_self">GTNode</a></td><td class="desc">&gt; b </td></tr>
+<tr id="row_0_10_78_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IfThenElse.html" target="_self">IfThenElse</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1IfThenElseNode.html" title="IfThenElse statement.">IfThenElseNode</a> </td></tr>
+<tr id="row_0_10_79_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IfThenElseNode.html" target="_self">IfThenElseNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1IfThenElse.html" title="Managed reference to IfThenElseNode.">IfThenElse</a> statement </td></tr>
+<tr id="row_0_10_80_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IndexMap.html" target="_self">IndexMap</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_81_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IndexMapNode.html" target="_self">IndexMapNode</a></td><td class="desc">Defines a mapping between two representations of indices into a buffer </td></tr>
+<tr id="row_0_10_82_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Iter.html" target="_self">Iter</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_83_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IterNode.html" target="_self">IterNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_84_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IterVar.html" target="_self">IterVar</a></td><td class="desc">Iteration Variable, represents an iteration over an integer interval </td></tr>
+<tr id="row_0_10_85_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1IterVarNode.html" target="_self">IterVarNode</a></td><td class="desc">An iteration variable representing an iteration over a one dimensional interval </td></tr>
+<tr id="row_0_10_86_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Layout.html" target="_self">Layout</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_87_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LayoutNode.html" target="_self">LayoutNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_88_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LE.html" target="_self">LE</a></td><td class="desc">Managed reference to <a class="el" href="structtvm_1_1tirx_1_1LENode.html" title="a &lt;= b">LENode</a> </td></tr>
+<tr id="row_0_10_89_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1tirx_1_1LENode.html" target="_self">LENode</a></td><td class="desc">&lt;= b </td></tr>
+<tr id="row_0_10_90_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Let.html" target="_self">Let</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1LetNode.html" title="Let binding. Bind var to value then evaluate body.">LetNode</a> </td></tr>
+<tr id="row_0_10_91_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LetNode.html" target="_self">LetNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Let.html" title="Managed reference to LetNode.">Let</a> binding. <a class="el" href="classtvm_1_1tirx_1_1Bind.html" title="Managed reference to BindNode.">Bind</a [...]
+<tr id="row_0_10_92_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LT.html" target="_self">LT</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1LTNode.html" title="a &lt; b">LTNode</a> </td></tr>
+<tr id="row_0_10_93_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1LTNode.html" target="_self">LTNode</a></td><td class="desc">&lt; b </td></tr>
+<tr id="row_0_10_94_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MatchBufferRegion.html" target="_self">MatchBufferRegion</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1MatchBufferRegionNode.html" title="Match introduces a constraint that the source buffer region can be remapped to the dat [...]
+<tr id="row_0_10_95_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MatchBufferRegionNode.html" target="_self">MatchBufferRegionNode</a></td><td class="desc">Match introduces a constraint that the source buffer region can be remapped to the data layout specified by the buffer field. The constraint can be checked in later part of l [...]
+<tr id="row_0_10_96_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Max.html" target="_self">Max</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1MaxNode.html" title="max(a, b)">MaxNode</a> </td></tr>
+<tr id="row_0_10_97_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MaxNode.html" target="_self">MaxNode</a></td><td class="desc">Max(a, b) </td></tr>
+<tr id="row_0_10_98_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Min.html" target="_self">Min</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1MinNode.html" title="min(a, b)">MinNode</a> </td></tr>
+<tr id="row_0_10_99_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MinNode.html" target="_self">MinNode</a></td><td class="desc">Min(a, b) </td></tr>
+<tr id="row_0_10_100_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Mod.html" target="_self">Mod</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ModNode.html" title="a % b in the C semnatics.">ModNode</a> </td></tr>
+<tr id="row_0_10_101_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ModNode.html" target="_self">ModNode</a></td><td class="desc">% b in the C semnatics </td></tr>
+<tr id="row_0_10_102_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Mul.html" target="_self">Mul</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1MulNode.html" title="a * b">MulNode</a> </td></tr>
+<tr id="row_0_10_103_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1MulNode.html" target="_self">MulNode</a></td><td class="desc"><ul>
 <li>b </li>
 </ul>
 </td></tr>
-<tr id="row_0_10_103_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1NE.html" target="_self">NE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1NENode.html" title="a != b">NENode</a> </td></tr>
-<tr id="row_0_10_104_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1NENode.html" target="_self">NENode</a></td><td class="desc">!= b </td></tr>
-<tr id="row_0_10_105_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Not.html" target="_self">Not</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1NotNode.html" title="!a">NotNode</a> </td></tr>
-<tr id="row_0_10_106_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1NotNode.html" target="_self">NotNode</a></td><td class="desc">!a </td></tr>
-<tr id="row_0_10_107_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Or.html" target="_self">Or</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1OrNode.html" title="a || b">OrNode</a> </td></tr>
-<tr id="row_0_10_108_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1OrNode.html" target="_self">OrNode</a></td><td class="desc">|| b </td></tr>
-<tr id="row_0_10_109_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Pipeline.html" target="_self">Pipeline</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_110_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PipelineNode.html" target="_self">PipelineNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_111_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Predicate.html" target="_self">Predicate</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_112_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PredicateNode.html" target="_self">PredicateNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_113_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PrimFunc.html" target="_self">PrimFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1PrimFuncNode.html" title="Primitive functions that contains TIR statements.">PrimFuncNode</a> </td></tr>
-<tr id="row_0_10_114_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PrimFuncNode.html" target="_self">PrimFuncNode</a></td><td class="desc">Primitive functions that contains TIR statements </td></tr>
-<tr id="row_0_10_115_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PrimVar.html" target="_self">PrimVar</a></td><td class="desc">Checked scalar view over a <a class="el" href="classtvm_1_1VarNode.html" title="A local variable in the IR.">VarNode</a> </td></tr>
-<tr id="row_0_10_116_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ProducerLoad.html" target="_self">ProducerLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ProducerLoadNode.html" title="Load value from the result produced by the producer.">ProducerLoadNode</a> </td></tr>
-<tr id="row_0_10_117_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ProducerLoadNode.html" target="_self">ProducerLoadNode</a></td><td class="desc">Load value from the result produced by the producer </td></tr>
-<tr id="row_0_10_118_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Ramp.html" target="_self">Ramp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1RampNode.html" title="Construct a vector with lanes elements where its i-th element equals base + i * stride....">RampNode</a> </td></tr>
-<tr id="row_0_10_119_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1RampNode.html" target="_self">RampNode</a></td><td class="desc">Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to construct a index for a continuous vector load </td></tr>
-<tr id="row_0_10_120_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Reduce.html" target="_self">Reduce</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ReduceNode.html" title="Reduction operator.">ReduceNode</a> </td></tr>
-<tr id="row_0_10_121_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ReduceNode.html" target="_self">ReduceNode</a></td><td class="desc">Reduction operator </td></tr>
-<tr id="row_0_10_122_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Return.html" target="_self">Return</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ReturnNode.html" title="A return from the current function.">ReturnNode</a> </td></tr>
-<tr id="row_0_10_123_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ReturnNode.html" target="_self">ReturnNode</a></td><td class="desc">A return from the current function </td></tr>
-<tr id="row_0_10_124_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBijectiveLayout.html" target="_self">SBijectiveLayout</a></td><td class="desc">Bijective function mapping for data layout transformation. Given two <a class="el" href="classtvm_1_1tirx_1_1SLayout.html" title="Managed reference to SLayoutNode.">SLayout</a>, <a cl [...]
-<tr id="row_0_10_125_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBijectiveLayoutNode.html" target="_self">SBijectiveLayoutNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_126_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlock.html" target="_self">SBlock</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SBlockNode.html" title="A block is a basic schedule unit in TIR.">SBlockNode</a> </td></tr>
-<tr id="row_0_10_127_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockDependenceInfo.html" target="_self">SBlockDependenceInfo</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SBlockDependenceInfoNode.html" title="An object that helps build and query block level dependences using the 2 cor [...]
-<tr id="row_0_10_128_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockDependenceInfoNode.html" target="_self">SBlockDependenceInfoNode</a></td><td class="desc">An object that helps build and query block level dependences using the 2 core objects <a class="el" href="classtvm_1_1tirx_1_1SBlockScope.html" title="Managed referenc [...]
-<tr id="row_0_10_129_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockNode.html" target="_self">SBlockNode</a></td><td class="desc">A block is a basic schedule unit in TIR </td></tr>
-<tr id="row_0_10_130_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockRealize.html" target="_self">SBlockRealize</a></td><td class="desc">Managed reference to BlockRealizeNode </td></tr>
-<tr id="row_0_10_131_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockRealizeNode.html" target="_self">SBlockRealizeNode</a></td><td class="desc">A block realization node represents execution of the block at the binding values </td></tr>
-<tr id="row_0_10_132_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockScope.html" target="_self">SBlockScope</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SBlockScopeNode.html" title="An object with 1-to-1 correspondence with each block reference in the sref tree. This data structure .. [...]
-<tr id="row_0_10_133_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockScopeNode.html" target="_self">SBlockScopeNode</a></td><td class="desc">An object with 1-to-1 correspondence with each block reference in the sref tree. This data structure is used to track the producer-consumer dependencies between blocks. <a class="el" hr [...]
-<tr id="row_0_10_134_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDef.html" target="_self">ScopeIdDef</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_135_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefNode.html" target="_self">ScopeIdDefNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_136_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefStmt.html" target="_self">ScopeIdDefStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefStmtNode.html" title="Standalone statement that declares a scope-id binding (e.g. cta_id, warp_id, lane_id)....">Sco [...]
-<tr id="row_0_10_137_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefStmtNode.html" target="_self">ScopeIdDefStmtNode</a></td><td class="desc">Standalone statement that declares a scope-id binding (e.g. cta_id, warp_id, lane_id). Carries a <code><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDef.html">ScopeIdDef</a></cod [...]
-<tr id="row_0_10_138_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefVerifier.html" target="_self">ScopeIdDefVerifier</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_139_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdResolve.html" target="_self">ScopeIdResolve</a></td><td class="desc">Static resolver for <a class="el" href="classtvm_1_1tirx_1_1ScopeIdDef.html">ScopeIdDef</a> values. Replaces the former ScopeIdResolveTable runtime registry with a closed-enum switch </td></tr>
-<tr id="row_0_10_140_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Select.html" target="_self">Select</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SelectNode.html" title="return true_value if condition is true, otherwise return false_value.">SelectNode</a> </td></tr>
-<tr id="row_0_10_141_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SelectNode.html" target="_self">SelectNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> true_value if condition is true, otherwise return false_value </td></tr>
-<tr id="row_0_10_142_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_10_142_" class="arrow" onclick="toggleFolder('0_10_142_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SeqStmt.html" target="_self">SeqStmt</a></td><td class="desc">Sequence statement </td></tr>
-<tr id="row_0_10_142_0_" class="odd" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SeqStmt_1_1Flattener.html" target="_self">Flattener</a></td><td class="desc">Helper class to flatten sequence of arguments into Array </td></tr>
-<tr id="row_0_10_143_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SeqStmtNode.html" target="_self">SeqStmtNode</a></td><td class="desc">The container of seq statement. Represent a sequence of statements </td></tr>
-<tr id="row_0_10_144_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Shuffle.html" target="_self">Shuffle</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ShuffleNode.html" title="Shuffle instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ....">ShuffleNode</a> </td></tr>
-<tr id="row_0_10_145_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ShuffleNode.html" target="_self">ShuffleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Shuffle.html" title="Managed reference to ShuffleNode.">Shuffle</a> instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...) </ [...]
-<tr id="row_0_10_146_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SLayout.html" target="_self">SLayout</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SLayoutNode.html" title="SLayout is to describe how data is organized within an N-dimention tensor. It is composed of upper ca...">SLayoutNo [...]
-<tr id="row_0_10_147_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SLayoutAxis.html" target="_self">SLayoutAxis</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_148_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SLayoutNode.html" target="_self">SLayoutNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1SLayout.html" title="Managed reference to SLayoutNode.">SLayout</a> is to describe how data is organized within an N-dimention tensor. It is composed of  [...]
-<tr id="row_0_10_149_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SRefTreeCreator.html" target="_self">SRefTreeCreator</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_150_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Stmt.html" target="_self">Stmt</a></td><td class="desc">Container of all statements </td></tr>
-<tr id="row_0_10_151_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtExprMutator.html" target="_self">StmtExprMutator</a></td><td class="desc">Mutator that recursively mutates stmts and exprs on them </td></tr>
-<tr id="row_0_10_152_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtExprVisitor.html" target="_self">StmtExprVisitor</a></td><td class="desc">Visitor that recursively visit stmts and exprs on them </td></tr>
-<tr id="row_0_10_153_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtFunctor.html" target="_self">StmtFunctor</a></td><td class="desc">Same as <a class="el" href="classtvm_1_1tirx_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">ExprFunctor</a [...]
-<tr id="row_0_10_154_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtFunctor_3_01R_07const_01Stmt_01_6n_00_01Args_8_8_8_01args_08_4.html" target="_self">StmtFunctor&lt; R(const Stmt &amp;n, Args... args)&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_155_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtMutator.html" target="_self">StmtMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1StmtMutator.html" title="StmtMutator that mutates the statements.">StmtMutator</a> that mutates the statements </td></tr>
-<tr id="row_0_10_156_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html" target="_self">StmtNode</a></td><td class="desc">Base node of all statements </td></tr>
-<tr id="row_0_10_157_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtSRef.html" target="_self">StmtSRef</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1StmtSRefNode.html" title="An object that refers to schedulable elements (block/for-loop) in TensorIR, aka &quot;sref&quot;.">StmtSRefNode< [...]
-<tr id="row_0_10_158_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtSRefNode.html" target="_self">StmtSRefNode</a></td><td class="desc">An object that refers to schedulable elements (block/for-loop) in TensorIR, aka "sref" </td></tr>
-<tr id="row_0_10_159_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html" target="_self">StmtVisitor</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html" title="StmtVisitor.">StmtVisitor</a> </td></tr>
-<tr id="row_0_10_160_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StringImm.html" target="_self">StringImm</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1StringImmNode.html" title="ffi::String constants, only used in asserts.">StringImmNode</a> </td></tr>
-<tr id="row_0_10_161_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StringImmNode.html" target="_self">StringImmNode</a></td><td class="desc">Ffi::String constants, only used in asserts </td></tr>
-<tr id="row_0_10_162_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Sub.html" target="_self">Sub</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SubNode.html" title="a - b">SubNode</a> </td></tr>
-<tr id="row_0_10_163_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SubNode.html" target="_self">SubNode</a></td><td class="desc"><ul>
+<tr id="row_0_10_104_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1NE.html" target="_self">NE</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1NENode.html" title="a != b">NENode</a> </td></tr>
+<tr id="row_0_10_105_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1NENode.html" target="_self">NENode</a></td><td class="desc">!= b </td></tr>
+<tr id="row_0_10_106_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Not.html" target="_self">Not</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1NotNode.html" title="!a">NotNode</a> </td></tr>
+<tr id="row_0_10_107_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1NotNode.html" target="_self">NotNode</a></td><td class="desc">!a </td></tr>
+<tr id="row_0_10_108_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Or.html" target="_self">Or</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1OrNode.html" title="a || b">OrNode</a> </td></tr>
+<tr id="row_0_10_109_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1OrNode.html" target="_self">OrNode</a></td><td class="desc">|| b </td></tr>
+<tr id="row_0_10_110_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Pipeline.html" target="_self">Pipeline</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_111_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PipelineNode.html" target="_self">PipelineNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_112_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Predicate.html" target="_self">Predicate</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_113_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PredicateNode.html" target="_self">PredicateNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_114_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PrimFunc.html" target="_self">PrimFunc</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1PrimFuncNode.html" title="Primitive functions that contains TIR statements.">PrimFuncNode</a> </td></tr>
+<tr id="row_0_10_115_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PrimFuncNode.html" target="_self">PrimFuncNode</a></td><td class="desc">Primitive functions that contains TIR statements </td></tr>
+<tr id="row_0_10_116_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1PrimVar.html" target="_self">PrimVar</a></td><td class="desc">Checked scalar view over a <a class="el" href="classtvm_1_1VarNode.html" title="A local variable in the IR.">VarNode</a> </td></tr>
+<tr id="row_0_10_117_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ProducerLoad.html" target="_self">ProducerLoad</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ProducerLoadNode.html" title="Load value from the result produced by the producer.">ProducerLoadNode</a> </td></tr>
+<tr id="row_0_10_118_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ProducerLoadNode.html" target="_self">ProducerLoadNode</a></td><td class="desc">Load value from the result produced by the producer </td></tr>
+<tr id="row_0_10_119_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Ramp.html" target="_self">Ramp</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1RampNode.html" title="Construct a vector with lanes elements where its i-th element equals base + i * stride....">RampNode</a> </td></tr>
+<tr id="row_0_10_120_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1RampNode.html" target="_self">RampNode</a></td><td class="desc">Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to construct a index for a continuous vector load </td></tr>
+<tr id="row_0_10_121_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Reduce.html" target="_self">Reduce</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ReduceNode.html" title="Reduction operator.">ReduceNode</a> </td></tr>
+<tr id="row_0_10_122_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ReduceNode.html" target="_self">ReduceNode</a></td><td class="desc">Reduction operator </td></tr>
+<tr id="row_0_10_123_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Return.html" target="_self">Return</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ReturnNode.html" title="A return from the current function.">ReturnNode</a> </td></tr>
+<tr id="row_0_10_124_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ReturnNode.html" target="_self">ReturnNode</a></td><td class="desc">A return from the current function </td></tr>
+<tr id="row_0_10_125_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBijectiveLayout.html" target="_self">SBijectiveLayout</a></td><td class="desc">Bijective function mapping for data layout transformation. Given two <a class="el" href="classtvm_1_1tirx_1_1SLayout.html" title="Managed reference to SLayoutNode.">SLayout</a>, <a cl [...]
+<tr id="row_0_10_126_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBijectiveLayoutNode.html" target="_self">SBijectiveLayoutNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_127_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlock.html" target="_self">SBlock</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SBlockNode.html" title="A block is a basic schedule unit in TIR.">SBlockNode</a> </td></tr>
+<tr id="row_0_10_128_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockDependenceInfo.html" target="_self">SBlockDependenceInfo</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SBlockDependenceInfoNode.html" title="An object that helps build and query block level dependences using the 2 cor [...]
+<tr id="row_0_10_129_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockDependenceInfoNode.html" target="_self">SBlockDependenceInfoNode</a></td><td class="desc">An object that helps build and query block level dependences using the 2 core objects <a class="el" href="classtvm_1_1tirx_1_1SBlockScope.html" title="Managed referenc [...]
+<tr id="row_0_10_130_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockNode.html" target="_self">SBlockNode</a></td><td class="desc">A block is a basic schedule unit in TIR </td></tr>
+<tr id="row_0_10_131_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockRealize.html" target="_self">SBlockRealize</a></td><td class="desc">Managed reference to BlockRealizeNode </td></tr>
+<tr id="row_0_10_132_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockRealizeNode.html" target="_self">SBlockRealizeNode</a></td><td class="desc">A block realization node represents execution of the block at the binding values </td></tr>
+<tr id="row_0_10_133_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockScope.html" target="_self">SBlockScope</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SBlockScopeNode.html" title="An object with 1-to-1 correspondence with each block reference in the sref tree. This data structure .. [...]
+<tr id="row_0_10_134_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SBlockScopeNode.html" target="_self">SBlockScopeNode</a></td><td class="desc">An object with 1-to-1 correspondence with each block reference in the sref tree. This data structure is used to track the producer-consumer dependencies between blocks. <a class="el" hr [...]
+<tr id="row_0_10_135_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDef.html" target="_self">ScopeIdDef</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_136_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefNode.html" target="_self">ScopeIdDefNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_137_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefStmt.html" target="_self">ScopeIdDefStmt</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefStmtNode.html" title="Standalone statement that declares a scope-id binding (e.g. cta_id, warp_id, lane_id)....">Sco [...]
+<tr id="row_0_10_138_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefStmtNode.html" target="_self">ScopeIdDefStmtNode</a></td><td class="desc">Standalone statement that declares a scope-id binding (e.g. cta_id, warp_id, lane_id). Carries a <code><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDef.html">ScopeIdDef</a></cod [...]
+<tr id="row_0_10_139_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdDefVerifier.html" target="_self">ScopeIdDefVerifier</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_140_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ScopeIdResolve.html" target="_self">ScopeIdResolve</a></td><td class="desc">Static resolver for <a class="el" href="classtvm_1_1tirx_1_1ScopeIdDef.html">ScopeIdDef</a> values. Replaces the former ScopeIdResolveTable runtime registry with a closed-enum switch </td></tr>
+<tr id="row_0_10_141_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Select.html" target="_self">Select</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SelectNode.html" title="return true_value if condition is true, otherwise return false_value.">SelectNode</a> </td></tr>
+<tr id="row_0_10_142_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SelectNode.html" target="_self">SelectNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> true_value if condition is true, otherwise return false_value </td></tr>
+<tr id="row_0_10_143_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_10_143_" class="arrow" onclick="toggleFolder('0_10_143_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SeqStmt.html" target="_self">SeqStmt</a></td><td class="desc">Sequence statement </td></tr>
+<tr id="row_0_10_143_0_" class="odd" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SeqStmt_1_1Flattener.html" target="_self">Flattener</a></td><td class="desc">Helper class to flatten sequence of arguments into Array </td></tr>
+<tr id="row_0_10_144_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SeqStmtNode.html" target="_self">SeqStmtNode</a></td><td class="desc">The container of seq statement. Represent a sequence of statements </td></tr>
+<tr id="row_0_10_145_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Shuffle.html" target="_self">Shuffle</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1ShuffleNode.html" title="Shuffle instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ....">ShuffleNode</a> </td></tr>
+<tr id="row_0_10_146_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1ShuffleNode.html" target="_self">ShuffleNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1Shuffle.html" title="Managed reference to ShuffleNode.">Shuffle</a> instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...) </ [...]
+<tr id="row_0_10_147_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SLayout.html" target="_self">SLayout</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SLayoutNode.html" title="SLayout is to describe how data is organized within an N-dimention tensor. It is composed of upper ca...">SLayoutNo [...]
+<tr id="row_0_10_148_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SLayoutAxis.html" target="_self">SLayoutAxis</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_149_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SLayoutNode.html" target="_self">SLayoutNode</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1SLayout.html" title="Managed reference to SLayoutNode.">SLayout</a> is to describe how data is organized within an N-dimention tensor. It is composed of  [...]
+<tr id="row_0_10_150_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SRefTreeCreator.html" target="_self">SRefTreeCreator</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_151_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Stmt.html" target="_self">Stmt</a></td><td class="desc">Container of all statements </td></tr>
+<tr id="row_0_10_152_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtExprMutator.html" target="_self">StmtExprMutator</a></td><td class="desc">Mutator that recursively mutates stmts and exprs on them </td></tr>
+<tr id="row_0_10_153_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtExprVisitor.html" target="_self">StmtExprVisitor</a></td><td class="desc">Visitor that recursively visit stmts and exprs on them </td></tr>
+<tr id="row_0_10_154_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtFunctor.html" target="_self">StmtFunctor</a></td><td class="desc">Same as <a class="el" href="classtvm_1_1tirx_1_1ExprFunctor.html" title="A dynamical functor that dispatches on in the first Expr argument. You can use this as a more powerfu...">ExprFunctor</a [...]
+<tr id="row_0_10_155_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtFunctor_3_01R_07const_01Stmt_01_6n_00_01Args_8_8_8_01args_08_4.html" target="_self">StmtFunctor&lt; R(const Stmt &amp;n, Args... args)&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_156_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtMutator.html" target="_self">StmtMutator</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1StmtMutator.html" title="StmtMutator that mutates the statements.">StmtMutator</a> that mutates the statements </td></tr>
+<tr id="row_0_10_157_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtNode.html" target="_self">StmtNode</a></td><td class="desc">Base node of all statements </td></tr>
+<tr id="row_0_10_158_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtSRef.html" target="_self">StmtSRef</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1StmtSRefNode.html" title="An object that refers to schedulable elements (block/for-loop) in TensorIR, aka &quot;sref&quot;.">StmtSRefNode< [...]
+<tr id="row_0_10_159_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtSRefNode.html" target="_self">StmtSRefNode</a></td><td class="desc">An object that refers to schedulable elements (block/for-loop) in TensorIR, aka "sref" </td></tr>
+<tr id="row_0_10_160_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html" target="_self">StmtVisitor</a></td><td class="desc"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html" title="StmtVisitor.">StmtVisitor</a> </td></tr>
+<tr id="row_0_10_161_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StringImm.html" target="_self">StringImm</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1StringImmNode.html" title="ffi::String constants, only used in asserts.">StringImmNode</a> </td></tr>
+<tr id="row_0_10_162_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1StringImmNode.html" target="_self">StringImmNode</a></td><td class="desc">Ffi::String constants, only used in asserts </td></tr>
+<tr id="row_0_10_163_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1Sub.html" target="_self">Sub</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1SubNode.html" title="a - b">SubNode</a> </td></tr>
+<tr id="row_0_10_164_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SubNode.html" target="_self">SubNode</a></td><td class="desc"><ul>
 <li>b </li>
 </ul>
 </td></tr>
-<tr id="row_0_10_164_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SwizzleLayout.html" target="_self">SwizzleLayout</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_165_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SwizzleLayoutNode.html" target="_self">SwizzleLayoutNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_166_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TensorIntrin.html" target="_self">TensorIntrin</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1TensorIntrinNode.html" title="Tensor intrinsics for tensorization.">TensorIntrinNode</a> </td></tr>
-<tr id="row_0_10_167_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TensorIntrinNode.html" target="_self">TensorIntrinNode</a></td><td class="desc">Tensor intrinsics for tensorization </td></tr>
-<tr id="row_0_10_168_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TileLayout.html" target="_self">TileLayout</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_169_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TileLayoutNode.html" target="_self">TileLayoutNode</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_170_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TilePrimitiveCall.html" target="_self">TilePrimitiveCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1TilePrimitiveCallNode.html" title="TIRX TilePrimitiveCall stmt.">TilePrimitiveCallNode</a> </td></tr>
-<tr id="row_0_10_171_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TilePrimitiveCallNode.html" target="_self">TilePrimitiveCallNode</a></td><td class="desc">TIRX <a class="el" href="classtvm_1_1tirx_1_1TilePrimitiveCall.html" title="Managed reference to TilePrimitiveCallNode.">TilePrimitiveCall</a> stmt </td></tr>
-<tr id="row_0_10_172_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1While.html" target="_self">While</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1WhileNode.html" title="A While loop.">WhileNode</a> </td></tr>
-<tr id="row_0_10_173_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1WhileNode.html" target="_self">WhileNode</a></td><td class="desc">A <a class="el" href="classtvm_1_1tirx_1_1While.html" title="Managed reference to WhileNode.">While</a> loop </td></tr>
+<tr id="row_0_10_165_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SwizzleLayout.html" target="_self">SwizzleLayout</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_166_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1SwizzleLayoutNode.html" target="_self">SwizzleLayoutNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_167_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TensorIntrin.html" target="_self">TensorIntrin</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1TensorIntrinNode.html" title="Tensor intrinsics for tensorization.">TensorIntrinNode</a> </td></tr>
+<tr id="row_0_10_168_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TensorIntrinNode.html" target="_self">TensorIntrinNode</a></td><td class="desc">Tensor intrinsics for tensorization </td></tr>
+<tr id="row_0_10_169_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TileLayout.html" target="_self">TileLayout</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_170_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TileLayoutNode.html" target="_self">TileLayoutNode</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_171_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TilePrimitiveCall.html" target="_self">TilePrimitiveCall</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1TilePrimitiveCallNode.html" title="TIRX TilePrimitiveCall stmt.">TilePrimitiveCallNode</a> </td></tr>
+<tr id="row_0_10_172_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1TilePrimitiveCallNode.html" target="_self">TilePrimitiveCallNode</a></td><td class="desc">TIRX <a class="el" href="classtvm_1_1tirx_1_1TilePrimitiveCall.html" title="Managed reference to TilePrimitiveCallNode.">TilePrimitiveCall</a> stmt </td></tr>
+<tr id="row_0_10_173_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1While.html" target="_self">While</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1WhileNode.html" title="A While loop.">WhileNode</a> </td></tr>
+<tr id="row_0_10_174_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1tirx_1_1WhileNode.html" target="_self">WhileNode</a></td><td class="desc">A <a class="el" href="classtvm_1_1tirx_1_1While.html" title="Managed reference to WhileNode.">While</a> loop </td></tr>
 <tr id="row_0_11_" class="odd" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_11_" class="arrow" onclick="toggleFolder('0_11_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1topi.html" target="_self">topi</a></td><td class="desc"></td></tr>
 <tr id="row_0_11_0_" class="odd" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1topi_1_1EinsumEquation.html" target="_self">EinsumEquation</a></td><td class="desc"></td></tr>
 <tr id="row_0_12_" class="odd" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_12_" class="arrow" onclick="toggleFolder('0_12_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1transform.html" target="_self">transform</a></td><td class="desc"></td></tr>
diff --git a/docs/reference/api/doxygen/arg__info_8h_source.html b/docs/reference/api/doxygen/arg__info_8h_source.html
index 2133d9adb3f..90b25e53ebc 100644
--- a/docs/reference/api/doxygen/arg__info_8h_source.html
+++ b/docs/reference/api/doxygen/arg__info_8h_source.html
@@ -196,7 +196,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1s__tir_1_1meta__schedule_1_1TensorInfo_html_a51b49d8a49cc2f91a3696804eed1a03a"><div class="ttname"><a href="classtvm_1_1s__tir_1_1meta__schedule_1_1TensorInfo.html#a51b49d8a49cc2f91a3696804eed1a03a">tvm::s_tir::meta_schedule::TensorInfo::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(TensorInfo, ArgInfo, TensorInfoNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1s__tir_1_1meta__schedule_1_1TensorInfo_html_acf73abc700776ff27a54c5bfbb8d5ccd"><div class="ttname"><a href="classtvm_1_1s__tir_1_1meta__schedule_1_1TensorInfo.html#acf73abc700776ff27a54c5bfbb8d5ccd">tvm::s_tir::meta_schedule::TensorInfo::TensorInfo</a></div><div class="ttdeci">TensorInfo(DLDataType dtype, ffi::Shape shape)</div><div class="ttdoc">Constructor of TensorInfo.</div></div>
 <div class="ttc" id="aclasstvm_1_1s__tir_1_1meta__schedule_1_1TensorInfo_html_ada7b1579bf0ac604aa2091dad5187e9e"><div class="ttname"><a href="classtvm_1_1s__tir_1_1meta__schedule_1_1TensorInfo.html#ada7b1579bf0ac604aa2091dad5187e9e">tvm::s_tir::meta_schedule::TensorInfo::FromJSON</a></div><div class="ttdeci">static TensorInfo FromJSON(const ffi::ObjectRef &amp;json_obj)</div><div class="ttdoc">Parse the argument information from a JSON object.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1PrimFunc_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1PrimFunc.html">tvm::tirx::PrimFunc</a></div><div class="ttdoc">Managed reference to PrimFuncNode.</div><div class="ttdef"><b>Definition</b> function.h:154</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1PrimFunc_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1PrimFunc.html">tvm::tirx::PrimFunc</a></div><div class="ttdoc">Managed reference to PrimFuncNode.</div><div class="ttdef"><b>Definition</b> function.h:155</div></div>
 <div class="ttc" id="amodule_8h_html"><div class="ttname"><a href="module_8h.html">module.h</a></div><div class="ttdoc">IRModule that holds the functions and type definitions.</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="atirx_2function_8h_html"><div class="ttname"><a href="tirx_2function_8h.html">function.h</a></div><div class="ttdoc">TIR Function.</div></div>
diff --git a/docs/reference/api/doxygen/async__structs_8h_source.html b/docs/reference/api/doxygen/async__structs_8h_source.html
index e5a0bc82036..22257221746 100644
--- a/docs/reference/api/doxygen/async__structs_8h_source.html
+++ b/docs/reference/api/doxygen/async__structs_8h_source.html
@@ -120,7 +120,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1PipelineNode.html#a584d570c4f01cf07be4d2933bd66aafc">   43</a></span>  <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a584d570c4f01cf07be4d2933bd66aafc">separate_pc</a>;</div>
 <div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1PipelineNode.html#a691bfe7ff5570942f13d7f138d7596d7">   45</a></span>  ffi::String <a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a691bfe7ff5570942f13d7f138d7596d7">name_hint</a>;</div>
 <div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
-<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1PipelineNode.html#a2e4cb6f3362c1befc3ac4f729a95fff4">   48</a></span>  ffi::Map&lt;ffi::String, tvm::tirx::Buffer&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a2e4cb6f3362c1befc3ac4f729a95fff4">workspace</a>;</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1PipelineNode.html#ab9cc0ad485239882ebb99bf93cf5c4d4">   48</a></span>  ffi::Map&lt;ffi::String, tvm::tirx::BufferVar&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#ab9cc0ad485239882ebb99bf93cf5c4d4">workspace</a>;</div>
 <div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1PipelineNode.html#a0e84ad2e1a2fd70e2cc22f5a00943ee9">   50</a></span>  ffi::Map&lt;ffi::String, ffi::Any&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a0e84ad2e1a2fd70e2cc22f5a00943ee9">schedule_config</a>;</div>
 <div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span> </div>
 <div class="foldopen" id="foldopen00052" data-start="{" data-end="}">
@@ -131,7 +131,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>        .def_ro(<span class="stringliteral">&quot;name_hint&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a691bfe7ff5570942f13d7f138d7596d7">PipelineNode::name_hint</a>)</div>
 <div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>        .def_ro(<span class="stringliteral">&quot;depth&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a9b445c1a370f4550f4d79a60b0ae5de4">PipelineNode::depth</a>)</div>
 <div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>        .def_ro(<span class="stringliteral">&quot;separate_pc&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a584d570c4f01cf07be4d2933bd66aafc">PipelineNode::separate_pc</a>)</div>
-<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>        .def_ro(<span class="stringliteral">&quot;workspace&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a2e4cb6f3362c1befc3ac4f729a95fff4">PipelineNode::workspace</a>)</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>        .def_ro(<span class="stringliteral">&quot;workspace&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#ab9cc0ad485239882ebb99bf93cf5c4d4">PipelineNode::workspace</a>)</div>
 <div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>        .def_ro(<span class="stringliteral">&quot;schedule_config&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1PipelineNode.html#a0e84ad2e1a2fd70e2cc22f5a00943ee9">PipelineNode::schedule_config</a>);</div>
 <div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>  }</div>
 </div>
@@ -144,9 +144,9 @@ $(document).ready(function() { init_codefold(0); });
 <div class="foldopen" id="foldopen00067" data-start="{" data-end="};">
 <div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Pipeline.html">   67</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1Pipeline.html">Pipeline</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
 <div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Pipeline.html#acb8a143d3dcd9f4d260fc51b242c6891">   69</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_1tirx_1_1Pipeline.html#acb8a143d3dcd9f4d260fc51b242c6891">Pipeline</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1ExecScope.html">ExecScope</a> thread_sco [...]
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Pipeline.html#a12359b96e8e623561f1b444ed0840732">   69</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_1tirx_1_1Pipeline.html#a12359b96e8e623561f1b444ed0840732">Pipeline</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1ExecScope.html">ExecScope</a> thread_sco [...]
 <div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>                            ffi::String name_hint = <span class="stringliteral">&quot;&quot;</span>,</div>
-<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>                            ffi::Map&lt;ffi::String, tvm::tirx::Buffer&gt; workspace = {},</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>                            ffi::Map&lt;ffi::String, tvm::tirx::BufferVar&gt; workspace = {},</div>
 <div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>                            ffi::Map&lt;ffi::String, ffi::Any&gt; schedule_config = {});</div>
 <div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
 <div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Pipeline.html#a93515bcdfa77b0c9336eae399c189d21">   74</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1Pipeline.html#a93515bcdfa77b0c9336eae399c189d21">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1Pipeline.html">Pipeline</a>, ffi::ObjectRef, <a class="code hl_class" href="classtvm_1_1tirx_1_1PipelineNode.h [...]
@@ -172,9 +172,9 @@ $(document).ready(function() { init_codefold(0); });
 <div class="foldopen" id="foldopen00089" data-start="{" data-end="};">
 <div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1CopyPipeline.html">   89</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1CopyPipeline.html">CopyPipeline</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1Pipeline.html">Pipeline</a> {</div>
 <div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1CopyPipeline.html#ae0a14aadca642fb916d89c78afb6d5c3">   91</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_1tirx_1_1CopyPipeline.html#ae0a14aadca642fb916d89c78afb6d5c3">CopyPipeline</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1ExecScope.html">ExecScope</a [...]
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1CopyPipeline.html#afbb00a7757a021ddee9ce873fd6dfaca">   91</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_1tirx_1_1CopyPipeline.html#afbb00a7757a021ddee9ce873fd6dfaca">CopyPipeline</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1ExecScope.html">ExecScope</a [...]
 <div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>                                ffi::String name_hint = <span class="stringliteral">&quot;&quot;</span>,</div>
-<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>                                ffi::Map&lt;ffi::String, tvm::tirx::Buffer&gt; workspace = {},</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>                                ffi::Map&lt;ffi::String, tvm::tirx::BufferVar&gt; workspace = {},</div>
 <div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>                                ffi::Map&lt;ffi::String, ffi::Any&gt; schedule_config = {});</div>
 <div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span> </div>
 <div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1CopyPipeline.html#aeeb083fe3ad18845d6ca9d0cad38dbbc">   96</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1CopyPipeline.html#aeeb083fe3ad18845d6ca9d0cad38dbbc">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1CopyPipeline.html">CopyPipeline</a>, <a class="code hl_class" href="classtvm_1_1tirx_1_1Pipeline.html" [...]
@@ -194,22 +194,22 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1tirx_1_1CopyPipelineNode_html_afa2a4a9dc66ef6cdee55edf7c3df1eb9"><div class="ttname"><a href="classtvm_1_1tirx_1_1CopyPipelineNode.html#afa2a4a9dc66ef6cdee55edf7c3df1eb9">tvm::tirx::CopyPipelineNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;tirx.CopyPipeline&quot;, CopyPipelineNode, PipelineNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1CopyPipeline_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1CopyPipeline.html">tvm::tirx::CopyPipeline</a></div><div class="ttdef"><b>Definition</b> async_structs.h:89</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1CopyPipeline_html_a09b16ac7f0fb20269a0d10164897d440"><div class="ttname"><a href="classtvm_1_1tirx_1_1CopyPipeline.html#a09b16ac7f0fb20269a0d10164897d440">tvm::tirx::CopyPipeline::TVM_DEFINE_OBJECT_REF_COW_METHOD</a></div><div class="ttdeci">TVM_DEFINE_OBJECT_REF_COW_METHOD(CopyPipelineNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1CopyPipeline_html_ae0a14aadca642fb916d89c78afb6d5c3"><div class="ttname"><a href="classtvm_1_1tirx_1_1CopyPipeline.html#ae0a14aadca642fb916d89c78afb6d5c3">tvm::tirx::CopyPipeline::CopyPipeline</a></div><div class="ttdeci">CopyPipeline(ExecScope thread_scope, size_t depth=0, bool separate_pc=false, ffi::String name_hint=&quot;&quot;, ffi::Map&lt; ffi::String, tvm::tirx::Buffer &gt; workspace={}, ffi::Map&lt; ffi::String, ffi::Any &gt; schedule_con [...]
 <div class="ttc" id="aclasstvm_1_1tirx_1_1CopyPipeline_html_aeeb083fe3ad18845d6ca9d0cad38dbbc"><div class="ttname"><a href="classtvm_1_1tirx_1_1CopyPipeline.html#aeeb083fe3ad18845d6ca9d0cad38dbbc">tvm::tirx::CopyPipeline::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(CopyPipeline, Pipeline, CopyPipelineNode)</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1CopyPipeline_html_afbb00a7757a021ddee9ce873fd6dfaca"><div class="ttname"><a href="classtvm_1_1tirx_1_1CopyPipeline.html#afbb00a7757a021ddee9ce873fd6dfaca">tvm::tirx::CopyPipeline::CopyPipeline</a></div><div class="ttdeci">CopyPipeline(ExecScope thread_scope, size_t depth=0, bool separate_pc=false, ffi::String name_hint=&quot;&quot;, ffi::Map&lt; ffi::String, tvm::tirx::BufferVar &gt; workspace={}, ffi::Map&lt; ffi::String, ffi::Any &gt; schedule_ [...]
 <div class="ttc" id="aclasstvm_1_1tirx_1_1ExecScope_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1ExecScope.html">tvm::tirx::ExecScope</a></div><div class="ttdef"><b>Definition</b> exec_scope.h:228</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html">tvm::tirx::PipelineNode</a></div><div class="ttdef"><b>Definition</b> async_structs.h:36</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_a0e84ad2e1a2fd70e2cc22f5a00943ee9"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#a0e84ad2e1a2fd70e2cc22f5a00943ee9">tvm::tirx::PipelineNode::schedule_config</a></div><div class="ttdeci">ffi::Map&lt; ffi::String, ffi::Any &gt; schedule_config</div><div class="ttdoc">The schedule config of the pipeline.</div><div class="ttdef"><b>Definition</b> async_structs.h:50</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_a117185d8269458562bfe8b207c16849a"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#a117185d8269458562bfe8b207c16849a">tvm::tirx::PipelineNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> async_structs.h:52</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_a1e76cab1dbd7b61820bfd9422bb4d6ab"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#a1e76cab1dbd7b61820bfd9422bb4d6ab">tvm::tirx::PipelineNode::TVM_FFI_DECLARE_OBJECT_INFO</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO(&quot;tirx.Pipeline&quot;, PipelineNode, ffi::Object)</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_a2e4cb6f3362c1befc3ac4f729a95fff4"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#a2e4cb6f3362c1befc3ac4f729a95fff4">tvm::tirx::PipelineNode::workspace</a></div><div class="ttdeci">ffi::Map&lt; ffi::String, tvm::tirx::Buffer &gt; workspace</div><div class="ttdoc">The workspace of the pipeline.</div><div class="ttdef"><b>Definition</b> async_structs.h:48</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_a584d570c4f01cf07be4d2933bd66aafc"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#a584d570c4f01cf07be4d2933bd66aafc">tvm::tirx::PipelineNode::separate_pc</a></div><div class="ttdeci">bool separate_pc</div><div class="ttdoc">Whether to separate producer and consumer threads.</div><div class="ttdef"><b>Definition</b> async_structs.h:43</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_a691bfe7ff5570942f13d7f138d7596d7"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#a691bfe7ff5570942f13d7f138d7596d7">tvm::tirx::PipelineNode::name_hint</a></div><div class="ttdeci">ffi::String name_hint</div><div class="ttdoc">The name hint of the pipeline.</div><div class="ttdef"><b>Definition</b> async_structs.h:45</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_a9b445c1a370f4550f4d79a60b0ae5de4"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#a9b445c1a370f4550f4d79a60b0ae5de4">tvm::tirx::PipelineNode::depth</a></div><div class="ttdeci">size_t depth</div><div class="ttdoc">The pipeline depth.</div><div class="ttdef"><b>Definition</b> async_structs.h:41</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_aa533795c11a986fb77c7889e39184001"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#aa533795c11a986fb77c7889e39184001">tvm::tirx::PipelineNode::thread_scope</a></div><div class="ttdeci">ExecScope thread_scope</div><div class="ttdoc">The thread scope of this pipeline.</div><div class="ttdef"><b>Definition</b> async_structs.h:39</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_ab9cc0ad485239882ebb99bf93cf5c4d4"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#ab9cc0ad485239882ebb99bf93cf5c4d4">tvm::tirx::PipelineNode::workspace</a></div><div class="ttdeci">ffi::Map&lt; ffi::String, tvm::tirx::BufferVar &gt; workspace</div><div class="ttdoc">The workspace of the pipeline.</div><div class="ttdef"><b>Definition</b> async_structs.h:48</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1PipelineNode_html_acf25772302e93cc58358ce8e7df271e9"><div class="ttname"><a href="classtvm_1_1tirx_1_1PipelineNode.html#acf25772302e93cc58358ce8e7df271e9">tvm::tirx::PipelineNode::_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> async_structs.h:63</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1Pipeline_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1Pipeline.html">tvm::tirx::Pipeline</a></div><div class="ttdef"><b>Definition</b> async_structs.h:67</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1Pipeline_html_a12359b96e8e623561f1b444ed0840732"><div class="ttname"><a href="classtvm_1_1tirx_1_1Pipeline.html#a12359b96e8e623561f1b444ed0840732">tvm::tirx::Pipeline::Pipeline</a></div><div class="ttdeci">Pipeline(ExecScope thread_scope, size_t depth=0, bool separate_pc=false, ffi::String name_hint=&quot;&quot;, ffi::Map&lt; ffi::String, tvm::tirx::BufferVar &gt; workspace={}, ffi::Map&lt; ffi::String, ffi::Any &gt; schedule_config={})</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1Pipeline_html_a93515bcdfa77b0c9336eae399c189d21"><div class="ttname"><a href="classtvm_1_1tirx_1_1Pipeline.html#a93515bcdfa77b0c9336eae399c189d21">tvm::tirx::Pipeline::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(Pipeline, ffi::ObjectRef, PipelineNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Pipeline_html_acb8a143d3dcd9f4d260fc51b242c6891"><div class="ttname"><a href="classtvm_1_1tirx_1_1Pipeline.html#acb8a143d3dcd9f4d260fc51b242c6891">tvm::tirx::Pipeline::Pipeline</a></div><div class="ttdeci">Pipeline(ExecScope thread_scope, size_t depth=0, bool separate_pc=false, ffi::String name_hint=&quot;&quot;, ffi::Map&lt; ffi::String, tvm::tirx::Buffer &gt; workspace={}, ffi::Map&lt; ffi::String, ffi::Any &gt; schedule_config={})</div></div>
 <div class="ttc" id="aexec__scope_8h_html"><div class="ttname"><a href="exec__scope_8h.html">exec_scope.h</a></div></div>
 <div class="ttc" id="amodule_8h_html"><div class="ttname"><a href="module_8h.html">module.h</a></div><div class="ttdoc">IRModule that holds the functions and type definitions.</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>
diff --git a/docs/reference/api/doxygen/axis__group__graph_8h.html b/docs/reference/api/doxygen/axis__group__graph_8h.html
index 10a6f474562..69f7e534715 100644
--- a/docs/reference/api/doxygen/axis__group__graph_8h.html
+++ b/docs/reference/api/doxygen/axis__group__graph_8h.html
@@ -126,8 +126,8 @@ Namespaces</h2></td></tr>
 Typedefs</h2></td></tr>
 <tr class="memitem:aa2311cd730cdca8a01c1d2ff35417ad2" id="r_aa2311cd730cdca8a01c1d2ff35417ad2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">using</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#aa2311cd730cdca8a01c1d2ff35417ad2">tvm::tirx::TIRVarAxis</a> = std::pair&lt; <a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a>, <a class="el" href="classtvm_ [...]
 <tr class="separator:aa2311cd730cdca8a01c1d2ff35417ad2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a176fc8a18c3ffce5a6c69e15ac53165f" id="r_a176fc8a18c3ffce5a6c69e15ac53165f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">using</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">tvm::tirx::BufferAxis</a> = std::pair&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>, <a class="el" href="classtvm_1_1With.html">int</a> &gt [...]
-<tr class="separator:a176fc8a18c3ffce5a6c69e15ac53165f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aae66818353d29c42b5f0337479f5d272" id="r_aae66818353d29c42b5f0337479f5d272"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">using</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">tvm::tirx::BufferAxis</a> = std::pair&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>, <a class="el" href="classtvm_1_1With.html">int</ [...]
+<tr class="separator:aae66818353d29c42b5f0337479f5d272"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
 Functions</h2></td></tr>
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 ce5d2e1fdf2..a1ff7755996 100644
--- a/docs/reference/api/doxygen/axis__group__graph_8h_source.html
+++ b/docs/reference/api/doxygen/axis__group__graph_8h_source.html
@@ -124,12 +124,12 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="comment">// (var, axis)</span></div>
 <div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#aa2311cd730cdca8a01c1d2ff35417ad2">   41</a></span><span class="keyword">using </span><a class="code hl_typedef" href="namespacetvm_1_1tirx.html#aa2311cd730cdca8a01c1d2ff35417ad2">TIRVarAxis</a> = std::pair&lt;Var, int&gt;;</div>
 <div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="comment">// (buffer, axis)</span></div>
-<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">   43</a></span><span class="keyword">using </span><a class="code hl_typedef" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a> = std::pair&lt;Buffer, int&gt;;</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">   43</a></span><span class="keyword">using </span><a class="code hl_typedef" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a> = std::pair&lt;BufferVar, int&gt;;</div>
 <div class="foldopen" id="foldopen00044" data-start="{" data-end="};">
 <div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferAxisHash.html">   44</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1BufferAxisHash.html">BufferAxisHash</a> {</div>
 <div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span> <span class="keyword">public</span>:</div>
 <div class="foldopen" id="foldopen00046" data-start="{" data-end="}">
-<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferAxisHash.html#ab28a93a16fa8e3f849f47a0c43ad6282">   46</a></span>  <span class="keywordtype">size_t</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferAxisHash.html#ab28a93a16fa8e3f849f47a0c43ad6282">operator()</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</ [...]
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferAxisHash.html#ab28a93a16fa8e3f849f47a0c43ad6282">   46</a></span>  <span class="keywordtype">size_t</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferAxisHash.html#ab28a93a16fa8e3f849f47a0c43ad6282">operator()</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</ [...]
 <div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    <span class="keywordtype">size_t</span> <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">h1</a>(ffi::ObjectPtrHash()(<a class="code hl_class" href="classtvm_1_1With.html">buffer_axis</a>.first));</div>
 <div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>    <span class="keywordtype">size_t</span> <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1With.html">h2</a>(std::hash&lt;int&gt;()(<a class="code hl_class" href="classtvm_1_1With.html">buffer_axis</a>.second));</div>
 <div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1With.html">h1</a> ^ (<a class="code hl_class" href="classtvm_1_1With.html">h2</a> &lt;&lt; 1);</div>
@@ -147,7 +147,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#ad8e01d1d6fe77bb27cb007cde0cb83d5">   70</a></span>  <span class="keyword">static</span> std::vector&lt;std::vector&lt;TIRVarAxis&gt;&gt; <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#ad8e01d1d6fe77bb27cb007cde0cb83d5">GetTIRVarAxisGraph</a>(<span class="keyword">const</span> <a class="code hl_class" href="cl [...]
 <div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>    <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html">BufferAxisGraphExtractor</a> <a class="code hl_class" href="classtvm_1_1With.html">extractor</a>;</div>
 <div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>    <a class="code hl_class" href="classtvm_1_1With.html">extractor</a>(<a class="code hl_class" href="classtvm_1_1With.html">prim_func</a>-&gt;body);</div>
-<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>    ffi::Map&lt;Buffer, Var&gt; <a class="code hl_class" href="classtvm_1_1With.html">inverse_buffer_map</a>;</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>    ffi::Map&lt;BufferVar, Var&gt; <a class="code hl_class" href="classtvm_1_1With.html">inverse_buffer_map</a>;</div>
 <div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code hl_class" href="classtvm_1_1With.html">pr</a> : <a class="code hl_class" href="classtvm_1_1With.html">prim_func</a>-&gt;buffer_map) {</div>
 <div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>      <a class="code hl_class" href="classtvm_1_1With.html">inverse_buffer_map</a>.Set(<a class="code hl_class" href="classtvm_1_1With.html">pr</a>.second, <a class="code hl_class" href="classtvm_1_1With.html">pr</a>.first);</div>
 <div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    }</div>
@@ -155,7 +155,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    std::unordered_set&lt;BufferAxis, BufferAxisHash&gt; <a class="code hl_class" href="classtvm_1_1With.html">visited</a>;</div>
 <div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <a class="code hl_class" href="classtvm_1_1With.html">pr</a> : <a class="code hl_class" href="classtvm_1_1With.html">prim_func</a>-&gt;buffer_map) {</div>
 <div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>      <a class="code hl_class" href="classtvm_1_1Var.html">Var</a> <a class="code hl_class" href="classtvm_1_1With.html">param</a> = <a class="code hl_class" href="classtvm_1_1With.html">pr</a>.first;</div>
-<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>      <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> buffer = <a class="code hl_class" href="classtvm_1_1With.html">pr</a>.second;</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>      <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> buffer = <a class="code hl_class" href="classtvm_1_1With.html">pr</a>.second;</div>
 <div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> <a class="code hl_class" href="classtvm_1_1With.html">i</a> = 0; <a class="code hl_class" href="classtvm_1_1With.html">i &lt; static_cast&lt;int&gt;</a>(buffer-&gt;shape.size()); <a class="code hl_class" href="classtvm_1_1With.html">i</a>++) {</div>
 <div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>        <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">extractor</a>.buffer_axis_graph_.count({buffer, i})) {</div>
 <div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>          std::vector&lt;BufferAxis&gt; <a class="code hl_class" href="classtvm_1_1With.html">buffer_axis_group</a>;</div>
@@ -180,7 +180,7 @@ $(document).ready(function() { init_codefold(0); });
 </div>
 <div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span> </div>
 <div class="foldopen" id="foldopen00104" data-start="{" data-end="}">
-<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#a39ce5890c77c364024076f6155299263">  104</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#a39ce5890c77c364024076f6155299263">DFSGraph</a>(<a class="code hl_typedef" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a> <a class="code h [...]
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#a39ce5890c77c364024076f6155299263">  104</a></span>  <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#a39ce5890c77c364024076f6155299263">DFSGraph</a>(<a class="code hl_typedef" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a> <a class="code h [...]
 <div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>                std::vector&lt;BufferAxis&gt;* <a class="code hl_class" href="classtvm_1_1With.html">buffer_axis_group</a>) {</div>
 <div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>    <span class="keywordflow">if</span> (<a class="code hl_class" href="classtvm_1_1With.html">visited</a>-&gt;count(<a class="code hl_class" href="classtvm_1_1With.html">cur</a>)) {</div>
 <div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>      <span class="keywordflow">return</span>;</div>
@@ -243,14 +243,14 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span>    }</div>
 <div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span>    arith::Analyzer analyzer;</div>
 <div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span>    <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; access_pr : buffer_access_indices_) {</div>
-<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>      Buffer buffer = access_pr.first;</div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>      BufferVar buffer = access_pr.first;</div>
 <div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>      ffi::Array&lt;PrimExpr&gt; indices = access_pr.second;</div>
 <div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; static_cast&lt;int&gt;(indices.size()); i++) {</div>
 <div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>        <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; another_access_pr : buffer_access_indices_) {</div>
 <div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>          <span class="keywordflow">if</span> (another_access_pr.first.same_as(buffer)) {</div>
 <div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>            <span class="keywordflow">continue</span>;</div>
 <div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>          }</div>
-<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span>          Buffer another_buffer = another_access_pr.first;</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span>          BufferVar another_buffer = another_access_pr.first;</div>
 <div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>          ffi::Array&lt;PrimExpr&gt; another_indices = another_access_pr.second;</div>
 <div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>          <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; static_cast&lt;int&gt;(another_indices.size()); j++) {</div>
 <div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>            <span class="keywordflow">if</span> (Match(indices[i], buffer-&gt;shape[i], another_indices[j], another_buffer-&gt;shape[j],</div>
@@ -263,7 +263,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>    }</div>
 <div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>  }</div>
 <div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span> </div>
-<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>  <span class="keywordtype">void</span> JoinBufferAxis(<a class="code hl_typedef" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a> axis1, <a class="code hl_typedef" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a> axis2) {</div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>  <span class="keywordtype">void</span> JoinBufferAxis(<a class="code hl_typedef" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a> axis1, <a class="code hl_typedef" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a> axis2) {</div>
 <div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>    <span class="keywordflow">if</span> (!buffer_axis_graph_.count(axis1)) {</div>
 <div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>      buffer_axis_graph_[axis1] = {};</div>
 <div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>    }</div>
@@ -274,7 +274,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>    buffer_axis_graph_[axis2].push_back(axis1);</div>
 <div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>  }</div>
 <div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span> </div>
-<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>  std::vector&lt;std::pair&lt;Buffer, ffi::Array&lt;PrimExpr&gt;&gt;&gt; buffer_access_indices_;</div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>  std::vector&lt;std::pair&lt;BufferVar, ffi::Array&lt;PrimExpr&gt;&gt;&gt; buffer_access_indices_;</div>
 <div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span>  std::unordered_map&lt;BufferAxis, std::vector&lt;BufferAxis&gt;, BufferAxisHash&gt; buffer_axis_graph_;</div>
 <div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>  ffi::Map&lt;Var, Range&gt; iter_var_range_;</div>
 <div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>  std::string func_name;</div>
@@ -543,8 +543,8 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferAxisHash_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferAxisHash.html">tvm::tirx::BufferAxisHash</a></div><div class="ttdef"><b>Definition</b> axis_group_graph.h:44</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferAxisHash_html_ab28a93a16fa8e3f849f47a0c43ad6282"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferAxisHash.html#ab28a93a16fa8e3f849f47a0c43ad6282">tvm::tirx::BufferAxisHash::operator()</a></div><div class="ttdeci">size_t operator()(const BufferAxis &amp;buffer_axis) const</div><div class="ttdef"><b>Definition</b> axis_group_graph.h:46</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1BufferStoreNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferStoreNode.html">tvm::tirx::BufferStoreNode</a></div><div class="ttdoc">Store value to the high dimension buffer.</div><div class="ttdef"><b>Definition</b> stmt.h:202</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></div><div class="ttdoc">Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types,...</div><div class="ttdef"><b>Definition</b> buffer.h:166</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1PrimFunc_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1PrimFunc.html">tvm::tirx::PrimFunc</a></div><div class="ttdoc">Managed reference to PrimFuncNode.</div><div class="ttdef"><b>Definition</b> function.h:154</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_1PrimFunc_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1PrimFunc.html">tvm::tirx::PrimFunc</a></div><div class="ttdoc">Managed reference to PrimFuncNode.</div><div class="ttdef"><b>Definition</b> function.h:155</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1StmtExprVisitor_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1StmtExprVisitor.html">tvm::tirx::StmtExprVisitor</a></div><div class="ttdoc">Visitor that recursively visit stmts and exprs on them.</div><div class="ttdef"><b>Definition</b> stmt_functor.h:334</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1StmtExprVisitor_html_a29c23694e246689945ee3170af74c399"><div class="ttname"><a href="classtvm_1_1tirx_1_1StmtExprVisitor.html#a29c23694e246689945ee3170af74c399">tvm::tirx::StmtExprVisitor::VisitExpr_</a></div><div class="ttdeci">void VisitExpr_(const BufferLoadNode *op) override</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1StmtVisitor_html_a309955933b57ef90fb97f7a18b568626"><div class="ttname"><a href="classtvm_1_1tirx_1_1StmtVisitor.html#a309955933b57ef90fb97f7a18b568626">tvm::tirx::StmtVisitor::VisitStmt_</a></div><div class="ttdeci">void VisitStmt_(const BindNode *op) override</div></div>
@@ -552,10 +552,10 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="anamespacetvm_1_1arith_html_ab7ad55d05b86df372db7e2662cfa0e22"><div class="ttname"><a href="namespacetvm_1_1arith.html#ab7ad55d05b86df372db7e2662cfa0e22">tvm::arith::AsIntSet</a></div><div class="ttdeci">ffi::Map&lt; Var, arith::IntSet &gt; AsIntSet(const ffi::Map&lt; Var, Range &gt; &amp;var_dom)</div><div class="ttdoc">Converts the Ranges to IntSets.</div></div>
 <div class="ttc" id="anamespacetvm_1_1arith_html_afbc2d38e3e689108a509990debf1415a"><div class="ttname"><a href="namespacetvm_1_1arith.html#afbc2d38e3e689108a509990debf1415a">tvm::arith::EvalSet</a></div><div class="ttdeci">IntSet EvalSet(PrimExpr e, const ffi::Map&lt; IterVar, IntSet &gt; &amp;dom_map)</div><div class="ttdoc">Find an symbolic integer set that contains all possible values of e given the domain of each iteratio...</div></div>
 <div class="ttc" id="anamespacetvm_1_1te_html_a054fef7460475c6d4adb0c845648bcd7"><div class="ttname"><a href="namespacetvm_1_1te.html#a054fef7460475c6d4adb0c845648bcd7">tvm::te::var</a></div><div class="ttdeci">PrimVar var(std::string name_hint, PrimType t=PrimType::Int(32))</div><div class="ttdoc">Construct a new Var expression.</div></div>
-<div class="ttc" id="anamespacetvm_1_1tirx_html_a176fc8a18c3ffce5a6c69e15ac53165f"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">tvm::tirx::BufferAxis</a></div><div class="ttdeci">std::pair&lt; Buffer, int &gt; BufferAxis</div><div class="ttdef"><b>Definition</b> axis_group_graph.h:43</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_a6afba4ff0c281c4916330c3b0e2e6ad3"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">tvm::tirx::Var</a></div><div class="ttdeci">tvm::Var Var</div><div class="ttdef"><b>Definition</b> var.h:38</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_a9688bfdd5cc9741579c3d6cb2fe60fb5"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a9688bfdd5cc9741579c3d6cb2fe60fb5">tvm::tirx::GetShardingVarFromIndex</a></div><div class="ttdeci">Var GetShardingVarFromIndex(PrimExpr index, ffi::Map&lt; Var, Range &gt; var_range, const arith::Analyzer &amp;analyzer)</div><div class="ttdoc">Suppose we want to shard a buffer along a specific dimension, we need to know how to rewrite the acce...</div></div>
 <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:266</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>
diff --git a/docs/reference/api/doxygen/bound_8h.html b/docs/reference/api/doxygen/bound_8h.html
index 62069cee8d3..ec82d853b4f 100644
--- a/docs/reference/api/doxygen/bound_8h.html
+++ b/docs/reference/api/doxygen/bound_8h.html
@@ -117,9 +117,9 @@ Functions</h2></td></tr>
 <tr class="memitem:a3658d391f2333f405abdd54a9f174c9f" id="r_a3658d391f2333f405abdd54a9f174c9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1arith_1_1IntSet.html">IntSet</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1arith.html#a3658d391f2333f405abdd54a9f174c9f">tvm::arith::DeduceBound</a> (<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="el" href="classtvm_1_1With.html">v</a>, <a class= [...]
 <tr class="memdesc:a3658d391f2333f405abdd54a9f174c9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as DeduceBound with unordered_map signature.  <br /></td></tr>
 <tr class="separator:a3658d391f2333f405abdd54a9f174c9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af76371d1dc19c9f074f626939f103ed3" id="r_af76371d1dc19c9f074f626939f103ed3"><td class="memItemLeft" align="right" valign="top">Region&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1arith.html#af76371d1dc19c9f074f626939f103ed3">tvm::arith::DomainTouched</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a> &amp;body, <a class="el" href="classtvm_1_1With.html">const</a [...]
-<tr class="memdesc:af76371d1dc19c9f074f626939f103ed3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Infer a regular domain that covers all the calls or provides within the given statement.  <br /></td></tr>
-<tr class="separator:af76371d1dc19c9f074f626939f103ed3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af9aba426afff3f31a93c8dde9e846738" id="r_af9aba426afff3f31a93c8dde9e846738"><td class="memItemLeft" align="right" valign="top">Region&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1arith.html#af9aba426afff3f31a93c8dde9e846738">tvm::arith::DomainTouched</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a> &amp;body, <a class="el" href="classtvm_1_1With.html">const</a [...]
+<tr class="memdesc:af9aba426afff3f31a93c8dde9e846738"><td class="mdescLeft">&#160;</td><td class="mdescRight">Infer a regular domain that covers all the calls or provides within the given statement.  <br /></td></tr>
+<tr class="separator:af9aba426afff3f31a93c8dde9e846738"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Bound deducers. </p>
diff --git a/docs/reference/api/doxygen/bound_8h_source.html b/docs/reference/api/doxygen/bound_8h_source.html
index 12fbbaae663..ef96c1134e0 100644
--- a/docs/reference/api/doxygen/bound_8h_source.html
+++ b/docs/reference/api/doxygen/bound_8h_source.html
@@ -123,7 +123,7 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>                   <span class="keyword">const</span> std::unordered_map&lt;const VarNode*, IntSet&gt;&amp; <a class="code hl_class" href="classtvm_1_1With.html">hint_map</a>,</div>
 <div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>                   <span class="keyword">const</span> std::unordered_map&lt;const VarNode*, IntSet&gt;&amp; <a class="code hl_class" href="classtvm_1_1With.html">relax_map</a>);</div>
 <div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span> </div>
-<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="namespacetvm_1_1arith.html#af76371d1dc19c9f074f626939f103ed3">   80</a></span>Region <a class="code hl_function" href="namespacetvm_1_1arith.html#af76371d1dc19c9f074f626939f103ed3">DomainTouched</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a>&amp; body, <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx [...]
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="namespacetvm_1_1arith.html#af9aba426afff3f31a93c8dde9e846738">   80</a></span>Region <a class="code hl_function" href="namespacetvm_1_1arith.html#af9aba426afff3f31a93c8dde9e846738">DomainTouched</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a>&amp; body, <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx [...]
 <div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>                     <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">consider_stores</a>);</div>
 <div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span> </div>
 <div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>}  <span class="comment">// namespace arith</span></div>
@@ -132,12 +132,12 @@ $(document).ready(function() { init_codefold(0); });
 <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:354</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:67</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></div><div class="ttdoc">Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types,...</div><div class="ttdef"><b>Definition</b> buffer.h:166</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:65</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="anamespacetvm_1_1arith_html_a7959263b3cd452d41fd114c763ba16ca"><div class="ttname"><a href="namespacetvm_1_1arith.html#a7959263b3cd452d41fd114c763ba16ca">tvm::arith::DeduceBound</a></div><div class="ttdeci">IntSet DeduceBound(PrimExpr v, PrimExpr cond, const ffi::Map&lt; Var, IntSet &gt; &amp;hint_map, const ffi::Map&lt; Var, IntSet &gt; &amp;relax_map)</div><div class="ttdoc">Deduce the bound of the target variable in a expression, give the domain of each variables. [...]
-<div class="ttc" id="anamespacetvm_1_1arith_html_af76371d1dc19c9f074f626939f103ed3"><div class="ttname"><a href="namespacetvm_1_1arith.html#af76371d1dc19c9f074f626939f103ed3">tvm::arith::DomainTouched</a></div><div class="ttdeci">Region DomainTouched(const Stmt &amp;body, const tirx::Buffer &amp;buffer, bool consider_loads, bool consider_stores)</div><div class="ttdoc">Infer a regular domain that covers all the calls or provides within the given statement.</div></div>
+<div class="ttc" id="anamespacetvm_1_1arith_html_af9aba426afff3f31a93c8dde9e846738"><div class="ttname"><a href="namespacetvm_1_1arith.html#af9aba426afff3f31a93c8dde9e846738">tvm::arith::DomainTouched</a></div><div class="ttdeci">Region DomainTouched(const Stmt &amp;body, const tirx::BufferVar &amp;buffer, bool consider_loads, bool consider_stores)</div><div class="ttdoc">Infer a regular domain that covers all the calls or provides within the given statement.</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_a6afba4ff0c281c4916330c3b0e2e6ad3"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">tvm::tirx::Var</a></div><div class="ttdeci">tvm::Var Var</div><div class="ttdef"><b>Definition</b> var.h:38</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_aca243675bd16309674c38113af6c7671"><div class="ttname"><a href="namespacetvm_1_1tirx.html#aca243675bd16309674c38113af6c7671">tvm::tirx::VarNode</a></div><div class="ttdeci">tvm::VarNode VarNode</div><div class="ttdef"><b>Definition</b> var.h:37</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_ad4b2c09cd79673b502959a7d4e997675"><div class="ttname"><a href="namespacetvm_1_1tirx.html#ad4b2c09cd79673b502959a7d4e997675">tvm::tirx::Region</a></div><div class="ttdeci">ffi::Array&lt; Range &gt; Region</div><div class="ttdef"><b>Definition</b> var.h:71</div></div>
diff --git a/docs/reference/api/doxygen/buffer_8h.html b/docs/reference/api/doxygen/buffer_8h.html
index 5f40ee708aa..fad0c8013c2 100644
--- a/docs/reference/api/doxygen/buffer_8h.html
+++ b/docs/reference/api/doxygen/buffer_8h.html
@@ -106,11 +106,14 @@ This graph shows which files directly or indirectly include this file:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Node to represent a buffer.  <a href="classtvm_1_1tirx_1_1BufferNode.html#details">More...</a><br /></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferTypeNode.html">tvm::tirx::BufferTypeNode</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structural type of a TIRx buffer variable.  <a href="classtvm_1_1tirx_1_1BufferTypeNode.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types,...">Buffer</a> is a symbolic n-darray structure. It is a composition of primitive symbolic types, used to specify the memory layout of the Tensor used in program input.  <a href="classtvm_1_1tirx_1_1Buffer.html#details">More...</a><br /></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferType.html">tvm::tirx::BufferType</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferTypeNode.html" title="Structural type of a TIRx buffer variable.">BufferTypeNode</a>.  <a href="classtvm_1_1tirx_1_1BufferType.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checked zero-state view over an ordinary <a class="el" href="classtvm_1_1VarNode.html" title="A local variable in the IR.">VarNode</a> with <a class="el" href="classtvm_1_1tirx_1_1BufferType.html" title="Managed reference to BufferTypeNode.">BufferType</a>.  <a href="classtvm_1_1tirx_1_1BufferVar.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1DataProducerNode.html">tvm::tirx::DataProducerNode</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base node for data producers.  <a href="classtvm_1_1tirx_1_1DataProducerNode.html#details">More...</a><br /></td></tr>
@@ -118,6 +121,8 @@ Classes</h2></td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1DataProducer.html">tvm::tirx::DataProducer</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Managed reference to <a class="el" href="classtvm_1_1tirx_1_1DataProducerNode.html" title="Base node for data producers.">DataProducerNode</a>.  <a href="classtvm_1_1tirx_1_1DataProducer.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html">tvm::ffi::TypeTraits&lt; tirx::BufferVar &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
 Namespaces</h2></td></tr>
@@ -126,6 +131,8 @@ Namespaces</h2></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:namespacetvm_1_1tirx" id="r_namespacetvm_1_1tirx"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html">tvm::tirx</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespacetvm_1_1ffi" id="r_namespacetvm_1_1ffi"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1ffi.html">tvm::ffi</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
 Macros</h2></td></tr>
@@ -139,12 +146,23 @@ Functions</h2></td></tr>
 <tr class="separator:a323bfac5faa4e657ed340f283c45dc99"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a897e6e061d17ea8adb3408eb34e7b1ae" id="r_a897e6e061d17ea8adb3408eb34e7b1ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">DLDataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#a897e6e061d17ea8adb3408eb34e7b1ae">tvm::tirx::DefaultIndexType</a> ()</td></tr>
 <tr class="separator:a897e6e061d17ea8adb3408eb34e7b1ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a096c4422bcf6cd75ff067802b15c9efa" id="r_a096c4422bcf6cd75ff067802b15c9efa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#a096c4422bcf6cd75ff067802b15c9efa">tvm::tirx::decl_buffer</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; shape, <a class="el" href="classtvm_1_1Pri [...]
-<tr class="memdesc:a096c4422bcf6cd75ff067802b15c9efa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a new buffer given shape, and dtype.  <br /></td></tr>
-<tr class="separator:a096c4422bcf6cd75ff067802b15c9efa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac51c14982b8e747e6ef51d4219297d22" id="r_ac51c14982b8e747e6ef51d4219297d22"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tirx::Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#ac51c14982b8e747e6ef51d4219297d22">tvm::tirx::BufferWithOffsetAlignment</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; shape, <a class="el" h [...]
-<tr class="memdesc:ac51c14982b8e747e6ef51d4219297d22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates TIR <a class="el" href="classtvm_1_1tirx_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types,...">Buffer</a> for provided parameters.  <br /></td></tr>
-<tr class="separator:ac51c14982b8e747e6ef51d4219297d22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a971382deb98a5e016fb5d60261632821" id="r_a971382deb98a5e016fb5d60261632821"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#a971382deb98a5e016fb5d60261632821">tvm::tirx::operator==</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> &amp;lhs, <a [...]
+<tr class="separator:a971382deb98a5e016fb5d60261632821"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac2f1aac973019bc4c242932bee5e8711" id="r_ac2f1aac973019bc4c242932bee5e8711"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#ac2f1aac973019bc4c242932bee5e8711">tvm::tirx::operator!=</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> &amp;lhs, <a [...]
+<tr class="separator:ac2f1aac973019bc4c242932bee5e8711"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa84515799e4ff11533430fdf4648e483" id="r_aa84515799e4ff11533430fdf4648e483"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#aa84515799e4ff11533430fdf4648e483">tvm::tirx::GetBufferVar</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="namespacetvm_1_1tirx.html#aca243675bd16309 [...]
+<tr class="memdesc:aa84515799e4ff11533430fdf4648e483"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recover a checked buffer view from an ordinary <a class="el" href="classtvm_1_1VarNode.html" title="A local variable in the IR.">VarNode</a> pointer.  <br /></td></tr>
+<tr class="separator:aa84515799e4ff11533430fdf4648e483"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acfe288eb20faba7ebe5c52ebfacc2dcc" id="r_acfe288eb20faba7ebe5c52ebfacc2dcc"><td class="memItemLeft" align="right" valign="top">ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferTypeNode.html">BufferTypeNode</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#acfe288eb20faba7ebe5c52ebfacc2dcc">tvm::tirx::CopyBufferType</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classt [...]
+<tr class="separator:acfe288eb20faba7ebe5c52ebfacc2dcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad85ae1424c8bc271857e453200420551" id="r_ad85ae1424c8bc271857e453200420551"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#ad85ae1424c8bc271857e453200420551">tvm::tirx::RebuildBufferVar</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">Bu [...]
+<tr class="separator:ad85ae1424c8bc271857e453200420551"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e510ab31d50db329c9d7b29bee344ac" id="r_a0e510ab31d50db329c9d7b29bee344ac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#a0e510ab31d50db329c9d7b29bee344ac">tvm::tirx::decl_buffer</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; shape, <a class="el" href="classtvm_ [...]
+<tr class="memdesc:a0e510ab31d50db329c9d7b29bee344ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a new buffer given shape, and dtype.  <br /></td></tr>
+<tr class="separator:a0e510ab31d50db329c9d7b29bee344ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae89ba2a80e36178ee1a50213198baed1" id="r_ae89ba2a80e36178ee1a50213198baed1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tirx::BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetvm_1_1tirx.html#ae89ba2a80e36178ee1a50213198baed1">tvm::tirx::BufferWithOffsetAlignment</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; shape, <a class= [...]
+<tr class="memdesc:ae89ba2a80e36178ee1a50213198baed1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a TIR buffer for the provided parameters.  <br /></td></tr>
+<tr class="separator:ae89ba2a80e36178ee1a50213198baed1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Symbolic n-dimensional array, to represent a memory buffer. </p>
diff --git a/docs/reference/api/doxygen/buffer_8h_source.html b/docs/reference/api/doxygen/buffer_8h_source.html
index 31cd086553e..4d17c894eef 100644
--- a/docs/reference/api/doxygen/buffer_8h_source.html
+++ b/docs/reference/api/doxygen/buffer_8h_source.html
@@ -142,137 +142,246 @@ $(document).ready(function() { init_codefold(0); });
 <div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span><span class="comment">// forward declare Stmt</span></div>
 <div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span><span class="keyword">class </span>Stmt;</div>
 <div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span> </div>
-<div class="foldopen" id="foldopen00064" data-start="{" data-end="};">
-<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html">   64</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a> : <span class="keyword">public</span> ffi::Object {</div>
-<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>  <span class="comment">// Data fields.</span></div>
-<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a032fea6c6a5836c9393b5cf5d3f7ef66">   71</a></span>  <a class="code hl_class" href="classtvm_1_1Var.html">Var</a> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a032fea6c6a5836c9393b5cf5d3f7ef66">data</a>;</div>
-<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a3910ab108252249d571a46a26ab0a7f5">   73</a></span>  <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a3910ab108252249d571a46a26ab0a7f5">dtype</a> = <a class="code hl_function" href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">PrimType::Void</a>();</div>
-<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a20430f1e1a8c06737091343dc062eb2a">   80</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a20430f1e1a8c06737091343dc062eb2a">shape</a>;</div>
-<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#adaeae9092c6c56b315c3c2a86fd52466">   85</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#adaeae9092c6c56b315c3c2a86fd52466">strides</a>;</div>
-<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#aaaa0ff22d869d8a21a8e1c8354ae7aa7">   87</a></span>  <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#aaaa0ff22d869d8a21a8e1c8354ae7aa7">elem_offset</a>;</div>
-<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>  <span class="comment">// Meta data</span></div>
-<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a7b201f0b9f409b371a22b527232911af">   90</a></span>  ffi::String <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a7b201f0b9f409b371a22b527232911af">name</a>;</div>
-<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#ae7121e2f1e343890be8e82291f21662d">   92</a></span>  <span class="keywordtype">int</span> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#ae7121e2f1e343890be8e82291f21662d">data_alignment</a>;</div>
-<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a9705c9d21d8a2f844885cc0ced1d8f7a">   97</a></span>  <span class="keywordtype">int</span> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a9705c9d21d8a2f844885cc0ced1d8f7a">offset_factor</a>;</div>
-<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a10bddc40d3a75319ea9958ecf7002ee8">  102</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_1tirx_1_1BufferNode.html#a10bddc40d3a75319ea9958ecf7002ee8">span</a>;</div>
-<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span> </div>
-<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#ab3ee99bb7ca58f97cc4d01f18f9f8b67">  105</a></span>  ffi::Optional&lt;Layout&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#ab3ee99bb7ca58f97cc4d01f18f9f8b67">layout</a>;</div>
+<div class="foldopen" id="foldopen00071" data-start="{" data-end="};">
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html">   71</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1BufferTypeNode.html">BufferTypeNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1TypeNode.html">TypeNode</a> {</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#adb02f52b707f7177e0469b0499b6bd13">   74</a></span>  <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#adb02f52b707f7177e0469b0499b6bd13">dtype</a> = <a class="code hl_function" href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">PrimType::Void</a> [...]
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a8698677627e72d7a5fc2407c6f6c2d25">   76</a></span>  ffi::String <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a8698677627e72d7a5fc2407c6f6c2d25">storage_scope</a>;</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a916a2492185d07cda803092b469e85de">   83</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a916a2492185d07cda803092b469e85de">shape</a>;</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#af94cd63f7a1aabe501b72d4d8ed25ed3">   88</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#af94cd63f7a1aabe501b72d4d8ed25ed3">strides</a>;</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a839664705b12711c95beb9b01385c3e2">   90</a></span>  <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a839664705b12711c95beb9b01385c3e2">elem_offset</a>;</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#af4a75b0edf108fb86728b059ffe0bfda">   92</a></span>  <span class="keywordtype">int</span> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#af4a75b0edf108fb86728b059ffe0bfda">data_alignment</a>;</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae5c53bffd98739b2f0a000c2736f8cd7">   97</a></span>  <span class="keywordtype">int</span> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae5c53bffd98739b2f0a000c2736f8cd7">offset_factor</a>;</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a772acc44b15407d587ded9358ba66e13">   99</a></span>  ffi::Optional&lt;Layout&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a772acc44b15407d587ded9358ba66e13">layout</a>;</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a6b8487ac35e9242f460151876c62d4cb">  105</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a6b8487ac35e9242f460151876c62d4cb">allocated_addr</a>;</div>
 <div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span> </div>
-<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#aab0218669e142917afae65e78f480d49">  111</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#aab0218669e142917afae65e78f480d49">allocated_addr</a>;</div>
-<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span> </div>
-<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a01dcbc0de1df11017b80e6aebe2b7afc">  114</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferNode.html#a01dcbc0de1df11017b80e6aebe2b7afc">BufferNode</a>() {}</div>
-<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span> </div>
-<div class="foldopen" id="foldopen00116" data-start="{" data-end="}">
-<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a562988870d799ebc2420207e87a581af">  116</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferNode.html#a562988870d799ebc2420207e87a581af">RegisterReflection</a>() {</div>
-<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</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="l00118" name="l00118"></a><span class="lineno">  118</span>    refl::ObjectDef&lt;BufferNode&gt;()</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae49f0a9c38574ea8dc3cfcc819c81377">  108</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae49f0a9c38574ea8dc3cfcc819c81377">BufferTypeNode</a>() {}</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span> </div>
+<div class="foldopen" id="foldopen00110" data-start="{" data-end="}">
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a703d73522b091e98a3a30fcc0eccda66">  110</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a703d73522b091e98a3a30fcc0eccda66">RegisterReflection</a>() {</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</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="l00112" name="l00112"></a><span class="lineno">  112</span>    refl::ObjectDef&lt;BufferTypeNode&gt;()</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>        .def_ro(<span class="stringliteral">&quot;dtype&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#adb02f52b707f7177e0469b0499b6bd13">BufferTypeNode::dtype</a>)</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>        .def_ro(<span class="stringliteral">&quot;storage_scope&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a8698677627e72d7a5fc2407c6f6c2d25">BufferTypeNode::storage_scope</a>)</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span>        <span class="comment">// TODO(tqchen): use SEqHashDefNonRecursive after the next pypi tvm-ffi release</span></div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>        .def_ro(<span class="stringliteral">&quot;shape&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a916a2492185d07cda803092b469e85de">BufferTypeNode::shape</a>, refl::AttachFieldFlag::SEqHashDefRecursive())</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>        <span class="comment">// TODO(tqchen): use SEqHashDefNonRecursive after the next pypi tvm-ffi release</span></div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>        .def_ro(<span class="stringliteral">&quot;strides&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#af94cd63f7a1aabe501b72d4d8ed25ed3">BufferTypeNode::strides</a>, refl::AttachFieldFlag::SEqHashDefRecursive())</div>
 <div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span>        <span class="comment">// TODO(tqchen): use SEqHashDefNonRecursive after the next pypi tvm-ffi release</span></div>
-<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>        .def_ro(<span class="stringliteral">&quot;data&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a032fea6c6a5836c9393b5cf5d3f7ef66">BufferNode::data</a>, refl::AttachFieldFlag::SEqHashDefRecursive())</div>
-<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>        .def_ro(<span class="stringliteral">&quot;dtype&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a3910ab108252249d571a46a26ab0a7f5">BufferNode::dtype</a>)</div>
-<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>        <span class="comment">// TODO(tqchen): use SEqHashDefNonRecursive after the next pypi tvm-ffi release</span></div>
-<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span>        .def_ro(<span class="stringliteral">&quot;shape&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a20430f1e1a8c06737091343dc062eb2a">BufferNode::shape</a>, refl::AttachFieldFlag::SEqHashDefRecursive())</div>
-<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>        <span class="comment">// TODO(tqchen): use SEqHashDefNonRecursive after the next pypi tvm-ffi release</span></div>
-<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>        .def_ro(<span class="stringliteral">&quot;strides&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#adaeae9092c6c56b315c3c2a86fd52466">BufferNode::strides</a>, refl::AttachFieldFlag::SEqHashDefRecursive())</div>
-<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>        <span class="comment">// TODO(tqchen): use SEqHashDefNonRecursive after the next pypi tvm-ffi release</span></div>
-<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>        .def_ro(<span class="stringliteral">&quot;elem_offset&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#aaaa0ff22d869d8a21a8e1c8354ae7aa7">BufferNode::elem_offset</a>,</div>
-<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>                refl::AttachFieldFlag::SEqHashDefRecursive())</div>
-<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>        .def_ro(<span class="stringliteral">&quot;name&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a7b201f0b9f409b371a22b527232911af">BufferNode::name</a>, refl::AttachFieldFlag::SEqHashIgnore())</div>
-<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>        .def_ro(<span class="stringliteral">&quot;data_alignment&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#ae7121e2f1e343890be8e82291f21662d">BufferNode::data_alignment</a>)</div>
-<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>        .def_ro(<span class="stringliteral">&quot;offset_factor&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a9705c9d21d8a2f844885cc0ced1d8f7a">BufferNode::offset_factor</a>)</div>
-<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>        .def_ro(<span class="stringliteral">&quot;span&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a10bddc40d3a75319ea9958ecf7002ee8">BufferNode::span</a>, refl::AttachFieldFlag::SEqHashIgnore())</div>
-<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span>        .def_ro(<span class="stringliteral">&quot;layout&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#ab3ee99bb7ca58f97cc4d01f18f9f8b67">BufferNode::layout</a>)</div>
-<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span>        .def_ro(<span class="stringliteral">&quot;allocated_addr&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#aab0218669e142917afae65e78f480d49">BufferNode::allocated_addr</a>);</div>
-<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span>  }</div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>        .def_ro(<span class="stringliteral">&quot;elem_offset&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a839664705b12711c95beb9b01385c3e2">BufferTypeNode::elem_offset</a>,</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>                refl::AttachFieldFlag::SEqHashDefRecursive())</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>        .def_ro(<span class="stringliteral">&quot;data_alignment&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#af4a75b0edf108fb86728b059ffe0bfda">BufferTypeNode::data_alignment</a>)</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span>        .def_ro(<span class="stringliteral">&quot;offset_factor&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae5c53bffd98739b2f0a000c2736f8cd7">BufferTypeNode::offset_factor</a>)</div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>        .def_ro(<span class="stringliteral">&quot;layout&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a772acc44b15407d587ded9358ba66e13">BufferTypeNode::layout</a>)</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>        .def_ro(<span class="stringliteral">&quot;allocated_addr&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a6b8487ac35e9242f460151876c62d4cb">BufferTypeNode::allocated_addr</a>);</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>  }</div>
 </div>
-<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</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_1tirx_1_1BufferNode.html#a857c4b8359cccaa72cd9b609b2f5ba66">  138</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferNode.html#a857c4b8359cccaa72cd9b609b2f5ba66">DefaultIndexType</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>    <span class="keywordflow">return</span> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a20430f1e1a8c06737091343dc062eb2a">shape</a>.size() != 0 ? <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferNode.html#a20430f1e1a8c06737091343dc062eb2a">shape</a>[0].ty()-&gt;dtype : <a class="code hl_function" href="namespacetvm_1_1tirx.html#a897e6e061d17ea8adb3408eb34e7b1ae">tvm:: [...]
-<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span>  }</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span> </div>
+<div class="foldopen" id="foldopen00129" data-start="{" data-end="}">
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ad3ba0424e0c2ea8b457466bab51fbb51">  129</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">DLDataType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ad3ba0424e0c2ea8b457466bab51fbb51">DefaultIndexType</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>    <span class="keywordflow">return</span> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a916a2492185d07cda803092b469e85de">shape</a>.size() != 0 ? <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a916a2492185d07cda803092b469e85de">shape</a>[0].ty()-&gt;dtype : <a class="code hl_function" href="namespacetvm_1_1tirx.html#a897e6e061d17ea8adb3408eb34e7b1a [...]
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>  }</div>
 </div>
-<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span> </div>
-<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a08acc657da4cfc79504906280cc34464">  143</a></span>  <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferNode.html#a08acc657da4cfc79504906280cc34464">ElementType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="clas [...]
-<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span> </div>
-<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#ab26e9f26ff748fd4110e67ba388074c8">  154</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferNode.html#ab26e9f26ff748fd4110e67ba388074c8">ElemOffset</a>(ffi::Array&lt;PrimExpr&gt; index, <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">inner</a> = <span class="keyword">fa [...]
-<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span> </div>
-<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#a98b13ae05f6f78f720310a6ff9e22701">  156</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_1tirx_1_1BufferNode.html#a98b13ae05f6f78f720310a6ff9e22701">_type_s_eq_hash_kind</a> = <a class="code hl_class" h [...]
-<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span> </div>
-<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferNode.html#ac4fb30a74ca831826e7b40339ced1bb8">  158</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferNode.html#ac4fb30a74ca831826e7b40339ced1bb8">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;tirx.Buffer&quot;</span>, <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a>, ffi::Object);</div>
-<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>};</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a10ef36de199e4c51a14635da470b50de">  134</a></span>  <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a10ef36de199e4c51a14635da470b50de">ElementType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" hr [...]
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#aebdbc9f11cc6f1e4f32330677116c126">  137</a></span>  <a class="code hl_class" href="classtvm_1_1PointerType.html">PointerType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferTypeNode.html#aebdbc9f11cc6f1e4f32330677116c126">DataPointerType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_cl [...]
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span> </div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a9f4e0e0abdc0a64641f78550ce708692">  148</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferTypeNode.html#a9f4e0e0abdc0a64641f78550ce708692">ElemOffset</a>(ffi::Array&lt;PrimExpr&gt; index, <span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">inner</a> = <span class="key [...]
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span> </div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae09b833e4618531ffb9e4e190daddb6d">  150</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae09b833e4618531ffb9e4e190daddb6d">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;tirx.BufferType&quot;</span>, <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferTypeNode.html">BufferTypeNode</a>, <a [...]
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span>};</div>
 </div>
-<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span> </div>
-<div class="foldopen" id="foldopen00166" data-start="{" data-end="};">
-<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html">  166</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> : <span class="keyword">public</span> ffi::ObjectRef {</div>
-<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>  <span class="comment">// User can specify data_alignment and offset_factor to be 0</span></div>
-<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>  <span class="comment">// A default value will be picked.</span></div>
-<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a94d21cc75c179e954a4488ef3fa4fff2">  170</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a94d21cc75c179e954a4488ef3fa4fff2">Buffer</a>(<a class="code hl_class" href="classtvm_1_1Var.html">Var</a> data, <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</ [...]
-<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>                 <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> elem_offset, ffi::String name, <span class="keywordtype">int</span> data_alignment, <span class="keywordtype">int</span> offset_factor,</div>
-<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>                 <a class="code hl_class" href="classtvm_1_1Span.html">Span</a> span = <a class="code hl_class" href="classtvm_1_1Span.html">Span</a>(), ffi::Optional&lt;Layout&gt; layout = std::nullopt,</div>
-<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span>                 ffi::Array&lt;PrimExpr&gt; allocated_addr = {});</div>
-<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span> </div>
-<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#abaa7c4b6733b7abf7d7d14fcc67ff1aa">  180</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#abaa7c4b6733b7abf7d7d14fcc67ff1aa">MakeStrideView</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a4bbae212b395e2b129cdbe70c4c30bef">  189</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a4bbae212b395e2b129cdbe70c4c30bef">MakeSlice</a>(ffi::Array&lt;PrimExpr&gt; <a class="code hl_class" href= [...]
-<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#ae5d66996c62b0daac2053cfa34aecdb0">  198</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#ae5d66996c62b0daac2053cfa34aecdb0">access_ptr</a>(<span class="keywordtype">int</span> <a class="code hl_class" href=" [...]
-<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>                          <span class="keywordtype">int</span> <a class="code hl_class" href="classtvm_1_1With.html">content_lanes</a> = 1, <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> offset = <a class="code hl_function" href="classtvm_1_1IntImm.html#acdcc68acec1b9fda51dfbf76b4836ef3">IntImm::Int32</a>(0),</div>
-<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>                          ffi::Optional&lt;PrimExpr&gt; <a class="code hl_class" href="classtvm_1_1With.html">input_extent</a> = std::nullopt) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a013b36b5933d2e79ec5921e716d528c8">  208</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a013b36b5933d2e79ec5921e716d528c8">vload</a>(ffi::Array&lt;PrimExpr&gt; <a class="code hl_class" href="classtv [...]
-<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>                         ffi::Optional&lt;PrimExpr&gt; predicate = std::nullopt) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#afd5d83b90aeb6001981b2f613c9fa0ba">  217</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#afd5d83b90aeb6001981b2f613c9fa0ba">vstore</a>(ffi::Array&lt;PrimExpr&gt; <a class="code hl_class" href="classt [...]
-<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span>                      ffi::Optional&lt;PrimExpr&gt; predicate = std::nullopt) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span> </div>
-<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#af0f9adc1cbc7fdd43b43a4be5fcd4b22">  223</a></span>  <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#af0f9adc1cbc7fdd43b43a4be5fcd4b22">GetFlattenedBuffer</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span> </div>
-<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a3bbcdf0b3a464823aa243f677565416c">  231</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a3bbcdf0b3a464823aa243f677565416c">OffsetOf</a>(ffi::Array&lt;PrimExpr&gt; index) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span> </div>
-<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a884e5430833d294a346ef49364b46a0b">  238</a></span>  <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a884e5430833d294a346ef49364b46a0b">OffsetOf_p</a>(<span class="keyword">const</span> ffi::Array&lt;PrimExpr&gt;&amp; indices) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span> </div>
-<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#ae18dc68f47dfa53596cb859995381d18">  243</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> ffi::String <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#ae18dc68f47dfa53596cb859995381d18">scope</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span> </div>
-<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a82a7e3d50127e401ce7e6e9962616b71">  248</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a82a7e3d50127e401ce7e6e9962616b71">with_allocated_addr</a>(ffi::Array&lt;PrimExpr&gt; allocated_addr) <spa [...]
-<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span> </div>
-<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a93df7d8918fd7b1e88a240ac3ba9f8f3">  255</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_1tirx_1_1Buffer.html#a93df7d8918fd7b1e88a240ac3ba9f8f3">IsScalar</a>(<span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.html">all [...]
-<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span> </div>
-<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#ae5bba34a1b184da7f1fcb2431db7d033">  260</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#ae5bba34a1b184da7f1fcb2431db7d033">with_dtype</a>(<a class="code hl_class" href="classtvm_1_1PrimType.html [...]
-<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span> </div>
-<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a2cfef360f77cac96c441ca0feb33bf6f">  263</a></span>  <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a2cfef360f77cac96c441ca0feb33bf6f">ElementType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (*this)-&gt;ElementType(); }</div>
-<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  264</span> </div>
-<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a7d67b6e9d1f0d80daf49f8f2142d2354">  268</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a7d67b6e9d1f0d80daf49f8f2142d2354">with_data</a>(<a class="code hl_class" href="classtvm_1_1Var.html">Var< [...]
-<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"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#a0b99c9c08e349a23e16d4e79f86e9775">  270</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#a0b99c9c08e349a23e16d4e79f86e9775">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>, ffi::ObjectRef, <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferNode.html">Buffe [...]
-<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1Buffer.html#aca33bb24e03d62f995eefa548b6fce1e">  271</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1Buffer.html#aca33bb24e03d62f995eefa548b6fce1e">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a>);</div>
-<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span>};</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="foldopen" id="foldopen00156" data-start="{" data-end="};">
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferType.html">  156</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1BufferType.html">BufferType</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Type.html">Type</a> {</div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferType.html#a6c634e72f5dbec49ae3b8ca63c3602c9">  158</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferType.html#a6c634e72f5dbec49ae3b8ca63c3602c9">BufferType</a>(ffi::String storage_scope, <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> dtype, ffi::Array&lt;Prim [...]
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>                     ffi::Array&lt;PrimExpr&gt; strides, <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> elem_offset, <span class="keywordtype">int</span> data_alignment,</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>                     <span class="keywordtype">int</span> offset_factor, ffi::Optional&lt;Layout&gt; layout = std::nullopt,</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>                     ffi::Array&lt;PrimExpr&gt; allocated_addr = {}, <a class="code hl_class" href="classtvm_1_1Span.html">Span</a> span = <a class="code hl_class" href="classtvm_1_1Span.html">Span</a>());</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferType.html#a36fb08bd6da77e481e256d9a6c2a9c9b">  163</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferType.html#a36fb08bd6da77e481e256d9a6c2a9c9b">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1BufferType.html">BufferType</a>, <a class="code hl_class" href="classtvm_1_1Type.html">Type</a>, <a cla [...]
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span> </div>
+<div class="foldopen" id="foldopen00165" data-start="{" data-end="}">
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferType.html#a710de8e64381eef7f0e6bd1c0cb62050">  165</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferType.html#a710de8e64381eef7f0e6bd1c0cb62050">BufferType</a>(ffi::ObjectPtr&lt;BufferTypeNode&gt; <a class="code hl_class" href="classtvm_1_1With.html">n</a>) : <a class="code hl_class" href="classtvm_1_1Type.htm [...]
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>    <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_ICHECK</a>(<a class="code hl_class" href="classtvm_1_1With.html">n</a> != <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>    data_ = std::move(<a class="code hl_class" href="classtvm_1_1With.html">n</a>);</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>  }</div>
+</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>};</div>
+</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="foldopen" id="foldopen00179" data-start="{" data-end="};">
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html">  179</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1Var.html">Var</a> {</div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#aa734aee14427b0a39552035f4d478c04">  182</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_1tirx_1_1BufferVar.html#aa734aee14427b0a39552035f4d478c04">BufferVar</a>(ffi::String <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#ad39f8c [...]
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</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_1tirx_1_1BufferVar.html#ab26f945776d7d4a4f071b1c3e152e4bf">  185</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#ab26f945776d7d4a4f071b1c3e152e4bf">BufferVar</a>(<a class="code hl_class" href="classtvm_1_1Var.html">Var</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a5a71693e34d4c4ca4a3d1f4 [...]
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>    <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_ICHECK</a>(<a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#aa1f460b2002f8eaef9e86746e4375d03">get</a>() != <span class="keyword">nullptr</span> &amp;&amp; <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#aa1f460b2002f8eaef9e86746e4375d03">get</a>()-&gt;ty.as&lt;<a class="code hl_class" href="classtvm [...]
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>        &lt;&lt; <span class="stringliteral">&quot;Expected a non-null Var with BufferType&quot;</span>;</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>  }</div>
 </div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span> </div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a5a71693e34d4c4ca4a3d1f4b94b49a4c">  191</a></span>  <a class="code hl_class" href="classtvm_1_1Var.html">Var</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a5a71693e34d4c4ca4a3d1f4b94b49a4c">var</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ffi::GetRef&lt;Var&gt;(<a class="code hl_function" href="c [...]
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span> </div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a35098bcb9514367e61bd65470c3daf3d">  194</a></span>  <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferType.html">BufferType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a35098bcb9514367e61bd65470c3daf3d">type</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="c [...]
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#ad39f8ce414e817d0c19ecbd9c27b5585">  197</a></span>  <span class="keyword">const</span> ffi::String&amp; <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#ad39f8ce414e817d0c19ecbd9c27b5585">name</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.ht [...]
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a45e932c5b7c5fa2177947755032cea86">  200</a></span>  <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1Span.html">Span</a>&amp; <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a45e932c5b7c5fa2177947755032cea86">span</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code  [...]
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#af21c8c29e9c984893fd6040fec5126b4">  203</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#af21c8c29e9c984893fd6040fec5126b4">data</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span> </div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a77fcb73f7896a1a3385fea797bfc3f09">  210</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a77fcb73f7896a1a3385fea797bfc3f09">MakeStrideView</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#adfbd0e1bf38f963d33a18c01689adb4e">  219</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#adfbd0e1bf38f963d33a18c01689adb4e">MakeSlice</a>(ffi::Array&lt;PrimExpr&gt; <a class="code hl_ [...]
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a16faeb4e95c29a5ac1d36819e77455c9">  228</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1Expr.html">Expr</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a16faeb4e95c29a5ac1d36819e77455c9">access_ptr</a>(<span class="keywordtype">int</span> <a class="code hl_class"  [...]
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>                          <span class="keywordtype">int</span> <a class="code hl_class" href="classtvm_1_1With.html">content_lanes</a> = 1, <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> offset = <a class="code hl_function" href="classtvm_1_1IntImm.html#acdcc68acec1b9fda51dfbf76b4836ef3">IntImm::Int32</a>(0),</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>                          ffi::Optional&lt;PrimExpr&gt; <a class="code hl_class" href="classtvm_1_1With.html">input_extent</a> = std::nullopt) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#af26e118d45be72a1992b4ba08104b044">  238</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#af26e118d45be72a1992b4ba08104b044">vload</a>(ffi::Array&lt;PrimExpr&gt; <a class="code hl_class" href="c [...]
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span>                         ffi::Optional&lt;PrimExpr&gt; predicate = std::nullopt) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#aa0ba24f889c165411627bf3c6085138b">  247</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#aa0ba24f889c165411627bf3c6085138b">vstore</a>(ffi::Array&lt;PrimExpr&gt; <a class="code hl_class" href=" [...]
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span>                      ffi::Optional&lt;PrimExpr&gt; predicate = std::nullopt) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a7e7510862b791fc72299abca4134577b">  257</a></span>  <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a7e7510862b791fc72299abca4134577b">GetFlattenedBuffer</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span> </div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a9162b84dd02a8358756ff6bcb1b9d09d">  265</a></span>  ffi::Array&lt;PrimExpr&gt; <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a9162b84dd02a8358756ff6bcb1b9d09d">OffsetOf</a>(ffi::Array&lt;PrimExpr&gt; index) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span> </div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#ad71c4c0a4449126a9703a864dc09c156">  272</a></span>  <a class="code hl_class" href="classtvm_1_1PrimExpr.html">PrimExpr</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#ad71c4c0a4449126a9703a864dc09c156">OffsetOf_p</a>(<span class="keyword">const</span> ffi::Array&lt;PrimExpr&gt;&amp; indices) <span class="keyword">const</span>;</div>
 <div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span> </div>
-<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#a096c4422bcf6cd75ff067802b15c9efa">  284</a></span><a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> <a class="code hl_function" href="namespacetvm_1_1tirx.html#a096c4422bcf6cd75ff067802b15c9efa">decl_buffer</a>(ffi::Array&lt;PrimExpr&gt; shape, <a class="code hl_class" href="clas [...]
-<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span>                           ffi::String name = <span class="stringliteral">&quot;buffer&quot;</span>, ffi::String storage_scope = <span class="stringliteral">&quot;&quot;</span>,</div>
-<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span>                           <a class="code hl_class" href="classtvm_1_1Span.html">Span</a> span = <a class="code hl_class" href="classtvm_1_1Span.html">Span</a>());</div>
-<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</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_1tirx_1_1DataProducerNode.html">  300</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1DataProducerNode.html">DataProducerNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a> {</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="l00303" name="l00303"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#a55a95790fcdb8e6b4d8b1f11cd7e27a0">  303</a></span>  <span class="keyword">virtual</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#a55a95790fcdb8e6b4d8b1f11cd7e27a0">~DataProducerNode</a>() {}</div>
-<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#a9ae1f2acc410fe5f6e83c70b0f3a9736">  308</a></span>  <span class="keyword">virtual</span> ffi::Array&lt;PrimExpr&gt; <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#a9ae1f2acc410fe5f6e83c70b0f3a9736">GetShape</a>() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#a889e1ca03ca89b899bfb4cc9153e033a">  313</a></span>  <span class="keyword">virtual</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#a889e1ca03ca89b899bfb4cc9153e033a">GetDataType</a>() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#a7a76d9b37ce363b2e293a7ca411306ad">  318</a></span>  <span class="keyword">virtual</span> ffi::String <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#a7a76d9b37ce363b2e293a7ca411306ad">GetNameHint</a>() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#ae16e43025612a8bd03898695a00dc255">  319</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#ae16e43025612a8bd03898695a00dc255">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;tirx.DataProducer&quot;</span>, <a class="code hl_class" href="classtvm_1_1tirx_1_1DataProducerNode.html">DataProducerNode</a> [...]
-<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span>};</div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a5392682ce05cd2d95a38cce2b6e1898f">  277</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> ffi::String <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a5392682ce05cd2d95a38cce2b6e1898f">scope</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span> </div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a0ff75b6c47c77d11701d559800be1359">  282</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a0ff75b6c47c77d11701d559800be1359">with_allocated_addr</a>(ffi::Array&lt;PrimExpr&gt; allocate [...]
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a5308a530136e871be239a7443acb90a7">  289</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_1tirx_1_1BufferVar.html#a5308a530136e871be239a7443acb90a7">IsScalar</a>(<span class="keywordtype">bool</span> <a class="code hl_class" href="classtvm_1_1With.htm [...]
+<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  290</span> </div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#af2228f33f5298e99f17c50c34ecd823a">  294</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#af2228f33f5298e99f17c50c34ecd823a">with_dtype</a>(<a class="code hl_class" href="classtvm_1_1P [...]
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#ac3fa5c969f1c866b58bed5a1cc3f4465">  297</a></span>  <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#ac3fa5c969f1c866b58bed5a1cc3f4465">ElementType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (*this)-&gt;ElementType(); }</div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span> </div>
+<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a5ff50d0ff915bde811467ecb69c864d9">  300</a></span>  <a class="code hl_class" href="classtvm_1_1PointerType.html">PointerType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a5ff50d0ff915bde811467ecb69c864d9">DataPointerType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (*this)-&gt;DataPointerType(); [...]
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span> </div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#aafc4a0fc5163c07a8d2454de49ef7eae">  302</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#aafc4a0fc5163c07a8d2454de49ef7eae">BufferVar</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#aa6a721eb872b2f86f77caf1ced4a9888">  303</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#aa6a721eb872b2f86f77caf1ced4a9888">BufferVar</a>(ffi::ObjectPtr&lt;VarNode&gt; <a class="code hl_class" href="classtvm_1_1With.html">n</a>) : <a class="code hl_class" href="classtvm_1_1Var.html">Var</a>( [...]
+<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a7d790ca149c804278a22450d0d0ac789">  304</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a7d790ca149c804278a22450d0d0ac789">BufferVar</a>(ffi::UnsafeInit tag) : <a class="code hl_class" href="classtvm_1_1Var.html">Var</a>(tag) {}</div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#af3f1683463a646192ae0ce3f2c744a5e">  305</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#af3f1683463a646192ae0ce3f2c744a5e">TVM_FFI_DEFINE_DEFAULT_COPY_MOVE_AND_ASSIGN</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>);</div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="foldopen" id="foldopen00307" data-start="{" data-end="}">
+<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a0e7381f488e05e7811314c95c60b8a4f">  307</a></span>  <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferTypeNode.html">BufferTypeNode</a>* <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#a0e7381f488e05e7811314c95c60b8a4f">operator-&gt;</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  308</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* <a class="code hl_class" href="classtvm_1_1With.html">var_node</a> = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code hl_class" href="classtvm_1_1VarNode.html">VarNode</a>*<span class="keyword">&gt;</span>(data_.get());</div>
+<div class="line"><a id="l00309" name="l00309"></a><span class="lineno">  309</span>    <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_ICHECK</a>(<a class="code hl_class" href="classtvm_1_1With.html">var_node</a> != <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00310" name="l00310"></a><span class="lineno">  310</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* <a class="code hl_class" href="classtvm_1_1With.html">type_node</a> = <a class="code hl_class" href="classtvm_1_1With.html">var_node</a>-&gt;ty.as&lt;<a class="code hl_class" href="classtvm_1_1tirx_1_1BufferTypeNode.html">BufferTypeNode</a>&gt;();</div>
+<div class="line"><a id="l00311" name="l00311"></a><span class="lineno">  311</span>    <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_ICHECK</a>(<a class="code hl_class" href="classtvm_1_1With.html">type_node</a> != <span class="keyword">nullptr</span>)</div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span>        &lt;&lt; <span class="stringliteral">&quot;Expected a Var with BufferType, but &quot;</span> &lt;&lt; <a class="code hl_class" href="classtvm_1_1With.html">var_node</a>-&gt;name &lt;&lt; <span class="stringliteral">&quot; has type &quot;</span> &lt;&lt; <a class="code hl_class" href="classtvm_1_1With.html">var_node</a>-&gt;ty;</div>
+<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span>    <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1With.html">type_node</a>;</div>
+<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  314</span>  }</div>
+</div>
+<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  315</span> </div>
+<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#aa1f460b2002f8eaef9e86746e4375d03">  316</a></span>  <span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1VarNode.html">VarNode</a>* <a class="code hl_function" href="classtvm_1_1tirx_1_1BufferVar.html#aa1f460b2002f8eaef9e86746e4375d03">get</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="k [...]
+<div class="line"><a id="l00317" name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a2054d161ee1e1656cc61a915cd274b66">  318</a></span>  [[<a class="code hl_class" href="classtvm_1_1With.html">maybe_unused</a>]] <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferVar.html#a2054d161ee1e1656cc61a915cd274b66">_type_is_nullable< [...]
+<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#a6d3292e9191a6fae671e4dc9b69eac27">  319</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_1tirx_1_1BufferVar.html#a6d3292e9191a6fae671e4dc9b69eac27">_type_container_is_exact</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1BufferVar.html#aa38b5b3781136442c088e0924f42f03b">  320</a></span>  <span class="keyword">using </span><a class="code hl_class" href="classtvm_1_1VarNode.html">ContainerType</a> = <a class="code hl_typedef" href="namespacetvm_1_1tirx.html#aca243675bd16309674c38113af6c7671">VarNode</a>;</div>
+<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span>};</div>
+</div>
+<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  322</span> </div>
+<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span><span class="comment">// Preserve ObjectRef-style identity comparison for exact BufferVar operands.</span></div>
+<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  324</span><span class="comment">// Comparisons widened to Var or Expr continue to build symbolic expressions.</span></div>
+<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#a971382deb98a5e016fb5d60261632821">  325</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacetvm_1_1tirx.html#a971382deb98a5e016fb5d60261632821">operator==</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&amp; lhs, <span class [...]
+<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="namespacetvm_1_1tirx.html#ac2f1aac973019bc4c242932bee5e8711">  327</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacetvm_1_1tirx.html#ac2f1aac973019bc4c242932bee5e8711">operator!=</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&amp; lhs, <span class [...]
+<div class="line"><a id="l00328" name="l00328"></a><span class="lineno">  328</span> </div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#aa84515799e4ff11533430fdf4648e483">  330</a></span><span class="keyword">inline</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> <a class="code hl_function" href="namespacetvm_1_1tirx.html#aa84515799e4ff11533430fdf4648e483">GetBufferVar</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1VarNode.html"> [...]
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="foldopen" id="foldopen00332" data-start="{" data-end="}">
+<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#acfe288eb20faba7ebe5c52ebfacc2dcc">  332</a></span><span class="keyword">inline</span> ffi::ObjectPtr&lt;BufferTypeNode&gt; <a class="code hl_function" href="namespacetvm_1_1tirx.html#acfe288eb20faba7ebe5c52ebfacc2dcc">CopyBufferType</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&amp; var) {</div>
+<div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  333</span>  <span class="keywordflow">return</span> ffi::make_object&lt;BufferTypeNode&gt;(*var.operator-&gt;());</div>
+<div class="line"><a id="l00334" name="l00334"></a><span class="lineno">  334</span>}</div>
+</div>
+<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  335</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="namespacetvm_1_1tirx.html#ad85ae1424c8bc271857e453200420551">  336</a></span><span class="keyword">inline</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> <a class="code hl_function" href="namespacetvm_1_1tirx.html#ad85ae1424c8bc271857e453200420551">RebuildBufferVar</a>(<span class="keyword">const</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1Bu [...]
+<div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  337</span>                                  ffi::Optional&lt;ffi::String&gt; name = std::nullopt) {</div>
+<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span>  <span class="keywordflow">return</span> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>(name.value_or(var.name()), <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferType.html">BufferType</a>(std::move(type)), var.span());</div>
+<div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  339</span>}</div>
+</div>
+<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#a0e510ab31d50db329c9d7b29bee344ac">  351</a></span><a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> <a class="code hl_function" href="namespacetvm_1_1tirx.html#a0e510ab31d50db329c9d7b29bee344ac">decl_buffer</a>(ffi::Array&lt;PrimExpr&gt; shape, <a class="code hl_class" href [...]
+<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span>                              ffi::String name = <span class="stringliteral">&quot;buffer&quot;</span>, ffi::String storage_scope = <span class="stringliteral">&quot;&quot;</span>,</div>
+<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  353</span>                              <a class="code hl_class" href="classtvm_1_1Span.html">Span</a> span = <a class="code hl_class" href="classtvm_1_1Span.html">Span</a>());</div>
+<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  354</span> </div>
+<div class="foldopen" id="foldopen00367" data-start="{" data-end="};">
+<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html">  367</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1DataProducerNode.html">DataProducerNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1PrimExprConvertibleNode.html">PrimExprConvertibleNode</a> {</div>
+<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#a55a95790fcdb8e6b4d8b1f11cd7e27a0">  370</a></span>  <span class="keyword">virtual</span> <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#a55a95790fcdb8e6b4d8b1f11cd7e27a0">~DataProducerNode</a>() {}</div>
+<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#a9ae1f2acc410fe5f6e83c70b0f3a9736">  375</a></span>  <span class="keyword">virtual</span> ffi::Array&lt;PrimExpr&gt; <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#a9ae1f2acc410fe5f6e83c70b0f3a9736">GetShape</a>() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#a889e1ca03ca89b899bfb4cc9153e033a">  380</a></span>  <span class="keyword">virtual</span> <a class="code hl_class" href="classtvm_1_1PrimType.html">PrimType</a> <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#a889e1ca03ca89b899bfb4cc9153e033a">GetDataType</a>() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#a7a76d9b37ce363b2e293a7ca411306ad">  385</a></span>  <span class="keyword">virtual</span> ffi::String <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#a7a76d9b37ce363b2e293a7ca411306ad">GetNameHint</a>() <span class="keyword">const</span> = 0;</div>
+<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducerNode.html#ae16e43025612a8bd03898695a00dc255">  386</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducerNode.html#ae16e43025612a8bd03898695a00dc255">TVM_FFI_DECLARE_OBJECT_INFO</a>(<span class="stringliteral">&quot;tirx.DataProducer&quot;</span>, <a class="code hl_class" href="classtvm_1_1tirx_1_1DataProducerNode.html">DataProducerNode</a> [...]
+<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="foldopen" id="foldopen00393" data-start="{" data-end="};">
+<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducer.html">  393</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1DataProducer.html">DataProducer</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a> {</div>
+<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducer.html#afc39b3cc89fbe986dec47fe6ab592748">  395</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducer.html#afc39b3cc89fbe986dec47fe6ab592748">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1DataProducer.html">DataProducer</a>, <a class="code hl_class" href="classtvm_1_1PrimExprConvertible.ht [...]
+<div class="line"><a id="l00396" name="l00396"></a><span class="lineno">  396</span>};</div>
+</div>
+<div class="line"><a id="l00397" name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#ae89ba2a80e36178ee1a50213198baed1">  410</a></span><a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1BufferVar.html">tirx::BufferVar</a> <a class="code hl_function" href="namespacetvm_1_1tirx.html#ae89ba2a80e36178ee1a50213198baed1">BufferWithOffsetAlignment</a>(ffi::Array&lt;PrimExpr&gt; shape, <a class= [...]
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span>                                                  std::string name, <span class="keywordtype">int</span> data_alignment,</div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span>                                                  <span class="keywordtype">int</span> offset_factor, std::string memory_scope = <span class="stringliteral">&quot;&quot;</span>);</div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>}  <span class="comment">// namespace tirx</span></div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span>}  <span class="comment">// namespace tvm</span></div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span> </div>
+<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacetvm_1_1ffi.html">tvm::ffi</a> {</div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno">  417</span> </div>
+<div class="line"><a id="l00418" name="l00418"></a><span class="lineno">  418</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno">  419</span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> use_default_type_traits_v&lt;tirx::BufferVar&gt; = <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00420" name="l00420"></a><span class="lineno">  420</span> </div>
+<div class="line"><a id="l00421" name="l00421"></a><span class="lineno">  421</span><span class="keyword">template</span> &lt;&gt;</div>
+<div class="foldopen" id="foldopen00422" data-start="{" data-end="};">
+<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html">  422</a></span><span class="keyword">struct </span>TypeTraits&lt;tirx::BufferVar&gt; : <span class="keyword">public</span> ObjectRefTypeTraitsBase&lt;tirx::BufferVar&gt; {</div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html#a8aa4d8966dbb9ac0467b42032baa2de3">  423</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html#a8aa4d8966dbb9ac0467b42032baa2de3">Base</a> = <a class="code hl_class" href="classtvm_1_1With.html">ObjectRefTypeTraitsBase&lt;tirx::BufferVar&gt;</a>;</div>
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno">  424</span>  <span class="keyword">using </span>Base::CopyFromAnyViewAfterCheck;</div>
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span>  <span class="keyword">using </span>Base::CopyToAnyView;</div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno">  426</span>  <span class="keyword">using </span>Base::GetMismatchTypeInfo;</div>
+<div class="line"><a id="l00427" name="l00427"></a><span class="lineno">  427</span>  <span class="keyword">using </span>Base::MoveFromAnyAfterCheck;</div>
+<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span>  <span class="keyword">using </span>Base::MoveToAny;</div>
+<div class="line"><a id="l00429" name="l00429"></a><span class="lineno">  429</span>  <span class="keyword">using </span>Base::TypeSchema;</div>
+<div class="line"><a id="l00430" name="l00430"></a><span class="lineno">  430</span>  <span class="keyword">using </span>Base::TypeStr;</div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span> </div>
+<div class="foldopen" id="foldopen00432" data-start="{" data-end="}">
+<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html#ab3b01037ff5532fef4454abef73b7a49">  432</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_01tirx_1_1BufferVar_01_4.html#ab3b01037ff5532fef4454abef73b7a49">Che [...]
+<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span>    <span class="keywordflow">if</span> (src-&gt;type_index == TypeIndex::kTVMFFINone) {</div>
+<div class="line"><a id="l00434" name="l00434"></a><span class="lineno">  434</span>      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span>    }</div>
+<div class="line"><a id="l00436" name="l00436"></a><span class="lineno">  436</span>    <span class="keywordflow">if</span> (src-&gt;type_index != tirx::VarNode::RuntimeTypeIndex()) {</div>
+<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span>      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span>    }</div>
+<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span>    <span class="keyword">const</span> <span class="keyword">auto</span>* var = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code hl_class" href="classtvm_1_1VarNode.html">tirx::VarNode</a>*<span class="keyword">&gt;</span>(</div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno">  440</span>        details::ObjectUnsafe::ObjectPtrFromUnowned&lt;Object&gt;(src-&gt;v_obj).get());</div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno">  441</span>    <span class="keywordflow">return</span> details::AnyUnsafe::CheckAnyStrict&lt;tirx::BufferType&gt;(var-&gt;ExprNode::ty);</div>
+<div class="line"><a id="l00442" name="l00442"></a><span class="lineno">  442</span>  }</div>
+</div>
+<div class="line"><a id="l00443" name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="foldopen" id="foldopen00444" data-start="{" data-end="}">
+<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"><a class="line" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html#a5b0238a336eb5c05708393c47e0aea2f">  444</a></span>  <a class="code hl_class" href="classtvm_1_1With.html">TVM_FFI_INLINE</a> <span class="keyword">static</span> std::optional&lt;tirx::BufferVar&gt; <a class="code hl_function" href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html#a5b0238a336eb5c05708393c47e0aea2f">TryC [...]
+<div class="line"><a id="l00445" name="l00445"></a><span class="lineno">  445</span>    <span class="keywordflow">if</span> (CheckAnyStrict(src)) {</div>
+<div class="line"><a id="l00446" name="l00446"></a><span class="lineno">  446</span>      <span class="keywordflow">return</span> details::ObjectUnsafe::ObjectRefFromObjectPtr&lt;tirx::BufferVar&gt;(</div>
+<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span>          details::ObjectUnsafe::ObjectPtrFromUnowned&lt;tirx::VarNode&gt;(src-&gt;v_obj));</div>
+<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span>    }</div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno">  449</span>    <span class="keywordflow">return</span> std::nullopt;</div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span>  }</div>
 </div>
-<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span> </div>
-<div class="foldopen" id="foldopen00326" data-start="{" data-end="};">
-<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducer.html">  326</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1tirx_1_1DataProducer.html">DataProducer</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertible</a> {</div>
-<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"><a class="line" href="classtvm_1_1tirx_1_1DataProducer.html#afc39b3cc89fbe986dec47fe6ab592748">  328</a></span>  <a class="code hl_function" href="classtvm_1_1tirx_1_1DataProducer.html#afc39b3cc89fbe986dec47fe6ab592748">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(<a class="code hl_class" href="classtvm_1_1tirx_1_1DataProducer.html">DataProducer</a>, <a class="code hl_class" href="classtvm_1_1PrimExprConvertible.ht [...]
-<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span>};</div>
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno">  451</span>};</div>
 </div>
-<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span> </div>
-<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="namespacetvm_1_1tirx.html#ac51c14982b8e747e6ef51d4219297d22">  343</a></span><a class="code hl_class" href="classtvm_1_1With.html">TVM_DLL</a> <a class="code hl_class" href="classtvm_1_1tirx_1_1Buffer.html">tirx::Buffer</a> <a class="code hl_function" href="namespacetvm_1_1tirx.html#ac51c14982b8e747e6ef51d4219297d22">BufferWithOffsetAlignment</a>(ffi::Array&lt;PrimExpr&gt; shape, <a class="code  [...]
-<div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  344</span>                                               std::string name, <span class="keywordtype">int</span> data_alignment,</div>
-<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span>                                               <span class="keywordtype">int</span> offset_factor, std::string memory_scope = <span class="stringliteral">&quot;&quot;</span>);</div>
-<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span>}  <span class="comment">// namespace tirx</span></div>
-<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  347</span>}  <span class="comment">// namespace tvm</span></div>
-<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  348</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_TIR_BUFFER_H_</span></div>
+<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span> </div>
+<div class="line"><a id="l00453" name="l00453"></a><span class="lineno">  453</span>}  <span class="comment">// namespace tvm::ffi</span></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="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:311</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:442</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>
@@ -285,61 +394,88 @@ $(document).ready(function() { init_codefold(0); });
 <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_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_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:269</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:286</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_1BufferNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></div><div class="ttdoc">Node to represent a buffer.</div><div class="ttdef"><b>Definition</b> buffer.h:64</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a01dcbc0de1df11017b80e6aebe2b7afc"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a01dcbc0de1df11017b80e6aebe2b7afc">tvm::tirx::BufferNode::BufferNode</a></div><div class="ttdeci">BufferNode()</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition</b> buffer.h:114</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a032fea6c6a5836c9393b5cf5d3f7ef66"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a032fea6c6a5836c9393b5cf5d3f7ef66">tvm::tirx::BufferNode::data</a></div><div class="ttdeci">Var data</div><div class="ttdoc">The pointer to the head of the data.</div><div class="ttdef"><b>Definition</b> buffer.h:71</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a08acc657da4cfc79504906280cc34464"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a08acc657da4cfc79504906280cc34464">tvm::tirx::BufferNode::ElementType</a></div><div class="ttdeci">PrimType ElementType() const</div><div class="ttdef"><b>Definition</b> buffer.h:143</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a10bddc40d3a75319ea9958ecf7002ee8"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a10bddc40d3a75319ea9958ecf7002ee8">tvm::tirx::BufferNode::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> buffer.h:102</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a20430f1e1a8c06737091343dc062eb2a"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a20430f1e1a8c06737091343dc062eb2a">tvm::tirx::BufferNode::shape</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; shape</div><div class="ttdoc">The type of the buffer prior to flattening.</div><div class="ttdef"><b>Definition</b> buffer.h:80</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a3910ab108252249d571a46a26ab0a7f5"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a3910ab108252249d571a46a26ab0a7f5">tvm::tirx::BufferNode::dtype</a></div><div class="ttdeci">PrimType dtype</div><div class="ttdoc">dtype in the content of the tensor</div><div class="ttdef"><b>Definition</b> buffer.h:73</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a562988870d799ebc2420207e87a581af"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a562988870d799ebc2420207e87a581af">tvm::tirx::BufferNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> buffer.h:116</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a7b201f0b9f409b371a22b527232911af"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a7b201f0b9f409b371a22b527232911af">tvm::tirx::BufferNode::name</a></div><div class="ttdeci">ffi::String name</div><div class="ttdoc">optional name of the buffer</div><div class="ttdef"><b>Definition</b> buffer.h:90</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a857c4b8359cccaa72cd9b609b2f5ba66"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a857c4b8359cccaa72cd9b609b2f5ba66">tvm::tirx::BufferNode::DefaultIndexType</a></div><div class="ttdeci">DLDataType DefaultIndexType() const</div><div class="ttdef"><b>Definition</b> buffer.h:138</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a9705c9d21d8a2f844885cc0ced1d8f7a"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a9705c9d21d8a2f844885cc0ced1d8f7a">tvm::tirx::BufferNode::offset_factor</a></div><div class="ttdeci">int offset_factor</div><div class="ttdoc">Factor of elem_offset field, elem_offset is guaranteed to be multiple of offset_factor.</div><div class="ttdef"><b>Definition</b> buffer.h:97</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_a98b13ae05f6f78f720310a6ff9e22701"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#a98b13ae05f6f78f720310a6ff9e22701">tvm::tirx::BufferNode::_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> buffer.h:156</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_aaaa0ff22d869d8a21a8e1c8354ae7aa7"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#aaaa0ff22d869d8a21a8e1c8354ae7aa7">tvm::tirx::BufferNode::elem_offset</a></div><div class="ttdeci">PrimExpr elem_offset</div><div class="ttdoc">The offset in terms of number of dtype elements (including lanes)</div><div class="ttdef"><b>Definition</b> buffer.h:87</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_aab0218669e142917afae65e78f480d49"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#aab0218669e142917afae65e78f480d49">tvm::tirx::BufferNode::allocated_addr</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; allocated_addr</div><div class="ttdoc">The allocated address of the buffer. The address might be multi-dimensional based on its scope....</div><div class="ttdef"><b>Definition</b> buffer.h:111</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_ab26e9f26ff748fd4110e67ba388074c8"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#ab26e9f26ff748fd4110e67ba388074c8">tvm::tirx::BufferNode::ElemOffset</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; ElemOffset(ffi::Array&lt; PrimExpr &gt; index, bool inner=false) const</div><div class="ttdoc">Determine the offset in the buffer of the given index.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_ab3ee99bb7ca58f97cc4d01f18f9f8b67"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#ab3ee99bb7ca58f97cc4d01f18f9f8b67">tvm::tirx::BufferNode::layout</a></div><div class="ttdeci">ffi::Optional&lt; Layout &gt; layout</div><div class="ttdoc">The layout of the buffer.</div><div class="ttdef"><b>Definition</b> buffer.h:105</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_ac4fb30a74ca831826e7b40339ced1bb8"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#ac4fb30a74ca831826e7b40339ced1bb8">tvm::tirx::BufferNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;tirx.Buffer&quot;, BufferNode, ffi::Object)</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_adaeae9092c6c56b315c3c2a86fd52466"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#adaeae9092c6c56b315c3c2a86fd52466">tvm::tirx::BufferNode::strides</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; strides</div><div class="ttdoc">The strides of each dimension This can be an empty array, indicating array is contiguous.</div><div class="ttdef"><b>Definition</b> buffer.h:85</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferNode_html_ae7121e2f1e343890be8e82291f21662d"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferNode.html#ae7121e2f1e343890be8e82291f21662d">tvm::tirx::BufferNode::data_alignment</a></div><div class="ttdeci">int data_alignment</div><div class="ttdoc">Alignment requirement of data pointer in bytes.</div><div class="ttdef"><b>Definition</b> buffer.h:92</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></div><div class="ttdoc">Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types,...</div><div class="ttdef"><b>Definition</b> buffer.h:166</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a013b36b5933d2e79ec5921e716d528c8"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a013b36b5933d2e79ec5921e716d528c8">tvm::tirx::Buffer::vload</a></div><div class="ttdeci">PrimExpr vload(ffi::Array&lt; PrimExpr &gt; begin, PrimType dtype, ffi::Optional&lt; PrimExpr &gt; predicate=std::nullopt) const</div><div class="ttdoc">Create an Expr that does a vector load at begin index.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a0b99c9c08e349a23e16d4e79f86e9775"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a0b99c9c08e349a23e16d4e79f86e9775">tvm::tirx::Buffer::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(Buffer, ffi::ObjectRef, BufferNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a2cfef360f77cac96c441ca0feb33bf6f"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a2cfef360f77cac96c441ca0feb33bf6f">tvm::tirx::Buffer::ElementType</a></div><div class="ttdeci">PrimType ElementType() const</div><div class="ttdef"><b>Definition</b> buffer.h:263</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a3bbcdf0b3a464823aa243f677565416c"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a3bbcdf0b3a464823aa243f677565416c">tvm::tirx::Buffer::OffsetOf</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; OffsetOf(ffi::Array&lt; PrimExpr &gt; index) const</div><div class="ttdoc">Determine the offset in the buffer of the given index.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a4bbae212b395e2b129cdbe70c4c30bef"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a4bbae212b395e2b129cdbe70c4c30bef">tvm::tirx::Buffer::MakeSlice</a></div><div class="ttdeci">Buffer MakeSlice(ffi::Array&lt; PrimExpr &gt; begins, ffi::Array&lt; PrimExpr &gt; extents) const</div><div class="ttdoc">Make a new symbolic buffer representing a slice of the buffer.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a7d67b6e9d1f0d80daf49f8f2142d2354"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a7d67b6e9d1f0d80daf49f8f2142d2354">tvm::tirx::Buffer::with_data</a></div><div class="ttdeci">Buffer with_data(Var data) const</div><div class="ttdoc">Return a new buffer with the data.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a82a7e3d50127e401ce7e6e9962616b71"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a82a7e3d50127e401ce7e6e9962616b71">tvm::tirx::Buffer::with_allocated_addr</a></div><div class="ttdeci">Buffer with_allocated_addr(ffi::Array&lt; PrimExpr &gt; allocated_addr) const</div><div class="ttdoc">Return a new buffer with the allocated address.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a884e5430833d294a346ef49364b46a0b"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a884e5430833d294a346ef49364b46a0b">tvm::tirx::Buffer::OffsetOf_p</a></div><div class="ttdeci">PrimExpr OffsetOf_p(const ffi::Array&lt; PrimExpr &gt; &amp;indices) const</div><div class="ttdoc">Get the buffer_offset op for the given index.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a93df7d8918fd7b1e88a240ac3ba9f8f3"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a93df7d8918fd7b1e88a240ac3ba9f8f3">tvm::tirx::Buffer::IsScalar</a></div><div class="ttdeci">bool IsScalar(bool alloc_or_decl=true) const</div><div class="ttdoc">Return true if the buffer is a scalar.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_a94d21cc75c179e954a4488ef3fa4fff2"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#a94d21cc75c179e954a4488ef3fa4fff2">tvm::tirx::Buffer::Buffer</a></div><div class="ttdeci">Buffer(Var data, PrimType dtype, ffi::Array&lt; PrimExpr &gt; shape, ffi::Array&lt; PrimExpr &gt; strides, PrimExpr elem_offset, ffi::String name, int data_alignment, int offset_factor, Span span=Span(), ffi::Optional&lt; Layout &gt; layout=std::nullop [...]
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_abaa7c4b6733b7abf7d7d14fcc67ff1aa"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#abaa7c4b6733b7abf7d7d14fcc67ff1aa">tvm::tirx::Buffer::MakeStrideView</a></div><div class="ttdeci">Buffer MakeStrideView() const</div><div class="ttdoc">Return a new buffer that is equivalent with current one but always add stride field.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_aca33bb24e03d62f995eefa548b6fce1e"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#aca33bb24e03d62f995eefa548b6fce1e">tvm::tirx::Buffer::TVM_DEFINE_OBJECT_REF_COW_METHOD</a></div><div class="ttdeci">TVM_DEFINE_OBJECT_REF_COW_METHOD(BufferNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_ae18dc68f47dfa53596cb859995381d18"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#ae18dc68f47dfa53596cb859995381d18">tvm::tirx::Buffer::scope</a></div><div class="ttdeci">ffi::String scope() const</div><div class="ttdoc">Return the storage scope associated with this buffer.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_ae5bba34a1b184da7f1fcb2431db7d033"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#ae5bba34a1b184da7f1fcb2431db7d033">tvm::tirx::Buffer::with_dtype</a></div><div class="ttdeci">Buffer 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_1Buffer_html_ae5d66996c62b0daac2053cfa34aecdb0"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#ae5d66996c62b0daac2053cfa34aecdb0">tvm::tirx::Buffer::access_ptr</a></div><div class="ttdeci">Expr access_ptr(int access_mask, PointerType ptr_type=PointerType::VoidPointerTy(), int content_lanes=1, PrimExpr offset=IntImm::Int32(0), ffi::Optional&lt; PrimExpr &gt; input_extent=std::nullopt) const</div><div class="ttdoc">Get access ptr to th [...]
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_af0f9adc1cbc7fdd43b43a4be5fcd4b22"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#af0f9adc1cbc7fdd43b43a4be5fcd4b22">tvm::tirx::Buffer::GetFlattenedBuffer</a></div><div class="ttdeci">Buffer GetFlattenedBuffer() const</div><div class="ttdoc">Get a flattened version of the buffer.</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1Buffer_html_afd5d83b90aeb6001981b2f613c9fa0ba"><div class="ttname"><a href="classtvm_1_1tirx_1_1Buffer.html#afd5d83b90aeb6001981b2f613c9fa0ba">tvm::tirx::Buffer::vstore</a></div><div class="ttdeci">Stmt vstore(ffi::Array&lt; PrimExpr &gt; begin, PrimExpr value, ffi::Optional&lt; PrimExpr &gt; predicate=std::nullopt) 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_1DataProducerNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducerNode.html">tvm::tirx::DataProducerNode</a></div><div class="ttdoc">Base node for data producers.</div><div class="ttdef"><b>Definition</b> buffer.h:300</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducerNode_html_a55a95790fcdb8e6b4d8b1f11cd7e27a0"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducerNode.html#a55a95790fcdb8e6b4d8b1f11cd7e27a0">tvm::tirx::DataProducerNode::~DataProducerNode</a></div><div class="ttdeci">virtual ~DataProducerNode()</div><div class="ttdoc">destructor.</div><div class="ttdef"><b>Definition</b> buffer.h:303</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>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_a6b8487ac35e9242f460151876c62d4cb"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#a6b8487ac35e9242f460151876c62d4cb">tvm::tirx::BufferTypeNode::allocated_addr</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; allocated_addr</div><div class="ttdoc">The allocated address of the buffer. The address might be multi-dimensional based on its scope....</div><div class="ttdef"><b>Definition</b> buffer.h:10 [...]
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_a703d73522b091e98a3a30fcc0eccda66"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#a703d73522b091e98a3a30fcc0eccda66">tvm::tirx::BufferTypeNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> buffer.h:110</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_a772acc44b15407d587ded9358ba66e13"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#a772acc44b15407d587ded9358ba66e13">tvm::tirx::BufferTypeNode::layout</a></div><div class="ttdeci">ffi::Optional&lt; Layout &gt; layout</div><div class="ttdoc">The layout of the buffer.</div><div class="ttdef"><b>Definition</b> buffer.h:99</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_a839664705b12711c95beb9b01385c3e2"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#a839664705b12711c95beb9b01385c3e2">tvm::tirx::BufferTypeNode::elem_offset</a></div><div class="ttdeci">PrimExpr elem_offset</div><div class="ttdoc">The offset in terms of number of dtype elements (including lanes)</div><div class="ttdef"><b>Definition</b> buffer.h:90</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_a8698677627e72d7a5fc2407c6f6c2d25"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#a8698677627e72d7a5fc2407c6f6c2d25">tvm::tirx::BufferTypeNode::storage_scope</a></div><div class="ttdeci">ffi::String storage_scope</div><div class="ttdoc">Storage scope/address space of the buffer.</div><div class="ttdef"><b>Definition</b> buffer.h:76</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_a916a2492185d07cda803092b469e85de"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#a916a2492185d07cda803092b469e85de">tvm::tirx::BufferTypeNode::shape</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; shape</div><div class="ttdoc">The type of the buffer prior to flattening.</div><div class="ttdef"><b>Definition</b> buffer.h:83</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_a9f4e0e0abdc0a64641f78550ce708692"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#a9f4e0e0abdc0a64641f78550ce708692">tvm::tirx::BufferTypeNode::ElemOffset</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; ElemOffset(ffi::Array&lt; PrimExpr &gt; index, bool inner=false) const</div><div class="ttdoc">Determine the offset in the buffer of the given index.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_ad3ba0424e0c2ea8b457466bab51fbb51"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#ad3ba0424e0c2ea8b457466bab51fbb51">tvm::tirx::BufferTypeNode::DefaultIndexType</a></div><div class="ttdeci">DLDataType DefaultIndexType() const</div><div class="ttdef"><b>Definition</b> buffer.h:129</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_adb02f52b707f7177e0469b0499b6bd13"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#adb02f52b707f7177e0469b0499b6bd13">tvm::tirx::BufferTypeNode::dtype</a></div><div class="ttdeci">PrimType dtype</div><div class="ttdoc">dtype in the content of the tensor</div><div class="ttdef"><b>Definition</b> buffer.h:74</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_ae09b833e4618531ffb9e4e190daddb6d"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae09b833e4618531ffb9e4e190daddb6d">tvm::tirx::BufferTypeNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;tirx.BufferType&quot;, BufferTypeNode, TypeNode)</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_ae49f0a9c38574ea8dc3cfcc819c81377"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae49f0a9c38574ea8dc3cfcc819c81377">tvm::tirx::BufferTypeNode::BufferTypeNode</a></div><div class="ttdeci">BufferTypeNode()</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition</b> buffer.h:108</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_ae5c53bffd98739b2f0a000c2736f8cd7"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#ae5c53bffd98739b2f0a000c2736f8cd7">tvm::tirx::BufferTypeNode::offset_factor</a></div><div class="ttdeci">int offset_factor</div><div class="ttdoc">Factor of elem_offset field, elem_offset is guaranteed to be multiple of offset_factor.</div><div class="ttdef"><b>Definition</b> buffer.h:97</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_aebdbc9f11cc6f1e4f32330677116c126"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#aebdbc9f11cc6f1e4f32330677116c126">tvm::tirx::BufferTypeNode::DataPointerType</a></div><div class="ttdeci">PointerType DataPointerType() const</div><div class="ttdef"><b>Definition</b> buffer.h:137</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_af4a75b0edf108fb86728b059ffe0bfda"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#af4a75b0edf108fb86728b059ffe0bfda">tvm::tirx::BufferTypeNode::data_alignment</a></div><div class="ttdeci">int data_alignment</div><div class="ttdoc">Alignment requirement of data pointer in bytes.</div><div class="ttdef"><b>Definition</b> buffer.h:92</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferTypeNode_html_af94cd63f7a1aabe501b72d4d8ed25ed3"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferTypeNode.html#af94cd63f7a1aabe501b72d4d8ed25ed3">tvm::tirx::BufferTypeNode::strides</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; strides</div><div class="ttdoc">The strides of each dimension This can be an empty array, indicating array is contiguous.</div><div class="ttdef"><b>Definition</b> buffer.h:88</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferType_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferType.html">tvm::tirx::BufferType</a></div><div class="ttdoc">Managed reference to BufferTypeNode.</div><div class="ttdef"><b>Definition</b> buffer.h:156</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferType_html_a36fb08bd6da77e481e256d9a6c2a9c9b"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferType.html#a36fb08bd6da77e481e256d9a6c2a9c9b">tvm::tirx::BufferType::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(BufferType, Type, BufferTypeNode)</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferType_html_a6c634e72f5dbec49ae3b8ca63c3602c9"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferType.html#a6c634e72f5dbec49ae3b8ca63c3602c9">tvm::tirx::BufferType::BufferType</a></div><div class="ttdeci">BufferType(ffi::String storage_scope, PrimType dtype, ffi::Array&lt; PrimExpr &gt; shape, ffi::Array&lt; PrimExpr &gt; strides, PrimExpr elem_offset, int data_alignment, int offset_factor, ffi::Optional&lt; Layout &gt; layout=std::nullo [...]
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferType_html_a710de8e64381eef7f0e6bd1c0cb62050"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferType.html#a710de8e64381eef7f0e6bd1c0cb62050">tvm::tirx::BufferType::BufferType</a></div><div class="ttdeci">BufferType(ffi::ObjectPtr&lt; BufferTypeNode &gt; n)</div><div class="ttdef"><b>Definition</b> buffer.h:165</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_1BufferVar_html_a0e7381f488e05e7811314c95c60b8a4f"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a0e7381f488e05e7811314c95c60b8a4f">tvm::tirx::BufferVar::operator-&gt;</a></div><div class="ttdeci">const BufferTypeNode * operator-&gt;() const</div><div class="ttdef"><b>Definition</b> buffer.h:307</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a0ff75b6c47c77d11701d559800be1359"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a0ff75b6c47c77d11701d559800be1359">tvm::tirx::BufferVar::with_allocated_addr</a></div><div class="ttdeci">BufferVar with_allocated_addr(ffi::Array&lt; PrimExpr &gt; allocated_addr) const</div><div class="ttdoc">Return a new buffer with the allocated address.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a16faeb4e95c29a5ac1d36819e77455c9"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a16faeb4e95c29a5ac1d36819e77455c9">tvm::tirx::BufferVar::access_ptr</a></div><div class="ttdeci">Expr access_ptr(int access_mask, PointerType ptr_type=PointerType::VoidPointerTy(), int content_lanes=1, PrimExpr offset=IntImm::Int32(0), ffi::Optional&lt; PrimExpr &gt; input_extent=std::nullopt) const</div><div class="ttdoc">Get access  [...]
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a2054d161ee1e1656cc61a915cd274b66"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a2054d161ee1e1656cc61a915cd274b66">tvm::tirx::BufferVar::_type_is_nullable</a></div><div class="ttdeci">static constexpr bool _type_is_nullable</div><div class="ttdef"><b>Definition</b> buffer.h:318</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a35098bcb9514367e61bd65470c3daf3d"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a35098bcb9514367e61bd65470c3daf3d">tvm::tirx::BufferVar::type</a></div><div class="ttdeci">BufferType type() const</div><div class="ttdoc">Return the buffer type carried by the ordinary variable.</div><div class="ttdef"><b>Definition</b> buffer.h:194</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a45e932c5b7c5fa2177947755032cea86"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a45e932c5b7c5fa2177947755032cea86">tvm::tirx::BufferVar::span</a></div><div class="ttdeci">const Span &amp; span() const</div><div class="ttdoc">Return the source span carried by the ordinary Var.</div><div class="ttdef"><b>Definition</b> buffer.h:200</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a5308a530136e871be239a7443acb90a7"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a5308a530136e871be239a7443acb90a7">tvm::tirx::BufferVar::IsScalar</a></div><div class="ttdeci">bool IsScalar(bool alloc_or_decl=true) const</div><div class="ttdoc">Return true if the buffer is a scalar.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a5392682ce05cd2d95a38cce2b6e1898f"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a5392682ce05cd2d95a38cce2b6e1898f">tvm::tirx::BufferVar::scope</a></div><div class="ttdeci">ffi::String scope() const</div><div class="ttdoc">Return the storage scope associated with this buffer.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a5a71693e34d4c4ca4a3d1f4b94b49a4c"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a5a71693e34d4c4ca4a3d1f4b94b49a4c">tvm::tirx::BufferVar::var</a></div><div class="ttdeci">Var var() const</div><div class="ttdoc">Return the ordinary variable view over the same identity.</div><div class="ttdef"><b>Definition</b> buffer.h:191</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a5ff50d0ff915bde811467ecb69c864d9"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a5ff50d0ff915bde811467ecb69c864d9">tvm::tirx::BufferVar::DataPointerType</a></div><div class="ttdeci">PointerType DataPointerType() const</div><div class="ttdef"><b>Definition</b> buffer.h:300</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a6d3292e9191a6fae671e4dc9b69eac27"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a6d3292e9191a6fae671e4dc9b69eac27">tvm::tirx::BufferVar::_type_container_is_exact</a></div><div class="ttdeci">static constexpr bool _type_container_is_exact</div><div class="ttdef"><b>Definition</b> buffer.h:319</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a77fcb73f7896a1a3385fea797bfc3f09"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a77fcb73f7896a1a3385fea797bfc3f09">tvm::tirx::BufferVar::MakeStrideView</a></div><div class="ttdeci">BufferVar MakeStrideView() const</div><div class="ttdoc">Return a new buffer that is equivalent with current one but always add stride field.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a7d790ca149c804278a22450d0d0ac789"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a7d790ca149c804278a22450d0d0ac789">tvm::tirx::BufferVar::BufferVar</a></div><div class="ttdeci">BufferVar(ffi::UnsafeInit tag)</div><div class="ttdef"><b>Definition</b> buffer.h:304</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a7e7510862b791fc72299abca4134577b"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a7e7510862b791fc72299abca4134577b">tvm::tirx::BufferVar::GetFlattenedBuffer</a></div><div class="ttdeci">BufferVar GetFlattenedBuffer() const</div><div class="ttdoc">Get a flattened version of the buffer.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_a9162b84dd02a8358756ff6bcb1b9d09d"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#a9162b84dd02a8358756ff6bcb1b9d09d">tvm::tirx::BufferVar::OffsetOf</a></div><div class="ttdeci">ffi::Array&lt; PrimExpr &gt; OffsetOf(ffi::Array&lt; PrimExpr &gt; index) const</div><div class="ttdoc">Determine the offset in the buffer of the given index.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_aa0ba24f889c165411627bf3c6085138b"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#aa0ba24f889c165411627bf3c6085138b">tvm::tirx::BufferVar::vstore</a></div><div class="ttdeci">Stmt vstore(ffi::Array&lt; PrimExpr &gt; begin, PrimExpr value, ffi::Optional&lt; PrimExpr &gt; predicate=std::nullopt) 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_1BufferVar_html_aa1f460b2002f8eaef9e86746e4375d03"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#aa1f460b2002f8eaef9e86746e4375d03">tvm::tirx::BufferVar::get</a></div><div class="ttdeci">const VarNode * get() const</div><div class="ttdef"><b>Definition</b> buffer.h:316</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_aa6a721eb872b2f86f77caf1ced4a9888"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#aa6a721eb872b2f86f77caf1ced4a9888">tvm::tirx::BufferVar::BufferVar</a></div><div class="ttdeci">BufferVar(ffi::ObjectPtr&lt; VarNode &gt; n)</div><div class="ttdef"><b>Definition</b> buffer.h:303</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_aa734aee14427b0a39552035f4d478c04"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#aa734aee14427b0a39552035f4d478c04">tvm::tirx::BufferVar::BufferVar</a></div><div class="ttdeci">BufferVar(ffi::String name, BufferType type, Span span=Span())</div><div class="ttdoc">Construct a fresh buffer variable from an explicit BufferType.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_aafc4a0fc5163c07a8d2454de49ef7eae"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#aafc4a0fc5163c07a8d2454de49ef7eae">tvm::tirx::BufferVar::BufferVar</a></div><div class="ttdeci">BufferVar()=default</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_ab26f945776d7d4a4f071b1c3e152e4bf"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#ab26f945776d7d4a4f071b1c3e152e4bf">tvm::tirx::BufferVar::BufferVar</a></div><div class="ttdeci">BufferVar(Var var)</div><div class="ttdoc">Create a checked buffer view over an existing ordinary Var.</div><div class="ttdef"><b>Definition</b> buffer.h:185</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_ac3fa5c969f1c866b58bed5a1cc3f4465"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#ac3fa5c969f1c866b58bed5a1cc3f4465">tvm::tirx::BufferVar::ElementType</a></div><div class="ttdeci">PrimType ElementType() const</div><div class="ttdef"><b>Definition</b> buffer.h:297</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_ad39f8ce414e817d0c19ecbd9c27b5585"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#ad39f8ce414e817d0c19ecbd9c27b5585">tvm::tirx::BufferVar::name</a></div><div class="ttdeci">const ffi::String &amp; name() const</div><div class="ttdoc">Return the buffer's diagnostic name.</div><div class="ttdef"><b>Definition</b> buffer.h:197</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_ad71c4c0a4449126a9703a864dc09c156"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#ad71c4c0a4449126a9703a864dc09c156">tvm::tirx::BufferVar::OffsetOf_p</a></div><div class="ttdeci">PrimExpr OffsetOf_p(const ffi::Array&lt; PrimExpr &gt; &amp;indices) const</div><div class="ttdoc">Get the buffer_offset op for the given index.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_adfbd0e1bf38f963d33a18c01689adb4e"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#adfbd0e1bf38f963d33a18c01689adb4e">tvm::tirx::BufferVar::MakeSlice</a></div><div class="ttdeci">BufferVar MakeSlice(ffi::Array&lt; PrimExpr &gt; begins, ffi::Array&lt; PrimExpr &gt; extents) const</div><div class="ttdoc">Make a new symbolic buffer representing a slice of the buffer.</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferVar_html_af21c8c29e9c984893fd6040fec5126b4"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#af21c8c29e9c984893fd6040fec5126b4">tvm::tirx::BufferVar::data</a></div><div class="ttdeci">Expr data() const</div><div class="ttdoc">Project the physical pointer established by the definition site.</div></div>
+<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_af26e118d45be72a1992b4ba08104b044"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferVar.html#af26e118d45be72a1992b4ba08104b044">tvm::tirx::BufferVar::vload</a></div><div class="ttdeci">PrimExpr vload(ffi::Array&lt; PrimExpr &gt; begin, PrimType dtype, ffi::Optional&lt; PrimExpr &gt; predicate=std::nullopt) const</div><div class="ttdoc">Create an Expr that does a vector load at begin index.</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_1DataProducerNode_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducerNode.html">tvm::tirx::DataProducerNode</a></div><div class="ttdoc">Base node for data producers.</div><div class="ttdef"><b>Definition</b> buffer.h:367</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducerNode_html_a55a95790fcdb8e6b4d8b1f11cd7e27a0"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducerNode.html#a55a95790fcdb8e6b4d8b1f11cd7e27a0">tvm::tirx::DataProducerNode::~DataProducerNode</a></div><div class="ttdeci">virtual ~DataProducerNode()</div><div class="ttdoc">destructor.</div><div class="ttdef"><b>Definition</b> buffer.h:370</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducerNode_html_a7a76d9b37ce363b2e293a7ca411306ad"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducerNode.html#a7a76d9b37ce363b2e293a7ca411306ad">tvm::tirx::DataProducerNode::GetNameHint</a></div><div class="ttdeci">virtual ffi::String GetNameHint() const =0</div><div class="ttdoc">Get the name hint of the data producer.</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducerNode_html_a889e1ca03ca89b899bfb4cc9153e033a"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducerNode.html#a889e1ca03ca89b899bfb4cc9153e033a">tvm::tirx::DataProducerNode::GetDataType</a></div><div class="ttdeci">virtual PrimType GetDataType() const =0</div><div class="ttdoc">Get the raw element dtype of the result.</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducerNode_html_a9ae1f2acc410fe5f6e83c70b0f3a9736"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducerNode.html#a9ae1f2acc410fe5f6e83c70b0f3a9736">tvm::tirx::DataProducerNode::GetShape</a></div><div class="ttdeci">virtual ffi::Array&lt; PrimExpr &gt; GetShape() const =0</div><div class="ttdoc">Get the shape of the result.</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducerNode_html_ae16e43025612a8bd03898695a00dc255"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducerNode.html#ae16e43025612a8bd03898695a00dc255">tvm::tirx::DataProducerNode::TVM_FFI_DECLARE_OBJECT_INFO</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO(&quot;tirx.DataProducer&quot;, DataProducerNode, PrimExprConvertibleNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducer_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducer.html">tvm::tirx::DataProducer</a></div><div class="ttdoc">Managed reference to DataProducerNode.</div><div class="ttdef"><b>Definition</b> buffer.h:326</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducer_html"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducer.html">tvm::tirx::DataProducer</a></div><div class="ttdoc">Managed reference to DataProducerNode.</div><div class="ttdef"><b>Definition</b> buffer.h:393</div></div>
 <div class="ttc" id="aclasstvm_1_1tirx_1_1DataProducer_html_afc39b3cc89fbe986dec47fe6ab592748"><div class="ttname"><a href="classtvm_1_1tirx_1_1DataProducer.html#afc39b3cc89fbe986dec47fe6ab592748">tvm::tirx::DataProducer::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(DataProducer, PrimExprConvertible, DataProducerNode)</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:65</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_1tirx_html_a096c4422bcf6cd75ff067802b15c9efa"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a096c4422bcf6cd75ff067802b15c9efa">tvm::tirx::decl_buffer</a></div><div class="ttdeci">Buffer decl_buffer(ffi::Array&lt; PrimExpr &gt; shape, PrimType dtype=PrimType::Float(32), ffi::String name=&quot;buffer&quot;, ffi::String storage_scope=&quot;&quot;, Span span=Span())</div><div class="ttdoc">Construct a new buffer given shape, and dtype.</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>
+<div class="ttc" id="anamespacetvm_1_1tirx_html_a0e510ab31d50db329c9d7b29bee344ac"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a0e510ab31d50db329c9d7b29bee344ac">tvm::tirx::decl_buffer</a></div><div class="ttdeci">BufferVar decl_buffer(ffi::Array&lt; PrimExpr &gt; shape, PrimType dtype=PrimType::Float(32), ffi::String name=&quot;buffer&quot;, ffi::String storage_scope=&quot;&quot;, Span span=Span())</div><div class="ttdoc">Construct a new buffer given shape, and dtype.</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_a323bfac5faa4e657ed340f283c45dc99"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a323bfac5faa4e657ed340f283c45dc99">tvm::tirx::DefaultIndexPrimType</a></div><div class="ttdeci">PrimType DefaultIndexPrimType()</div><div class="ttdoc">if TVM_INDEX_DEFAULT_I64 is set, return int64, otherwise return int32</div><div class="ttdef"><b>Definition</b> buffer.h:43</div></div>
 <div class="ttc" id="anamespacetvm_1_1tirx_html_a897e6e061d17ea8adb3408eb34e7b1ae"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a897e6e061d17ea8adb3408eb34e7b1ae">tvm::tirx::DefaultIndexType</a></div><div class="ttdeci">DLDataType DefaultIndexType()</div><div class="ttdef"><b>Definition</b> buffer.h:52</div></div>
-<div class="ttc" id="anamespacetvm_1_1tirx_html_ac51c14982b8e747e6ef51d4219297d22"><div class="ttname"><a href="namespacetvm_1_1tirx.html#ac51c14982b8e747e6ef51d4219297d22">tvm::tirx::BufferWithOffsetAlignment</a></div><div class="ttdeci">tirx::Buffer BufferWithOffsetAlignment(ffi::Array&lt; PrimExpr &gt; shape, PrimType dtype, std::string name, int data_alignment, int offset_factor, std::string memory_scope=&quot;&quot;)</div><div class="ttdoc">Creates TIR Buffer for provided parameters [...]
+<div class="ttc" id="anamespacetvm_1_1tirx_html_a971382deb98a5e016fb5d60261632821"><div class="ttname"><a href="namespacetvm_1_1tirx.html#a971382deb98a5e016fb5d60261632821">tvm::tirx::operator==</a></div><div class="ttdeci">bool operator==(const BufferVar &amp;lhs, const BufferVar &amp;rhs)</div><div class="ttdef"><b>Definition</b> buffer.h:325</div></div>
+<div class="ttc" id="anamespacetvm_1_1tirx_html_aa84515799e4ff11533430fdf4648e483"><div class="ttname"><a href="namespacetvm_1_1tirx.html#aa84515799e4ff11533430fdf4648e483">tvm::tirx::GetBufferVar</a></div><div class="ttdeci">BufferVar GetBufferVar(const VarNode *var)</div><div class="ttdoc">Recover a checked buffer view from an ordinary VarNode pointer.</div><div class="ttdef"><b>Definition</b> buffer.h:330</div></div>
+<div class="ttc" id="anamespacetvm_1_1tirx_html_ac2f1aac973019bc4c242932bee5e8711"><div class="ttname"><a href="namespacetvm_1_1tirx.html#ac2f1aac973019bc4c242932bee5e8711">tvm::tirx::operator!=</a></div><div class="ttdeci">bool operator!=(const BufferVar &amp;lhs, const BufferVar &amp;rhs)</div><div class="ttdef"><b>Definition</b> buffer.h:327</div></div>
+<div class="ttc" id="anamespacetvm_1_1tirx_html_aca243675bd16309674c38113af6c7671"><div class="ttname"><a href="namespacetvm_1_1tirx.html#aca243675bd16309674c38113af6c7671">tvm::tirx::VarNode</a></div><div class="ttdeci">tvm::VarNode VarNode</div><div class="ttdef"><b>Definition</b> var.h:37</div></div>
+<div class="ttc" id="anamespacetvm_1_1tirx_html_acfe288eb20faba7ebe5c52ebfacc2dcc"><div class="ttname"><a href="namespacetvm_1_1tirx.html#acfe288eb20faba7ebe5c52ebfacc2dcc">tvm::tirx::CopyBufferType</a></div><div class="ttdeci">ffi::ObjectPtr&lt; BufferTypeNode &gt; CopyBufferType(const BufferVar &amp;var)</div><div class="ttdef"><b>Definition</b> buffer.h:332</div></div>
+<div class="ttc" id="anamespacetvm_1_1tirx_html_ad85ae1424c8bc271857e453200420551"><div class="ttname"><a href="namespacetvm_1_1tirx.html#ad85ae1424c8bc271857e453200420551">tvm::tirx::RebuildBufferVar</a></div><div class="ttdeci">BufferVar RebuildBufferVar(const BufferVar &amp;var, ffi::ObjectPtr&lt; BufferTypeNode &gt; type, ffi::Optional&lt; ffi::String &gt; name=std::nullopt)</div><div class="ttdef"><b>Definition</b> buffer.h:336</div></div>
+<div class="ttc" id="anamespacetvm_1_1tirx_html_ae89ba2a80e36178ee1a50213198baed1"><div class="ttname"><a href="namespacetvm_1_1tirx.html#ae89ba2a80e36178ee1a50213198baed1">tvm::tirx::BufferWithOffsetAlignment</a></div><div class="ttdeci">tirx::BufferVar BufferWithOffsetAlignment(ffi::Array&lt; PrimExpr &gt; shape, PrimType dtype, std::string name, int data_alignment, int offset_factor, std::string memory_scope=&quot;&quot;)</div><div class="ttdoc">Creates a TIR buffer for the provided p [...]
 <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="astructtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4_html_a5b0238a336eb5c05708393c47e0aea2f"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html#a5b0238a336eb5c05708393c47e0aea2f">tvm::ffi::TypeTraits&lt; tirx::BufferVar &gt;::TryCastFromAnyView</a></div><div class="ttdeci">static TVM_FFI_INLINE std::optional&lt; tirx::BufferVar &gt; TryCastFromAnyView(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> buffer [...]
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4_html_a8aa4d8966dbb9ac0467b42032baa2de3"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html#a8aa4d8966dbb9ac0467b42032baa2de3">tvm::ffi::TypeTraits&lt; tirx::BufferVar &gt;::Base</a></div><div class="ttdeci">ObjectRefTypeTraitsBase&lt; tirx::BufferVar &gt; Base</div><div class="ttdef"><b>Definition</b> buffer.h:423</div></div>
+<div class="ttc" id="astructtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4_html_ab3b01037ff5532fef4454abef73b7a49"><div class="ttname"><a href="structtvm_1_1ffi_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html#ab3b01037ff5532fef4454abef73b7a49">tvm::ffi::TypeTraits&lt; tirx::BufferVar &gt;::CheckAnyStrict</a></div><div class="ttdeci">static TVM_FFI_INLINE bool CheckAnyStrict(const TVMFFIAny *src)</div><div class="ttdef"><b>Definition</b> buffer.h:432</div></div>
 <div class="ttc" id="avar_8h_html"><div class="ttname"><a href="var_8h.html">var.h</a></div><div class="ttdoc">Variables in the TIR.</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/reference/api/doxygen/classes.html b/docs/reference/api/doxygen/classes.html
index 6f2ae27bdb9..8d8828b874d 100644
--- a/docs/reference/api/doxygen/classes.html
+++ b/docs/reference/api/doxygen/classes.html
@@ -79,7 +79,7 @@ $(function() {
 <dd><a class="el" href="structtvm_1_1tirx_1_1ActiveSet.html">ActiveSet</a> (<a class="el" href="namespacetvm_1_1tirx.html">tvm::tirx</a>)</dd><dd><a class="el" href="structtvm_1_1relax_1_1AdaptivePool1DAttrs.html">AdaptivePool1DAttrs</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="structtvm_1_1relax_1_1AdaptivePool2DAttrs.html">AdaptivePool2DAttrs</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" hr [...]
 <dl class="classindex odd">
 <dt class="alphachar"><a id="letter_B" name="letter_B">B</a></dt>
-<dd><a class="el" href="classtvm_1_1te_1_1BaseComputeOpNode.html">BaseComputeOpNode</a> (<a class="el" href="namespacetvm_1_1te.html">tvm::te</a>)</dd><dd><a class="el" href="classtvm_1_1BaseFunc.html">BaseFunc</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1BaseFuncNode.html">BaseFuncNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="structtvm_1_1relax_1_1BatchNormAttrs.html">BatchNormAttrs</a> (<a class="el [...]
+<dd><a class="el" href="classtvm_1_1te_1_1BaseComputeOpNode.html">BaseComputeOpNode</a> (<a class="el" href="namespacetvm_1_1te.html">tvm::te</a>)</dd><dd><a class="el" href="classtvm_1_1BaseFunc.html">BaseFunc</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1BaseFuncNode.html">BaseFuncNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="structtvm_1_1relax_1_1BatchNormAttrs.html">BatchNormAttrs</a> (<a class="el [...]
 <dl class="classindex even">
 <dt class="alphachar"><a id="letter_C" name="letter_C">C</a></dt>
 <dd><a class="el" href="classtvm_1_1Call.html">Call</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDoc.html">CallDoc</a> (<a class="el" href="namespacetvm_1_1script_1_1printer.html">tvm::script::printer</a>)</dd><dd><a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html">CallDocNode</a> (<a class="el" href="namespacetvm_1_1script_1_1printer.html">tvm::script::printer</a>)</dd><dd><a class="el" href="str [...]
@@ -127,7 +127,7 @@ $(function() {
 <dd><a class="el" href="classtvm_1_1relax_1_1SameShapeConstraint.html">SameShapeConstraint</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="classtvm_1_1relax_1_1SameShapeConstraintNode.html">SameShapeConstraintNode</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="classtvm_1_1tirx_1_1SBijectiveLayout.html">SBijectiveLayout</a> (<a class="el" href="namespacetvm_1_1tirx.html">tvm::tirx</a>)</dd>< [...]
 <dl class="classindex odd">
 <dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
-<dd><a class="el" href="structtvm_1_1relax_1_1TakeAttrs.html">TakeAttrs</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="classtvm_1_1Target.html">Target</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1TargetKind.html">TargetKind</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1TargetKindAttrMap.html">TargetKindAttrMap</a> (<a class="el" href="namespacet [...]
+<dd><a class="el" href="structtvm_1_1relax_1_1TakeAttrs.html">TakeAttrs</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="classtvm_1_1Target.html">Target</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1TargetKind.html">TargetKind</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1TargetKindAttrMap.html">TargetKindAttrMap</a> (<a class="el" href="namespacet [...]
 <dl class="classindex even">
 <dt class="alphachar"><a id="letter_U" name="letter_U">U</a></dt>
 <dd><a class="el" href="classtvm_1_1UniqueNameSupply.html">UniqueNameSupply</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1UniqueNameSupplyNode.html">UniqueNameSupplyNode</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1relax_1_1UnorderedTuplePattern.html">UnorderedTuplePattern</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="classtvm_1_1relax_1_1Unord [...]
diff --git a/docs/reference/api/doxygen/classtvm_1_1Expr.html b/docs/reference/api/doxygen/classtvm_1_1Expr.html
index ccf3b020dfa..9bb4b2942ad 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Expr.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Expr.html
@@ -87,7 +87,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::Expr:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Expr__inherit__graph.svg" width="7752" height="1175"><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_1Expr__inherit__graph.svg" width="7752" height="1300"><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::Expr:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Expr__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Expr__inherit__graph.svg
index 8603486a511..b69988821a8 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Expr__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Expr__inherit__graph.svg
@@ -4,29 +4,29 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Expr Pages: 1 -->
-<svg width="5814pt" height="881pt"
- viewBox="0.00 0.00 5814.00 881.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 877)">
+<svg width="5814pt" height="975pt"
+ viewBox="0.00 0.00 5814.00 975.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 971)">
 <title>tvm::Expr</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to ExprNode.">
-<polygon fill="#999999" stroke="transparent" points="4372,-788 4208,-788 4208,-683 4372,-683 4372,-788"/>
-<text text-anchor="start" x="4266" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="4288" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4212" y="-745.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4225" y="-745.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4212" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4225" y="-730.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4212" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4225" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4212" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4225" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4225" y="-689.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="4208,-770.5 4208,-770.5 4372,-770.5 4372,-770.5 4208,-770.5"/>
-<polygon fill="#666666" stroke="#666666" points="4208,-755.5 4208,-755.5 4372,-755.5 4372,-755.5 4208,-755.5"/>
-<polygon fill="none" stroke="#666666" points="4208,-683 4208,-788 4372,-788 4372,-683 4208,-683"/>
+<polygon fill="#999999" stroke="transparent" points="4372,-882 4208,-882 4208,-777 4372,-777 4372,-882"/>
+<text text-anchor="start" x="4266" y="-869.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="4288" y="-854.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4212" y="-839.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4225" y="-839.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="4212" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4225" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="4212" y="-809.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4225" y="-809.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="4212" y="-794.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4225" y="-794.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4225" y="-783.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="4208,-864.5 4208,-864.5 4372,-864.5 4372,-864.5 4208,-864.5"/>
+<polygon fill="#666666" stroke="#666666" points="4208,-849.5 4208,-849.5 4372,-849.5 4372,-849.5 4208,-849.5"/>
+<polygon fill="none" stroke="#666666" points="4208,-777 4208,-882 4372,-882 4372,-777 4208,-777"/>
 </a>
 </g>
 </g>
@@ -34,20 +34,20 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1TypedExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3076,-630 2912,-630 2912,-544 3076,-544 3076,-630"/>
-<text text-anchor="start" x="2922" y="-618" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
-<text text-anchor="start" x="2916" y="-603" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2929" y="-603" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="2929" y="-592" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="2916" y="-577" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2929" y="-577" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
-<text text-anchor="start" x="2916" y="-562" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2929" y="-562" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2929" y="-551" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="2912,-613 2912,-613 3076,-613 3076,-613 2912,-613"/>
-<polygon fill="#666666" stroke="#666666" points="2912,-587 2912,-587 2927,-587 2927,-587 2912,-587"/>
-<polygon fill="#666666" stroke="#666666" points="2927,-587 2927,-587 3076,-587 3076,-587 2927,-587"/>
-<polygon fill="none" stroke="#666666" points="2912,-544 2912,-630 3076,-630 3076,-544 2912,-544"/>
+<polygon fill="white" stroke="transparent" points="3076,-724 2912,-724 2912,-638 3076,-638 3076,-724"/>
+<text text-anchor="start" x="2922" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
+<text text-anchor="start" x="2916" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2929" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="2929" y="-686" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="2916" y="-671" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2929" y="-671" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
+<text text-anchor="start" x="2916" y="-656" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2929" y="-656" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2929" y="-645" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="2912,-707 2912,-707 3076,-707 3076,-707 2912,-707"/>
+<polygon fill="#666666" stroke="#666666" points="2912,-681 2912,-681 2927,-681 2927,-681 2912,-681"/>
+<polygon fill="#666666" stroke="#666666" points="2927,-681 2927,-681 3076,-681 3076,-681 2927,-681"/>
+<polygon fill="none" stroke="#666666" points="2912,-638 2912,-724 3076,-724 3076,-638 2912,-638"/>
 </a>
 </g>
 </g>
@@ -55,8 +55,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="M4197.61,-733.71C3952.6,-730.68 3290.96,-716.13 3085,-647 3072.86,-642.93 3060.75,-636.85 3049.51,-630.13"/>
-<polygon fill="none" stroke="#63b8ff" points="4197.87,-737.21 4207.91,-733.83 4197.95,-730.21 4197.87,-737.21"/>
+<path fill="none" stroke="#63b8ff" d="M4197.61,-827.71C3952.6,-824.68 3290.96,-810.13 3085,-741 3072.86,-736.93 3060.75,-730.85 3049.51,-724.13"/>
+<polygon fill="none" stroke="#63b8ff" points="4197.87,-831.21 4207.91,-827.83 4197.95,-824.21 4197.87,-831.21"/>
 </a>
 </g>
 </g>
@@ -64,15 +64,15 @@
 <g id="Node000039" class="node">
 <title>Node39</title>
 <g id="a_Node000039"><a xlink:href="classtvm_1_1BaseFunc.html" target="_top" xlink:title="Managed reference to BaseFuncNode.">
-<polygon fill="white" stroke="transparent" points="3258,-617 3094,-617 3094,-557 3258,-557 3258,-617"/>
-<text text-anchor="start" x="3139.5" y="-605" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFunc</text>
-<text text-anchor="start" x="3174" y="-590" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="3098" y="-575" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3111" y="-575" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3111" y="-564" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="3094,-600 3094,-600 3258,-600 3258,-600 3094,-600"/>
-<polygon fill="#666666" stroke="#666666" points="3094,-585 3094,-585 3258,-585 3258,-585 3094,-585"/>
-<polygon fill="none" stroke="#666666" points="3094,-557 3094,-617 3258,-617 3258,-557 3094,-557"/>
+<polygon fill="white" stroke="transparent" points="3258,-711 3094,-711 3094,-651 3258,-651 3258,-711"/>
+<text text-anchor="start" x="3139.5" y="-699" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFunc</text>
+<text text-anchor="start" x="3174" y="-684" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3098" y="-669" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3111" y="-669" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3111" y="-658" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="3094,-694 3094,-694 3258,-694 3258,-694 3094,-694"/>
+<polygon fill="#666666" stroke="#666666" points="3094,-679 3094,-679 3258,-679 3258,-679 3094,-679"/>
+<polygon fill="none" stroke="#666666" points="3094,-651 3094,-711 3258,-711 3258,-651 3094,-651"/>
 </a>
 </g>
 </g>
@@ -80,8 +80,8 @@
 <g id="edge38_Node000001_Node000039" class="edge">
 <title>Node1&#45;&gt;Node39</title>
 <g id="a_edge38_Node000001_Node000039"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4197.52,-732.32C3979.3,-726.25 3437.86,-705.58 3267,-647 3247.41,-640.28 3227.85,-628.45 3211.92,-617.13"/>
-<polygon fill="none" stroke="#63b8ff" points="4197.57,-735.82 4207.66,-732.59 4197.76,-728.82 4197.57,-735.82"/>
+<path fill="none" stroke="#63b8ff" d="M4197.52,-826.32C3979.3,-820.25 3437.86,-799.58 3267,-741 3247.41,-734.28 3227.85,-722.45 3211.92,-711.13"/>
+<polygon fill="none" stroke="#63b8ff" points="4197.57,-829.82 4207.66,-826.59 4197.76,-822.82 4197.57,-829.82"/>
 </a>
 </g>
 </g>
@@ -89,20 +89,20 @@
 <g id="Node000043" class="node">
 <title>Node43</title>
 <g id="a_Node000043"><a xlink:href="classtvm_1_1Call.html" target="_top" xlink:title="Managed reference to CallNode.">
-<polygon fill="white" stroke="transparent" points="3440,-637.5 3276,-637.5 3276,-536.5 3440,-536.5 3440,-637.5"/>
-<text text-anchor="start" x="3335.5" y="-625" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Call</text>
-<text text-anchor="start" x="3356" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="3280" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3293" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
-<text text-anchor="start" x="3280" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3293" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3293" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="3280" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3293" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="3293" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="3276,-620 3276,-620 3440,-620 3440,-620 3276,-620"/>
-<polygon fill="#666666" stroke="#666666" points="3276,-605 3276,-605 3440,-605 3440,-605 3276,-605"/>
-<polygon fill="none" stroke="#666666" points="3276,-536.5 3276,-637.5 3440,-637.5 3440,-536.5 3276,-536.5"/>
+<polygon fill="white" stroke="transparent" points="3440,-731.5 3276,-731.5 3276,-630.5 3440,-630.5 3440,-731.5"/>
+<text text-anchor="start" x="3335.5" y="-719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Call</text>
+<text text-anchor="start" x="3356" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3280" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3293" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">Call()</text>
+<text text-anchor="start" x="3280" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3293" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3293" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="3280" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3293" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="3293" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="3276,-714 3276,-714 3440,-714 3440,-714 3276,-714"/>
+<polygon fill="#666666" stroke="#666666" points="3276,-699 3276,-699 3440,-699 3440,-699 3276,-699"/>
+<polygon fill="none" stroke="#666666" points="3276,-630.5 3276,-731.5 3440,-731.5 3440,-630.5 3276,-630.5"/>
 </a>
 </g>
 </g>
@@ -110,8 +110,8 @@
 <g id="edge42_Node000001_Node000043" class="edge">
 <title>Node1&#45;&gt;Node43</title>
 <g id="a_edge42_Node000001_Node000043"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4197.6,-730.34C4008.81,-720.94 3585.17,-695.08 3449,-647 3441.72,-644.43 3434.44,-641.17 3427.34,-637.51"/>
-<polygon fill="none" stroke="#63b8ff" points="4197.62,-733.84 4207.78,-730.84 4197.96,-726.85 4197.62,-733.84"/>
+<path fill="none" stroke="#63b8ff" d="M4197.6,-824.34C4008.81,-814.94 3585.17,-789.08 3449,-741 3441.72,-738.43 3434.44,-735.17 3427.34,-731.51"/>
+<polygon fill="none" stroke="#63b8ff" points="4197.62,-827.84 4207.78,-824.84 4197.96,-820.85 4197.62,-827.84"/>
 </a>
 </g>
 </g>
@@ -119,20 +119,20 @@
 <g id="Node000044" class="node">
 <title>Node44</title>
 <g id="a_Node000044"><a xlink:href="classtvm_1_1GlobalVar.html" target="_top" xlink:title="Managed reference to GlobalVarNode.">
-<polygon fill="white" stroke="transparent" points="3622,-637.5 3458,-637.5 3458,-536.5 3622,-536.5 3622,-637.5"/>
-<text text-anchor="start" x="3503.5" y="-625" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GlobalVar</text>
-<text text-anchor="start" x="3538" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="3462" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3475" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">GlobalVar()</text>
-<text text-anchor="start" x="3462" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3475" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3475" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="3462" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3475" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="3475" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="3458,-620 3458,-620 3622,-620 3622,-620 3458,-620"/>
-<polygon fill="#666666" stroke="#666666" points="3458,-605 3458,-605 3622,-605 3622,-605 3458,-605"/>
-<polygon fill="none" stroke="#666666" points="3458,-536.5 3458,-637.5 3622,-637.5 3622,-536.5 3458,-536.5"/>
+<polygon fill="white" stroke="transparent" points="3622,-731.5 3458,-731.5 3458,-630.5 3622,-630.5 3622,-731.5"/>
+<text text-anchor="start" x="3503.5" y="-719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GlobalVar</text>
+<text text-anchor="start" x="3538" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3462" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3475" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">GlobalVar()</text>
+<text text-anchor="start" x="3462" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3475" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3475" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="3462" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3475" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="3475" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="3458,-714 3458,-714 3622,-714 3622,-714 3458,-714"/>
+<polygon fill="#666666" stroke="#666666" points="3458,-699 3458,-699 3622,-699 3622,-699 3458,-699"/>
+<polygon fill="none" stroke="#666666" points="3458,-630.5 3458,-731.5 3622,-731.5 3622,-630.5 3458,-630.5"/>
 </a>
 </g>
 </g>
@@ -140,8 +140,8 @@
 <g id="edge43_Node000001_Node000044" class="edge">
 <title>Node1&#45;&gt;Node44</title>
 <g id="a_edge43_Node000001_Node000044"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4197.54,-734.9C4067.19,-732.66 3823.78,-718.16 3631,-647 3623.93,-644.39 3616.86,-641.16 3609.94,-637.56"/>
-<polygon fill="none" stroke="#63b8ff" points="4197.82,-738.4 4207.88,-735.05 4197.93,-731.4 4197.82,-738.4"/>
+<path fill="none" stroke="#63b8ff" d="M4197.54,-828.9C4067.19,-826.66 3823.78,-812.16 3631,-741 3623.93,-738.39 3616.86,-735.16 3609.94,-731.56"/>
+<polygon fill="none" stroke="#63b8ff" points="4197.82,-832.4 4207.88,-829.05 4197.93,-825.4 4197.82,-832.4"/>
 </a>
 </g>
 </g>
@@ -149,23 +149,23 @@
 <g id="Node000045" class="node">
 <title>Node45</title>
 <g id="a_Node000045"><a xlink:href="classtvm_1_1Op.html" target="_top" xlink:title="Managed reference class to OpNode.">
-<polygon fill="white" stroke="transparent" points="3825.5,-647 3640.5,-647 3640.5,-527 3825.5,-527 3825.5,-647"/>
-<text text-anchor="start" x="3713.5" y="-635" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Op</text>
-<text text-anchor="start" x="3731.5" y="-620" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="3645" y="-605" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3658" y="-605" font-family="Helvetica,sans-Serif" font-size="10.00">Op()</text>
-<text text-anchor="start" x="3645" y="-590" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3658" y="-590" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3658" y="-579" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="3645" y="-564" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3658" y="-564" font-family="Helvetica,sans-Serif" font-size="10.00">GetAttrMap()</text>
-<text text-anchor="start" x="3645" y="-549" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3658" y="-549" font-family="Helvetica,sans-Serif" font-size="10.00">HasAttrMap()</text>
-<text text-anchor="start" x="3645" y="-534" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3658" y="-534" font-family="Helvetica,sans-Serif" font-size="10.00">Get()</text>
-<polygon fill="#666666" stroke="#666666" points="3641,-630 3641,-630 3826,-630 3826,-630 3641,-630"/>
-<polygon fill="#666666" stroke="#666666" points="3641,-615 3641,-615 3826,-615 3826,-615 3641,-615"/>
-<polygon fill="none" stroke="#666666" points="3640.5,-527 3640.5,-647 3825.5,-647 3825.5,-527 3640.5,-527"/>
+<polygon fill="white" stroke="transparent" points="3825.5,-741 3640.5,-741 3640.5,-621 3825.5,-621 3825.5,-741"/>
+<text text-anchor="start" x="3713.5" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Op</text>
+<text text-anchor="start" x="3731.5" y="-714" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3645" y="-699" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3658" y="-699" font-family="Helvetica,sans-Serif" font-size="10.00">Op()</text>
+<text text-anchor="start" x="3645" y="-684" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3658" y="-684" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3658" y="-673" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="3645" y="-658" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3658" y="-658" font-family="Helvetica,sans-Serif" font-size="10.00">GetAttrMap()</text>
+<text text-anchor="start" x="3645" y="-643" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3658" y="-643" font-family="Helvetica,sans-Serif" font-size="10.00">HasAttrMap()</text>
+<text text-anchor="start" x="3645" y="-628" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3658" y="-628" font-family="Helvetica,sans-Serif" font-size="10.00">Get()</text>
+<polygon fill="#666666" stroke="#666666" points="3641,-724 3641,-724 3826,-724 3826,-724 3641,-724"/>
+<polygon fill="#666666" stroke="#666666" points="3641,-709 3641,-709 3826,-709 3826,-709 3641,-709"/>
+<polygon fill="none" stroke="#666666" points="3640.5,-621 3640.5,-741 3825.5,-741 3825.5,-621 3640.5,-621"/>
 </a>
 </g>
 </g>
@@ -173,8 +173,8 @@
 <g id="edge44_Node000001_Node000045" class="edge">
 <title>Node1&#45;&gt;Node45</title>
 <g id="a_edge44_Node000001_Node000045"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4197.62,-725.88C4103.92,-715.05 3955.89,-692.12 3835,-647 3831.93,-645.86 3828.85,-644.62 3825.77,-643.32"/>
-<polygon fill="none" stroke="#63b8ff" points="4197.31,-729.37 4207.64,-727.02 4198.1,-722.41 4197.31,-729.37"/>
+<path fill="none" stroke="#63b8ff" d="M4197.62,-819.88C4103.92,-809.05 3955.89,-786.12 3835,-741 3831.93,-739.86 3828.85,-738.62 3825.77,-737.32"/>
+<polygon fill="none" stroke="#63b8ff" points="4197.31,-823.37 4207.64,-821.02 4198.1,-816.41 4197.31,-823.37"/>
 </a>
 </g>
 </g>
@@ -182,21 +182,21 @@
 <g id="Node000046" class="node">
 <title>Node46</title>
 <g id="a_Node000046"><a xlink:href="classtvm_1_1TypedExpr.html" target="_top" xlink:title="Typed reference/view over an expression whose result type is a specific Type subtype.">
-<polygon fill="white" stroke="transparent" points="4008,-635.5 3844,-635.5 3844,-538.5 4008,-538.5 4008,-635.5"/>
-<text text-anchor="start" x="3859.5" y="-623" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; Expected</text>
-<text text-anchor="start" x="3909" y="-612" font-family="Helvetica,sans-Serif" font-size="10.00">Type &gt;</text>
-<text text-anchor="start" x="3848" y="-597" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3861" y="-597" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="3861" y="-586" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="3848" y="-571" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3861" y="-571" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
-<text text-anchor="start" x="3848" y="-556" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3861" y="-556" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3861" y="-545" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="3844,-607 3844,-607 4008,-607 4008,-607 3844,-607"/>
-<polygon fill="#666666" stroke="#666666" points="3844,-581 3844,-581 3859,-581 3859,-581 3844,-581"/>
-<polygon fill="#666666" stroke="#666666" points="3859,-581 3859,-581 4008,-581 4008,-581 3859,-581"/>
-<polygon fill="none" stroke="#666666" points="3844,-538.5 3844,-635.5 4008,-635.5 4008,-538.5 3844,-538.5"/>
+<polygon fill="white" stroke="transparent" points="4008,-729.5 3844,-729.5 3844,-632.5 4008,-632.5 4008,-729.5"/>
+<text text-anchor="start" x="3859.5" y="-717" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; Expected</text>
+<text text-anchor="start" x="3909" y="-706" font-family="Helvetica,sans-Serif" font-size="10.00">Type &gt;</text>
+<text text-anchor="start" x="3848" y="-691" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3861" y="-691" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="3861" y="-680" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="3848" y="-665" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3861" y="-665" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
+<text text-anchor="start" x="3848" y="-650" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3861" y="-650" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3861" y="-639" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="3844,-701 3844,-701 4008,-701 4008,-701 3844,-701"/>
+<polygon fill="#666666" stroke="#666666" points="3844,-675 3844,-675 3859,-675 3859,-675 3844,-675"/>
+<polygon fill="#666666" stroke="#666666" points="3859,-675 3859,-675 4008,-675 4008,-675 3859,-675"/>
+<polygon fill="none" stroke="#666666" points="3844,-632.5 3844,-729.5 4008,-729.5 4008,-632.5 3844,-632.5"/>
 </a>
 </g>
 </g>
@@ -204,8 +204,8 @@
 <g id="edge45_Node000001_Node000046" class="edge">
 <title>Node1&#45;&gt;Node46</title>
 <g id="a_edge45_Node000001_Node000046"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4197.9,-711.56C4143.85,-696.5 4075,-674.5 4017,-647 4009.77,-643.57 4002.43,-639.66 3995.22,-635.51"/>
-<polygon fill="none" stroke="#63b8ff" points="4197.24,-715.01 4207.81,-714.29 4199.1,-708.26 4197.24,-715.01"/>
+<path fill="none" stroke="#63b8ff" d="M4197.9,-805.56C4143.85,-790.5 4075,-768.5 4017,-741 4009.77,-737.57 4002.43,-733.66 3995.22,-729.51"/>
+<polygon fill="none" stroke="#63b8ff" points="4197.24,-809.01 4207.81,-808.29 4199.1,-802.26 4197.24,-809.01"/>
 </a>
 </g>
 </g>
@@ -213,23 +213,23 @@
 <g id="Node000047" class="node">
 <title>Node47</title>
 <g id="a_Node000047"><a xlink:href="classtvm_1_1Var.html" target="_top" xlink:title="Managed reference to VarNode.">
-<polygon fill="white" stroke="transparent" points="4190,-647 4026,-647 4026,-527 4190,-527 4190,-647"/>
-<text text-anchor="start" x="4087" y="-635" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
-<text text-anchor="start" x="4106" y="-620" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4030" y="-605" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4043" y="-605" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
-<text text-anchor="start" x="4030" y="-590" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4043" y="-590" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
-<text text-anchor="start" x="4030" y="-575" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4043" y="-575" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
-<text text-anchor="start" x="4030" y="-560" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4043" y="-560" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
-<text text-anchor="start" x="4030" y="-545" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4043" y="-545" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4043" y="-534" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="4026,-630 4026,-630 4190,-630 4190,-630 4026,-630"/>
-<polygon fill="#666666" stroke="#666666" points="4026,-615 4026,-615 4190,-615 4190,-615 4026,-615"/>
-<polygon fill="none" stroke="#666666" points="4026,-527 4026,-647 4190,-647 4190,-527 4026,-527"/>
+<polygon fill="white" stroke="transparent" points="4190,-741 4026,-741 4026,-621 4190,-621 4190,-741"/>
+<text text-anchor="start" x="4087" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
+<text text-anchor="start" x="4106" y="-714" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4030" y="-699" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4043" y="-699" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
+<text text-anchor="start" x="4030" y="-684" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4043" y="-684" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
+<text text-anchor="start" x="4030" y="-669" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4043" y="-669" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="4030" y="-654" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4043" y="-654" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="4030" y="-639" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4043" y="-639" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4043" y="-628" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="4026,-724 4026,-724 4190,-724 4190,-724 4026,-724"/>
+<polygon fill="#666666" stroke="#666666" points="4026,-709 4026,-709 4190,-709 4190,-709 4026,-709"/>
+<polygon fill="none" stroke="#666666" points="4026,-621 4026,-741 4190,-741 4190,-621 4026,-621"/>
 </a>
 </g>
 </g>
@@ -237,59 +237,29 @@
 <g id="edge46_Node000001_Node000047" class="edge">
 <title>Node1&#45;&gt;Node47</title>
 <g id="a_edge46_Node000001_Node000047"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4218.02,-676.56C4206.03,-666.91 4193.57,-656.88 4181.53,-647.19"/>
-<polygon fill="none" stroke="#63b8ff" points="4215.85,-679.31 4225.83,-682.85 4220.24,-673.85 4215.85,-679.31"/>
-</a>
-</g>
-</g>
-<!-- Node49 -->
-<g id="Node000049" class="node">
-<title>Node49</title>
-<g id="a_Node000049"><a xlink:href="classtvm_1_1relax_1_1Constant.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="4372,-637.5 4208,-637.5 4208,-536.5 4372,-536.5 4372,-637.5"/>
-<text text-anchor="start" x="4240" y="-625" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Constant</text>
-<text text-anchor="start" x="4288" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4212" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4225" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">Constant()</text>
-<text text-anchor="start" x="4212" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4225" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4225" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="4212" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4225" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="4225" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="4208,-620 4208,-620 4372,-620 4372,-620 4208,-620"/>
-<polygon fill="#666666" stroke="#666666" points="4208,-605 4208,-605 4372,-605 4372,-605 4208,-605"/>
-<polygon fill="none" stroke="#666666" points="4208,-536.5 4208,-637.5 4372,-637.5 4372,-536.5 4208,-536.5"/>
-</a>
-</g>
-</g>
-<!-- Node1&#45;&gt;Node49 -->
-<g id="edge48_Node000001_Node000049" class="edge">
-<title>Node1&#45;&gt;Node49</title>
-<g id="a_edge48_Node000001_Node000049"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4290,-672.72C4290,-661.04 4290,-648.96 4290,-637.71"/>
-<polygon fill="none" stroke="#63b8ff" points="4286.5,-672.85 4290,-682.85 4293.5,-672.85 4286.5,-672.85"/>
+<path fill="none" stroke="#63b8ff" d="M4218.02,-770.56C4206.03,-760.91 4193.57,-750.88 4181.53,-741.19"/>
+<polygon fill="none" stroke="#63b8ff" points="4215.85,-773.31 4225.83,-776.85 4220.24,-767.85 4215.85,-773.31"/>
 </a>
 </g>
 </g>
 <!-- Node50 -->
 <g id="Node000050" class="node">
 <title>Node50</title>
-<g id="a_Node000050"><a xlink:href="classtvm_1_1relax_1_1DataTypeImm.html" target="_top" xlink:title="Managed reference to DataTypeImm.">
-<polygon fill="white" stroke="transparent" points="4554,-637.5 4390,-637.5 4390,-536.5 4554,-536.5 4554,-637.5"/>
-<text text-anchor="start" x="4409.5" y="-625" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataTypeImm</text>
-<text text-anchor="start" x="4470" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4394" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4407" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
-<text text-anchor="start" x="4394" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4407" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4407" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="4394" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4407" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="4407" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="4390,-620 4390,-620 4554,-620 4554,-620 4390,-620"/>
-<polygon fill="#666666" stroke="#666666" points="4390,-605 4390,-605 4554,-605 4554,-605 4390,-605"/>
-<polygon fill="none" stroke="#666666" points="4390,-536.5 4390,-637.5 4554,-637.5 4554,-536.5 4390,-536.5"/>
+<g id="a_Node000050"><a xlink:href="classtvm_1_1relax_1_1Constant.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="transparent" points="4372,-731.5 4208,-731.5 4208,-630.5 4372,-630.5 4372,-731.5"/>
+<text text-anchor="start" x="4240" y="-719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Constant</text>
+<text text-anchor="start" x="4288" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4212" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4225" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">Constant()</text>
+<text text-anchor="start" x="4212" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4225" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4225" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4212" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4225" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="4225" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="4208,-714 4208,-714 4372,-714 4372,-714 4208,-714"/>
+<polygon fill="#666666" stroke="#666666" points="4208,-699 4208,-699 4372,-699 4372,-699 4208,-699"/>
+<polygon fill="none" stroke="#666666" points="4208,-630.5 4208,-731.5 4372,-731.5 4372,-630.5 4208,-630.5"/>
 </a>
 </g>
 </g>
@@ -297,29 +267,29 @@
 <g id="edge49_Node000001_Node000050" class="edge">
 <title>Node1&#45;&gt;Node50</title>
 <g id="a_edge49_Node000001_Node000050"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4362.37,-676.24C4378.22,-663.49 4394.86,-650.1 4410.25,-637.71"/>
-<polygon fill="none" stroke="#63b8ff" points="4359.76,-673.85 4354.17,-682.85 4364.15,-679.31 4359.76,-673.85"/>
+<path fill="none" stroke="#63b8ff" d="M4290,-766.72C4290,-755.04 4290,-742.96 4290,-731.71"/>
+<polygon fill="none" stroke="#63b8ff" points="4286.5,-766.85 4290,-776.85 4293.5,-766.85 4286.5,-766.85"/>
 </a>
 </g>
 </g>
 <!-- Node51 -->
 <g id="Node000051" class="node">
 <title>Node51</title>
-<g id="a_Node000051"><a xlink:href="classtvm_1_1relax_1_1If.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="4736,-637.5 4572,-637.5 4572,-536.5 4736,-536.5 4736,-637.5"/>
-<text text-anchor="start" x="4622" y="-625" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::If</text>
-<text text-anchor="start" x="4652" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4576" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4589" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">If()</text>
-<text text-anchor="start" x="4576" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4589" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4589" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="4576" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4589" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="4589" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="4572,-620 4572,-620 4736,-620 4736,-620 4572,-620"/>
-<polygon fill="#666666" stroke="#666666" points="4572,-605 4572,-605 4736,-605 4736,-605 4572,-605"/>
-<polygon fill="none" stroke="#666666" points="4572,-536.5 4572,-637.5 4736,-637.5 4736,-536.5 4572,-536.5"/>
+<g id="a_Node000051"><a xlink:href="classtvm_1_1relax_1_1DataTypeImm.html" target="_top" xlink:title="Managed reference to DataTypeImm.">
+<polygon fill="white" stroke="transparent" points="4554,-731.5 4390,-731.5 4390,-630.5 4554,-630.5 4554,-731.5"/>
+<text text-anchor="start" x="4409.5" y="-719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataTypeImm</text>
+<text text-anchor="start" x="4470" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4394" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4407" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">DataTypeImm()</text>
+<text text-anchor="start" x="4394" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4407" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4407" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4394" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4407" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="4407" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="4390,-714 4390,-714 4554,-714 4554,-714 4390,-714"/>
+<polygon fill="#666666" stroke="#666666" points="4390,-699 4390,-699 4554,-699 4554,-699 4390,-699"/>
+<polygon fill="none" stroke="#666666" points="4390,-630.5 4390,-731.5 4554,-731.5 4554,-630.5 4390,-630.5"/>
 </a>
 </g>
 </g>
@@ -327,31 +297,29 @@
 <g id="edge50_Node000001_Node000051" class="edge">
 <title>Node1&#45;&gt;Node51</title>
 <g id="a_edge50_Node000001_Node000051"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4382.1,-711.56C4436.15,-696.5 4505,-674.5 4563,-647 4569.04,-644.14 4575.15,-640.93 4581.21,-637.54"/>
-<polygon fill="none" stroke="#63b8ff" points="4380.9,-708.26 4372.19,-714.29 4382.76,-715.01 4380.9,-708.26"/>
+<path fill="none" stroke="#63b8ff" d="M4362.37,-770.24C4378.22,-757.49 4394.86,-744.1 4410.25,-731.71"/>
+<polygon fill="none" stroke="#63b8ff" points="4359.76,-767.85 4354.17,-776.85 4364.15,-773.31 4359.76,-767.85"/>
 </a>
 </g>
 </g>
 <!-- Node52 -->
 <g id="Node000052" class="node">
 <title>Node52</title>
-<g id="a_Node000052"><a xlink:href="classtvm_1_1relax_1_1SeqExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="4918,-645 4754,-645 4754,-529 4918,-529 4918,-645"/>
-<text text-anchor="start" x="4787.5" y="-633" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::SeqExpr</text>
-<text text-anchor="start" x="4834" y="-618" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4758" y="-603" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4771" y="-603" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
-<text text-anchor="start" x="4758" y="-588" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4771" y="-588" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
-<text text-anchor="start" x="4758" y="-573" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4771" y="-573" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4771" y="-562" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="4758" y="-547" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4771" y="-547" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="4771" y="-536" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="4754,-628 4754,-628 4918,-628 4918,-628 4754,-628"/>
-<polygon fill="#666666" stroke="#666666" points="4754,-613 4754,-613 4918,-613 4918,-613 4754,-613"/>
-<polygon fill="none" stroke="#666666" points="4754,-529 4754,-645 4918,-645 4918,-529 4754,-529"/>
+<g id="a_Node000052"><a xlink:href="classtvm_1_1relax_1_1If.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="transparent" points="4736,-731.5 4572,-731.5 4572,-630.5 4736,-630.5 4736,-731.5"/>
+<text text-anchor="start" x="4622" y="-719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::If</text>
+<text text-anchor="start" x="4652" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4576" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4589" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">If()</text>
+<text text-anchor="start" x="4576" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4589" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4589" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4576" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4589" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="4589" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="4572,-714 4572,-714 4736,-714 4736,-714 4572,-714"/>
+<polygon fill="#666666" stroke="#666666" points="4572,-699 4572,-699 4736,-699 4736,-699 4572,-699"/>
+<polygon fill="none" stroke="#666666" points="4572,-630.5 4572,-731.5 4736,-731.5 4736,-630.5 4572,-630.5"/>
 </a>
 </g>
 </g>
@@ -359,29 +327,31 @@
 <g id="edge51_Node000001_Node000052" class="edge">
 <title>Node1&#45;&gt;Node52</title>
 <g id="a_edge51_Node000001_Node000052"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4382.46,-727.2C4476.52,-717.4 4625.12,-695.24 4745,-647 4747.97,-645.81 4750.95,-644.51 4753.92,-643.13"/>
-<polygon fill="none" stroke="#63b8ff" points="4381.99,-723.73 4372.39,-728.23 4382.7,-730.7 4381.99,-723.73"/>
+<path fill="none" stroke="#63b8ff" d="M4382.1,-805.56C4436.15,-790.5 4505,-768.5 4563,-741 4569.04,-738.14 4575.15,-734.93 4581.21,-731.54"/>
+<polygon fill="none" stroke="#63b8ff" points="4380.9,-802.26 4372.19,-808.29 4382.76,-809.01 4380.9,-802.26"/>
 </a>
 </g>
 </g>
 <!-- Node53 -->
 <g id="Node000053" class="node">
 <title>Node53</title>
-<g id="a_Node000053"><a xlink:href="classtvm_1_1relax_1_1ShapeExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="5100,-637.5 4936,-637.5 4936,-536.5 5100,-536.5 5100,-637.5"/>
-<text text-anchor="start" x="4963.5" y="-625" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ShapeExpr</text>
-<text text-anchor="start" x="5016" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4940" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4953" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">ShapeExpr()</text>
-<text text-anchor="start" x="4940" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4953" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4953" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="4940" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4953" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="4953" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="4936,-620 4936,-620 5100,-620 5100,-620 4936,-620"/>
-<polygon fill="#666666" stroke="#666666" points="4936,-605 4936,-605 5100,-605 5100,-605 4936,-605"/>
-<polygon fill="none" stroke="#666666" points="4936,-536.5 4936,-637.5 5100,-637.5 5100,-536.5 4936,-536.5"/>
+<g id="a_Node000053"><a xlink:href="classtvm_1_1relax_1_1SeqExpr.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="transparent" points="4918,-739 4754,-739 4754,-623 4918,-623 4918,-739"/>
+<text text-anchor="start" x="4787.5" y="-727" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::SeqExpr</text>
+<text text-anchor="start" x="4834" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4758" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
+<text text-anchor="start" x="4758" y="-682" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-682" font-family="Helvetica,sans-Serif" font-size="10.00">SeqExpr()</text>
+<text text-anchor="start" x="4758" y="-667" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-667" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4771" y="-656" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4758" y="-641" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4771" y="-641" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="4771" y="-630" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="4754,-722 4754,-722 4918,-722 4918,-722 4754,-722"/>
+<polygon fill="#666666" stroke="#666666" points="4754,-707 4754,-707 4918,-707 4918,-707 4754,-707"/>
+<polygon fill="none" stroke="#666666" points="4754,-623 4754,-739 4918,-739 4918,-623 4754,-623"/>
 </a>
 </g>
 </g>
@@ -389,29 +359,29 @@
 <g id="edge52_Node000001_Node000053" class="edge">
 <title>Node1&#45;&gt;Node53</title>
 <g id="a_edge52_Node000001_Node000053"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4382.25,-734.3C4508.94,-731.26 4742.1,-715.73 4927,-647 4934.06,-644.38 4941.13,-641.13 4948.05,-637.52"/>
-<polygon fill="none" stroke="#63b8ff" points="4382.11,-730.8 4372.19,-734.52 4382.27,-737.8 4382.11,-730.8"/>
+<path fill="none" stroke="#63b8ff" d="M4382.46,-821.2C4476.52,-811.4 4625.12,-789.24 4745,-741 4747.97,-739.81 4750.95,-738.51 4753.92,-737.13"/>
+<polygon fill="none" stroke="#63b8ff" points="4381.99,-817.73 4372.39,-822.23 4382.7,-824.7 4381.99,-817.73"/>
 </a>
 </g>
 </g>
 <!-- Node54 -->
 <g id="Node000054" class="node">
 <title>Node54</title>
-<g id="a_Node000054"><a xlink:href="classtvm_1_1relax_1_1StringImm.html" target="_top" xlink:title="Managed reference to StringImm.">
-<polygon fill="white" stroke="transparent" points="5282,-637.5 5118,-637.5 5118,-536.5 5282,-536.5 5282,-637.5"/>
-<text text-anchor="start" x="5146" y="-625" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StringImm</text>
-<text text-anchor="start" x="5198" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5122" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5135" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">StringImm()</text>
-<text text-anchor="start" x="5122" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5135" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5135" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="5122" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5135" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="5135" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="5118,-620 5118,-620 5282,-620 5282,-620 5118,-620"/>
-<polygon fill="#666666" stroke="#666666" points="5118,-605 5118,-605 5282,-605 5282,-605 5118,-605"/>
-<polygon fill="none" stroke="#666666" points="5118,-536.5 5118,-637.5 5282,-637.5 5282,-536.5 5118,-536.5"/>
+<g id="a_Node000054"><a xlink:href="classtvm_1_1relax_1_1ShapeExpr.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="transparent" points="5100,-731.5 4936,-731.5 4936,-630.5 5100,-630.5 5100,-731.5"/>
+<text text-anchor="start" x="4963.5" y="-719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ShapeExpr</text>
+<text text-anchor="start" x="5016" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4940" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4953" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">ShapeExpr()</text>
+<text text-anchor="start" x="4940" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4953" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4953" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="4940" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4953" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="4953" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="4936,-714 4936,-714 5100,-714 5100,-714 4936,-714"/>
+<polygon fill="#666666" stroke="#666666" points="4936,-699 4936,-699 5100,-699 5100,-699 4936,-699"/>
+<polygon fill="none" stroke="#666666" points="4936,-630.5 4936,-731.5 5100,-731.5 5100,-630.5 4936,-630.5"/>
 </a>
 </g>
 </g>
@@ -419,31 +389,29 @@
 <g id="edge53_Node000001_Node000054" class="edge">
 <title>Node1&#45;&gt;Node54</title>
 <g id="a_edge53_Node000001_Node000054"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4382.34,-730.04C4567.34,-720.23 4976.98,-693.82 5109,-647 5116.19,-644.45 5123.38,-641.23 5130.39,-637.62"/>
-<polygon fill="none" stroke="#63b8ff" points="4381.89,-726.56 4372.09,-730.58 4382.26,-733.55 4381.89,-726.56"/>
+<path fill="none" stroke="#63b8ff" d="M4382.25,-828.3C4508.94,-825.26 4742.1,-809.73 4927,-741 4934.06,-738.38 4941.13,-735.13 4948.05,-731.52"/>
+<polygon fill="none" stroke="#63b8ff" points="4382.11,-824.8 4372.19,-828.52 4382.27,-831.8 4382.11,-824.8"/>
 </a>
 </g>
 </g>
 <!-- Node55 -->
 <g id="Node000055" class="node">
 <title>Node55</title>
-<g id="a_Node000055"><a xlink:href="classtvm_1_1relax_1_1Tuple.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="5464,-645 5300,-645 5300,-529 5464,-529 5464,-645"/>
-<text text-anchor="start" x="5341" y="-633" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Tuple</text>
-<text text-anchor="start" x="5380" y="-618" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5304" y="-603" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5317" y="-603" font-family="Helvetica,sans-Serif" font-size="10.00">Tuple()</text>
-<text text-anchor="start" x="5304" y="-588" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5317" y="-588" font-family="Helvetica,sans-Serif" font-size="10.00">Tuple()</text>
-<text text-anchor="start" x="5304" y="-573" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5317" y="-573" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5317" y="-562" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="5304" y="-547" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5317" y="-547" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="5317" y="-536" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="5300,-628 5300,-628 5464,-628 5464,-628 5300,-628"/>
-<polygon fill="#666666" stroke="#666666" points="5300,-613 5300,-613 5464,-613 5464,-613 5300,-613"/>
-<polygon fill="none" stroke="#666666" points="5300,-529 5300,-645 5464,-645 5464,-529 5300,-529"/>
+<g id="a_Node000055"><a xlink:href="classtvm_1_1relax_1_1StringImm.html" target="_top" xlink:title="Managed reference to StringImm.">
+<polygon fill="white" stroke="transparent" points="5282,-731.5 5118,-731.5 5118,-630.5 5282,-630.5 5282,-731.5"/>
+<text text-anchor="start" x="5146" y="-719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StringImm</text>
+<text text-anchor="start" x="5198" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="5122" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5135" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">StringImm()</text>
+<text text-anchor="start" x="5122" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5135" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5135" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="5122" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5135" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="5135" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="5118,-714 5118,-714 5282,-714 5282,-714 5118,-714"/>
+<polygon fill="#666666" stroke="#666666" points="5118,-699 5118,-699 5282,-699 5282,-699 5118,-699"/>
+<polygon fill="none" stroke="#666666" points="5118,-630.5 5118,-731.5 5282,-731.5 5282,-630.5 5118,-630.5"/>
 </a>
 </g>
 </g>
@@ -451,29 +419,31 @@
 <g id="edge54_Node000001_Node000055" class="edge">
 <title>Node1&#45;&gt;Node55</title>
 <g id="a_edge54_Node000001_Node000055"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4382.38,-732.12C4597.12,-725.66 5124.33,-704.31 5291,-647 5293.94,-645.99 5296.88,-644.86 5299.8,-643.64"/>
-<polygon fill="none" stroke="#63b8ff" points="4381.97,-728.63 4372.08,-732.42 4382.18,-735.62 4381.97,-728.63"/>
+<path fill="none" stroke="#63b8ff" d="M4382.34,-824.04C4567.34,-814.23 4976.98,-787.82 5109,-741 5116.19,-738.45 5123.38,-735.23 5130.39,-731.62"/>
+<polygon fill="none" stroke="#63b8ff" points="4381.89,-820.56 4372.09,-824.58 4382.26,-827.55 4381.89,-820.56"/>
 </a>
 </g>
 </g>
 <!-- Node56 -->
 <g id="Node000056" class="node">
 <title>Node56</title>
-<g id="a_Node000056"><a xlink:href="classtvm_1_1relax_1_1TupleGetItem.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="5646,-637.5 5482,-637.5 5482,-536.5 5646,-536.5 5646,-637.5"/>
-<text text-anchor="start" x="5503" y="-625" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::TupleGetItem</text>
-<text text-anchor="start" x="5562" y="-610" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5486" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5499" y="-595" font-family="Helvetica,sans-Serif" font-size="10.00">TupleGetItem()</text>
-<text text-anchor="start" x="5486" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5499" y="-580" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5499" y="-569" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="5486" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5499" y="-554" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="5499" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="5482,-620 5482,-620 5646,-620 5646,-620 5482,-620"/>
-<polygon fill="#666666" stroke="#666666" points="5482,-605 5482,-605 5646,-605 5646,-605 5482,-605"/>
-<polygon fill="none" stroke="#666666" points="5482,-536.5 5482,-637.5 5646,-637.5 5646,-536.5 5482,-536.5"/>
+<g id="a_Node000056"><a xlink:href="classtvm_1_1relax_1_1Tuple.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="transparent" points="5464,-739 5300,-739 5300,-623 5464,-623 5464,-739"/>
+<text text-anchor="start" x="5341" y="-727" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Tuple</text>
+<text text-anchor="start" x="5380" y="-712" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="5304" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5317" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">Tuple()</text>
+<text text-anchor="start" x="5304" y="-682" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5317" y="-682" font-family="Helvetica,sans-Serif" font-size="10.00">Tuple()</text>
+<text text-anchor="start" x="5304" y="-667" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5317" y="-667" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5317" y="-656" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="5304" y="-641" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5317" y="-641" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="5317" y="-630" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="5300,-722 5300,-722 5464,-722 5464,-722 5300,-722"/>
+<polygon fill="#666666" stroke="#666666" points="5300,-707 5300,-707 5464,-707 5464,-707 5300,-707"/>
+<polygon fill="none" stroke="#666666" points="5300,-623 5300,-739 5464,-739 5464,-623 5300,-623"/>
 </a>
 </g>
 </g>
@@ -481,8 +451,38 @@
 <g id="edge55_Node000001_Node000056" class="edge">
 <title>Node1&#45;&gt;Node56</title>
 <g id="a_edge55_Node000001_Node000056"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4382.43,-733.56C4624.34,-730.18 5271.31,-714.85 5473,-647 5480.41,-644.51 5487.8,-641.27 5495,-637.6"/>
-<polygon fill="none" stroke="#63b8ff" points="4382.21,-730.07 4372.26,-733.7 4382.3,-737.07 4382.21,-730.07"/>
+<path fill="none" stroke="#63b8ff" d="M4382.38,-826.12C4597.12,-819.66 5124.33,-798.31 5291,-741 5293.94,-739.99 5296.88,-738.86 5299.8,-737.64"/>
+<polygon fill="none" stroke="#63b8ff" points="4381.97,-822.63 4372.08,-826.42 4382.18,-829.62 4381.97,-822.63"/>
+</a>
+</g>
+</g>
+<!-- Node57 -->
+<g id="Node000057" class="node">
+<title>Node57</title>
+<g id="a_Node000057"><a xlink:href="classtvm_1_1relax_1_1TupleGetItem.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="transparent" points="5646,-731.5 5482,-731.5 5482,-630.5 5646,-630.5 5646,-731.5"/>
+<text text-anchor="start" x="5503" y="-719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::TupleGetItem</text>
+<text text-anchor="start" x="5562" y="-704" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="5486" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-689" font-family="Helvetica,sans-Serif" font-size="10.00">TupleGetItem()</text>
+<text text-anchor="start" x="5486" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5499" y="-663" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="5486" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5499" y="-648" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="5499" y="-637" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="5482,-714 5482,-714 5646,-714 5646,-714 5482,-714"/>
+<polygon fill="#666666" stroke="#666666" points="5482,-699 5482,-699 5646,-699 5646,-699 5482,-699"/>
+<polygon fill="none" stroke="#666666" points="5482,-630.5 5482,-731.5 5646,-731.5 5646,-630.5 5482,-630.5"/>
+</a>
+</g>
+</g>
+<!-- Node1&#45;&gt;Node57 -->
+<g id="edge56_Node000001_Node000057" class="edge">
+<title>Node1&#45;&gt;Node57</title>
+<g id="a_edge56_Node000001_Node000057"><a xlink:title=" ">
+<path fill="none" stroke="#63b8ff" d="M4382.43,-827.56C4624.34,-824.18 5271.31,-808.85 5473,-741 5480.41,-738.51 5487.8,-735.27 5495,-731.6"/>
+<polygon fill="none" stroke="#63b8ff" points="4382.21,-824.07 4372.26,-827.7 4382.3,-831.07 4382.21,-824.07"/>
 </a>
 </g>
 </g>
@@ -490,13 +490,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="4327,-873 4253,-873 4253,-824 4327,-824 4327,-873"/>
-<text text-anchor="start" x="4258" y="-860.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="4288" y="-845.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4288" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="4253,-855.5 4253,-855.5 4327,-855.5 4327,-855.5 4253,-855.5"/>
-<polygon fill="#666666" stroke="#666666" points="4253,-840.5 4253,-840.5 4327,-840.5 4327,-840.5 4253,-840.5"/>
-<polygon fill="none" stroke="#666666" points="4253,-824 4253,-873 4327,-873 4327,-824 4253,-824"/>
+<polygon fill="white" stroke="transparent" points="4327,-967 4253,-967 4253,-918 4327,-918 4327,-967"/>
+<text text-anchor="start" x="4258" y="-954.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="4288" y="-939.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4288" y="-924.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="4253,-949.5 4253,-949.5 4327,-949.5 4327,-949.5 4253,-949.5"/>
+<polygon fill="#666666" stroke="#666666" points="4253,-934.5 4253,-934.5 4327,-934.5 4327,-934.5 4253,-934.5"/>
+<polygon fill="none" stroke="#666666" points="4253,-918 4253,-967 4327,-967 4327,-918 4253,-918"/>
 </a>
 </g>
 </g>
@@ -504,8 +504,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="M4290,-813.85C4290,-805.79 4290,-797 4290,-788.32"/>
-<polygon fill="none" stroke="#63b8ff" points="4286.5,-813.96 4290,-823.96 4293.5,-813.96 4286.5,-813.96"/>
+<path fill="none" stroke="#63b8ff" d="M4290,-907.85C4290,-899.79 4290,-891 4290,-882.32"/>
+<polygon fill="none" stroke="#63b8ff" points="4286.5,-907.96 4290,-917.96 4293.5,-907.96 4286.5,-907.96"/>
 </a>
 </g>
 </g>
@@ -513,26 +513,26 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1PrimExpr.html" target="_top" xlink:title="Typed reference/view over any Expr whose ExprNode::ty is PrimType.">
-<polygon fill="white" stroke="transparent" points="2985,-491 2821,-491 2821,-360 2985,-360 2985,-491"/>
-<text text-anchor="start" x="2868" y="-478.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExpr</text>
-<text text-anchor="start" x="2825" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2838" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="2838" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="2825" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2838" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="2825" y="-422.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2838" y="-422.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="2825" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2838" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="2825" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2838" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2838" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="2825" y="-366.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2838" y="-366.5" font-family="Helvetica,sans-Serif" font-size="10.00">ConvertFallbackValue()</text>
-<polygon fill="#666666" stroke="#666666" points="2821,-473.5 2821,-473.5 2985,-473.5 2985,-473.5 2821,-473.5"/>
-<polygon fill="#666666" stroke="#666666" points="2821,-447.5 2821,-447.5 2836,-447.5 2836,-447.5 2821,-447.5"/>
-<polygon fill="#666666" stroke="#666666" points="2836,-447.5 2836,-447.5 2985,-447.5 2985,-447.5 2836,-447.5"/>
-<polygon fill="none" stroke="#666666" points="2821,-360 2821,-491 2985,-491 2985,-360 2821,-360"/>
+<polygon fill="white" stroke="transparent" points="2985,-538 2821,-538 2821,-407 2985,-407 2985,-538"/>
+<text text-anchor="start" x="2868" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExpr</text>
+<text text-anchor="start" x="2825" y="-510.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2838" y="-510.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="2838" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="2825" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2838" y="-484.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
+<text text-anchor="start" x="2825" y="-469.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2838" y="-469.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
+<text text-anchor="start" x="2825" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2838" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
+<text text-anchor="start" x="2825" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2838" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2838" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="2825" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2838" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00">ConvertFallbackValue()</text>
+<polygon fill="#666666" stroke="#666666" points="2821,-520.5 2821,-520.5 2985,-520.5 2985,-520.5 2821,-520.5"/>
+<polygon fill="#666666" stroke="#666666" points="2821,-494.5 2821,-494.5 2836,-494.5 2836,-494.5 2821,-494.5"/>
+<polygon fill="#666666" stroke="#666666" points="2836,-494.5 2836,-494.5 2985,-494.5 2985,-494.5 2836,-494.5"/>
+<polygon fill="none" stroke="#666666" points="2821,-407 2821,-538 2985,-538 2985,-407 2821,-407"/>
 </a>
 </g>
 </g>
@@ -540,8 +540,8 @@
 <g id="edge3_Node000003_Node000004" class="edge">
 <title>Node3&#45;&gt;Node4</title>
 <g id="a_edge3_Node000003_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2964.78,-534.79C2956.88,-520.94 2948.22,-505.77 2939.96,-491.28"/>
-<polygon fill="none" stroke="#63b8ff" points="2961.86,-536.72 2969.85,-543.68 2967.94,-533.26 2961.86,-536.72"/>
+<path fill="none" stroke="#63b8ff" d="M2971.34,-628.59C2959.3,-601.25 2944.37,-567.37 2931.54,-538.26"/>
+<polygon fill="none" stroke="#63b8ff" points="2968.24,-630.22 2975.48,-637.96 2974.65,-627.4 2968.24,-630.22"/>
 </a>
 </g>
 </g>
@@ -573,8 +573,8 @@
 <g id="edge4_Node000004_Node000005" class="edge">
 <title>Node4&#45;&gt;Node5</title>
 <g id="a_edge4_Node000004_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.54,-424.69C2361.86,-425.11 422.9,-421.25 173,-324 159.56,-318.77 146.71,-310.67 135.12,-301.64"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.86,-428.19 2820.86,-424.68 2810.85,-421.19 2810.86,-428.19"/>
+<path fill="none" stroke="#63b8ff" d="M2810.51,-470.01C2361.71,-462.31 422.25,-423.47 173,-324 159.7,-318.69 146.96,-310.62 135.44,-301.65"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.78,-473.51 2820.83,-470.19 2810.9,-466.52 2810.78,-473.51"/>
 </a>
 </g>
 </g>
@@ -612,8 +612,8 @@
 <g id="edge5_Node000004_Node000006" class="edge">
 <title>Node4&#45;&gt;Node6</title>
 <g id="a_edge5_Node000004_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.79,-424.42C2381.18,-423.59 587.06,-414.66 355,-324 352,-322.83 349.04,-321.52 346.11,-320.08"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.98,-427.92 2820.99,-424.44 2810.99,-420.92 2810.98,-427.92"/>
+<path fill="none" stroke="#63b8ff" d="M2810.76,-469.63C2381.03,-460.46 586.43,-416.87 355,-324 352.01,-322.8 349.06,-321.47 346.14,-320.01"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.89,-473.14 2820.96,-469.85 2811.04,-466.14 2810.89,-473.14"/>
 </a>
 </g>
 </g>
@@ -640,8 +640,8 @@
 <g id="edge6_Node000004_Node000007" class="edge">
 <title>Node4&#45;&gt;Node7</title>
 <g id="a_edge6_Node000004_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.7,-424.12C2400.22,-421.96 751.21,-408.06 537,-324 513.82,-314.9 492.38,-297.31 476.13,-281.18"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.73,-427.62 2820.75,-424.17 2810.77,-420.62 2810.73,-427.62"/>
+<path fill="none" stroke="#63b8ff" d="M2810.67,-469.19C2400.07,-458.45 750.58,-410.26 537,-324 514.1,-314.75 492.83,-297.36 476.62,-281.38"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.63,-472.69 2820.72,-469.45 2810.82,-465.69 2810.63,-472.69"/>
 </a>
 </g>
 </g>
@@ -673,8 +673,8 @@
 <g id="edge9_Node000004_Node000010" class="edge">
 <title>Node4&#45;&gt;Node10</title>
 <g id="a_edge9_Node000004_Node000010"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.82,-423.77C2420.57,-420.2 915.43,-401.48 719,-324 705.58,-318.71 692.74,-310.58 681.16,-301.54"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.91,-427.27 2820.94,-423.86 2810.97,-420.27 2810.91,-427.27"/>
+<path fill="none" stroke="#63b8ff" d="M2810.79,-468.68C2420.41,-456.29 914.83,-403.68 719,-324 705.74,-318.6 693.01,-310.49 681.5,-301.51"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.8,-472.18 2820.91,-469 2811.03,-465.19 2810.8,-472.18"/>
 </a>
 </g>
 </g>
@@ -706,8 +706,8 @@
 <g id="edge10_Node000004_Node000011" class="edge">
 <title>Node4&#45;&gt;Node11</title>
 <g id="a_edge10_Node000004_Node000011"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.64,-423.35C2441.02,-418.28 1079.66,-394.9 901,-324 887.69,-318.72 874.95,-310.65 863.43,-301.69"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.72,-426.85 2820.77,-423.49 2810.81,-419.85 2810.72,-426.85"/>
+<path fill="none" stroke="#63b8ff" d="M2810.75,-472.23C2465.82,-473.82 1253.69,-468.77 901,-324 887.95,-318.64 875.41,-310.66 864.03,-301.83"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.96,-475.73 2820.95,-472.18 2810.93,-468.73 2810.96,-475.73"/>
 </a>
 </g>
 </g>
@@ -739,8 +739,8 @@
 <g id="edge11_Node000004_Node000012" class="edge">
 <title>Node4&#45;&gt;Node12</title>
 <g id="a_edge11_Node000004_Node000012"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.74,-422.85C2463.11,-416.18 1243.99,-388.36 1083,-324 1069.7,-318.68 1056.97,-310.6 1045.45,-301.64"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.7,-426.35 2820.77,-423.04 2810.83,-419.35 2810.7,-426.35"/>
+<path fill="none" stroke="#63b8ff" d="M2810.52,-471.44C2485.84,-470.11 1400.47,-455.67 1083,-324 1069.97,-318.59 1057.43,-310.59 1046.06,-301.75"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.82,-474.95 2820.83,-471.48 2810.84,-467.95 2810.82,-474.95"/>
 </a>
 </g>
 </g>
@@ -772,8 +772,8 @@
 <g id="edge12_Node000004_Node000013" class="edge">
 <title>Node4&#45;&gt;Node13</title>
 <g id="a_edge12_Node000004_Node000013"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.6,-422.24C2485.8,-413.83 1408.36,-381.82 1265,-324 1251.72,-318.64 1238.99,-310.55 1227.47,-301.57"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.82,-425.75 2820.91,-422.51 2811.01,-418.75 2810.82,-425.75"/>
+<path fill="none" stroke="#63b8ff" d="M2810.87,-470.49C2508.18,-466.04 1547.58,-442.68 1265,-324 1251.99,-318.54 1239.47,-310.51 1228.1,-301.66"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.88,-473.99 2820.93,-470.63 2810.98,-466.99 2810.88,-473.99"/>
 </a>
 </g>
 </g>
@@ -805,8 +805,8 @@
 <g id="edge13_Node000004_Node000014" class="edge">
 <title>Node4&#45;&gt;Node14</title>
 <g id="a_edge13_Node000004_Node000014"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.36,-421.47C2509.62,-411.18 1572.79,-375.29 1447,-324 1433.93,-318.67 1421.39,-310.71 1410.01,-301.88"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.67,-424.98 2820.78,-421.83 2810.91,-417.99 2810.67,-424.98"/>
+<path fill="none" stroke="#63b8ff" d="M2810.72,-469.29C2530.71,-461.48 1694.72,-429.67 1447,-324 1434.02,-318.46 1421.52,-310.4 1410.15,-301.54"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.76,-472.79 2820.85,-469.57 2810.95,-465.8 2810.76,-472.79"/>
 </a>
 </g>
 </g>
@@ -838,8 +838,8 @@
 <g id="edge14_Node000004_Node000015" class="edge">
 <title>Node4&#45;&gt;Node15</title>
 <g id="a_edge14_Node000004_Node000015"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.62,-424.54C2554.99,-423.49 1842.98,-412.48 1629,-324 1615.96,-318.61 1603.43,-310.61 1592.05,-301.78"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.98,-428.04 2820.99,-424.57 2811,-421.04 2810.98,-428.04"/>
+<path fill="none" stroke="#63b8ff" d="M2810.91,-467.77C2555.36,-456.33 1842.19,-416.75 1629,-324 1616.16,-318.41 1603.76,-310.38 1592.46,-301.59"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.76,-471.27 2820.91,-468.21 2811.07,-464.27 2810.76,-471.27"/>
 </a>
 </g>
 </g>
@@ -871,8 +871,8 @@
 <g id="edge15_Node000004_Node000016" class="edge">
 <title>Node4&#45;&gt;Node16</title>
 <g id="a_edge15_Node000004_Node000016"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.34,-423.12C2580.62,-418.55 1990.5,-399.6 1811,-324 1798,-318.52 1785.48,-310.49 1774.11,-301.64"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.61,-426.62 2820.67,-423.32 2810.74,-419.62 2810.61,-426.62"/>
+<path fill="none" stroke="#63b8ff" d="M2811,-465.75C2581.61,-450.35 1989.91,-403.86 1811,-324 1798.3,-318.33 1786.02,-310.32 1774.8,-301.59"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.78,-469.24 2820.99,-466.42 2811.24,-462.26 2810.78,-469.24"/>
 </a>
 </g>
 </g>
@@ -904,8 +904,8 @@
 <g id="edge16_Node000004_Node000017" class="edge">
 <title>Node4&#45;&gt;Node17</title>
 <g id="a_edge16_Node000004_Node000017"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.58,-421.15C2609.46,-412.76 2138.49,-386.84 1993,-324 1980.14,-318.45 1967.74,-310.43 1956.44,-301.64"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.69,-424.66 2820.82,-421.57 2810.97,-417.66 2810.69,-424.66"/>
+<path fill="none" stroke="#63b8ff" d="M2810.78,-462.91C2609.64,-443.15 2137.91,-391 1993,-324 1980.47,-318.21 1968.32,-310.2 1957.18,-301.51"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.44,-466.39 2820.74,-463.88 2811.13,-459.43 2810.44,-466.39"/>
 </a>
 </g>
 </g>
@@ -937,8 +937,8 @@
 <g id="edge17_Node000004_Node000018" class="edge">
 <title>Node4&#45;&gt;Node18</title>
 <g id="a_edge17_Node000004_Node000018"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.73,-418.23C2641.12,-405.64 2286.89,-374.14 2175,-324 2162.31,-318.31 2150.03,-310.3 2138.82,-301.56"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.66,-421.73 2820.89,-418.98 2811.18,-414.75 2810.66,-421.73"/>
+<path fill="none" stroke="#63b8ff" d="M2810.9,-467.54C2667.99,-458.23 2387.2,-427.21 2175,-324 2162.87,-318.1 2151.03,-310.2 2140.12,-301.7"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.75,-471.03 2820.95,-468.17 2811.19,-464.05 2810.75,-471.03"/>
 </a>
 </g>
 </g>
@@ -970,8 +970,8 @@
 <g id="edge18_Node000004_Node000019" class="edge">
 <title>Node4&#45;&gt;Node19</title>
 <g id="a_edge18_Node000004_Node000019"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.5,-421.96C2698.17,-415.69 2505.36,-394.52 2357,-324 2344.72,-318.16 2332.77,-310.24 2321.78,-301.68"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.61,-425.47 2820.78,-422.5 2810.98,-418.48 2810.61,-425.47"/>
+<path fill="none" stroke="#63b8ff" d="M2810.74,-459.26C2698.37,-441.57 2505.22,-402.04 2357,-324 2345.34,-317.86 2333.87,-310 2323.2,-301.65"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.27,-462.73 2820.69,-460.81 2811.35,-455.82 2810.27,-462.73"/>
 </a>
 </g>
 </g>
@@ -1003,8 +1003,8 @@
 <g id="edge19_Node000004_Node000020" class="edge">
 <title>Node4&#45;&gt;Node20</title>
 <g id="a_edge19_Node000004_Node000020"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2810.71,-410.5C2734.54,-396.31 2625.34,-369.77 2539,-324 2527.36,-317.83 2515.89,-309.95 2505.23,-301.59"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.3,-413.98 2820.76,-412.34 2811.56,-407.1 2810.3,-413.98"/>
+<path fill="none" stroke="#63b8ff" d="M2811.1,-443.41C2735.1,-418.08 2625.94,-376.73 2539,-324 2528.27,-317.49 2517.52,-309.73 2507.37,-301.67"/>
+<polygon fill="none" stroke="#63b8ff" points="2810.07,-446.76 2820.66,-446.58 2812.27,-440.11 2810.07,-446.76"/>
 </a>
 </g>
 </g>
@@ -1036,8 +1036,8 @@
 <g id="edge20_Node000004_Node000021" class="edge">
 <title>Node4&#45;&gt;Node21</title>
 <g id="a_edge20_Node000004_Node000021"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2811.62,-378.7C2781.95,-362.61 2749.38,-343.63 2721,-324 2711.1,-317.15 2701.02,-309.43 2691.34,-301.58"/>
-<polygon fill="none" stroke="#63b8ff" points="2810.26,-381.94 2820.73,-383.59 2813.58,-375.77 2810.26,-381.94"/>
+<path fill="none" stroke="#63b8ff" d="M2814.56,-400.54C2784.72,-376.41 2751.3,-349.17 2721,-324 2712.38,-316.84 2703.35,-309.25 2694.46,-301.73"/>
+<polygon fill="none" stroke="#63b8ff" points="2812.49,-403.37 2822.47,-406.94 2816.89,-397.93 2812.49,-403.37"/>
 </a>
 </g>
 </g>
@@ -1069,8 +1069,8 @@
 <g id="edge21_Node000004_Node000022" class="edge">
 <title>Node4&#45;&gt;Node22</title>
 <g id="a_edge21_Node000004_Node000022"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2865.39,-350.93C2856.97,-334.46 2848.18,-317.27 2840.22,-301.69"/>
-<polygon fill="none" stroke="#63b8ff" points="2862.35,-352.68 2870.02,-359.99 2868.58,-349.49 2862.35,-352.68"/>
+<path fill="none" stroke="#63b8ff" d="M2872.95,-397.21C2860.35,-366.05 2845.96,-330.46 2834.32,-301.69"/>
+<polygon fill="none" stroke="#63b8ff" points="2869.81,-398.76 2876.8,-406.72 2876.3,-396.14 2869.81,-398.76"/>
 </a>
 </g>
 </g>
@@ -1102,8 +1102,8 @@
 <g id="edge22_Node000004_Node000023" class="edge">
 <title>Node4&#45;&gt;Node23</title>
 <g id="a_edge22_Node000004_Node000023"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2940.61,-350.93C2949.03,-334.46 2957.82,-317.27 2965.78,-301.69"/>
-<polygon fill="none" stroke="#63b8ff" points="2937.42,-349.49 2935.98,-359.99 2943.65,-352.68 2937.42,-349.49"/>
+<path fill="none" stroke="#63b8ff" d="M2933.05,-397.21C2945.65,-366.05 2960.04,-330.46 2971.68,-301.69"/>
+<polygon fill="none" stroke="#63b8ff" points="2929.7,-396.14 2929.2,-406.72 2936.19,-398.76 2929.7,-396.14"/>
 </a>
 </g>
 </g>
@@ -1135,8 +1135,8 @@
 <g id="edge23_Node000004_Node000024" class="edge">
 <title>Node4&#45;&gt;Node24</title>
 <g id="a_edge23_Node000004_Node000024"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2993.72,-360.15C2993.81,-360.1 2993.91,-360.05 2994,-360 3032.24,-339.28 3047.72,-346.4 3085,-324 3095.85,-317.48 3106.7,-309.67 3116.92,-301.55"/>
-<polygon fill="none" stroke="#63b8ff" points="2992.01,-357.1 2985.02,-365.07 2995.45,-363.19 2992.01,-357.1"/>
+<path fill="none" stroke="#63b8ff" d="M2953.04,-399.02C2965.24,-384.77 2979.11,-370.89 2994,-360 3029.11,-334.32 3047.72,-346.4 3085,-324 3095.85,-317.48 3106.7,-309.67 3116.92,-301.55"/>
+<polygon fill="none" stroke="#63b8ff" points="2950.15,-397.02 2946.44,-406.95 2955.53,-401.5 2950.15,-397.02"/>
 </a>
 </g>
 </g>
@@ -1168,8 +1168,8 @@
 <g id="edge24_Node000004_Node000025" class="edge">
 <title>Node4&#45;&gt;Node25</title>
 <g id="a_edge24_Node000004_Node000025"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.67,-360.21C3110.47,-318.31 3158.12,-372.4 3267,-324 3279.7,-318.35 3291.99,-310.35 3303.21,-301.62"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.22,-357.02 2985.1,-363.83 2995.7,-363.57 2993.22,-357.02"/>
+<path fill="none" stroke="#63b8ff" d="M2948.74,-398.96C2961.58,-383.83 2976.81,-369.59 2994,-360 3100.89,-300.39 3155.17,-373.71 3267,-324 3279.7,-318.35 3291.99,-310.35 3303.21,-301.62"/>
+<polygon fill="none" stroke="#63b8ff" points="2945.85,-396.96 2942.24,-406.93 2951.27,-401.39 2945.85,-396.96"/>
 </a>
 </g>
 </g>
@@ -1201,8 +1201,8 @@
 <g id="edge25_Node000004_Node000026" class="edge">
 <title>Node4&#45;&gt;Node26</title>
 <g id="a_edge25_Node000004_Node000026"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.59,-360.25C3187.21,-294.38 3264.57,-400.29 3449,-324 3462.04,-318.61 3474.57,-310.61 3485.95,-301.77"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.29,-357 2985.03,-363.63 2995.62,-363.6 2993.29,-357"/>
+<path fill="none" stroke="#63b8ff" d="M2947.97,-398.8C2960.91,-383.51 2976.38,-369.23 2994,-360 3173.68,-265.85 3261.55,-401.54 3449,-324 3462.04,-318.61 3474.57,-310.61 3485.95,-301.77"/>
+<polygon fill="none" stroke="#63b8ff" points="2945.01,-396.89 2941.44,-406.86 2950.45,-401.3 2945.01,-396.89"/>
 </a>
 </g>
 </g>
@@ -1234,8 +1234,8 @@
 <g id="edge26_Node000004_Node000027" class="edge">
 <title>Node4&#45;&gt;Node27</title>
 <g id="a_edge26_Node000004_Node000027"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2995.21,-360.21C3144.4,-315.98 3502.34,-375.53 3631,-324 3644.29,-318.68 3657.03,-310.59 3668.55,-301.62"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.71,-357.02 2985.27,-363.42 2995.86,-363.68 2993.71,-357.02"/>
+<path fill="none" stroke="#63b8ff" d="M2947.62,-398.76C2960.61,-383.39 2976.18,-369.08 2994,-360 3120.32,-295.62 3499.38,-376.72 3631,-324 3644.29,-318.68 3657.03,-310.59 3668.55,-301.62"/>
+<polygon fill="none" stroke="#63b8ff" points="2944.62,-396.89 2941.06,-406.87 2950.07,-401.29 2944.62,-396.89"/>
 </a>
 </g>
 </g>
@@ -1267,8 +1267,8 @@
 <g id="edge27_Node000004_Node000028" class="edge">
 <title>Node4&#45;&gt;Node28</title>
 <g id="a_edge27_Node000004_Node000028"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.79,-360.3C3182.55,-303.94 3646.36,-389.53 3813,-324 3826.42,-318.72 3839.26,-310.6 3850.85,-301.56"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.7,-356.98 2985.25,-363.37 2995.84,-363.64 2993.7,-356.98"/>
+<path fill="none" stroke="#63b8ff" d="M2947.54,-398.6C2960.53,-383.23 2976.12,-368.97 2994,-360 3156.82,-278.29 3643.46,-390.67 3813,-324 3826.42,-318.72 3839.26,-310.6 3850.85,-301.56"/>
+<polygon fill="none" stroke="#63b8ff" points="2944.54,-396.74 2940.98,-406.72 2949.99,-401.14 2944.54,-396.74"/>
 </a>
 </g>
 </g>
@@ -1300,8 +1300,8 @@
 <g id="edge28_Node000004_Node000029" class="edge">
 <title>Node4&#45;&gt;Node29</title>
 <g id="a_edge28_Node000004_Node000029"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.78,-360.28C3221.27,-291.9 3790.47,-403.49 3995,-324 4008.44,-318.78 4021.29,-310.68 4032.88,-301.65"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.69,-356.96 2985.24,-363.34 2995.83,-363.62 2993.69,-356.96"/>
+<path fill="none" stroke="#63b8ff" d="M2947.28,-398.74C2960.31,-383.29 2975.99,-368.95 2994,-360 3093.67,-310.48 3891.27,-364.32 3995,-324 4008.44,-318.78 4021.29,-310.68 4032.88,-301.65"/>
+<polygon fill="none" stroke="#63b8ff" points="2944.25,-396.92 2940.71,-406.91 2949.71,-401.31 2944.25,-396.92"/>
 </a>
 </g>
 </g>
@@ -1333,8 +1333,8 @@
 <g id="edge29_Node000004_Node000030" class="edge">
 <title>Node4&#45;&gt;Node30</title>
 <g id="a_edge29_Node000004_Node000030"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.88,-360.24C3260.1,-279.83 3934.59,-417.45 4177,-324 4190.55,-318.78 4203.5,-310.61 4215.16,-301.51"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.69,-356.94 2985.23,-363.32 2995.82,-363.61 2993.69,-356.94"/>
+<path fill="none" stroke="#63b8ff" d="M2947.25,-398.67C2960.28,-383.22 2975.97,-368.9 2994,-360 3111.93,-301.81 4054.3,-371.3 4177,-324 4190.55,-318.78 4203.5,-310.61 4215.16,-301.51"/>
+<polygon fill="none" stroke="#63b8ff" points="2944.22,-396.85 2940.67,-406.84 2949.67,-401.24 2944.22,-396.85"/>
 </a>
 </g>
 </g>
@@ -1371,8 +1371,8 @@
 <g id="edge30_Node000004_Node000031" class="edge">
 <title>Node4&#45;&gt;Node31</title>
 <g id="a_edge30_Node000004_Node000031"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.95,-360.5C3178.72,-314.54 4220.02,-377.25 4359,-324 4363.07,-322.44 4367.08,-320.62 4371.02,-318.58"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.87,-357.17 2985.23,-363.31 2995.81,-363.9 2993.87,-357.17"/>
+<path fill="none" stroke="#63b8ff" d="M2947.22,-398.62C2960.26,-383.17 2975.95,-368.86 2994,-360 3130.19,-293.14 4217.32,-378.28 4359,-324 4363.07,-322.44 4367.08,-320.62 4371.02,-318.58"/>
+<polygon fill="none" stroke="#63b8ff" points="2944.19,-396.8 2940.65,-406.79 2949.65,-401.19 2944.19,-396.8"/>
 </a>
 </g>
 </g>
@@ -1404,8 +1404,8 @@
 <g id="edge31_Node000004_Node000032" class="edge">
 <title>Node4&#45;&gt;Node32</title>
 <g id="a_edge31_Node000004_Node000032"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.95,-360.47C3198.71,-308.6 4383.1,-384.22 4541,-324 4554.57,-318.82 4567.53,-310.68 4579.19,-301.59"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.85,-357.15 2985.22,-363.29 2995.8,-363.87 2993.85,-357.15"/>
+<path fill="none" stroke="#63b8ff" d="M2947.2,-398.58C2960.24,-383.13 2975.94,-368.83 2994,-360 3148.46,-284.48 4380.35,-385.27 4541,-324 4554.57,-318.82 4567.53,-310.68 4579.19,-301.59"/>
+<polygon fill="none" stroke="#63b8ff" points="2944.17,-396.76 2940.63,-406.75 2949.63,-401.15 2944.17,-396.76"/>
 </a>
 </g>
 </g>
@@ -1437,8 +1437,8 @@
 <g id="edge32_Node000004_Node000033" class="edge">
 <title>Node4&#45;&gt;Node33</title>
 <g id="a_edge32_Node000004_Node000033"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2995.04,-360.42C3218.9,-302.64 4546.18,-391.19 4723,-324 4736.58,-318.84 4749.54,-310.71 4761.2,-301.61"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.84,-357.12 2985.22,-363.28 2995.8,-363.84 2993.84,-357.12"/>
+<path fill="none" stroke="#63b8ff" d="M2947.19,-398.55C2960.22,-383.1 2975.93,-368.81 2994,-360 3166.73,-275.81 4543.38,-392.25 4723,-324 4736.58,-318.84 4749.54,-310.71 4761.2,-301.61"/>
+<polygon fill="none" stroke="#63b8ff" points="2944.16,-396.73 2940.61,-406.72 2949.61,-401.12 2944.16,-396.73"/>
 </a>
 </g>
 </g>
@@ -1470,8 +1470,8 @@
 <g id="edge33_Node000004_Node000034" class="edge">
 <title>Node4&#45;&gt;Node34</title>
 <g id="a_edge33_Node000004_Node000034"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.94,-360.42C3238.26,-296.61 4709.22,-398.17 4905,-324 4918.58,-318.85 4931.54,-310.73 4943.2,-301.64"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.83,-357.1 2985.22,-363.28 2995.8,-363.82 2993.83,-357.1"/>
+<path fill="none" stroke="#63b8ff" d="M2946.97,-398.77C2960.04,-383.23 2975.82,-368.84 2994,-360 3184.99,-267.14 4706.4,-399.24 4905,-324 4918.58,-318.85 4931.54,-310.73 4943.2,-301.64"/>
+<polygon fill="none" stroke="#63b8ff" points="2943.91,-396.99 2940.38,-406.98 2949.36,-401.38 2943.91,-396.99"/>
 </a>
 </g>
 </g>
@@ -1503,8 +1503,8 @@
 <g id="edge34_Node000004_Node000035" class="edge">
 <title>Node4&#45;&gt;Node35</title>
 <g id="a_edge34_Node000004_Node000035"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2995.04,-360.37C3258.38,-290.61 4872.3,-405.14 5087,-324 5100.59,-318.86 5113.55,-310.74 5125.21,-301.65"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.82,-357.09 2985.22,-363.27 2995.8,-363.8 2993.82,-357.09"/>
+<path fill="none" stroke="#63b8ff" d="M2946.96,-398.75C2960.03,-383.21 2975.81,-368.82 2994,-360 3098.63,-309.23 4978.21,-365.11 5087,-324 5100.59,-318.86 5113.55,-310.74 5125.21,-301.65"/>
+<polygon fill="none" stroke="#63b8ff" points="2943.9,-396.97 2940.37,-406.96 2949.35,-401.36 2943.9,-396.97"/>
 </a>
 </g>
 </g>
@@ -1540,8 +1540,8 @@
 <g id="edge35_Node000004_Node000036" class="edge">
 <title>Node4&#45;&gt;Node36</title>
 <g id="a_edge35_Node000004_Node000036"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2995.02,-360.36C3277.94,-284.57 5035.34,-412.12 5269,-324 5274.44,-321.95 5279.77,-319.42 5284.97,-316.54"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.81,-357.07 2985.21,-363.26 2995.8,-363.78 2993.81,-357.07"/>
+<path fill="none" stroke="#63b8ff" d="M2946.95,-398.73C2960.03,-383.19 2975.81,-368.81 2994,-360 3107.76,-304.9 5150.73,-368.6 5269,-324 5274.44,-321.95 5279.77,-319.42 5284.97,-316.54"/>
+<polygon fill="none" stroke="#63b8ff" points="2943.89,-396.96 2940.36,-406.95 2949.35,-401.34 2943.89,-396.96"/>
 </a>
 </g>
 </g>
@@ -1573,8 +1573,8 @@
 <g id="edge36_Node000004_Node000037" class="edge">
 <title>Node4&#45;&gt;Node37</title>
 <g id="a_edge36_Node000004_Node000037"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2994.88,-360.38C3296.95,-278.47 5198.35,-419.11 5451,-324 5464.59,-318.88 5477.56,-310.77 5489.22,-301.68"/>
-<polygon fill="none" stroke="#63b8ff" points="2993.8,-357.05 2985.21,-363.26 2995.8,-363.76 2993.8,-357.05"/>
+<path fill="none" stroke="#63b8ff" d="M2946.94,-398.72C2960.02,-383.17 2975.8,-368.8 2994,-360 3116.9,-300.56 5323.24,-372.1 5451,-324 5464.59,-318.88 5477.56,-310.77 5489.22,-301.68"/>
+<polygon fill="none" stroke="#63b8ff" points="2943.88,-396.94 2940.35,-406.93 2949.34,-401.32 2943.88,-396.94"/>
 </a>
 </g>
 </g>
@@ -1606,8 +1606,8 @@
 <g id="edge37_Node000004_Node000038" class="edge">
 <title>Node4&#45;&gt;Node38</title>
 <g id="a_edge37_Node000004_Node000038"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2995.05,-360.79C3215.77,-316.67 5498.16,-374.68 5633,-324 5646.6,-318.89 5659.56,-310.78 5671.22,-301.69"/>
-<polygon fill="none" stroke="#63b8ff" points="2994.06,-357.43 2985.21,-363.26 2995.76,-364.22 2994.06,-357.43"/>
+<path fill="none" stroke="#63b8ff" d="M2946.93,-398.71C2960.01,-383.16 2975.8,-368.79 2994,-360 3126.03,-296.23 5495.75,-375.59 5633,-324 5646.6,-318.89 5659.56,-310.78 5671.22,-301.69"/>
+<polygon fill="none" stroke="#63b8ff" points="2943.87,-396.93 2940.34,-406.92 2949.33,-401.31 2943.87,-396.93"/>
 </a>
 </g>
 </g>
@@ -1679,22 +1679,22 @@
 <g id="Node000040" class="node">
 <title>Node40</title>
 <g id="a_Node000040"><a xlink:href="classtvm_1_1relax_1_1ExternFunc.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3167,-483.5 3003,-483.5 3003,-367.5 3167,-367.5 3167,-483.5"/>
-<text text-anchor="start" x="3029.5" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExternFunc</text>
-<text text-anchor="start" x="3083" y="-456.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="3007" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3020" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
-<text text-anchor="start" x="3007" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3020" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
-<text text-anchor="start" x="3007" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3020" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3020" y="-400.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="3007" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3020" y="-385.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="3020" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="3003,-466.5 3003,-466.5 3167,-466.5 3167,-466.5 3003,-466.5"/>
-<polygon fill="#666666" stroke="#666666" points="3003,-451.5 3003,-451.5 3167,-451.5 3167,-451.5 3003,-451.5"/>
-<polygon fill="none" stroke="#666666" points="3003,-367.5 3003,-483.5 3167,-483.5 3167,-367.5 3003,-367.5"/>
+<polygon fill="white" stroke="transparent" points="3167,-530.5 3003,-530.5 3003,-414.5 3167,-414.5 3167,-530.5"/>
+<text text-anchor="start" x="3029.5" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExternFunc</text>
+<text text-anchor="start" x="3083" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3007" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3020" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
+<text text-anchor="start" x="3007" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3020" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExternFunc()</text>
+<text text-anchor="start" x="3007" y="-458.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3020" y="-458.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3020" y="-447.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="3007" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3020" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="3020" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="3003,-513.5 3003,-513.5 3167,-513.5 3167,-513.5 3003,-513.5"/>
+<polygon fill="#666666" stroke="#666666" points="3003,-498.5 3003,-498.5 3167,-498.5 3167,-498.5 3003,-498.5"/>
+<polygon fill="none" stroke="#666666" points="3003,-414.5 3003,-530.5 3167,-530.5 3167,-414.5 3003,-414.5"/>
 </a>
 </g>
 </g>
@@ -1702,8 +1702,8 @@
 <g id="edge39_Node000039_Node000040" class="edge">
 <title>Node39&#45;&gt;Node40</title>
 <g id="a_edge39_Node000039_Node000040"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3154.31,-547.98C3143.34,-528.76 3129.8,-505.03 3117.61,-483.66"/>
-<polygon fill="none" stroke="#63b8ff" points="3151.31,-549.79 3159.31,-556.75 3157.39,-546.32 3151.31,-549.79"/>
+<path fill="none" stroke="#63b8ff" d="M3159.09,-641.62C3145.34,-610.42 3125.74,-565.94 3110.15,-530.57"/>
+<polygon fill="none" stroke="#63b8ff" points="3155.92,-643.11 3163.15,-650.85 3162.33,-640.29 3155.92,-643.11"/>
 </a>
 </g>
 </g>
@@ -1711,22 +1711,22 @@
 <g id="Node000041" class="node">
 <title>Node41</title>
 <g id="a_Node000041"><a xlink:href="classtvm_1_1relax_1_1Function.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="3349,-483.5 3185,-483.5 3185,-367.5 3349,-367.5 3349,-483.5"/>
-<text text-anchor="start" x="3218" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Function</text>
-<text text-anchor="start" x="3265" y="-456.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="3189" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3202" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">Function()</text>
-<text text-anchor="start" x="3189" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3202" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3202" y="-415.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="3189" y="-400.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3202" y="-400.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="3202" y="-389.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<text text-anchor="start" x="3189" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3202" y="-374.5" font-family="Helvetica,sans-Serif" font-size="10.00">CreateEmpty()</text>
-<polygon fill="#666666" stroke="#666666" points="3185,-466.5 3185,-466.5 3349,-466.5 3349,-466.5 3185,-466.5"/>
-<polygon fill="#666666" stroke="#666666" points="3185,-451.5 3185,-451.5 3349,-451.5 3349,-451.5 3185,-451.5"/>
-<polygon fill="none" stroke="#666666" points="3185,-367.5 3185,-483.5 3349,-483.5 3349,-367.5 3185,-367.5"/>
+<polygon fill="white" stroke="transparent" points="3349,-530.5 3185,-530.5 3185,-414.5 3349,-414.5 3349,-530.5"/>
+<text text-anchor="start" x="3218" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Function</text>
+<text text-anchor="start" x="3265" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3189" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3202" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">Function()</text>
+<text text-anchor="start" x="3189" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3202" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3202" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="3189" y="-447.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3202" y="-447.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="3202" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<text text-anchor="start" x="3189" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3202" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">CreateEmpty()</text>
+<polygon fill="#666666" stroke="#666666" points="3185,-513.5 3185,-513.5 3349,-513.5 3349,-513.5 3185,-513.5"/>
+<polygon fill="#666666" stroke="#666666" points="3185,-498.5 3185,-498.5 3349,-498.5 3349,-498.5 3185,-498.5"/>
+<polygon fill="none" stroke="#666666" points="3185,-414.5 3185,-530.5 3349,-530.5 3349,-414.5 3185,-414.5"/>
 </a>
 </g>
 </g>
@@ -1734,8 +1734,8 @@
 <g id="edge40_Node000039_Node000041" class="edge">
 <title>Node39&#45;&gt;Node41</title>
 <g id="a_edge40_Node000039_Node000041"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3197.69,-547.98C3208.66,-528.76 3222.2,-505.03 3234.39,-483.66"/>
-<polygon fill="none" stroke="#63b8ff" points="3194.61,-546.32 3192.69,-556.75 3200.69,-549.79 3194.61,-546.32"/>
+<path fill="none" stroke="#63b8ff" d="M3192.91,-641.62C3206.66,-610.42 3226.26,-565.94 3241.85,-530.57"/>
+<polygon fill="none" stroke="#63b8ff" points="3189.67,-640.29 3188.85,-650.85 3196.08,-643.11 3189.67,-640.29"/>
 </a>
 </g>
 </g>
@@ -1743,20 +1743,20 @@
 <g id="Node000042" class="node">
 <title>Node42</title>
 <g id="a_Node000042"><a xlink:href="classtvm_1_1tirx_1_1PrimFunc.html" target="_top" xlink:title="Managed reference to PrimFuncNode.">
-<polygon fill="white" stroke="transparent" points="3531,-476 3367,-476 3367,-375 3531,-375 3531,-476"/>
-<text text-anchor="start" x="3402" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::PrimFunc</text>
-<text text-anchor="start" x="3447" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="3371" y="-433.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3384" y="-433.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimFunc()</text>
-<text text-anchor="start" x="3371" y="-418.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3384" y="-418.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3384" y="-407.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="3371" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3384" y="-392.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="3384" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
-<polygon fill="#666666" stroke="#666666" points="3367,-458.5 3367,-458.5 3531,-458.5 3531,-458.5 3367,-458.5"/>
-<polygon fill="#666666" stroke="#666666" points="3367,-443.5 3367,-443.5 3531,-443.5 3531,-443.5 3367,-443.5"/>
-<polygon fill="none" stroke="#666666" points="3367,-375 3367,-476 3531,-476 3531,-375 3367,-375"/>
+<polygon fill="white" stroke="transparent" points="3531,-523 3367,-523 3367,-422 3531,-422 3531,-523"/>
+<text text-anchor="start" x="3402" y="-510.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::PrimFunc</text>
+<text text-anchor="start" x="3447" y="-495.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3371" y="-480.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3384" y="-480.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimFunc()</text>
+<text text-anchor="start" x="3371" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3384" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3384" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<text text-anchor="start" x="3371" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3384" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="3384" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="#666666" stroke="#666666" points="3367,-505.5 3367,-505.5 3531,-505.5 3531,-505.5 3367,-505.5"/>
+<polygon fill="#666666" stroke="#666666" points="3367,-490.5 3367,-490.5 3531,-490.5 3531,-490.5 3367,-490.5"/>
+<polygon fill="none" stroke="#666666" points="3367,-422 3367,-523 3531,-523 3531,-422 3367,-422"/>
 </a>
 </g>
 </g>
@@ -1764,8 +1764,8 @@
 <g id="edge41_Node000039_Node000042" class="edge">
 <title>Node39&#45;&gt;Node42</title>
 <g id="a_edge41_Node000039_Node000042"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3225.55,-551.35C3238.71,-542.85 3253.13,-534.15 3267,-527 3305.66,-507.07 3319.76,-511.72 3358,-491 3366.26,-486.52 3374.65,-481.43 3382.84,-476.11"/>
-<polygon fill="none" stroke="#63b8ff" points="3223.54,-548.48 3217.09,-556.89 3227.38,-554.33 3223.54,-548.48"/>
+<path fill="none" stroke="#63b8ff" d="M3225.55,-645.35C3238.71,-636.85 3253.13,-628.15 3267,-621 3305.66,-601.07 3322.89,-610.68 3358,-585 3380.89,-568.26 3401.37,-544.44 3417.08,-523.12"/>
+<polygon fill="none" stroke="#63b8ff" points="3223.54,-642.48 3217.09,-650.89 3227.38,-648.33 3223.54,-642.48"/>
 </a>
 </g>
 </g>
@@ -1773,17 +1773,17 @@
 <g id="Node000048" class="node">
 <title>Node48</title>
 <g id="a_Node000048"><a xlink:href="classtvm_1_1relax_1_1DataflowVar.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="4190,-463 4026,-463 4026,-388 4190,-388 4190,-463"/>
-<text text-anchor="start" x="4050" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowVar</text>
-<text text-anchor="start" x="4106" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4030" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4043" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataflowVar()</text>
-<text text-anchor="start" x="4030" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4043" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4043" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="4026,-445.5 4026,-445.5 4190,-445.5 4190,-445.5 4026,-445.5"/>
-<polygon fill="#666666" stroke="#666666" points="4026,-430.5 4026,-430.5 4190,-430.5 4190,-430.5 4026,-430.5"/>
-<polygon fill="none" stroke="#666666" points="4026,-388 4026,-463 4190,-463 4190,-388 4026,-388"/>
+<polygon fill="white" stroke="transparent" points="4111,-510 3947,-510 3947,-435 4111,-435 4111,-510"/>
+<text text-anchor="start" x="3971" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowVar</text>
+<text text-anchor="start" x="4027" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3951" y="-467.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3964" y="-467.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataflowVar()</text>
+<text text-anchor="start" x="3951" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3964" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3964" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="3947,-492.5 3947,-492.5 4111,-492.5 4111,-492.5 3947,-492.5"/>
+<polygon fill="#666666" stroke="#666666" points="3947,-477.5 3947,-477.5 4111,-477.5 4111,-477.5 3947,-477.5"/>
+<polygon fill="none" stroke="#666666" points="3947,-435 3947,-510 4111,-510 4111,-435 3947,-435"/>
 </a>
 </g>
 </g>
@@ -1791,8 +1791,56 @@
 <g id="edge47_Node000047_Node000048" class="edge">
 <title>Node47&#45;&gt;Node48</title>
 <g id="a_edge47_Node000047_Node000048"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M4108,-516.52C4108,-498.17 4108,-479.09 4108,-463.24"/>
-<polygon fill="none" stroke="#63b8ff" points="4104.5,-516.61 4108,-526.61 4111.5,-516.61 4104.5,-516.61"/>
+<path fill="none" stroke="#63b8ff" d="M4081.78,-611.46C4068.86,-577.68 4053.79,-538.3 4043.07,-510.28"/>
+<polygon fill="none" stroke="#63b8ff" points="4078.52,-612.74 4085.36,-620.83 4085.06,-610.23 4078.52,-612.74"/>
+</a>
+</g>
+</g>
+<!-- Node49 -->
+<g id="Node000049" class="node">
+<title>Node49</title>
+<g id="a_Node000049"><a xlink:href="classtvm_1_1tirx_1_1BufferVar.html" target="_top" xlink:title="Checked zero&#45;state view over an ordinary VarNode with BufferType.">
+<polygon fill="white" stroke="transparent" points="4242.5,-585 4129.5,-585 4129.5,-360 4242.5,-360 4242.5,-585"/>
+<text text-anchor="start" x="4139.5" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferVar</text>
+<text text-anchor="start" x="4134" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_is_nullable</text>
+<text text-anchor="start" x="4134" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="4147" y="-531.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="4134" y="-516.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-516.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="4134" y="-501.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-501.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="4134" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">var()</text>
+<text text-anchor="start" x="4134" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">type()</text>
+<text text-anchor="start" x="4134" y="-456.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-456.5" font-family="Helvetica,sans-Serif" font-size="10.00">name()</text>
+<text text-anchor="start" x="4134" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">span()</text>
+<text text-anchor="start" x="4134" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">data()</text>
+<text text-anchor="start" x="4134" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
+<text text-anchor="start" x="4134" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
+<text text-anchor="start" x="4134" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4147" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
+<text text-anchor="start" x="4147" y="-366.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 17 more...</text>
+<polygon fill="#666666" stroke="#666666" points="4130,-567.5 4130,-567.5 4243,-567.5 4243,-567.5 4130,-567.5"/>
+<polygon fill="#666666" stroke="#666666" points="4130,-526.5 4130,-526.5 4145,-526.5 4145,-526.5 4130,-526.5"/>
+<polygon fill="#666666" stroke="#666666" points="4145,-526.5 4145,-526.5 4243,-526.5 4243,-526.5 4145,-526.5"/>
+<polygon fill="none" stroke="#666666" points="4129.5,-360 4129.5,-585 4242.5,-585 4242.5,-360 4129.5,-360"/>
+</a>
+</g>
+</g>
+<!-- Node47&#45;&gt;Node49 -->
+<g id="edge48_Node000047_Node000049" class="edge">
+<title>Node47&#45;&gt;Node49</title>
+<g id="a_edge48_Node000047_Node000049"><a xlink:title=" ">
+<path fill="none" stroke="#63b8ff" d="M4133.89,-611.46C4137.08,-603.02 4140.4,-594.23 4143.75,-585.35"/>
+<polygon fill="none" stroke="#63b8ff" points="4130.61,-610.23 4130.35,-620.83 4137.16,-612.71 4130.61,-610.23"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Type.html b/docs/reference/api/doxygen/classtvm_1_1Type.html
index f82c2908f6c..b747882af0f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Type.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Type.html
@@ -88,7 +88,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::Type:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Type__inherit__graph.svg" width="2895" 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_1Type__inherit__graph.svg" width="3166" height="698"><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::Type:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1TypeNode.html b/docs/reference/api/doxygen/classtvm_1_1TypeNode.html
index de2f0c6bae6..08811ddf7fd 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TypeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1TypeNode.html
@@ -90,7 +90,7 @@ $(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="2560" 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_1TypeNode__inherit__graph.svg" width="2792" height="672"><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>
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 997e4d533f7..caf6ddae4d7 100644
--- a/docs/reference/api/doxygen/classtvm_1_1TypeNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1TypeNode__inherit__graph.svg
@@ -4,31 +4,31 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::TypeNode Pages: 1 -->
-<svg width="1920pt" height="399pt"
- viewBox="0.00 0.00 1920.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="2094pt" height="504pt"
+ viewBox="0.00 0.00 2094.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)">
 <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="1026,-306 870,-306 870,-201 1026,-201 1026,-306"/>
-<text text-anchor="start" x="911" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
-<text text-anchor="start" x="874" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
-<text text-anchor="start" x="874" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="874" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
-<text text-anchor="start" x="874" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="887" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="874" y="-207.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-207.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="870,-288.5 870,-288.5 1026,-288.5 1026,-288.5 870,-288.5"/>
-<polygon fill="#666666" stroke="#666666" points="870,-243.5 870,-243.5 885,-243.5 885,-243.5 870,-243.5"/>
-<polygon fill="#666666" stroke="#666666" points="885,-243.5 885,-243.5 1026,-243.5 1026,-243.5 885,-243.5"/>
-<polygon fill="none" stroke="#666666" points="870,-201 870,-306 1026,-306 1026,-201 870,-201"/>
+<polygon fill="#999999" stroke="transparent" points="1113,-411 957,-411 957,-306 1113,-306 1113,-411"/>
+<text text-anchor="start" x="998" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<text text-anchor="start" x="961" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="974" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">span</text>
+<text text-anchor="start" x="961" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="974" y="-368.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="961" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="974" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="961" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="974" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="974" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="961" y="-312.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="974" y="-312.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="957,-393.5 957,-393.5 1113,-393.5 1113,-393.5 957,-393.5"/>
+<polygon fill="#666666" stroke="#666666" points="957,-348.5 957,-348.5 972,-348.5 972,-348.5 957,-348.5"/>
+<polygon fill="#666666" stroke="#666666" points="972,-348.5 972,-348.5 1113,-348.5 1113,-348.5 972,-348.5"/>
+<polygon fill="none" stroke="#666666" points="957,-306 957,-411 1113,-411 1113,-306 957,-306"/>
 </a>
 </g>
 </g>
@@ -36,21 +36,21 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1FuncTypeNode.html" target="_top" xlink:title="Function type.">
-<polygon fill="white" stroke="transparent" points="156,-127.5 0,-127.5 0,-37.5 156,-37.5 156,-127.5"/>
-<text text-anchor="start" x="29.5" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::FuncTypeNode</text>
-<text text-anchor="start" x="4" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">arg_types</text>
-<text text-anchor="start" x="4" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">ret_type</text>
-<text text-anchor="start" x="4" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-110.5 0,-110.5 156,-110.5 156,-110.5 0,-110.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-80.5 0,-80.5 15,-80.5 15,-80.5 0,-80.5"/>
-<polygon fill="#666666" stroke="#666666" points="15,-80.5 15,-80.5 156,-80.5 156,-80.5 15,-80.5"/>
-<polygon fill="none" stroke="#666666" points="0,-37.5 0,-127.5 156,-127.5 156,-37.5 0,-37.5"/>
+<polygon fill="white" stroke="transparent" points="156,-180 0,-180 0,-90 156,-90 156,-180"/>
+<text text-anchor="start" x="29.5" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::FuncTypeNode</text>
+<text text-anchor="start" x="4" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">arg_types</text>
+<text text-anchor="start" x="4" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">ret_type</text>
+<text text-anchor="start" x="4" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="4" y="-97" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-97" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-163 0,-163 156,-163 156,-163 0,-163"/>
+<polygon fill="#666666" stroke="#666666" points="0,-133 0,-133 15,-133 15,-133 0,-133"/>
+<polygon fill="#666666" stroke="#666666" points="15,-133 15,-133 156,-133 156,-133 15,-133"/>
+<polygon fill="none" stroke="#666666" points="0,-90 0,-180 156,-180 156,-90 0,-90"/>
 </a>
 </g>
 </g>
@@ -58,8 +58,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="M859.71,-249.6C681.81,-242.64 286.85,-221.18 165,-165 146.21,-156.33 128.82,-142 114.61,-127.75"/>
-<polygon fill="none" stroke="#63b8ff" points="859.69,-253.11 869.82,-249.99 859.96,-246.11 859.69,-253.11"/>
+<path fill="none" stroke="#63b8ff" d="M946.7,-358.12C752.36,-357.98 294.56,-349 165,-270 131.49,-249.57 108.45,-210.78 94.53,-180.18"/>
+<polygon fill="none" stroke="#63b8ff" points="946.88,-361.62 956.88,-358.12 946.88,-354.62 946.88,-361.62"/>
 </a>
 </g>
 </g>
@@ -67,21 +67,21 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1PointerTypeNode.html" target="_top" xlink:title="Low&#45;level raw pointer type.">
-<polygon fill="white" stroke="transparent" points="330,-127.5 174,-127.5 174,-37.5 330,-37.5 330,-127.5"/>
-<text text-anchor="start" x="197.5" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PointerTypeNode</text>
-<text text-anchor="start" x="178" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">element_type</text>
-<text text-anchor="start" x="178" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">storage_scope</text>
-<text text-anchor="start" x="178" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="191" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="178" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="174,-110.5 174,-110.5 330,-110.5 330,-110.5 174,-110.5"/>
-<polygon fill="#666666" stroke="#666666" points="174,-80.5 174,-80.5 189,-80.5 189,-80.5 174,-80.5"/>
-<polygon fill="#666666" stroke="#666666" points="189,-80.5 189,-80.5 330,-80.5 330,-80.5 189,-80.5"/>
-<polygon fill="none" stroke="#666666" points="174,-37.5 174,-127.5 330,-127.5 330,-37.5 174,-37.5"/>
+<polygon fill="white" stroke="transparent" points="330,-180 174,-180 174,-90 330,-90 330,-180"/>
+<text text-anchor="start" x="197.5" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PointerTypeNode</text>
+<text text-anchor="start" x="178" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">element_type</text>
+<text text-anchor="start" x="178" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">storage_scope</text>
+<text text-anchor="start" x="178" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="191" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="178" y="-97" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-97" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="174,-163 174,-163 330,-163 330,-163 174,-163"/>
+<polygon fill="#666666" stroke="#666666" points="174,-133 174,-133 189,-133 189,-133 174,-133"/>
+<polygon fill="#666666" stroke="#666666" points="189,-133 189,-133 330,-133 330,-133 189,-133"/>
+<polygon fill="none" stroke="#666666" points="174,-90 174,-180 330,-180 330,-90 174,-90"/>
 </a>
 </g>
 </g>
@@ -89,8 +89,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="M859.63,-246.35C713.63,-235.1 429.21,-208.32 339,-165 320.53,-156.13 303.33,-141.93 289.19,-127.85"/>
-<polygon fill="none" stroke="#63b8ff" points="859.66,-249.86 869.9,-247.13 860.19,-242.88 859.66,-249.86"/>
+<path fill="none" stroke="#63b8ff" d="M946.66,-355.53C782.58,-350.4 438.42,-332.33 339,-270 305.86,-249.23 282.84,-210.69 268.84,-180.25"/>
+<polygon fill="none" stroke="#63b8ff" points="946.62,-359.03 956.72,-355.84 946.83,-352.03 946.62,-359.03"/>
 </a>
 </g>
 </g>
@@ -98,19 +98,19 @@
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:href="classtvm_1_1PrimTypeNode.html" target="_top" xlink:title="Primitive data types used in the low&#45;level IR.">
-<polygon fill="white" stroke="transparent" points="504,-120 348,-120 348,-45 504,-45 504,-120"/>
-<text text-anchor="start" x="377.5" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimTypeNode</text>
-<text text-anchor="start" x="352" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">dtype</text>
-<text text-anchor="start" x="352" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="365" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="352" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="365" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="348,-102.5 348,-102.5 504,-102.5 504,-102.5 348,-102.5"/>
-<polygon fill="#666666" stroke="#666666" points="348,-87.5 348,-87.5 363,-87.5 363,-87.5 348,-87.5"/>
-<polygon fill="#666666" stroke="#666666" points="363,-87.5 363,-87.5 504,-87.5 504,-87.5 363,-87.5"/>
-<polygon fill="none" stroke="#666666" points="348,-45 348,-120 504,-120 504,-45 348,-45"/>
+<polygon fill="white" stroke="transparent" points="504,-172.5 348,-172.5 348,-97.5 504,-97.5 504,-172.5"/>
+<text text-anchor="start" x="377.5" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimTypeNode</text>
+<text text-anchor="start" x="352" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">dtype</text>
+<text text-anchor="start" x="352" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="365" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="352" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="365" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="348,-155 348,-155 504,-155 504,-155 348,-155"/>
+<polygon fill="#666666" stroke="#666666" points="348,-140 348,-140 363,-140 363,-140 348,-140"/>
+<polygon fill="#666666" stroke="#666666" points="363,-140 363,-140 504,-140 504,-140 363,-140"/>
+<polygon fill="none" stroke="#666666" points="348,-97.5 348,-172.5 504,-172.5 504,-97.5 348,-97.5"/>
 </a>
 </g>
 </g>
@@ -118,8 +118,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="M859.88,-248.88C768.54,-241.99 623.89,-222.12 513,-165 491.66,-154.01 471.79,-136.24 456.45,-120.1"/>
-<polygon fill="none" stroke="#63b8ff" points="859.69,-252.37 869.92,-249.6 860.2,-245.39 859.69,-252.37"/>
+<path fill="none" stroke="#63b8ff" d="M946.52,-351.26C816.81,-340.69 582.85,-315.82 513,-270 477.63,-246.8 453.53,-203.69 439.82,-172.62"/>
+<polygon fill="none" stroke="#63b8ff" points="946.58,-354.77 956.82,-352.09 947.14,-347.8 946.58,-354.77"/>
 </a>
 </g>
 </g>
@@ -127,17 +127,17 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="classtvm_1_1TensorMapTypeNode.html" target="_top" xlink:title="The type of tensor map.">
-<polygon fill="white" stroke="transparent" points="678,-120 522,-120 522,-45 678,-45 678,-120"/>
-<text text-anchor="start" x="536.5" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorMapTypeNode</text>
-<text text-anchor="start" x="598" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="526" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="539" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="539" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="526" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="539" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="522,-102.5 522,-102.5 678,-102.5 678,-102.5 522,-102.5"/>
-<polygon fill="#666666" stroke="#666666" points="522,-87.5 522,-87.5 678,-87.5 678,-87.5 522,-87.5"/>
-<polygon fill="none" stroke="#666666" points="522,-45 522,-120 678,-120 678,-45 522,-45"/>
+<polygon fill="white" stroke="transparent" points="678,-172.5 522,-172.5 522,-97.5 678,-97.5 678,-172.5"/>
+<text text-anchor="start" x="536.5" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TensorMapTypeNode</text>
+<text text-anchor="start" x="598" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="526" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="539" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="539" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="526" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="539" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="522,-155 522,-155 678,-155 678,-155 522,-155"/>
+<polygon fill="#666666" stroke="#666666" points="522,-140 522,-140 678,-140 678,-140 522,-140"/>
+<polygon fill="none" stroke="#666666" points="522,-97.5 522,-172.5 678,-172.5 678,-97.5 522,-97.5"/>
 </a>
 </g>
 </g>
@@ -145,8 +145,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="M859.75,-233.03C807.18,-219.03 740.49,-196.93 687,-165 666.92,-153.01 647.61,-135.73 632.31,-120.16"/>
-<polygon fill="none" stroke="#63b8ff" points="859.17,-236.5 869.73,-235.64 860.94,-229.72 859.17,-236.5"/>
+<path fill="none" stroke="#63b8ff" d="M946.58,-353.08C871.39,-345.42 763.72,-324.84 687,-270 652.82,-245.56 628.62,-203.12 614.57,-172.54"/>
+<polygon fill="none" stroke="#63b8ff" points="946.68,-356.61 956.97,-354.08 947.35,-349.64 946.68,-356.61"/>
 </a>
 </g>
 </g>
@@ -154,21 +154,21 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="classtvm_1_1TupleTypeNode.html" target="_top" xlink:title="The type of tuple values.">
-<polygon fill="white" stroke="transparent" points="852,-127.5 696,-127.5 696,-37.5 852,-37.5 852,-127.5"/>
-<text text-anchor="start" x="724" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TupleTypeNode</text>
-<text text-anchor="start" x="700" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="713" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">fields</text>
-<text text-anchor="start" x="700" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="713" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">TupleTypeNode()</text>
-<text text-anchor="start" x="700" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="713" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="713" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="700" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="713" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="696,-110.5 696,-110.5 852,-110.5 852,-110.5 696,-110.5"/>
-<polygon fill="#666666" stroke="#666666" points="696,-95.5 696,-95.5 711,-95.5 711,-95.5 696,-95.5"/>
-<polygon fill="#666666" stroke="#666666" points="711,-95.5 711,-95.5 852,-95.5 852,-95.5 711,-95.5"/>
-<polygon fill="none" stroke="#666666" points="696,-37.5 696,-127.5 852,-127.5 852,-37.5 696,-37.5"/>
+<polygon fill="white" stroke="transparent" points="852,-180 696,-180 696,-90 852,-90 852,-180"/>
+<text text-anchor="start" x="724" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TupleTypeNode</text>
+<text text-anchor="start" x="700" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="713" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">fields</text>
+<text text-anchor="start" x="700" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="713" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">TupleTypeNode()</text>
+<text text-anchor="start" x="700" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="713" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="713" y="-112" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="700" y="-97" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="713" y="-97" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="696,-163 696,-163 852,-163 852,-163 696,-163"/>
+<polygon fill="#666666" stroke="#666666" points="696,-148 696,-148 711,-148 711,-148 696,-148"/>
+<polygon fill="#666666" stroke="#666666" points="711,-148 711,-148 852,-148 852,-148 711,-148"/>
+<polygon fill="none" stroke="#666666" points="696,-90 696,-180 852,-180 852,-90 696,-90"/>
 </a>
 </g>
 </g>
@@ -176,8 +176,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="M887.39,-193.63C865.09,-171.97 840.23,-147.83 819.49,-127.68"/>
-<polygon fill="none" stroke="#63b8ff" points="885.24,-196.42 894.85,-200.88 890.11,-191.4 885.24,-196.42"/>
+<path fill="none" stroke="#63b8ff" d="M947.69,-324.63C918.05,-310.73 886.11,-292.49 861,-270 832.9,-244.83 810.1,-208.59 794.91,-180.14"/>
+<polygon fill="none" stroke="#63b8ff" points="946.25,-327.82 956.8,-328.8 949.17,-321.45 946.25,-327.82"/>
 </a>
 </g>
 </g>
@@ -185,17 +185,17 @@
 <g id="Node000008" class="node">
 <title>Node8</title>
 <g id="a_Node000008"><a xlink:href="classtvm_1_1relax_1_1AnyTypeNode.html" target="_top" xlink:title="Base type of all Relax type information.">
-<polygon fill="white" stroke="transparent" points="1026,-120 870,-120 870,-45 1026,-45 1026,-120"/>
-<text text-anchor="start" x="886" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AnyTypeNode</text>
-<text text-anchor="start" x="946" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="874" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="887" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="874" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="870,-102.5 870,-102.5 1026,-102.5 1026,-102.5 870,-102.5"/>
-<polygon fill="#666666" stroke="#666666" points="870,-87.5 870,-87.5 1026,-87.5 1026,-87.5 870,-87.5"/>
-<polygon fill="none" stroke="#666666" points="870,-45 870,-120 1026,-120 1026,-45 870,-45"/>
+<polygon fill="white" stroke="transparent" points="1026,-172.5 870,-172.5 870,-97.5 1026,-97.5 1026,-172.5"/>
+<text text-anchor="start" x="886" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AnyTypeNode</text>
+<text text-anchor="start" x="946" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="874" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="887" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="887" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="874" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="887" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="870,-155 870,-155 1026,-155 1026,-155 870,-155"/>
+<polygon fill="#666666" stroke="#666666" points="870,-140 870,-140 1026,-140 1026,-140 870,-140"/>
+<polygon fill="none" stroke="#666666" points="870,-97.5 870,-172.5 1026,-172.5 1026,-97.5 870,-97.5"/>
 </a>
 </g>
 </g>
@@ -203,8 +203,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="M948,-190.88C948,-167.11 948,-140.74 948,-120.08"/>
-<polygon fill="none" stroke="#63b8ff" points="944.5,-190.88 948,-200.88 951.5,-190.88 944.5,-190.88"/>
+<path fill="none" stroke="#63b8ff" d="M1011.05,-296.53C995.48,-256.88 975.68,-206.47 962.46,-172.82"/>
+<polygon fill="none" stroke="#63b8ff" points="1007.8,-297.82 1014.71,-305.85 1014.31,-295.26 1007.8,-297.82"/>
 </a>
 </g>
 </g>
@@ -212,27 +212,27 @@
 <g id="Node000009" class="node">
 <title>Node9</title>
 <g id="a_Node000009"><a xlink:href="classtvm_1_1relax_1_1FuncTypeNode.html" target="_top" xlink:title="Function type information.">
-<polygon fill="white" stroke="transparent" points="1200,-150 1044,-150 1044,-15 1200,-15 1200,-150"/>
-<text text-anchor="start" x="1058.5" y="-137.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::FuncTypeNode</text>
-<text text-anchor="start" x="1048" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1061" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">params</text>
-<text text-anchor="start" x="1048" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1061" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">ret</text>
-<text text-anchor="start" x="1048" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1061" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">derive_func</text>
-<text text-anchor="start" x="1048" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1061" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">purity</text>
-<text text-anchor="start" x="1048" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1061" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">IsOpaque()</text>
-<text text-anchor="start" x="1048" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1061" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1061" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="1048" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1061" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1044,-132.5 1044,-132.5 1200,-132.5 1200,-132.5 1044,-132.5"/>
-<polygon fill="#666666" stroke="#666666" points="1044,-72.5 1044,-72.5 1059,-72.5 1059,-72.5 1044,-72.5"/>
-<polygon fill="#666666" stroke="#666666" points="1059,-72.5 1059,-72.5 1200,-72.5 1200,-72.5 1059,-72.5"/>
-<polygon fill="none" stroke="#666666" points="1044,-15 1044,-150 1200,-150 1200,-15 1044,-15"/>
+<polygon fill="white" stroke="transparent" points="1200,-202.5 1044,-202.5 1044,-67.5 1200,-67.5 1200,-202.5"/>
+<text text-anchor="start" x="1058.5" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::FuncTypeNode</text>
+<text text-anchor="start" x="1048" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1061" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">params</text>
+<text text-anchor="start" x="1048" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1061" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">ret</text>
+<text text-anchor="start" x="1048" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1061" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">derive_func</text>
+<text text-anchor="start" x="1048" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1061" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">purity</text>
+<text text-anchor="start" x="1048" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1061" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">IsOpaque()</text>
+<text text-anchor="start" x="1048" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1061" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1061" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="1048" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1061" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1044,-185 1044,-185 1200,-185 1200,-185 1044,-185"/>
+<polygon fill="#666666" stroke="#666666" points="1044,-125 1044,-125 1059,-125 1059,-125 1044,-125"/>
+<polygon fill="#666666" stroke="#666666" points="1059,-125 1059,-125 1200,-125 1200,-125 1059,-125"/>
+<polygon fill="none" stroke="#666666" points="1044,-67.5 1044,-202.5 1200,-202.5 1200,-67.5 1044,-67.5"/>
 </a>
 </g>
 </g>
@@ -240,8 +240,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="M1008.61,-193.63C1023.09,-179.57 1038.63,-164.47 1053.44,-150.09"/>
-<polygon fill="none" stroke="#63b8ff" points="1005.89,-191.4 1001.15,-200.88 1010.76,-196.42 1005.89,-191.4"/>
+<path fill="none" stroke="#63b8ff" d="M1059.06,-296.25C1070.44,-267.26 1084.07,-232.57 1095.72,-202.9"/>
+<polygon fill="none" stroke="#63b8ff" points="1055.69,-295.26 1055.29,-305.85 1062.2,-297.82 1055.69,-295.26"/>
 </a>
 </g>
 </g>
@@ -249,17 +249,17 @@
 <g id="Node000010" class="node">
 <title>Node10</title>
 <g id="a_Node000010"><a xlink:href="classtvm_1_1relax_1_1PackedFuncTypeNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1389.5,-120 1218.5,-120 1218.5,-45 1389.5,-45 1389.5,-120"/>
-<text text-anchor="start" x="1224" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::PackedFuncTypeNode</text>
-<text text-anchor="start" x="1302.5" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="1226.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1243" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1243" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="1226.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1243" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1219,-102.5 1219,-102.5 1390,-102.5 1390,-102.5 1219,-102.5"/>
-<polygon fill="#666666" stroke="#666666" points="1219,-87.5 1219,-87.5 1390,-87.5 1390,-87.5 1219,-87.5"/>
-<polygon fill="none" stroke="#666666" points="1218.5,-45 1218.5,-120 1389.5,-120 1389.5,-45 1218.5,-45"/>
+<polygon fill="white" stroke="transparent" points="1389.5,-172.5 1218.5,-172.5 1218.5,-97.5 1389.5,-97.5 1389.5,-172.5"/>
+<text text-anchor="start" x="1224" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::PackedFuncTypeNode</text>
+<text text-anchor="start" x="1302.5" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1226.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1243" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1243" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="1226.5" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1243" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1219,-155 1219,-155 1390,-155 1390,-155 1219,-155"/>
+<polygon fill="#666666" stroke="#666666" points="1219,-140 1219,-140 1390,-140 1390,-140 1219,-140"/>
+<polygon fill="none" stroke="#666666" points="1218.5,-97.5 1218.5,-172.5 1389.5,-172.5 1389.5,-97.5 1218.5,-97.5"/>
 </a>
 </g>
 </g>
@@ -267,8 +267,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="M1036.04,-232.1C1088.39,-217.79 1154.92,-195.7 1209,-165 1230.36,-152.88 1251.37,-135.58 1268.18,-120.03"/>
-<polygon fill="none" stroke="#63b8ff" points="1034.85,-228.8 1026.1,-234.77 1036.66,-235.56 1034.85,-228.8"/>
+<path fill="none" stroke="#63b8ff" d="M1122.59,-323.68C1151.97,-309.78 1183.66,-291.78 1209,-270 1241.01,-242.49 1267.76,-202 1284.63,-172.74"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.75,-320.67 1113.14,-328.04 1123.69,-327.02 1120.75,-320.67"/>
 </a>
 </g>
 </g>
@@ -276,23 +276,23 @@
 <g id="Node000011" class="node">
 <title>Node11</title>
 <g id="a_Node000011"><a xlink:href="classtvm_1_1relax_1_1ShapeTypeNode.html" target="_top" xlink:title="Type of shape value.">
-<polygon fill="white" stroke="transparent" points="1564,-135 1408,-135 1408,-30 1564,-30 1564,-135"/>
-<text text-anchor="start" x="1418.5" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ShapeTypeNode</text>
-<text text-anchor="start" x="1412" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1425" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">values</text>
-<text text-anchor="start" x="1412" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1425" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">ndim</text>
-<text text-anchor="start" x="1412" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1425" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">IsUnknownNdim()</text>
-<text text-anchor="start" x="1412" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1425" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1425" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="1412" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1425" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1408,-117.5 1408,-117.5 1564,-117.5 1564,-117.5 1408,-117.5"/>
-<polygon fill="#666666" stroke="#666666" points="1408,-87.5 1408,-87.5 1423,-87.5 1423,-87.5 1408,-87.5"/>
-<polygon fill="#666666" stroke="#666666" points="1423,-87.5 1423,-87.5 1564,-87.5 1564,-87.5 1423,-87.5"/>
-<polygon fill="none" stroke="#666666" points="1408,-30 1408,-135 1564,-135 1564,-30 1408,-30"/>
+<polygon fill="white" stroke="transparent" points="1564,-187.5 1408,-187.5 1408,-82.5 1564,-82.5 1564,-187.5"/>
+<text text-anchor="start" x="1418.5" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ShapeTypeNode</text>
+<text text-anchor="start" x="1412" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1425" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">values</text>
+<text text-anchor="start" x="1412" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1425" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">ndim</text>
+<text text-anchor="start" x="1412" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1425" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">IsUnknownNdim()</text>
+<text text-anchor="start" x="1412" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1425" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1425" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="1412" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1425" y="-89" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1408,-170 1408,-170 1564,-170 1564,-170 1408,-170"/>
+<polygon fill="#666666" stroke="#666666" points="1408,-140 1408,-140 1423,-140 1423,-140 1408,-140"/>
+<polygon fill="#666666" stroke="#666666" points="1423,-140 1423,-140 1564,-140 1564,-140 1423,-140"/>
+<polygon fill="none" stroke="#666666" points="1408,-82.5 1408,-187.5 1564,-187.5 1564,-82.5 1408,-82.5"/>
 </a>
 </g>
 </g>
@@ -300,8 +300,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="M1036.12,-249.75C1130.59,-243.62 1282.66,-224.42 1399,-165 1413.75,-157.47 1427.77,-146.69 1440.09,-135.42"/>
-<polygon fill="none" stroke="#63b8ff" points="1035.79,-246.26 1026.03,-250.37 1036.22,-253.25 1035.79,-246.26"/>
+<path fill="none" stroke="#63b8ff" d="M1123.63,-354.4C1202.38,-347.67 1317.36,-327.72 1399,-270 1427.99,-249.5 1449.74,-216 1464.24,-187.63"/>
+<polygon fill="none" stroke="#63b8ff" points="1122.93,-350.94 1113.24,-355.22 1123.49,-357.92 1122.93,-350.94"/>
 </a>
 </g>
 </g>
@@ -309,31 +309,31 @@
 <g id="Node000012" class="node">
 <title>Node12</title>
 <g id="a_Node000012"><a xlink:href="classtvm_1_1relax_1_1TensorTypeNode.html" target="_top" xlink:title="Type of Tensor.">
-<polygon fill="white" stroke="transparent" points="1738,-165 1582,-165 1582,0 1738,0 1738,-165"/>
-<text text-anchor="start" x="1592" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::TensorTypeNode</text>
-<text text-anchor="start" x="1586" y="-137.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-137.5" font-family="Helvetica,sans-Serif" font-size="10.00">shape</text>
-<text text-anchor="start" x="1586" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">vdevice</text>
-<text text-anchor="start" x="1586" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">dtype</text>
-<text text-anchor="start" x="1586" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">ndim</text>
-<text text-anchor="start" x="1586" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">IsUnknownNdim()</text>
-<text text-anchor="start" x="1586" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">IsUnknownDtype()</text>
-<text text-anchor="start" x="1586" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">GetShape()</text>
-<text text-anchor="start" x="1586" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1599" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="1586" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1599" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1582,-147.5 1582,-147.5 1738,-147.5 1738,-147.5 1582,-147.5"/>
-<polygon fill="#666666" stroke="#666666" points="1582,-87.5 1582,-87.5 1597,-87.5 1597,-87.5 1582,-87.5"/>
-<polygon fill="#666666" stroke="#666666" points="1597,-87.5 1597,-87.5 1738,-87.5 1738,-87.5 1597,-87.5"/>
-<polygon fill="none" stroke="#666666" points="1582,0 1582,-165 1738,-165 1738,0 1582,0"/>
+<polygon fill="white" stroke="transparent" points="1738,-217.5 1582,-217.5 1582,-52.5 1738,-52.5 1738,-217.5"/>
+<text text-anchor="start" x="1592" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::TensorTypeNode</text>
+<text text-anchor="start" x="1586" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">shape</text>
+<text text-anchor="start" x="1586" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">vdevice</text>
+<text text-anchor="start" x="1586" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">dtype</text>
+<text text-anchor="start" x="1586" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">ndim</text>
+<text text-anchor="start" x="1586" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">IsUnknownNdim()</text>
+<text text-anchor="start" x="1586" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00">IsUnknownDtype()</text>
+<text text-anchor="start" x="1586" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">GetShape()</text>
+<text text-anchor="start" x="1586" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1599" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="1586" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1599" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1582,-200 1582,-200 1738,-200 1738,-200 1582,-200"/>
+<polygon fill="#666666" stroke="#666666" points="1582,-140 1582,-140 1597,-140 1597,-140 1582,-140"/>
+<polygon fill="#666666" stroke="#666666" points="1597,-140 1597,-140 1738,-140 1738,-140 1597,-140"/>
+<polygon fill="none" stroke="#666666" points="1582,-52.5 1582,-217.5 1738,-217.5 1738,-52.5 1582,-52.5"/>
 </a>
 </g>
 </g>
@@ -341,8 +341,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="M1036.2,-246.73C1185.26,-235.91 1479.87,-209.52 1573,-165 1575.99,-163.57 1578.94,-162 1581.85,-160.32"/>
-<polygon fill="none" stroke="#63b8ff" points="1035.88,-243.25 1026.16,-247.46 1036.38,-250.23 1035.88,-243.25"/>
+<path fill="none" stroke="#63b8ff" d="M1123.37,-351.77C1256.44,-341.72 1500.44,-317.34 1573,-270 1592.98,-256.97 1609.35,-237.57 1622.29,-217.55"/>
+<polygon fill="none" stroke="#63b8ff" points="1122.92,-348.3 1113.2,-352.53 1123.44,-355.28 1122.92,-348.3"/>
 </a>
 </g>
 </g>
@@ -350,28 +350,28 @@
 <g id="Node000013" class="node">
 <title>Node13</title>
 <g id="a_Node000013"><a xlink:href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html" target="_top" xlink:title="Type of DTensor (Distributed Tensor).">
-<polygon fill="white" stroke="transparent" points="1912,-155.5 1756,-155.5 1756,-9.5 1912,-9.5 1912,-155.5"/>
-<text text-anchor="start" x="1779.5" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
-<text text-anchor="start" x="1787" y="-132.5" font-family="Helvetica,sans-Serif" font-size="10.00">::DTensorTypeNode</text>
-<text text-anchor="start" x="1760" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1773" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">tensor_ty</text>
-<text text-anchor="start" x="1760" y="-102.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1773" y="-102.5" font-family="Helvetica,sans-Serif" font-size="10.00">device_mesh</text>
-<text text-anchor="start" x="1760" y="-87.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1773" y="-87.5" font-family="Helvetica,sans-Serif" font-size="10.00">placement</text>
-<text text-anchor="start" x="1760" y="-72.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1773" y="-72.5" font-family="Helvetica,sans-Serif" font-size="10.00">DTensorTypeNode()</text>
-<text text-anchor="start" x="1760" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1773" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">DTensorTypeNode()</text>
-<text text-anchor="start" x="1760" y="-42.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1773" y="-42.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1773" y="-31.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="1760" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1773" y="-16.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1756,-127.5 1756,-127.5 1912,-127.5 1912,-127.5 1756,-127.5"/>
-<polygon fill="#666666" stroke="#666666" points="1756,-82.5 1756,-82.5 1771,-82.5 1771,-82.5 1756,-82.5"/>
-<polygon fill="#666666" stroke="#666666" points="1771,-82.5 1771,-82.5 1912,-82.5 1912,-82.5 1771,-82.5"/>
-<polygon fill="none" stroke="#666666" points="1756,-9.5 1756,-155.5 1912,-155.5 1912,-9.5 1756,-9.5"/>
+<polygon fill="white" stroke="transparent" points="1912,-208 1756,-208 1756,-62 1912,-62 1912,-208"/>
+<text text-anchor="start" x="1779.5" y="-196" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
+<text text-anchor="start" x="1787" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">::DTensorTypeNode</text>
+<text text-anchor="start" x="1760" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1773" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">tensor_ty</text>
+<text text-anchor="start" x="1760" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1773" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">device_mesh</text>
+<text text-anchor="start" x="1760" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1773" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00">placement</text>
+<text text-anchor="start" x="1760" y="-125" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1773" y="-125" font-family="Helvetica,sans-Serif" font-size="10.00">DTensorTypeNode()</text>
+<text text-anchor="start" x="1760" y="-110" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1773" y="-110" font-family="Helvetica,sans-Serif" font-size="10.00">DTensorTypeNode()</text>
+<text text-anchor="start" x="1760" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1773" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1773" y="-84" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="1760" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1773" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1756,-180 1756,-180 1912,-180 1912,-180 1756,-180"/>
+<polygon fill="#666666" stroke="#666666" points="1756,-135 1756,-135 1771,-135 1771,-135 1756,-135"/>
+<polygon fill="#666666" stroke="#666666" points="1771,-135 1771,-135 1912,-135 1912,-135 1771,-135"/>
+<polygon fill="none" stroke="#666666" points="1756,-62 1756,-208 1912,-208 1912,-62 1756,-62"/>
 </a>
 </g>
 </g>
@@ -379,8 +379,63 @@
 <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="M1036.12,-249.84C1216.69,-243.26 1622.18,-222.39 1747,-165 1752.74,-162.36 1758.34,-159.2 1763.76,-155.67"/>
-<polygon fill="none" stroke="#63b8ff" points="1036,-246.34 1026.13,-250.2 1036.25,-253.34 1036,-246.34"/>
+<path fill="none" stroke="#63b8ff" d="M1123.45,-355.82C1290.51,-351.16 1644.85,-333.85 1747,-270 1770.52,-255.3 1788.94,-231.64 1802.66,-208.26"/>
+<polygon fill="none" stroke="#63b8ff" points="1123.11,-352.32 1113.21,-356.09 1123.3,-359.32 1123.11,-352.32"/>
+</a>
+</g>
+</g>
+<!-- Node14 -->
+<g id="Node000014" class="node">
+<title>Node14</title>
+<g id="a_Node000014"><a xlink:href="classtvm_1_1tirx_1_1BufferTypeNode.html" target="_top" xlink:title="Structural type of a TIRx buffer variable.">
+<polygon fill="white" stroke="transparent" points="2086,-270 1930,-270 1930,0 2086,0 2086,-270"/>
+<text text-anchor="start" x="1945" y="-258" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferTypeNode</text>
+<text text-anchor="start" x="1934" y="-243" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-243" font-family="Helvetica,sans-Serif" font-size="10.00">dtype</text>
+<text text-anchor="start" x="1934" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">storage_scope</text>
+<text text-anchor="start" x="1934" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00">shape</text>
+<text text-anchor="start" x="1934" y="-198" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-198" font-family="Helvetica,sans-Serif" font-size="10.00">strides</text>
+<text text-anchor="start" x="1934" y="-183" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-183" font-family="Helvetica,sans-Serif" font-size="10.00">elem_offset</text>
+<text text-anchor="start" x="1934" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">data_alignment</text>
+<text text-anchor="start" x="1934" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">offset_factor</text>
+<text text-anchor="start" x="1934" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">layout</text>
+<text text-anchor="start" x="1934" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">allocated_addr</text>
+<text text-anchor="start" x="1934" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">BufferTypeNode()</text>
+<text text-anchor="start" x="1934" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">DefaultIndexType()</text>
+<text text-anchor="start" x="1934" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">ElementType()</text>
+<text text-anchor="start" x="1934" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">DataPointerType()</text>
+<text text-anchor="start" x="1934" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">ElemOffset()</text>
+<text text-anchor="start" x="1934" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1947" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="1934" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1947" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1930,-253 1930,-253 2086,-253 2086,-253 1930,-253"/>
+<polygon fill="#666666" stroke="#666666" points="1930,-118 1930,-118 1945,-118 1945,-118 1930,-118"/>
+<polygon fill="#666666" stroke="#666666" points="1945,-118 1945,-118 2086,-118 2086,-118 1945,-118"/>
+<polygon fill="none" stroke="#666666" points="1930,0 1930,-270 2086,-270 2086,0 1930,0"/>
+</a>
+</g>
+</g>
+<!-- Node1&#45;&gt;Node14 -->
+<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="M1123.17,-358.3C1320.06,-358.6 1788.62,-350.56 1921,-270 1924.08,-268.13 1927.07,-266.1 1929.98,-263.93"/>
+<polygon fill="none" stroke="#63b8ff" points="1123.15,-354.8 1113.15,-358.28 1123.14,-361.8 1123.15,-354.8"/>
 </a>
 </g>
 </g>
@@ -388,13 +443,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="977,-391 919,-391 919,-342 977,-342 977,-391"/>
-<text text-anchor="start" x="924" y="-378.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="946" y="-363.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="946" y="-348.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="919,-373.5 919,-373.5 977,-373.5 977,-373.5 919,-373.5"/>
-<polygon fill="#666666" stroke="#666666" points="919,-358.5 919,-358.5 977,-358.5 977,-358.5 919,-358.5"/>
-<polygon fill="none" stroke="#666666" points="919,-342 919,-391 977,-391 977,-342 919,-342"/>
+<polygon fill="white" stroke="transparent" points="1064,-496 1006,-496 1006,-447 1064,-447 1064,-496"/>
+<text text-anchor="start" x="1011" y="-483.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="1033" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1033" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="1006,-478.5 1006,-478.5 1064,-478.5 1064,-478.5 1006,-478.5"/>
+<polygon fill="#666666" stroke="#666666" points="1006,-463.5 1006,-463.5 1064,-463.5 1064,-463.5 1006,-463.5"/>
+<polygon fill="none" stroke="#666666" points="1006,-447 1006,-496 1064,-496 1064,-447 1006,-447"/>
 </a>
 </g>
 </g>
@@ -402,8 +457,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="M948,-331.85C948,-323.79 948,-315 948,-306.32"/>
-<polygon fill="none" stroke="#63b8ff" points="944.5,-331.96 948,-341.96 951.5,-331.96 944.5,-331.96"/>
+<path fill="none" stroke="#63b8ff" d="M1035,-436.85C1035,-428.79 1035,-420 1035,-411.32"/>
+<polygon fill="none" stroke="#63b8ff" points="1031.5,-436.96 1035,-446.96 1038.5,-436.96 1031.5,-436.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Type__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Type__inherit__graph.svg
index cf66feb1888..0d3b0bb3414 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Type__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Type__inherit__graph.svg
@@ -4,27 +4,27 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Type Pages: 1 -->
-<svg width="2171pt" height="523pt"
- viewBox="0.00 0.00 2171.00 523.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="2374pt" height="523pt"
+ viewBox="0.00 0.00 2374.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)">
 <title>tvm::Type</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to TypeNode.">
-<polygon fill="#999999" stroke="transparent" points="1148,-430 963,-430 963,-340 1148,-340 1148,-430"/>
-<text text-anchor="start" x="1031.5" y="-418" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="1054" y="-403" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="967.5" y="-388" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="980.5" y="-388" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
-<text text-anchor="start" x="967.5" y="-373" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="980.5" y="-373" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="980.5" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="967.5" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="980.5" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="963.5,-413 963.5,-413 1148.5,-413 1148.5,-413 963.5,-413"/>
-<polygon fill="#666666" stroke="#666666" points="963.5,-398 963.5,-398 1148.5,-398 1148.5,-398 963.5,-398"/>
-<polygon fill="none" stroke="#666666" points="963,-340 963,-430 1148,-430 1148,-340 963,-340"/>
+<polygon fill="#999999" stroke="transparent" points="1249,-430 1064,-430 1064,-340 1249,-340 1249,-430"/>
+<text text-anchor="start" x="1132.5" y="-418" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="1155" y="-403" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1068.5" y="-388" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1081.5" y="-388" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="1068.5" y="-373" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1081.5" y="-373" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="1081.5" y="-362" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="1068.5" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1081.5" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="1064.5,-413 1064.5,-413 1249.5,-413 1249.5,-413 1064.5,-413"/>
+<polygon fill="#666666" stroke="#666666" points="1064.5,-398 1064.5,-398 1249.5,-398 1249.5,-398 1064.5,-398"/>
+<polygon fill="none" stroke="#666666" points="1064,-340 1064,-430 1249,-430 1249,-340 1064,-340"/>
 </a>
 </g>
 </g>
@@ -50,8 +50,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="M953,-379.42C738.63,-369.13 257.46,-342.07 193.5,-304 150,-278.11 121.35,-225.33 106.02,-189.55"/>
-<polygon fill="none" stroke="#63b8ff" points="952.84,-382.91 963,-379.89 953.18,-375.92 952.84,-382.91"/>
+<path fill="none" stroke="#63b8ff" d="M1053.64,-380.48C820.47,-371.79 266.28,-346.85 193.5,-304 149.88,-278.32 121.25,-225.49 105.97,-189.64"/>
+<polygon fill="none" stroke="#63b8ff" points="1053.7,-383.99 1063.82,-380.86 1053.96,-376.99 1053.7,-383.99"/>
 </a>
 </g>
 </g>
@@ -79,8 +79,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="M952.35,-381.83C790.83,-376.73 487.3,-359.8 396.5,-304 356.46,-279.4 328.82,-232.28 312.7,-197.19"/>
-<polygon fill="none" stroke="#63b8ff" points="952.67,-385.34 962.78,-382.15 952.89,-378.34 952.67,-385.34"/>
+<path fill="none" stroke="#63b8ff" d="M1053.66,-383.79C872.32,-381.7 504.63,-369.27 396.5,-304 356.13,-279.63 328.47,-232.23 312.44,-197.01"/>
+<polygon fill="none" stroke="#63b8ff" points="1053.71,-387.29 1063.75,-383.9 1053.78,-380.29 1053.71,-387.29"/>
 </a>
 </g>
 </g>
@@ -136,8 +136,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="M952.43,-378.82C822.99,-370.46 610.23,-350.02 547.5,-304 544.67,-301.92 541.94,-299.71 539.3,-297.37"/>
-<polygon fill="none" stroke="#63b8ff" points="952.56,-382.33 962.76,-379.47 953,-375.35 952.56,-382.33"/>
+<path fill="none" stroke="#63b8ff" d="M1053.53,-381.96C901.53,-377.08 626.55,-360.46 547.5,-304 544.64,-301.96 541.89,-299.78 539.23,-297.47"/>
+<polygon fill="none" stroke="#63b8ff" points="1053.7,-385.47 1063.81,-382.28 1053.92,-378.47 1053.7,-385.47"/>
 </a>
 </g>
 </g>
@@ -163,8 +163,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="M952.85,-375.57C889.68,-366.15 809.75,-346.2 750.5,-304 709.91,-275.09 680.95,-224.35 664.73,-189.73"/>
-<polygon fill="none" stroke="#63b8ff" points="952.44,-379.05 962.83,-377 953.43,-372.12 952.44,-379.05"/>
+<path fill="none" stroke="#63b8ff" d="M1053.65,-372.81C950.18,-359.98 799.17,-336.44 750.5,-304 708.77,-276.19 679.92,-224.67 664.04,-189.63"/>
+<polygon fill="none" stroke="#63b8ff" points="1053.47,-376.32 1063.82,-374.06 1054.32,-369.37 1053.47,-376.32"/>
 </a>
 </g>
 </g>
@@ -192,8 +192,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="M985.63,-333.31C974.7,-324.1 963.92,-314.16 954.5,-304 924.18,-271.29 896.31,-228.8 877.4,-197.23"/>
-<polygon fill="none" stroke="#63b8ff" points="983.65,-336.22 993.59,-339.89 988.11,-330.82 983.65,-336.22"/>
+<path fill="none" stroke="#63b8ff" d="M1054.23,-357.26C1019.81,-344.89 982.75,-327.57 953.5,-304 917.77,-275.2 890.03,-230.36 872.74,-197.02"/>
+<polygon fill="none" stroke="#63b8ff" points="1053.26,-360.63 1063.86,-360.62 1055.57,-354.02 1053.26,-360.63"/>
 </a>
 </g>
 </g>
@@ -219,8 +219,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="M1055.5,-329.67C1055.5,-286.47 1055.5,-227.22 1055.5,-189.52"/>
-<polygon fill="none" stroke="#63b8ff" points="1052,-329.73 1055.5,-339.73 1059,-329.73 1052,-329.73"/>
+<path fill="none" stroke="#63b8ff" d="M1133.1,-330.49C1114.19,-287.22 1088.05,-227.46 1071.47,-189.52"/>
+<polygon fill="none" stroke="#63b8ff" points="1129.93,-331.97 1137.15,-339.73 1136.35,-329.17 1129.93,-331.97"/>
 </a>
 </g>
 </g>
@@ -252,8 +252,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="M1125.37,-333.31C1136.3,-324.1 1147.08,-314.16 1156.5,-304 1182.2,-276.27 1206.13,-241.53 1224.35,-212.36"/>
-<polygon fill="none" stroke="#63b8ff" points="1122.89,-330.82 1117.41,-339.89 1127.35,-336.22 1122.89,-330.82"/>
+<path fill="none" stroke="#63b8ff" d="M1180.1,-330.54C1195.7,-295.22 1216.16,-248.88 1232.27,-212.4"/>
+<polygon fill="none" stroke="#63b8ff" points="1176.88,-329.17 1176.05,-339.73 1183.29,-332 1176.88,-329.17"/>
 </a>
 </g>
 </g>
@@ -279,8 +279,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="M1158.15,-375.57C1221.32,-366.15 1301.25,-346.2 1360.5,-304 1401.09,-275.09 1430.05,-224.35 1446.27,-189.73"/>
-<polygon fill="none" stroke="#63b8ff" points="1157.57,-372.12 1148.17,-377 1158.56,-379.05 1157.57,-372.12"/>
+<path fill="none" stroke="#63b8ff" d="M1258.8,-357.51C1293.52,-345.14 1330.97,-327.76 1360.5,-304 1398.96,-273.06 1428.14,-223.52 1445.02,-189.68"/>
+<polygon fill="none" stroke="#63b8ff" points="1257.39,-354.3 1249.09,-360.87 1259.68,-360.91 1257.39,-354.3"/>
 </a>
 </g>
 </g>
@@ -308,8 +308,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="M1158.52,-377.5C1287.1,-367.74 1498.08,-345.81 1563.5,-304 1602.96,-278.78 1630.63,-232.01 1646.9,-197.17"/>
-<polygon fill="none" stroke="#63b8ff" points="1157.97,-374.03 1148.26,-378.26 1158.49,-381.01 1157.97,-374.03"/>
+<path fill="none" stroke="#63b8ff" d="M1259.6,-372.84C1363.33,-360.02 1514.71,-336.5 1563.5,-304 1602.35,-278.12 1630.03,-231.7 1646.48,-197.13"/>
+<polygon fill="none" stroke="#63b8ff" points="1258.91,-369.4 1249.41,-374.08 1259.76,-376.35 1258.91,-369.4"/>
 </a>
 </g>
 </g>
@@ -339,8 +339,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="M1158.22,-382.91C1330.04,-379.39 1666.75,-364.7 1766.5,-304 1803.95,-281.21 1830.51,-238.65 1846.96,-204.51"/>
-<polygon fill="none" stroke="#63b8ff" points="1158.08,-379.42 1148.15,-383.11 1158.22,-386.41 1158.08,-379.42"/>
+<path fill="none" stroke="#63b8ff" d="M1259.38,-380.66C1410.62,-374.07 1683.96,-355.27 1766.5,-304 1803.61,-280.95 1830.12,-238.64 1846.65,-204.66"/>
+<polygon fill="none" stroke="#63b8ff" points="1259,-377.17 1249.16,-381.1 1259.3,-384.17 1259,-377.17"/>
 </a>
 </g>
 </g>
@@ -367,8 +367,37 @@
 <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="M1158.39,-379.98C1382.67,-370.52 1901.02,-344.52 1969.5,-304 2010.89,-279.51 2038.81,-230.61 2054.62,-195.08"/>
-<polygon fill="none" stroke="#63b8ff" points="1158.11,-376.49 1148.26,-380.41 1158.4,-383.49 1158.11,-376.49"/>
+<path fill="none" stroke="#63b8ff" d="M1259.24,-384.63C1450.46,-384.06 1852.21,-374.26 1969.5,-304 2010.63,-279.37 2038.52,-230.75 2054.4,-195.32"/>
+<polygon fill="none" stroke="#63b8ff" points="1259.17,-381.13 1249.18,-384.65 1259.19,-388.13 1259.17,-381.13"/>
+</a>
+</g>
+</g>
+<!-- Node14 -->
+<g id="Node000014" class="node">
+<title>Node14</title>
+<g id="a_Node000014"><a xlink:href="classtvm_1_1tirx_1_1BufferType.html" target="_top" xlink:title="Managed reference to BufferTypeNode.">
+<polygon fill="white" stroke="transparent" points="2366,-197 2181,-197 2181,-107 2366,-107 2366,-197"/>
+<text text-anchor="start" x="2224" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferType</text>
+<text text-anchor="start" x="2272" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="2185.5" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2198.5" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">BufferType()</text>
+<text text-anchor="start" x="2185.5" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2198.5" y="-140" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2198.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="2185.5" y="-114" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2198.5" y="-114" font-family="Helvetica,sans-Serif" font-size="10.00">BufferType()</text>
+<polygon fill="#666666" stroke="#666666" points="2181.5,-180 2181.5,-180 2366.5,-180 2366.5,-180 2181.5,-180"/>
+<polygon fill="#666666" stroke="#666666" points="2181.5,-165 2181.5,-165 2366.5,-165 2366.5,-165 2181.5,-165"/>
+<polygon fill="none" stroke="#666666" points="2181,-107 2181,-197 2366,-197 2366,-107 2181,-107"/>
+</a>
+</g>
+</g>
+<!-- Node1&#45;&gt;Node14 -->
+<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="M1259.29,-380.96C1501.79,-373.09 2095.04,-349.38 2172.5,-304 2213.18,-280.17 2240.8,-232.67 2256.73,-197.28"/>
+<polygon fill="none" stroke="#63b8ff" points="1258.95,-377.47 1249.06,-381.29 1259.17,-384.47 1258.95,-377.47"/>
 </a>
 </g>
 </g>
@@ -376,13 +405,13 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1092.5,-515 1018.5,-515 1018.5,-466 1092.5,-466 1092.5,-515"/>
-<text text-anchor="start" x="1023.5" y="-502.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="1053.5" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="1053.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="1018.5,-497.5 1018.5,-497.5 1092.5,-497.5 1092.5,-497.5 1018.5,-497.5"/>
-<polygon fill="#666666" stroke="#666666" points="1018.5,-482.5 1018.5,-482.5 1092.5,-482.5 1092.5,-482.5 1018.5,-482.5"/>
-<polygon fill="none" stroke="#666666" points="1018.5,-466 1018.5,-515 1092.5,-515 1092.5,-466 1018.5,-466"/>
+<polygon fill="white" stroke="transparent" points="1193.5,-515 1119.5,-515 1119.5,-466 1193.5,-466 1193.5,-515"/>
+<text text-anchor="start" x="1124.5" y="-502.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="1154.5" y="-487.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1154.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="1119.5,-497.5 1119.5,-497.5 1193.5,-497.5 1193.5,-497.5 1119.5,-497.5"/>
+<polygon fill="#666666" stroke="#666666" points="1119.5,-482.5 1119.5,-482.5 1193.5,-482.5 1193.5,-482.5 1119.5,-482.5"/>
+<polygon fill="none" stroke="#666666" points="1119.5,-466 1119.5,-515 1193.5,-515 1193.5,-466 1119.5,-466"/>
 </a>
 </g>
 </g>
@@ -390,8 +419,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="M1055.5,-455.62C1055.5,-447.56 1055.5,-438.84 1055.5,-430.39"/>
-<polygon fill="none" stroke="#63b8ff" points="1052,-455.75 1055.5,-465.76 1059,-455.76 1052,-455.75"/>
+<path fill="none" stroke="#63b8ff" d="M1156.5,-455.62C1156.5,-447.56 1156.5,-438.84 1156.5,-430.39"/>
+<polygon fill="none" stroke="#63b8ff" points="1153,-455.75 1156.5,-465.76 1160,-455.76 1153,-455.75"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Var.html b/docs/reference/api/doxygen/classtvm_1_1Var.html
index 827e44ac848..45db0a1df5f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Var.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Var.html
@@ -87,7 +87,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::Var:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Var__inherit__graph.svg" width="230" 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_1Var__inherit__graph.svg" width="406" height="820"><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::Var:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Var__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Var__inherit__graph.svg
index 9e69ea8f617..bcc5664e52d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Var__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Var__inherit__graph.svg
@@ -4,31 +4,31 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Var Pages: 1 -->
-<svg width="172pt" height="465pt"
- viewBox="0.00 0.00 172.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="304pt" height="615pt"
+ viewBox="0.00 0.00 303.50 615.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 611)">
 <title>tvm::Var</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Managed reference to VarNode.">
-<polygon fill="#999999" stroke="transparent" points="164,-231 0,-231 0,-111 164,-111 164,-231"/>
-<text text-anchor="start" x="61" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
-<text text-anchor="start" x="80" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
-<text text-anchor="start" x="4" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
-<text text-anchor="start" x="4" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
-<text text-anchor="start" x="4" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
-<text text-anchor="start" x="4" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17" y="-118" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-214 0,-214 164,-214 164,-214 0,-214"/>
-<polygon fill="#666666" stroke="#666666" points="0,-199 0,-199 164,-199 164,-199 0,-199"/>
-<polygon fill="none" stroke="#666666" points="0,-111 0,-231 164,-231 164,-111 0,-111"/>
+<polygon fill="#999999" stroke="transparent" points="242,-381 78,-381 78,-261 242,-261 242,-381"/>
+<text text-anchor="start" x="139" y="-369" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
+<text text-anchor="start" x="158" y="-354" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="82" y="-339" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-339" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
+<text text-anchor="start" x="82" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-324" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
+<text text-anchor="start" x="82" y="-309" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-309" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="82" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-294" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="82" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="95" y="-268" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="78,-364 78,-364 242,-364 242,-364 78,-364"/>
+<polygon fill="#666666" stroke="#666666" points="78,-349 78,-349 242,-349 242,-349 78,-349"/>
+<polygon fill="none" stroke="#666666" points="78,-261 78,-381 242,-381 242,-261 78,-261"/>
 </a>
 </g>
 </g>
@@ -36,17 +36,17 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="classtvm_1_1relax_1_1DataflowVar.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="164,-75 0,-75 0,0 164,0 164,-75"/>
-<text text-anchor="start" x="24" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowVar</text>
-<text text-anchor="start" x="80" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataflowVar()</text>
-<text text-anchor="start" x="4" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-57.5 0,-57.5 164,-57.5 164,-57.5 0,-57.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-42.5 0,-42.5 164,-42.5 164,-42.5 0,-42.5"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-75 164,-75 164,0 0,0"/>
+<polygon fill="white" stroke="transparent" points="164,-150 0,-150 0,-75 164,-75 164,-150"/>
+<text text-anchor="start" x="24" y="-137.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowVar</text>
+<text text-anchor="start" x="80" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">DataflowVar()</text>
+<text text-anchor="start" x="4" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="17" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-132.5 0,-132.5 164,-132.5 164,-132.5 0,-132.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-117.5 0,-117.5 164,-117.5 164,-117.5 0,-117.5"/>
+<polygon fill="none" stroke="#666666" points="0,-75 0,-150 164,-150 164,-75 0,-75"/>
 </a>
 </g>
 </g>
@@ -54,8 +54,56 @@
 <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="M82,-100.52C82,-91.77 82,-83.11 82,-75.16"/>
-<polygon fill="none" stroke="#63b8ff" points="78.5,-100.79 82,-110.79 85.5,-100.79 78.5,-100.79"/>
+<path fill="none" stroke="#63b8ff" d="M134.11,-251.46C121.35,-217.68 106.48,-178.3 95.89,-150.28"/>
+<polygon fill="none" stroke="#63b8ff" points="130.84,-252.71 137.65,-260.83 137.39,-250.23 130.84,-252.71"/>
+</a>
+</g>
+</g>
+<!-- Node5 -->
+<g id="Node000005" class="node">
+<title>Node5</title>
+<g id="a_Node000005"><a xlink:href="classtvm_1_1tirx_1_1BufferVar.html" target="_top" xlink:title="Checked zero&#45;state view over an ordinary VarNode with BufferType.">
+<polygon fill="white" stroke="transparent" points="295.5,-225 182.5,-225 182.5,0 295.5,0 295.5,-225"/>
+<text text-anchor="start" x="192.5" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferVar</text>
+<text text-anchor="start" x="187" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_is_nullable</text>
+<text text-anchor="start" x="187" y="-182.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-182.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="200" y="-171.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="187" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="187" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="187" y="-126.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-126.5" font-family="Helvetica,sans-Serif" font-size="10.00">var()</text>
+<text text-anchor="start" x="187" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">type()</text>
+<text text-anchor="start" x="187" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">name()</text>
+<text text-anchor="start" x="187" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">span()</text>
+<text text-anchor="start" x="187" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">data()</text>
+<text text-anchor="start" x="187" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
+<text text-anchor="start" x="187" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
+<text text-anchor="start" x="187" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="200" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
+<text text-anchor="start" x="200" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 17 more...</text>
+<polygon fill="#666666" stroke="#666666" points="183,-207.5 183,-207.5 296,-207.5 296,-207.5 183,-207.5"/>
+<polygon fill="#666666" stroke="#666666" points="183,-166.5 183,-166.5 198,-166.5 198,-166.5 183,-166.5"/>
+<polygon fill="#666666" stroke="#666666" points="198,-166.5 198,-166.5 296,-166.5 296,-166.5 198,-166.5"/>
+<polygon fill="none" stroke="#666666" points="182.5,0 182.5,-225 295.5,-225 295.5,0 182.5,0"/>
+</a>
+</g>
+</g>
+<!-- Node1&#45;&gt;Node5 -->
+<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="M186.22,-251.46C189.45,-243.02 192.81,-234.23 196.21,-225.35"/>
+<polygon fill="none" stroke="#63b8ff" points="182.94,-250.23 182.64,-260.83 189.48,-252.74 182.94,-250.23"/>
 </a>
 </g>
 </g>
@@ -63,21 +111,21 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="164,-372 0,-372 0,-267 164,-267 164,-372"/>
-<text text-anchor="start" x="58" y="-359.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</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="4" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="4" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-314.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="4" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="4" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17" y="-273.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-354.5 0,-354.5 164,-354.5 164,-354.5 0,-354.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-339.5 0,-339.5 164,-339.5 164,-339.5 0,-339.5"/>
-<polygon fill="none" stroke="#666666" points="0,-267 0,-372 164,-372 164,-267 0,-267"/>
+<polygon fill="white" stroke="transparent" points="242,-522 78,-522 78,-417 242,-417 242,-522"/>
+<text text-anchor="start" x="136" y="-509.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="158" y="-494.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="82" y="-479.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-479.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="82" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="82" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="82" y="-434.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="95" y="-434.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="95" y="-423.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="78,-504.5 78,-504.5 242,-504.5 242,-504.5 78,-504.5"/>
+<polygon fill="#666666" stroke="#666666" points="78,-489.5 78,-489.5 242,-489.5 242,-489.5 78,-489.5"/>
+<polygon fill="none" stroke="#666666" points="78,-417 78,-522 242,-522 242,-417 78,-417"/>
 </a>
 </g>
 </g>
@@ -85,8 +133,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="M82,-256.68C82,-248.24 82,-239.58 82,-231.19"/>
-<polygon fill="none" stroke="#63b8ff" points="78.5,-256.85 82,-266.85 85.5,-256.85 78.5,-256.85"/>
+<path fill="none" stroke="#63b8ff" d="M160,-406.68C160,-398.24 160,-389.58 160,-381.19"/>
+<polygon fill="none" stroke="#63b8ff" points="156.5,-406.85 160,-416.85 163.5,-406.85 156.5,-406.85"/>
 </a>
 </g>
 </g>
@@ -94,13 +142,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="119,-457 45,-457 45,-408 119,-408 119,-457"/>
-<text text-anchor="start" x="50" y="-444.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="80" y="-429.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="45,-439.5 45,-439.5 119,-439.5 119,-439.5 45,-439.5"/>
-<polygon fill="#666666" stroke="#666666" points="45,-424.5 45,-424.5 119,-424.5 119,-424.5 45,-424.5"/>
-<polygon fill="none" stroke="#666666" points="45,-408 45,-457 119,-457 119,-408 45,-408"/>
+<polygon fill="white" stroke="transparent" points="197,-607 123,-607 123,-558 197,-558 197,-607"/>
+<text text-anchor="start" x="128" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="158" y="-579.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="158" y="-564.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="123,-589.5 123,-589.5 197,-589.5 197,-589.5 123,-589.5"/>
+<polygon fill="#666666" stroke="#666666" points="123,-574.5 123,-574.5 197,-574.5 197,-574.5 123,-574.5"/>
+<polygon fill="none" stroke="#666666" points="123,-558 123,-607 197,-607 197,-558 123,-558"/>
 </a>
 </g>
 </g>
@@ -108,8 +156,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="M82,-397.85C82,-389.79 82,-381 82,-372.32"/>
-<polygon fill="none" stroke="#63b8ff" points="78.5,-397.96 82,-407.96 85.5,-397.96 78.5,-397.96"/>
+<path fill="none" stroke="#63b8ff" d="M160,-547.85C160,-539.79 160,-531 160,-522.32"/>
+<polygon fill="none" stroke="#63b8ff" points="156.5,-547.96 160,-557.96 163.5,-547.96 156.5,-547.96"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResult-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResult-members.html
index ce7baca6aea..397f77deebe 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResult-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResult-members.html
@@ -79,7 +79,7 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1relax_1_1MatchResult.html">tvm::relax::MatchResult</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html#a1742de22fe231a63bdff4a18b597d581">MatchResult</a>(TIRPattern pattern, ffi::Array&lt; PrimExpr &gt; symbol_values, ffi::Array&lt; tirx::Buffer &gt; matched_buffers)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html">tvm::relax::MatchResult</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html#a75173f8c2f5a42037aa4d14b597abaa6">MatchResult</a>(TIRPattern pattern, ffi::Array&lt; PrimExpr &gt; symbol_values, ffi::Array&lt; tirx::BufferVar &gt; matched_buffers)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html">tvm::relax::MatchResult</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html#ad71f1b7b2cdcb46b815a750b5cc558ae">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(MatchResult, ffi::ObjectRef, MatchResultNode)</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html">tvm::relax::MatchResult</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResult.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResult.html
index 22bd3ca2334..3f3dd82eaab 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResult.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResult.html
@@ -97,17 +97,17 @@ Collaboration diagram for tvm::relax::MatchResult:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a1742de22fe231a63bdff4a18b597d581" id="r_a1742de22fe231a63bdff4a18b597d581"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html#a1742de22fe231a63bdff4a18b597d581">MatchResult</a> (<a class="el" href="namespacetvm_1_1relax.html#a70921aac7ab24af7a88029c59a75b853">TIRPattern</a> pattern, ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt [...]
-<tr class="memdesc:a1742de22fe231a63bdff4a18b597d581"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <br /></td></tr>
-<tr class="separator:a1742de22fe231a63bdff4a18b597d581"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75173f8c2f5a42037aa4d14b597abaa6" id="r_a75173f8c2f5a42037aa4d14b597abaa6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html#a75173f8c2f5a42037aa4d14b597abaa6">MatchResult</a> (<a class="el" href="namespacetvm_1_1relax.html#a70921aac7ab24af7a88029c59a75b853">TIRPattern</a> pattern, ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt [...]
+<tr class="memdesc:a75173f8c2f5a42037aa4d14b597abaa6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <br /></td></tr>
+<tr class="separator:a75173f8c2f5a42037aa4d14b597abaa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad71f1b7b2cdcb46b815a750b5cc558ae" id="r_ad71f1b7b2cdcb46b815a750b5cc558ae"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1MatchResult.html#ad71f1b7b2cdcb46b815a750b5cc558ae">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1relax_1_1MatchResult.html">MatchResult</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html [...]
 <tr class="separator:ad71f1b7b2cdcb46b815a750b5cc558ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html">MatchResultNode</a>. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a1742de22fe231a63bdff4a18b597d581" name="a1742de22fe231a63bdff4a18b597d581"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1742de22fe231a63bdff4a18b597d581">&#9670;&#160;</a></span>MatchResult()</h2>
+<a id="a75173f8c2f5a42037aa4d14b597abaa6" name="a75173f8c2f5a42037aa4d14b597abaa6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a75173f8c2f5a42037aa4d14b597abaa6">&#9670;&#160;</a></span>MatchResult()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -130,7 +130,7 @@ Public Member Functions</h2></td></tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tirx::Buffer</a> &gt;&#160;</td>
+          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tirx::BufferVar</a> &gt;&#160;</td>
           <td class="paramname"><em>matched_buffers</em>&#160;</td>
         </tr>
         <tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResultNode-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResultNode-members.html
index de5894274c7..4287066a86a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResultNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResultNode-members.html
@@ -79,7 +79,7 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html">tvm::relax::MatchResultNode</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html#aee2fac7989e54bc48d714d23c2471450">matched_buffers</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html">tvm::relax::MatchResultNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html#a970fbd89f61ee93530baa86b6a0baefe">matched_buffers</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html">tvm::relax::MatchResultNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html#a4393bccba63e5da3b9ad81f1b5ccf754">pattern</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html">tvm::relax::MatchResultNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html#a6062bc4f34198ac99ab39483841dfef9">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html">tvm::relax::MatchResultNode</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_1MatchResultNode.html#aee8f1bcb6a6ec2c991618b669f3fc996">symbol_values</a></td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html">tvm::relax::MatchResultNode</a></td><td class="entry"></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResultNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResultNode.html
index f9ce72908ca..c35778b6ae0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResultNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1MatchResultNode.html
@@ -111,9 +111,9 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:aee8f1bcb6a6ec2c991618b669f3fc996" id="r_aee8f1bcb6a6ec2c991618b669f3fc996"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html#aee8f1bcb6a6ec2c991618b669f3fc996">symbol_values</a></td></tr>
 <tr class="memdesc:aee8f1bcb6a6ec2c991618b669f3fc996"><td class="mdescLeft">&#160;</td><td class="mdescRight">The evaluated values of symbolic vars.  <br /></td></tr>
 <tr class="separator:aee8f1bcb6a6ec2c991618b669f3fc996"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aee2fac7989e54bc48d714d23c2471450" id="r_aee2fac7989e54bc48d714d23c2471450"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tirx::Buffer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html#aee2fac7989e54bc48d714d23c2471450">matched_buffers</a></td></tr>
-<tr class="memdesc:aee2fac7989e54bc48d714d23c2471450"><td class="mdescLeft">&#160;</td><td class="mdescRight">The matched buffers of input and output.  <br /></td></tr>
-<tr class="separator:aee2fac7989e54bc48d714d23c2471450"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a970fbd89f61ee93530baa86b6a0baefe" id="r_a970fbd89f61ee93530baa86b6a0baefe"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tirx::BufferVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1MatchResultNode.html#a970fbd89f61ee93530baa86b6a0baefe">matched_buffers</a></td></tr>
+<tr class="memdesc:a970fbd89f61ee93530baa86b6a0baefe"><td class="mdescLeft">&#160;</td><td class="mdescRight">The matched buffers of input and output.  <br /></td></tr>
+<tr class="separator:a970fbd89f61ee93530baa86b6a0baefe"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Member Function Documentation</h2>
 <a id="a6062bc4f34198ac99ab39483841dfef9" name="a6062bc4f34198ac99ab39483841dfef9"></a>
@@ -176,14 +176,14 @@ Public Attributes</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a id="aee2fac7989e54bc48d714d23c2471450" name="aee2fac7989e54bc48d714d23c2471450"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aee2fac7989e54bc48d714d23c2471450">&#9670;&#160;</a></span>matched_buffers</h2>
+<a id="a970fbd89f61ee93530baa86b6a0baefe" name="a970fbd89f61ee93530baa86b6a0baefe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a970fbd89f61ee93530baa86b6a0baefe">&#9670;&#160;</a></span>matched_buffers</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tirx::Buffer</a>&gt; tvm::relax::MatchResultNode::matched_buffers</td>
+          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tirx::BufferVar</a>&gt; tvm::relax::MatchResultNode::matched_buffers</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode__inherit__graph.svg
index 7cbaa95905c..417b8b5316e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode__inherit__graph.svg
@@ -562,24 +562,26 @@
 <g id="Node000017" class="node">
 <title>Node17</title>
 <g id="a_Node000017"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1559.5,-425.5 1403.5,-425.5 1403.5,-309.5 1559.5,-309.5 1559.5,-425.5"/>
-<text text-anchor="start" x="1413.5" y="-413.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="1413.5" y="-402.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::DeclBufferFrameNode</text>
-<text text-anchor="start" x="1407.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1420.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">buffer</text>
-<text text-anchor="start" x="1407.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1420.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00">allocated</text>
-<text text-anchor="start" x="1407.5" y="-357.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1420.5" y="-357.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1420.5" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="1407.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1420.5" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
-<text text-anchor="start" x="1407.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1420.5" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1403.5,-397.5 1403.5,-397.5 1559.5,-397.5 1559.5,-397.5 1403.5,-397.5"/>
-<polygon fill="#666666" stroke="#666666" points="1403.5,-367.5 1403.5,-367.5 1418.5,-367.5 1418.5,-367.5 1403.5,-367.5"/>
-<polygon fill="#666666" stroke="#666666" points="1418.5,-367.5 1418.5,-367.5 1559.5,-367.5 1559.5,-367.5 1418.5,-367.5"/>
-<polygon fill="none" stroke="#666666" points="1403.5,-309.5 1403.5,-425.5 1559.5,-425.5 1559.5,-309.5 1403.5,-309.5"/>
+<polygon fill="white" stroke="transparent" points="1559.5,-433 1403.5,-433 1403.5,-302 1559.5,-302 1559.5,-433"/>
+<text text-anchor="start" x="1413.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="1413.5" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::DeclBufferFrameNode</text>
+<text text-anchor="start" x="1407.5" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1420.5" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">buffer</text>
+<text text-anchor="start" x="1407.5" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1420.5" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">data</text>
+<text text-anchor="start" x="1407.5" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1420.5" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">allocated</text>
+<text text-anchor="start" x="1407.5" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1420.5" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1420.5" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="1407.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1420.5" y="-323.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
+<text text-anchor="start" x="1407.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1420.5" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1403.5,-404.5 1403.5,-404.5 1559.5,-404.5 1559.5,-404.5 1403.5,-404.5"/>
+<polygon fill="#666666" stroke="#666666" points="1403.5,-359.5 1403.5,-359.5 1418.5,-359.5 1418.5,-359.5 1403.5,-359.5"/>
+<polygon fill="#666666" stroke="#666666" points="1418.5,-359.5 1418.5,-359.5 1559.5,-359.5 1559.5,-359.5 1418.5,-359.5"/>
+<polygon fill="none" stroke="#666666" points="1403.5,-302 1403.5,-433 1559.5,-433 1559.5,-302 1403.5,-302"/>
 </a>
 </g>
 </g>
@@ -587,7 +589,7 @@
 <g id="edge16_Node000011_Node000017" class="edge">
 <title>Node11&#45;&gt;Node17</title>
 <g id="a_edge16_Node000011_Node000017"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1655.46,-556.38C1626,-538.93 1594.11,-517.25 1568.5,-493 1547.82,-473.42 1529.11,-448.2 1514.38,-425.59"/>
+<path fill="none" stroke="#63b8ff" d="M1655.46,-556.38C1626,-538.93 1594.11,-517.25 1568.5,-493 1550.12,-475.59 1533.29,-453.73 1519.43,-433.21"/>
 <polygon fill="none" stroke="#63b8ff" points="1653.7,-559.41 1664.11,-561.42 1657.23,-553.36 1653.7,-559.41"/>
 </a>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode-members.html
index 19756f4774d..cbdb3ebda47 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode-members.html
@@ -81,7 +81,7 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a174fb590c4fb0d8e7126d038e405052b">_type_mutable</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ada273813a289507af066ec2aecf11e9b">AddCallback</a>(ffi::TypedFunction&lt; void()&gt; callback)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html#a1b9ea2be5b0d98844c7ee5ab5652e0dc">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html">tvm::script::ir_builder::tirx::AllocBufferFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html#a7bd080c391bd41f90ff56204d5241ee3">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html">tvm::script::ir_builder::tirx::AllocBufferFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a45f552bb19d593f4ecc4b3b5d69cf8dc">callbacks</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ab3aaced994da313ebabad6b955332f14">EnterWithScope</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html#a820e327883aabaf4a0398265d29a7f74">ExitWithScope</a>() final</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html">tvm::script::ir_builder::tirx::AllocBufferFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html
index 8e323936200..11ce5127432 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html
@@ -91,7 +91,7 @@ Inheritance diagram for tvm::script::ir_builder::tirx::AllocBufferFrameNode:</di
 <div class="dynheader">
 Collaboration diagram for tvm::script::ir_builder::tirx::AllocBufferFrameNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode__coll__graph.svg" width="406" height="852"><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_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode__coll__graph.svg" width="462" height="1076"><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,9 +130,9 @@ Static Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:a1b9ea2be5b0d98844c7ee5ab5652e0dc" id="r_a1b9ea2be5b0d98844c7ee5ab5652e0dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html#a1b9ea2be5b0d98844c7ee5ab5652e0dc">buffer</a></td></tr>
-<tr class="memdesc:a1b9ea2be5b0d98844c7ee5ab5652e0dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">The allocated buffer.  <br /></td></tr>
-<tr class="separator:a1b9ea2be5b0d98844c7ee5ab5652e0dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7bd080c391bd41f90ff56204d5241ee3" id="r_a7bd080c391bd41f90ff56204d5241ee3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode.html#a7bd080c391bd41f90ff56204d5241ee3">buffer</a></td></tr>
+<tr class="memdesc:a7bd080c391bd41f90ff56204d5241ee3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The allocated buffer.  <br /></td></tr>
+<tr class="separator:a7bd080c391bd41f90ff56204d5241ee3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_attribs_classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html">tvm::script::ir_builder::tirx::TIRFrameNode</a></td></tr>
 <tr class="memitem:a776930fd20b0f6d935f1ea97b29805dd inherit pub_attribs_classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode" id="r_a776930fd20b0f6d935f1ea97b29805dd"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Stmt.html">tvm::tirx::Stmt</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html#a776930fd20b0f6d935f1ea97b29805dd">stmts</a [...]
 <tr class="memdesc:a776930fd20b0f6d935f1ea97b29805dd inherit pub_attribs_classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Stmt within in this frame.  <br /></td></tr>
@@ -239,14 +239,14 @@ Additional Inherited Members</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a id="a1b9ea2be5b0d98844c7ee5ab5652e0dc" name="a1b9ea2be5b0d98844c7ee5ab5652e0dc"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1b9ea2be5b0d98844c7ee5ab5652e0dc">&#9670;&#160;</a></span>buffer</h2>
+<a id="a7bd080c391bd41f90ff56204d5241ee3" name="a7bd080c391bd41f90ff56204d5241ee3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7bd080c391bd41f90ff56204d5241ee3">&#9670;&#160;</a></span>buffer</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a> tvm::script::ir_builder::tirx::AllocBufferFrameNode::buffer</td>
+          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a> tvm::script::ir_builder::tirx::AllocBufferFrameNode::buffer</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode__coll__graph.svg
index 891adb5fcbc..dc8ce4c2d70 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1AllocBufferFrameNode__coll__graph.svg
@@ -4,28 +4,28 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::script::ir_builder::tirx::AllocBufferFrameNode Pages: 1 -->
-<svg width="304pt" height="639pt"
- viewBox="0.00 0.00 304.00 639.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 635)">
+<svg width="346pt" height="807pt"
+ viewBox="0.00 0.00 346.00 807.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 803)">
 <title>tvm::script::ir_builder::tirx::AllocBufferFrameNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title=" ">
-<polygon fill="#999999" stroke="transparent" points="234,-101 78,-101 78,0 234,0 234,-101"/>
-<text text-anchor="start" x="86.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="86.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::AllocBufferFrameNode</text>
-<text text-anchor="start" x="154" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="82" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="95" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="95" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="82" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="95" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
-<text text-anchor="start" x="82" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="95" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="78,-72.5 78,-72.5 234,-72.5 234,-72.5 78,-72.5"/>
-<polygon fill="#666666" stroke="#666666" points="78,-57.5 78,-57.5 234,-57.5 234,-57.5 78,-57.5"/>
-<polygon fill="none" stroke="#666666" points="78,0 78,-101 234,-101 234,0 78,0"/>
+<polygon fill="#999999" stroke="transparent" points="250,-101 94,-101 94,0 250,0 250,-101"/>
+<text text-anchor="start" x="102.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="102.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::AllocBufferFrameNode</text>
+<text text-anchor="start" x="170" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="98" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="111" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="111" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="98" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="111" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
+<text text-anchor="start" x="98" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="111" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="94,-72.5 94,-72.5 250,-72.5 250,-72.5 94,-72.5"/>
+<polygon fill="#666666" stroke="#666666" points="94,-57.5 94,-57.5 250,-57.5 250,-57.5 94,-57.5"/>
+<polygon fill="none" stroke="#666666" points="94,0 94,-101 250,-101 250,0 94,0"/>
 </a>
 </g>
 </g>
@@ -33,20 +33,20 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html" target="_top" xlink:title="A base frame that represents the TIR fame with body of statements.">
-<polygon fill="white" stroke="transparent" points="156,-290.5 0,-290.5 0,-204.5 156,-204.5 156,-290.5"/>
-<text text-anchor="start" x="25.5" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="27.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::TIRFrameNode</text>
-<text text-anchor="start" x="4" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">stmts</text>
-<text text-anchor="start" x="4" y="-237.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-237.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-226.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-262.5 0,-262.5 156,-262.5 156,-262.5 0,-262.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-247.5 0,-247.5 15,-247.5 15,-247.5 0,-247.5"/>
-<polygon fill="#666666" stroke="#666666" points="15,-247.5 15,-247.5 156,-247.5 156,-247.5 15,-247.5"/>
-<polygon fill="none" stroke="#666666" points="0,-204.5 0,-290.5 156,-290.5 156,-204.5 0,-204.5"/>
+<polygon fill="white" stroke="transparent" points="174,-303.5 18,-303.5 18,-217.5 174,-217.5 174,-303.5"/>
+<text text-anchor="start" x="43.5" y="-291.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="45.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::TIRFrameNode</text>
+<text text-anchor="start" x="22" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="35" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">stmts</text>
+<text text-anchor="start" x="22" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="35" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="35" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="22" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="35" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="18,-275.5 18,-275.5 174,-275.5 174,-275.5 18,-275.5"/>
+<polygon fill="#666666" stroke="#666666" points="18,-260.5 18,-260.5 33,-260.5 33,-260.5 18,-260.5"/>
+<polygon fill="#666666" stroke="#666666" points="33,-260.5 33,-260.5 174,-260.5 174,-260.5 33,-260.5"/>
+<polygon fill="none" stroke="#666666" points="18,-217.5 18,-303.5 174,-303.5 174,-217.5 18,-217.5"/>
 </a>
 </g>
 </g>
@@ -54,8 +54,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="M98.73,-194.67C110.3,-165.75 124.64,-129.91 136.07,-101.32"/>
-<polygon fill="none" stroke="#63b8ff" points="95.39,-193.6 94.92,-204.19 101.89,-196.2 95.39,-193.6"/>
+<path fill="none" stroke="#63b8ff" d="M114.95,-207.62C126.85,-175.08 142.09,-133.35 153.83,-101.22"/>
+<polygon fill="none" stroke="#63b8ff" points="111.52,-206.81 111.38,-217.41 118.1,-209.22 111.52,-206.81"/>
 </a>
 </g>
 </g>
@@ -63,30 +63,30 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="156,-545 0,-545 0,-384 156,-384 156,-545"/>
-<text text-anchor="start" x="24.5" y="-532.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="24.5" y="-521.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
-<text text-anchor="start" x="4" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00">callbacks</text>
-<text text-anchor="start" x="4" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
+<polygon fill="white" stroke="transparent" points="156,-571 0,-571 0,-410 156,-410 156,-571"/>
+<text text-anchor="start" x="24.5" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="24.5" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
+<text text-anchor="start" x="4" y="-532.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-532.5" font-family="Helvetica,sans-Serif" font-size="10.00">callbacks</text>
+<text text-anchor="start" x="4" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
+<text text-anchor="start" x="4" y="-502.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-502.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 <text text-anchor="start" x="4" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00">~IRBuilderFrameNode()</text>
-<text text-anchor="start" x="4" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">EnterWithScope()</text>
-<text text-anchor="start" x="4" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
-<text text-anchor="start" x="4" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">AddCallback()</text>
-<text text-anchor="start" x="4" y="-390.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-390.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-516.5 0,-516.5 156,-516.5 156,-516.5 0,-516.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-486.5 0,-486.5 15,-486.5 15,-486.5 0,-486.5"/>
-<polygon fill="#666666" stroke="#666666" points="15,-486.5 15,-486.5 156,-486.5 156,-486.5 15,-486.5"/>
-<polygon fill="none" stroke="#666666" points="0,-384 0,-545 156,-545 156,-384 0,-384"/>
+<text text-anchor="start" x="17" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00">~IRBuilderFrameNode()</text>
+<text text-anchor="start" x="4" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00">EnterWithScope()</text>
+<text text-anchor="start" x="4" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
+<text text-anchor="start" x="4" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">AddCallback()</text>
+<text text-anchor="start" x="4" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-416.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-542.5 0,-542.5 156,-542.5 156,-542.5 0,-542.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-512.5 0,-512.5 15,-512.5 15,-512.5 0,-512.5"/>
+<polygon fill="#666666" stroke="#666666" points="15,-512.5 15,-512.5 156,-512.5 156,-512.5 15,-512.5"/>
+<polygon fill="none" stroke="#666666" points="0,-410 0,-571 156,-571 156,-410 0,-410"/>
 </a>
 </g>
 </g>
@@ -94,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,-373.66C78,-344.92 78,-314.43 78,-290.75"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-373.75 78,-383.75 81.5,-373.75 74.5,-373.75"/>
+<path fill="none" stroke="#63b8ff" d="M85.1,-399.6C87.71,-366.53 90.54,-330.63 92.67,-303.73"/>
+<polygon fill="none" stroke="#63b8ff" points="81.59,-399.51 84.3,-409.76 88.57,-400.06 81.59,-399.51"/>
 </a>
 </g>
 </g>
@@ -103,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,-631 49,-631 49,-582 107,-582 107,-631"/>
-<text text-anchor="start" x="54" y="-618.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-588.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-613.5 49,-613.5 107,-613.5 107,-613.5 49,-613.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-598.5 49,-598.5 107,-598.5 107,-598.5 49,-598.5"/>
-<polygon fill="none" stroke="#666666" points="49,-582 49,-631 107,-631 107,-582 49,-582"/>
+<polygon fill="white" stroke="transparent" points="107,-685 49,-685 49,-636 107,-636 107,-685"/>
+<text text-anchor="start" x="54" y="-672.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-657.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-642.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-667.5 49,-667.5 107,-667.5 107,-667.5 49,-667.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-652.5 49,-652.5 107,-652.5 107,-652.5 49,-652.5"/>
+<polygon fill="none" stroke="#666666" points="49,-636 49,-685 107,-685 107,-636 49,-636"/>
 </a>
 </g>
 </g>
@@ -117,42 +117,47 @@
 <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,-571.64C78,-563.51 78,-554.49 78,-545.24"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-571.75 78,-581.75 81.5,-571.75 74.5,-571.75"/>
+<path fill="none" stroke="#63b8ff" d="M78,-625.54C78,-609.81 78,-590.4 78,-571.28"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-625.79 78,-635.79 81.5,-625.79 74.5,-625.79"/>
 </a>
 </g>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
-<g id="a_Node000005"><a xlink:href="classtvm_1_1tirx_1_1Buffer.html" target="_top" xlink:title="Buffer is a symbolic n&#45;darray structure. It is a composition of primitive symbolic types,...">
-<polygon fill="white" stroke="transparent" points="296,-347 174,-347 174,-148 296,-148 296,-347"/>
-<text text-anchor="start" x="196" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::Buffer</text>
-<text text-anchor="start" x="233" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="178" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">Buffer()</text>
-<text text-anchor="start" x="178" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
-<text text-anchor="start" x="178" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
-<text text-anchor="start" x="178" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
-<text text-anchor="start" x="178" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">vload()</text>
-<text text-anchor="start" x="178" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">vstore()</text>
-<text text-anchor="start" x="178" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">GetFlattenedBuffer()</text>
-<text text-anchor="start" x="178" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">OffsetOf()</text>
-<text text-anchor="start" x="178" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">OffsetOf_p()</text>
-<text text-anchor="start" x="178" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">scope()</text>
-<text text-anchor="start" x="191" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 7 more...</text>
-<polygon fill="#666666" stroke="#666666" points="174,-329.5 174,-329.5 296,-329.5 296,-329.5 174,-329.5"/>
-<polygon fill="#666666" stroke="#666666" points="174,-314.5 174,-314.5 296,-314.5 296,-314.5 174,-314.5"/>
-<polygon fill="none" stroke="#666666" points="174,-148 174,-347 296,-347 296,-148 174,-148"/>
+<g id="a_Node000005"><a xlink:href="classtvm_1_1tirx_1_1BufferVar.html" target="_top" xlink:title="Checked zero&#45;state view over an ordinary VarNode with BufferType.">
+<polygon fill="white" stroke="transparent" points="308.5,-373 195.5,-373 195.5,-148 308.5,-148 308.5,-373"/>
+<text text-anchor="start" x="205.5" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferVar</text>
+<text text-anchor="start" x="200" y="-345.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-345.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_is_nullable</text>
+<text text-anchor="start" x="200" y="-330.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-330.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="213" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="200" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="200" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="200" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">var()</text>
+<text text-anchor="start" x="200" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">type()</text>
+<text text-anchor="start" x="200" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">name()</text>
+<text text-anchor="start" x="200" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">span()</text>
+<text text-anchor="start" x="200" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">data()</text>
+<text text-anchor="start" x="200" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
+<text text-anchor="start" x="200" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
+<text text-anchor="start" x="200" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="213" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
+<text text-anchor="start" x="213" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 17 more...</text>
+<polygon fill="#666666" stroke="#666666" points="196,-355.5 196,-355.5 309,-355.5 309,-355.5 196,-355.5"/>
+<polygon fill="#666666" stroke="#666666" points="196,-314.5 196,-314.5 211,-314.5 211,-314.5 196,-314.5"/>
+<polygon fill="#666666" stroke="#666666" points="211,-314.5 211,-314.5 309,-314.5 309,-314.5 211,-314.5"/>
+<polygon fill="none" stroke="#666666" points="195.5,-148 195.5,-373 308.5,-373 308.5,-148 195.5,-148"/>
 </a>
 </g>
 </g>
@@ -160,23 +165,33 @@
 <g id="edge4_Node000001_Node000005" class="edge">
 <title>Node5&#45;&gt;Node1</title>
 <g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M195.04,-147.86C190.15,-135.8 185.28,-123.76 180.71,-112.49"/>
-<polygon fill="none" stroke="#63b8ff" points="180.58,-112.17 174.62,-108.11 176.07,-101.05 182.03,-105.1 180.58,-112.17"/>
+<path fill="none" stroke="#63b8ff" d="M209.07,-147.89C204.4,-135.73 199.77,-123.71 195.46,-112.5"/>
+<polygon fill="none" stroke="#63b8ff" points="195.4,-112.34 189.51,-108.17 191.09,-101.14 196.98,-105.3 195.4,-112.34"/>
 </a>
 </g>
-<text text-anchor="middle" x="207" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +buffer</text>
+<text text-anchor="middle" x="220" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +buffer</text>
 </g>
 <!-- Node6 -->
 <g id="Node000006" class="node">
 <title>Node6</title>
-<g id="a_Node000006"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="272,-489 198,-489 198,-440 272,-440 272,-489"/>
-<text text-anchor="start" x="203" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="233" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="233" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="198,-471.5 198,-471.5 272,-471.5 272,-471.5 198,-471.5"/>
-<polygon fill="#666666" stroke="#666666" points="198,-456.5 198,-456.5 272,-456.5 272,-456.5 198,-456.5"/>
-<polygon fill="none" stroke="#666666" points="198,-440 198,-489 272,-489 272,-440 198,-440"/>
+<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="338,-550.5 174,-550.5 174,-430.5 338,-430.5 338,-550.5"/>
+<text text-anchor="start" x="248" y="-538.5" font-family="Helvetica,sans-Serif" font-size="10.00">Var</text>
+<text text-anchor="start" x="254" y="-523.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="178" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
+<text text-anchor="start" x="178" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
+<text text-anchor="start" x="178" y="-478.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-478.5" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="178" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="178" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="191" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="174,-533.5 174,-533.5 338,-533.5 338,-533.5 174,-533.5"/>
+<polygon fill="#666666" stroke="#666666" points="174,-518.5 174,-518.5 338,-518.5 338,-518.5 174,-518.5"/>
+<polygon fill="none" stroke="#666666" points="174,-430.5 174,-550.5 338,-550.5 338,-430.5 174,-430.5"/>
 </a>
 </g>
 </g>
@@ -184,8 +199,62 @@
 <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="M235,-429.39C235,-407.06 235,-376.63 235,-347.1"/>
-<polygon fill="none" stroke="#63b8ff" points="231.5,-429.67 235,-439.67 238.5,-429.67 231.5,-429.67"/>
+<path fill="none" stroke="#63b8ff" d="M254.79,-420.39C254.53,-405.5 254.24,-389.4 253.96,-373.36"/>
+<polygon fill="none" stroke="#63b8ff" points="251.29,-420.55 254.96,-430.49 258.29,-420.43 251.29,-420.55"/>
+</a>
+</g>
+</g>
+<!-- Node7 -->
+<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="338,-713 174,-713 174,-608 338,-608 338,-713"/>
+<text text-anchor="start" x="232" y="-700.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="254" y="-685.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="178" y="-670.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-670.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="178" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-655.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="178" y="-640.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-640.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="178" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="191" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="191" y="-614.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="174,-695.5 174,-695.5 338,-695.5 338,-695.5 174,-695.5"/>
+<polygon fill="#666666" stroke="#666666" points="174,-680.5 174,-680.5 338,-680.5 338,-680.5 174,-680.5"/>
+<polygon fill="none" stroke="#666666" points="174,-608 174,-713 338,-713 338,-608 174,-608"/>
+</a>
+</g>
+</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="M256,-597.36C256,-582.12 256,-565.85 256,-550.74"/>
+<polygon fill="none" stroke="#63b8ff" points="252.5,-597.72 256,-607.72 259.5,-597.72 252.5,-597.72"/>
+</a>
+</g>
+</g>
+<!-- Node8 -->
+<g id="Node000008" class="node">
+<title>Node8</title>
+<g id="a_Node000008"><a xlink:title=" ">
+<polygon fill="white" stroke="transparent" points="293,-799 219,-799 219,-750 293,-750 293,-799"/>
+<text text-anchor="start" x="224" y="-786.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="254" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="254" y="-756.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="219,-781.5 219,-781.5 293,-781.5 293,-781.5 219,-781.5"/>
+<polygon fill="#666666" stroke="#666666" points="219,-766.5 219,-766.5 293,-766.5 293,-766.5 219,-766.5"/>
+<polygon fill="none" stroke="#666666" points="219,-750 219,-799 293,-799 293,-750 219,-750"/>
+</a>
+</g>
+</g>
+<!-- Node8&#45;&gt;Node7 -->
+<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="M256,-739.7C256,-731.38 256,-722.28 256,-713.33"/>
+<polygon fill="none" stroke="#63b8ff" points="252.5,-739.75 256,-749.75 259.5,-739.75 252.5,-739.75"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode-members.html
index 1d0f80423a6..623c8b34cc0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode-members.html
@@ -91,7 +91,7 @@ $(function() {
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html#a39cb0ad5038bf2dd3db41c856b1f1575">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.ir_builder.tirx.TIRFrame&quot;, TIRFrameNode, IRBuilderFrameNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html">tvm::script::ir_builder::tirx::TIRFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a05b026329132b684f964a125f90dd117">tvm::script::ir_builder::IRBuilderFrameNode::TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.ir_builder.IRBuilderFrame&quot;, IRBuilderFrameNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html#a91606ea8a7183f2e1c51b8fe84f01586">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;script.ir_builder.tirx.ComposeOpFrame&quot;, ComposeOpFrameNode, TIRFrameNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html">tvm::script::ir_builder::tirx::ComposeOpFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html#a871c25d087b6ec455172421a79b26e99">workspace</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html">tvm::script::ir_builder::tirx::ComposeOpFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html#a10bd649ffcb237323478f7dcf3b944e0">workspace</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html">tvm::script::ir_builder::tirx::ComposeOpFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a8e61799eac4e806aef5a87d07943883d">~IRBuilderFrameNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html
index 9b81267e260..cf339b958a3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html
@@ -130,9 +130,9 @@ Static Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:a871c25d087b6ec455172421a79b26e99" id="r_a871c25d087b6ec455172421a79b26e99"><td class="memItemLeft" align="right" valign="top">ffi::Map&lt; ffi::String, <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html#a871c25d087b6ec455172421a79b26e99">workspace</a></td></tr>
-<tr class="memdesc:a871c25d087b6ec455172421a79b26e99"><td class="mdescLeft">&#160;</td><td class="mdescRight">The workspace of the compose op.  <br /></td></tr>
-<tr class="separator:a871c25d087b6ec455172421a79b26e99"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a10bd649ffcb237323478f7dcf3b944e0" id="r_a10bd649ffcb237323478f7dcf3b944e0"><td class="memItemLeft" align="right" valign="top">ffi::Map&lt; ffi::String, <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html#a10bd649ffcb237323478f7dcf3b944e0">workspace</a></td></tr>
+<tr class="memdesc:a10bd649ffcb237323478f7dcf3b944e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The workspace of the compose op.  <br /></td></tr>
+<tr class="separator:a10bd649ffcb237323478f7dcf3b944e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:adb786ca133db7faedde8b6a86626d422" id="r_adb786ca133db7faedde8b6a86626d422"><td class="memItemLeft" align="right" valign="top">ffi::Map&lt; ffi::String, ffi::Any &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1ComposeOpFrameNode.html#adb786ca133db7faedde8b6a86626d422">config</a></td></tr>
 <tr class="memdesc:adb786ca133db7faedde8b6a86626d422"><td class="mdescLeft">&#160;</td><td class="mdescRight">The config of the compose op.  <br /></td></tr>
 <tr class="separator:adb786ca133db7faedde8b6a86626d422"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -277,14 +277,14 @@ Additional Inherited Members</h2></td></tr>
 
 </div>
 </div>
-<a id="a871c25d087b6ec455172421a79b26e99" name="a871c25d087b6ec455172421a79b26e99"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a871c25d087b6ec455172421a79b26e99">&#9670;&#160;</a></span>workspace</h2>
+<a id="a10bd649ffcb237323478f7dcf3b944e0" name="a10bd649ffcb237323478f7dcf3b944e0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a10bd649ffcb237323478f7dcf3b944e0">&#9670;&#160;</a></span>workspace</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ffi::Map&lt;ffi::String, <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a>&gt; tvm::script::ir_builder::tirx::ComposeOpFrameNode::workspace</td>
+          <td class="memname">ffi::Map&lt;ffi::String, <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a>&gt; tvm::script::ir_builder::tirx::ComposeOpFrameNode::workspace</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode-members.html
index 361fe2593e2..cb43dec8c59 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode-members.html
@@ -82,16 +82,17 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a174fb590c4fb0d8e7126d038e405052b">_type_mutable</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ada273813a289507af066ec2aecf11e9b">AddCallback</a>(ffi::TypedFunction&lt; void()&gt; callback)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#a4f4d184353dfb549b57c432fd9f7658f">allocated</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#abd596017763d3d255ef2c454304b5cfc">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#a54abd31e4f45384ad677d5db9b5f4d4a">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a45f552bb19d593f4ecc4b3b5d69cf8dc">callbacks</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ab3aaced994da313ebabad6b955332f14">EnterWithScope</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#abb6395a94402e4aa875e8bc242cf63e5">ExitWithScope</a>() final</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#a1dfee494220fe963b9a3de373f7d6e07">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</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_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html#a776930fd20b0f6d935f1ea97b29805dd">stmts</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html">tvm::script::ir_builder::tirx::TIRFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html#a39cb0ad5038bf2dd3db41c856b1f1575">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.ir_builder.tirx.TIRFrame&quot;, TIRFrameNode, IRBuilderFrameNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html">tvm::script::ir_builder::tirx::TIRFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a05b026329132b684f964a125f90dd117">tvm::script::ir_builder::IRBuilderFrameNode::TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.ir_builder.IRBuilderFrame&quot;, IRBuilderFrameNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#acba19e94b07f6a0f42855e75b9f67243">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;script.ir_builder.tirx.DeclBufferFrame&quot;, DeclBufferFrameNode, TIRFrameNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a8e61799eac4e806aef5a87d07943883d">~IRBuilderFrameNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#a536e2ef4f416b87d8c012180ecf0f125">data</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ab3aaced994da313ebabad6b955332f14">EnterWithScope</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#abb6395a94402e4aa875e8bc242cf63e5">ExitWithScope</a>() final</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#a1dfee494220fe963b9a3de373f7d6e07">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</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_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html#a776930fd20b0f6d935f1ea97b29805dd">stmts</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html">tvm::script::ir_builder::tirx::TIRFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html#a39cb0ad5038bf2dd3db41c856b1f1575">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.ir_builder.tirx.TIRFrame&quot;, TIRFrameNode, IRBuilderFrameNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html">tvm::script::ir_builder::tirx::TIRFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a05b026329132b684f964a125f90dd117">tvm::script::ir_builder::IRBuilderFrameNode::TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.ir_builder.IRBuilderFrame&quot;, IRBuilderFrameNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#acba19e94b07f6a0f42855e75b9f67243">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;script.ir_builder.tirx.DeclBufferFrame&quot;, DeclBufferFrameNode, TIRFrameNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html">tvm::script::ir_builder::tirx::DeclBufferFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a8e61799eac4e806aef5a87d07943883d">~IRBuilderFrameNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">virtual</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_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html
index 3e6afd986d9..66c160575ee 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html
@@ -86,12 +86,12 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::ir_builder::tirx::DeclBufferFrameNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__inherit__graph.svg" width="219" height="704"><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_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__inherit__graph.svg" width="219" height="724"><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::script::ir_builder::tirx::DeclBufferFrameNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__coll__graph.svg" width="406" height="852"><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_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__coll__graph.svg" width="512" height="1090"><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,9 +130,12 @@ Static Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:abd596017763d3d255ef2c454304b5cfc" id="r_abd596017763d3d255ef2c454304b5cfc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#abd596017763d3d255ef2c454304b5cfc">buffer</a></td></tr>
-<tr class="memdesc:abd596017763d3d255ef2c454304b5cfc"><td class="mdescLeft">&#160;</td><td class="mdescRight">The declared buffer.  <br /></td></tr>
-<tr class="separator:abd596017763d3d255ef2c454304b5cfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a54abd31e4f45384ad677d5db9b5f4d4a" id="r_a54abd31e4f45384ad677d5db9b5f4d4a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#a54abd31e4f45384ad677d5db9b5f4d4a">buffer</a></td></tr>
+<tr class="memdesc:a54abd31e4f45384ad677d5db9b5f4d4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The declared buffer.  <br /></td></tr>
+<tr class="separator:a54abd31e4f45384ad677d5db9b5f4d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a536e2ef4f416b87d8c012180ecf0f125" id="r_a536e2ef4f416b87d8c012180ecf0f125"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1Expr.html">Expr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#a536e2ef4f416b87d8c012180ecf0f125">data</a></td></tr>
+<tr class="memdesc:a536e2ef4f416b87d8c012180ecf0f125"><td class="mdescLeft">&#160;</td><td class="mdescRight">Physical pointer expression backing the declaration.  <br /></td></tr>
+<tr class="separator:a536e2ef4f416b87d8c012180ecf0f125"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4f4d184353dfb549b57c432fd9f7658f" id="r_a4f4d184353dfb549b57c432fd9f7658f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html#a4f4d184353dfb549b57c432fd9f7658f">allocated</a></td></tr>
 <tr class="memdesc:a4f4d184353dfb549b57c432fd9f7658f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer allocated or not.  <br /></td></tr>
 <tr class="separator:a4f4d184353dfb549b57c432fd9f7658f"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -258,20 +261,36 @@ Additional Inherited Members</h2></td></tr>
 
 </div>
 </div>
-<a id="abd596017763d3d255ef2c454304b5cfc" name="abd596017763d3d255ef2c454304b5cfc"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abd596017763d3d255ef2c454304b5cfc">&#9670;&#160;</a></span>buffer</h2>
+<a id="a54abd31e4f45384ad677d5db9b5f4d4a" name="a54abd31e4f45384ad677d5db9b5f4d4a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a54abd31e4f45384ad677d5db9b5f4d4a">&#9670;&#160;</a></span>buffer</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a> tvm::script::ir_builder::tirx::DeclBufferFrameNode::buffer</td>
+          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a> tvm::script::ir_builder::tirx::DeclBufferFrameNode::buffer</td>
         </tr>
       </table>
 </div><div class="memdoc">
 
 <p>The declared buffer. </p>
 
+</div>
+</div>
+<a id="a536e2ef4f416b87d8c012180ecf0f125" name="a536e2ef4f416b87d8c012180ecf0f125"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a536e2ef4f416b87d8c012180ecf0f125">&#9670;&#160;</a></span>data</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classtvm_1_1Expr.html">Expr</a> tvm::script::ir_builder::tirx::DeclBufferFrameNode::data</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Physical pointer expression backing the declaration. </p>
+
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__coll__graph.svg
index 1e6bea8a2ba..4e3caaeee0c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__coll__graph.svg
@@ -4,30 +4,30 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::script::ir_builder::tirx::DeclBufferFrameNode Pages: 1 -->
-<svg width="304pt" height="639pt"
- viewBox="0.00 0.00 304.00 639.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 635)">
+<svg width="384pt" height="817pt"
+ viewBox="0.00 0.00 384.00 817.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 813)">
 <title>tvm::script::ir_builder::tirx::DeclBufferFrameNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title=" ">
-<polygon fill="#999999" stroke="transparent" points="234,-101 78,-101 78,0 234,0 234,-101"/>
-<text text-anchor="start" x="88" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="88" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::DeclBufferFrameNode</text>
-<text text-anchor="start" x="82" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="95" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">allocated</text>
-<text text-anchor="start" x="82" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="95" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="95" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="82" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="95" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
-<text text-anchor="start" x="82" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="95" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="78,-72.5 78,-72.5 234,-72.5 234,-72.5 78,-72.5"/>
-<polygon fill="#666666" stroke="#666666" points="78,-57.5 78,-57.5 93,-57.5 93,-57.5 78,-57.5"/>
-<polygon fill="#666666" stroke="#666666" points="93,-57.5 93,-57.5 234,-57.5 234,-57.5 93,-57.5"/>
-<polygon fill="none" stroke="#666666" points="78,0 78,-101 234,-101 234,0 78,0"/>
+<polygon fill="#999999" stroke="transparent" points="262,-101 106,-101 106,0 262,0 262,-101"/>
+<text text-anchor="start" x="116" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="116" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::DeclBufferFrameNode</text>
+<text text-anchor="start" x="110" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="123" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">allocated</text>
+<text text-anchor="start" x="110" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="123" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="123" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="110" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="123" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
+<text text-anchor="start" x="110" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="123" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="106,-72.5 106,-72.5 262,-72.5 262,-72.5 106,-72.5"/>
+<polygon fill="#666666" stroke="#666666" points="106,-57.5 106,-57.5 121,-57.5 121,-57.5 106,-57.5"/>
+<polygon fill="#666666" stroke="#666666" points="121,-57.5 121,-57.5 262,-57.5 262,-57.5 121,-57.5"/>
+<polygon fill="none" stroke="#666666" points="106,0 106,-101 262,-101 262,0 106,0"/>
 </a>
 </g>
 </g>
@@ -35,20 +35,20 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html" target="_top" xlink:title="A base frame that represents the TIR fame with body of statements.">
-<polygon fill="white" stroke="transparent" points="156,-290.5 0,-290.5 0,-204.5 156,-204.5 156,-290.5"/>
-<text text-anchor="start" x="25.5" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="27.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::TIRFrameNode</text>
-<text text-anchor="start" x="4" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">stmts</text>
-<text text-anchor="start" x="4" y="-237.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-237.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-226.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-262.5 0,-262.5 156,-262.5 156,-262.5 0,-262.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-247.5 0,-247.5 15,-247.5 15,-247.5 0,-247.5"/>
-<polygon fill="#666666" stroke="#666666" points="15,-247.5 15,-247.5 156,-247.5 156,-247.5 15,-247.5"/>
-<polygon fill="none" stroke="#666666" points="0,-204.5 0,-290.5 156,-290.5 156,-204.5 0,-204.5"/>
+<polygon fill="white" stroke="transparent" points="156,-303.5 0,-303.5 0,-217.5 156,-217.5 156,-303.5"/>
+<text text-anchor="start" x="25.5" y="-291.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="27.5" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::TIRFrameNode</text>
+<text text-anchor="start" x="4" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-265.5" font-family="Helvetica,sans-Serif" font-size="10.00">stmts</text>
+<text text-anchor="start" x="4" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-250.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="4" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-275.5 0,-275.5 156,-275.5 156,-275.5 0,-275.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-260.5 0,-260.5 15,-260.5 15,-260.5 0,-260.5"/>
+<polygon fill="#666666" stroke="#666666" points="15,-260.5 15,-260.5 156,-260.5 156,-260.5 15,-260.5"/>
+<polygon fill="none" stroke="#666666" points="0,-217.5 0,-303.5 156,-303.5 156,-217.5 0,-217.5"/>
 </a>
 </g>
 </g>
@@ -56,8 +56,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="M98.73,-194.67C110.3,-165.75 124.64,-129.91 136.07,-101.32"/>
-<polygon fill="none" stroke="#63b8ff" points="95.39,-193.6 94.92,-204.19 101.89,-196.2 95.39,-193.6"/>
+<path fill="none" stroke="#63b8ff" d="M104.01,-208.46C120.66,-175.8 142.15,-133.62 158.66,-101.22"/>
+<polygon fill="none" stroke="#63b8ff" points="100.87,-206.91 99.45,-217.41 107.11,-210.09 100.87,-206.91"/>
 </a>
 </g>
 </g>
@@ -65,30 +65,30 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="156,-545 0,-545 0,-384 156,-384 156,-545"/>
-<text text-anchor="start" x="24.5" y="-532.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="24.5" y="-521.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
-<text text-anchor="start" x="4" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00">callbacks</text>
-<text text-anchor="start" x="4" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
-<text text-anchor="start" x="4" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-465.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00">~IRBuilderFrameNode()</text>
-<text text-anchor="start" x="4" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">EnterWithScope()</text>
-<text text-anchor="start" x="4" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
-<text text-anchor="start" x="4" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">AddCallback()</text>
-<text text-anchor="start" x="4" y="-390.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-390.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-516.5 0,-516.5 156,-516.5 156,-516.5 0,-516.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-486.5 0,-486.5 15,-486.5 15,-486.5 0,-486.5"/>
-<polygon fill="#666666" stroke="#666666" points="15,-486.5 15,-486.5 156,-486.5 156,-486.5 15,-486.5"/>
-<polygon fill="none" stroke="#666666" points="0,-384 0,-545 156,-545 156,-384 0,-384"/>
+<polygon fill="white" stroke="transparent" points="156,-581 0,-581 0,-420 156,-420 156,-581"/>
+<text text-anchor="start" x="24.5" y="-568.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="24.5" y="-557.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
+<text text-anchor="start" x="4" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-542.5" font-family="Helvetica,sans-Serif" font-size="10.00">callbacks</text>
+<text text-anchor="start" x="4" y="-527.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-527.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
+<text text-anchor="start" x="4" y="-512.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-512.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-501.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="4" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">~IRBuilderFrameNode()</text>
+<text text-anchor="start" x="4" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00">EnterWithScope()</text>
+<text text-anchor="start" x="4" y="-456.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-456.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
+<text text-anchor="start" x="4" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">AddCallback()</text>
+<text text-anchor="start" x="4" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-552.5 0,-552.5 156,-552.5 156,-552.5 0,-552.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-522.5 0,-522.5 15,-522.5 15,-522.5 0,-522.5"/>
+<polygon fill="#666666" stroke="#666666" points="15,-522.5 15,-522.5 156,-522.5 156,-522.5 15,-522.5"/>
+<polygon fill="none" stroke="#666666" points="0,-420 0,-581 156,-581 156,-420 0,-420"/>
 </a>
 </g>
 </g>
@@ -96,8 +96,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,-373.66C78,-344.92 78,-314.43 78,-290.75"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-373.75 78,-383.75 81.5,-373.75 74.5,-373.75"/>
+<path fill="none" stroke="#63b8ff" d="M78,-409.76C78,-373.32 78,-332.98 78,-303.59"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-409.92 78,-419.92 81.5,-409.92 74.5,-409.92"/>
 </a>
 </g>
 </g>
@@ -105,13 +105,13 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-631 49,-631 49,-582 107,-582 107,-631"/>
-<text text-anchor="start" x="54" y="-618.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-603.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-588.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-613.5 49,-613.5 107,-613.5 107,-613.5 49,-613.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-598.5 49,-598.5 107,-598.5 107,-598.5 49,-598.5"/>
-<polygon fill="none" stroke="#666666" points="49,-582 49,-631 107,-631 107,-582 49,-582"/>
+<polygon fill="white" stroke="transparent" points="107,-695 49,-695 49,-646 107,-646 107,-695"/>
+<text text-anchor="start" x="54" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-667.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="76" y="-652.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-677.5 49,-677.5 107,-677.5 107,-677.5 49,-677.5"/>
+<polygon fill="#666666" stroke="#666666" points="49,-662.5 49,-662.5 107,-662.5 107,-662.5 49,-662.5"/>
+<polygon fill="none" stroke="#666666" points="49,-646 49,-695 107,-695 107,-646 49,-646"/>
 </a>
 </g>
 </g>
@@ -119,42 +119,47 @@
 <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,-571.64C78,-563.51 78,-554.49 78,-545.24"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-571.75 78,-581.75 81.5,-571.75 74.5,-571.75"/>
+<path fill="none" stroke="#63b8ff" d="M78,-635.54C78,-619.81 78,-600.4 78,-581.28"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-635.79 78,-645.79 81.5,-635.79 74.5,-635.79"/>
 </a>
 </g>
 </g>
 <!-- Node5 -->
 <g id="Node000005" class="node">
 <title>Node5</title>
-<g id="a_Node000005"><a xlink:href="classtvm_1_1tirx_1_1Buffer.html" target="_top" xlink:title="Buffer is a symbolic n&#45;darray structure. It is a composition of primitive symbolic types,...">
-<polygon fill="white" stroke="transparent" points="296,-347 174,-347 174,-148 296,-148 296,-347"/>
-<text text-anchor="start" x="196" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::Buffer</text>
-<text text-anchor="start" x="233" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="178" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">Buffer()</text>
-<text text-anchor="start" x="178" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
-<text text-anchor="start" x="178" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
-<text text-anchor="start" x="178" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
-<text text-anchor="start" x="178" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">vload()</text>
-<text text-anchor="start" x="178" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">vstore()</text>
-<text text-anchor="start" x="178" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">GetFlattenedBuffer()</text>
-<text text-anchor="start" x="178" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">OffsetOf()</text>
-<text text-anchor="start" x="178" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">OffsetOf_p()</text>
-<text text-anchor="start" x="178" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="191" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">scope()</text>
-<text text-anchor="start" x="191" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 7 more...</text>
-<polygon fill="#666666" stroke="#666666" points="174,-329.5 174,-329.5 296,-329.5 296,-329.5 174,-329.5"/>
-<polygon fill="#666666" stroke="#666666" points="174,-314.5 174,-314.5 296,-314.5 296,-314.5 174,-314.5"/>
-<polygon fill="none" stroke="#666666" points="174,-148 174,-347 296,-347 296,-148 174,-148"/>
+<g id="a_Node000005"><a xlink:href="classtvm_1_1tirx_1_1BufferVar.html" target="_top" xlink:title="Checked zero&#45;state view over an ordinary VarNode with BufferType.">
+<polygon fill="white" stroke="transparent" points="337.5,-373 224.5,-373 224.5,-148 337.5,-148 337.5,-373"/>
+<text text-anchor="start" x="234.5" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferVar</text>
+<text text-anchor="start" x="229" y="-345.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-345.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_is_nullable</text>
+<text text-anchor="start" x="229" y="-330.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-330.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="242" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="229" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="229" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-289.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="229" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-274.5" font-family="Helvetica,sans-Serif" font-size="10.00">var()</text>
+<text text-anchor="start" x="229" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-259.5" font-family="Helvetica,sans-Serif" font-size="10.00">type()</text>
+<text text-anchor="start" x="229" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">name()</text>
+<text text-anchor="start" x="229" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-229.5" font-family="Helvetica,sans-Serif" font-size="10.00">span()</text>
+<text text-anchor="start" x="229" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-214.5" font-family="Helvetica,sans-Serif" font-size="10.00">data()</text>
+<text text-anchor="start" x="229" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-199.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
+<text text-anchor="start" x="229" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-184.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
+<text text-anchor="start" x="229" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="242" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
+<text text-anchor="start" x="242" y="-154.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 17 more...</text>
+<polygon fill="#666666" stroke="#666666" points="225,-355.5 225,-355.5 338,-355.5 338,-355.5 225,-355.5"/>
+<polygon fill="#666666" stroke="#666666" points="225,-314.5 225,-314.5 240,-314.5 240,-314.5 225,-314.5"/>
+<polygon fill="#666666" stroke="#666666" points="240,-314.5 240,-314.5 338,-314.5 338,-314.5 240,-314.5"/>
+<polygon fill="none" stroke="#666666" points="224.5,-148 224.5,-373 337.5,-373 337.5,-148 224.5,-148"/>
 </a>
 </g>
 </g>
@@ -162,23 +167,33 @@
 <g id="edge4_Node000001_Node000005" class="edge">
 <title>Node5&#45;&gt;Node1</title>
 <g id="a_edge4_Node000001_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M195.04,-147.86C190.15,-135.8 185.28,-123.76 180.71,-112.49"/>
-<polygon fill="none" stroke="#63b8ff" points="180.58,-112.17 174.62,-108.11 176.07,-101.05 182.03,-105.1 180.58,-112.17"/>
+<path fill="none" stroke="#63b8ff" d="M228.95,-147.89C223.22,-135.6 217.56,-123.46 212.28,-112.14"/>
+<polygon fill="none" stroke="#63b8ff" points="212.22,-112.01 206.06,-108.26 207.15,-101.14 213.31,-104.88 212.22,-112.01"/>
 </a>
 </g>
-<text text-anchor="middle" x="207" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +buffer</text>
+<text text-anchor="middle" x="238" y="-122" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +buffer</text>
 </g>
 <!-- Node6 -->
 <g id="Node000006" class="node">
 <title>Node6</title>
-<g id="a_Node000006"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="272,-489 198,-489 198,-440 272,-440 272,-489"/>
-<text text-anchor="start" x="203" y="-476.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="233" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="233" y="-446.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="198,-471.5 198,-471.5 272,-471.5 272,-471.5 198,-471.5"/>
-<polygon fill="#666666" stroke="#666666" points="198,-456.5 198,-456.5 272,-456.5 272,-456.5 198,-456.5"/>
-<polygon fill="none" stroke="#666666" points="198,-440 198,-489 272,-489 272,-440 198,-440"/>
+<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="376,-560.5 212,-560.5 212,-440.5 376,-440.5 376,-560.5"/>
+<text text-anchor="start" x="286" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">Var</text>
+<text text-anchor="start" x="292" y="-533.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="216" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="229" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
+<text text-anchor="start" x="216" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="229" y="-503.5" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
+<text text-anchor="start" x="216" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="229" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="216" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="229" y="-473.5" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="216" y="-458.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="229" y="-458.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="229" y="-447.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="212,-543.5 212,-543.5 376,-543.5 376,-543.5 212,-543.5"/>
+<polygon fill="#666666" stroke="#666666" points="212,-528.5 212,-528.5 376,-528.5 376,-528.5 212,-528.5"/>
+<polygon fill="none" stroke="#666666" points="212,-440.5 212,-560.5 376,-560.5 376,-440.5 212,-440.5"/>
 </a>
 </g>
 </g>
@@ -186,8 +201,72 @@
 <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="M235,-429.39C235,-407.06 235,-376.63 235,-347.1"/>
-<polygon fill="none" stroke="#63b8ff" points="231.5,-429.67 235,-439.67 238.5,-429.67 231.5,-429.67"/>
+<path fill="none" stroke="#63b8ff" d="M290.22,-430.34C289.25,-412.46 288.17,-392.74 287.11,-373.27"/>
+<polygon fill="none" stroke="#63b8ff" points="286.73,-430.57 290.77,-440.36 293.72,-430.19 286.73,-430.57"/>
+</a>
+</g>
+</g>
+<!-- Node7 -->
+<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="311,-723 147,-723 147,-618 311,-618 311,-723"/>
+<text text-anchor="start" x="205" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="227" y="-695.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="151" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="164" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="151" y="-665.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="164" y="-665.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="151" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="164" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="151" y="-635.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="164" y="-635.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="164" y="-624.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="147,-705.5 147,-705.5 311,-705.5 311,-705.5 147,-705.5"/>
+<polygon fill="#666666" stroke="#666666" points="147,-690.5 147,-690.5 311,-690.5 311,-690.5 147,-690.5"/>
+<polygon fill="none" stroke="#666666" points="147,-618 147,-723 311,-723 311,-618 147,-618"/>
+</a>
+</g>
+</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="M211.4,-617.59C208.03,-605.69 204.95,-593.01 203,-581 175.85,-413.6 177.95,-212.69 181.25,-113.36"/>
+<polygon fill="none" stroke="#63b8ff" points="181.26,-113.17 177.47,-107.03 181.68,-101.18 185.47,-107.32 181.26,-113.17"/>
+</a>
+</g>
+<text text-anchor="middle" x="200" y="-394" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +data</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="M252.7,-608.24C258.7,-592.75 265.12,-576.14 271.08,-560.74"/>
+<polygon fill="none" stroke="#63b8ff" points="249.38,-607.13 249.03,-617.72 255.91,-609.66 249.38,-607.13"/>
+</a>
+</g>
+</g>
+<!-- Node8 -->
+<g id="Node000008" class="node">
+<title>Node8</title>
+<g id="a_Node000008"><a xlink:title=" ">
+<polygon fill="white" stroke="transparent" points="266,-809 192,-809 192,-760 266,-760 266,-809"/>
+<text text-anchor="start" x="197" y="-796.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="227" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="227" y="-766.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="192,-791.5 192,-791.5 266,-791.5 266,-791.5 192,-791.5"/>
+<polygon fill="#666666" stroke="#666666" points="192,-776.5 192,-776.5 266,-776.5 266,-776.5 192,-776.5"/>
+<polygon fill="none" stroke="#666666" points="192,-760 192,-809 266,-809 266,-760 192,-760"/>
+</a>
+</g>
+</g>
+<!-- Node8&#45;&gt;Node7 -->
+<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="M229,-749.7C229,-741.38 229,-732.28 229,-723.33"/>
+<polygon fill="none" stroke="#63b8ff" points="225.5,-749.75 229,-759.75 232.5,-749.75 225.5,-749.75"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__inherit__graph.svg
index cff205eedbf..e60b923d3d2 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode__inherit__graph.svg
@@ -4,32 +4,34 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::script::ir_builder::tirx::DeclBufferFrameNode Pages: 1 -->
-<svg width="164pt" height="528pt"
- viewBox="0.00 0.00 164.00 528.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 524)">
+<svg width="164pt" height="543pt"
+ viewBox="0.00 0.00 164.00 543.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 539)">
 <title>tvm::script::ir_builder::tirx::DeclBufferFrameNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title=" ">
-<polygon fill="#999999" stroke="transparent" points="156,-116 0,-116 0,0 156,0 156,-116"/>
-<text text-anchor="start" x="10" y="-104" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="10" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::DeclBufferFrameNode</text>
-<text text-anchor="start" x="4" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">buffer</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">allocated</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">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-37" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</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,-88 0,-88 156,-88 156,-88 0,-88"/>
-<polygon fill="#666666" stroke="#666666" points="0,-58 0,-58 15,-58 15,-58 0,-58"/>
-<polygon fill="#666666" stroke="#666666" points="15,-58 15,-58 156,-58 156,-58 15,-58"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-116 156,-116 156,0 0,0"/>
+<polygon fill="#999999" stroke="transparent" points="156,-131 0,-131 0,0 156,0 156,-131"/>
+<text text-anchor="start" x="10" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="10" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::DeclBufferFrameNode</text>
+<text text-anchor="start" x="4" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">buffer</text>
+<text text-anchor="start" x="4" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">data</text>
+<text text-anchor="start" x="4" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">allocated</text>
+<text text-anchor="start" x="4" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="4" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
+<text text-anchor="start" x="4" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-102.5 0,-102.5 156,-102.5 156,-102.5 0,-102.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-57.5 0,-57.5 15,-57.5 15,-57.5 0,-57.5"/>
+<polygon fill="#666666" stroke="#666666" points="15,-57.5 15,-57.5 156,-57.5 156,-57.5 15,-57.5"/>
+<polygon fill="none" stroke="#666666" points="0,0 0,-131 156,-131 156,0 0,0"/>
 </a>
 </g>
 </g>
@@ -37,20 +39,20 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html" target="_top" xlink:title="A base frame that represents the TIR fame with body of statements.">
-<polygon fill="white" stroke="transparent" points="156,-238 0,-238 0,-152 156,-152 156,-238"/>
-<text text-anchor="start" x="25.5" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="27.5" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::TIRFrameNode</text>
+<polygon fill="white" stroke="transparent" points="156,-253 0,-253 0,-167 156,-167 156,-253"/>
+<text text-anchor="start" x="25.5" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="27.5" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::TIRFrameNode</text>
+<text text-anchor="start" x="4" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">stmts</text>
 <text text-anchor="start" x="4" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">stmts</text>
-<text text-anchor="start" x="4" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-210 0,-210 156,-210 156,-210 0,-210"/>
-<polygon fill="#666666" stroke="#666666" points="0,-195 0,-195 15,-195 15,-195 0,-195"/>
-<polygon fill="#666666" stroke="#666666" points="15,-195 15,-195 156,-195 156,-195 15,-195"/>
-<polygon fill="none" stroke="#666666" points="0,-152 0,-238 156,-238 156,-152 0,-152"/>
+<text text-anchor="start" x="17" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="4" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-174" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-225 0,-225 156,-225 156,-225 0,-225"/>
+<polygon fill="#666666" stroke="#666666" points="0,-210 0,-210 15,-210 15,-210 0,-210"/>
+<polygon fill="#666666" stroke="#666666" points="15,-210 15,-210 156,-210 156,-210 15,-210"/>
+<polygon fill="none" stroke="#666666" points="0,-167 0,-253 156,-253 156,-167 0,-167"/>
 </a>
 </g>
 </g>
@@ -58,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="M78,-141.63C78,-133.24 78,-124.53 78,-116.04"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-141.66 78,-151.66 81.5,-141.66 74.5,-141.66"/>
+<path fill="none" stroke="#63b8ff" d="M78,-156.43C78,-148.2 78,-139.6 78,-131.14"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-156.63 78,-166.63 81.5,-156.63 74.5,-156.63"/>
 </a>
 </g>
 </g>
@@ -67,30 +69,30 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="156,-435 0,-435 0,-274 156,-274 156,-435"/>
-<text text-anchor="start" x="24.5" y="-422.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="24.5" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
+<polygon fill="white" stroke="transparent" points="156,-450 0,-450 0,-289 156,-289 156,-450"/>
+<text text-anchor="start" x="24.5" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="24.5" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
+<text text-anchor="start" x="4" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00">callbacks</text>
 <text text-anchor="start" x="4" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">callbacks</text>
+<text text-anchor="start" x="17" y="-396.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
 <text text-anchor="start" x="4" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
-<text text-anchor="start" x="4" y="-366.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-366.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="17" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17" y="-370.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="4" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17" y="-355.5" font-family="Helvetica,sans-Serif" font-size="10.00">~IRBuilderFrameNode()</text>
 <text text-anchor="start" x="4" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">~IRBuilderFrameNode()</text>
+<text text-anchor="start" x="17" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">EnterWithScope()</text>
 <text text-anchor="start" x="4" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">EnterWithScope()</text>
+<text text-anchor="start" x="17" y="-325.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
 <text text-anchor="start" x="4" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
+<text text-anchor="start" x="17" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">AddCallback()</text>
 <text text-anchor="start" x="4" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">AddCallback()</text>
-<text text-anchor="start" x="4" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-280.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-406.5 0,-406.5 156,-406.5 156,-406.5 0,-406.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-376.5 0,-376.5 15,-376.5 15,-376.5 0,-376.5"/>
-<polygon fill="#666666" stroke="#666666" points="15,-376.5 15,-376.5 156,-376.5 156,-376.5 15,-376.5"/>
-<polygon fill="none" stroke="#666666" points="0,-274 0,-435 156,-435 156,-274 0,-274"/>
+<text text-anchor="start" x="17" y="-295.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="0,-421.5 0,-421.5 156,-421.5 156,-421.5 0,-421.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-391.5 0,-391.5 15,-391.5 15,-391.5 0,-391.5"/>
+<polygon fill="#666666" stroke="#666666" points="15,-391.5 15,-391.5 156,-391.5 156,-391.5 15,-391.5"/>
+<polygon fill="none" stroke="#666666" points="0,-289 0,-450 156,-450 156,-289 0,-289"/>
 </a>
 </g>
 </g>
@@ -98,8 +100,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,-263.72C78,-254.82 78,-246.11 78,-238.06"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-263.83 78,-273.83 81.5,-263.83 74.5,-263.83"/>
+<path fill="none" stroke="#63b8ff" d="M78,-278.72C78,-269.82 78,-261.11 78,-253.06"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-278.83 78,-288.83 81.5,-278.83 74.5,-278.83"/>
 </a>
 </g>
 </g>
@@ -107,13 +109,13 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-520 49,-520 49,-471 107,-471 107,-520"/>
-<text text-anchor="start" x="54" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<polygon fill="white" stroke="transparent" points="107,-535 49,-535 49,-486 107,-486 107,-535"/>
+<text text-anchor="start" x="54" y="-522.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="76" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 <text text-anchor="start" x="76" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="49,-517.5 49,-517.5 107,-517.5 107,-517.5 49,-517.5"/>
 <polygon fill="#666666" stroke="#666666" points="49,-502.5 49,-502.5 107,-502.5 107,-502.5 49,-502.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-487.5 49,-487.5 107,-487.5 107,-487.5 49,-487.5"/>
-<polygon fill="none" stroke="#666666" points="49,-471 49,-520 107,-520 107,-471 49,-471"/>
+<polygon fill="none" stroke="#666666" points="49,-486 49,-535 107,-535 107,-486 49,-486"/>
 </a>
 </g>
 </g>
@@ -121,8 +123,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,-460.77C78,-452.91 78,-444.2 78,-435.26"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-460.92 78,-470.92 81.5,-460.92 74.5,-460.92"/>
+<path fill="none" stroke="#63b8ff" d="M78,-475.77C78,-467.91 78,-459.2 78,-450.26"/>
+<polygon fill="none" stroke="#63b8ff" points="74.5,-475.92 78,-485.92 81.5,-475.92 74.5,-475.92"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode-members.html
index d882f1145ce..24a1eb9eae8 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode-members.html
@@ -83,7 +83,7 @@ $(function() {
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ada273813a289507af066ec2aecf11e9b">AddCallback</a>(ffi::TypedFunction&lt; void()&gt; callback)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#aaf9c1e6b22227729b2ae1384752ea4bb">args</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a8036743a7e955833b2e7117b32a59a45">attrs</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a4d91eceea4805a81703fdc16e99f662e">buffer_map</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a562d80758dd9cc142771f2617e17560b">buffer_map</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a45f552bb19d593f4ecc4b3b5d69cf8dc">callbacks</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ab3aaced994da313ebabad6b955332f14">EnterWithScope</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#ae15b67665d439473d077f78a00287704">env_threads</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
@@ -93,7 +93,7 @@ $(function() {
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#ab5d89a38b05142cd3d90999ed057876c">persistent</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#aa533511971b3dcd599e1fec79bb89880">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</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_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a6dbc186d0e1461586025b38f10a67dee">ret_type</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#ae7b2ec43e4861bcd40cb9646316baf4d">root_alloc_buffers</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a83f7ecde183edcd90053214226aba827">root_alloc_buffers</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a1689ab095eefd37e3b1bff704533025c">s_tir</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tirx::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html#a776930fd20b0f6d935f1ea97b29805dd">stmts</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html">tvm::script::ir_builder::tirx::TIRFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html#a39cb0ad5038bf2dd3db41c856b1f1575">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.ir_builder.tirx.TIRFrame&quot;, TIRFrameNode, IRBuilderFrameNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html">tvm::script::ir_builder::tirx::TIRFrameNode</a></td><td class="entry"></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html
index f91fc43522b..06456b302ca 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html
@@ -145,18 +145,18 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:a6dbc186d0e1461586025b38f10a67dee" id="r_a6dbc186d0e1461586025b38f10a67dee"><td class="memItemLeft" align="right" valign="top">ffi::Optional&lt; <a class="el" href="classtvm_1_1Type.html">Type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a6dbc186d0e1461586025b38f10a67dee">ret_type</a></td></tr>
 <tr class="memdesc:a6dbc186d0e1461586025b38f10a67dee"><td class="mdescLeft">&#160;</td><td class="mdescRight">The return type of the function.  <br /></td></tr>
 <tr class="separator:a6dbc186d0e1461586025b38f10a67dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4d91eceea4805a81703fdc16e99f662e" id="r_a4d91eceea4805a81703fdc16e99f662e"><td class="memItemLeft" align="right" valign="top">ffi::Map&lt; <a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">tvm::tirx::Var</a>, <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a4d91eceea480 [...]
-<tr class="memdesc:a4d91eceea4805a81703fdc16e99f662e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps some parameters to specific Buffer data structures.  <br /></td></tr>
-<tr class="separator:a4d91eceea4805a81703fdc16e99f662e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a562d80758dd9cc142771f2617e17560b" id="r_a562d80758dd9cc142771f2617e17560b"><td class="memItemLeft" align="right" valign="top">ffi::Map&lt; <a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">tvm::tirx::Var</a>, <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a562d80 [...]
+<tr class="memdesc:a562d80758dd9cc142771f2617e17560b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps some parameters to specific buffer data structures.  <br /></td></tr>
+<tr class="separator:a562d80758dd9cc142771f2617e17560b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8036743a7e955833b2e7117b32a59a45" id="r_a8036743a7e955833b2e7117b32a59a45"><td class="memItemLeft" align="right" valign="top">ffi::Map&lt; ffi::String, <a class="el" href="classtvm_1_1With.html">Any</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a8036743a7e955833b2e7117b32a59a45">attrs</a></td></tr>
 <tr class="memdesc:a8036743a7e955833b2e7117b32a59a45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Additional attributes storing the meta-data.  <br /></td></tr>
 <tr class="separator:a8036743a7e955833b2e7117b32a59a45"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ae15b67665d439473d077f78a00287704" id="r_ae15b67665d439473d077f78a00287704"><td class="memItemLeft" align="right" valign="top">ffi::Map&lt; <a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">tvm::tirx::Var</a>, <a class="el" href="classtvm_1_1tirx_1_1IterVar.html">tvm::tirx::IterVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#ae15b67665d [...]
 <tr class="memdesc:ae15b67665d439473d077f78a00287704"><td class="mdescLeft">&#160;</td><td class="mdescRight">The variable map bound to thread env.  <br /></td></tr>
 <tr class="separator:ae15b67665d439473d077f78a00287704"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae7b2ec43e4861bcd40cb9646316baf4d" id="r_ae7b2ec43e4861bcd40cb9646316baf4d"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#ae7b2ec43e4861bcd40cb9646316baf4d">root_alloc_buffers</a></td></tr>
-<tr class="memdesc:ae7b2ec43e4861bcd40cb9646316baf4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer allocated in root block.  <br /></td></tr>
-<tr class="separator:ae7b2ec43e4861bcd40cb9646316baf4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a83f7ecde183edcd90053214226aba827" id="r_a83f7ecde183edcd90053214226aba827"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a83f7ecde183edcd90053214226aba827">root_alloc_buffers</a></td></tr>
+<tr class="memdesc:a83f7ecde183edcd90053214226aba827"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer allocated in root block.  <br /></td></tr>
+<tr class="separator:a83f7ecde183edcd90053214226aba827"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1689ab095eefd37e3b1bff704533025c" id="r_a1689ab095eefd37e3b1bff704533025c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html#a1689ab095eefd37e3b1bff704533025c">s_tir</a></td></tr>
 <tr class="memdesc:a1689ab095eefd37e3b1bff704533025c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether this PrimFunc uses <a class="el" href="namespacetvm_1_1s__tir.html">s_tir</a> semantics (root SBlock wrap, parser layout default = None). Default (false) = tirx semantics.  <br /></td></tr>
 <tr class="separator:a1689ab095eefd37e3b1bff704533025c"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -304,19 +304,19 @@ Additional Inherited Members</h2></td></tr>
 
 </div>
 </div>
-<a id="a4d91eceea4805a81703fdc16e99f662e" name="a4d91eceea4805a81703fdc16e99f662e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4d91eceea4805a81703fdc16e99f662e">&#9670;&#160;</a></span>buffer_map</h2>
+<a id="a562d80758dd9cc142771f2617e17560b" name="a562d80758dd9cc142771f2617e17560b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a562d80758dd9cc142771f2617e17560b">&#9670;&#160;</a></span>buffer_map</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ffi::Map&lt;<a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">tvm::tirx::Var</a>, <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a>&gt; tvm::script::ir_builder::tirx::PrimFuncFrameNode::buffer_map</td>
+          <td class="memname">ffi::Map&lt;<a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">tvm::tirx::Var</a>, <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a>&gt; tvm::script::ir_builder::tirx::PrimFuncFrameNode::buffer_map</td>
         </tr>
       </table>
 </div><div class="memdoc">
 
-<p>Maps some parameters to specific Buffer data structures. </p>
+<p>Maps some parameters to specific buffer data structures. </p>
 
 </div>
 </div>
@@ -400,14 +400,14 @@ Additional Inherited Members</h2></td></tr>
 
 </div>
 </div>
-<a id="ae7b2ec43e4861bcd40cb9646316baf4d" name="ae7b2ec43e4861bcd40cb9646316baf4d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae7b2ec43e4861bcd40cb9646316baf4d">&#9670;&#160;</a></span>root_alloc_buffers</h2>
+<a id="a83f7ecde183edcd90053214226aba827" name="a83f7ecde183edcd90053214226aba827"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a83f7ecde183edcd90053214226aba827">&#9670;&#160;</a></span>root_alloc_buffers</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a>&gt; tvm::script::ir_builder::tirx::PrimFuncFrameNode::root_alloc_buffers</td>
+          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a>&gt; tvm::script::ir_builder::tirx::PrimFuncFrameNode::root_alloc_buffers</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode-members.html
index c472349b344..397860ae6f3 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode-members.html
@@ -81,7 +81,7 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a174fb590c4fb0d8e7126d038e405052b">_type_mutable</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ada273813a289507af066ec2aecf11e9b">AddCallback</a>(ffi::TypedFunction&lt; void()&gt; callback)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html#a2b64671ba1c5e6f0bda5b435d3d7e5e0">alloc_buffers</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html">tvm::script::ir_builder::tirx::SBlockFrameNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html#ab53d97979b38debfa97e269c842a6aaa">alloc_buffers</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html">tvm::script::ir_builder::tirx::SBlockFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html#a8e3559424abc5e7d267b1e746c819f3e">annotations</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html">tvm::script::ir_builder::tirx::SBlockFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a45f552bb19d593f4ecc4b3b5d69cf8dc">callbacks</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#ab3aaced994da313ebabad6b955332f14">EnterWithScope</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html
index 81ec4fd45b5..9fe71754459 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html
@@ -148,9 +148,9 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:a8baeb962435a11ecb351c82bbbb57517" id="r_a8baeb962435a11ecb351c82bbbb57517"><td class="memItemLeft" align="right" valign="top">ffi::Optional&lt; <a class="el" href="classtvm_1_1tirx_1_1Stmt.html">tvm::tirx::Stmt</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html#a8baeb962435a11ecb351c82bbbb57517">init</a></td></tr>
 <tr class="memdesc:a8baeb962435a11ecb351c82bbbb57517"><td class="mdescLeft">&#160;</td><td class="mdescRight">The init statement of the bolck.  <br /></td></tr>
 <tr class="separator:a8baeb962435a11ecb351c82bbbb57517"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2b64671ba1c5e6f0bda5b435d3d7e5e0" id="r_a2b64671ba1c5e6f0bda5b435d3d7e5e0"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html#a2b64671ba1c5e6f0bda5b435d3d7e5e0">alloc_buffers</a></td></tr>
-<tr class="memdesc:a2b64671ba1c5e6f0bda5b435d3d7e5e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer allocated in the block.  <br /></td></tr>
-<tr class="separator:a2b64671ba1c5e6f0bda5b435d3d7e5e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab53d97979b38debfa97e269c842a6aaa" id="r_ab53d97979b38debfa97e269c842a6aaa"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html#ab53d97979b38debfa97e269c842a6aaa">alloc_buffers</a></td></tr>
+<tr class="memdesc:ab53d97979b38debfa97e269c842a6aaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer allocated in the block.  <br /></td></tr>
+<tr class="separator:ab53d97979b38debfa97e269c842a6aaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afa1ee611089d328de6dcc1fd0f043cbb" id="r_afa1ee611089d328de6dcc1fd0f043cbb"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1MatchBufferRegion.html">tvm::tirx::MatchBufferRegion</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html#afa1ee611089d328de6dcc1fd0f043cbb">match_buffers</a></td></tr>
 <tr class="memdesc:afa1ee611089d328de6dcc1fd0f043cbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">The match buffer regions.  <br /></td></tr>
 <tr class="separator:afa1ee611089d328de6dcc1fd0f043cbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -275,14 +275,14 @@ Additional Inherited Members</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a id="a2b64671ba1c5e6f0bda5b435d3d7e5e0" name="a2b64671ba1c5e6f0bda5b435d3d7e5e0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a2b64671ba1c5e6f0bda5b435d3d7e5e0">&#9670;&#160;</a></span>alloc_buffers</h2>
+<a id="ab53d97979b38debfa97e269c842a6aaa" name="ab53d97979b38debfa97e269c842a6aaa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab53d97979b38debfa97e269c842a6aaa">&#9670;&#160;</a></span>alloc_buffers</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a>&gt; tvm::script::ir_builder::tirx::SBlockFrameNode::alloc_buffers</td>
+          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">tvm::tirx::BufferVar</a>&gt; tvm::script::ir_builder::tirx::SBlockFrameNode::alloc_buffers</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode__inherit__graph.svg
index 1b3824fb0e0..62693de7a83 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrameNode__inherit__graph.svg
@@ -205,24 +205,26 @@
 <g id="Node000009" class="node">
 <title>Node9</title>
 <g id="a_Node000009"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1DeclBufferFrameNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1026,-183.5 870,-183.5 870,-67.5 1026,-67.5 1026,-183.5"/>
-<text text-anchor="start" x="880" y="-171.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="start" x="880" y="-160.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::DeclBufferFrameNode</text>
-<text text-anchor="start" x="874" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">buffer</text>
-<text text-anchor="start" x="874" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">allocated</text>
-<text text-anchor="start" x="874" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="887" y="-104.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="874" y="-89.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-89.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
-<text text-anchor="start" x="874" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="887" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="870,-155.5 870,-155.5 1026,-155.5 1026,-155.5 870,-155.5"/>
-<polygon fill="#666666" stroke="#666666" points="870,-125.5 870,-125.5 885,-125.5 885,-125.5 870,-125.5"/>
-<polygon fill="#666666" stroke="#666666" points="885,-125.5 885,-125.5 1026,-125.5 1026,-125.5 885,-125.5"/>
-<polygon fill="none" stroke="#666666" points="870,-67.5 870,-183.5 1026,-183.5 1026,-67.5 870,-67.5"/>
+<polygon fill="white" stroke="transparent" points="1026,-191 870,-191 870,-60 1026,-60 1026,-191"/>
+<text text-anchor="start" x="880" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="start" x="880" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tirx::DeclBufferFrameNode</text>
+<text text-anchor="start" x="874" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="887" y="-152.5" font-family="Helvetica,sans-Serif" font-size="10.00">buffer</text>
+<text text-anchor="start" x="874" y="-137.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="887" y="-137.5" font-family="Helvetica,sans-Serif" font-size="10.00">data</text>
+<text text-anchor="start" x="874" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="887" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">allocated</text>
+<text text-anchor="start" x="874" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="887" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="887" y="-96.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="874" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="887" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">ExitWithScope()</text>
+<text text-anchor="start" x="874" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="887" y="-66.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="870,-162.5 870,-162.5 1026,-162.5 1026,-162.5 870,-162.5"/>
+<polygon fill="#666666" stroke="#666666" points="870,-117.5 870,-117.5 885,-117.5 885,-117.5 870,-117.5"/>
+<polygon fill="#666666" stroke="#666666" points="885,-117.5 885,-117.5 1026,-117.5 1026,-117.5 885,-117.5"/>
+<polygon fill="none" stroke="#666666" points="870,-60 870,-191 1026,-191 1026,-60 870,-60"/>
 </a>
 </g>
 </g>
@@ -230,7 +232,7 @@
 <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="M1207.85,-317.68C1153.93,-307.3 1085.79,-287.7 1035,-251 1010.95,-233.63 991.24,-207.48 976.7,-183.63"/>
+<path fill="none" stroke="#63b8ff" d="M1207.85,-317.68C1153.93,-307.3 1085.79,-287.7 1035,-251 1013.41,-235.4 995.32,-212.73 981.32,-191"/>
 <polygon fill="none" stroke="#63b8ff" points="1207.27,-321.13 1217.74,-319.51 1208.55,-314.25 1207.27,-321.13"/>
 </a>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOp-members.html b/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOp-members.html
index 04e3fd3c137..72894e6d280 100644
--- a/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOp-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOp-members.html
@@ -80,7 +80,7 @@ $(function() {
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1te_1_1ExternOp.html">tvm::te::ExternOp</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1te_1_1Operation.html#adf4101428237ffcca42774fad9ba6ef5">ContainerType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1Operation.html">tvm::te::Operation</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOp.html#a93c78c8f802f1f574ad244fd9cd07c89">ExternOp</a>(std::string name, std::string tag, ffi::Map&lt; ffi::String, ffi::Any &gt; attrs, ffi::Array&lt; Tensor &gt; inputs, ffi::Array&lt; Buffer &gt; input_placeholders, ffi::Array&lt; Buffer &gt; output_placeholders, Stmt body)</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOp.html">tvm::te::ExternOp</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOp.html#a4e7ff8e68205eb751844e12c18a57d54">ExternOp</a>(std::string name, std::string tag, ffi::Map&lt; ffi::String, ffi::Any &gt; attrs, ffi::Array&lt; Tensor &gt; inputs, ffi::Array&lt; BufferVar &gt; input_placeholders, ffi::Array&lt; BufferVar &gt; output_placeholders, Stmt body)</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOp.html">tvm::te::ExternOp</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1te_1_1Operation.html#a7bc69f793cb5cbc99bf20fed8617d487">Operation</a>()</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1Operation.html">tvm::te::Operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1Operation.html#acac0ade4a74dcfd1ebb76971b9a2fbf8">Operation</a>(ffi::ObjectPtr&lt; ffi::Object &gt; n)</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1Operation.html">tvm::te::Operation</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_1te_1_1Operation.html#a913f10b472f50814c9b54b0dba1e015b">Operation</a>(ffi::UnsafeInit tag)</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1Operation.html">tvm::te::Operation</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOp.html b/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOp.html
index f14ecc84151..e000744ee19 100644
--- a/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOp.html
+++ b/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOp.html
@@ -97,8 +97,8 @@ Collaboration diagram for tvm::te::ExternOp:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a93c78c8f802f1f574ad244fd9cd07c89" id="r_a93c78c8f802f1f574ad244fd9cd07c89"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOp.html#a93c78c8f802f1f574ad244fd9cd07c89">ExternOp</a> (std::string name, std::string tag, ffi::Map&lt; ffi::String, ffi::Any &gt; attrs, ffi::Array&lt; <a class="el" href="classtvm_1_1te_1_1Tensor.html">Tensor</a> &gt; inputs, ffi::Array&lt; <a cla [...]
-<tr class="separator:a93c78c8f802f1f574ad244fd9cd07c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e7ff8e68205eb751844e12c18a57d54" id="r_a4e7ff8e68205eb751844e12c18a57d54"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOp.html#a4e7ff8e68205eb751844e12c18a57d54">ExternOp</a> (std::string name, std::string tag, ffi::Map&lt; ffi::String, ffi::Any &gt; attrs, ffi::Array&lt; <a class="el" href="classtvm_1_1te_1_1Tensor.html">Tensor</a> &gt; inputs, ffi::Array&lt; <a cla [...]
+<tr class="separator:a4e7ff8e68205eb751844e12c18a57d54"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac6cf13e1068de58d9885e0bb745d187a" id="r_ac6cf13e1068de58d9885e0bb745d187a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOp.html#ac6cf13e1068de58d9885e0bb745d187a">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1te_1_1ExternOp.html">ExternOp</a>, <a class="el" href="classtvm_1_1te_1_1Operation.html">Operation</a>, <a class="el" href="cla [...]
 <tr class="separator:ac6cf13e1068de58d9885e0bb745d187a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1te_1_1Operation"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1te_1_1Operation')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1te_1_1Operation.html">tvm::te::Operation</a></td></tr>
@@ -128,8 +128,8 @@ Additional Inherited Members</h2></td></tr>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1te_1_1ExternOpNode.html" title="External computation that cannot be splitted.">ExternOpNode</a>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html" title="External computation that cannot be splitted.">ExternOpNode</a> </dd></dl>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a93c78c8f802f1f574ad244fd9cd07c89" name="a93c78c8f802f1f574ad244fd9cd07c89"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a93c78c8f802f1f574ad244fd9cd07c89">&#9670;&#160;</a></span>ExternOp()</h2>
+<a id="a4e7ff8e68205eb751844e12c18a57d54" name="a4e7ff8e68205eb751844e12c18a57d54"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e7ff8e68205eb751844e12c18a57d54">&#9670;&#160;</a></span>ExternOp()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -161,13 +161,13 @@ Additional Inherited Members</h2></td></tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> &gt;&#160;</td>
+          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> &gt;&#160;</td>
           <td class="paramname"><em>input_placeholders</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> &gt;&#160;</td>
+          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> &gt;&#160;</td>
           <td class="paramname"><em>output_placeholders</em>, </td>
         </tr>
         <tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOpNode-members.html b/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOpNode-members.html
index d5816e6deda..8ac9e430e49 100644
--- a/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOpNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOpNode-members.html
@@ -82,13 +82,13 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1te_1_1OperationNode.html#ac3b6110bbf6d51daf3e1cff12342679e">attrs</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1OperationNode.html">tvm::te::OperationNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a962b2cfaa4a2141c1b9247ac634b7bf2">body</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#aa2781af3e0414490286d62ed05722e7c">ExternOpNode</a>()</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a7be0fe1f544efca4468423bcac991919">input_placeholders</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a1b486490349817c28a1a292dfb1009b5">input_placeholders</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a3db645dcdf8aa1a9036b424eba963d87">inputs</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#af6efbf511c24fcc044625ed56293b6ae">InputTensors</a>() const final</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1te_1_1OperationNode.html#ad2fd6f140257f7b3c311f88374fa74d2">name</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1OperationNode.html">tvm::te::OperationNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a1a0ce8401e57d9c66ece44dd59b3fb7d">num_outputs</a>() const final</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a42343d81e1ae75bf2fa0b5c033ad3d9f">output_dtype</a>(size_t i) const final</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#ab42996729238838b98500120959f51ce">output_placeholders</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a2d36f5fe86ba4ef785ce2e4f17b33034">output_placeholders</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#aff31c7a41578ad4ad9556bb82e6b7f88">output_shape</a>(size_t i) const final</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a5272d8c2833dcdce08a19fcba974a2e4">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html">tvm::te::ExternOpNode</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_1te_1_1OperationNode.html#ae6ac4336e7dc2df84f128fc97a6cdb9b">tag</a></td><td class="entry"><a class="el" href="classtvm_1_1te_1_1OperationNode.html">tvm::te::OperationNode</a></td><td class="entry"></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOpNode.html b/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOpNode.html
index ec22c42b68b..bb9e30997a4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOpNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1te_1_1ExternOpNode.html
@@ -134,12 +134,12 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:a3db645dcdf8aa1a9036b424eba963d87" id="r_a3db645dcdf8aa1a9036b424eba963d87"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1te_1_1Tensor.html">Tensor</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a3db645dcdf8aa1a9036b424eba963d87">inputs</a></td></tr>
 <tr class="memdesc:a3db645dcdf8aa1a9036b424eba963d87"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input tensors.  <br /></td></tr>
 <tr class="separator:a3db645dcdf8aa1a9036b424eba963d87"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7be0fe1f544efca4468423bcac991919" id="r_a7be0fe1f544efca4468423bcac991919"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a7be0fe1f544efca4468423bcac991919">input_placeholders</a></td></tr>
-<tr class="memdesc:a7be0fe1f544efca4468423bcac991919"><td class="mdescLeft">&#160;</td><td class="mdescRight">Symbolic placeholder representation of inputs.  <br /></td></tr>
-<tr class="separator:a7be0fe1f544efca4468423bcac991919"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab42996729238838b98500120959f51ce" id="r_ab42996729238838b98500120959f51ce"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#ab42996729238838b98500120959f51ce">output_placeholders</a></td></tr>
-<tr class="memdesc:ab42996729238838b98500120959f51ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Symbolic placeholder representation of outputs.  <br /></td></tr>
-<tr class="separator:ab42996729238838b98500120959f51ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b486490349817c28a1a292dfb1009b5" id="r_a1b486490349817c28a1a292dfb1009b5"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a1b486490349817c28a1a292dfb1009b5">input_placeholders</a></td></tr>
+<tr class="memdesc:a1b486490349817c28a1a292dfb1009b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Symbolic placeholder representation of inputs.  <br /></td></tr>
+<tr class="separator:a1b486490349817c28a1a292dfb1009b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2d36f5fe86ba4ef785ce2e4f17b33034" id="r_a2d36f5fe86ba4ef785ce2e4f17b33034"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a2d36f5fe86ba4ef785ce2e4f17b33034">output_placeholders</a></td></tr>
+<tr class="memdesc:a2d36f5fe86ba4ef785ce2e4f17b33034"><td class="mdescLeft">&#160;</td><td class="mdescRight">Symbolic placeholder representation of outputs.  <br /></td></tr>
+<tr class="separator:a2d36f5fe86ba4ef785ce2e4f17b33034"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a962b2cfaa4a2141c1b9247ac634b7bf2" id="r_a962b2cfaa4a2141c1b9247ac634b7bf2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1te_1_1ExternOpNode.html#a962b2cfaa4a2141c1b9247ac634b7bf2">body</a></td></tr>
 <tr class="memdesc:a962b2cfaa4a2141c1b9247ac634b7bf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">the statement that generates the computation.  <br /></td></tr>
 <tr class="separator:a962b2cfaa4a2141c1b9247ac634b7bf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -393,14 +393,14 @@ Public Attributes</h2></td></tr>
 
 </div>
 </div>
-<a id="a7be0fe1f544efca4468423bcac991919" name="a7be0fe1f544efca4468423bcac991919"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7be0fe1f544efca4468423bcac991919">&#9670;&#160;</a></span>input_placeholders</h2>
+<a id="a1b486490349817c28a1a292dfb1009b5" name="a1b486490349817c28a1a292dfb1009b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b486490349817c28a1a292dfb1009b5">&#9670;&#160;</a></span>input_placeholders</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&gt; tvm::te::ExternOpNode::input_placeholders</td>
+          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&gt; tvm::te::ExternOpNode::input_placeholders</td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -425,14 +425,14 @@ Public Attributes</h2></td></tr>
 
 </div>
 </div>
-<a id="ab42996729238838b98500120959f51ce" name="ab42996729238838b98500120959f51ce"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab42996729238838b98500120959f51ce">&#9670;&#160;</a></span>output_placeholders</h2>
+<a id="a2d36f5fe86ba4ef785ce2e4f17b33034" name="a2d36f5fe86ba4ef785ce2e4f17b33034"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2d36f5fe86ba4ef785ce2e4f17b33034">&#9670;&#160;</a></span>output_placeholders</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&gt; tvm::te::ExternOpNode::output_placeholders</td>
+          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&gt; tvm::te::ExternOpNode::output_placeholders</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBuffer-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBuffer-members.html
index 0fdbe93e66c..2bc793392fb 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBuffer-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBuffer-members.html
@@ -79,7 +79,7 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html">tvm::tirx::AllocBuffer</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html#a49c92abb12a0a359c479b5cd92dbff9e">AllocBuffer</a>(Buffer buffer, ffi::Map&lt; ffi::String, ffi::Any &gt; annotations=ffi::Map&lt; ffi::String, ffi::Any &gt;(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html">tvm::tirx::AllocBuffer</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html#a9f5fef15588e4cd89a27639f3e24c116">AllocBuffer</a>(BufferVar buffer, ffi::Map&lt; ffi::String, ffi::Any &gt; annotations=ffi::Map&lt; ffi::String, ffi::Any &gt;(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html">tvm::tirx::AllocBuffer</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html#ac665f8ef5d4d0ca5c763650778ab3a48">ConstantAllocationSize</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html">tvm::tirx::AllocBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html#ac6af476158a45a857d0d8026746a57bb">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(AllocBufferNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html">tvm::tirx::AllocBuffer</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html#acec4748047e4489bc87ac23d7cabf518">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(AllocBuffer, Stmt, AllocBufferNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html">tvm::tirx::AllocBuffer</a></td><td class="entry"></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBuffer.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBuffer.html
index 016d580b881..6d745da93c9 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBuffer.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBuffer.html
@@ -97,8 +97,8 @@ Collaboration diagram for tvm::tirx::AllocBuffer:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a49c92abb12a0a359c479b5cd92dbff9e" id="r_a49c92abb12a0a359c479b5cd92dbff9e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html#a49c92abb12a0a359c479b5cd92dbff9e">AllocBuffer</a> (<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> buffer, ffi::Map&lt; ffi::String, ffi::Any &gt; annotations=ffi::Map&lt; ffi::String, ffi::Any &gt;(), <a class="el" href [...]
-<tr class="separator:a49c92abb12a0a359c479b5cd92dbff9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9f5fef15588e4cd89a27639f3e24c116" id="r_a9f5fef15588e4cd89a27639f3e24c116"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html#a9f5fef15588e4cd89a27639f3e24c116">AllocBuffer</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> buffer, ffi::Map&lt; ffi::String, ffi::Any &gt; annotations=ffi::Map&lt; ffi::String, ffi::Any &gt;(), <a class="el [...]
+<tr class="separator:a9f5fef15588e4cd89a27639f3e24c116"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac665f8ef5d4d0ca5c763650778ab3a48" id="r_ac665f8ef5d4d0ca5c763650778ab3a48"><td class="memItemLeft" align="right" valign="top">std::optional&lt; <a class="el" href="classtvm_1_1With.html">int64_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html#ac665f8ef5d4d0ca5c763650778ab3a48">ConstantAllocationSize</a> () <a class="el" href="classtvm_1_1With.html">const</a></td></tr>
 <tr class="memdesc:ac665f8ef5d4d0ca5c763650778ab3a48"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the buffer's shape is constant, return the total number of elements.  <br /></td></tr>
 <tr class="separator:ac665f8ef5d4d0ca5c763650778ab3a48"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -113,8 +113,8 @@ Public Member Functions</h2></td></tr>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html" title="Allocate a buffer and declare it in scope.">AllocBufferNode</a>. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a49c92abb12a0a359c479b5cd92dbff9e" name="a49c92abb12a0a359c479b5cd92dbff9e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a49c92abb12a0a359c479b5cd92dbff9e">&#9670;&#160;</a></span>AllocBuffer()</h2>
+<a id="a9f5fef15588e4cd89a27639f3e24c116" name="a9f5fef15588e4cd89a27639f3e24c116"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9f5fef15588e4cd89a27639f3e24c116">&#9670;&#160;</a></span>AllocBuffer()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -122,7 +122,7 @@ Public Member Functions</h2></td></tr>
         <tr>
           <td class="memname">tvm::tirx::AllocBuffer::AllocBuffer </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td>
           <td class="paramname"><em>buffer</em>, </td>
         </tr>
         <tr>
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 ddddd687d8f..6a03b3a43fc 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
@@ -82,7 +82,7 @@ $(function() {
   <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#af16468aa99f8735562cabffbb3aa7da5">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#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>
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 88327b6d7c4..1770afbeca2 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1AllocBufferNode.html
@@ -94,7 +94,7 @@ Inheritance diagram for tvm::tirx::AllocBufferNode:</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="450" height="868"><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="1000"><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>
@@ -119,9 +119,9 @@ Static Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:af16468aa99f8735562cabffbb3aa7da5" id="r_af16468aa99f8735562cabffbb3aa7da5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#af16468aa99f8735562cabffbb3aa7da5">buffer</a></td></tr>
-<tr class="memdesc:af16468aa99f8735562cabffbb3aa7da5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer being allocated and declared.  <br /></td></tr>
-<tr class="separator:af16468aa99f8735562cabffbb3aa7da5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f385338e938827f85b51bc779d7e7a4" id="r_a1f385338e938827f85b51bc779d7e7a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a1f385338e938827f85b51bc779d7e7a4">buffer</a></td></tr>
+<tr class="memdesc:a1f385338e938827f85b51bc779d7e7a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer being allocated and declared.  <br /></td></tr>
+<tr class="separator:a1f385338e938827f85b51bc779d7e7a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a25323026042939b20ff3297a14e7bca0" id="r_a25323026042939b20ff3297a14e7bca0"><td class="memItemLeft" align="right" valign="top">ffi::Map&lt; ffi::String, ffi::Any &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1AllocBufferNode.html#a25323026042939b20ff3297a14e7bca0">annotations</a></td></tr>
 <tr class="memdesc:a25323026042939b20ff3297a14e7bca0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Additional annotations about the allocation.  <br /></td></tr>
 <tr class="separator:a25323026042939b20ff3297a14e7bca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -218,14 +218,14 @@ Additional Inherited Members</h2></td></tr>
 
 </div>
 </div>
-<a id="af16468aa99f8735562cabffbb3aa7da5" name="af16468aa99f8735562cabffbb3aa7da5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af16468aa99f8735562cabffbb3aa7da5">&#9670;&#160;</a></span>buffer</h2>
+<a id="a1f385338e938827f85b51bc779d7e7a4" name="a1f385338e938827f85b51bc779d7e7a4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1f385338e938827f85b51bc779d7e7a4">&#9670;&#160;</a></span>buffer</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::AllocBufferNode::buffer</td>
+          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> tvm::tirx::AllocBufferNode::buffer</td>
         </tr>
       </table>
 </div><div class="memdoc">
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 003a888ec53..d1725ea4f31 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,27 +4,27 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::AllocBufferNode Pages: 1 -->
-<svg width="337pt" height="651pt"
- viewBox="0.00 0.00 337.00 651.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 647)">
+<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)">
 <title>tvm::tirx::AllocBufferNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Allocate a buffer and declare it in scope.">
-<polygon fill="#999999" stroke="transparent" points="289,-75 133,-75 133,0 289,0 289,-75"/>
-<text text-anchor="start" x="147.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::AllocBufferNode</text>
-<text text-anchor="start" x="137" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="150" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">annotations</text>
-<text text-anchor="start" x="137" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="150" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="150" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="137" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="150" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="133,-57.5 133,-57.5 289,-57.5 289,-57.5 133,-57.5"/>
-<polygon fill="#666666" stroke="#666666" points="133,-42.5 133,-42.5 148,-42.5 148,-42.5 133,-42.5"/>
-<polygon fill="#666666" stroke="#666666" points="148,-42.5 148,-42.5 289,-42.5 289,-42.5 148,-42.5"/>
-<polygon fill="none" stroke="#666666" points="133,0 133,-75 289,-75 289,0 133,0"/>
+<polygon fill="#999999" stroke="transparent" points="298,-75 142,-75 142,0 298,0 298,-75"/>
+<text text-anchor="start" x="156.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::AllocBufferNode</text>
+<text text-anchor="start" x="146" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="159" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">annotations</text>
+<text text-anchor="start" x="146" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="159" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="159" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="146" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="159" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="142,-57.5 142,-57.5 298,-57.5 298,-57.5 142,-57.5"/>
+<polygon fill="#666666" stroke="#666666" points="142,-42.5 142,-42.5 157,-42.5 157,-42.5 142,-42.5"/>
+<polygon fill="#666666" stroke="#666666" points="157,-42.5 157,-42.5 298,-42.5 298,-42.5 157,-42.5"/>
+<polygon fill="none" stroke="#666666" points="142,0 142,-75 298,-75 298,0 142,0"/>
 </a>
 </g>
 </g>
@@ -32,25 +32,25 @@
 <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="232,-232 76,-232 76,-112 232,-112 232,-232"/>
-<text text-anchor="start" x="105.5" y="-220" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtNode</text>
-<text text-anchor="start" x="80" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="80" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
-<text text-anchor="start" x="80" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">StmtNode()</text>
-<text text-anchor="start" x="80" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">StmtNode()</text>
-<text text-anchor="start" x="80" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-145" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="93" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="80" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-119" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-215 76,-215 232,-215 232,-215 76,-215"/>
-<polygon fill="#666666" stroke="#666666" points="76,-185 76,-185 91,-185 91,-185 76,-185"/>
-<polygon fill="#666666" stroke="#666666" points="91,-185 91,-185 232,-185 232,-185 91,-185"/>
-<polygon fill="none" stroke="#666666" points="76,-112 76,-232 232,-232 232,-112 76,-112"/>
+<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>
+<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>
+<text text-anchor="start" x="97" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">StmtNode()</text>
+<text text-anchor="start" x="84" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">StmtNode()</text>
+<text text-anchor="start" x="84" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<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,-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"/>
 </a>
 </g>
 </g>
@@ -58,8 +58,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="M183.52,-102.39C187.53,-93.05 191.53,-83.77 195.17,-75.29"/>
-<polygon fill="none" stroke="#63b8ff" points="180.24,-101.16 179.5,-111.73 186.67,-103.92 180.24,-101.16"/>
+<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"/>
 </a>
 </g>
 </g>
@@ -67,13 +67,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-536.5 0,-536.5 0,-487.5 58,-487.5 58,-536.5"/>
-<text text-anchor="start" x="5" y="-524" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-509" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-494" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-519 0,-519 58,-519 58,-519 0,-519"/>
-<polygon fill="#666666" stroke="#666666" points="0,-504 0,-504 58,-504 58,-504 0,-504"/>
-<polygon fill="none" stroke="#666666" points="0,-487.5 0,-536.5 58,-536.5 58,-487.5 0,-487.5"/>
+<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"/>
 </a>
 </g>
 </g>
@@ -81,8 +81,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="M41.34,-477.63C62.44,-420.57 105.72,-303.56 132.06,-232.32"/>
-<polygon fill="none" stroke="#63b8ff" points="37.98,-476.64 37.79,-487.23 44.54,-479.07 37.98,-476.64"/>
+<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"/>
 </a>
 </g>
 </g>
@@ -90,19 +90,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,-557 76,-557 76,-467 240,-467 240,-557"/>
-<text text-anchor="start" x="133" y="-545" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-530" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-515" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-515" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-500" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-500" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-485" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-485" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-474" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-540 76,-540 240,-540 240,-540 76,-540"/>
-<polygon fill="#666666" stroke="#666666" points="76,-525 76,-525 240,-525 240,-525 76,-525"/>
-<polygon fill="none" stroke="#666666" points="76,-467 76,-557 240,-557 240,-467 76,-467"/>
+<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"/>
 </a>
 </g>
 </g>
@@ -110,23 +110,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="M157.48,-466.81C156.81,-410.29 155.64,-311.7 154.85,-244.45"/>
-<polygon fill="none" stroke="#63b8ff" points="154.84,-244.27 150.77,-238.32 154.7,-232.27 158.77,-238.22 154.84,-244.27"/>
+<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"/>
 </a>
 </g>
-<text text-anchor="middle" x="175.5" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="175.5" y="-525" 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="271,-643 197,-643 197,-594 271,-594 271,-643"/>
-<text text-anchor="start" x="202" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="232" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="232" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="197,-625.5 197,-625.5 271,-625.5 271,-625.5 197,-625.5"/>
-<polygon fill="#666666" stroke="#666666" points="197,-610.5 197,-610.5 271,-610.5 271,-610.5 197,-610.5"/>
-<polygon fill="none" stroke="#666666" points="197,-594 197,-643 271,-643 271,-594 197,-594"/>
+<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"/>
 </a>
 </g>
 </g>
@@ -134,51 +134,78 @@
 <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="M210.76,-585.54C204.25,-576.59 197.06,-566.7 190.13,-557.18"/>
-<polygon fill="none" stroke="#63b8ff" points="208.04,-587.76 216.75,-593.79 213.7,-583.64 208.04,-587.76"/>
+<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"/>
+</a>
+</g>
+</g>
+<!-- Node8 -->
+<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"/>
+</a>
+</g>
+</g>
+<!-- Node5&#45;&gt;Node8 -->
+<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"/>
 </a>
 </g>
 </g>
 <!-- Node6 -->
 <g id="Node000006" class="node">
 <title>Node6</title>
-<g id="a_Node000006"><a xlink:href="classtvm_1_1tirx_1_1Buffer.html" target="_top" xlink:title="Buffer is a symbolic n&#45;darray structure. It is a composition of primitive symbolic types,...">
-<polygon fill="white" stroke="transparent" points="329,-449 207,-449 207,-250 329,-250 329,-449"/>
-<text text-anchor="start" x="229" y="-436.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::Buffer</text>
-<text text-anchor="start" x="266" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="211" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">Buffer()</text>
-<text text-anchor="start" x="211" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
-<text text-anchor="start" x="211" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
-<text text-anchor="start" x="211" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
-<text text-anchor="start" x="211" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">vload()</text>
-<text text-anchor="start" x="211" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">vstore()</text>
-<text text-anchor="start" x="211" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">GetFlattenedBuffer()</text>
-<text text-anchor="start" x="211" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">OffsetOf()</text>
-<text text-anchor="start" x="211" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">OffsetOf_p()</text>
-<text text-anchor="start" x="211" y="-271.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="224" y="-271.5" font-family="Helvetica,sans-Serif" font-size="10.00">scope()</text>
-<text text-anchor="start" x="224" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 7 more...</text>
-<polygon fill="#666666" stroke="#666666" points="207,-431.5 207,-431.5 329,-431.5 329,-431.5 207,-431.5"/>
-<polygon fill="#666666" stroke="#666666" points="207,-416.5 207,-416.5 329,-416.5 329,-416.5 207,-416.5"/>
-<polygon fill="none" stroke="#666666" points="207,-250 207,-449 329,-449 329,-250 207,-250"/>
-</a>
-</g>
-</g>
-<!-- Node5&#45;&gt;Node6 -->
-<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="M243.27,-583.98C245.42,-575.25 247.51,-565.82 249,-557 254.91,-522.03 259.08,-483.4 261.98,-449.11"/>
-<polygon fill="none" stroke="#63b8ff" points="239.84,-583.27 240.75,-593.82 246.62,-585 239.84,-583.27"/>
+<g id="a_Node000006"><a xlink:href="classtvm_1_1tirx_1_1BufferVar.html" target="_top" xlink:title="Checked zero&#45;state view over an ordinary VarNode with BufferType.">
+<polygon fill="white" stroke="transparent" points="369.5,-347 256.5,-347 256.5,-122 369.5,-122 369.5,-347"/>
+<text text-anchor="start" x="266.5" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferVar</text>
+<text text-anchor="start" x="261" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_is_nullable</text>
+<text text-anchor="start" x="261" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-304.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="274" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="261" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="261" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="261" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">var()</text>
+<text text-anchor="start" x="261" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">type()</text>
+<text text-anchor="start" x="261" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">name()</text>
+<text text-anchor="start" x="261" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">span()</text>
+<text text-anchor="start" x="261" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">data()</text>
+<text text-anchor="start" x="261" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
+<text text-anchor="start" x="261" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
+<text text-anchor="start" x="261" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="274" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
+<text text-anchor="start" x="274" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 17 more...</text>
+<polygon fill="#666666" stroke="#666666" points="257,-329.5 257,-329.5 370,-329.5 370,-329.5 257,-329.5"/>
+<polygon fill="#666666" stroke="#666666" points="257,-288.5 257,-288.5 272,-288.5 272,-288.5 257,-288.5"/>
+<polygon fill="#666666" stroke="#666666" points="272,-288.5 272,-288.5 370,-288.5 370,-288.5 272,-288.5"/>
+<polygon fill="none" stroke="#666666" points="256.5,-122 256.5,-347 369.5,-347 369.5,-122 256.5,-122"/>
 </a>
 </g>
 </g>
@@ -186,11 +213,53 @@
 <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="M262.8,-249.89C258.99,-207.03 252.4,-156.54 241,-112 238.84,-103.55 235.91,-94.8 232.73,-86.39"/>
-<polygon fill="none" stroke="#63b8ff" points="232.73,-86.37 226.79,-82.27 228.29,-75.22 234.22,-79.32 232.73,-86.37"/>
+<path fill="none" stroke="#63b8ff" d="M259.71,-121.76C253.75,-109.26 247.93,-97.07 242.68,-86.05"/>
+<polygon fill="none" stroke="#63b8ff" points="242.59,-85.86 236.39,-82.16 237.42,-75.03 243.61,-78.72 242.59,-85.86"/>
+</a>
+</g>
+<text text-anchor="middle" x="271" y="-96" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +buffer</text>
+</g>
+<!-- Node7 -->
+<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"/>
+</a>
+</g>
+</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="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"/>
+</a>
+</g>
+</g>
+<!-- Node8&#45;&gt;Node7 -->
+<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"/>
 </a>
 </g>
-<text text-anchor="middle" x="281" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +buffer</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1Buffer-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1Buffer-members.html
deleted file mode 100644
index 6cc3a864950..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1Buffer-members.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.8"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>tvm: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
-  <td id="projectalign">
-   <div id="projectname">tvm
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.8 -->
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
-var searchBox = new SearchBox("searchBox", "search/",'.html');
-/* @license-end */
-</script>
-<script type="text/javascript" src="menudata.js"></script>
-<script type="text/javascript" src="menu.js"></script>
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
-$(function() {
-  initMenu('',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-/* @license-end */
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<div id="MSearchResults">
-<div class="SRPage">
-<div id="SRIndex">
-<div id="SRResults"></div>
-<div class="SRStatus" id="Loading">Loading...</div>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-</div>
-</div>
-</div>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="namespacetvm.html">tvm</a></li><li class="navelem"><a class="el" href="namespacetvm_1_1tirx.html">tirx</a></li><li class="navelem"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle"><div class="title">tvm::tirx::Buffer Member List</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#ae5d66996c62b0daac2053cfa34aecdb0">access_ptr</a>(int access_mask, PointerType ptr_type=PointerType::VoidPointerTy(), int content_lanes=1, PrimExpr offset=IntImm::Int32(0), ffi::Optional&lt; PrimExpr &gt; input_extent=std::nullopt) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a94d21cc75c179e954a4488ef3fa4fff2">Buffer</a>(Var data, PrimType dtype, ffi::Array&lt; PrimExpr &gt; shape, ffi::Array&lt; PrimExpr &gt; strides, PrimExpr elem_offset, ffi::String name, int data_alignment, int offset_factor, Span span=Span(), ffi::Optional&lt; Layout &gt; layout=std::nullopt, ffi::Array&lt; PrimExpr &gt; allocated_addr={})</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1 [...]
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a2cfef360f77cac96c441ca0feb33bf6f">ElementType</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#af0f9adc1cbc7fdd43b43a4be5fcd4b22">GetFlattenedBuffer</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a93df7d8918fd7b1e88a240ac3ba9f8f3">IsScalar</a>(bool alloc_or_decl=true) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a4bbae212b395e2b129cdbe70c4c30bef">MakeSlice</a>(ffi::Array&lt; PrimExpr &gt; begins, ffi::Array&lt; PrimExpr &gt; extents) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#abaa7c4b6733b7abf7d7d14fcc67ff1aa">MakeStrideView</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a3bbcdf0b3a464823aa243f677565416c">OffsetOf</a>(ffi::Array&lt; PrimExpr &gt; index) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a884e5430833d294a346ef49364b46a0b">OffsetOf_p</a>(const ffi::Array&lt; PrimExpr &gt; &amp;indices) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#ae18dc68f47dfa53596cb859995381d18">scope</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#aca33bb24e03d62f995eefa548b6fce1e">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(BufferNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a0b99c9c08e349a23e16d4e79f86e9775">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(Buffer, ffi::ObjectRef, BufferNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a013b36b5933d2e79ec5921e716d528c8">vload</a>(ffi::Array&lt; PrimExpr &gt; begin, PrimType dtype, ffi::Optional&lt; PrimExpr &gt; predicate=std::nullopt) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#afd5d83b90aeb6001981b2f613c9fa0ba">vstore</a>(ffi::Array&lt; PrimExpr &gt; begin, PrimExpr value, ffi::Optional&lt; PrimExpr &gt; predicate=std::nullopt) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a82a7e3d50127e401ce7e6e9962616b71">with_allocated_addr</a>(ffi::Array&lt; PrimExpr &gt; allocated_addr) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a7d67b6e9d1f0d80daf49f8f2142d2354">with_data</a>(Var data) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#ae5bba34a1b184da7f1fcb2431db7d033">with_dtype</a>(PrimType dtype) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">tvm::tirx::Buffer</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
-</small></address>
-</body>
-</html>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1Buffer.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1Buffer.html
deleted file mode 100644
index 5a2aaf332c9..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1Buffer.html
+++ /dev/null
@@ -1,698 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.8"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>tvm: tvm::tirx::Buffer Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
-  <td id="projectalign">
-   <div id="projectname">tvm
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.8 -->
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
-var searchBox = new SearchBox("searchBox", "search/",'.html');
-/* @license-end */
-</script>
-<script type="text/javascript" src="menudata.js"></script>
-<script type="text/javascript" src="menu.js"></script>
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
-$(function() {
-  initMenu('',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-/* @license-end */
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<div id="MSearchResults">
-<div class="SRPage">
-<div id="SRIndex">
-<div id="SRResults"></div>
-<div class="SRStatus" id="Loading">Loading...</div>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-</div>
-</div>
-</div>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="namespacetvm.html">tvm</a></li><li class="navelem"><a class="el" href="namespacetvm_1_1tirx.html">tirx</a></li><li class="navelem"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="classtvm_1_1tirx_1_1Buffer-members.html">List of all members</a>  </div>
-  <div class="headertitle"><div class="title">tvm::tirx::Buffer Class Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p><a class="el" href="classtvm_1_1tirx_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types,...">Buffer</a> is a symbolic n-darray structure. It is a composition of primitive symbolic types, used to specify the memory layout of the Tensor used in program input.  
- <a href="classtvm_1_1tirx_1_1Buffer.html#details">More...</a></p>
-
-<p><code>#include &lt;<a class="el" href="buffer_8h_source.html">buffer.h</a>&gt;</code></p>
-<div class="dynheader">
-Inheritance diagram for tvm::tirx::Buffer:</div>
-<div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1Buffer__inherit__graph.svg" width="174" height="390"><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::Buffer:</div>
-<div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1Buffer__coll__graph.svg" width="174" height="390"><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>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a94d21cc75c179e954a4488ef3fa4fff2" id="r_a94d21cc75c179e954a4488ef3fa4fff2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a94d21cc75c179e954a4488ef3fa4fff2">Buffer</a> (<a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a> data, <a class="el" href="classtvm_1_1PrimType.html">PrimType</a> dtype, ffi::Array&lt; <a class="el" href [...]
-<tr class="separator:a94d21cc75c179e954a4488ef3fa4fff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abaa7c4b6733b7abf7d7d14fcc67ff1aa" id="r_abaa7c4b6733b7abf7d7d14fcc67ff1aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#abaa7c4b6733b7abf7d7d14fcc67ff1aa">MakeStrideView</a> () <a class="el" href="classtvm_1_1With.html">const</a></td></tr>
-<tr class="memdesc:abaa7c4b6733b7abf7d7d14fcc67ff1aa"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> a new buffer that is equivalent with current one but always add stride field.  <br /></td></tr>
-<tr class="separator:abaa7c4b6733b7abf7d7d14fcc67ff1aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4bbae212b395e2b129cdbe70c4c30bef" id="r_a4bbae212b395e2b129cdbe70c4c30bef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a4bbae212b395e2b129cdbe70c4c30bef">MakeSlice</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; <a class="el" href="classtvm_1_1With.html">begins [...]
-<tr class="memdesc:a4bbae212b395e2b129cdbe70c4c30bef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make a new symbolic buffer representing a slice of the buffer.  <br /></td></tr>
-<tr class="separator:a4bbae212b395e2b129cdbe70c4c30bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae5d66996c62b0daac2053cfa34aecdb0" id="r_ae5d66996c62b0daac2053cfa34aecdb0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1Expr.html">Expr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#ae5d66996c62b0daac2053cfa34aecdb0">access_ptr</a> (<a class="el" href="classtvm_1_1With.html">int</a> <a class="el" href="classtvm_1_1With.html">access_mask</a>, <a class="el" href="classtvm_ [...]
-<tr class="memdesc:ae5d66996c62b0daac2053cfa34aecdb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get access ptr to the entire buffer.  <br /></td></tr>
-<tr class="separator:ae5d66996c62b0daac2053cfa34aecdb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a013b36b5933d2e79ec5921e716d528c8" id="r_a013b36b5933d2e79ec5921e716d528c8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a013b36b5933d2e79ec5921e716d528c8">vload</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; <a class="el" href="classtvm_1_1With.html">begin</a>, <a  [...]
-<tr class="memdesc:a013b36b5933d2e79ec5921e716d528c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an <a class="el" href="classtvm_1_1Expr.html" title="Managed reference to ExprNode.">Expr</a> that does a vector load at begin index.  <br /></td></tr>
-<tr class="separator:a013b36b5933d2e79ec5921e716d528c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afd5d83b90aeb6001981b2f613c9fa0ba" id="r_afd5d83b90aeb6001981b2f613c9fa0ba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#afd5d83b90aeb6001981b2f613c9fa0ba">vstore</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; <a class="el" href="classtvm_1_1With.html">begin</a>, <a [...]
-<tr class="memdesc:afd5d83b90aeb6001981b2f613c9fa0ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="classtvm_1_1tirx_1_1Stmt.html" title="Container of all statements.">Stmt</a> that does a vector store at begin index.  <br /></td></tr>
-<tr class="separator:afd5d83b90aeb6001981b2f613c9fa0ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af0f9adc1cbc7fdd43b43a4be5fcd4b22" id="r_af0f9adc1cbc7fdd43b43a4be5fcd4b22"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#af0f9adc1cbc7fdd43b43a4be5fcd4b22">GetFlattenedBuffer</a> () <a class="el" href="classtvm_1_1With.html">const</a></td></tr>
-<tr class="memdesc:af0f9adc1cbc7fdd43b43a4be5fcd4b22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a flattened version of the buffer.  <br /></td></tr>
-<tr class="separator:af0f9adc1cbc7fdd43b43a4be5fcd4b22"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3bbcdf0b3a464823aa243f677565416c" id="r_a3bbcdf0b3a464823aa243f677565416c"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a3bbcdf0b3a464823aa243f677565416c">OffsetOf</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; index) <a class="el" href="classtv [...]
-<tr class="memdesc:a3bbcdf0b3a464823aa243f677565416c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine the offset in the buffer of the given index.  <br /></td></tr>
-<tr class="separator:a3bbcdf0b3a464823aa243f677565416c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a884e5430833d294a346ef49364b46a0b" id="r_a884e5430833d294a346ef49364b46a0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a884e5430833d294a346ef49364b46a0b">OffsetOf_p</a> (<a class="el" href="classtvm_1_1With.html">const</a> ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; [...]
-<tr class="memdesc:a884e5430833d294a346ef49364b46a0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the buffer_offset op for the given index.  <br /></td></tr>
-<tr class="separator:a884e5430833d294a346ef49364b46a0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae18dc68f47dfa53596cb859995381d18" id="r_ae18dc68f47dfa53596cb859995381d18"><td class="memItemLeft" align="right" valign="top">ffi::String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#ae18dc68f47dfa53596cb859995381d18">scope</a> () <a class="el" href="classtvm_1_1With.html">const</a></td></tr>
-<tr class="memdesc:ae18dc68f47dfa53596cb859995381d18"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> the storage scope associated with this buffer.  <br /></td></tr>
-<tr class="separator:ae18dc68f47dfa53596cb859995381d18"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a82a7e3d50127e401ce7e6e9962616b71" id="r_a82a7e3d50127e401ce7e6e9962616b71"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a82a7e3d50127e401ce7e6e9962616b71">with_allocated_addr</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; allocated_addr) <a class="el" href="cla [...]
-<tr class="memdesc:a82a7e3d50127e401ce7e6e9962616b71"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> a new buffer with the allocated address.  <br /></td></tr>
-<tr class="separator:a82a7e3d50127e401ce7e6e9962616b71"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a93df7d8918fd7b1e88a240ac3ba9f8f3" id="r_a93df7d8918fd7b1e88a240ac3ba9f8f3"><td class="memItemLeft" align="right" valign="top"><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_1Buffer.html#a93df7d8918fd7b1e88a240ac3ba9f8f3">IsScalar</a> (<a class="el" href="classtvm_1_1With.html">bool</a> <a class="el" href="classtvm_1_1With.html">alloc_or_decl</a>=<a class="el" href="classtvm_ [...]
-<tr class="memdesc:a93df7d8918fd7b1e88a240ac3ba9f8f3"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> true if the buffer is a scalar.  <br /></td></tr>
-<tr class="separator:a93df7d8918fd7b1e88a240ac3ba9f8f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae5bba34a1b184da7f1fcb2431db7d033" id="r_ae5bba34a1b184da7f1fcb2431db7d033"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#ae5bba34a1b184da7f1fcb2431db7d033">with_dtype</a> (<a class="el" href="classtvm_1_1PrimType.html">PrimType</a> dtype) <a class="el" href="classtvm_1_1With.html">const</a></td></tr>
-<tr class="memdesc:ae5bba34a1b184da7f1fcb2431db7d033"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> a new buffer with the dtype.  <br /></td></tr>
-<tr class="separator:ae5bba34a1b184da7f1fcb2431db7d033"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2cfef360f77cac96c441ca0feb33bf6f" id="r_a2cfef360f77cac96c441ca0feb33bf6f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimType.html">PrimType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a2cfef360f77cac96c441ca0feb33bf6f">ElementType</a> () <a class="el" href="classtvm_1_1With.html">const</a></td></tr>
-<tr class="separator:a2cfef360f77cac96c441ca0feb33bf6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7d67b6e9d1f0d80daf49f8f2142d2354" id="r_a7d67b6e9d1f0d80daf49f8f2142d2354"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a7d67b6e9d1f0d80daf49f8f2142d2354">with_data</a> (<a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a> data) <a class="el" href="classtvm_1_1Wi [...]
-<tr class="memdesc:a7d67b6e9d1f0d80daf49f8f2142d2354"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> a new buffer with the data.  <br /></td></tr>
-<tr class="separator:a7d67b6e9d1f0d80daf49f8f2142d2354"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0b99c9c08e349a23e16d4e79f86e9775" id="r_a0b99c9c08e349a23e16d4e79f86e9775"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#a0b99c9c08e349a23e16d4e79f86e9775">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>, ffi::ObjectRef, <a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a>)</td></tr>
-<tr class="separator:a0b99c9c08e349a23e16d4e79f86e9775"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca33bb24e03d62f995eefa548b6fce1e" id="r_aca33bb24e03d62f995eefa548b6fce1e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html#aca33bb24e03d62f995eefa548b6fce1e">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a>)</td></tr>
-<tr class="separator:aca33bb24e03d62f995eefa548b6fce1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p><a class="el" href="classtvm_1_1tirx_1_1Buffer.html" title="Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types,...">Buffer</a> is a symbolic n-darray structure. It is a composition of primitive symbolic types, used to specify the memory layout of the Tensor used in program input. </p>
-</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a94d21cc75c179e954a4488ef3fa4fff2" name="a94d21cc75c179e954a4488ef3fa4fff2"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a94d21cc75c179e954a4488ef3fa4fff2">&#9670;&#160;</a></span>Buffer()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::tirx::Buffer::Buffer </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a>&#160;</td>
-          <td class="paramname"><em>data</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1PrimType.html">PrimType</a>&#160;</td>
-          <td class="paramname"><em>dtype</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>shape</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>strides</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>elem_offset</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::String&#160;</td>
-          <td class="paramname"><em>name</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">int</a>&#160;</td>
-          <td class="paramname"><em>data_alignment</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">int</a>&#160;</td>
-          <td class="paramname"><em>offset_factor</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td>
-          <td class="paramname"><em>span</em> = <code><a class="el" href="classtvm_1_1Span.html">Span</a>()</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Optional&lt; <a class="el" href="classtvm_1_1tirx_1_1Layout.html">Layout</a> &gt;&#160;</td>
-          <td class="paramname"><em>layout</em> = <code>std::nullopt</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>allocated_addr</em> = <code>{}</code>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a id="ae5d66996c62b0daac2053cfa34aecdb0" name="ae5d66996c62b0daac2053cfa34aecdb0"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae5d66996c62b0daac2053cfa34aecdb0">&#9670;&#160;</a></span>access_ptr()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1Expr.html">Expr</a> tvm::tirx::Buffer::access_ptr </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">int</a>&#160;</td>
-          <td class="paramname"><em>access_mask</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1PointerType.html">PointerType</a>&#160;</td>
-          <td class="paramname"><em>ptr_type</em> = <code><a class="el" href="classtvm_1_1PointerType.html#a58efde5cf86381c865ca2750cfc444c2">PointerType::VoidPointerTy</a>()</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">int</a>&#160;</td>
-          <td class="paramname"><em>content_lanes</em> = <code>1</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>offset</em> = <code><a class="el" href="classtvm_1_1IntImm.html#acdcc68acec1b9fda51dfbf76b4836ef3">IntImm::Int32</a>(0)</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Optional&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>input_extent</em> = <code>std::nullopt</code>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Get access ptr to the entire buffer. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">access_mask</td><td>The access mask </td></tr>
-    <tr><td class="paramname">ptr_type</td><td>The type of the pointer. </td></tr>
-    <tr><td class="paramname">content_lanes</td><td>The number of lanes for the (data) type. </td></tr>
-    <tr><td class="paramname">offset</td><td>The offset of ptr. </td></tr>
-    <tr><td class="paramname">input_extent</td><td>The extent of ptr. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a id="a2cfef360f77cac96c441ca0feb33bf6f" name="a2cfef360f77cac96c441ca0feb33bf6f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a2cfef360f77cac96c441ca0feb33bf6f">&#9670;&#160;</a></span>ElementType()</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_1PrimType.html">PrimType</a> tvm::tirx::Buffer::ElementType </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<dl class="section return"><dt>Returns</dt><dd>primitive element type for compiler-side uses. </dd></dl>
-
-</div>
-</div>
-<a id="af0f9adc1cbc7fdd43b43a4be5fcd4b22" name="af0f9adc1cbc7fdd43b43a4be5fcd4b22"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af0f9adc1cbc7fdd43b43a4be5fcd4b22">&#9670;&#160;</a></span>GetFlattenedBuffer()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::Buffer::GetFlattenedBuffer </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Get a flattened version of the buffer. </p>
-
-</div>
-</div>
-<a id="a93df7d8918fd7b1e88a240ac3ba9f8f3" name="a93df7d8918fd7b1e88a240ac3ba9f8f3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a93df7d8918fd7b1e88a240ac3ba9f8f3">&#9670;&#160;</a></span>IsScalar()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1With.html">bool</a> tvm::tirx::Buffer::IsScalar </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td>
-          <td class="paramname"><em>alloc_or_decl</em> = <code><a class="el" href="classtvm_1_1With.html">true</a></code></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> true if the buffer is a scalar. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">alloc_or_decl</td><td>Whether to consider alloc_scalar and decl_scalar as scalar. True for alloc_scalar, False for decl_scalar. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a id="a4bbae212b395e2b129cdbe70c4c30bef" name="a4bbae212b395e2b129cdbe70c4c30bef"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4bbae212b395e2b129cdbe70c4c30bef">&#9670;&#160;</a></span>MakeSlice()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::Buffer::MakeSlice </td>
-          <td>(</td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>begins</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>extents</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Make a new symbolic buffer representing a slice of the buffer. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">begins</td><td>The beginning position of each dimension. </td></tr>
-    <tr><td class="paramname">extents</td><td>The extent of each dimension. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="section note"><dt>Note</dt><dd>This function will make target buffer as compact as possible. If stride is not needed in the slice, it won't be presented </dd></dl>
-<dl class="section return"><dt>Returns</dt><dd>the result buffer. </dd></dl>
-
-</div>
-</div>
-<a id="abaa7c4b6733b7abf7d7d14fcc67ff1aa" name="abaa7c4b6733b7abf7d7d14fcc67ff1aa"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abaa7c4b6733b7abf7d7d14fcc67ff1aa">&#9670;&#160;</a></span>MakeStrideView()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::Buffer::MakeStrideView </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> a new buffer that is equivalent with current one but always add stride field. </p>
-<dl class="section return"><dt>Returns</dt><dd>The strided version of the buffer. </dd></dl>
-
-</div>
-</div>
-<a id="a3bbcdf0b3a464823aa243f677565416c" name="a3bbcdf0b3a464823aa243f677565416c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3bbcdf0b3a464823aa243f677565416c">&#9670;&#160;</a></span>OffsetOf()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; tvm::tirx::Buffer::OffsetOf </td>
-          <td>(</td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>index</em></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Determine the offset in the buffer of the given index. </p>
-<p>Returns the buffer offset, in number of elements of type dtype, without adjusting for number of lanes. (e.g. The number of float16x4 elements in a buffer of type float16x4.) </p>
-
-</div>
-</div>
-<a id="a884e5430833d294a346ef49364b46a0b" name="a884e5430833d294a346ef49364b46a0b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a884e5430833d294a346ef49364b46a0b">&#9670;&#160;</a></span>OffsetOf_p()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> tvm::tirx::Buffer::OffsetOf_p </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">const</a> ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; &amp;&#160;</td>
-          <td class="paramname"><em>indices</em></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Get the buffer_offset op for the given index. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">index</td><td>The index to be accessed. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>The buffer_offset op. </dd></dl>
-
-</div>
-</div>
-<a id="ae18dc68f47dfa53596cb859995381d18" name="ae18dc68f47dfa53596cb859995381d18"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae18dc68f47dfa53596cb859995381d18">&#9670;&#160;</a></span>scope()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::String tvm::tirx::Buffer::scope </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> the storage scope associated with this buffer. </p>
-
-</div>
-</div>
-<a id="aca33bb24e03d62f995eefa548b6fce1e" name="aca33bb24e03d62f995eefa548b6fce1e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aca33bb24e03d62f995eefa548b6fce1e">&#9670;&#160;</a></span>TVM_DEFINE_OBJECT_REF_COW_METHOD()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::tirx::Buffer::TVM_DEFINE_OBJECT_REF_COW_METHOD </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a id="a0b99c9c08e349a23e16d4e79f86e9775" name="a0b99c9c08e349a23e16d4e79f86e9775"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0b99c9c08e349a23e16d4e79f86e9775">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::tirx::Buffer::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::ObjectRef&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a>&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a id="a013b36b5933d2e79ec5921e716d528c8" name="a013b36b5933d2e79ec5921e716d528c8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a013b36b5933d2e79ec5921e716d528c8">&#9670;&#160;</a></span>vload()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> tvm::tirx::Buffer::vload </td>
-          <td>(</td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1PrimType.html">PrimType</a>&#160;</td>
-          <td class="paramname"><em>dtype</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Optional&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>predicate</em> = <code>std::nullopt</code>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Create an <a class="el" href="classtvm_1_1Expr.html" title="Managed reference to ExprNode.">Expr</a> that does a vector load at begin index. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">begin</td><td>The beginning index </td></tr>
-    <tr><td class="paramname">dtype</td><td>The data type to be loaded. </td></tr>
-    <tr><td class="paramname">predicate</td><td>A vector mask of boolean values indicating which lanes of a vector are to be loaded. The number lanes of the mask must be equal to the number of lanes in being loaded. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a id="afd5d83b90aeb6001981b2f613c9fa0ba" name="afd5d83b90aeb6001981b2f613c9fa0ba"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afd5d83b90aeb6001981b2f613c9fa0ba">&#9670;&#160;</a></span>vstore()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Stmt.html">Stmt</a> tvm::tirx::Buffer::vstore </td>
-          <td>(</td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td>
-          <td class="paramname"><em>value</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Optional&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>predicate</em> = <code>std::nullopt</code>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Create a <a class="el" href="classtvm_1_1tirx_1_1Stmt.html" title="Container of all statements.">Stmt</a> that does a vector store at begin index. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">begin</td><td>The beginning index </td></tr>
-    <tr><td class="paramname">value</td><td>The value to be stored. </td></tr>
-    <tr><td class="paramname">predicate</td><td>A vector mask of boolean values indicating which lanes of a vector are to be stored. The number lanes of the mask must be equal to the number of lanes in value. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a id="a82a7e3d50127e401ce7e6e9962616b71" name="a82a7e3d50127e401ce7e6e9962616b71"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a82a7e3d50127e401ce7e6e9962616b71">&#9670;&#160;</a></span>with_allocated_addr()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::Buffer::with_allocated_addr </td>
-          <td>(</td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>allocated_addr</em></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> a new buffer with the allocated address. </p>
-
-</div>
-</div>
-<a id="a7d67b6e9d1f0d80daf49f8f2142d2354" name="a7d67b6e9d1f0d80daf49f8f2142d2354"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7d67b6e9d1f0d80daf49f8f2142d2354">&#9670;&#160;</a></span>with_data()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::Buffer::with_data </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a>&#160;</td>
-          <td class="paramname"><em>data</em></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> a new buffer with the data. </p>
-
-</div>
-</div>
-<a id="ae5bba34a1b184da7f1fcb2431db7d033" name="ae5bba34a1b184da7f1fcb2431db7d033"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae5bba34a1b184da7f1fcb2431db7d033">&#9670;&#160;</a></span>with_dtype()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::Buffer::with_dtype </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1PrimType.html">PrimType</a>&#160;</td>
-          <td class="paramname"><em>dtype</em></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p><a class="el" href="classtvm_1_1tirx_1_1Return.html" title="Managed reference to ReturnNode.">Return</a> a new buffer with the dtype. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/tvm/tirx/<a class="el" href="buffer_8h_source.html">buffer.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
-</small></address>
-</body>
-</html>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisGraphExtractor-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisGraphExtractor-members.html
index bdff3040bd0..1c1fc5d470c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisGraphExtractor-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisGraphExtractor-members.html
@@ -81,8 +81,8 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#a39ce5890c77c364024076f6155299263">DFSGraph</a>(BufferAxis cur, std::unordered_set&lt; BufferAxis, BufferAxisHash &gt; *visited, std::vector&lt; BufferAxis &gt; *buffer_axis_group)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html">tvm::tirx::BufferAxisGraphExtractor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#ad8e01d1d6fe77bb27cb007cde0cb83d5">GetTIRVarAxisGraph</a>(const PrimFunc &amp;prim_func)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html">tvm::tirx::BufferAxisGraphExtractor</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_1StmtVisitor.html#ae78e6d5f52453480c25f8cc292dee004">VisitBufferDef</a>(const Buffer &amp;buffer, bool alloc_data)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html">tvm::tirx::StmtVisitor</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#a7650969129f5af7c6ab64df5f8b0fa41">VisitBufferUse</a>(const Buffer &amp;buffer)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html">tvm::tirx::StmtVisitor</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#ae1c64abea93f2045b065eacb14846c7a">VisitBufferDef</a>(const BufferVar &amp;buffer, bool alloc_data)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html">tvm::tirx::StmtVisitor</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#a29bcb746c017e912b98cb85dc4085af8">VisitBufferUse</a>(const BufferVar &amp;buffer)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html">tvm::tirx::StmtVisitor</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtExprVisitor.html#ab6921c59691d407efb9e8da961f752e8">VisitExpr</a>(const Expr &amp;e) override</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtExprVisitor.html">tvm::tirx::StmtExprVisitor</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtExprVisitor.html#aedba3a7b97383c9b1b578eb661d3b5ea">tvm::tirx::StmtExprVisitor::VisitExpr_</a>(const VarNode *op) override</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtExprVisitor.html">tvm::tirx::StmtExprVisitor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtExprVisitor.html#af35a4b06c2931a6be9f9965d8ee029b3">tvm::tirx::StmtExprVisitor::VisitExpr_</a>(const ProducerLoadNode *op) override</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1StmtExprVisitor.html">tvm::tirx::StmtExprVisitor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html
index 90e49a81f6e..8d25e280cd8 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html
@@ -98,7 +98,7 @@ Collaboration diagram for tvm::tirx::BufferAxisGraphExtractor:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a39ce5890c77c364024076f6155299263" id="r_a39ce5890c77c364024076f6155299263"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#a39ce5890c77c364024076f6155299263">DFSGraph</a> (<a class="el" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a> <a class="el" href="classtvm [...]
+<tr class="memitem:a39ce5890c77c364024076f6155299263" id="r_a39ce5890c77c364024076f6155299263"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferAxisGraphExtractor.html#a39ce5890c77c364024076f6155299263">DFSGraph</a> (<a class="el" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a> <a class="el" href="classtvm [...]
 <tr class="separator:a39ce5890c77c364024076f6155299263"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
@@ -244,12 +244,12 @@ Additional Inherited Members</h2></td></tr>
 <tr class="memitem:a9a160d37fef2d5a512973da6d771a83a inherit pro_methods_classtvm_1_1tirx_1_1ExprVisitor" id="r_a9a160d37fef2d5a512973da6d771a83a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1ExprVisitor.html#a9a160d37fef2d5a512973da6d771a83a">VisitExpr_</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1 [...]
 <tr class="separator:a9a160d37fef2d5a512973da6d771a83a inherit pro_methods_classtvm_1_1tirx_1_1ExprVisitor"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classtvm_1_1tirx_1_1StmtVisitor')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html">tvm::tirx::StmtVisitor</a></td></tr>
-<tr class="memitem:ae78e6d5f52453480c25f8cc292dee004 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor" id="r_ae78e6d5f52453480c25f8cc292dee004"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">virtual</a> <a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#ae78e6d5f52453480c25f8cc292dee004">VisitBufferDef</a> (<a class="el" href="clas [...]
-<tr class="memdesc:ae78e6d5f52453480c25f8cc292dee004 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit buffer at definition site (<a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html" title="Managed reference to AllocBufferNode.">AllocBuffer</a>, <a class="el" href="classtvm_1_1tirx_1_1DeclBuffer.html" title="Managed reference to DeclBufferNode.">DeclBuffer</a>, <a class="el" href="classtvm_1_1tirx_1_1SBlock.html" title [...]
-<tr class="separator:ae78e6d5f52453480c25f8cc292dee004 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7650969129f5af7c6ab64df5f8b0fa41 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor" id="r_a7650969129f5af7c6ab64df5f8b0fa41"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">virtual</a> <a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#a7650969129f5af7c6ab64df5f8b0fa41">VisitBufferUse</a> (<a class="el" href="clas [...]
-<tr class="memdesc:a7650969129f5af7c6ab64df5f8b0fa41 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit buffer at use site (<a class="el" href="classtvm_1_1tirx_1_1BufferStore.html" title="Managed reference to BufferStoreNode.">BufferStore</a>, <a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html" title="Managed reference to BufferLoadNode.">BufferLoad</a>, <a class="el" href="classtvm_1_1tirx_1_1SBlock.html" title="Manag [...]
-<tr class="separator:a7650969129f5af7c6ab64df5f8b0fa41 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae1c64abea93f2045b065eacb14846c7a inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor" id="r_ae1c64abea93f2045b065eacb14846c7a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">virtual</a> <a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#ae1c64abea93f2045b065eacb14846c7a">VisitBufferDef</a> (<a class="el" href="clas [...]
+<tr class="memdesc:ae1c64abea93f2045b065eacb14846c7a inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit buffer at definition site (<a class="el" href="classtvm_1_1tirx_1_1AllocBuffer.html" title="Managed reference to AllocBufferNode.">AllocBuffer</a>, <a class="el" href="classtvm_1_1tirx_1_1DeclBuffer.html" title="Managed reference to DeclBufferNode.">DeclBuffer</a>, <a class="el" href="classtvm_1_1tirx_1_1SBlock.html" title [...]
+<tr class="separator:ae1c64abea93f2045b065eacb14846c7a inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a29bcb746c017e912b98cb85dc4085af8 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor" id="r_a29bcb746c017e912b98cb85dc4085af8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">virtual</a> <a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#a29bcb746c017e912b98cb85dc4085af8">VisitBufferUse</a> (<a class="el" href="clas [...]
+<tr class="memdesc:a29bcb746c017e912b98cb85dc4085af8 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit buffer at use site (<a class="el" href="classtvm_1_1tirx_1_1BufferStore.html" title="Managed reference to BufferStoreNode.">BufferStore</a>, <a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html" title="Managed reference to BufferLoadNode.">BufferLoad</a>, <a class="el" href="classtvm_1_1tirx_1_1SBlock.html" title="Manag [...]
+<tr class="separator:a29bcb746c017e912b98cb85dc4085af8 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a309955933b57ef90fb97f7a18b568626 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor" id="r_a309955933b57ef90fb97f7a18b568626"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#a309955933b57ef90fb97f7a18b568626">VisitStmt_</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1 [...]
 <tr class="separator:a309955933b57ef90fb97f7a18b568626 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a41a19d823d7ad26187a372b6225b50a2 inherit pro_methods_classtvm_1_1tirx_1_1StmtVisitor" id="r_a41a19d823d7ad26187a372b6225b50a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1StmtVisitor.html#a41a19d823d7ad26187a372b6225b50a2">VisitStmt_</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="classtvm_1 [...]
@@ -302,19 +302,19 @@ Additional Inherited Members</h2></td></tr>
         <tr>
           <td class="memname"><a class="el" href="classtvm_1_1With.html">void</a> tvm::tirx::BufferAxisGraphExtractor::DFSGraph </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a>&#160;</td>
+          <td class="paramtype"><a class="el" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a>&#160;</td>
           <td class="paramname"><em>cur</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">std::unordered_set&lt; <a class="el" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a>, <a class="el" href="classtvm_1_1tirx_1_1BufferAxisHash.html">BufferAxisHash</a> &gt; *&#160;</td>
+          <td class="paramtype">std::unordered_set&lt; <a class="el" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a>, <a class="el" href="classtvm_1_1tirx_1_1BufferAxisHash.html">BufferAxisHash</a> &gt; *&#160;</td>
           <td class="paramname"><em>visited</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">std::vector&lt; <a class="el" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a> &gt; *&#160;</td>
+          <td class="paramtype">std::vector&lt; <a class="el" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a> &gt; *&#160;</td>
           <td class="paramname"><em>buffer_axis_group</em>&#160;</td>
         </tr>
         <tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisHash.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisHash.html
index c3ae212eff4..8338168d028 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisHash.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferAxisHash.html
@@ -89,7 +89,7 @@ Collaboration diagram for tvm::tirx::BufferAxisHash:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ab28a93a16fa8e3f849f47a0c43ad6282" id="r_ab28a93a16fa8e3f849f47a0c43ad6282"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">size_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferAxisHash.html#ab28a93a16fa8e3f849f47a0c43ad6282">operator()</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac5316 [...]
+<tr class="memitem:ab28a93a16fa8e3f849f47a0c43ad6282" id="r_ab28a93a16fa8e3f849f47a0c43ad6282"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">size_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferAxisHash.html#ab28a93a16fa8e3f849f47a0c43ad6282">operator()</a> (<a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d2 [...]
 <tr class="separator:ab28a93a16fa8e3f849f47a0c43ad6282"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Member Function Documentation</h2>
@@ -105,7 +105,7 @@ Public Member Functions</h2></td></tr>
         <tr>
           <td class="memname"><a class="el" href="classtvm_1_1With.html">size_t</a> tvm::tirx::BufferAxisHash::operator() </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="namespacetvm_1_1tirx.html#a176fc8a18c3ffce5a6c69e15ac53165f">BufferAxis</a> &amp;&#160;</td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">const</a> <a class="el" href="namespacetvm_1_1tirx.html#aae66818353d29c42b5f0337479f5d272">BufferAxis</a> &amp;&#160;</td>
           <td class="paramname"><em>buffer_axis</em></td><td>)</td>
           <td> const</td>
         </tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoad-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoad-members.html
index 312cdbf4899..f1a8731b53a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoad-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoad-members.html
@@ -80,7 +80,7 @@ $(function() {
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html">tvm::tirx::BufferLoad</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html#a4a25a5b084bf710954c7ba3bbdf52dfa">_type_container_is_exact</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html">tvm::tirx::BufferLoad</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_1BufferLoad.html#ae0aed5aa19476cb6f4811987d0ac5762">BufferLoad</a>(Buffer buffer, ffi::Array&lt; PrimExpr &gt; indices, ffi::Optional&lt; PrimExpr &gt; predicate=std::nullopt, Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html">tvm::tirx::BufferLoad</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html#a319df057a1be69f236bccb2a27646bc7">BufferLoad</a>(BufferVar buffer, ffi::Array&lt; PrimExpr &gt; indices, ffi::Optional&lt; PrimExpr &gt; predicate=std::nullopt, Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html">tvm::tirx::BufferLoad</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1PrimExpr.html#a8839598722144f363e11e377ebd6f5ad">ConvertFallbackValue</a>(ffi::String value)</td><td class="entry"><a class="el" href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">operator!=</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">operator&lt;</a>(const Expr &amp;other) const =delete</td><td class="entry"><a class="el" href="classtvm_1_1Expr.html">tvm::Expr</a></td><td class="entry"></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoad.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoad.html
index 3779626196d..60502646048 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoad.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoad.html
@@ -98,8 +98,8 @@ Collaboration diagram for tvm::tirx::BufferLoad:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ae0aed5aa19476cb6f4811987d0ac5762" id="r_ae0aed5aa19476cb6f4811987d0ac5762"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html#ae0aed5aa19476cb6f4811987d0ac5762">BufferLoad</a> (<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> buffer, ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; indices, ffi::Optional&lt; <a class [...]
-<tr class="separator:ae0aed5aa19476cb6f4811987d0ac5762"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a319df057a1be69f236bccb2a27646bc7" id="r_a319df057a1be69f236bccb2a27646bc7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html#a319df057a1be69f236bccb2a27646bc7">BufferLoad</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> buffer, ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; indices, ffi::Optional&lt; <a [...]
+<tr class="separator:a319df057a1be69f236bccb2a27646bc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a270ca09bd3eeb26e5f17335044238589" id="r_a270ca09bd3eeb26e5f17335044238589"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html#a270ca09bd3eeb26e5f17335044238589">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html">BufferLoad</a>, <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>, <a class="el" href="c [...]
 <tr class="separator:a270ca09bd3eeb26e5f17335044238589"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a15afcebf54bbbc1f5ad6a4fca7922021" id="r_a15afcebf54bbbc1f5ad6a4fca7922021"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferLoad.html#a15afcebf54bbbc1f5ad6a4fca7922021">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html">BufferLoadNode</a>)</td></tr>
@@ -153,8 +153,8 @@ Additional Inherited Members</h2></td></tr>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html" title="Load value from the high dimension buffer.">BufferLoadNode</a>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html" title="Load value from the high dimension buffer.">BufferLoadNode</a> </dd></dl>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="ae0aed5aa19476cb6f4811987d0ac5762" name="ae0aed5aa19476cb6f4811987d0ac5762"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae0aed5aa19476cb6f4811987d0ac5762">&#9670;&#160;</a></span>BufferLoad()</h2>
+<a id="a319df057a1be69f236bccb2a27646bc7" name="a319df057a1be69f236bccb2a27646bc7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a319df057a1be69f236bccb2a27646bc7">&#9670;&#160;</a></span>BufferLoad()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -165,7 +165,7 @@ Additional Inherited Members</h2></td></tr>
         <tr>
           <td class="memname">tvm::tirx::BufferLoad::BufferLoad </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td>
           <td class="paramname"><em>buffer</em>, </td>
         </tr>
         <tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode-members.html
index 70af2456897..1ffe7e53ff9 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode-members.html
@@ -81,7 +81,7 @@ $(function() {
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a998e4b1d8caa76f66e9d947931178f01">_type_child_slots</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html#a549f3165583edbbc9a13c6d796e7b298">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1ExprNode.html">tvm::ExprNode</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_1BufferLoadNode.html#a041e2f61e7ab536245bc44cd73136560">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html">tvm::tirx::BufferLoadNode</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html#a428f7496c9755e5add862984764ccde4">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html">tvm::tirx::BufferLoadNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html#a4fc20852a07acb158a99c2ccc16b6226">BufferLoad</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html">tvm::tirx::BufferLoadNode</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html#a46452c76ddea6c63353f8101e3462238">CustomDatatypesLowerer</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html">tvm::tirx::BufferLoadNode</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html#acca52b1826621747bb81826592a520ac">indices</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html">tvm::tirx::BufferLoadNode</a></td><td class="entry"></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode.html
index 7fefde48f9b..7dabecca607 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode.html
@@ -95,7 +95,7 @@ Inheritance diagram for tvm::tirx::BufferLoadNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::tirx::BufferLoadNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BufferLoadNode__coll__graph.svg" width="687" height="848"><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_1BufferLoadNode__coll__graph.svg" width="846" height="1020"><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>
@@ -116,9 +116,9 @@ Static Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:a041e2f61e7ab536245bc44cd73136560" id="r_a041e2f61e7ab536245bc44cd73136560"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html#a041e2f61e7ab536245bc44cd73136560">buffer</a></td></tr>
-<tr class="memdesc:a041e2f61e7ab536245bc44cd73136560"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer variable.  <br /></td></tr>
-<tr class="separator:a041e2f61e7ab536245bc44cd73136560"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a428f7496c9755e5add862984764ccde4" id="r_a428f7496c9755e5add862984764ccde4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html#a428f7496c9755e5add862984764ccde4">buffer</a></td></tr>
+<tr class="memdesc:a428f7496c9755e5add862984764ccde4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer variable.  <br /></td></tr>
+<tr class="separator:a428f7496c9755e5add862984764ccde4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:acca52b1826621747bb81826592a520ac" id="r_acca52b1826621747bb81826592a520ac"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferLoadNode.html#acca52b1826621747bb81826592a520ac">indices</a></td></tr>
 <tr class="memdesc:acca52b1826621747bb81826592a520ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">The indices location to be loaded.  <br /></td></tr>
 <tr class="separator:acca52b1826621747bb81826592a520ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -154,9 +154,9 @@ Additional Inherited Members</h2></td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Load value from the high dimension buffer. </p>
-<div class="fragment"><div class="line">value = <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferLoadNode.html#a041e2f61e7ab536245bc44cd73136560">buffer</a>[<a class="code hl_class" href="classtvm_1_1With.html">i</a>, <a class="code hl_class" href="classtvm_1_1With.html">j</a>];</div>
+<div class="fragment"><div class="line">value = <a class="code hl_variable" href="classtvm_1_1tirx_1_1BufferLoadNode.html#a428f7496c9755e5add862984764ccde4">buffer</a>[<a class="code hl_class" href="classtvm_1_1With.html">i</a>, <a class="code hl_class" href="classtvm_1_1With.html">j</a>];</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_1BufferLoadNode_html_a041e2f61e7ab536245bc44cd73136560"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferLoadNode.html#a041e2f61e7ab536245bc44cd73136560">tvm::tirx::BufferLoadNode::buffer</a></div><div class="ttdeci">Buffer buffer</div><div class="ttdoc">The buffer variable.</div><div class="ttdef"><b>Definition</b> expr.h:548</div></div>
+<div class="ttc" id="aclasstvm_1_1tirx_1_1BufferLoadNode_html_a428f7496c9755e5add862984764ccde4"><div class="ttname"><a href="classtvm_1_1tirx_1_1BufferLoadNode.html#a428f7496c9755e5add862984764ccde4">tvm::tirx::BufferLoadNode::buffer</a></div><div class="ttdeci">BufferVar buffer</div><div class="ttdoc">The buffer variable.</div><div class="ttdef"><b>Definition</b> expr.h:548</div></div>
 </div><!-- fragment --> <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1tirx_1_1BufferStore.html" title="Managed reference to BufferStoreNode.">BufferStore</a> </dd></dl>
 </div><h2 class="groupheader">Member Function Documentation</h2>
 <a id="a850e0a04d86de075df6b12c682b92703" name="a850e0a04d86de075df6b12c682b92703"></a>
@@ -308,14 +308,14 @@ Additional Inherited Members</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a id="a041e2f61e7ab536245bc44cd73136560" name="a041e2f61e7ab536245bc44cd73136560"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a041e2f61e7ab536245bc44cd73136560">&#9670;&#160;</a></span>buffer</h2>
+<a id="a428f7496c9755e5add862984764ccde4" name="a428f7496c9755e5add862984764ccde4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a428f7496c9755e5add862984764ccde4">&#9670;&#160;</a></span>buffer</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::BufferLoadNode::buffer</td>
+          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> tvm::tirx::BufferLoadNode::buffer</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode__coll__graph.svg
index 162e508bbd3..771731b2bda 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferLoadNode__coll__graph.svg
@@ -4,29 +4,29 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::BufferLoadNode Pages: 1 -->
-<svg width="515pt" height="636pt"
- viewBox="0.00 0.00 515.00 636.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 632)">
+<svg width="634pt" height="765pt"
+ viewBox="0.00 0.00 634.00 765.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 761)">
 <title>tvm::tirx::BufferLoadNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Load value from the high dimension buffer.">
-<polygon fill="#999999" stroke="transparent" points="401,-90 245,-90 245,0 401,0 401,-90"/>
-<text text-anchor="start" x="259.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferLoadNode</text>
-<text text-anchor="start" x="249" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="262" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">indices</text>
-<text text-anchor="start" x="249" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="262" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">predicate</text>
-<text text-anchor="start" x="249" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="262" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="262" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="249" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="262" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="245,-73 245,-73 401,-73 401,-73 245,-73"/>
-<polygon fill="#666666" stroke="#666666" points="245,-43 245,-43 260,-43 260,-43 245,-43"/>
-<polygon fill="#666666" stroke="#666666" points="260,-43 260,-43 401,-43 401,-43 260,-43"/>
-<polygon fill="none" stroke="#666666" points="245,0 245,-90 401,-90 401,0 245,0"/>
+<polygon fill="#999999" stroke="transparent" points="356,-90 200,-90 200,0 356,0 356,-90"/>
+<text text-anchor="start" x="214.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferLoadNode</text>
+<text text-anchor="start" x="204" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="217" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">indices</text>
+<text text-anchor="start" x="204" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="217" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">predicate</text>
+<text text-anchor="start" x="204" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="217" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="217" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="204" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="217" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="200,-73 200,-73 356,-73 356,-73 200,-73"/>
+<polygon fill="#666666" stroke="#666666" points="200,-43 200,-43 215,-43 215,-43 200,-43"/>
+<polygon fill="#666666" stroke="#666666" points="215,-43 215,-43 356,-43 356,-43 215,-43"/>
+<polygon fill="none" stroke="#666666" points="200,0 200,-90 356,-90 356,0 200,0"/>
 </a>
 </g>
 </g>
@@ -34,21 +34,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="323,-217 167,-217 167,-127 323,-127 323,-217"/>
-<text text-anchor="start" x="208.5" y="-205" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
-<text text-anchor="start" x="171" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="184" y="-190" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="171" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="184" y="-175" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
-<text text-anchor="start" x="171" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="184" y="-160" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="184" y="-149" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="171" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="184" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="167,-200 167,-200 323,-200 323,-200 167,-200"/>
-<polygon fill="#666666" stroke="#666666" points="167,-170 167,-170 182,-170 182,-170 167,-170"/>
-<polygon fill="#666666" stroke="#666666" points="182,-170 182,-170 323,-170 323,-170 182,-170"/>
-<polygon fill="none" stroke="#666666" points="167,-127 167,-217 323,-217 323,-127 167,-127"/>
+<polygon fill="white" stroke="transparent" points="294,-504 138,-504 138,-414 294,-414 294,-504"/>
+<text text-anchor="start" x="179.5" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
+<text text-anchor="start" x="142" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="155" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="142" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="155" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">_type_child_slots</text>
+<text text-anchor="start" x="142" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="155" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="155" y="-436" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="142" y="-421" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="155" y="-421" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="138,-487 138,-487 294,-487 294,-487 138,-487"/>
+<polygon fill="#666666" stroke="#666666" points="138,-457 138,-457 153,-457 153,-457 138,-457"/>
+<polygon fill="#666666" stroke="#666666" points="153,-457 153,-457 294,-457 294,-457 153,-457"/>
+<polygon fill="none" stroke="#666666" points="138,-414 138,-504 294,-504 294,-414 138,-414"/>
 </a>
 </g>
 </g>
@@ -56,8 +56,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="M277.83,-118.39C283.71,-108.97 289.78,-99.24 295.49,-90.09"/>
-<polygon fill="none" stroke="#63b8ff" points="274.82,-116.59 272.5,-126.93 280.76,-120.3 274.82,-116.59"/>
+<path fill="none" stroke="#63b8ff" d="M224.13,-403.99C236.53,-321.6 259.93,-166.1 271.37,-90.09"/>
+<polygon fill="none" stroke="#63b8ff" points="220.66,-403.5 222.64,-413.91 227.58,-404.54 220.66,-403.5"/>
 </a>
 </g>
 </g>
@@ -65,13 +65,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-521.5 0,-521.5 0,-472.5 58,-472.5 58,-521.5"/>
-<text text-anchor="start" x="5" y="-509" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-494" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-479" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-504 0,-504 58,-504 58,-504 0,-504"/>
-<polygon fill="#666666" stroke="#666666" points="0,-489 0,-489 58,-489 58,-489 0,-489"/>
-<polygon fill="none" stroke="#666666" points="0,-472.5 0,-521.5 58,-521.5 58,-472.5 0,-472.5"/>
+<polygon fill="white" stroke="transparent" points="58,-643 0,-643 0,-594 58,-594 58,-643"/>
+<text text-anchor="start" x="5" y="-630.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="27" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="27" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="0,-625.5 0,-625.5 58,-625.5 58,-625.5 0,-625.5"/>
+<polygon fill="#666666" stroke="#666666" points="0,-610.5 0,-610.5 58,-610.5 58,-610.5 0,-610.5"/>
+<polygon fill="none" stroke="#666666" points="0,-594 0,-643 58,-643 58,-594 0,-594"/>
 </a>
 </g>
 </g>
@@ -79,8 +79,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="M42.64,-462.93C65.02,-411.04 113.08,-308.79 173,-235 177.99,-228.85 183.64,-222.83 189.53,-217.1"/>
-<polygon fill="none" stroke="#63b8ff" points="39.34,-461.75 38.64,-472.32 45.78,-464.49 39.34,-461.75"/>
+<path fill="none" stroke="#63b8ff" d="M50.16,-585.49C55.3,-578.72 61.04,-571.86 67,-566 90.21,-543.19 118.72,-521.65 144.56,-504.03"/>
+<polygon fill="none" stroke="#63b8ff" points="47.07,-583.79 44.02,-593.94 52.73,-587.92 47.07,-583.79"/>
 </a>
 </g>
 </g>
@@ -88,19 +88,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,-542 76,-542 76,-452 240,-452 240,-542"/>
-<text text-anchor="start" x="133" y="-530" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="156" y="-515" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="80" y="-500" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-500" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="80" y="-485" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-485" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="80" y="-470" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="93" y="-470" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="93" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="76,-525 76,-525 240,-525 240,-525 76,-525"/>
-<polygon fill="#666666" stroke="#666666" points="76,-510 76,-510 240,-510 240,-510 76,-510"/>
-<polygon fill="none" stroke="#666666" points="76,-452 76,-542 240,-542 240,-452 76,-452"/>
+<polygon fill="white" stroke="transparent" points="240,-663.5 76,-663.5 76,-573.5 240,-573.5 240,-663.5"/>
+<text text-anchor="start" x="133" y="-651.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<text text-anchor="start" x="156" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="80" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="93" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</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">Merge()</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">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="93" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="76,-646.5 76,-646.5 240,-646.5 240,-646.5 76,-646.5"/>
+<polygon fill="#666666" stroke="#666666" points="76,-631.5 76,-631.5 240,-631.5 240,-631.5 76,-631.5"/>
+<polygon fill="none" stroke="#666666" points="76,-573.5 76,-663.5 240,-663.5 240,-573.5 76,-573.5"/>
 </a>
 </g>
 </g>
@@ -108,23 +108,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="M169.91,-451.77C185.52,-393.82 212.9,-292.17 229.93,-228.94"/>
-<polygon fill="none" stroke="#63b8ff" points="229.97,-228.8 227.67,-221.97 233.09,-217.22 235.39,-224.05 229.97,-228.8"/>
+<path fill="none" stroke="#63b8ff" d="M174.31,-573.21C180.89,-555.35 188.55,-534.55 195.49,-515.68"/>
+<polygon fill="none" stroke="#63b8ff" points="195.56,-515.49 193.88,-508.48 199.71,-504.23 201.39,-511.24 195.56,-515.49"/>
 </a>
 </g>
-<text text-anchor="middle" x="244.5" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
+<text text-anchor="middle" x="204.5" y="-540" 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="388,-628 314,-628 314,-579 388,-579 388,-628"/>
-<text text-anchor="start" x="319" y="-615.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="349" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="349" y="-585.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="314,-610.5 314,-610.5 388,-610.5 388,-610.5 314,-610.5"/>
-<polygon fill="#666666" stroke="#666666" points="314,-595.5 314,-595.5 388,-595.5 388,-595.5 314,-595.5"/>
-<polygon fill="none" stroke="#666666" points="314,-579 314,-628 388,-628 388,-579 314,-579"/>
+<polygon fill="white" stroke="transparent" points="388,-757 314,-757 314,-708 388,-708 388,-757"/>
+<text text-anchor="start" x="319" y="-744.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="349" y="-729.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="349" y="-714.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="314,-739.5 314,-739.5 388,-739.5 388,-739.5 314,-739.5"/>
+<polygon fill="#666666" stroke="#666666" points="314,-724.5 314,-724.5 388,-724.5 388,-724.5 314,-724.5"/>
+<polygon fill="none" stroke="#666666" points="314,-708 314,-757 388,-757 388,-708 314,-708"/>
 </a>
 </g>
 </g>
@@ -132,8 +132,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="M304.79,-577.48C285.2,-566.87 261.77,-554.19 239.45,-542.1"/>
-<polygon fill="none" stroke="#63b8ff" points="303.33,-580.67 313.79,-582.35 306.66,-574.51 303.33,-580.67"/>
+<path fill="none" stroke="#63b8ff" d="M304.97,-704.79C283.7,-692.44 257.88,-677.46 233.85,-663.51"/>
+<polygon fill="none" stroke="#63b8ff" points="303.38,-707.91 313.79,-709.91 306.9,-701.86 303.38,-707.91"/>
 </a>
 </g>
 </g>
@@ -141,19 +141,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,-542 258.5,-542 258.5,-452 443.5,-452 443.5,-542"/>
-<text text-anchor="start" x="327" y="-530" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="349.5" y="-515" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="263" y="-500" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-500" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
-<text text-anchor="start" x="263" y="-485" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-485" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="276" y="-474" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="263" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="276" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="259,-525 259,-525 444,-525 444,-525 259,-525"/>
-<polygon fill="#666666" stroke="#666666" points="259,-510 259,-510 444,-510 444,-510 259,-510"/>
-<polygon fill="none" stroke="#666666" points="258.5,-452 258.5,-542 443.5,-542 443.5,-452 258.5,-452"/>
+<polygon fill="white" stroke="transparent" points="443.5,-663.5 258.5,-663.5 258.5,-573.5 443.5,-573.5 443.5,-663.5"/>
+<text text-anchor="start" x="327" y="-651.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<text text-anchor="start" x="349.5" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="263" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
+<text text-anchor="start" x="263" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="276" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="263" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="276" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
+<polygon fill="#666666" stroke="#666666" points="259,-646.5 259,-646.5 444,-646.5 444,-646.5 259,-646.5"/>
+<polygon fill="#666666" stroke="#666666" points="259,-631.5 259,-631.5 444,-631.5 444,-631.5 259,-631.5"/>
+<polygon fill="none" stroke="#666666" points="258.5,-573.5 258.5,-663.5 443.5,-663.5 443.5,-573.5 258.5,-573.5"/>
 </a>
 </g>
 </g>
@@ -161,51 +161,39 @@
 <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="M351,-568.59C351,-560.16 351,-551.01 351,-542.18"/>
-<polygon fill="none" stroke="#63b8ff" points="347.5,-568.79 351,-578.79 354.5,-568.79 347.5,-568.79"/>
+<path fill="none" stroke="#63b8ff" d="M351,-697.54C351,-686.84 351,-674.86 351,-663.56"/>
+<polygon fill="none" stroke="#63b8ff" points="347.5,-697.75 351,-707.75 354.5,-697.75 347.5,-697.75"/>
 </a>
 </g>
 </g>
-<!-- Node7 -->
-<g id="Node000007" class="node">
-<title>Node7</title>
-<g id="a_Node000007"><a xlink:href="classtvm_1_1tirx_1_1Buffer.html" target="_top" xlink:title="Buffer is a symbolic n&#45;darray structure. It is a composition of primitive symbolic types,...">
-<polygon fill="white" stroke="transparent" points="507,-434 385,-434 385,-235 507,-235 507,-434"/>
-<text text-anchor="start" x="407" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::Buffer</text>
-<text text-anchor="start" x="444" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="389" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00">Buffer()</text>
-<text text-anchor="start" x="389" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
-<text text-anchor="start" x="389" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
-<text text-anchor="start" x="389" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-346.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
-<text text-anchor="start" x="389" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">vload()</text>
-<text text-anchor="start" x="389" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00">vstore()</text>
-<text text-anchor="start" x="389" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-301.5" font-family="Helvetica,sans-Serif" font-size="10.00">GetFlattenedBuffer()</text>
-<text text-anchor="start" x="389" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">OffsetOf()</text>
-<text text-anchor="start" x="389" y="-271.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-271.5" font-family="Helvetica,sans-Serif" font-size="10.00">OffsetOf_p()</text>
-<text text-anchor="start" x="389" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="402" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00">scope()</text>
-<text text-anchor="start" x="402" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 7 more...</text>
-<polygon fill="#666666" stroke="#666666" points="385,-416.5 385,-416.5 507,-416.5 507,-416.5 385,-416.5"/>
-<polygon fill="#666666" stroke="#666666" points="385,-401.5 385,-401.5 507,-401.5 507,-401.5 385,-401.5"/>
-<polygon fill="none" stroke="#666666" points="385,-235 385,-434 507,-434 507,-235 385,-235"/>
-</a>
-</g>
-</g>
-<!-- Node5&#45;&gt;Node7 -->
-<g id="edge8_Node000007_Node000005" class="edge">
-<title>Node5&#45;&gt;Node7</title>
-<g id="a_edge8_Node000007_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M397.53,-586.78C418.07,-577.25 440.2,-562.82 452,-542 470.21,-509.86 472.8,-470.15 469.38,-434.17"/>
-<polygon fill="none" stroke="#63b8ff" points="396.02,-583.62 388.24,-590.82 398.81,-590.04 396.02,-583.62"/>
+<!-- Node9 -->
+<g id="Node000009" class="node">
+<title>Node9</title>
+<g id="a_Node000009"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
+<polygon fill="white" stroke="transparent" points="626,-671 462,-671 462,-566 626,-566 626,-671"/>
+<text text-anchor="start" x="520" y="-658.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
+<text text-anchor="start" x="542" y="-643.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="466" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="479" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
+<text text-anchor="start" x="466" y="-613.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="479" y="-613.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
+<text text-anchor="start" x="466" y="-598.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="479" y="-598.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
+<text text-anchor="start" x="466" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="479" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="479" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="462,-653.5 462,-653.5 626,-653.5 626,-653.5 462,-653.5"/>
+<polygon fill="#666666" stroke="#666666" points="462,-638.5 462,-638.5 626,-638.5 626,-638.5 462,-638.5"/>
+<polygon fill="none" stroke="#666666" points="462,-566 462,-671 626,-671 626,-566 462,-566"/>
+</a>
+</g>
+</g>
+<!-- Node5&#45;&gt;Node9 -->
+<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="M397.11,-704.74C416.49,-693.5 439.63,-680.07 461.75,-667.23"/>
+<polygon fill="none" stroke="#63b8ff" points="395.1,-701.86 388.21,-709.91 398.62,-707.91 395.1,-701.86"/>
 </a>
 </g>
 </g>
@@ -213,21 +201,102 @@
 <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="M336.72,-451.61C319.96,-399.64 291.24,-310.98 266,-235 265.3,-232.91 264.59,-230.78 263.87,-228.62"/>
-<polygon fill="none" stroke="#63b8ff" points="263.8,-228.39 258.09,-223.97 259.98,-217.01 265.68,-221.42 263.8,-228.39"/>
+<path fill="none" stroke="#63b8ff" d="M313.04,-573.21C297.15,-554.68 278.55,-532.97 261.91,-513.56"/>
+<polygon fill="none" stroke="#63b8ff" points="261.72,-513.34 254.78,-511.39 253.91,-504.23 260.85,-506.18 261.72,-513.34"/>
+</a>
+</g>
+<text text-anchor="middle" x="299" y="-540" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ty</text>
+</g>
+<!-- Node7 -->
+<g id="Node000007" class="node">
+<title>Node7</title>
+<g id="a_Node000007"><a xlink:href="classtvm_1_1tirx_1_1BufferVar.html" target="_top" xlink:title="Checked zero&#45;state view over an ordinary VarNode with BufferType.">
+<polygon fill="white" stroke="transparent" points="438.5,-362 325.5,-362 325.5,-137 438.5,-137 438.5,-362"/>
+<text text-anchor="start" x="335.5" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferVar</text>
+<text text-anchor="start" x="330" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_is_nullable</text>
+<text text-anchor="start" x="330" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
+<text text-anchor="start" x="343" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
+<text text-anchor="start" x="330" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="330" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-278.5" font-family="Helvetica,sans-Serif" font-size="10.00">BufferVar()</text>
+<text text-anchor="start" x="330" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">var()</text>
+<text text-anchor="start" x="330" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-248.5" font-family="Helvetica,sans-Serif" font-size="10.00">type()</text>
+<text text-anchor="start" x="330" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">name()</text>
+<text text-anchor="start" x="330" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-218.5" font-family="Helvetica,sans-Serif" font-size="10.00">span()</text>
+<text text-anchor="start" x="330" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-203.5" font-family="Helvetica,sans-Serif" font-size="10.00">data()</text>
+<text text-anchor="start" x="330" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-188.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeStrideView()</text>
+<text text-anchor="start" x="330" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-173.5" font-family="Helvetica,sans-Serif" font-size="10.00">MakeSlice()</text>
+<text text-anchor="start" x="330" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="343" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">access_ptr()</text>
+<text text-anchor="start" x="343" y="-143.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 17 more...</text>
+<polygon fill="#666666" stroke="#666666" points="326,-344.5 326,-344.5 439,-344.5 439,-344.5 326,-344.5"/>
+<polygon fill="#666666" stroke="#666666" points="326,-303.5 326,-303.5 341,-303.5 341,-303.5 326,-303.5"/>
+<polygon fill="#666666" stroke="#666666" points="341,-303.5 341,-303.5 439,-303.5 439,-303.5 341,-303.5"/>
+<polygon fill="none" stroke="#666666" points="325.5,-137 325.5,-362 438.5,-362 438.5,-137 325.5,-137"/>
 </a>
 </g>
-<text text-anchor="middle" x="342" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +ty</text>
 </g>
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7_Node000001_Node000007" class="edge">
 <title>Node7&#45;&gt;Node1</title>
 <g id="a_edge7_Node000001_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M403.84,-234.96C384.75,-190.33 362.88,-139.22 346.71,-101.42"/>
-<polygon fill="none" stroke="#63b8ff" points="346.6,-101.17 340.56,-97.22 341.88,-90.13 347.92,-94.08 346.6,-101.17"/>
+<path fill="none" stroke="#63b8ff" d="M325.43,-138.36C318.79,-125.43 312.25,-112.69 306.24,-101"/>
+<polygon fill="none" stroke="#63b8ff" points="306.15,-100.81 299.85,-97.3 300.67,-90.13 306.97,-93.64 306.15,-100.81"/>
+</a>
+</g>
+<text text-anchor="middle" x="334" y="-111" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +buffer</text>
+</g>
+<!-- Node8 -->
+<g id="Node000008" class="node">
+<title>Node8</title>
+<g id="a_Node000008"><a xlink:href="classtvm_1_1Var.html" target="_top" xlink:title="Managed reference to VarNode.">
+<polygon fill="white" stroke="transparent" points="499,-519 335,-519 335,-399 499,-399 499,-519"/>
+<text text-anchor="start" x="409" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00">Var</text>
+<text text-anchor="start" x="415" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="339" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="352" y="-477" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
+<text text-anchor="start" x="339" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="352" y="-462" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
+<text text-anchor="start" x="339" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="352" y="-447" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
+<text text-anchor="start" x="339" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="352" y="-432" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
+<text text-anchor="start" x="339" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="352" y="-417" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="352" y="-406" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="335,-502 335,-502 499,-502 499,-502 335,-502"/>
+<polygon fill="#666666" stroke="#666666" points="335,-487 335,-487 499,-487 499,-487 335,-487"/>
+<polygon fill="none" stroke="#666666" points="335,-399 335,-519 499,-519 499,-399 335,-399"/>
+</a>
+</g>
+</g>
+<!-- Node8&#45;&gt;Node7 -->
+<g id="edge8_Node000007_Node000008" class="edge">
+<title>Node8&#45;&gt;Node7</title>
+<g id="a_edge8_Node000007_Node000008"><a xlink:title=" ">
+<path fill="none" stroke="#63b8ff" d="M405.35,-388.92C403.9,-380.33 402.39,-371.38 400.87,-362.35"/>
+<polygon fill="none" stroke="#63b8ff" points="401.9,-389.54 407.02,-398.82 408.81,-388.37 401.9,-389.54"/>
+</a>
+</g>
+</g>
+<!-- Node9&#45;&gt;Node8 -->
+<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="M496.09,-558.08C485.79,-545.31 474.91,-531.82 464.63,-519.06"/>
+<polygon fill="none" stroke="#63b8ff" points="493.41,-560.34 502.42,-565.93 498.86,-555.95 493.41,-560.34"/>
 </a>
 </g>
-<text text-anchor="middle" x="414" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +buffer</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode-members.html
deleted file mode 100644
index 3138ebfefaa..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode-members.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.8"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>tvm: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
-  <td id="projectalign">
-   <div id="projectname">tvm
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.8 -->
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
-var searchBox = new SearchBox("searchBox", "search/",'.html');
-/* @license-end */
-</script>
-<script type="text/javascript" src="menudata.js"></script>
-<script type="text/javascript" src="menu.js"></script>
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
-$(function() {
-  initMenu('',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-/* @license-end */
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<div id="MSearchResults">
-<div class="SRPage">
-<div id="SRIndex">
-<div id="SRResults"></div>
-<div class="SRStatus" id="Loading">Loading...</div>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-</div>
-</div>
-</div>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="namespacetvm.html">tvm</a></li><li class="navelem"><a class="el" href="namespacetvm_1_1tirx.html">tirx</a></li><li class="navelem"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle"><div class="title">tvm::tirx::BufferNode Member List</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a98b13ae05f6f78f720310a6ff9e22701">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</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_1BufferNode.html#aab0218669e142917afae65e78f480d49">allocated_addr</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a01dcbc0de1df11017b80e6aebe2b7afc">BufferNode</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a032fea6c6a5836c9393b5cf5d3f7ef66">data</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ae7121e2f1e343890be8e82291f21662d">data_alignment</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a857c4b8359cccaa72cd9b609b2f5ba66">DefaultIndexType</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a3910ab108252249d571a46a26ab0a7f5">dtype</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#aaaa0ff22d869d8a21a8e1c8354ae7aa7">elem_offset</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a08acc657da4cfc79504906280cc34464">ElementType</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ab26e9f26ff748fd4110e67ba388074c8">ElemOffset</a>(ffi::Array&lt; PrimExpr &gt; index, bool inner=false) const</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ab3ee99bb7ca58f97cc4d01f18f9f8b67">layout</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a7b201f0b9f409b371a22b527232911af">name</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a9705c9d21d8a2f844885cc0ced1d8f7a">offset_factor</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a562988870d799ebc2420207e87a581af">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</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_1BufferNode.html#a20430f1e1a8c06737091343dc062eb2a">shape</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a10bddc40d3a75319ea9958ecf7002ee8">span</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</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_1BufferNode.html#adaeae9092c6c56b315c3c2a86fd52466">strides</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ac4fb30a74ca831826e7b40339ced1bb8">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;tirx.Buffer&quot;, BufferNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">tvm::tirx::BufferNode</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
-</small></address>
-</body>
-</html>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode.html
deleted file mode 100644
index b140606f5eb..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode.html
+++ /dev/null
@@ -1,560 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=11"/>
-<meta name="generator" content="Doxygen 1.9.8"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>tvm: tvm::tirx::BufferNode Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
-  <td id="projectalign">
-   <div id="projectname">tvm
-   </div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.8 -->
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
-var searchBox = new SearchBox("searchBox", "search/",'.html');
-/* @license-end */
-</script>
-<script type="text/javascript" src="menudata.js"></script>
-<script type="text/javascript" src="menu.js"></script>
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
-$(function() {
-  initMenu('',true,false,'search.php','Search');
-  $(document).ready(function() { init_search(); });
-});
-/* @license-end */
-</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<div id="MSearchResults">
-<div class="SRPage">
-<div id="SRIndex">
-<div id="SRResults"></div>
-<div class="SRStatus" id="Loading">Loading...</div>
-<div class="SRStatus" id="Searching">Searching...</div>
-<div class="SRStatus" id="NoMatches">No Matches</div>
-</div>
-</div>
-</div>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="namespacetvm.html">tvm</a></li><li class="navelem"><a class="el" href="namespacetvm_1_1tirx.html">tirx</a></li><li class="navelem"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
-<a href="#pub-attribs">Public Attributes</a> &#124;
-<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
-<a href="classtvm_1_1tirx_1_1BufferNode-members.html">List of all members</a>  </div>
-  <div class="headertitle"><div class="title">tvm::tirx::BufferNode Class Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Node to represent a buffer.  
- <a href="classtvm_1_1tirx_1_1BufferNode.html#details">More...</a></p>
-
-<p><code>#include &lt;<a class="el" href="buffer_8h_source.html">buffer.h</a>&gt;</code></p>
-<div class="dynheader">
-Inheritance diagram for tvm::tirx::BufferNode:</div>
-<div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BufferNode__inherit__graph.svg" width="219" height="524"><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::BufferNode:</div>
-<div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BufferNode__coll__graph.svg" width="688" height="1559"><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>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a01dcbc0de1df11017b80e6aebe2b7afc" id="r_a01dcbc0de1df11017b80e6aebe2b7afc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a01dcbc0de1df11017b80e6aebe2b7afc">BufferNode</a> ()</td></tr>
-<tr class="memdesc:a01dcbc0de1df11017b80e6aebe2b7afc"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor  <br /></td></tr>
-<tr class="separator:a01dcbc0de1df11017b80e6aebe2b7afc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a857c4b8359cccaa72cd9b609b2f5ba66" id="r_a857c4b8359cccaa72cd9b609b2f5ba66"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">DLDataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a857c4b8359cccaa72cd9b609b2f5ba66">DefaultIndexType</a> () <a class="el" href="classtvm_1_1With.html">const</a></td></tr>
-<tr class="separator:a857c4b8359cccaa72cd9b609b2f5ba66"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a08acc657da4cfc79504906280cc34464" id="r_a08acc657da4cfc79504906280cc34464"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimType.html">PrimType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a08acc657da4cfc79504906280cc34464">ElementType</a> () <a class="el" href="classtvm_1_1With.html">const</a></td></tr>
-<tr class="separator:a08acc657da4cfc79504906280cc34464"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab26e9f26ff748fd4110e67ba388074c8" id="r_ab26e9f26ff748fd4110e67ba388074c8"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ab26e9f26ff748fd4110e67ba388074c8">ElemOffset</a> (ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; index, <a class="el" href="c [...]
-<tr class="memdesc:ab26e9f26ff748fd4110e67ba388074c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine the offset in the buffer of the given index.  <br /></td></tr>
-<tr class="separator:ab26e9f26ff748fd4110e67ba388074c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac4fb30a74ca831826e7b40339ced1bb8" id="r_ac4fb30a74ca831826e7b40339ced1bb8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ac4fb30a74ca831826e7b40339ced1bb8">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a> (&quot;tirx.Buffer&quot;, <a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a>, ffi::Object)</td></tr>
-<tr class="separator:ac4fb30a74ca831826e7b40339ced1bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a562988870d799ebc2420207e87a581af" id="r_a562988870d799ebc2420207e87a581af"><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">void</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a562988870d799ebc2420207e87a581af">RegisterReflection</a> ()</td></tr>
-<tr class="separator:a562988870d799ebc2420207e87a581af"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a032fea6c6a5836c9393b5cf5d3f7ef66" id="r_a032fea6c6a5836c9393b5cf5d3f7ef66"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a032fea6c6a5836c9393b5cf5d3f7ef66">data</a></td></tr>
-<tr class="memdesc:a032fea6c6a5836c9393b5cf5d3f7ef66"><td class="mdescLeft">&#160;</td><td class="mdescRight">The pointer to the head of the data.  <br /></td></tr>
-<tr class="separator:a032fea6c6a5836c9393b5cf5d3f7ef66"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3910ab108252249d571a46a26ab0a7f5" id="r_a3910ab108252249d571a46a26ab0a7f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimType.html">PrimType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a3910ab108252249d571a46a26ab0a7f5">dtype</a> = <a class="el" href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">PrimType::Void</a>()</td></tr>
-<tr class="memdesc:a3910ab108252249d571a46a26ab0a7f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">dtype in the content of the tensor  <br /></td></tr>
-<tr class="separator:a3910ab108252249d571a46a26ab0a7f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a20430f1e1a8c06737091343dc062eb2a" id="r_a20430f1e1a8c06737091343dc062eb2a"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a20430f1e1a8c06737091343dc062eb2a">shape</a></td></tr>
-<tr class="memdesc:a20430f1e1a8c06737091343dc062eb2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The type of the buffer prior to flattening.  <br /></td></tr>
-<tr class="separator:a20430f1e1a8c06737091343dc062eb2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adaeae9092c6c56b315c3c2a86fd52466" id="r_adaeae9092c6c56b315c3c2a86fd52466"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#adaeae9092c6c56b315c3c2a86fd52466">strides</a></td></tr>
-<tr class="memdesc:adaeae9092c6c56b315c3c2a86fd52466"><td class="mdescLeft">&#160;</td><td class="mdescRight">The strides of each dimension This can be an empty array, indicating array is contiguous.  <br /></td></tr>
-<tr class="separator:adaeae9092c6c56b315c3c2a86fd52466"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaaa0ff22d869d8a21a8e1c8354ae7aa7" id="r_aaaa0ff22d869d8a21a8e1c8354ae7aa7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#aaaa0ff22d869d8a21a8e1c8354ae7aa7">elem_offset</a></td></tr>
-<tr class="memdesc:aaaa0ff22d869d8a21a8e1c8354ae7aa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The offset in terms of number of dtype elements (including lanes)  <br /></td></tr>
-<tr class="separator:aaaa0ff22d869d8a21a8e1c8354ae7aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7b201f0b9f409b371a22b527232911af" id="r_a7b201f0b9f409b371a22b527232911af"><td class="memItemLeft" align="right" valign="top">ffi::String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a7b201f0b9f409b371a22b527232911af">name</a></td></tr>
-<tr class="memdesc:a7b201f0b9f409b371a22b527232911af"><td class="mdescLeft">&#160;</td><td class="mdescRight">optional name of the buffer  <br /></td></tr>
-<tr class="separator:a7b201f0b9f409b371a22b527232911af"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae7121e2f1e343890be8e82291f21662d" id="r_ae7121e2f1e343890be8e82291f21662d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ae7121e2f1e343890be8e82291f21662d">data_alignment</a></td></tr>
-<tr class="memdesc:ae7121e2f1e343890be8e82291f21662d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alignment requirement of data pointer in bytes.  <br /></td></tr>
-<tr class="separator:ae7121e2f1e343890be8e82291f21662d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9705c9d21d8a2f844885cc0ced1d8f7a" id="r_a9705c9d21d8a2f844885cc0ced1d8f7a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a9705c9d21d8a2f844885cc0ced1d8f7a">offset_factor</a></td></tr>
-<tr class="memdesc:a9705c9d21d8a2f844885cc0ced1d8f7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Factor of elem_offset field, elem_offset is guaranteed to be multiple of offset_factor.  <br /></td></tr>
-<tr class="separator:a9705c9d21d8a2f844885cc0ced1d8f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a10bddc40d3a75319ea9958ecf7002ee8" id="r_a10bddc40d3a75319ea9958ecf7002ee8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1Span.html">Span</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a10bddc40d3a75319ea9958ecf7002ee8">span</a></td></tr>
-<tr class="memdesc:a10bddc40d3a75319ea9958ecf7002ee8"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1Span.html">Span</a> that points to the original source code. Reserved debug information.  <br /></td></tr>
-<tr class="separator:a10bddc40d3a75319ea9958ecf7002ee8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab3ee99bb7ca58f97cc4d01f18f9f8b67" id="r_ab3ee99bb7ca58f97cc4d01f18f9f8b67"><td class="memItemLeft" align="right" valign="top">ffi::Optional&lt; <a class="el" href="classtvm_1_1tirx_1_1Layout.html">Layout</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ab3ee99bb7ca58f97cc4d01f18f9f8b67">layout</a></td></tr>
-<tr class="memdesc:ab3ee99bb7ca58f97cc4d01f18f9f8b67"><td class="mdescLeft">&#160;</td><td class="mdescRight">The layout of the buffer.  <br /></td></tr>
-<tr class="separator:ab3ee99bb7ca58f97cc4d01f18f9f8b67"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aab0218669e142917afae65e78f480d49" id="r_aab0218669e142917afae65e78f480d49"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#aab0218669e142917afae65e78f480d49">allocated_addr</a></td></tr>
-<tr class="memdesc:aab0218669e142917afae65e78f480d49"><td class="mdescLeft">&#160;</td><td class="mdescRight">The allocated address of the buffer. The address might be multi-dimensional based on its scope. <a class="el" href="classtvm_1_1tirx_1_1For.html" title="Managed reference to ForNode.">For</a> example, trn.psum takes 2D address, representing (bank, offset).  <br /></td></tr>
-<tr class="separator:aab0218669e142917afae65e78f480d49"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a98b13ae05f6f78f720310a6ff9e22701" id="r_a98b13ae05f6f78f720310a6ff9e22701"><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_1BufferNode.html#a98b13ae05f6f78f720310a6ff9e22701">_type_s_eq_hash_kind</a> = < [...]
-<tr class="separator:a98b13ae05f6f78f720310a6ff9e22701"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Node to represent a buffer. </p>
-</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a01dcbc0de1df11017b80e6aebe2b7afc" name="a01dcbc0de1df11017b80e6aebe2b7afc"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a01dcbc0de1df11017b80e6aebe2b7afc">&#9670;&#160;</a></span>BufferNode()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::tirx::BufferNode::BufferNode </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>constructor </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a id="a857c4b8359cccaa72cd9b609b2f5ba66" name="a857c4b8359cccaa72cd9b609b2f5ba66"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a857c4b8359cccaa72cd9b609b2f5ba66">&#9670;&#160;</a></span>DefaultIndexType()</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">DLDataType</a> tvm::tirx::BufferNode::DefaultIndexType </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<dl class="section return"><dt>Returns</dt><dd>preferred index type for this buffer node </dd></dl>
-
-</div>
-</div>
-<a id="a08acc657da4cfc79504906280cc34464" name="a08acc657da4cfc79504906280cc34464"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a08acc657da4cfc79504906280cc34464">&#9670;&#160;</a></span>ElementType()</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_1PrimType.html">PrimType</a> tvm::tirx::BufferNode::ElementType </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<dl class="section return"><dt>Returns</dt><dd>primitive element type for compiler-side uses. </dd></dl>
-
-</div>
-</div>
-<a id="ab26e9f26ff748fd4110e67ba388074c8" name="ab26e9f26ff748fd4110e67ba388074c8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab26e9f26ff748fd4110e67ba388074c8">&#9670;&#160;</a></span>ElemOffset()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt; tvm::tirx::BufferNode::ElemOffset </td>
-          <td>(</td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> &gt;&#160;</td>
-          <td class="paramname"><em>index</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1With.html">bool</a>&#160;</td>
-          <td class="paramname"><em>inner</em> = <code><a class="el" href="classtvm_1_1With.html">false</a></code>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td> const</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Determine the offset in the buffer of the given index. </p>
-<p>Returns the buffer offset, in number of elements of type dtype, without adjusting for number of lanes. (e.g. The number of float16x4 elements in a buffer of type float16x4.)</p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">index</td><td>The index to be accessed. </td></tr>
-    <tr><td class="paramname">inner</td><td>Ignore the elem_offset, return inner offset only </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a id="a562988870d799ebc2420207e87a581af" name="a562988870d799ebc2420207e87a581af"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a562988870d799ebc2420207e87a581af">&#9670;&#160;</a></span>RegisterReflection()</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">static</a> <a class="el" href="classtvm_1_1With.html">void</a> tvm::tirx::BufferNode::RegisterReflection </td>
-          <td>(</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a id="ac4fb30a74ca831826e7b40339ced1bb8" name="ac4fb30a74ca831826e7b40339ced1bb8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac4fb30a74ca831826e7b40339ced1bb8">&#9670;&#160;</a></span>TVM_FFI_DECLARE_OBJECT_INFO_FINAL()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::tirx::BufferNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL </td>
-          <td>(</td>
-          <td class="paramtype">&quot;tirx.Buffer&quot;&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html">BufferNode</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Object&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a id="a98b13ae05f6f78f720310a6ff9e22701" name="a98b13ae05f6f78f720310a6ff9e22701"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a98b13ae05f6f78f720310a6ff9e22701">&#9670;&#160;</a></span>_type_s_eq_hash_kind</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">TVMFFISEqHashKind</a> tvm::tirx::BufferNode::_type_s_eq_hash_kind = <a class="el" href="classtvm_1_1With.html">kTVMFFISEqHashKindTreeNode</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="aab0218669e142917afae65e78f480d49" name="aab0218669e142917afae65e78f480d49"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aab0218669e142917afae65e78f480d49">&#9670;&#160;</a></span>allocated_addr</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&gt; tvm::tirx::BufferNode::allocated_addr</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The allocated address of the buffer. The address might be multi-dimensional based on its scope. <a class="el" href="classtvm_1_1tirx_1_1For.html" title="Managed reference to ForNode.">For</a> example, trn.psum takes 2D address, representing (bank, offset). </p>
-
-</div>
-</div>
-<a id="a032fea6c6a5836c9393b5cf5d3f7ef66" name="a032fea6c6a5836c9393b5cf5d3f7ef66"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a032fea6c6a5836c9393b5cf5d3f7ef66">&#9670;&#160;</a></span>data</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="namespacetvm_1_1tirx.html#a6afba4ff0c281c4916330c3b0e2e6ad3">Var</a> tvm::tirx::BufferNode::data</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The pointer to the head of the data. </p>
-<dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#ae7121e2f1e343890be8e82291f21662d" title="Alignment requirement of data pointer in bytes.">data_alignment</a> The alignment of <a class="el" href="classtvm_1_1tirx_1_1BufferNode.html#a032fea6c6a5836c9393b5cf5d3f7ef66" title="The pointer to the head of the data.">data</a> in bytes. </dd></dl>
-
-</div>
-</div>
-<a id="ae7121e2f1e343890be8e82291f21662d" name="ae7121e2f1e343890be8e82291f21662d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae7121e2f1e343890be8e82291f21662d">&#9670;&#160;</a></span>data_alignment</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1With.html">int</a> tvm::tirx::BufferNode::data_alignment</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Alignment requirement of data pointer in bytes. </p>
-
-</div>
-</div>
-<a id="a3910ab108252249d571a46a26ab0a7f5" name="a3910ab108252249d571a46a26ab0a7f5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3910ab108252249d571a46a26ab0a7f5">&#9670;&#160;</a></span>dtype</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1PrimType.html">PrimType</a> tvm::tirx::BufferNode::dtype = <a class="el" href="classtvm_1_1PrimType.html#a2c807e9555c520595aeb7f84e4ac18f9">PrimType::Void</a>()</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>dtype in the content of the tensor </p>
-
-</div>
-</div>
-<a id="aaaa0ff22d869d8a21a8e1c8354ae7aa7" name="aaaa0ff22d869d8a21a8e1c8354ae7aa7"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aaaa0ff22d869d8a21a8e1c8354ae7aa7">&#9670;&#160;</a></span>elem_offset</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a> tvm::tirx::BufferNode::elem_offset</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The offset in terms of number of dtype elements (including lanes) </p>
-
-</div>
-</div>
-<a id="ab3ee99bb7ca58f97cc4d01f18f9f8b67" name="ab3ee99bb7ca58f97cc4d01f18f9f8b67"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab3ee99bb7ca58f97cc4d01f18f9f8b67">&#9670;&#160;</a></span>layout</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Optional&lt;<a class="el" href="classtvm_1_1tirx_1_1Layout.html">Layout</a>&gt; tvm::tirx::BufferNode::layout</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The layout of the buffer. </p>
-
-</div>
-</div>
-<a id="a7b201f0b9f409b371a22b527232911af" name="a7b201f0b9f409b371a22b527232911af"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7b201f0b9f409b371a22b527232911af">&#9670;&#160;</a></span>name</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::String tvm::tirx::BufferNode::name</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>optional name of the buffer </p>
-
-</div>
-</div>
-<a id="a9705c9d21d8a2f844885cc0ced1d8f7a" name="a9705c9d21d8a2f844885cc0ced1d8f7a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a9705c9d21d8a2f844885cc0ced1d8f7a">&#9670;&#160;</a></span>offset_factor</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1With.html">int</a> tvm::tirx::BufferNode::offset_factor</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Factor of elem_offset field, elem_offset is guaranteed to be multiple of offset_factor. </p>
-
-</div>
-</div>
-<a id="a20430f1e1a8c06737091343dc062eb2a" name="a20430f1e1a8c06737091343dc062eb2a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a20430f1e1a8c06737091343dc062eb2a">&#9670;&#160;</a></span>shape</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&gt; tvm::tirx::BufferNode::shape</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The type of the buffer prior to flattening. </p>
-<p>This contains the shape as it is accessed by BufferLoad/BufferStore nodes, and used by the low-level code generators. </p>
-
-</div>
-</div>
-<a id="a10bddc40d3a75319ea9958ecf7002ee8" name="a10bddc40d3a75319ea9958ecf7002ee8"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a10bddc40d3a75319ea9958ecf7002ee8">&#9670;&#160;</a></span>span</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_1Span.html">Span</a> tvm::tirx::BufferNode::span</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">mutable</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p><a class="el" href="classtvm_1_1Span.html">Span</a> that points to the original source code. Reserved debug information. </p>
-
-</div>
-</div>
-<a id="adaeae9092c6c56b315c3c2a86fd52466" name="adaeae9092c6c56b315c3c2a86fd52466"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#adaeae9092c6c56b315c3c2a86fd52466">&#9670;&#160;</a></span>strides</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1PrimExpr.html">PrimExpr</a>&gt; tvm::tirx::BufferNode::strides</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The strides of each dimension This can be an empty array, indicating array is contiguous. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/tvm/tirx/<a class="el" href="buffer_8h_source.html">buffer.h</a></li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
-</small></address>
-</body>
-</html>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode__coll__graph.svg
deleted file mode 100644
index b2bf4ce9b60..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferNode__coll__graph.svg
+++ /dev/null
@@ -1,376 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.43.0 (0)
- -->
-<!-- Title: tvm::tirx::BufferNode Pages: 1 -->
-<svg width="516pt" height="1169pt"
- viewBox="0.00 0.00 516.00 1169.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 1165)">
-<title>tvm::tirx::BufferNode</title>
-<!-- Node1 -->
-<g id="Node000001" class="node">
-<title>Node1</title>
-<g id="a_Node000001"><a xlink:title="Node to represent a buffer.">
-<polygon fill="#999999" stroke="transparent" points="306,-240 150,-240 150,0 306,0 306,-240"/>
-<text text-anchor="start" x="176.5" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferNode</text>
-<text text-anchor="start" x="154" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-213" font-family="Helvetica,sans-Serif" font-size="10.00">shape</text>
-<text text-anchor="start" x="154" y="-198" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-198" font-family="Helvetica,sans-Serif" font-size="10.00">strides</text>
-<text text-anchor="start" x="154" y="-183" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-183" font-family="Helvetica,sans-Serif" font-size="10.00">name</text>
-<text text-anchor="start" x="154" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-168" font-family="Helvetica,sans-Serif" font-size="10.00">data_alignment</text>
-<text text-anchor="start" x="154" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-153" font-family="Helvetica,sans-Serif" font-size="10.00">offset_factor</text>
-<text text-anchor="start" x="154" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-138" font-family="Helvetica,sans-Serif" font-size="10.00">layout</text>
-<text text-anchor="start" x="154" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">allocated_addr</text>
-<text text-anchor="start" x="154" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="154" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">BufferNode()</text>
-<text text-anchor="start" x="154" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">DefaultIndexType()</text>
-<text text-anchor="start" x="154" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">ElementType()</text>
-<text text-anchor="start" x="154" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">ElemOffset()</text>
-<text text-anchor="start" x="154" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="167" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="154" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="167" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="150,-223 150,-223 306,-223 306,-223 150,-223"/>
-<polygon fill="#666666" stroke="#666666" points="150,-103 150,-103 165,-103 165,-103 150,-103"/>
-<polygon fill="#666666" stroke="#666666" points="165,-103 165,-103 306,-103 306,-103 165,-103"/>
-<polygon fill="none" stroke="#666666" points="150,0 150,-240 306,-240 306,0 150,0"/>
-</a>
-</g>
-</g>
-<!-- Node2 -->
-<g id="Node000002" class="node">
-<title>Node2</title>
-<g id="a_Node000002"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="58,-377 0,-377 0,-328 58,-328 58,-377"/>
-<text text-anchor="start" x="5" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="27" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="27" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="0,-359.5 0,-359.5 58,-359.5 58,-359.5 0,-359.5"/>
-<polygon fill="#666666" stroke="#666666" points="0,-344.5 0,-344.5 58,-344.5 58,-344.5 0,-344.5"/>
-<polygon fill="none" stroke="#666666" points="0,-328 0,-377 58,-377 58,-328 0,-328"/>
-</a>
-</g>
-</g>
-<!-- Node2&#45;&gt;Node1 -->
-<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="M43.53,-318.9C52.64,-300.17 65.42,-276.72 80,-258 100.33,-231.89 125.82,-206.39 149.89,-184.61"/>
-<polygon fill="none" stroke="#63b8ff" points="40.36,-317.41 39.23,-327.94 46.68,-320.41 40.36,-317.41"/>
-</a>
-</g>
-</g>
-<!-- Node3 -->
-<g id="Node000003" class="node">
-<title>Node3</title>
-<g id="a_Node000003"><a xlink:href="classtvm_1_1Var.html" target="_top" xlink:title="Managed reference to VarNode.">
-<polygon fill="white" stroke="transparent" points="182,-648 18,-648 18,-528 182,-528 182,-648"/>
-<text text-anchor="start" x="79" y="-636" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Var</text>
-<text text-anchor="start" x="98" y="-621" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="22" y="-606" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="35" y="-606" font-family="Helvetica,sans-Serif" font-size="10.00">Var()</text>
-<text text-anchor="start" x="22" y="-591" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="35" y="-591" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithName()</text>
-<text text-anchor="start" x="22" y="-576" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="35" y="-576" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithSuffix()</text>
-<text text-anchor="start" x="22" y="-561" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="35" y="-561" font-family="Helvetica,sans-Serif" font-size="10.00">CopyWithDType()</text>
-<text text-anchor="start" x="22" y="-546" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="35" y="-546" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="35" y="-535" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="18,-631 18,-631 182,-631 182,-631 18,-631"/>
-<polygon fill="#666666" stroke="#666666" points="18,-616 18,-616 182,-616 182,-616 18,-616"/>
-<polygon fill="none" stroke="#666666" points="18,-528 18,-648 182,-648 182,-528 18,-528"/>
-</a>
-</g>
-</g>
-<!-- Node3&#45;&gt;Node1 -->
-<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="M89.97,-527.96C81.87,-466.11 75.8,-367.01 103,-287 111.8,-261.11 126.34,-236.01 142.46,-213.49"/>
-<polygon fill="none" stroke="#63b8ff" points="142.58,-213.32 142.93,-206.12 149.71,-203.66 149.36,-210.87 142.58,-213.32"/>
-</a>
-</g>
-<text text-anchor="middle" x="120" y="-350" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +data</text>
-</g>
-<!-- Node4 -->
-<g id="Node000004" class="node">
-<title>Node4</title>
-<g id="a_Node000004"><a xlink:href="classtvm_1_1Expr.html" target="_top" xlink:title="Managed reference to ExprNode.">
-<polygon fill="white" stroke="transparent" points="206,-1075 42,-1075 42,-970 206,-970 206,-1075"/>
-<text text-anchor="start" x="100" y="-1062.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Expr</text>
-<text text-anchor="start" x="122" y="-1047.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="46" y="-1032.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="59" y="-1032.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator==()</text>
-<text text-anchor="start" x="46" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="59" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator!=()</text>
-<text text-anchor="start" x="46" y="-1002.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="59" y="-1002.5" font-family="Helvetica,sans-Serif" font-size="10.00">operator&lt;()</text>
-<text text-anchor="start" x="46" y="-987.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="59" y="-987.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="59" y="-976.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="42,-1057.5 42,-1057.5 206,-1057.5 206,-1057.5 42,-1057.5"/>
-<polygon fill="#666666" stroke="#666666" points="42,-1042.5 42,-1042.5 206,-1042.5 206,-1042.5 42,-1042.5"/>
-<polygon fill="none" stroke="#666666" points="42,-970 42,-1075 206,-1075 206,-970 42,-970"/>
-</a>
-</g>
-</g>
-<!-- Node4&#45;&gt;Node3 -->
-<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="M120.57,-959.7C115.96,-876.57 107.81,-729.75 103.28,-648.05"/>
-<polygon fill="none" stroke="#63b8ff" points="117.08,-959.97 121.13,-969.76 124.07,-959.58 117.08,-959.97"/>
-</a>
-</g>
-</g>
-<!-- Node9 -->
-<g id="Node000009" class="node">
-<title>Node9</title>
-<g id="a_Node000009"><a xlink:href="classtvm_1_1TypedExpr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="298,-844 134,-844 134,-758 298,-758 298,-844"/>
-<text text-anchor="start" x="144" y="-832" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypedExpr&lt; PrimType &gt;</text>
-<text text-anchor="start" x="138" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="151" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="151" y="-806" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="138" y="-791" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="151" y="-791" font-family="Helvetica,sans-Serif" font-size="10.00">ty()</text>
-<text text-anchor="start" x="138" y="-776" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="151" y="-776" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="151" y="-765" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="134,-827 134,-827 298,-827 298,-827 134,-827"/>
-<polygon fill="#666666" stroke="#666666" points="134,-801 134,-801 149,-801 149,-801 134,-801"/>
-<polygon fill="#666666" stroke="#666666" points="149,-801 149,-801 298,-801 298,-801 149,-801"/>
-<polygon fill="none" stroke="#666666" points="134,-758 134,-844 298,-844 298,-758 134,-758"/>
-</a>
-</g>
-</g>
-<!-- Node4&#45;&gt;Node9 -->
-<g id="edge10_Node000009_Node000004" class="edge">
-<title>Node4&#45;&gt;Node9</title>
-<g id="a_edge10_Node000009_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M149.74,-960.09C165.23,-923.14 184.54,-877.06 198.31,-844.2"/>
-<polygon fill="none" stroke="#63b8ff" points="146.32,-959.18 145.69,-969.76 152.78,-961.89 146.32,-959.18"/>
-</a>
-</g>
-</g>
-<!-- Node5 -->
-<g id="Node000005" class="node">
-<title>Node5</title>
-<g id="a_Node000005"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="354,-1161 280,-1161 280,-1112 354,-1112 354,-1161"/>
-<text text-anchor="start" x="285" y="-1148.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="315" y="-1133.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="315" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="280,-1143.5 280,-1143.5 354,-1143.5 354,-1143.5 280,-1143.5"/>
-<polygon fill="#666666" stroke="#666666" points="280,-1128.5 280,-1128.5 354,-1128.5 354,-1128.5 280,-1128.5"/>
-<polygon fill="none" stroke="#666666" points="280,-1112 280,-1161 354,-1161 354,-1112 280,-1112"/>
-</a>
-</g>
-</g>
-<!-- Node5&#45;&gt;Node4 -->
-<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="M270.89,-1108.74C251.51,-1097.5 228.37,-1084.07 206.25,-1071.23"/>
-<polygon fill="none" stroke="#63b8ff" points="269.38,-1111.91 279.79,-1113.91 272.9,-1105.86 269.38,-1111.91"/>
-</a>
-</g>
-</g>
-<!-- Node7 -->
-<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="409.5,-1067.5 224.5,-1067.5 224.5,-977.5 409.5,-977.5 409.5,-1067.5"/>
-<text text-anchor="start" x="293" y="-1055.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<text text-anchor="start" x="315.5" y="-1040.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="229" y="-1025.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="242" y="-1025.5" font-family="Helvetica,sans-Serif" font-size="10.00">IsMissing()</text>
-<text text-anchor="start" x="229" y="-1010.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="242" y="-1010.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="242" y="-999.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="229" y="-984.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="242" y="-984.5" font-family="Helvetica,sans-Serif" font-size="10.00">Missing()</text>
-<polygon fill="#666666" stroke="#666666" points="225,-1050.5 225,-1050.5 410,-1050.5 410,-1050.5 225,-1050.5"/>
-<polygon fill="#666666" stroke="#666666" points="225,-1035.5 225,-1035.5 410,-1035.5 410,-1035.5 225,-1035.5"/>
-<polygon fill="none" stroke="#666666" points="224.5,-977.5 224.5,-1067.5 409.5,-1067.5 409.5,-977.5 224.5,-977.5"/>
-</a>
-</g>
-</g>
-<!-- Node5&#45;&gt;Node7 -->
-<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="M317,-1101.54C317,-1090.84 317,-1078.86 317,-1067.56"/>
-<polygon fill="none" stroke="#63b8ff" points="313.5,-1101.75 317,-1111.75 320.5,-1101.75 313.5,-1101.75"/>
-</a>
-</g>
-</g>
-<!-- Node10 -->
-<g id="Node000010" class="node">
-<title>Node10</title>
-<g id="a_Node000010"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="508,-952 344,-952 344,-862 508,-862 508,-952"/>
-<text text-anchor="start" x="401" y="-940" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<text text-anchor="start" x="424" y="-925" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="348" y="-910" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="361" y="-910" font-family="Helvetica,sans-Serif" font-size="10.00">Span()</text>
-<text text-anchor="start" x="348" y="-895" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="361" y="-895" font-family="Helvetica,sans-Serif" font-size="10.00">Merge()</text>
-<text text-anchor="start" x="348" y="-880" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="361" y="-880" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="361" y="-869" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="344,-935 344,-935 508,-935 508,-935 344,-935"/>
-<polygon fill="#666666" stroke="#666666" points="344,-920 344,-920 508,-920 508,-920 344,-920"/>
-<polygon fill="none" stroke="#666666" points="344,-862 344,-952 508,-952 508,-862 344,-862"/>
-</a>
-</g>
-</g>
-<!-- Node5&#45;&gt;Node10 -->
-<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="M363.32,-1119.42C383.7,-1109.83 405.75,-1095.45 418,-1075 440.14,-1038.02 439.29,-987.75 434.67,-952.05"/>
-<polygon fill="none" stroke="#63b8ff" points="361.84,-1116.24 354.11,-1123.49 364.67,-1122.65 361.84,-1116.24"/>
-</a>
-</g>
-</g>
-<!-- Node6 -->
-<g id="Node000006" class="node">
-<title>Node6</title>
-<g id="a_Node000006"><a xlink:href="classtvm_1_1PrimType.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="398.5,-740 265.5,-740 265.5,-436 398.5,-436 398.5,-740"/>
-<text text-anchor="start" x="297" y="-728" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimType</text>
-<text text-anchor="start" x="330.5" y="-713" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="270" y="-698" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-698" font-family="Helvetica,sans-Serif" font-size="10.00">PrimType()</text>
-<text text-anchor="start" x="270" y="-683" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-683" font-family="Helvetica,sans-Serif" font-size="10.00">PrimType()</text>
-<text text-anchor="start" x="270" y="-668" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-668" font-family="Helvetica,sans-Serif" font-size="10.00">code()</text>
-<text text-anchor="start" x="270" y="-653" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-653" font-family="Helvetica,sans-Serif" font-size="10.00">bits()</text>
-<text text-anchor="start" x="270" y="-638" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-638" font-family="Helvetica,sans-Serif" font-size="10.00">lanes()</text>
-<text text-anchor="start" x="270" y="-623" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-623" font-family="Helvetica,sans-Serif" font-size="10.00">MatchesElementType()</text>
-<text text-anchor="start" x="270" y="-608" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-608" font-family="Helvetica,sans-Serif" font-size="10.00">MatchesCode()</text>
-<text text-anchor="start" x="270" y="-593" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-593" font-family="Helvetica,sans-Serif" font-size="10.00">IsScalar()</text>
-<text text-anchor="start" x="270" y="-578" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-578" font-family="Helvetica,sans-Serif" font-size="10.00">IsVoid()</text>
-<text text-anchor="start" x="270" y="-563" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-563" font-family="Helvetica,sans-Serif" font-size="10.00">IsScalableVector()</text>
-<text text-anchor="start" x="283" y="-548" font-family="Helvetica,sans-Serif" font-size="10.00">and 7 more...</text>
-<text text-anchor="start" x="270" y="-533" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-533" font-family="Helvetica,sans-Serif" font-size="10.00">Int()</text>
-<text text-anchor="start" x="270" y="-518" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-518" font-family="Helvetica,sans-Serif" font-size="10.00">UInt()</text>
-<text text-anchor="start" x="270" y="-503" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-503" font-family="Helvetica,sans-Serif" font-size="10.00">Float()</text>
-<text text-anchor="start" x="270" y="-488" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-488" font-family="Helvetica,sans-Serif" font-size="10.00">BFloat()</text>
-<text text-anchor="start" x="270" y="-473" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-473" font-family="Helvetica,sans-Serif" font-size="10.00">Bool()</text>
-<text text-anchor="start" x="270" y="-458" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-458" font-family="Helvetica,sans-Serif" font-size="10.00">Void()</text>
-<text text-anchor="start" x="270" y="-443" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="283" y="-443" font-family="Helvetica,sans-Serif" font-size="10.00">ScalableVector()</text>
-<polygon fill="#666666" stroke="#666666" points="266,-723 266,-723 399,-723 399,-723 266,-723"/>
-<polygon fill="#666666" stroke="#666666" points="266,-708 266,-708 399,-708 399,-708 266,-708"/>
-<polygon fill="none" stroke="#666666" points="265.5,-436 265.5,-740 398.5,-740 398.5,-436 265.5,-436"/>
-</a>
-</g>
-</g>
-<!-- Node6&#45;&gt;Node1 -->
-<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="M338.82,-435.73C337.47,-387.46 332.22,-334.32 319,-287 315.68,-275.13 311.38,-263.17 306.46,-251.4"/>
-<polygon fill="none" stroke="#63b8ff" points="306.37,-251.19 300.3,-247.3 301.57,-240.2 307.63,-244.09 306.37,-251.19"/>
-</a>
-</g>
-<text text-anchor="middle" x="358" y="-350" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +dtype</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="M318.89,-967.08C320.85,-910.39 324.02,-819.03 326.75,-740.33"/>
-<polygon fill="none" stroke="#63b8ff" points="315.38,-967.13 318.53,-977.25 322.38,-967.37 315.38,-967.13"/>
-</a>
-</g>
-</g>
-<!-- Node8 -->
-<g id="Node000008" class="node">
-<title>Node8</title>
-<g id="a_Node000008"><a xlink:href="classtvm_1_1PrimExpr.html" target="_top" xlink:title="Typed reference/view over any Expr whose ExprNode::ty is PrimType.">
-<polygon fill="white" stroke="transparent" points="310,-418 146,-418 146,-287 310,-287 310,-418"/>
-<text text-anchor="start" x="193" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExpr</text>
-<text text-anchor="start" x="150" y="-390.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="163" y="-390.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_container_is</text>
-<text text-anchor="start" x="163" y="-379.5" font-family="Helvetica,sans-Serif" font-size="10.00">_exact</text>
-<text text-anchor="start" x="150" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="163" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="150" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="163" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="150" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="163" y="-334.5" font-family="Helvetica,sans-Serif" font-size="10.00">PrimExpr()</text>
-<text text-anchor="start" x="150" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="163" y="-319.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="163" y="-308.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NULLABLE()</text>
-<text text-anchor="start" x="150" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="163" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">ConvertFallbackValue()</text>
-<polygon fill="#666666" stroke="#666666" points="146,-400.5 146,-400.5 310,-400.5 310,-400.5 146,-400.5"/>
-<polygon fill="#666666" stroke="#666666" points="146,-374.5 146,-374.5 161,-374.5 161,-374.5 146,-374.5"/>
-<polygon fill="#666666" stroke="#666666" points="161,-374.5 161,-374.5 310,-374.5 310,-374.5 161,-374.5"/>
-<polygon fill="none" stroke="#666666" points="146,-287 146,-418 310,-418 310,-287 146,-287"/>
-</a>
-</g>
-</g>
-<!-- Node8&#45;&gt;Node1 -->
-<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="M228,-286.99C228,-276 228,-264.24 228,-252.25"/>
-<polygon fill="none" stroke="#63b8ff" points="228,-252.2 224,-246.2 228,-240.2 232,-246.2 228,-252.2"/>
-</a>
-</g>
-<text text-anchor="middle" x="263" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +elem_offset</text>
-</g>
-<!-- Node9&#45;&gt;Node8 -->
-<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="M217.4,-747.92C219.6,-666.03 223.87,-507.34 226.26,-418.23"/>
-<polygon fill="none" stroke="#63b8ff" points="213.9,-747.9 217.13,-757.99 220.9,-748.09 213.9,-747.9"/>
-</a>
-</g>
-</g>
-<!-- Node10&#45;&gt;Node1 -->
-<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="M433.29,-861.66C448.49,-756.11 474.94,-484.08 382,-287 366.03,-253.14 340.63,-221.5 315.03,-195.11"/>
-<polygon fill="none" stroke="#63b8ff" points="314.8,-194.89 307.74,-193.45 306.35,-186.37 313.41,-187.81 314.8,-194.89"/>
-</a>
-</g>
-<text text-anchor="middle" x="465.5" y="-585.5" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +span</text>
-</g>
-</g>
-</svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegion-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegion-members.html
index 90e2df2335a..7192cffef7b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegion-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegion-members.html
@@ -79,9 +79,9 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#a98a01f894a6d9b3130fc7906e147338c">BufferRegion</a>(Buffer buffer, ffi::Array&lt; Range &gt; region)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#ab69960dbb5d7a0ecff4216e017427162">FromPoint</a>(Buffer buffer, ffi::Array&lt; PrimExpr &gt; indices)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</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_1BufferRegion.html#a3119a2ed42fd0090668e253a8332b9ad">FullRegion</a>(Buffer buffer)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</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_1BufferRegion.html#aa5166176fbae0ff730535c578f32629c">BufferRegion</a>(BufferVar buffer, ffi::Array&lt; Range &gt; region)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#a9289415741e373a3e5d18cde2bf9a8da">FromPoint</a>(BufferVar buffer, ffi::Array&lt; PrimExpr &gt; indices)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</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_1BufferRegion.html#a1dfe189ae7793af2ad418437d79328fe">FullRegion</a>(BufferVar buffer)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</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_1BufferRegion.html#afaffea0e223b8c37e9ff43265961da97">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(BufferRegionNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#a4c67c27428cef6719b3c59f2a4084c36">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(BufferRegion, PrimExprConvertible, BufferRegionNode)</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">tvm::tirx::BufferRegion</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1PrimExprConvertible.html#a0bad5536ab9ff5ab07a22e75c2c2102c">tvm::PrimExprConvertible::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a>(PrimExprConvertible, ffi::ObjectRef, PrimExprConvertibleNode)</td><td class="entry"><a class="el" href="classtvm_1_1PrimExprConvertible.html">tvm::PrimExprConvertible</a></td><td class="entry"></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegion.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegion.html
index 8ab55eaea51..afac21ffafb 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegion.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegion.html
@@ -98,8 +98,8 @@ Collaboration diagram for tvm::tirx::BufferRegion:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a98a01f894a6d9b3130fc7906e147338c" id="r_a98a01f894a6d9b3130fc7906e147338c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#a98a01f894a6d9b3130fc7906e147338c">BufferRegion</a> (<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> buffer, ffi::Array&lt; <a class="el" href="classtvm_1_1Range.html">Range</a> &gt; region)</td></tr>
-<tr class="separator:a98a01f894a6d9b3130fc7906e147338c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa5166176fbae0ff730535c578f32629c" id="r_aa5166176fbae0ff730535c578f32629c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#aa5166176fbae0ff730535c578f32629c">BufferRegion</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> buffer, ffi::Array&lt; <a class="el" href="classtvm_1_1Range.html">Range</a> &gt; region)</td></tr>
+<tr class="separator:aa5166176fbae0ff730535c578f32629c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4c67c27428cef6719b3c59f2a4084c36" id="r_a4c67c27428cef6719b3c59f2a4084c36"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#a4c67c27428cef6719b3c59f2a4084c36">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">BufferRegion</a>, <a class="el" href="classtvm_1_1PrimExprConvertible.html">PrimExprConvertibl [...]
 <tr class="separator:a4c67c27428cef6719b3c59f2a4084c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afaffea0e223b8c37e9ff43265961da97" id="r_afaffea0e223b8c37e9ff43265961da97"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#afaffea0e223b8c37e9ff43265961da97">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html">BufferRegionNode</a>)</td></tr>
@@ -110,19 +110,19 @@ Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a3119a2ed42fd0090668e253a8332b9ad" id="r_a3119a2ed42fd0090668e253a8332b9ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">BufferRegion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#a3119a2ed42fd0090668e253a8332b9ad">FullRegion</a> (<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buf [...]
-<tr class="memdesc:a3119a2ed42fd0090668e253a8332b9ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html" title="Managed reference to BufferRegionNode.">BufferRegion</a> which is full region of the given buffer.  <br /></td></tr>
-<tr class="separator:a3119a2ed42fd0090668e253a8332b9ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab69960dbb5d7a0ecff4216e017427162" id="r_ab69960dbb5d7a0ecff4216e017427162"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">BufferRegion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#ab69960dbb5d7a0ecff4216e017427162">FromPoint</a> (<a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buff [...]
-<tr class="memdesc:ab69960dbb5d7a0ecff4216e017427162"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html" title="Managed reference to BufferRegionNode.">BufferRegion</a> which is a single point of the given buffer.  <br /></td></tr>
-<tr class="separator:ab69960dbb5d7a0ecff4216e017427162"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1dfe189ae7793af2ad418437d79328fe" id="r_a1dfe189ae7793af2ad418437d79328fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">BufferRegion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#a1dfe189ae7793af2ad418437d79328fe">FullRegion</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html"> [...]
+<tr class="memdesc:a1dfe189ae7793af2ad418437d79328fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html" title="Managed reference to BufferRegionNode.">BufferRegion</a> which is full region of the given buffer.  <br /></td></tr>
+<tr class="separator:a1dfe189ae7793af2ad418437d79328fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9289415741e373a3e5d18cde2bf9a8da" id="r_a9289415741e373a3e5d18cde2bf9a8da"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">BufferRegion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html#a9289415741e373a3e5d18cde2bf9a8da">FromPoint</a> (<a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">B [...]
+<tr class="memdesc:a9289415741e373a3e5d18cde2bf9a8da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html" title="Managed reference to BufferRegionNode.">BufferRegion</a> which is a single point of the given buffer.  <br /></td></tr>
+<tr class="separator:a9289415741e373a3e5d18cde2bf9a8da"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html" title="Representing the region of multi-dimensional buffer access.">BufferRegionNode</a>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html" title="Representing the region of multi-dimensional buffer access.">BufferRegionNode</a> </dd></dl>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a98a01f894a6d9b3130fc7906e147338c" name="a98a01f894a6d9b3130fc7906e147338c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a98a01f894a6d9b3130fc7906e147338c">&#9670;&#160;</a></span>BufferRegion()</h2>
+<a id="aa5166176fbae0ff730535c578f32629c" name="aa5166176fbae0ff730535c578f32629c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa5166176fbae0ff730535c578f32629c">&#9670;&#160;</a></span>BufferRegion()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -133,7 +133,7 @@ Static Public Member Functions</h2></td></tr>
         <tr>
           <td class="memname">tvm::tirx::BufferRegion::BufferRegion </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td>
           <td class="paramname"><em>buffer</em>, </td>
         </tr>
         <tr>
@@ -158,8 +158,8 @@ Static Public Member Functions</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
-<a id="ab69960dbb5d7a0ecff4216e017427162" name="ab69960dbb5d7a0ecff4216e017427162"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab69960dbb5d7a0ecff4216e017427162">&#9670;&#160;</a></span>FromPoint()</h2>
+<a id="a9289415741e373a3e5d18cde2bf9a8da" name="a9289415741e373a3e5d18cde2bf9a8da"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9289415741e373a3e5d18cde2bf9a8da">&#9670;&#160;</a></span>FromPoint()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -170,7 +170,7 @@ Static Public Member Functions</h2></td></tr>
         <tr>
           <td class="memname"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">BufferRegion</a> tvm::tirx::BufferRegion::FromPoint </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td>
           <td class="paramname"><em>buffer</em>, </td>
         </tr>
         <tr>
@@ -204,8 +204,8 @@ Static Public Member Functions</h2></td></tr>
 
 </div>
 </div>
-<a id="a3119a2ed42fd0090668e253a8332b9ad" name="a3119a2ed42fd0090668e253a8332b9ad"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3119a2ed42fd0090668e253a8332b9ad">&#9670;&#160;</a></span>FullRegion()</h2>
+<a id="a1dfe189ae7793af2ad418437d79328fe" name="a1dfe189ae7793af2ad418437d79328fe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1dfe189ae7793af2ad418437d79328fe">&#9670;&#160;</a></span>FullRegion()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -216,7 +216,7 @@ Static Public Member Functions</h2></td></tr>
         <tr>
           <td class="memname"><a class="el" href="classtvm_1_1With.html">static</a> <a class="el" href="classtvm_1_1tirx_1_1BufferRegion.html">BufferRegion</a> tvm::tirx::BufferRegion::FullRegion </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td>
+          <td class="paramtype"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td>
           <td class="paramname"><em>buffer</em></td><td>)</td>
           <td></td>
         </tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode-members.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode-members.html
index 6a103c563f4..1d52f17445e 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode-members.html
@@ -80,7 +80,7 @@ $(function() {
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html">tvm::tirx::BufferRegionNode</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html#ab36fa42cfad4b168fcce3be95a6b01a4">_type_s_eq_hash_kind</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html">tvm::tirx::BufferRegionNode</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_1BufferRegionNode.html#ac1a868197496ce456e0b6fc58414c2b9">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html">tvm::tirx::BufferRegionNode</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html#adc3893874884b1f4c4c798623a0e2c54">buffer</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html">tvm::tirx::BufferRegionNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html#a1a22ee46690e95e125fded3ea24673bf">region</a></td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html">tvm::tirx::BufferRegionNode</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html#a6689b48115a9a1d20a999230ceaee390">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html">tvm::tirx::BufferRegionNode</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_1BufferRegionNode.html#a29c24ea5d6f117a9a6fc32c54c841a27">ToPrimExpr</a>() const final</td><td class="entry"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html">tvm::tirx::BufferRegionNode</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode.html b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode.html
index 954165fee0d..8f998e8a176 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode.html
@@ -95,7 +95,7 @@ Inheritance diagram for tvm::tirx::BufferRegionNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::tirx::BufferRegionNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1tirx_1_1BufferRegionNode__coll__graph.svg" width="416" height="594"><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_1BufferRegionNode__coll__graph.svg" width="438" height="1027"><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>
@@ -117,9 +117,9 @@ Static Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:ac1a868197496ce456e0b6fc58414c2b9" id="r_ac1a868197496ce456e0b6fc58414c2b9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html#ac1a868197496ce456e0b6fc58414c2b9">buffer</a></td></tr>
-<tr class="memdesc:ac1a868197496ce456e0b6fc58414c2b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer of the buffer region.  <br /></td></tr>
-<tr class="separator:ac1a868197496ce456e0b6fc58414c2b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc3893874884b1f4c4c798623a0e2c54" id="r_adc3893874884b1f4c4c798623a0e2c54"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html#adc3893874884b1f4c4c798623a0e2c54">buffer</a></td></tr>
+<tr class="memdesc:adc3893874884b1f4c4c798623a0e2c54"><td class="mdescLeft">&#160;</td><td class="mdescRight">The buffer of the buffer region.  <br /></td></tr>
+<tr class="separator:adc3893874884b1f4c4c798623a0e2c54"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1a22ee46690e95e125fded3ea24673bf" id="r_a1a22ee46690e95e125fded3ea24673bf"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1Range.html">Range</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1tirx_1_1BufferRegionNode.html#a1a22ee46690e95e125fded3ea24673bf">region</a></td></tr>
 <tr class="memdesc:a1a22ee46690e95e125fded3ea24673bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">The region array of the buffer region.  <br /></td></tr>
 <tr class="separator:a1a22ee46690e95e125fded3ea24673bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -241,14 +241,14 @@ Static Public Attributes</h2></td></tr>
 
 </div>
 </div>
-<a id="ac1a868197496ce456e0b6fc58414c2b9" name="ac1a868197496ce456e0b6fc58414c2b9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac1a868197496ce456e0b6fc58414c2b9">&#9670;&#160;</a></span>buffer</h2>
+<a id="adc3893874884b1f4c4c798623a0e2c54" name="adc3893874884b1f4c4c798623a0e2c54"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adc3893874884b1f4c4c798623a0e2c54">&#9670;&#160;</a></span>buffer</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1Buffer.html">Buffer</a> tvm::tirx::BufferRegionNode::buffer</td>
+          <td class="memname"><a class="el" href="classtvm_1_1tirx_1_1BufferVar.html">BufferVar</a> tvm::tirx::BufferRegionNode::buffer</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode__coll__graph.svg
index de131b92b8a..441f12ec769 100644
--- a/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1tirx_1_1BufferRegionNode__coll__graph.svg
@@ -4,31 +4,31 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::tirx::BufferRegionNode Pages: 1 -->
-<svg width="312pt" height="445pt"
- viewBox="0.00 0.00 311.50 445.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 441)">
+<svg width="328pt" height="770pt"
+ viewBox="0.00 0.00 327.50 770.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 766)">
 <title>tvm::tirx::BufferRegionNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Representing the region of multi&#45;dimensional buffer access.">
-<polygon fill="#999999" stroke="transparent" points="239.5,-105 83.5,-105 83.5,0 239.5,0 239.5,-105"/>
-<text text-anchor="start" x="93" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferRegionNode</text>
-<text text-anchor="start" x="87.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="100.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">region</text>
-<text text-anchor="start" x="87.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="100.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
-<text text-anchor="start" x="87.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="100.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">ToPrimExpr()</text>
-<text text-anchor="start" x="87.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="100.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="100.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="87.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="100.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="83.5,-87.5 83.5,-87.5 239.5,-87.5 239.5,-87.5 83.5,-87.5"/>
-<polygon fill="#666666" stroke="#666666" points="83.5,-57.5 83.5,-57.5 98.5,-57.5 98.5,-57.5 83.5,-57.5"/>
-<polygon fill="#666666" stroke="#666666" points="98.5,-57.5 98.5,-57.5 239.5,-57.5 239.5,-57.5 98.5,-57.5"/>
-<polygon fill="none" stroke="#666666" points="83.5,0 83.5,-105 239.5,-105 239.5,0 83.5,0"/>
+<polygon fill="#999999" stroke="transparent" points="236.5,-105 80.5,-105 80.5,0 236.5,0 236.5,-105"/>
+<text text-anchor="start" x="90" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::BufferRegionNode</text>
+<text text-anchor="start" x="84.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">region</text>
+<text text-anchor="start" x="84.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">_type_s_eq_hash_kind</text>
+<text text-anchor="start" x="84.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">ToPrimExpr()</text>
+<text text-anchor="start" x="84.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="97.5" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="84.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="97.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="80.5,-87.5 80.5,-87.5 236.5,-87.5 236.5,-87.5 80.5,-87.5"/>
+<polygon fill="#666666" stroke="#666666" points="80.5,-57.5 80.5,-57.5 95.5,-57.5 95.5,-57.5 80.5,-57.5"/>
+<polygon fill="#666666" stroke="#666666" points="95.5,-57.5 95.5,-57.5 236.5,-57.5 236.5,-57.5 95.5,-57.5"/>
+<polygon fill="none" stroke="#666666" points="80.5,0 80.5,-105 236.5,-105 236.5,0 80.5,0"/>
 </a>
 </g>
 </g>
@@ -36,19 +36,19 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1PrimExprConvertibleNode.html" target="_top" xlink:title="Base class for other IR constructs that can be converted to PrimExpr. This is useful for the FFI to c...">
-<polygon fill="white" stroke="transparent" points="163,-296.5 0,-296.5 0,-206.5 163,-206.5 163,-296.5"/>
-<text text-anchor="start" x="6" y="-284.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExprConvertibleNode</text>
-<text text-anchor="start" x="80" y="-269.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">~PrimExprConvertibleNode()</text>
-<text text-anchor="start" x="4.5" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00">ToPrimExpr()</text>
-<text text-anchor="start" x="4.5" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-279.5 0.5,-279.5 163.5,-279.5 163.5,-279.5 0.5,-279.5"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-264.5 0.5,-264.5 163.5,-264.5 163.5,-264.5 0.5,-264.5"/>
-<polygon fill="none" stroke="#666666" points="0,-206.5 0,-296.5 163,-296.5 163,-206.5 0,-206.5"/>
+<polygon fill="white" stroke="transparent" points="163,-309.5 0,-309.5 0,-219.5 163,-219.5 163,-309.5"/>
+<text text-anchor="start" x="6" y="-297.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrimExprConvertibleNode</text>
+<text text-anchor="start" x="80" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17.5" y="-267.5" font-family="Helvetica,sans-Serif" font-size="10.00">~PrimExprConvertibleNode()</text>
+<text text-anchor="start" x="4.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17.5" y="-252.5" font-family="Helvetica,sans-Serif" font-size="10.00">ToPrimExpr()</text>
+<text text-anchor="start" x="4.5" y="-237.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="17.5" y="-237.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="17.5" y="-226.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#666666" stroke="#666666" points="0.5,-292.5 0.5,-292.5 163.5,-292.5 163.5,-292.5 0.5,-292.5"/>
+<polygon fill="#666666" stroke="#666666" points="0.5,-277.5 0.5,-277.5 163.5,-277.5 163.5,-277.5 0.5,-277.5"/>
+<polygon fill="none" stroke="#666666" points="0,-219.5 0,-309.5 163,-309.5 163,-219.5 0,-219.5"/>
 </a>
 </g>
 </g>
@@ -56,8 +56,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="M103.27,-196.88C114.85,-168.36 129.03,-133.46 140.49,-105.24"/>
-<polygon fill="none" stroke="#63b8ff" points="99.97,-195.71 99.45,-206.29 106.46,-198.34 99.97,-195.71"/>
+<path fill="none" stroke="#63b8ff" d="M101.19,-209.8C112.97,-177.66 127.87,-137.03 139.53,-105.24"/>
+<polygon fill="none" stroke="#63b8ff" points="97.8,-208.88 97.64,-219.48 104.37,-211.29 97.8,-208.88"/>
 </a>
 </g>
... 41574 lines suppressed ...