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/10/10 16:13:21 UTC

(tvm-site) branch asf-site updated: deploying docs (apache/tvm@9059d9d25149c9ca7a015717b5023d1e2e1185fd)

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 0662f3fd571 deploying docs (apache/tvm@9059d9d25149c9ca7a015717b5023d1e2e1185fd)
0662f3fd571 is described below

commit 0662f3fd5717aebfd182febe4909deb7a90ac2b3
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Sat Oct 10 16:13:14 2026 +0000

    deploying docs (apache/tvm@9059d9d25149c9ca7a015717b5023d1e2e1185fd)
---
 .../import_model.zip                               |  Bin 35138 -> 35138 bytes
 .../dlight_gpu_scheduling.zip                      |  Bin 26305 -> 26305 bytes
 .../11c11e53c7dace51a8be968ee169ed0d/ir_module.zip |  Bin 23756 -> 23756 bytes
 .../tir_transformation.zip                         |  Bin 15988 -> 15988 bytes
 .../meta_schedule.zip                              |  Bin 24227 -> 24227 bytes
 .../mix_python_and_tvm_with_pymodule.zip           |  Bin 38284 -> 38284 bytes
 .../relax_creation.zip                             |  Bin 22449 -> 22449 bytes
 .../relax_transformation.zip                       |  Bin 11474 -> 11474 bytes
 .../optimize_llm.zip                               |  Bin 53997 -> 53997 bytes
 .../bring_your_own_codegen.zip                     |  Bin 36295 -> 36295 bytes
 .../e2e_opt_model.zip                              |  Bin 14473 -> 14473 bytes
 .../quick_start.zip                                |  Bin 16252 -> 16252 bytes
 .../export_and_load_executable.zip                 |  Bin 31408 -> 31408 bytes
 .../tir_creation.zip                               |  Bin 24464 -> 24464 bytes
 .../cross_compilation_and_rpc.zip                  |  Bin 62282 -> 62282 bytes
 .../customize_opt.zip                              |  Bin 20510 -> 20510 bytes
 .../deep_dive/relax/tutorials/relax_creation.rst   |   58 +-
 .../relax/tutorials/relax_transformation.rst       |   86 +-
 .../relax/tutorials/sg_execution_times.rst         |    6 +-
 .../tensor_ir/tutorials/dlight_gpu_scheduling.rst  |  116 +-
 .../tensor_ir/tutorials/sg_execution_times.rst     |   10 +-
 .../deep_dive/tensor_ir/tutorials/tir_creation.rst |   16 +-
 .../tensor_ir/tutorials/tir_transformation.rst     |   50 +-
 docs/_sources/get_started/tutorials/ir_module.rst  |   94 +-
 .../_sources/get_started/tutorials/quick_start.rst |    8 +-
 .../get_started/tutorials/sg_execution_times.rst   |    6 +-
 .../how_to/tutorials/cross_compilation_and_rpc.rst |    6 +-
 docs/_sources/how_to/tutorials/customize_opt.rst   |   28 +-
 docs/_sources/how_to/tutorials/e2e_opt_model.rst   |    2 +-
 .../how_to/tutorials/sg_execution_times.rst        |   16 +-
 docs/_sources/sg_execution_times.rst               |   32 +-
 docs/commit_hash                                   |    2 +-
 docs/deep_dive/relax/tutorials/relax_creation.html |   58 +-
 .../relax/tutorials/relax_transformation.html      |   86 +-
 .../relax/tutorials/sg_execution_times.html        |    6 +-
 .../tensor_ir/tutorials/dlight_gpu_scheduling.html |  116 +-
 .../tensor_ir/tutorials/sg_execution_times.html    |   10 +-
 .../tensor_ir/tutorials/tir_creation.html          |   16 +-
 .../tensor_ir/tutorials/tir_transformation.html    |   50 +-
 docs/get_started/tutorials/ir_module.html          |   94 +-
 docs/get_started/tutorials/quick_start.html        |    8 +-
 docs/get_started/tutorials/sg_execution_times.html |    6 +-
 .../tutorials/cross_compilation_and_rpc.html       |    6 +-
 docs/how_to/tutorials/customize_opt.html           |   28 +-
 docs/how_to/tutorials/e2e_opt_model.html           |    4 +-
 docs/how_to/tutorials/sg_execution_times.html      |   16 +-
 docs/reference/api/doxygen/annotated.html          |   41 +-
 docs/reference/api/doxygen/classes.html            |    4 +-
 .../classtvm_1_1script_1_1printer_1_1Doc.html      |    2 +-
 .../classtvm_1_1script_1_1printer_1_1DocNode.html  |    2 +-
 ...cript_1_1printer_1_1DocNode__inherit__graph.svg |  224 +-
 ...1_1script_1_1printer_1_1Doc__inherit__graph.svg |  178 +-
 ..._1_1script_1_1printer_1_1OpCallDoc-members.html |   95 -
 ...classtvm_1_1script_1_1printer_1_1OpCallDoc.html |  237 --
 ...script_1_1printer_1_1OpCallDocNode-members.html |  101 -
 ...stvm_1_1script_1_1printer_1_1OpCallDocNode.html |  309 --
 ...pt_1_1printer_1_1OpCallDocNode__coll__graph.svg |  211 --
 ...1_1printer_1_1OpCallDocNode__inherit__graph.svg |  128 -
 ...script_1_1printer_1_1OpCallDoc__coll__graph.svg |  111 -
 ...ipt_1_1printer_1_1OpCallDoc__inherit__graph.svg |  111 -
 .../classtvm_1_1script_1_1printer_1_1StmtDoc.html  |    2 +-
 ...asstvm_1_1script_1_1printer_1_1StmtDocNode.html |    2 +-
 ...t_1_1printer_1_1StmtDocNode__inherit__graph.svg |  278 +-
 ...cript_1_1printer_1_1StmtDoc__inherit__graph.svg |  222 +-
 docs/reference/api/doxygen/doc_8h.html             |    6 -
 docs/reference/api/doxygen/doc_8h_source.html      |  108 +-
 docs/reference/api/doxygen/functions_a.html        |    6 +-
 docs/reference/api/doxygen/functions_c.html        |   13 +-
 docs/reference/api/doxygen/functions_d.html        |    4 +-
 docs/reference/api/doxygen/functions_func_c.html   |    8 +-
 docs/reference/api/doxygen/functions_func_g.html   |    4 +-
 docs/reference/api/doxygen/functions_func_o.html   |    5 +-
 docs/reference/api/doxygen/functions_func_r.html   |    2 +-
 docs/reference/api/doxygen/functions_func_t.html   |    4 +-
 docs/reference/api/doxygen/functions_g.html        |    4 +-
 docs/reference/api/doxygen/functions_i.html        |    4 +-
 docs/reference/api/doxygen/functions_o.html        |   11 +-
 docs/reference/api/doxygen/functions_r.html        |    2 +-
 docs/reference/api/doxygen/functions_s.html        |    2 +-
 docs/reference/api/doxygen/functions_t.html        |   17 +-
 docs/reference/api/doxygen/functions_v.html        |    4 +-
 docs/reference/api/doxygen/functions_vars_a.html   |    2 +-
 docs/reference/api/doxygen/functions_vars_c.html   |    4 +-
 docs/reference/api/doxygen/functions_vars_d.html   |    1 -
 docs/reference/api/doxygen/functions_vars_w.html   |    1 -
 docs/reference/api/doxygen/functions_w.html        |    7 +-
 docs/reference/api/doxygen/hierarchy.html          |   17 +-
 docs/reference/api/doxygen/inherit_graph_14.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_23.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_24.svg    |    8 +-
 docs/reference/api/doxygen/inherit_graph_27.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_3.svg     | 3777 ++++++++++----------
 docs/reference/api/doxygen/inherit_graph_32.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_33.svg    |    4 +-
 docs/reference/api/doxygen/inherit_graph_4.svg     | 2039 ++++++-----
 docs/reference/api/doxygen/inherit_graph_5.svg     |   16 +-
 docs/reference/api/doxygen/inherit_graph_6.svg     |   24 +-
 docs/reference/api/doxygen/inherit_graph_7.svg     |   12 +-
 docs/reference/api/doxygen/inherit_graph_8.svg     |  141 +-
 docs/reference/api/doxygen/inherit_graph_90.svg    |    4 +-
 docs/reference/api/doxygen/inherits.html           |    4 +-
 docs/reference/api/doxygen/ir_2expr_8h.html        |    5 +
 docs/reference/api/doxygen/ir_2expr_8h_source.html |  230 +-
 docs/reference/api/doxygen/namespacemembers_e.html |    2 +-
 docs/reference/api/doxygen/namespacemembers_u.html |    1 +
 .../api/doxygen/namespacemembers_vars.html         |    1 +
 docs/reference/api/doxygen/namespaces.html         |   41 +-
 .../reference/api/doxygen/namespacetvm_1_1ffi.html |   29 +
 .../doxygen/namespacetvm_1_1script_1_1printer.html |    6 -
 docs/reference/api/doxygen/search/all_1.js         |   12 +-
 docs/reference/api/doxygen/search/all_10.js        |    2 +-
 docs/reference/api/doxygen/search/all_12.js        |    2 +-
 docs/reference/api/doxygen/search/all_13.js        |   12 +-
 docs/reference/api/doxygen/search/all_14.js        |   79 +-
 docs/reference/api/doxygen/search/all_15.js        |   15 +-
 docs/reference/api/doxygen/search/all_16.js        |    6 +-
 docs/reference/api/doxygen/search/all_17.js        |   17 +-
 docs/reference/api/doxygen/search/all_2.js         |    2 +-
 docs/reference/api/doxygen/search/all_3.js         |   68 +-
 docs/reference/api/doxygen/search/all_4.js         |   12 +-
 docs/reference/api/doxygen/search/all_5.js         |    4 +-
 docs/reference/api/doxygen/search/all_6.js         |    2 +-
 docs/reference/api/doxygen/search/all_7.js         |    2 +-
 docs/reference/api/doxygen/search/all_9.js         |    2 +-
 docs/reference/api/doxygen/search/all_b.js         |    2 +-
 docs/reference/api/doxygen/search/all_e.js         |    2 +-
 docs/reference/api/doxygen/search/all_f.js         |  146 +-
 docs/reference/api/doxygen/search/classes_11.js    |    9 +-
 docs/reference/api/doxygen/search/classes_c.js     |   24 +-
 docs/reference/api/doxygen/search/functions_11.js  |    2 +-
 docs/reference/api/doxygen/search/functions_12.js  |    4 +-
 docs/reference/api/doxygen/search/functions_13.js  |    6 +-
 docs/reference/api/doxygen/search/functions_15.js  |    2 +-
 docs/reference/api/doxygen/search/functions_16.js  |    2 +-
 docs/reference/api/doxygen/search/functions_2.js   |   10 +-
 docs/reference/api/doxygen/search/functions_4.js   |    2 +-
 docs/reference/api/doxygen/search/functions_6.js   |    2 +-
 docs/reference/api/doxygen/search/functions_d.js   |    2 +-
 docs/reference/api/doxygen/search/functions_e.js   |   85 +-
 docs/reference/api/doxygen/search/variables_1.js   |   14 +-
 docs/reference/api/doxygen/search/variables_14.js  |    3 +-
 docs/reference/api/doxygen/search/variables_16.js  |    3 +-
 docs/reference/api/doxygen/search/variables_3.js   |    4 +-
 docs/reference/api/doxygen/search/variables_4.js   |   25 +-
 docs/reference/api/doxygen/search/variables_a.js   |    2 +-
 ...1TypeTraits_3_01TensorRegion_01_4-members.html} |   27 +-
 ...1_1ffi_1_1TypeTraits_3_01TensorRegion_01_4.html |  136 +
 ...peTraits_3_01TensorRegion_01_4__coll__graph.svg |   52 +
 ...raits_3_01TensorRegion_01_4__inherit__graph.svg |   52 +
 docs/reference/api/python/script/script.html       |   11 +-
 .../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   |  120 +-
 docs/reference/api/typedoc/classes/LRUCache.html   |   14 +-
 .../classes/LinearCongruentialGenerator.html       |   20 +-
 docs/reference/api/typedoc/classes/Module.html     |   16 +-
 docs/reference/api/typedoc/classes/RPCServer.html  |   16 +-
 docs/reference/api/typedoc/classes/Scalar.html     |    8 +-
 docs/reference/api/typedoc/classes/TVMArray.html   |   16 +-
 docs/reference/api/typedoc/classes/TVMObject.html  |   12 +-
 docs/reference/api/typedoc/classes/Tensor.html     |   36 +-
 .../api/typedoc/classes/VirtualMachine.html        |   10 +-
 .../classes/_internal_.AsyncifyHandler.html        |   14 +-
 .../classes/_internal_.CachedCallStack.html        |   38 +-
 .../classes/_internal_.CanvasRenderManager.html    |   10 +-
 .../classes/_internal_.CrossOriginStorage.html     |   12 +-
 .../typedoc/classes/_internal_.Environment.html    |   14 +-
 .../api/typedoc/classes/_internal_.FFILibrary.html |   22 +-
 .../api/typedoc/classes/_internal_.Memory.html     |   50 +-
 .../api/typedoc/classes/_internal_.OPFSStore.html  |   16 +-
 .../typedoc/classes/_internal_.PackedFuncCell.html |   12 +-
 .../typedoc/classes/_internal_.RuntimeContext.html |   74 +-
 .../typedoc/classes/_internal_.WebGPUContext.html  |   30 +-
 .../enums/_internal_.AsyncifyStateKind.html        |    8 +-
 .../typedoc/enums/_internal_.RPCServerState.html   |   14 +-
 docs/reference/api/typedoc/functions/assert.html   |    2 +-
 .../api/typedoc/functions/createArtifactCache.html |    2 +-
 .../api/typedoc/functions/createPolyfillWASI.html  |    2 +-
 .../api/typedoc/functions/deleteTensorCache.html   |    4 +-
 .../api/typedoc/functions/detectGPUDevice.html     |    2 +-
 .../api/typedoc/functions/hasTensorInCache.html    |    4 +-
 .../api/typedoc/functions/instantiate.html         |    2 +-
 docs/reference/api/typedoc/functions/wasmPath.html |    2 +-
 .../typedoc/interfaces/ArtifactCacheTemplate.html  |   10 +-
 .../api/typedoc/interfaces/Disposable.html         |    4 +-
 .../interfaces/FetchTensorCacheOptions.html        |   12 +-
 .../typedoc/interfaces/GPUDeviceDetectOutput.html  |    8 +-
 .../api/typedoc/interfaces/InitProgressReport.html |    8 +-
 .../api/typedoc/interfaces/LibraryProvider.html    |    6 +-
 .../interfaces/TensorCacheAccessOptions.html       |   10 +-
 .../_internal_.CrossOriginHashDescriptor.html      |    6 +-
 .../_internal_.CrossOriginStorageAPI.html          |    4 +-
 ...al_.CrossOriginStorageGetFileHandleOptions.html |    6 +-
 .../_internal_.CrossOriginStorageHandle.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_.PackedCallFrame.html     |   16 +-
 .../interfaces/_internal_.TensorCacheEntry.html    |   14 +-
 .../interfaces/_internal_.TensorShardEntry.html    |   10 +-
 .../interfaces/_internal_.WasmByteArraySource.html |    8 +-
 .../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 +-
 229 files changed, 5238 insertions(+), 6476 deletions(-)

diff --git a/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip b/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip
index ec269ac1284..9d2ba9d0f9f 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 c8a79455d69..64290268454 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 104d110c75c..b328f6a7c92 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 29f4b2faddc..e8fa02f82e9 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 fc2db665762..6c32b460b41 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 8fce7de4ebb..a7a6c7efc74 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 c17a1719ab3..7fd1ba00287 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 030c2918f41..96081cb19d9 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 b9889c26809..d4c0e3569b1 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 4575fb356ba..25b62b4e231 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 aab62226aa4..7515197230e 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 14a8a8ec501..68d967bd778 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 32ecd6c6f20..73ab6d5caab 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 6d4d88e3831..256ed2a49e7 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 0615d2a31a0..f109bbc0a84 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 e9af8158c41..a76ce0504c3 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/relax_creation.rst b/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst
index 4203d0732c2..c270b97ff29 100644
--- a/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst
+++ b/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst
@@ -89,11 +89,11 @@ high-level Relax operators using TVMScript.
         @R.function
         def forward(data: R.Tensor((n, 784), dtype="float32"), w0: R.Tensor((128, 784), dtype="float32"), b0: R.Tensor((128,), dtype="float32"), w1: R.Tensor((10, 128), dtype="float32"), b1: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
             with R.dataflow():
-                lv: R.Tensor((784, 128), dtype="float32") = I.Call("relax.permute_dims", [w0], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 128), dtype="float32"))
+                lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0)
                 lv1: R.Tensor((n, 128), dtype="float32") = I.Call("relax.matmul", [data, lv], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 128), dtype="float32"))
                 lv0: R.Tensor((n, 128), dtype="float32") = R.add(lv1, b0, ty=R.Tensor((n, 128), dtype="float32"))
                 lv1_1: R.Tensor((n, 128), dtype="float32") = R.nn.relu(lv0)
-                lv4: R.Tensor((128, 10), dtype="float32") = I.Call("relax.permute_dims", [w1], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((128, 10), dtype="float32"))
+                lv4: R.Tensor((128, 10), dtype="float32") = R.permute_dims(w1)
                 lv5: R.Tensor((n, 10), dtype="float32") = I.Call("relax.matmul", [lv1_1, lv4], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 10), dtype="float32"))
                 lv2: R.Tensor((n, 10), dtype="float32") = R.add(lv5, b1, ty=R.Tensor((n, 10), dtype="float32"))
                 R.output(lv2)
@@ -175,18 +175,18 @@ TensorIR functions in Relax function.
                         with Ts.sblock("relu"):
                             v = Ts.axis.spatial(n, i, dtype="int64")
                             v_1 = Ts.axis.spatial(m, j, dtype="int64")
-                            Ts.reads(X[v, v_1])
-                            Ts.writes(Y[v, v_1])
+                            Ts.reads(X[v, v_1:v_1 + T.int64(1)])
+                            Ts.writes(Y[v, v_1:v_1 + T.int64(1)])
                             Y[v, v_1] = T.max(X[v, v_1], T.float32(0.0))
 
         @R.function
         def forward(data: R.Tensor((n, 784), dtype="float32"), w0: R.Tensor((128, 784), dtype="float32"), b0: R.Tensor((128,), dtype="float32"), w1: R.Tensor((10, 128), dtype="float32"), b1: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
             with R.dataflow():
-                lv: R.Tensor((784, 128), dtype="float32") = I.Call("relax.permute_dims", [w0], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 128), dtype="float32"))
+                lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0)
                 lv1: R.Tensor((n, 128), dtype="float32") = I.Call("relax.matmul", [data, lv], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 128), dtype="float32"))
                 lv0: R.Tensor((n, 128), dtype="float32") = R.add(lv1, b0, ty=R.Tensor((n, 128), dtype="float32"))
-                lv1_1 = R.call_tir(Module.relu, I.Tuple([lv0]), ty_args=[R.Tensor((n, 128), dtype="float32")])
-                lv4: R.Tensor((128, 10), dtype="float32") = I.Call("relax.permute_dims", [w1], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((128, 10), dtype="float32"))
+                lv1_1 = R.call_tir(Module.relu, (lv0,), ty_args=[R.Tensor((n, 128), dtype="float32")])
+                lv4: R.Tensor((128, 10), dtype="float32") = R.permute_dims(w1)
                 lv5: R.Tensor((n, 10), dtype="float32") = I.Call("relax.matmul", [lv1_1, lv4], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 10), dtype="float32"))
                 lv2: R.Tensor((n, 10), dtype="float32") = R.add(lv5, b1, ty=R.Tensor((n, 10), dtype="float32"))
                 R.output(lv2)
@@ -293,11 +293,11 @@ After we define the NNModule, we can export it to TVM IRModule via
         def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims: R.Tensor((784, 128), dtype="float32") = I.Call("relax.permute_dims", [fc1_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 128), dtype="float32"))
+                permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight)
                 matmul: R.Tensor((n, 128), dtype="float32") = I.Call("relax.matmul", [x, permute_dims], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 128), dtype="float32"))
                 add: R.Tensor((n, 128), dtype="float32") = R.add(matmul, fc1_bias, ty=R.Tensor((n, 128), dtype="float32"))
                 relu: R.Tensor((n, 128), dtype="float32") = R.nn.relu(add)
-                permute_dims1: R.Tensor((128, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((128, 10), dtype="float32"))
+                permute_dims1: R.Tensor((128, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 matmul1: R.Tensor((n, 10), dtype="float32") = I.Call("relax.matmul", [relu, permute_dims1], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 10), dtype="float32"))
                 add1: R.Tensor((n, 10), dtype="float32") = R.add(matmul1, fc2_bias, ty=R.Tensor((n, 10), dtype="float32"))
                 gv: R.Tensor((n, 10), dtype="float32") = add1
@@ -406,8 +406,8 @@ Tensor Expression(TE), TensorIR functions or other TVM packed functions.
                         with Ts.sblock("compute"):
                             v_i0 = Ts.axis.spatial(n, i0, dtype="int64")
                             v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype="int64")
-                            Ts.reads(env_linear[v_i0, v_i1])
-                            Ts.writes(compute[v_i0, v_i1])
+                            Ts.reads(env_linear[v_i0, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(compute[v_i0, v_i1:v_i1 + T.int64(1)])
                             compute[v_i0, v_i1] = T.max(env_linear[v_i0, v_i1], T.float32(0.0))
 
         @Ts.function
@@ -422,8 +422,8 @@ Tensor Expression(TE), TensorIR functions or other TVM packed functions.
                                 v = Ts.axis.spatial(M, i, dtype="int64")
                                 v_1 = Ts.axis.spatial(N, j, dtype="int64")
                                 v_2 = Ts.axis.reduce(K, k, dtype="int64")
-                                Ts.reads(X[v, v_2], W[v_1, v_2])
-                                Ts.writes(Z[v, v_1])
+                                Ts.reads(X[v, v_2:v_2 + T.int64(1)], W[v_1, v_2:v_2 + T.int64(1)])
+                                Ts.writes(Z[v, v_1:v_1 + T.int64(1)])
                                 with Ts.init():
                                     Z[v, v_1] = T.float32(0.0)
                                 Z[v, v_1] = Z[v, v_1] + X[v, v_2] * W[v_1, v_2]
@@ -432,17 +432,17 @@ Tensor Expression(TE), TensorIR functions or other TVM packed functions.
                         with Ts.sblock("add"):
                             v_3 = Ts.axis.spatial(M, i_1, dtype="int64")
                             v_4 = Ts.axis.spatial(N, j_1, dtype="int64")
-                            Ts.reads(Z[v_3, v_4], B[v_4])
-                            Ts.writes(Z[v_3, v_4])
+                            Ts.reads(Z[v_3, v_4:v_4 + T.int64(1)], B[v_4:v_4 + T.int64(1)])
+                            Ts.writes(Z[v_3, v_4:v_4 + T.int64(1)])
                             Z[v_3, v_4] = Z[v_3, v_4] + B[v_4]
 
         @R.function
         def forward(x: R.Tensor((n_1, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n_1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                env_linear = R.call_dps_packed("env.linear", I.Tuple([x, fc1_weight, fc1_bias]), ty_args=[R.Tensor((n_1, 128), dtype="float32")])
-                lv = R.call_tir(Module.relu, I.Tuple([env_linear]), ty_args=[R.Tensor((n_1, 128), dtype="float32")])
-                lv1 = R.call_tir(Module.tir_linear, I.Tuple([lv, fc2_weight, fc2_bias]), ty_args=[R.Tensor((n_1, 10), dtype="float32")])
+                env_linear = R.call_dps_packed("env.linear", (x, fc1_weight, fc1_bias), ty_args=[R.Tensor((n_1, 128), dtype="float32")])
+                lv = R.call_tir(Module.relu, (env_linear,), ty_args=[R.Tensor((n_1, 128), dtype="float32")])
+                lv1 = R.call_tir(Module.tir_linear, (lv, fc2_weight, fc2_bias), ty_args=[R.Tensor((n_1, 10), dtype="float32")])
                 gv: R.Tensor((n_1, 10), dtype="float32") = lv1
                 R.output(gv)
             return gv
@@ -502,11 +502,11 @@ customized pass.
         @R.function
         def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
             with R.dataflow():
-                lv: R.Tensor((784, 128), dtype="float32") = I.Call("relax.permute_dims", [fc1_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 128), dtype="float32"))
+                lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight)
                 lv1: R.Tensor((n, 128), dtype="float32") = I.Call("relax.matmul", [x, lv], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 128), dtype="float32"))
                 lv2: R.Tensor((n, 128), dtype="float32") = R.add(lv1, fc1_bias, ty=R.Tensor((n, 128), dtype="float32"))
                 lv3: R.Tensor((n, 128), dtype="float32") = R.nn.relu(lv2)
-                lv4: R.Tensor((128, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((128, 10), dtype="float32"))
+                lv4: R.Tensor((128, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 lv5: R.Tensor((n, 10), dtype="float32") = I.Call("relax.matmul", [lv3, lv4], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 10), dtype="float32"))
                 lv6: R.Tensor((n, 10), dtype="float32") = R.add(lv5, fc2_bias, ty=R.Tensor((n, 10), dtype="float32"))
                 gv: R.Tensor((n, 10), dtype="float32") = lv6
@@ -584,8 +584,8 @@ Relax functions, TensorIR functions and other TVM packed functions.
                         with Ts.sblock("compute"):
                             v_i0 = Ts.axis.spatial(n, i0, dtype="int64")
                             v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype="int64")
-                            Ts.reads(lv[v_i0, v_i1])
-                            Ts.writes(compute[v_i0, v_i1])
+                            Ts.reads(lv[v_i0, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(compute[v_i0, v_i1:v_i1 + T.int64(1)])
                             compute[v_i0, v_i1] = T.max(lv[v_i0, v_i1], T.float32(0.0))
 
         @Ts.function
@@ -600,8 +600,8 @@ Relax functions, TensorIR functions and other TVM packed functions.
                                 v = Ts.axis.spatial(M, i, dtype="int64")
                                 v_1 = Ts.axis.spatial(N, j, dtype="int64")
                                 v_2 = Ts.axis.reduce(K, k, dtype="int64")
-                                Ts.reads(X[v, v_2], W[v_1, v_2])
-                                Ts.writes(Z[v, v_1])
+                                Ts.reads(X[v, v_2:v_2 + T.int64(1)], W[v_1, v_2:v_2 + T.int64(1)])
+                                Ts.writes(Z[v, v_1:v_1 + T.int64(1)])
                                 with Ts.init():
                                     Z[v, v_1] = T.float32(0.0)
                                 Z[v, v_1] = Z[v, v_1] + X[v, v_2] * W[v_1, v_2]
@@ -610,16 +610,16 @@ Relax functions, TensorIR functions and other TVM packed functions.
                         with Ts.sblock("add"):
                             v_3 = Ts.axis.spatial(M, i_1, dtype="int64")
                             v_4 = Ts.axis.spatial(N, j_1, dtype="int64")
-                            Ts.reads(Z[v_3, v_4], B[v_4])
-                            Ts.writes(Z[v_3, v_4])
+                            Ts.reads(Z[v_3, v_4:v_4 + T.int64(1)], B[v_4:v_4 + T.int64(1)])
+                            Ts.writes(Z[v_3, v_4:v_4 + T.int64(1)])
                             Z[v_3, v_4] = Z[v_3, v_4] + B[v_4]
 
         @R.function
         def forward(x: R.Tensor((n_1, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n_1, 10), dtype="float32"):
             with R.dataflow():
-                lv = R.call_dps_packed("env.linear", I.Tuple([x, fc1_weight, fc1_bias]), ty_args=[R.Tensor((n_1, 128), dtype="float32")])
-                lv1 = R.call_tir(Module.relu, I.Tuple([lv]), ty_args=[R.Tensor((n_1, 128), dtype="float32")])
-                lv2 = R.call_tir(Module.tir_linear, I.Tuple([lv1, fc2_weight, fc2_bias]), ty_args=[R.Tensor((n_1, 10), dtype="float32")])
+                lv = R.call_dps_packed("env.linear", (x, fc1_weight, fc1_bias), ty_args=[R.Tensor((n_1, 128), dtype="float32")])
+                lv1 = R.call_tir(Module.relu, (lv,), ty_args=[R.Tensor((n_1, 128), dtype="float32")])
+                lv2 = R.call_tir(Module.tir_linear, (lv1, fc2_weight, fc2_bias), ty_args=[R.Tensor((n_1, 10), dtype="float32")])
                 gv: R.Tensor((n_1, 10), dtype="float32") = lv2
                 R.output(gv)
             return lv2
diff --git a/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst b/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst
index e4adbdc5bdb..65fef19c9f2 100644
--- a/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst
+++ b/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst
@@ -78,11 +78,11 @@ the :ref:`previous section <relax-creation>`.
         def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims: R.Tensor((784, 128), dtype="float32") = I.Call("relax.permute_dims", [fc1_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 128), dtype="float32"))
+                permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight)
                 matmul: R.Tensor((n, 128), dtype="float32") = I.Call("relax.matmul", [x, permute_dims], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 128), dtype="float32"))
                 add: R.Tensor((n, 128), dtype="float32") = R.add(matmul, fc1_bias, ty=R.Tensor((n, 128), dtype="float32"))
                 relu: R.Tensor((n, 128), dtype="float32") = R.nn.relu(add)
-                permute_dims1: R.Tensor((128, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((128, 10), dtype="float32"))
+                permute_dims1: R.Tensor((128, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 matmul1: R.Tensor((n, 10), dtype="float32") = I.Call("relax.matmul", [relu, permute_dims1], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 10), dtype="float32"))
                 add1: R.Tensor((n, 10), dtype="float32") = R.add(matmul1, fc2_bias, ty=R.Tensor((n, 10), dtype="float32"))
                 gv: R.Tensor((n, 10), dtype="float32") = add1
@@ -144,8 +144,8 @@ into low-level operators.
                         with Ts.sblock("T_add"):
                             v_ax0 = Ts.axis.spatial(n, ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(128), ax1, dtype="int64")
-                            Ts.reads(matmul[v_ax0, v_ax1], fc1_bias[v_ax1])
-                            Ts.writes(T_add[v_ax0, v_ax1])
+                            Ts.reads(matmul[v_ax0, v_ax1:v_ax1 + T.int64(1)], fc1_bias[v_ax1:v_ax1 + T.int64(1)])
+                            Ts.writes(T_add[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_add[v_ax0, v_ax1] = matmul[v_ax0, v_ax1] + fc1_bias[v_ax1]
 
         @Ts.function(private=True)
@@ -159,8 +159,8 @@ into low-level operators.
                         with Ts.sblock("T_add"):
                             v_ax0 = Ts.axis.spatial(n_1, ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype="int64")
-                            Ts.reads(matmul1[v_ax0, v_ax1], fc2_bias[v_ax1])
-                            Ts.writes(T_add[v_ax0, v_ax1])
+                            Ts.reads(matmul1[v_ax0, v_ax1:v_ax1 + T.int64(1)], fc2_bias[v_ax1:v_ax1 + T.int64(1)])
+                            Ts.writes(T_add[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_add[v_ax0, v_ax1] = matmul1[v_ax0, v_ax1] + fc2_bias[v_ax1]
 
         @Ts.function(private=True)
@@ -176,8 +176,8 @@ into low-level operators.
                                 v_i0 = Ts.axis.spatial(n_2, i0, dtype="int64")
                                 v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype="int64")
                                 v_k = Ts.axis.reduce(T.int64(784), k, dtype="int64")
-                                Ts.reads(x[v_i0, v_k], permute_dims[v_k, v_i1])
-                                Ts.writes(matmul[v_i0, v_i1])
+                                Ts.reads(x[v_i0, v_k:v_k + T.int64(1)], permute_dims[v_k, v_i1:v_i1 + T.int64(1)])
+                                Ts.writes(matmul[v_i0, v_i1:v_i1 + T.int64(1)])
                                 with Ts.init():
                                     matmul[v_i0, v_i1] = T.float32(0.0)
                                 matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + x[v_i0, v_k] * permute_dims[v_k, v_i1]
@@ -195,8 +195,8 @@ into low-level operators.
                                 v_i0 = Ts.axis.spatial(n_3, i0, dtype="int64")
                                 v_i1 = Ts.axis.spatial(T.int64(10), i1, dtype="int64")
                                 v_k = Ts.axis.reduce(T.int64(128), k, dtype="int64")
-                                Ts.reads(relu[v_i0, v_k], permute_dims1[v_k, v_i1])
-                                Ts.writes(matmul[v_i0, v_i1])
+                                Ts.reads(relu[v_i0, v_k:v_k + T.int64(1)], permute_dims1[v_k, v_i1:v_i1 + T.int64(1)])
+                                Ts.writes(matmul[v_i0, v_i1:v_i1 + T.int64(1)])
                                 with Ts.init():
                                     matmul[v_i0, v_i1] = T.float32(0.0)
                                 matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + relu[v_i0, v_k] * permute_dims1[v_k, v_i1]
@@ -212,8 +212,8 @@ into low-level operators.
                         with Ts.sblock("compute"):
                             v_i0 = Ts.axis.spatial(n_4, i0, dtype="int64")
                             v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype="int64")
-                            Ts.reads(add[v_i0, v_i1])
-                            Ts.writes(compute[v_i0, v_i1])
+                            Ts.reads(add[v_i0, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(compute[v_i0, v_i1:v_i1 + T.int64(1)])
                             compute[v_i0, v_i1] = T.max(add[v_i0, v_i1], T.float32(0.0))
 
         @Ts.function(private=True)
@@ -227,8 +227,8 @@ into low-level operators.
                         with Ts.sblock("T_transpose"):
                             v_ax0 = Ts.axis.spatial(T.int64(784), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(128), ax1, dtype="int64")
-                            Ts.reads(fc1_weight[v_ax1, v_ax0])
-                            Ts.writes(T_transpose[v_ax0, v_ax1])
+                            Ts.reads(fc1_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                            Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_transpose[v_ax0, v_ax1] = fc1_weight[v_ax1, v_ax0]
 
         @Ts.function(private=True)
@@ -242,21 +242,21 @@ into low-level operators.
                         with Ts.sblock("T_transpose"):
                             v_ax0 = Ts.axis.spatial(T.int64(128), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype="int64")
-                            Ts.reads(fc2_weight[v_ax1, v_ax0])
-                            Ts.writes(T_transpose[v_ax0, v_ax1])
+                            Ts.reads(fc2_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                            Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_transpose[v_ax0, v_ax1] = fc2_weight[v_ax1, v_ax0]
 
         @R.function
         def forward(x: R.Tensor((n_5, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n_5, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims = R.call_tir(Module.transpose, I.Tuple([fc1_weight]), ty_args=[R.Tensor((784, 128), dtype="float32")])
-                matmul = R.call_tir(Module.matmul, I.Tuple([x, permute_dims]), ty_args=[R.Tensor((n_5, 128), dtype="float32")])
-                add = R.call_tir(Module.add, I.Tuple([matmul, fc1_bias]), ty_args=[R.Tensor((n_5, 128), dtype="float32")])
-                relu = R.call_tir(Module.relu, I.Tuple([add]), ty_args=[R.Tensor((n_5, 128), dtype="float32")])
-                permute_dims1 = R.call_tir(Module.transpose1, I.Tuple([fc2_weight]), ty_args=[R.Tensor((128, 10), dtype="float32")])
-                matmul1 = R.call_tir(Module.matmul1, I.Tuple([relu, permute_dims1]), ty_args=[R.Tensor((n_5, 10), dtype="float32")])
-                add1 = R.call_tir(Module.add1, I.Tuple([matmul1, fc2_bias]), ty_args=[R.Tensor((n_5, 10), dtype="float32")])
+                permute_dims = R.call_tir(Module.transpose, (fc1_weight,), ty_args=[R.Tensor((784, 128), dtype="float32")])
+                matmul = R.call_tir(Module.matmul, (x, permute_dims), ty_args=[R.Tensor((n_5, 128), dtype="float32")])
+                add = R.call_tir(Module.add, (matmul, fc1_bias), ty_args=[R.Tensor((n_5, 128), dtype="float32")])
+                relu = R.call_tir(Module.relu, (add,), ty_args=[R.Tensor((n_5, 128), dtype="float32")])
+                permute_dims1 = R.call_tir(Module.transpose1, (fc2_weight,), ty_args=[R.Tensor((128, 10), dtype="float32")])
+                matmul1 = R.call_tir(Module.matmul1, (relu, permute_dims1), ty_args=[R.Tensor((n_5, 10), dtype="float32")])
+                add1 = R.call_tir(Module.add1, (matmul1, fc2_bias), ty_args=[R.Tensor((n_5, 10), dtype="float32")])
                 gv: R.Tensor((n_5, 10), dtype="float32") = add1
                 R.output(gv)
             return gv
@@ -322,8 +322,8 @@ a set of passes. We can apply them in a sequence.
                                 v_i0 = Ts.axis.spatial(n, i0, dtype="int64")
                                 v_i1 = Ts.axis.spatial(T.int64(10), i1, dtype="int64")
                                 v_k = Ts.axis.reduce(T.int64(128), k, dtype="int64")
-                                Ts.reads(relu[v_i0, v_k], permute_dims1[v_k, v_i1])
-                                Ts.writes(matmul_intermediate[v_i0, v_i1])
+                                Ts.reads(relu[v_i0, v_k:v_k + T.int64(1)], permute_dims1[v_k, v_i1:v_i1 + T.int64(1)])
+                                Ts.writes(matmul_intermediate[v_i0, v_i1:v_i1 + T.int64(1)])
                                 with Ts.init():
                                     matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
                                 matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + relu[v_i0, v_k] * permute_dims1[v_k, v_i1]
@@ -332,8 +332,8 @@ a set of passes. We can apply them in a sequence.
                         with Ts.sblock("T_add"):
                             v_ax0 = Ts.axis.spatial(n, ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype="int64")
-                            Ts.reads(matmul_intermediate[v_ax0, v_ax1], fc2_bias[v_ax1])
-                            Ts.writes(T_add_intermediate[v_ax0, v_ax1])
+                            Ts.reads(matmul_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)], fc2_bias[v_ax1:v_ax1 + T.int64(1)])
+                            Ts.writes(T_add_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_add_intermediate[v_ax0, v_ax1] = matmul_intermediate[v_ax0, v_ax1] + fc2_bias[v_ax1]
 
         @Ts.function(private=True)
@@ -351,8 +351,8 @@ a set of passes. We can apply them in a sequence.
                                 v_i0 = Ts.axis.spatial(n_1, i0, dtype="int64")
                                 v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype="int64")
                                 v_k = Ts.axis.reduce(T.int64(784), k, dtype="int64")
-                                Ts.reads(x[v_i0, v_k], permute_dims[v_k, v_i1])
-                                Ts.writes(matmul_intermediate[v_i0, v_i1])
+                                Ts.reads(x[v_i0, v_k:v_k + T.int64(1)], permute_dims[v_k, v_i1:v_i1 + T.int64(1)])
+                                Ts.writes(matmul_intermediate[v_i0, v_i1:v_i1 + T.int64(1)])
                                 with Ts.init():
                                     matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
                                 matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + x[v_i0, v_k] * permute_dims[v_k, v_i1]
@@ -361,16 +361,16 @@ a set of passes. We can apply them in a sequence.
                         with Ts.sblock("T_add"):
                             v_ax0 = Ts.axis.spatial(n_1, ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(128), ax1, dtype="int64")
-                            Ts.reads(matmul_intermediate[v_ax0, v_ax1], fc1_bias[v_ax1])
-                            Ts.writes(T_add_intermediate[v_ax0, v_ax1])
+                            Ts.reads(matmul_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)], fc1_bias[v_ax1:v_ax1 + T.int64(1)])
+                            Ts.writes(T_add_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_add_intermediate[v_ax0, v_ax1] = matmul_intermediate[v_ax0, v_ax1] + fc1_bias[v_ax1]
                 for i0_1 in range(T.int64(0), n_1):
                     for i1_1 in range(T.int64(0), T.int64(128)):
                         with Ts.sblock("compute"):
                             v_i0_1 = Ts.axis.spatial(n_1, i0_1, dtype="int64")
                             v_i1_1 = Ts.axis.spatial(T.int64(128), i1_1, dtype="int64")
-                            Ts.reads(T_add_intermediate[v_i0_1, v_i1_1])
-                            Ts.writes(compute_intermediate[v_i0_1, v_i1_1])
+                            Ts.reads(T_add_intermediate[v_i0_1, v_i1_1:v_i1_1 + T.int64(1)])
+                            Ts.writes(compute_intermediate[v_i0_1, v_i1_1:v_i1_1 + T.int64(1)])
                             compute_intermediate[v_i0_1, v_i1_1] = T.max(T_add_intermediate[v_i0_1, v_i1_1], T.float32(0.0))
 
         @Ts.function(private=True)
@@ -384,8 +384,8 @@ a set of passes. We can apply them in a sequence.
                         with Ts.sblock("T_transpose"):
                             v_ax0 = Ts.axis.spatial(T.int64(784), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(128), ax1, dtype="int64")
-                            Ts.reads(fc1_weight[v_ax1, v_ax0])
-                            Ts.writes(T_transpose[v_ax0, v_ax1])
+                            Ts.reads(fc1_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                            Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_transpose[v_ax0, v_ax1] = fc1_weight[v_ax1, v_ax0]
 
         @Ts.function(private=True)
@@ -399,18 +399,18 @@ a set of passes. We can apply them in a sequence.
                         with Ts.sblock("T_transpose"):
                             v_ax0 = Ts.axis.spatial(T.int64(128), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype="int64")
-                            Ts.reads(fc2_weight[v_ax1, v_ax0])
-                            Ts.writes(T_transpose[v_ax0, v_ax1])
+                            Ts.reads(fc2_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                            Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_transpose[v_ax0, v_ax1] = fc2_weight[v_ax1, v_ax0]
 
         @R.function
         def forward(x: R.Tensor((n_2, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n_2, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims = R.call_tir(Module.transpose, I.Tuple([fc1_weight]), ty_args=[R.Tensor((784, 128), dtype="float32")])
-                lv = R.call_tir(Module.fused_matmul_add_relu, I.Tuple([x, permute_dims, fc1_bias]), ty_args=[R.Tensor((n_2, 128), dtype="float32")])
-                permute_dims1 = R.call_tir(Module.transpose1, I.Tuple([fc2_weight]), ty_args=[R.Tensor((128, 10), dtype="float32")])
-                gv = R.call_tir(Module.fused_matmul1_add1, I.Tuple([lv, permute_dims1, fc2_bias]), ty_args=[R.Tensor((n_2, 10), dtype="float32")])
+                permute_dims = R.call_tir(Module.transpose, (fc1_weight,), ty_args=[R.Tensor((784, 128), dtype="float32")])
+                lv = R.call_tir(Module.fused_matmul_add_relu, (x, permute_dims, fc1_bias), ty_args=[R.Tensor((n_2, 128), dtype="float32")])
+                permute_dims1 = R.call_tir(Module.transpose1, (fc2_weight,), ty_args=[R.Tensor((128, 10), dtype="float32")])
+                gv = R.call_tir(Module.fused_matmul1_add1, (lv, permute_dims1, fc2_bias), ty_args=[R.Tensor((n_2, 10), dtype="float32")])
                 R.output(gv)
             return gv
 
@@ -505,11 +505,11 @@ Then we can write a pass to apply the mutator to the whole module.
         def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims: R.Tensor((784, 128), dtype="float32") = I.Call("relax.permute_dims", [fc1_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 128), dtype="float32"))
+                permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight)
                 matmul: R.Tensor((n, 128), dtype="float32") = I.Call("relax.matmul", [x, permute_dims], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 128), dtype="float32"))
                 add: R.Tensor((n, 128), dtype="float32") = R.add(matmul, fc1_bias, ty=R.Tensor((n, 128), dtype="float32"))
                 relu: R.Tensor((n, 128), dtype="float32") = R.nn.gelu(add)
-                permute_dims1: R.Tensor((128, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((128, 10), dtype="float32"))
+                permute_dims1: R.Tensor((128, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 matmul1: R.Tensor((n, 10), dtype="float32") = I.Call("relax.matmul", [relu, permute_dims1], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((n, 10), dtype="float32"))
                 add1: R.Tensor((n, 10), dtype="float32") = R.add(matmul1, fc2_bias, ty=R.Tensor((n, 10), dtype="float32"))
                 gv: R.Tensor((n, 10), dtype="float32") = add1
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 2d723d06a38..9a1e76fab0d 100644
--- a/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
+++ b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:00.222** total execution time for 2 files **from deep_dive/relax/tutorials**:
+**00:00.177** 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.119
+     - 00:00.095
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``relax_transformation.py``)
-     - 00:00.103
+     - 00:00.083
      - 0.0
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.rst
index 7b8c4e74bef..6a55f71770b 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.rst
@@ -192,7 +192,7 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                                 vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                 v0 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype="int64")
                                 Ts.reads()
-                                Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0])
+                                Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                                 matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                             for ax1_fused_0 in range(T.int64(0), T.int64(48)):
                                 for u in range(1):
@@ -200,16 +200,16 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                                         vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                         v0_1 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype="int64")
                                         vax1_fused_0 = Ts.axis.reduce(T.int64(48), ax1_fused_0, dtype="int64")
-                                        Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1], layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                        Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                        Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                        Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                         matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                     for ax1_fused in T.thread_binding(T.int64(16), thread="threadIdx.x"):
                         for ax0 in T.thread_binding(T.int64(16), thread="threadIdx.y"):
                             with Ts.sblock("matmul"):
                                 vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype="int64")
                                 v0_2 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax1_fused, dtype="int64")
-                                Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                                Ts.writes(matmul_intermediate_local[T.int64(0), v0_2])
+                                Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                                Ts.writes(matmul_intermediate_local[T.int64(0), v0_2:v0_2 + T.int64(1)])
                                 with Ts.init():
                                     matmul_intermediate_local[T.int64(0), v0_2] = T.float32(0.0)
                                 matmul_intermediate_local[T.int64(0), v0_2] = matmul_intermediate_local[T.int64(0), v0_2] + matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -217,8 +217,8 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                         for ax0_fused_1_1 in range(T.int64(0), T.int64(1)):
                             with Ts.sblock("T_add"):
                                 v0_3 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_0_1 + ax0_fused_1_1, dtype="int64")
-                                Ts.reads(matmul_intermediate_local[T.int64(0), v0_3], fc2_bias[v0_3])
-                                Ts.writes(T_add_intermediate[T.int64(0), v0_3])
+                                Ts.reads(matmul_intermediate_local[T.int64(0), v0_3:v0_3 + T.int64(1)], fc2_bias[v0_3:v0_3 + T.int64(1)])
+                                Ts.writes(T_add_intermediate[T.int64(0), v0_3:v0_3 + T.int64(1)])
                                 T_add_intermediate[T.int64(0), v0_3] = matmul_intermediate_local[T.int64(0), v0_3] + fc2_bias[v0_3]
 
         @Ts.function(private=True)
@@ -236,7 +236,7 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                                 vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                 v0 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype="int64")
                                 Ts.reads()
-                                Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0])
+                                Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                                 matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                             for ax1_fused_0 in range(T.int64(0), T.int64(48)):
                                 for u in range(1):
@@ -244,16 +244,16 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                                         vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                         v0_1 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype="int64")
                                         vax1_fused_0 = Ts.axis.reduce(T.int64(48), ax1_fused_0, dtype="int64")
-                                        Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1], x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                        Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                        Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                        Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                         matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                     for ax1_fused in T.thread_binding(T.int64(16), thread="threadIdx.x"):
                         for ax0 in T.thread_binding(T.int64(16), thread="threadIdx.y"):
                             with Ts.sblock("matmul"):
                                 vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype="int64")
                                 v0_2 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax1_fused, dtype="int64")
-                                Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                                Ts.writes(matmul_intermediate_local[T.int64(0), v0_2])
+                                Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                                Ts.writes(matmul_intermediate_local[T.int64(0), v0_2:v0_2 + T.int64(1)])
                                 with Ts.init():
                                     matmul_intermediate_local[T.int64(0), v0_2] = T.float32(0.0)
                                 matmul_intermediate_local[T.int64(0), v0_2] = matmul_intermediate_local[T.int64(0), v0_2] + matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -261,8 +261,8 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                         for ax0_fused_1_1 in range(T.int64(0), T.int64(1)):
                             with Ts.sblock("compute"):
                                 v0_3 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_0_1 + ax0_fused_1_1, dtype="int64")
-                                Ts.reads(matmul_intermediate_local[T.int64(0), v0_3], fc1_bias[v0_3])
-                                Ts.writes(compute_intermediate[T.int64(0), v0_3])
+                                Ts.reads(matmul_intermediate_local[T.int64(0), v0_3:v0_3 + T.int64(1)], fc1_bias[v0_3:v0_3 + T.int64(1)])
+                                Ts.writes(compute_intermediate[T.int64(0), v0_3:v0_3 + T.int64(1)])
                                 compute_intermediate[T.int64(0), v0_3] = T.max(matmul_intermediate_local[T.int64(0), v0_3] + fc1_bias[v0_3], T.float32(0.0))
 
         @Ts.function(private=True)
@@ -280,8 +280,8 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                                 with Ts.sblock("relu_sum"):
                                     v0 = Ts.axis.spatial(T.int64(1), ax0, dtype="int64")
                                     v1 = Ts.axis.reduce(T.int64(768), ax1_fused_0 * T.int64(256) + ax1_fused_1, dtype="int64")
-                                    Ts.reads(relu[T.int64(0), v1])
-                                    Ts.writes(relu_sum_shared[T.int64(0)])
+                                    Ts.reads(relu[T.int64(0), v1:v1 + T.int64(1)])
+                                    Ts.writes(relu_sum_shared[T.int64(0):T.int64(1)])
                                     with Ts.init():
                                         relu_sum_shared[T.int64(0)] = T.float32(0.0)
                                     relu_sum_shared[T.int64(0)] = relu_sum_shared[T.int64(0)] + relu[T.int64(0), v1]
@@ -291,8 +291,8 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                                 with Ts.sblock("relu_var_sum"):
                                     v0_1 = Ts.axis.spatial(T.int64(1), ax0_1, dtype="int64")
                                     v1_1 = Ts.axis.reduce(T.int64(768), ax1_fused_0_1 * T.int64(256) + ax1_fused_1_1, dtype="int64")
-                                    Ts.reads(relu[T.int64(0), v1_1], relu_sum_shared[T.int64(0)])
-                                    Ts.writes(relu_var_sum_shared[T.int64(0)])
+                                    Ts.reads(relu[T.int64(0), v1_1:v1_1 + T.int64(1)], relu_sum_shared[T.int64(0):T.int64(1)])
+                                    Ts.writes(relu_var_sum_shared[T.int64(0):T.int64(1)])
                                     with Ts.init():
                                         relu_var_sum_shared[T.int64(0)] = T.float32(0.0)
                                     relu_var_sum_shared[T.int64(0)] = relu_var_sum_shared[T.int64(0)] + (relu[T.int64(0), v1_1] - relu_sum_shared[T.int64(0)] / T.float32(768.0)) * (relu[T.int64(0), v1_1] - relu_sum_shared[T.int64(0)] / T.float32(768.0))
@@ -301,8 +301,8 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                             with Ts.sblock("T_layer_norm"):
                                 v0_2 = Ts.axis.spatial(T.int64(1), T.int64(0), dtype="int64")
                                 v1_2 = Ts.axis.spatial(T.int64(768), ax1_0 * T.int64(256) + ax1_1, dtype="int64")
-                                Ts.reads(relu[T.int64(0), v1_2], relu_sum_shared[T.int64(0)], relu_var_sum_shared[T.int64(0)], norm_weight[v1_2], norm_bias[v1_2])
-                                Ts.writes(T_layer_norm[T.int64(0), v1_2])
+                                Ts.reads(relu[T.int64(0), v1_2:v1_2 + T.int64(1)], relu_sum_shared[T.int64(0):T.int64(1)], relu_var_sum_shared[T.int64(0):T.int64(1)], norm_weight[v1_2:v1_2 + T.int64(1)], norm_bias[v1_2:v1_2 + T.int64(1)])
+                                Ts.writes(T_layer_norm[T.int64(0), v1_2:v1_2 + T.int64(1)])
                                 T_layer_norm[T.int64(0), v1_2] = (relu[T.int64(0), v1_2] - relu_sum_shared[T.int64(0)] / T.float32(768.0)) * T.rsqrt(relu_var_sum_shared[T.int64(0)] / T.float32(768.0) + T.float32(1.0000000000000001e-05)) * norm_weight[v1_2] + norm_bias[v1_2]
 
         @Ts.function(private=True)
@@ -316,8 +316,8 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                         with Ts.sblock("T_transpose"):
                             v0 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(768), dtype="int64")
                             v1 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(768), dtype="int64")
-                            Ts.reads(fc1_weight[v1, v0])
-                            Ts.writes(T_transpose[v0, v1])
+                            Ts.reads(fc1_weight[v1, v0:v0 + T.int64(1)])
+                            Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                             T_transpose[v0, v1] = fc1_weight[v1, v0]
 
         @Ts.function(private=True)
@@ -331,19 +331,19 @@ Here we use a common subset of rules. The full catalog (including ``LowBatchGEMV
                         with Ts.sblock("T_transpose"):
                             v0 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(256), dtype="int64")
                             v1 = Ts.axis.spatial(T.int64(256), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(256), dtype="int64")
-                            Ts.reads(fc2_weight[v1, v0])
-                            Ts.writes(T_transpose[v0, v1])
+                            Ts.reads(fc2_weight[v1, v0:v0 + T.int64(1)])
+                            Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                             T_transpose[v0, v1] = fc2_weight[v1, v0]
 
         @R.function
         def forward(x: R.Tensor((1, 768), dtype="float32"), fc1_weight: R.Tensor((768, 768), dtype="float32"), fc1_bias: R.Tensor((768,), dtype="float32"), norm_weight: R.Tensor((768,), dtype="float32"), norm_bias: R.Tensor((768,), dtype="float32"), fc2_weight: R.Tensor((256, 768), dtype="float32"), fc2_bias: R.Tensor((256,), dtype="float32")) -> R.Tensor((1, 256), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims = R.call_tir(Module.transpose, I.Tuple([fc1_weight]), ty_args=[R.Tensor((768, 768), dtype="float32")])
-                lv = R.call_tir(Module.fused_matmul_add_relu, I.Tuple([x, permute_dims, fc1_bias]), ty_args=[R.Tensor((1, 768), dtype="float32")])
-                layer_norm = R.call_tir(Module.layer_norm, I.Tuple([lv, norm_weight, norm_bias]), ty_args=[R.Tensor((1, 768), dtype="float32")])
-                permute_dims1 = R.call_tir(Module.transpose1, I.Tuple([fc2_weight]), ty_args=[R.Tensor((768, 256), dtype="float32")])
-                gv = R.call_tir(Module.fused_matmul1_add1, I.Tuple([layer_norm, permute_dims1, fc2_bias]), ty_args=[R.Tensor((1, 256), dtype="float32")])
+                permute_dims = R.call_tir(Module.transpose, (fc1_weight,), ty_args=[R.Tensor((768, 768), dtype="float32")])
+                lv = R.call_tir(Module.fused_matmul_add_relu, (x, permute_dims, fc1_bias), ty_args=[R.Tensor((1, 768), dtype="float32")])
+                layer_norm = R.call_tir(Module.layer_norm, (lv, norm_weight, norm_bias), ty_args=[R.Tensor((1, 768), dtype="float32")])
+                permute_dims1 = R.call_tir(Module.transpose1, (fc2_weight,), ty_args=[R.Tensor((768, 256), dtype="float32")])
+                gv = R.call_tir(Module.fused_matmul1_add1, (layer_norm, permute_dims1, fc2_bias), ty_args=[R.Tensor((1, 256), dtype="float32")])
                 R.output(gv)
             return gv
 
@@ -637,7 +637,7 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                                 vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                 v0 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype="int64")
                                 Ts.reads()
-                                Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0])
+                                Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                                 matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                             for ax1_fused_0 in range(T.int64(0), T.int64(48)):
                                 for u in range(1):
@@ -645,16 +645,16 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                                         vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                         v0_1 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype="int64")
                                         vax1_fused_0 = Ts.axis.reduce(T.int64(48), ax1_fused_0, dtype="int64")
-                                        Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1], layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                        Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                        Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                        Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                         matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                     for ax1_fused in T.thread_binding(T.int64(16), thread="threadIdx.x"):
                         for ax0 in T.thread_binding(T.int64(16), thread="threadIdx.y"):
                             with Ts.sblock("matmul"):
                                 vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype="int64")
                                 v0_2 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax1_fused, dtype="int64")
-                                Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                                Ts.writes(matmul_intermediate_local[T.int64(0), v0_2])
+                                Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                                Ts.writes(matmul_intermediate_local[T.int64(0), v0_2:v0_2 + T.int64(1)])
                                 with Ts.init():
                                     matmul_intermediate_local[T.int64(0), v0_2] = T.float32(0.0)
                                 matmul_intermediate_local[T.int64(0), v0_2] = matmul_intermediate_local[T.int64(0), v0_2] + matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -662,8 +662,8 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                         for ax0_fused_1_1 in range(T.int64(0), T.int64(1)):
                             with Ts.sblock("T_add"):
                                 v0_3 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_0_1 + ax0_fused_1_1, dtype="int64")
-                                Ts.reads(matmul_intermediate_local[T.int64(0), v0_3], fc2_bias[v0_3])
-                                Ts.writes(T_add_intermediate[T.int64(0), v0_3])
+                                Ts.reads(matmul_intermediate_local[T.int64(0), v0_3:v0_3 + T.int64(1)], fc2_bias[v0_3:v0_3 + T.int64(1)])
+                                Ts.writes(T_add_intermediate[T.int64(0), v0_3:v0_3 + T.int64(1)])
                                 T_add_intermediate[T.int64(0), v0_3] = matmul_intermediate_local[T.int64(0), v0_3] + fc2_bias[v0_3]
 
         @Ts.function(private=True)
@@ -681,7 +681,7 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                                 vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                 v0 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype="int64")
                                 Ts.reads()
-                                Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0])
+                                Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                                 matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                             for ax1_fused_0 in range(T.int64(0), T.int64(48)):
                                 for u in range(1):
@@ -689,16 +689,16 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                                         vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                         v0_1 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype="int64")
                                         vax1_fused_0 = Ts.axis.reduce(T.int64(48), ax1_fused_0, dtype="int64")
-                                        Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1], x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                        Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                        Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                        Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                         matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                     for ax1_fused in T.thread_binding(T.int64(16), thread="threadIdx.x"):
                         for ax0 in T.thread_binding(T.int64(16), thread="threadIdx.y"):
                             with Ts.sblock("matmul"):
                                 vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype="int64")
                                 v0_2 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax1_fused, dtype="int64")
-                                Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                                Ts.writes(matmul_intermediate_local[T.int64(0), v0_2])
+                                Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                                Ts.writes(matmul_intermediate_local[T.int64(0), v0_2:v0_2 + T.int64(1)])
                                 with Ts.init():
                                     matmul_intermediate_local[T.int64(0), v0_2] = T.float32(0.0)
                                 matmul_intermediate_local[T.int64(0), v0_2] = matmul_intermediate_local[T.int64(0), v0_2] + matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -706,8 +706,8 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                         for ax0_fused_1_1 in range(T.int64(0), T.int64(1)):
                             with Ts.sblock("compute"):
                                 v0_3 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_0_1 + ax0_fused_1_1, dtype="int64")
-                                Ts.reads(matmul_intermediate_local[T.int64(0), v0_3], fc1_bias[v0_3])
-                                Ts.writes(compute_intermediate[T.int64(0), v0_3])
+                                Ts.reads(matmul_intermediate_local[T.int64(0), v0_3:v0_3 + T.int64(1)], fc1_bias[v0_3:v0_3 + T.int64(1)])
+                                Ts.writes(compute_intermediate[T.int64(0), v0_3:v0_3 + T.int64(1)])
                                 compute_intermediate[T.int64(0), v0_3] = T.max(matmul_intermediate_local[T.int64(0), v0_3] + fc1_bias[v0_3], T.float32(0.0))
 
         @Ts.function(private=True)
@@ -725,8 +725,8 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                                 with Ts.sblock("relu_sum"):
                                     v0 = Ts.axis.spatial(T.int64(1), ax0, dtype="int64")
                                     v1 = Ts.axis.reduce(T.int64(768), ax1_fused_0 * T.int64(256) + ax1_fused_1, dtype="int64")
-                                    Ts.reads(relu[T.int64(0), v1])
-                                    Ts.writes(relu_sum_shared[T.int64(0)])
+                                    Ts.reads(relu[T.int64(0), v1:v1 + T.int64(1)])
+                                    Ts.writes(relu_sum_shared[T.int64(0):T.int64(1)])
                                     with Ts.init():
                                         relu_sum_shared[T.int64(0)] = T.float32(0.0)
                                     relu_sum_shared[T.int64(0)] = relu_sum_shared[T.int64(0)] + relu[T.int64(0), v1]
@@ -736,8 +736,8 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                                 with Ts.sblock("relu_var_sum"):
                                     v0_1 = Ts.axis.spatial(T.int64(1), ax0_1, dtype="int64")
                                     v1_1 = Ts.axis.reduce(T.int64(768), ax1_fused_0_1 * T.int64(256) + ax1_fused_1_1, dtype="int64")
-                                    Ts.reads(relu[T.int64(0), v1_1], relu_sum_shared[T.int64(0)])
-                                    Ts.writes(relu_var_sum_shared[T.int64(0)])
+                                    Ts.reads(relu[T.int64(0), v1_1:v1_1 + T.int64(1)], relu_sum_shared[T.int64(0):T.int64(1)])
+                                    Ts.writes(relu_var_sum_shared[T.int64(0):T.int64(1)])
                                     with Ts.init():
                                         relu_var_sum_shared[T.int64(0)] = T.float32(0.0)
                                     relu_var_sum_shared[T.int64(0)] = relu_var_sum_shared[T.int64(0)] + (relu[T.int64(0), v1_1] - relu_sum_shared[T.int64(0)] / T.float32(768.0)) * (relu[T.int64(0), v1_1] - relu_sum_shared[T.int64(0)] / T.float32(768.0))
@@ -746,8 +746,8 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                             with Ts.sblock("T_layer_norm"):
                                 v0_2 = Ts.axis.spatial(T.int64(1), T.int64(0), dtype="int64")
                                 v1_2 = Ts.axis.spatial(T.int64(768), ax1_0 * T.int64(256) + ax1_1, dtype="int64")
-                                Ts.reads(relu[T.int64(0), v1_2], relu_sum_shared[T.int64(0)], relu_var_sum_shared[T.int64(0)], norm_weight[v1_2], norm_bias[v1_2])
-                                Ts.writes(T_layer_norm[T.int64(0), v1_2])
+                                Ts.reads(relu[T.int64(0), v1_2:v1_2 + T.int64(1)], relu_sum_shared[T.int64(0):T.int64(1)], relu_var_sum_shared[T.int64(0):T.int64(1)], norm_weight[v1_2:v1_2 + T.int64(1)], norm_bias[v1_2:v1_2 + T.int64(1)])
+                                Ts.writes(T_layer_norm[T.int64(0), v1_2:v1_2 + T.int64(1)])
                                 T_layer_norm[T.int64(0), v1_2] = (relu[T.int64(0), v1_2] - relu_sum_shared[T.int64(0)] / T.float32(768.0)) * T.rsqrt(relu_var_sum_shared[T.int64(0)] / T.float32(768.0) + T.float32(1.0000000000000001e-05)) * norm_weight[v1_2] + norm_bias[v1_2]
 
         @Ts.function(private=True)
@@ -761,8 +761,8 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                         with Ts.sblock("T_transpose"):
                             v0 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(768), dtype="int64")
                             v1 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(768), dtype="int64")
-                            Ts.reads(fc1_weight[v1, v0])
-                            Ts.writes(T_transpose[v0, v1])
+                            Ts.reads(fc1_weight[v1, v0:v0 + T.int64(1)])
+                            Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                             T_transpose[v0, v1] = fc1_weight[v1, v0]
 
         @Ts.function(private=True)
@@ -776,19 +776,19 @@ Insert the custom rule into the rule chain. Note that ``from_callable`` returns
                         with Ts.sblock("T_transpose"):
                             v0 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(256), dtype="int64")
                             v1 = Ts.axis.spatial(T.int64(256), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(256), dtype="int64")
-                            Ts.reads(fc2_weight[v1, v0])
-                            Ts.writes(T_transpose[v0, v1])
+                            Ts.reads(fc2_weight[v1, v0:v0 + T.int64(1)])
+                            Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                             T_transpose[v0, v1] = fc2_weight[v1, v0]
 
         @R.function
         def forward(x: R.Tensor((1, 768), dtype="float32"), fc1_weight: R.Tensor((768, 768), dtype="float32"), fc1_bias: R.Tensor((768,), dtype="float32"), norm_weight: R.Tensor((768,), dtype="float32"), norm_bias: R.Tensor((768,), dtype="float32"), fc2_weight: R.Tensor((256, 768), dtype="float32"), fc2_bias: R.Tensor((256,), dtype="float32")) -> R.Tensor((1, 256), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims = R.call_tir(Module.transpose, I.Tuple([fc1_weight]), ty_args=[R.Tensor((768, 768), dtype="float32")])
-                lv = R.call_tir(Module.fused_matmul_add_relu, I.Tuple([x, permute_dims, fc1_bias]), ty_args=[R.Tensor((1, 768), dtype="float32")])
-                layer_norm = R.call_tir(Module.layer_norm, I.Tuple([lv, norm_weight, norm_bias]), ty_args=[R.Tensor((1, 768), dtype="float32")])
-                permute_dims1 = R.call_tir(Module.transpose1, I.Tuple([fc2_weight]), ty_args=[R.Tensor((768, 256), dtype="float32")])
-                gv = R.call_tir(Module.fused_matmul1_add1, I.Tuple([layer_norm, permute_dims1, fc2_bias]), ty_args=[R.Tensor((1, 256), dtype="float32")])
+                permute_dims = R.call_tir(Module.transpose, (fc1_weight,), ty_args=[R.Tensor((768, 768), dtype="float32")])
+                lv = R.call_tir(Module.fused_matmul_add_relu, (x, permute_dims, fc1_bias), ty_args=[R.Tensor((1, 768), dtype="float32")])
+                layer_norm = R.call_tir(Module.layer_norm, (lv, norm_weight, norm_bias), ty_args=[R.Tensor((1, 768), dtype="float32")])
+                permute_dims1 = R.call_tir(Module.transpose1, (fc2_weight,), ty_args=[R.Tensor((768, 256), dtype="float32")])
+                gv = R.call_tir(Module.fused_matmul1_add1, (layer_norm, permute_dims1, fc2_bias), ty_args=[R.Tensor((1, 256), dtype="float32")])
                 R.output(gv)
             return gv
 
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 9f17b10db50..a3ae598023d 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.713** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
+**00:00.602** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
 
 .. container::
 
@@ -33,14 +33,14 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``tir_transformation.py``)
-     - 00:00.317
+     - 00:00.267
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_dlight_gpu_scheduling.py` (``dlight_gpu_scheduling.py``)
-     - 00:00.220
+     - 00:00.184
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``tir_creation.py``)
-     - 00:00.161
+     - 00:00.138
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``meta_schedule.py``)
-     - 00:00.014
+     - 00:00.012
      - 0.0
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst
index 28573d3989f..6cca5fbe3f8 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst
@@ -433,8 +433,8 @@ and one output parameter **C**.
                                 v_i = Ts.axis.spatial(128, i)
                                 v_j = Ts.axis.spatial(128, j)
                                 v_k = Ts.axis.reduce(128, k)
-                                Ts.reads(A[v_i, v_k], B[v_k, v_j])
-                                Ts.writes(Y[v_i, v_j])
+                                Ts.reads(A[v_i, v_k:v_k + 1], B[v_k, v_j:v_j + 1])
+                                Ts.writes(Y[v_i, v_j:v_j + 1])
                                 with Ts.init():
                                     Y[v_i, v_j] = T.float32(0.0)
                                 Y[v_i, v_j] = Y[v_i, v_j] + A[v_i, v_k] * B[v_k, v_j]
@@ -443,8 +443,8 @@ and one output parameter **C**.
                         with Ts.sblock("C"):
                             v_i_1 = Ts.axis.spatial(128, i_1)
                             v_j_1 = Ts.axis.spatial(128, j_1)
-                            Ts.reads(Y[v_i_1, v_j_1])
-                            Ts.writes(C[v_i_1, v_j_1])
+                            Ts.reads(Y[v_i_1, v_j_1:v_j_1 + 1])
+                            Ts.writes(C[v_i_1, v_j_1:v_j_1 + 1])
                             C[v_i_1, v_j_1] = T.max(Y[v_i_1, v_j_1], T.float32(0.0))
 
 
@@ -507,8 +507,8 @@ is that we need to specify the shape of the input tensors as symbolic variables.
                                 v_i = Ts.axis.spatial(m, i)
                                 v_j = Ts.axis.spatial(n, j)
                                 v_k = Ts.axis.reduce(k, k_1)
-                                Ts.reads(A[v_i, v_k], B[v_k, v_j])
-                                Ts.writes(Y[v_i, v_j])
+                                Ts.reads(A[v_i, v_k:v_k + 1], B[v_k, v_j:v_j + 1])
+                                Ts.writes(Y[v_i, v_j:v_j + 1])
                                 with Ts.init():
                                     Y[v_i, v_j] = T.float32(0.0)
                                 Y[v_i, v_j] = Y[v_i, v_j] + A[v_i, v_k] * B[v_k, v_j]
@@ -517,8 +517,8 @@ is that we need to specify the shape of the input tensors as symbolic variables.
                         with Ts.sblock("C"):
                             v_i_1 = Ts.axis.spatial(m, i_1)
                             v_j_1 = Ts.axis.spatial(n, j_1)
-                            Ts.reads(Y[v_i_1, v_j_1])
-                            Ts.writes(C[v_i_1, v_j_1])
+                            Ts.reads(Y[v_i_1, v_j_1:v_j_1 + 1])
+                            Ts.writes(C[v_i_1, v_j_1:v_j_1 + 1])
                             C[v_i_1, v_j_1] = T.max(Y[v_i_1, v_j_1], T.float32(0.0))
 
 
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 95f05bdaaa4..a226ba390c5 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
@@ -121,7 +121,7 @@ original implementation.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       2.7543       2.7543       2.7543       2.7543       0.0000                  
+       2.4568       2.4568       2.4568       2.4568       0.0000                  
 
 
 
@@ -233,8 +233,8 @@ The outcome of the transformation can be examined, as it is retained within ``sc
                                     v_1 = Ts.axis.spatial(128, i)
                                     v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                     v_3 = Ts.axis.reduce(128, k)
-                                    Ts.reads(A[v_1, v_3], B[v_3, v_2])
-                                    Ts.writes(v[v_1, v_2])
+                                    Ts.reads(A[v_1, v_3:v_3 + 1], B[v_3, v_2:v_2 + 1])
+                                    Ts.writes(v[v_1, v_2:v_2 + 1])
                                     with Ts.init():
                                         v[v_1, v_2] = T.float32(0.0)
                                     v[v_1, v_2] = v[v_1, v_2] + A[v_1, v_3] * B[v_3, v_2]
@@ -243,8 +243,8 @@ The outcome of the transformation can be examined, as it is retained within ``sc
                         with Ts.sblock("C"):
                             v_4 = Ts.axis.spatial(128, i_1)
                             v_5 = Ts.axis.spatial(128, j)
-                            Ts.reads(v[v_4, v_5])
-                            Ts.writes(C[v_4, v_5])
+                            Ts.reads(v[v_4, v_5:v_5 + 1])
+                            Ts.writes(C[v_4, v_5:v_5 + 1])
                             C[v_4, v_5] = T.max(v[v_4, v_5], T.float32(0.0))
 
 
@@ -297,8 +297,8 @@ action involves reordering these two loops.
                                     v_1 = Ts.axis.spatial(128, i)
                                     v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                     v_3 = Ts.axis.reduce(128, k)
-                                    Ts.reads(A[v_1, v_3], B[v_3, v_2])
-                                    Ts.writes(v[v_1, v_2])
+                                    Ts.reads(A[v_1, v_3:v_3 + 1], B[v_3, v_2:v_2 + 1])
+                                    Ts.writes(v[v_1, v_2:v_2 + 1])
                                     with Ts.init():
                                         v[v_1, v_2] = T.float32(0.0)
                                     v[v_1, v_2] = v[v_1, v_2] + A[v_1, v_3] * B[v_3, v_2]
@@ -307,13 +307,13 @@ action involves reordering these two loops.
                         with Ts.sblock("C"):
                             v_4 = Ts.axis.spatial(128, i_1)
                             v_5 = Ts.axis.spatial(128, j)
-                            Ts.reads(v[v_4, v_5])
-                            Ts.writes(C[v_4, v_5])
+                            Ts.reads(v[v_4, v_5:v_5 + 1])
+                            Ts.writes(C[v_4, v_5:v_5 + 1])
                             C[v_4, v_5] = T.max(v[v_4, v_5], T.float32(0.0))
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       0.8625       0.8625       0.8625       0.8625       0.0000                  
+       0.8632       0.8632       0.8632       0.8632       0.0000                  
 
 
 
@@ -366,8 +366,8 @@ variant. First, we employ a primitive known as **reverse_compute_at** to relocat
                                     v_1 = Ts.axis.spatial(128, i)
                                     v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                     v_3 = Ts.axis.reduce(128, k)
-                                    Ts.reads(A[v_1, v_3], B[v_3, v_2])
-                                    Ts.writes(v[v_1, v_2])
+                                    Ts.reads(A[v_1, v_3:v_3 + 1], B[v_3, v_2:v_2 + 1])
+                                    Ts.writes(v[v_1, v_2:v_2 + 1])
                                     with Ts.init():
                                         v[v_1, v_2] = T.float32(0.0)
                                     v[v_1, v_2] = v[v_1, v_2] + A[v_1, v_3] * B[v_3, v_2]
@@ -375,8 +375,8 @@ variant. First, we employ a primitive known as **reverse_compute_at** to relocat
                             with Ts.sblock("C"):
                                 v_4 = Ts.axis.spatial(128, i)
                                 v_5 = Ts.axis.spatial(128, j_0 * 8 + ax0)
-                                Ts.reads(v[v_4, v_5])
-                                Ts.writes(C[v_4, v_5])
+                                Ts.reads(v[v_4, v_5:v_5 + 1])
+                                Ts.writes(C[v_4, v_5:v_5 + 1])
                                 C[v_4, v_5] = T.max(v[v_4, v_5], T.float32(0.0))
 
 
@@ -434,7 +434,7 @@ from the reduction update via the **decompose_reduction** primitive.
                                 v_1 = Ts.axis.spatial(128, i)
                                 v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1_init)
                                 Ts.reads()
-                                Ts.writes(v[v_1, v_2])
+                                Ts.writes(v[v_1, v_2:v_2 + 1])
                                 v[v_1, v_2] = T.float32(0.0)
                         for k in range(128):
                             for j_1 in range(8):
@@ -442,20 +442,20 @@ from the reduction update via the **decompose_reduction** primitive.
                                     v_3 = Ts.axis.spatial(128, i)
                                     v_4 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                     v_5 = Ts.axis.reduce(128, k)
-                                    Ts.reads(v[v_3, v_4], A[v_3, v_5], B[v_5, v_4])
-                                    Ts.writes(v[v_3, v_4])
+                                    Ts.reads(v[v_3, v_4:v_4 + 1], A[v_3, v_5:v_5 + 1], B[v_5, v_4:v_4 + 1])
+                                    Ts.writes(v[v_3, v_4:v_4 + 1])
                                     v[v_3, v_4] = v[v_3, v_4] + A[v_3, v_5] * B[v_5, v_4]
                         for ax0 in range(8):
                             with Ts.sblock("C"):
                                 v_6 = Ts.axis.spatial(128, i)
                                 v_7 = Ts.axis.spatial(128, j_0 * 8 + ax0)
-                                Ts.reads(v[v_6, v_7])
-                                Ts.writes(C[v_6, v_7])
+                                Ts.reads(v[v_6, v_7:v_7 + 1])
+                                Ts.writes(C[v_6, v_7:v_7 + 1])
                                 C[v_6, v_7] = T.max(v[v_6, v_7], T.float32(0.0))
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       0.3379       0.3379       0.3379       0.3379       0.0000                  
+       0.3482       0.3482       0.3482       0.3482       0.0000                  
 
 
 
@@ -540,7 +540,7 @@ Alternatively, we can output the IRModule in conjunction with the historical tra
                                 v_1 = Ts.axis.spatial(128, i)
                                 v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1_init)
                                 Ts.reads()
-                                Ts.writes(v[v_1, v_2])
+                                Ts.writes(v[v_1, v_2:v_2 + 1])
                                 v[v_1, v_2] = T.float32(0.0)
                         for k in range(128):
                             for j_1 in range(8):
@@ -548,15 +548,15 @@ Alternatively, we can output the IRModule in conjunction with the historical tra
                                     v_3 = Ts.axis.spatial(128, i)
                                     v_4 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                     v_5 = Ts.axis.reduce(128, k)
-                                    Ts.reads(v[v_3, v_4], A[v_3, v_5], B[v_5, v_4])
-                                    Ts.writes(v[v_3, v_4])
+                                    Ts.reads(v[v_3, v_4:v_4 + 1], A[v_3, v_5:v_5 + 1], B[v_5, v_4:v_4 + 1])
+                                    Ts.writes(v[v_3, v_4:v_4 + 1])
                                     v[v_3, v_4] = v[v_3, v_4] + A[v_3, v_5] * B[v_5, v_4]
                         for ax0 in range(8):
                             with Ts.sblock("C"):
                                 v_6 = Ts.axis.spatial(128, i)
                                 v_7 = Ts.axis.spatial(128, j_0 * 8 + ax0)
-                                Ts.reads(v[v_6, v_7])
-                                Ts.writes(C[v_6, v_7])
+                                Ts.reads(v[v_6, v_7:v_7 + 1])
+                                Ts.writes(C[v_6, v_7:v_7 + 1])
                                 C[v_6, v_7] = T.max(v[v_6, v_7], T.float32(0.0))
 
     # from tvm import s_tir
diff --git a/docs/_sources/get_started/tutorials/ir_module.rst b/docs/_sources/get_started/tutorials/ir_module.rst
index b67bb7afe77..73ecf684b17 100644
--- a/docs/_sources/get_started/tutorials/ir_module.rst
+++ b/docs/_sources/get_started/tutorials/ir_module.rst
@@ -201,11 +201,11 @@ write the IRModule directly.
         def forward(x: R.Tensor((1, 784), dtype="float32"), fc1_weight: R.Tensor((256, 784), dtype="float32"), fc1_bias: R.Tensor((256,), dtype="float32"), fc2_weight: R.Tensor((10, 256), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims: R.Tensor((784, 256), dtype="float32") = I.Call("relax.permute_dims", [fc1_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 256), dtype="float32"))
+                permute_dims: R.Tensor((784, 256), dtype="float32") = R.permute_dims(fc1_weight)
                 matmul: R.Tensor((1, 256), dtype="float32") = I.Call("relax.matmul", [x, permute_dims], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 256), dtype="float32"))
                 add: R.Tensor((1, 256), dtype="float32") = R.add(matmul, fc1_bias, ty=R.Tensor((1, 256), dtype="float32"))
                 relu: R.Tensor((1, 256), dtype="float32") = R.nn.relu(add)
-                permute_dims1: R.Tensor((256, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((256, 10), dtype="float32"))
+                permute_dims1: R.Tensor((256, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 matmul1: R.Tensor((1, 10), dtype="float32") = I.Call("relax.matmul", [relu, permute_dims1], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 10), dtype="float32"))
                 add1: R.Tensor((1, 10), dtype="float32") = R.add(matmul1, fc2_bias, ty=R.Tensor((1, 10), dtype="float32"))
                 gv: R.Tensor((1, 10), dtype="float32") = add1
@@ -279,11 +279,11 @@ parse the TVMScript to obtain an IRModule.
         def main(x: R.Tensor((1, 784), dtype="float32"), fc1_weight: R.Tensor((256, 784), dtype="float32"), fc1_bias: R.Tensor((256,), dtype="float32"), fc2_weight: R.Tensor((10, 256), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims: R.Tensor((784, 256), dtype="float32") = I.Call("relax.permute_dims", [fc1_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 256), dtype="float32"))
+                permute_dims: R.Tensor((784, 256), dtype="float32") = R.permute_dims(fc1_weight)
                 matmul: R.Tensor((1, 256), dtype="float32") = I.Call("relax.matmul", [x, permute_dims], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 256), dtype="float32"))
                 add: R.Tensor((1, 256), dtype="float32") = R.add(matmul, fc1_bias, ty=R.Tensor((1, 256), dtype="float32"))
                 relu: R.Tensor((1, 256), dtype="float32") = R.nn.relu(add)
-                permute_dims1: R.Tensor((256, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((256, 10), dtype="float32"))
+                permute_dims1: R.Tensor((256, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 matmul1: R.Tensor((1, 10), dtype="float32") = I.Call("relax.matmul", [relu, permute_dims1], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 10), dtype="float32"))
                 add1: R.Tensor((1, 10), dtype="float32") = R.add(matmul1, fc2_bias, ty=R.Tensor((1, 10), dtype="float32"))
                 gv: R.Tensor((1, 10), dtype="float32") = add1
@@ -423,8 +423,8 @@ within the same module. Meanwhile, the Relax operators will be converted into ``
                         with Ts.sblock("T_add"):
                             v_ax0 = Ts.axis.spatial(T.int64(1), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(256), ax1, dtype="int64")
-                            Ts.reads(p_fc1_bias[v_ax1], lv1[v_ax0, v_ax1])
-                            Ts.writes(T_add[v_ax0, v_ax1])
+                            Ts.reads(p_fc1_bias[v_ax1:v_ax1 + T.int64(1)], lv1[v_ax0, v_ax1:v_ax1 + T.int64(1)])
+                            Ts.writes(T_add[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_add[v_ax0, v_ax1] = p_fc1_bias[v_ax1] + lv1[v_ax0, v_ax1]
 
         @Ts.function(private=True)
@@ -438,8 +438,8 @@ within the same module. Meanwhile, the Relax operators will be converted into ``
                         with Ts.sblock("T_add"):
                             v_ax0 = Ts.axis.spatial(T.int64(1), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype="int64")
-                            Ts.reads(p_fc2_bias[v_ax1], lv5[v_ax0, v_ax1])
-                            Ts.writes(T_add[v_ax0, v_ax1])
+                            Ts.reads(p_fc2_bias[v_ax1:v_ax1 + T.int64(1)], lv5[v_ax0, v_ax1:v_ax1 + T.int64(1)])
+                            Ts.writes(T_add[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_add[v_ax0, v_ax1] = p_fc2_bias[v_ax1] + lv5[v_ax0, v_ax1]
 
         @Ts.function(private=True)
@@ -455,8 +455,8 @@ within the same module. Meanwhile, the Relax operators will be converted into ``
                                 v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype="int64")
                                 v_i1 = Ts.axis.spatial(T.int64(256), i1, dtype="int64")
                                 v_k = Ts.axis.reduce(T.int64(784), k, dtype="int64")
-                                Ts.reads(x[v_i0, v_k], lv[v_k, v_i1])
-                                Ts.writes(matmul[v_i0, v_i1])
+                                Ts.reads(x[v_i0, v_k:v_k + T.int64(1)], lv[v_k, v_i1:v_i1 + T.int64(1)])
+                                Ts.writes(matmul[v_i0, v_i1:v_i1 + T.int64(1)])
                                 with Ts.init():
                                     matmul[v_i0, v_i1] = T.float32(0.0)
                                 matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + x[v_i0, v_k] * lv[v_k, v_i1]
@@ -474,8 +474,8 @@ within the same module. Meanwhile, the Relax operators will be converted into ``
                                 v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype="int64")
                                 v_i1 = Ts.axis.spatial(T.int64(10), i1, dtype="int64")
                                 v_k = Ts.axis.reduce(T.int64(256), k, dtype="int64")
-                                Ts.reads(lv3[v_i0, v_k], lv4[v_k, v_i1])
-                                Ts.writes(matmul[v_i0, v_i1])
+                                Ts.reads(lv3[v_i0, v_k:v_k + T.int64(1)], lv4[v_k, v_i1:v_i1 + T.int64(1)])
+                                Ts.writes(matmul[v_i0, v_i1:v_i1 + T.int64(1)])
                                 with Ts.init():
                                     matmul[v_i0, v_i1] = T.float32(0.0)
                                 matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + lv3[v_i0, v_k] * lv4[v_k, v_i1]
@@ -491,8 +491,8 @@ within the same module. Meanwhile, the Relax operators will be converted into ``
                         with Ts.sblock("compute"):
                             v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype="int64")
                             v_i1 = Ts.axis.spatial(T.int64(256), i1, dtype="int64")
-                            Ts.reads(lv2[v_i0, v_i1])
-                            Ts.writes(compute[v_i0, v_i1])
+                            Ts.reads(lv2[v_i0, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(compute[v_i0, v_i1:v_i1 + T.int64(1)])
                             compute[v_i0, v_i1] = T.max(lv2[v_i0, v_i1], T.float32(0.0))
 
         @Ts.function(private=True)
@@ -506,8 +506,8 @@ within the same module. Meanwhile, the Relax operators will be converted into ``
                         with Ts.sblock("T_transpose"):
                             v_ax0 = Ts.axis.spatial(T.int64(784), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(256), ax1, dtype="int64")
-                            Ts.reads(p_fc1_weight[v_ax1, v_ax0])
-                            Ts.writes(T_transpose[v_ax0, v_ax1])
+                            Ts.reads(p_fc1_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                            Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_transpose[v_ax0, v_ax1] = p_fc1_weight[v_ax1, v_ax0]
 
         @Ts.function(private=True)
@@ -521,21 +521,21 @@ within the same module. Meanwhile, the Relax operators will be converted into ``
                         with Ts.sblock("T_transpose"):
                             v_ax0 = Ts.axis.spatial(T.int64(256), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype="int64")
-                            Ts.reads(p_fc2_weight[v_ax1, v_ax0])
-                            Ts.writes(T_transpose[v_ax0, v_ax1])
+                            Ts.reads(p_fc2_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                            Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_transpose[v_ax0, v_ax1] = p_fc2_weight[v_ax1, v_ax0]
 
         @R.function
         def main(x: R.Tensor((1, 784), dtype="float32"), p_fc1_weight: R.Tensor((256, 784), dtype="float32"), p_fc1_bias: R.Tensor((256,), dtype="float32"), p_fc2_weight: R.Tensor((10, 256), dtype="float32"), p_fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                lv = R.call_tir(Module.transpose, I.Tuple([p_fc1_weight]), ty_args=[R.Tensor((784, 256), dtype="float32")])
-                lv1 = R.call_tir(Module.matmul, I.Tuple([x, lv]), ty_args=[R.Tensor((1, 256), dtype="float32")])
-                lv2 = R.call_tir(Module.add, I.Tuple([p_fc1_bias, lv1]), ty_args=[R.Tensor((1, 256), dtype="float32")])
-                lv3 = R.call_tir(Module.relu, I.Tuple([lv2]), ty_args=[R.Tensor((1, 256), dtype="float32")])
-                lv4 = R.call_tir(Module.transpose1, I.Tuple([p_fc2_weight]), ty_args=[R.Tensor((256, 10), dtype="float32")])
-                lv5 = R.call_tir(Module.matmul1, I.Tuple([lv3, lv4]), ty_args=[R.Tensor((1, 10), dtype="float32")])
-                lv6 = R.call_tir(Module.add1, I.Tuple([p_fc2_bias, lv5]), ty_args=[R.Tensor((1, 10), dtype="float32")])
+                lv = R.call_tir(Module.transpose, (p_fc1_weight,), ty_args=[R.Tensor((784, 256), dtype="float32")])
+                lv1 = R.call_tir(Module.matmul, (x, lv), ty_args=[R.Tensor((1, 256), dtype="float32")])
+                lv2 = R.call_tir(Module.add, (p_fc1_bias, lv1), ty_args=[R.Tensor((1, 256), dtype="float32")])
+                lv3 = R.call_tir(Module.relu, (lv2,), ty_args=[R.Tensor((1, 256), dtype="float32")])
+                lv4 = R.call_tir(Module.transpose1, (p_fc2_weight,), ty_args=[R.Tensor((256, 10), dtype="float32")])
+                lv5 = R.call_tir(Module.matmul1, (lv3, lv4), ty_args=[R.Tensor((1, 10), dtype="float32")])
+                lv6 = R.call_tir(Module.add1, (p_fc2_bias, lv5), ty_args=[R.Tensor((1, 10), dtype="float32")])
                 gv: R.Tensor((1, 10), dtype="float32") = lv6
                 R.output(gv)
             return gv
@@ -633,8 +633,8 @@ The default **zero** pipeline contains very fundamental transformations, includi
                                 v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype="int64")
                                 v_i1 = Ts.axis.spatial(T.int64(10), i1, dtype="int64")
                                 v_k = Ts.axis.reduce(T.int64(256), k, dtype="int64")
-                                Ts.reads(lv3[v_i0, v_k], lv4[v_k, v_i1])
-                                Ts.writes(matmul_intermediate[v_i0, v_i1])
+                                Ts.reads(lv3[v_i0, v_k:v_k + T.int64(1)], lv4[v_k, v_i1:v_i1 + T.int64(1)])
+                                Ts.writes(matmul_intermediate[v_i0, v_i1:v_i1 + T.int64(1)])
                                 with Ts.init():
                                     matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
                                 matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + lv3[v_i0, v_k] * lv4[v_k, v_i1]
@@ -643,8 +643,8 @@ The default **zero** pipeline contains very fundamental transformations, includi
                         with Ts.sblock("T_add"):
                             v_ax0 = Ts.axis.spatial(T.int64(1), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype="int64")
-                            Ts.reads(p_fc2_bias[v_ax1], matmul_intermediate[v_ax0, v_ax1])
-                            Ts.writes(T_add_intermediate[v_ax0, v_ax1])
+                            Ts.reads(p_fc2_bias[v_ax1:v_ax1 + T.int64(1)], matmul_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
+                            Ts.writes(T_add_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_add_intermediate[v_ax0, v_ax1] = p_fc2_bias[v_ax1] + matmul_intermediate[v_ax0, v_ax1]
 
         @Ts.function(private=True)
@@ -662,8 +662,8 @@ The default **zero** pipeline contains very fundamental transformations, includi
                                 v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype="int64")
                                 v_i1 = Ts.axis.spatial(T.int64(256), i1, dtype="int64")
                                 v_k = Ts.axis.reduce(T.int64(784), k, dtype="int64")
-                                Ts.reads(x[v_i0, v_k], lv[v_k, v_i1])
-                                Ts.writes(matmul_intermediate[v_i0, v_i1])
+                                Ts.reads(x[v_i0, v_k:v_k + T.int64(1)], lv[v_k, v_i1:v_i1 + T.int64(1)])
+                                Ts.writes(matmul_intermediate[v_i0, v_i1:v_i1 + T.int64(1)])
                                 with Ts.init():
                                     matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
                                 matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + x[v_i0, v_k] * lv[v_k, v_i1]
@@ -672,16 +672,16 @@ The default **zero** pipeline contains very fundamental transformations, includi
                         with Ts.sblock("T_add"):
                             v_ax0 = Ts.axis.spatial(T.int64(1), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(256), ax1, dtype="int64")
-                            Ts.reads(p_fc1_bias[v_ax1], matmul_intermediate[v_ax0, v_ax1])
-                            Ts.writes(T_add_intermediate[v_ax0, v_ax1])
+                            Ts.reads(p_fc1_bias[v_ax1:v_ax1 + T.int64(1)], matmul_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
+                            Ts.writes(T_add_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_add_intermediate[v_ax0, v_ax1] = p_fc1_bias[v_ax1] + matmul_intermediate[v_ax0, v_ax1]
                 for i0_1 in range(T.int64(0), T.int64(1)):
                     for i1_1 in range(T.int64(0), T.int64(256)):
                         with Ts.sblock("compute"):
                             v_i0_1 = Ts.axis.spatial(T.int64(1), i0_1, dtype="int64")
                             v_i1_1 = Ts.axis.spatial(T.int64(256), i1_1, dtype="int64")
-                            Ts.reads(T_add_intermediate[v_i0_1, v_i1_1])
-                            Ts.writes(compute_intermediate[v_i0_1, v_i1_1])
+                            Ts.reads(T_add_intermediate[v_i0_1, v_i1_1:v_i1_1 + T.int64(1)])
+                            Ts.writes(compute_intermediate[v_i0_1, v_i1_1:v_i1_1 + T.int64(1)])
                             compute_intermediate[v_i0_1, v_i1_1] = T.max(T_add_intermediate[v_i0_1, v_i1_1], T.float32(0.0))
 
         @Ts.function(private=True)
@@ -695,8 +695,8 @@ The default **zero** pipeline contains very fundamental transformations, includi
                         with Ts.sblock("T_transpose"):
                             v_ax0 = Ts.axis.spatial(T.int64(784), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(256), ax1, dtype="int64")
-                            Ts.reads(p_fc1_weight[v_ax1, v_ax0])
-                            Ts.writes(T_transpose[v_ax0, v_ax1])
+                            Ts.reads(p_fc1_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                            Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_transpose[v_ax0, v_ax1] = p_fc1_weight[v_ax1, v_ax0]
 
         @Ts.function(private=True)
@@ -710,18 +710,18 @@ The default **zero** pipeline contains very fundamental transformations, includi
                         with Ts.sblock("T_transpose"):
                             v_ax0 = Ts.axis.spatial(T.int64(256), ax0, dtype="int64")
                             v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype="int64")
-                            Ts.reads(p_fc2_weight[v_ax1, v_ax0])
-                            Ts.writes(T_transpose[v_ax0, v_ax1])
+                            Ts.reads(p_fc2_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                            Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                             T_transpose[v_ax0, v_ax1] = p_fc2_weight[v_ax1, v_ax0]
 
         @R.function
         def main(x: R.Tensor((1, 784), dtype="float32"), p_fc1_weight: R.Tensor((256, 784), dtype="float32"), p_fc1_bias: R.Tensor((256,), dtype="float32"), p_fc2_weight: R.Tensor((10, 256), dtype="float32"), p_fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                lv = R.call_tir(Module.transpose, I.Tuple([p_fc1_weight]), ty_args=[R.Tensor((784, 256), dtype="float32")])
-                lv_1 = R.call_tir(Module.fused_matmul_add_relu, I.Tuple([x, lv, p_fc1_bias]), ty_args=[R.Tensor((1, 256), dtype="float32")])
-                lv4 = R.call_tir(Module.transpose1, I.Tuple([p_fc2_weight]), ty_args=[R.Tensor((256, 10), dtype="float32")])
-                gv = R.call_tir(Module.fused_matmul1_add1, I.Tuple([lv_1, lv4, p_fc2_bias]), ty_args=[R.Tensor((1, 10), dtype="float32")])
+                lv = R.call_tir(Module.transpose, (p_fc1_weight,), ty_args=[R.Tensor((784, 256), dtype="float32")])
+                lv_1 = R.call_tir(Module.fused_matmul_add_relu, (x, lv, p_fc1_bias), ty_args=[R.Tensor((1, 256), dtype="float32")])
+                lv4 = R.call_tir(Module.transpose1, (p_fc2_weight,), ty_args=[R.Tensor((256, 10), dtype="float32")])
+                gv = R.call_tir(Module.fused_matmul1_add1, (lv_1, lv4, p_fc2_bias), ty_args=[R.Tensor((1, 10), dtype="float32")])
                 R.output(gv)
             return gv
 
@@ -764,8 +764,8 @@ We can deploy the IRModule on CPU by specifying the target as ``llvm``.
 
  .. code-block:: none
 
-    [[ 0.19126415 -0.11120734 -0.18844074 -0.09666331 -0.10459481  0.27168792
-       0.00239159  0.09554429 -0.07331742  0.14715831]]
+    [[-0.05448412 -0.29549795 -0.15731497 -0.03810223 -0.07888201 -0.02606021
+       0.07264606 -0.02397087 -0.0854951   0.12246296]]
 
 
 
@@ -831,8 +831,8 @@ Now we can compile the IRModule on GPU, the similar way as we did on CPU.
 
  .. code-block:: none
 
-    [[ 0.19126418 -0.11120729 -0.18844078 -0.09666328 -0.10459483  0.27168787
-       0.00239164  0.09554419 -0.07331741  0.14715831]]
+    [[-0.05448417 -0.29549783 -0.15731494 -0.03810223 -0.07888198 -0.02606017
+       0.07264615 -0.02397087 -0.08549506  0.12246294]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/quick_start.rst b/docs/_sources/get_started/tutorials/quick_start.rst
index 12cc393f351..52542a6eb6d 100644
--- a/docs/_sources/get_started/tutorials/quick_start.rst
+++ b/docs/_sources/get_started/tutorials/quick_start.rst
@@ -144,11 +144,11 @@ in TVM.
         def forward(x: R.Tensor((1, 784), dtype="float32"), fc1_weight: R.Tensor((256, 784), dtype="float32"), fc1_bias: R.Tensor((256,), dtype="float32"), fc2_weight: R.Tensor((10, 256), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims: R.Tensor((784, 256), dtype="float32") = I.Call("relax.permute_dims", [fc1_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 256), dtype="float32"))
+                permute_dims: R.Tensor((784, 256), dtype="float32") = R.permute_dims(fc1_weight)
                 matmul: R.Tensor((1, 256), dtype="float32") = I.Call("relax.matmul", [x, permute_dims], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 256), dtype="float32"))
                 add: R.Tensor((1, 256), dtype="float32") = R.add(matmul, fc1_bias, ty=R.Tensor((1, 256), dtype="float32"))
                 relu: R.Tensor((1, 256), dtype="float32") = R.nn.relu(add)
-                permute_dims1: R.Tensor((256, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((256, 10), dtype="float32"))
+                permute_dims1: R.Tensor((256, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 matmul1: R.Tensor((1, 10), dtype="float32") = I.Call("relax.matmul", [relu, permute_dims1], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 10), dtype="float32"))
                 add1: R.Tensor((1, 10), dtype="float32") = R.add(matmul1, fc2_bias, ty=R.Tensor((1, 10), dtype="float32"))
                 gv: R.Tensor((1, 10), dtype="float32") = add1
@@ -226,8 +226,8 @@ different devices.
 
  .. code-block:: none
 
-    [[25108.578 25844.07  25979.24  26348.05  25168.773 25847.172 24586.246
-      25995.445 26530.38  25515.549]]
+    [[25122.676 25524.105 26727.49  24541.062 24177.166 24328.219 25000.912
+      24791.475 24570.314 23909.021]]
 
 
 
diff --git a/docs/_sources/get_started/tutorials/sg_execution_times.rst b/docs/_sources/get_started/tutorials/sg_execution_times.rst
index 31d2146bda8..37ecefbd97e 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:06.556** total execution time for 2 files **from get_started/tutorials**:
+**00:05.643** 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:06.350
+     - 00:05.473
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``quick_start.py``)
-     - 00:00.207
+     - 00:00.170
      - 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 49beb105ad8..49f27d547a9 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
 
-    1.07e-07 secs/op
+    9.2e-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/tmpijy_x2fd/model_deployed.so
-    Saved parameters to: /tmp/tmpijy_x2fd/model_params.npz
+    Exported library to: /tmp/tmphs8_oft0/model_deployed.so
+    Saved parameters to: /tmp/tmphs8_oft0/model_params.npz
 
     RPC workflow (works for any remote device):
     ==================================================
diff --git a/docs/_sources/how_to/tutorials/customize_opt.rst b/docs/_sources/how_to/tutorials/customize_opt.rst
index 6d7a4b69993..061c4d7c4d9 100644
--- a/docs/_sources/how_to/tutorials/customize_opt.rst
+++ b/docs/_sources/how_to/tutorials/customize_opt.rst
@@ -129,11 +129,11 @@ with NN module frontend or TVMScript. Here we use a simple neural network model
         def forward(x: R.Tensor((1, 784), dtype="float32"), fc1_weight: R.Tensor((256, 784), dtype="float32"), fc1_bias: R.Tensor((256,), dtype="float32"), fc2_weight: R.Tensor((10, 256), dtype="float32")) -> R.Tensor((1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                permute_dims: R.Tensor((784, 256), dtype="float32") = I.Call("relax.permute_dims", [fc1_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((784, 256), dtype="float32"))
+                permute_dims: R.Tensor((784, 256), dtype="float32") = R.permute_dims(fc1_weight)
                 matmul: R.Tensor((1, 256), dtype="float32") = I.Call("relax.matmul", [x, permute_dims], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 256), dtype="float32"))
                 add: R.Tensor((1, 256), dtype="float32") = R.add(matmul, fc1_bias, ty=R.Tensor((1, 256), dtype="float32"))
                 relu: R.Tensor((1, 256), dtype="float32") = R.nn.relu(add)
-                permute_dims1: R.Tensor((256, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((256, 10), dtype="float32"))
+                permute_dims1: R.Tensor((256, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 matmul1: R.Tensor((1, 10), dtype="float32") = I.Call("relax.matmul", [relu, permute_dims1], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 10), dtype="float32"))
                 gv: R.Tensor((1, 10), dtype="float32") = matmul1
                 R.output(gv)
@@ -217,8 +217,8 @@ operator. Here we demonstrate how to dispatch the CUBLAS library for certain pat
         def forward(x: R.Tensor((1, 784), dtype="float32"), fc1_weight: R.Tensor((256, 784), dtype="float32"), fc1_bias: R.Tensor((256,), dtype="float32"), fc2_weight: R.Tensor((10, 256), dtype="float32")) -> R.Tensor((1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                lv = R.call_dps_packed("fused_relax_permute_dims_relax_matmul_relax_add_relax_nn_relu_cublas", I.Tuple([fc1_weight, x, fc1_bias]), ty_args=[R.Tensor((1, 256), dtype="float32")])
-                permute_dims1: R.Tensor((256, 10), dtype="float32") = I.Call("relax.permute_dims", [fc2_weight], attrs=I.make_node("relax.attrs.PermuteDimsAttrs", axes=None), ty=R.Tensor((256, 10), dtype="float32"))
+                lv = R.call_dps_packed("fused_relax_permute_dims_relax_matmul_relax_add_relax_nn_relu_cublas", (fc1_weight, x, fc1_bias), ty_args=[R.Tensor((1, 256), dtype="float32")])
+                permute_dims1: R.Tensor((256, 10), dtype="float32") = R.permute_dims(fc2_weight)
                 matmul1: R.Tensor((1, 10), dtype="float32") = I.Call("relax.matmul", [lv, permute_dims1], attrs=I.make_node("relax.attrs.MatmulAttrs", out_dtype=None), ty=R.Tensor((1, 10), dtype="float32"))
                 gv: R.Tensor((1, 10), dtype="float32") = matmul1
                 R.output(gv)
@@ -347,7 +347,7 @@ it achieves a balance between performance and compilation time.
                                 vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                 v0 = Ts.axis.spatial(T.int64(10), ax0_fused_0 * T.int64(10) + ax0_fused_1, dtype="int64")
                                 Ts.reads()
-                                Ts.writes(matmul_rf_local[vax1_fused_1, T.int64(0), v0])
+                                Ts.writes(matmul_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                                 matmul_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                             for ax1_fused_0 in range(T.int64(0), T.int64(16)):
                                 for u in range(1):
@@ -355,16 +355,16 @@ it achieves a balance between performance and compilation time.
                                         vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype="int64")
                                         v0_1 = Ts.axis.spatial(T.int64(10), ax0_fused_0 * T.int64(10) + ax0_fused_1, dtype="int64")
                                         vax1_fused_0 = Ts.axis.reduce(T.int64(16), ax1_fused_0, dtype="int64")
-                                        Ts.reads(matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1], lv[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                        Ts.writes(matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                        Ts.reads(matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], lv[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                        Ts.writes(matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                         matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + lv[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                     for ax1_fused in T.thread_binding(T.int64(10), thread="threadIdx.x"):
                         for ax0 in T.thread_binding(T.int64(16), thread="threadIdx.y"):
                             with Ts.sblock("matmul"):
                                 vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype="int64")
                                 v0_2 = Ts.axis.spatial(T.int64(10), ax1_fused, dtype="int64")
-                                Ts.reads(matmul_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                                Ts.writes(matmul[T.int64(0), v0_2])
+                                Ts.reads(matmul_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                                Ts.writes(matmul[T.int64(0), v0_2:v0_2 + T.int64(1)])
                                 with Ts.init():
                                     matmul[T.int64(0), v0_2] = T.float32(0.0)
                                 matmul[T.int64(0), v0_2] = matmul[T.int64(0), v0_2] + matmul_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -381,17 +381,17 @@ it achieves a balance between performance and compilation time.
                             v0 = Ts.axis.spatial(T.int64(256), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(10), dtype="int64")
                             v1 = Ts.axis.spatial(T.int64(10), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(10), dtype="int64")
                             Ts.where(ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1 < T.int64(2560))
-                            Ts.reads(fc2_weight[v1, v0])
-                            Ts.writes(T_transpose[v0, v1])
+                            Ts.reads(fc2_weight[v1, v0:v0 + T.int64(1)])
+                            Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                             T_transpose[v0, v1] = fc2_weight[v1, v0]
 
         @R.function
         def forward(x: R.Tensor((1, 784), dtype="float32"), fc1_weight: R.Tensor((256, 784), dtype="float32"), fc1_bias: R.Tensor((256,), dtype="float32"), fc2_weight: R.Tensor((10, 256), dtype="float32")) -> R.Tensor((1, 10), dtype="float32"):
             R.func_attr({"num_input": 1})
             with R.dataflow():
-                lv = R.call_dps_packed("fused_relax_permute_dims_relax_matmul_relax_add_relax_nn_relu_cublas", I.Tuple([fc1_weight, x, fc1_bias]), ty_args=[R.Tensor((1, 256), dtype="float32")])
-                permute_dims1 = R.call_tir(Module.transpose, I.Tuple([fc2_weight]), ty_args=[R.Tensor((256, 10), dtype="float32")])
-                gv = R.call_tir(Module.matmul, I.Tuple([lv, permute_dims1]), ty_args=[R.Tensor((1, 10), dtype="float32")])
+                lv = R.call_dps_packed("fused_relax_permute_dims_relax_matmul_relax_add_relax_nn_relu_cublas", (fc1_weight, x, fc1_bias), ty_args=[R.Tensor((1, 256), dtype="float32")])
+                permute_dims1 = R.call_tir(Module.transpose, (fc2_weight,), ty_args=[R.Tensor((256, 10), dtype="float32")])
+                gv = R.call_tir(Module.matmul, (lv, permute_dims1), ty_args=[R.Tensor((1, 10), dtype="float32")])
                 R.output(gv)
             return gv
 
diff --git a/docs/_sources/how_to/tutorials/e2e_opt_model.rst b/docs/_sources/how_to/tutorials/e2e_opt_model.rst
index 072661a94c0..d88bd5951cd 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]      61%|██████▏   | 27.4M/44.7M [00:00<00:00, 286MB/s]     100%|██████████| 44.7M/44.7M [00:00<00:00, 322MB/s]
+       0%|          | 0.00/44.7M [00:00<?, ?B/s]      55%|█████▌    | 24.8M/44.7M [00:00<00:00, 259MB/s]     100%|██████████| 44.7M/44.7M [00:00<00:00, 289MB/s]
 
 
 
diff --git a/docs/_sources/how_to/tutorials/sg_execution_times.rst b/docs/_sources/how_to/tutorials/sg_execution_times.rst
index 06b6fee52ba..3340b5dfbee 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:18.679** total execution time for 8 files **from how_to/tutorials**:
+**00:15.114** total execution time for 8 files **from how_to/tutorials**:
 
 .. container::
 
@@ -33,25 +33,25 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``optimize_llm.py``)
-     - 00:13.225
+     - 00:10.233
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``import_model.py``)
-     - 00:03.664
+     - 00:03.335
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``e2e_opt_model.py``)
-     - 00:00.696
+     - 00:00.621
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
-     - 00:00.590
+     - 00:00.489
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``customize_opt.py``)
-     - 00:00.360
+     - 00:00.308
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``bring_your_own_codegen.py``)
-     - 00:00.137
+     - 00:00.122
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_mix_python_and_tvm_with_pymodule.py` (``mix_python_and_tvm_with_pymodule.py``)
-     - 00:00.005
+     - 00:00.004
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_export_and_load_executable.py` (``export_and_load_executable.py``)
      - 00:00.002
diff --git a/docs/_sources/sg_execution_times.rst b/docs/_sources/sg_execution_times.rst
index 4582b50b6e9..391f5f10c23 100644
--- a/docs/_sources/sg_execution_times.rst
+++ b/docs/_sources/sg_execution_times.rst
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:26.170** total execution time for 16 files **from all galleries**:
+**00:21.537** total execution time for 16 files **from all galleries**:
 
 .. container::
 
@@ -33,49 +33,49 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``../how_to/tutorials/optimize_llm.py``)
-     - 00:13.225
+     - 00:10.233
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``../get_started/tutorials/ir_module.py``)
-     - 00:06.350
+     - 00:05.473
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``../how_to/tutorials/import_model.py``)
-     - 00:03.664
+     - 00:03.335
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``../how_to/tutorials/e2e_opt_model.py``)
-     - 00:00.696
+     - 00:00.621
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``../how_to/tutorials/cross_compilation_and_rpc.py``)
-     - 00:00.590
+     - 00:00.489
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``../how_to/tutorials/customize_opt.py``)
-     - 00:00.360
+     - 00:00.308
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``../deep_dive/tensor_ir/tutorials/tir_transformation.py``)
-     - 00:00.317
+     - 00:00.267
      - 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.220
+     - 00:00.184
      - 0.0
    * - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``../get_started/tutorials/quick_start.py``)
-     - 00:00.207
+     - 00:00.170
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``../deep_dive/tensor_ir/tutorials/tir_creation.py``)
-     - 00:00.161
+     - 00:00.138
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``../how_to/tutorials/bring_your_own_codegen.py``)
-     - 00:00.137
+     - 00:00.122
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``../deep_dive/relax/tutorials/relax_creation.py``)
-     - 00:00.119
+     - 00:00.095
      - 0.0
    * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``../deep_dive/relax/tutorials/relax_transformation.py``)
-     - 00:00.103
+     - 00:00.083
      - 0.0
    * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``../deep_dive/tensor_ir/tutorials/meta_schedule.py``)
-     - 00:00.014
+     - 00:00.012
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_mix_python_and_tvm_with_pymodule.py` (``../how_to/tutorials/mix_python_and_tvm_with_pymodule.py``)
-     - 00:00.005
+     - 00:00.004
      - 0.0
    * - :ref:`sphx_glr_how_to_tutorials_export_and_load_executable.py` (``../how_to/tutorials/export_and_load_executable.py``)
      - 00:00.002
diff --git a/docs/commit_hash b/docs/commit_hash
index 113c3fa13bd..59e1e669f6e 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-ebeebf1116fb2360fa74a82e5f07ffaa7916e87b
+9059d9d25149c9ca7a015717b5023d1e2e1185fd
diff --git a/docs/deep_dive/relax/tutorials/relax_creation.html b/docs/deep_dive/relax/tutorials/relax_creation.html
index 3843aceeaa1..e0c0dab58ba 100644
--- a/docs/deep_dive/relax/tutorials/relax_creation.html
+++ b/docs/deep_dive/relax/tutorials/relax_creation.html
@@ -696,11 +696,11 @@ class Module:
     @R.function
     def forward(data: R.Tensor((n, 784), dtype=&quot;float32&quot;), w0: R.Tensor((128, 784), dtype=&quot;float32&quot;), b0: R.Tensor((128,), dtype=&quot;float32&quot;), w1: R.Tensor((10, 128), dtype=&quot;float32&quot;), b1: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n, 10), dtype=&quot;float32&quot;):
         with R.dataflow():
-            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [w0], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 128), dtype=&quot;float32&quot;))
+            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(w0)
             lv1: R.Tensor((n, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [data, lv], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             lv0: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(lv1, b0, ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             lv1_1: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.relu(lv0)
-            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [w1], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((128, 10), dtype=&quot;float32&quot;))
+            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(w1)
             lv5: R.Tensor((n, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [lv1_1, lv4], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             lv2: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(lv5, b1, ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             R.output(lv2)
@@ -764,18 +764,18 @@ class Module:
                     with Ts.sblock(&quot;relu&quot;):
                         v = Ts.axis.spatial(n, i, dtype=&quot;int64&quot;)
                         v_1 = Ts.axis.spatial(m, j, dtype=&quot;int64&quot;)
-                        Ts.reads(X[v, v_1])
-                        Ts.writes(Y[v, v_1])
+                        Ts.reads(X[v, v_1:v_1 + T.int64(1)])
+                        Ts.writes(Y[v, v_1:v_1 + T.int64(1)])
                         Y[v, v_1] = T.max(X[v, v_1], T.float32(0.0))
 
     @R.function
     def forward(data: R.Tensor((n, 784), dtype=&quot;float32&quot;), w0: R.Tensor((128, 784), dtype=&quot;float32&quot;), b0: R.Tensor((128,), dtype=&quot;float32&quot;), w1: R.Tensor((10, 128), dtype=&quot;float32&quot;), b1: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n, 10), dtype=&quot;float32&quot;):
         with R.dataflow():
-            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [w0], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 128), dtype=&quot;float32&quot;))
+            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(w0)
             lv1: R.Tensor((n, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [data, lv], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             lv0: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(lv1, b0, ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
-            lv1_1 = R.call_tir(Module.relu, I.Tuple([lv0]), ty_args=[R.Tensor((n, 128), dtype=&quot;float32&quot;)])
-            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [w1], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((128, 10), dtype=&quot;float32&quot;))
+            lv1_1 = R.call_tir(Module.relu, (lv0,), ty_args=[R.Tensor((n, 128), dtype=&quot;float32&quot;)])
+            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(w1)
             lv5: R.Tensor((n, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [lv1_1, lv4], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             lv2: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(lv5, b1, ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             R.output(lv2)
@@ -842,11 +842,11 @@ class Module:
     def forward(x: R.Tensor((n, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc1_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 128), dtype=&quot;float32&quot;))
+            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight)
             matmul: R.Tensor((n, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [x, permute_dims], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             add: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias, ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             relu: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.relu(add)
-            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((128, 10), dtype=&quot;float32&quot;))
+            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             matmul1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [relu, permute_dims1], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             add1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias, ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = add1
@@ -937,8 +937,8 @@ class Module:
                     with Ts.sblock(&quot;compute&quot;):
                         v_i0 = Ts.axis.spatial(n, i0, dtype=&quot;int64&quot;)
                         v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype=&quot;int64&quot;)
-                        Ts.reads(env_linear[v_i0, v_i1])
-                        Ts.writes(compute[v_i0, v_i1])
+                        Ts.reads(env_linear[v_i0, v_i1:v_i1 + T.int64(1)])
+                        Ts.writes(compute[v_i0, v_i1:v_i1 + T.int64(1)])
                         compute[v_i0, v_i1] = T.max(env_linear[v_i0, v_i1], T.float32(0.0))
 
     @Ts.function
@@ -953,8 +953,8 @@ class Module:
                             v = Ts.axis.spatial(M, i, dtype=&quot;int64&quot;)
                             v_1 = Ts.axis.spatial(N, j, dtype=&quot;int64&quot;)
                             v_2 = Ts.axis.reduce(K, k, dtype=&quot;int64&quot;)
-                            Ts.reads(X[v, v_2], W[v_1, v_2])
-                            Ts.writes(Z[v, v_1])
+                            Ts.reads(X[v, v_2:v_2 + T.int64(1)], W[v_1, v_2:v_2 + T.int64(1)])
+                            Ts.writes(Z[v, v_1:v_1 + T.int64(1)])
                             with Ts.init():
                                 Z[v, v_1] = T.float32(0.0)
                             Z[v, v_1] = Z[v, v_1] + X[v, v_2] * W[v_1, v_2]
@@ -963,17 +963,17 @@ class Module:
                     with Ts.sblock(&quot;add&quot;):
                         v_3 = Ts.axis.spatial(M, i_1, dtype=&quot;int64&quot;)
                         v_4 = Ts.axis.spatial(N, j_1, dtype=&quot;int64&quot;)
-                        Ts.reads(Z[v_3, v_4], B[v_4])
-                        Ts.writes(Z[v_3, v_4])
+                        Ts.reads(Z[v_3, v_4:v_4 + T.int64(1)], B[v_4:v_4 + T.int64(1)])
+                        Ts.writes(Z[v_3, v_4:v_4 + T.int64(1)])
                         Z[v_3, v_4] = Z[v_3, v_4] + B[v_4]
 
     @R.function
     def forward(x: R.Tensor((n_1, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n_1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            env_linear = R.call_dps_packed(&quot;env.linear&quot;, I.Tuple([x, fc1_weight, fc1_bias]), ty_args=[R.Tensor((n_1, 128), dtype=&quot;float32&quot;)])
-            lv = R.call_tir(Module.relu, I.Tuple([env_linear]), ty_args=[R.Tensor((n_1, 128), dtype=&quot;float32&quot;)])
-            lv1 = R.call_tir(Module.tir_linear, I.Tuple([lv, fc2_weight, fc2_bias]), ty_args=[R.Tensor((n_1, 10), dtype=&quot;float32&quot;)])
+            env_linear = R.call_dps_packed(&quot;env.linear&quot;, (x, fc1_weight, fc1_bias), ty_args=[R.Tensor((n_1, 128), dtype=&quot;float32&quot;)])
+            lv = R.call_tir(Module.relu, (env_linear,), ty_args=[R.Tensor((n_1, 128), dtype=&quot;float32&quot;)])
+            lv1 = R.call_tir(Module.tir_linear, (lv, fc2_weight, fc2_bias), ty_args=[R.Tensor((n_1, 10), dtype=&quot;float32&quot;)])
             gv: R.Tensor((n_1, 10), dtype=&quot;float32&quot;) = lv1
             R.output(gv)
         return gv
@@ -1016,11 +1016,11 @@ class Module:
     @R.function
     def forward(x: R.Tensor((n, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n, 10), dtype=&quot;float32&quot;):
         with R.dataflow():
-            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc1_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 128), dtype=&quot;float32&quot;))
+            lv: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight)
             lv1: R.Tensor((n, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [x, lv], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             lv2: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(lv1, fc1_bias, ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             lv3: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.relu(lv2)
-            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((128, 10), dtype=&quot;float32&quot;))
+            lv4: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             lv5: R.Tensor((n, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [lv3, lv4], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             lv6: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(lv5, fc2_bias, ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = lv6
@@ -1080,8 +1080,8 @@ class Module:
                     with Ts.sblock(&quot;compute&quot;):
                         v_i0 = Ts.axis.spatial(n, i0, dtype=&quot;int64&quot;)
                         v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype=&quot;int64&quot;)
-                        Ts.reads(lv[v_i0, v_i1])
-                        Ts.writes(compute[v_i0, v_i1])
+                        Ts.reads(lv[v_i0, v_i1:v_i1 + T.int64(1)])
+                        Ts.writes(compute[v_i0, v_i1:v_i1 + T.int64(1)])
                         compute[v_i0, v_i1] = T.max(lv[v_i0, v_i1], T.float32(0.0))
 
     @Ts.function
@@ -1096,8 +1096,8 @@ class Module:
                             v = Ts.axis.spatial(M, i, dtype=&quot;int64&quot;)
                             v_1 = Ts.axis.spatial(N, j, dtype=&quot;int64&quot;)
                             v_2 = Ts.axis.reduce(K, k, dtype=&quot;int64&quot;)
-                            Ts.reads(X[v, v_2], W[v_1, v_2])
-                            Ts.writes(Z[v, v_1])
+                            Ts.reads(X[v, v_2:v_2 + T.int64(1)], W[v_1, v_2:v_2 + T.int64(1)])
+                            Ts.writes(Z[v, v_1:v_1 + T.int64(1)])
                             with Ts.init():
                                 Z[v, v_1] = T.float32(0.0)
                             Z[v, v_1] = Z[v, v_1] + X[v, v_2] * W[v_1, v_2]
@@ -1106,16 +1106,16 @@ class Module:
                     with Ts.sblock(&quot;add&quot;):
                         v_3 = Ts.axis.spatial(M, i_1, dtype=&quot;int64&quot;)
                         v_4 = Ts.axis.spatial(N, j_1, dtype=&quot;int64&quot;)
-                        Ts.reads(Z[v_3, v_4], B[v_4])
-                        Ts.writes(Z[v_3, v_4])
+                        Ts.reads(Z[v_3, v_4:v_4 + T.int64(1)], B[v_4:v_4 + T.int64(1)])
+                        Ts.writes(Z[v_3, v_4:v_4 + T.int64(1)])
                         Z[v_3, v_4] = Z[v_3, v_4] + B[v_4]
 
     @R.function
     def forward(x: R.Tensor((n_1, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n_1, 10), dtype=&quot;float32&quot;):
         with R.dataflow():
-            lv = R.call_dps_packed(&quot;env.linear&quot;, I.Tuple([x, fc1_weight, fc1_bias]), ty_args=[R.Tensor((n_1, 128), dtype=&quot;float32&quot;)])
-            lv1 = R.call_tir(Module.relu, I.Tuple([lv]), ty_args=[R.Tensor((n_1, 128), dtype=&quot;float32&quot;)])
-            lv2 = R.call_tir(Module.tir_linear, I.Tuple([lv1, fc2_weight, fc2_bias]), ty_args=[R.Tensor((n_1, 10), dtype=&quot;float32&quot;)])
+            lv = R.call_dps_packed(&quot;env.linear&quot;, (x, fc1_weight, fc1_bias), ty_args=[R.Tensor((n_1, 128), dtype=&quot;float32&quot;)])
+            lv1 = R.call_tir(Module.relu, (lv,), ty_args=[R.Tensor((n_1, 128), dtype=&quot;float32&quot;)])
+            lv2 = R.call_tir(Module.tir_linear, (lv1, fc2_weight, fc2_bias), ty_args=[R.Tensor((n_1, 10), dtype=&quot;float32&quot;)])
             gv: R.Tensor((n_1, 10), dtype=&quot;float32&quot;) = lv2
             R.output(gv)
         return lv2
diff --git a/docs/deep_dive/relax/tutorials/relax_transformation.html b/docs/deep_dive/relax/tutorials/relax_transformation.html
index d1a37eb1f36..a3f58699088 100644
--- a/docs/deep_dive/relax/tutorials/relax_transformation.html
+++ b/docs/deep_dive/relax/tutorials/relax_transformation.html
@@ -685,11 +685,11 @@ class Module:
     def forward(x: R.Tensor((n, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc1_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 128), dtype=&quot;float32&quot;))
+            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight)
             matmul: R.Tensor((n, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [x, permute_dims], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             add: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias, ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             relu: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.relu(add)
-            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((128, 10), dtype=&quot;float32&quot;))
+            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             matmul1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [relu, permute_dims1], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             add1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias, ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = add1
@@ -733,8 +733,8 @@ class Module:
                     with Ts.sblock(&quot;T_add&quot;):
                         v_ax0 = Ts.axis.spatial(n, ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(128), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(matmul[v_ax0, v_ax1], fc1_bias[v_ax1])
-                        Ts.writes(T_add[v_ax0, v_ax1])
+                        Ts.reads(matmul[v_ax0, v_ax1:v_ax1 + T.int64(1)], fc1_bias[v_ax1:v_ax1 + T.int64(1)])
+                        Ts.writes(T_add[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_add[v_ax0, v_ax1] = matmul[v_ax0, v_ax1] + fc1_bias[v_ax1]
 
     @Ts.function(private=True)
@@ -748,8 +748,8 @@ class Module:
                     with Ts.sblock(&quot;T_add&quot;):
                         v_ax0 = Ts.axis.spatial(n_1, ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(matmul1[v_ax0, v_ax1], fc2_bias[v_ax1])
-                        Ts.writes(T_add[v_ax0, v_ax1])
+                        Ts.reads(matmul1[v_ax0, v_ax1:v_ax1 + T.int64(1)], fc2_bias[v_ax1:v_ax1 + T.int64(1)])
+                        Ts.writes(T_add[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_add[v_ax0, v_ax1] = matmul1[v_ax0, v_ax1] + fc2_bias[v_ax1]
 
     @Ts.function(private=True)
@@ -765,8 +765,8 @@ class Module:
                             v_i0 = Ts.axis.spatial(n_2, i0, dtype=&quot;int64&quot;)
                             v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype=&quot;int64&quot;)
                             v_k = Ts.axis.reduce(T.int64(784), k, dtype=&quot;int64&quot;)
-                            Ts.reads(x[v_i0, v_k], permute_dims[v_k, v_i1])
-                            Ts.writes(matmul[v_i0, v_i1])
+                            Ts.reads(x[v_i0, v_k:v_k + T.int64(1)], permute_dims[v_k, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(matmul[v_i0, v_i1:v_i1 + T.int64(1)])
                             with Ts.init():
                                 matmul[v_i0, v_i1] = T.float32(0.0)
                             matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + x[v_i0, v_k] * permute_dims[v_k, v_i1]
@@ -784,8 +784,8 @@ class Module:
                             v_i0 = Ts.axis.spatial(n_3, i0, dtype=&quot;int64&quot;)
                             v_i1 = Ts.axis.spatial(T.int64(10), i1, dtype=&quot;int64&quot;)
                             v_k = Ts.axis.reduce(T.int64(128), k, dtype=&quot;int64&quot;)
-                            Ts.reads(relu[v_i0, v_k], permute_dims1[v_k, v_i1])
-                            Ts.writes(matmul[v_i0, v_i1])
+                            Ts.reads(relu[v_i0, v_k:v_k + T.int64(1)], permute_dims1[v_k, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(matmul[v_i0, v_i1:v_i1 + T.int64(1)])
                             with Ts.init():
                                 matmul[v_i0, v_i1] = T.float32(0.0)
                             matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + relu[v_i0, v_k] * permute_dims1[v_k, v_i1]
@@ -801,8 +801,8 @@ class Module:
                     with Ts.sblock(&quot;compute&quot;):
                         v_i0 = Ts.axis.spatial(n_4, i0, dtype=&quot;int64&quot;)
                         v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype=&quot;int64&quot;)
-                        Ts.reads(add[v_i0, v_i1])
-                        Ts.writes(compute[v_i0, v_i1])
+                        Ts.reads(add[v_i0, v_i1:v_i1 + T.int64(1)])
+                        Ts.writes(compute[v_i0, v_i1:v_i1 + T.int64(1)])
                         compute[v_i0, v_i1] = T.max(add[v_i0, v_i1], T.float32(0.0))
 
     @Ts.function(private=True)
@@ -816,8 +816,8 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(784), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(128), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(fc1_weight[v_ax1, v_ax0])
-                        Ts.writes(T_transpose[v_ax0, v_ax1])
+                        Ts.reads(fc1_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                        Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_transpose[v_ax0, v_ax1] = fc1_weight[v_ax1, v_ax0]
 
     @Ts.function(private=True)
@@ -831,21 +831,21 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(128), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(fc2_weight[v_ax1, v_ax0])
-                        Ts.writes(T_transpose[v_ax0, v_ax1])
+                        Ts.reads(fc2_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                        Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_transpose[v_ax0, v_ax1] = fc2_weight[v_ax1, v_ax0]
 
     @R.function
     def forward(x: R.Tensor((n_5, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n_5, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims = R.call_tir(Module.transpose, I.Tuple([fc1_weight]), ty_args=[R.Tensor((784, 128), dtype=&quot;float32&quot;)])
-            matmul = R.call_tir(Module.matmul, I.Tuple([x, permute_dims]), ty_args=[R.Tensor((n_5, 128), dtype=&quot;float32&quot;)])
-            add = R.call_tir(Module.add, I.Tuple([matmul, fc1_bias]), ty_args=[R.Tensor((n_5, 128), dtype=&quot;float32&quot;)])
-            relu = R.call_tir(Module.relu, I.Tuple([add]), ty_args=[R.Tensor((n_5, 128), dtype=&quot;float32&quot;)])
-            permute_dims1 = R.call_tir(Module.transpose1, I.Tuple([fc2_weight]), ty_args=[R.Tensor((128, 10), dtype=&quot;float32&quot;)])
-            matmul1 = R.call_tir(Module.matmul1, I.Tuple([relu, permute_dims1]), ty_args=[R.Tensor((n_5, 10), dtype=&quot;float32&quot;)])
-            add1 = R.call_tir(Module.add1, I.Tuple([matmul1, fc2_bias]), ty_args=[R.Tensor((n_5, 10), dtype=&quot;float32&quot;)])
+            permute_dims = R.call_tir(Module.transpose, (fc1_weight,), ty_args=[R.Tensor((784, 128), dtype=&quot;float32&quot;)])
+            matmul = R.call_tir(Module.matmul, (x, permute_dims), ty_args=[R.Tensor((n_5, 128), dtype=&quot;float32&quot;)])
+            add = R.call_tir(Module.add, (matmul, fc1_bias), ty_args=[R.Tensor((n_5, 128), dtype=&quot;float32&quot;)])
+            relu = R.call_tir(Module.relu, (add,), ty_args=[R.Tensor((n_5, 128), dtype=&quot;float32&quot;)])
+            permute_dims1 = R.call_tir(Module.transpose1, (fc2_weight,), ty_args=[R.Tensor((128, 10), dtype=&quot;float32&quot;)])
+            matmul1 = R.call_tir(Module.matmul1, (relu, permute_dims1), ty_args=[R.Tensor((n_5, 10), dtype=&quot;float32&quot;)])
+            add1 = R.call_tir(Module.add1, (matmul1, fc2_bias), ty_args=[R.Tensor((n_5, 10), dtype=&quot;float32&quot;)])
             gv: R.Tensor((n_5, 10), dtype=&quot;float32&quot;) = add1
             R.output(gv)
         return gv
@@ -892,8 +892,8 @@ class Module:
                             v_i0 = Ts.axis.spatial(n, i0, dtype=&quot;int64&quot;)
                             v_i1 = Ts.axis.spatial(T.int64(10), i1, dtype=&quot;int64&quot;)
                             v_k = Ts.axis.reduce(T.int64(128), k, dtype=&quot;int64&quot;)
-                            Ts.reads(relu[v_i0, v_k], permute_dims1[v_k, v_i1])
-                            Ts.writes(matmul_intermediate[v_i0, v_i1])
+                            Ts.reads(relu[v_i0, v_k:v_k + T.int64(1)], permute_dims1[v_k, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(matmul_intermediate[v_i0, v_i1:v_i1 + T.int64(1)])
                             with Ts.init():
                                 matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
                             matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + relu[v_i0, v_k] * permute_dims1[v_k, v_i1]
@@ -902,8 +902,8 @@ class Module:
                     with Ts.sblock(&quot;T_add&quot;):
                         v_ax0 = Ts.axis.spatial(n, ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(matmul_intermediate[v_ax0, v_ax1], fc2_bias[v_ax1])
-                        Ts.writes(T_add_intermediate[v_ax0, v_ax1])
+                        Ts.reads(matmul_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)], fc2_bias[v_ax1:v_ax1 + T.int64(1)])
+                        Ts.writes(T_add_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_add_intermediate[v_ax0, v_ax1] = matmul_intermediate[v_ax0, v_ax1] + fc2_bias[v_ax1]
 
     @Ts.function(private=True)
@@ -921,8 +921,8 @@ class Module:
                             v_i0 = Ts.axis.spatial(n_1, i0, dtype=&quot;int64&quot;)
                             v_i1 = Ts.axis.spatial(T.int64(128), i1, dtype=&quot;int64&quot;)
                             v_k = Ts.axis.reduce(T.int64(784), k, dtype=&quot;int64&quot;)
-                            Ts.reads(x[v_i0, v_k], permute_dims[v_k, v_i1])
-                            Ts.writes(matmul_intermediate[v_i0, v_i1])
+                            Ts.reads(x[v_i0, v_k:v_k + T.int64(1)], permute_dims[v_k, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(matmul_intermediate[v_i0, v_i1:v_i1 + T.int64(1)])
                             with Ts.init():
                                 matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
                             matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + x[v_i0, v_k] * permute_dims[v_k, v_i1]
@@ -931,16 +931,16 @@ class Module:
                     with Ts.sblock(&quot;T_add&quot;):
                         v_ax0 = Ts.axis.spatial(n_1, ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(128), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(matmul_intermediate[v_ax0, v_ax1], fc1_bias[v_ax1])
-                        Ts.writes(T_add_intermediate[v_ax0, v_ax1])
+                        Ts.reads(matmul_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)], fc1_bias[v_ax1:v_ax1 + T.int64(1)])
+                        Ts.writes(T_add_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_add_intermediate[v_ax0, v_ax1] = matmul_intermediate[v_ax0, v_ax1] + fc1_bias[v_ax1]
             for i0_1 in range(T.int64(0), n_1):
                 for i1_1 in range(T.int64(0), T.int64(128)):
                     with Ts.sblock(&quot;compute&quot;):
                         v_i0_1 = Ts.axis.spatial(n_1, i0_1, dtype=&quot;int64&quot;)
                         v_i1_1 = Ts.axis.spatial(T.int64(128), i1_1, dtype=&quot;int64&quot;)
-                        Ts.reads(T_add_intermediate[v_i0_1, v_i1_1])
-                        Ts.writes(compute_intermediate[v_i0_1, v_i1_1])
+                        Ts.reads(T_add_intermediate[v_i0_1, v_i1_1:v_i1_1 + T.int64(1)])
+                        Ts.writes(compute_intermediate[v_i0_1, v_i1_1:v_i1_1 + T.int64(1)])
                         compute_intermediate[v_i0_1, v_i1_1] = T.max(T_add_intermediate[v_i0_1, v_i1_1], T.float32(0.0))
 
     @Ts.function(private=True)
@@ -954,8 +954,8 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(784), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(128), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(fc1_weight[v_ax1, v_ax0])
-                        Ts.writes(T_transpose[v_ax0, v_ax1])
+                        Ts.reads(fc1_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                        Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_transpose[v_ax0, v_ax1] = fc1_weight[v_ax1, v_ax0]
 
     @Ts.function(private=True)
@@ -969,18 +969,18 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(128), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(fc2_weight[v_ax1, v_ax0])
-                        Ts.writes(T_transpose[v_ax0, v_ax1])
+                        Ts.reads(fc2_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                        Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_transpose[v_ax0, v_ax1] = fc2_weight[v_ax1, v_ax0]
 
     @R.function
     def forward(x: R.Tensor((n_2, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n_2, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims = R.call_tir(Module.transpose, I.Tuple([fc1_weight]), ty_args=[R.Tensor((784, 128), dtype=&quot;float32&quot;)])
-            lv = R.call_tir(Module.fused_matmul_add_relu, I.Tuple([x, permute_dims, fc1_bias]), ty_args=[R.Tensor((n_2, 128), dtype=&quot;float32&quot;)])
-            permute_dims1 = R.call_tir(Module.transpose1, I.Tuple([fc2_weight]), ty_args=[R.Tensor((128, 10), dtype=&quot;float32&quot;)])
-            gv = R.call_tir(Module.fused_matmul1_add1, I.Tuple([lv, permute_dims1, fc2_bias]), ty_args=[R.Tensor((n_2, 10), dtype=&quot;float32&quot;)])
+            permute_dims = R.call_tir(Module.transpose, (fc1_weight,), ty_args=[R.Tensor((784, 128), dtype=&quot;float32&quot;)])
+            lv = R.call_tir(Module.fused_matmul_add_relu, (x, permute_dims, fc1_bias), ty_args=[R.Tensor((n_2, 128), dtype=&quot;float32&quot;)])
+            permute_dims1 = R.call_tir(Module.transpose1, (fc2_weight,), ty_args=[R.Tensor((128, 10), dtype=&quot;float32&quot;)])
+            gv = R.call_tir(Module.fused_matmul1_add1, (lv, permute_dims1, fc2_bias), ty_args=[R.Tensor((n_2, 10), dtype=&quot;float32&quot;)])
             R.output(gv)
         return gv
 </pre></div>
@@ -1039,11 +1039,11 @@ class Module:
     def forward(x: R.Tensor((n, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((128, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((128,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 128), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((n, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc1_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 128), dtype=&quot;float32&quot;))
+            permute_dims: R.Tensor((784, 128), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight)
             matmul: R.Tensor((n, 128), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [x, permute_dims], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             add: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias, ty=R.Tensor((n, 128), dtype=&quot;float32&quot;))
             relu: R.Tensor((n, 128), dtype=&quot;float32&quot;) = R.nn.gelu(add)
-            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((128, 10), dtype=&quot;float32&quot;))
+            permute_dims1: R.Tensor((128, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             matmul1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [relu, permute_dims1], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             add1: R.Tensor((n, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias, ty=R.Tensor((n, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((n, 10), dtype=&quot;float32&quot;) = add1
diff --git a/docs/deep_dive/relax/tutorials/sg_execution_times.html b/docs/deep_dive/relax/tutorials/sg_execution_times.html
index aea5c351b8d..380fb252531 100644
--- a/docs/deep_dive/relax/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/relax/tutorials/sg_execution_times.html
@@ -627,7 +627,7 @@ document.write(`
                   
   <section id="computation-times">
 <span id="sphx-glr-deep-dive-relax-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:00.222</strong> total execution time for 2 files <strong>from deep_dive/relax/tutorials</strong>:</p>
+<p><strong>00:00.177</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" />
@@ -649,11 +649,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.119</p></td>
+<td><p>00:00.095</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.103</p></td>
+<td><p>00:00.083</p></td>
 <td><p>0.0</p></td>
 </tr>
 </tbody>
diff --git a/docs/deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.html b/docs/deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.html
index 7989f04de51..2ebe2fc2b65 100644
--- a/docs/deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.html
+++ b/docs/deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.html
@@ -765,7 +765,7 @@ class Module:
                             vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                             v0 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype=&quot;int64&quot;)
                             Ts.reads()
-                            Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0])
+                            Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                             matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                         for ax1_fused_0 in range(T.int64(0), T.int64(48)):
                             for u in range(1):
@@ -773,16 +773,16 @@ class Module:
                                     vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                                     v0_1 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype=&quot;int64&quot;)
                                     vax1_fused_0 = Ts.axis.reduce(T.int64(48), ax1_fused_0, dtype=&quot;int64&quot;)
-                                    Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1], layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                    Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                    Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                    Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                     matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                 for ax1_fused in T.thread_binding(T.int64(16), thread=&quot;threadIdx.x&quot;):
                     for ax0 in T.thread_binding(T.int64(16), thread=&quot;threadIdx.y&quot;):
                         with Ts.sblock(&quot;matmul&quot;):
                             vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype=&quot;int64&quot;)
                             v0_2 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax1_fused, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                            Ts.writes(matmul_intermediate_local[T.int64(0), v0_2])
+                            Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                            Ts.writes(matmul_intermediate_local[T.int64(0), v0_2:v0_2 + T.int64(1)])
                             with Ts.init():
                                 matmul_intermediate_local[T.int64(0), v0_2] = T.float32(0.0)
                             matmul_intermediate_local[T.int64(0), v0_2] = matmul_intermediate_local[T.int64(0), v0_2] + matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -790,8 +790,8 @@ class Module:
                     for ax0_fused_1_1 in range(T.int64(0), T.int64(1)):
                         with Ts.sblock(&quot;T_add&quot;):
                             v0_3 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_0_1 + ax0_fused_1_1, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_intermediate_local[T.int64(0), v0_3], fc2_bias[v0_3])
-                            Ts.writes(T_add_intermediate[T.int64(0), v0_3])
+                            Ts.reads(matmul_intermediate_local[T.int64(0), v0_3:v0_3 + T.int64(1)], fc2_bias[v0_3:v0_3 + T.int64(1)])
+                            Ts.writes(T_add_intermediate[T.int64(0), v0_3:v0_3 + T.int64(1)])
                             T_add_intermediate[T.int64(0), v0_3] = matmul_intermediate_local[T.int64(0), v0_3] + fc2_bias[v0_3]
 
     @Ts.function(private=True)
@@ -809,7 +809,7 @@ class Module:
                             vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                             v0 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype=&quot;int64&quot;)
                             Ts.reads()
-                            Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0])
+                            Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                             matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                         for ax1_fused_0 in range(T.int64(0), T.int64(48)):
                             for u in range(1):
@@ -817,16 +817,16 @@ class Module:
                                     vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                                     v0_1 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype=&quot;int64&quot;)
                                     vax1_fused_0 = Ts.axis.reduce(T.int64(48), ax1_fused_0, dtype=&quot;int64&quot;)
-                                    Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1], x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                    Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                    Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                    Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                     matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                 for ax1_fused in T.thread_binding(T.int64(16), thread=&quot;threadIdx.x&quot;):
                     for ax0 in T.thread_binding(T.int64(16), thread=&quot;threadIdx.y&quot;):
                         with Ts.sblock(&quot;matmul&quot;):
                             vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype=&quot;int64&quot;)
                             v0_2 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax1_fused, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                            Ts.writes(matmul_intermediate_local[T.int64(0), v0_2])
+                            Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                            Ts.writes(matmul_intermediate_local[T.int64(0), v0_2:v0_2 + T.int64(1)])
                             with Ts.init():
                                 matmul_intermediate_local[T.int64(0), v0_2] = T.float32(0.0)
                             matmul_intermediate_local[T.int64(0), v0_2] = matmul_intermediate_local[T.int64(0), v0_2] + matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -834,8 +834,8 @@ class Module:
                     for ax0_fused_1_1 in range(T.int64(0), T.int64(1)):
                         with Ts.sblock(&quot;compute&quot;):
                             v0_3 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_0_1 + ax0_fused_1_1, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_intermediate_local[T.int64(0), v0_3], fc1_bias[v0_3])
-                            Ts.writes(compute_intermediate[T.int64(0), v0_3])
+                            Ts.reads(matmul_intermediate_local[T.int64(0), v0_3:v0_3 + T.int64(1)], fc1_bias[v0_3:v0_3 + T.int64(1)])
+                            Ts.writes(compute_intermediate[T.int64(0), v0_3:v0_3 + T.int64(1)])
                             compute_intermediate[T.int64(0), v0_3] = T.max(matmul_intermediate_local[T.int64(0), v0_3] + fc1_bias[v0_3], T.float32(0.0))
 
     @Ts.function(private=True)
@@ -853,8 +853,8 @@ class Module:
                             with Ts.sblock(&quot;relu_sum&quot;):
                                 v0 = Ts.axis.spatial(T.int64(1), ax0, dtype=&quot;int64&quot;)
                                 v1 = Ts.axis.reduce(T.int64(768), ax1_fused_0 * T.int64(256) + ax1_fused_1, dtype=&quot;int64&quot;)
-                                Ts.reads(relu[T.int64(0), v1])
-                                Ts.writes(relu_sum_shared[T.int64(0)])
+                                Ts.reads(relu[T.int64(0), v1:v1 + T.int64(1)])
+                                Ts.writes(relu_sum_shared[T.int64(0):T.int64(1)])
                                 with Ts.init():
                                     relu_sum_shared[T.int64(0)] = T.float32(0.0)
                                 relu_sum_shared[T.int64(0)] = relu_sum_shared[T.int64(0)] + relu[T.int64(0), v1]
@@ -864,8 +864,8 @@ class Module:
                             with Ts.sblock(&quot;relu_var_sum&quot;):
                                 v0_1 = Ts.axis.spatial(T.int64(1), ax0_1, dtype=&quot;int64&quot;)
                                 v1_1 = Ts.axis.reduce(T.int64(768), ax1_fused_0_1 * T.int64(256) + ax1_fused_1_1, dtype=&quot;int64&quot;)
-                                Ts.reads(relu[T.int64(0), v1_1], relu_sum_shared[T.int64(0)])
-                                Ts.writes(relu_var_sum_shared[T.int64(0)])
+                                Ts.reads(relu[T.int64(0), v1_1:v1_1 + T.int64(1)], relu_sum_shared[T.int64(0):T.int64(1)])
+                                Ts.writes(relu_var_sum_shared[T.int64(0):T.int64(1)])
                                 with Ts.init():
                                     relu_var_sum_shared[T.int64(0)] = T.float32(0.0)
                                 relu_var_sum_shared[T.int64(0)] = relu_var_sum_shared[T.int64(0)] + (relu[T.int64(0), v1_1] - relu_sum_shared[T.int64(0)] / T.float32(768.0)) * (relu[T.int64(0), v1_1] - relu_sum_shared[T.int64(0)] / T.float32(768.0))
@@ -874,8 +874,8 @@ class Module:
                         with Ts.sblock(&quot;T_layer_norm&quot;):
                             v0_2 = Ts.axis.spatial(T.int64(1), T.int64(0), dtype=&quot;int64&quot;)
                             v1_2 = Ts.axis.spatial(T.int64(768), ax1_0 * T.int64(256) + ax1_1, dtype=&quot;int64&quot;)
-                            Ts.reads(relu[T.int64(0), v1_2], relu_sum_shared[T.int64(0)], relu_var_sum_shared[T.int64(0)], norm_weight[v1_2], norm_bias[v1_2])
-                            Ts.writes(T_layer_norm[T.int64(0), v1_2])
+                            Ts.reads(relu[T.int64(0), v1_2:v1_2 + T.int64(1)], relu_sum_shared[T.int64(0):T.int64(1)], relu_var_sum_shared[T.int64(0):T.int64(1)], norm_weight[v1_2:v1_2 + T.int64(1)], norm_bias[v1_2:v1_2 + T.int64(1)])
+                            Ts.writes(T_layer_norm[T.int64(0), v1_2:v1_2 + T.int64(1)])
                             T_layer_norm[T.int64(0), v1_2] = (relu[T.int64(0), v1_2] - relu_sum_shared[T.int64(0)] / T.float32(768.0)) * T.rsqrt(relu_var_sum_shared[T.int64(0)] / T.float32(768.0) + T.float32(1.0000000000000001e-05)) * norm_weight[v1_2] + norm_bias[v1_2]
 
     @Ts.function(private=True)
@@ -889,8 +889,8 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v0 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(768), dtype=&quot;int64&quot;)
                         v1 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(768), dtype=&quot;int64&quot;)
-                        Ts.reads(fc1_weight[v1, v0])
-                        Ts.writes(T_transpose[v0, v1])
+                        Ts.reads(fc1_weight[v1, v0:v0 + T.int64(1)])
+                        Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                         T_transpose[v0, v1] = fc1_weight[v1, v0]
 
     @Ts.function(private=True)
@@ -904,19 +904,19 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v0 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(256), dtype=&quot;int64&quot;)
                         v1 = Ts.axis.spatial(T.int64(256), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(256), dtype=&quot;int64&quot;)
-                        Ts.reads(fc2_weight[v1, v0])
-                        Ts.writes(T_transpose[v0, v1])
+                        Ts.reads(fc2_weight[v1, v0:v0 + T.int64(1)])
+                        Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                         T_transpose[v0, v1] = fc2_weight[v1, v0]
 
     @R.function
     def forward(x: R.Tensor((1, 768), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((768, 768), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((768,), dtype=&quot;float32&quot;), norm_weight: R.Tensor((768,), dtype=&quot;float32&quot;), norm_bias: R.Tensor((768,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((256, 768), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((256,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 256), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims = R.call_tir(Module.transpose, I.Tuple([fc1_weight]), ty_args=[R.Tensor((768, 768), dtype=&quot;float32&quot;)])
-            lv = R.call_tir(Module.fused_matmul_add_relu, I.Tuple([x, permute_dims, fc1_bias]), ty_args=[R.Tensor((1, 768), dtype=&quot;float32&quot;)])
-            layer_norm = R.call_tir(Module.layer_norm, I.Tuple([lv, norm_weight, norm_bias]), ty_args=[R.Tensor((1, 768), dtype=&quot;float32&quot;)])
-            permute_dims1 = R.call_tir(Module.transpose1, I.Tuple([fc2_weight]), ty_args=[R.Tensor((768, 256), dtype=&quot;float32&quot;)])
-            gv = R.call_tir(Module.fused_matmul1_add1, I.Tuple([layer_norm, permute_dims1, fc2_bias]), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
+            permute_dims = R.call_tir(Module.transpose, (fc1_weight,), ty_args=[R.Tensor((768, 768), dtype=&quot;float32&quot;)])
+            lv = R.call_tir(Module.fused_matmul_add_relu, (x, permute_dims, fc1_bias), ty_args=[R.Tensor((1, 768), dtype=&quot;float32&quot;)])
+            layer_norm = R.call_tir(Module.layer_norm, (lv, norm_weight, norm_bias), ty_args=[R.Tensor((1, 768), dtype=&quot;float32&quot;)])
+            permute_dims1 = R.call_tir(Module.transpose1, (fc2_weight,), ty_args=[R.Tensor((768, 256), dtype=&quot;float32&quot;)])
+            gv = R.call_tir(Module.fused_matmul1_add1, (layer_norm, permute_dims1, fc2_bias), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
             R.output(gv)
         return gv
 </pre></div>
@@ -1164,7 +1164,7 @@ class Module:
                             vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                             v0 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype=&quot;int64&quot;)
                             Ts.reads()
-                            Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0])
+                            Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                             matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                         for ax1_fused_0 in range(T.int64(0), T.int64(48)):
                             for u in range(1):
@@ -1172,16 +1172,16 @@ class Module:
                                     vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                                     v0_1 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype=&quot;int64&quot;)
                                     vax1_fused_0 = Ts.axis.reduce(T.int64(48), ax1_fused_0, dtype=&quot;int64&quot;)
-                                    Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1], layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                    Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                    Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                    Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                     matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + layer_norm[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                 for ax1_fused in T.thread_binding(T.int64(16), thread=&quot;threadIdx.x&quot;):
                     for ax0 in T.thread_binding(T.int64(16), thread=&quot;threadIdx.y&quot;):
                         with Ts.sblock(&quot;matmul&quot;):
                             vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype=&quot;int64&quot;)
                             v0_2 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax1_fused, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                            Ts.writes(matmul_intermediate_local[T.int64(0), v0_2])
+                            Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                            Ts.writes(matmul_intermediate_local[T.int64(0), v0_2:v0_2 + T.int64(1)])
                             with Ts.init():
                                 matmul_intermediate_local[T.int64(0), v0_2] = T.float32(0.0)
                             matmul_intermediate_local[T.int64(0), v0_2] = matmul_intermediate_local[T.int64(0), v0_2] + matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -1189,8 +1189,8 @@ class Module:
                     for ax0_fused_1_1 in range(T.int64(0), T.int64(1)):
                         with Ts.sblock(&quot;T_add&quot;):
                             v0_3 = Ts.axis.spatial(T.int64(256), ax0_fused_0 * T.int64(16) + ax0_fused_0_1 + ax0_fused_1_1, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_intermediate_local[T.int64(0), v0_3], fc2_bias[v0_3])
-                            Ts.writes(T_add_intermediate[T.int64(0), v0_3])
+                            Ts.reads(matmul_intermediate_local[T.int64(0), v0_3:v0_3 + T.int64(1)], fc2_bias[v0_3:v0_3 + T.int64(1)])
+                            Ts.writes(T_add_intermediate[T.int64(0), v0_3:v0_3 + T.int64(1)])
                             T_add_intermediate[T.int64(0), v0_3] = matmul_intermediate_local[T.int64(0), v0_3] + fc2_bias[v0_3]
 
     @Ts.function(private=True)
@@ -1208,7 +1208,7 @@ class Module:
                             vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                             v0 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype=&quot;int64&quot;)
                             Ts.reads()
-                            Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0])
+                            Ts.writes(matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                             matmul_intermediate_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                         for ax1_fused_0 in range(T.int64(0), T.int64(48)):
                             for u in range(1):
@@ -1216,16 +1216,16 @@ class Module:
                                     vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                                     v0_1 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_1, dtype=&quot;int64&quot;)
                                     vax1_fused_0 = Ts.axis.reduce(T.int64(48), ax1_fused_0, dtype=&quot;int64&quot;)
-                                    Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1], x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                    Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                    Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                    Ts.writes(matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                     matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_intermediate_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + x[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                 for ax1_fused in T.thread_binding(T.int64(16), thread=&quot;threadIdx.x&quot;):
                     for ax0 in T.thread_binding(T.int64(16), thread=&quot;threadIdx.y&quot;):
                         with Ts.sblock(&quot;matmul&quot;):
                             vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype=&quot;int64&quot;)
                             v0_2 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax1_fused, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                            Ts.writes(matmul_intermediate_local[T.int64(0), v0_2])
+                            Ts.reads(matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                            Ts.writes(matmul_intermediate_local[T.int64(0), v0_2:v0_2 + T.int64(1)])
                             with Ts.init():
                                 matmul_intermediate_local[T.int64(0), v0_2] = T.float32(0.0)
                             matmul_intermediate_local[T.int64(0), v0_2] = matmul_intermediate_local[T.int64(0), v0_2] + matmul_intermediate_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -1233,8 +1233,8 @@ class Module:
                     for ax0_fused_1_1 in range(T.int64(0), T.int64(1)):
                         with Ts.sblock(&quot;compute&quot;):
                             v0_3 = Ts.axis.spatial(T.int64(768), ax0_fused_0 * T.int64(16) + ax0_fused_0_1 + ax0_fused_1_1, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_intermediate_local[T.int64(0), v0_3], fc1_bias[v0_3])
-                            Ts.writes(compute_intermediate[T.int64(0), v0_3])
+                            Ts.reads(matmul_intermediate_local[T.int64(0), v0_3:v0_3 + T.int64(1)], fc1_bias[v0_3:v0_3 + T.int64(1)])
+                            Ts.writes(compute_intermediate[T.int64(0), v0_3:v0_3 + T.int64(1)])
                             compute_intermediate[T.int64(0), v0_3] = T.max(matmul_intermediate_local[T.int64(0), v0_3] + fc1_bias[v0_3], T.float32(0.0))
 
     @Ts.function(private=True)
@@ -1252,8 +1252,8 @@ class Module:
                             with Ts.sblock(&quot;relu_sum&quot;):
                                 v0 = Ts.axis.spatial(T.int64(1), ax0, dtype=&quot;int64&quot;)
                                 v1 = Ts.axis.reduce(T.int64(768), ax1_fused_0 * T.int64(256) + ax1_fused_1, dtype=&quot;int64&quot;)
-                                Ts.reads(relu[T.int64(0), v1])
-                                Ts.writes(relu_sum_shared[T.int64(0)])
+                                Ts.reads(relu[T.int64(0), v1:v1 + T.int64(1)])
+                                Ts.writes(relu_sum_shared[T.int64(0):T.int64(1)])
                                 with Ts.init():
                                     relu_sum_shared[T.int64(0)] = T.float32(0.0)
                                 relu_sum_shared[T.int64(0)] = relu_sum_shared[T.int64(0)] + relu[T.int64(0), v1]
@@ -1263,8 +1263,8 @@ class Module:
                             with Ts.sblock(&quot;relu_var_sum&quot;):
                                 v0_1 = Ts.axis.spatial(T.int64(1), ax0_1, dtype=&quot;int64&quot;)
                                 v1_1 = Ts.axis.reduce(T.int64(768), ax1_fused_0_1 * T.int64(256) + ax1_fused_1_1, dtype=&quot;int64&quot;)
-                                Ts.reads(relu[T.int64(0), v1_1], relu_sum_shared[T.int64(0)])
-                                Ts.writes(relu_var_sum_shared[T.int64(0)])
+                                Ts.reads(relu[T.int64(0), v1_1:v1_1 + T.int64(1)], relu_sum_shared[T.int64(0):T.int64(1)])
+                                Ts.writes(relu_var_sum_shared[T.int64(0):T.int64(1)])
                                 with Ts.init():
                                     relu_var_sum_shared[T.int64(0)] = T.float32(0.0)
                                 relu_var_sum_shared[T.int64(0)] = relu_var_sum_shared[T.int64(0)] + (relu[T.int64(0), v1_1] - relu_sum_shared[T.int64(0)] / T.float32(768.0)) * (relu[T.int64(0), v1_1] - relu_sum_shared[T.int64(0)] / T.float32(768.0))
@@ -1273,8 +1273,8 @@ class Module:
                         with Ts.sblock(&quot;T_layer_norm&quot;):
                             v0_2 = Ts.axis.spatial(T.int64(1), T.int64(0), dtype=&quot;int64&quot;)
                             v1_2 = Ts.axis.spatial(T.int64(768), ax1_0 * T.int64(256) + ax1_1, dtype=&quot;int64&quot;)
-                            Ts.reads(relu[T.int64(0), v1_2], relu_sum_shared[T.int64(0)], relu_var_sum_shared[T.int64(0)], norm_weight[v1_2], norm_bias[v1_2])
-                            Ts.writes(T_layer_norm[T.int64(0), v1_2])
+                            Ts.reads(relu[T.int64(0), v1_2:v1_2 + T.int64(1)], relu_sum_shared[T.int64(0):T.int64(1)], relu_var_sum_shared[T.int64(0):T.int64(1)], norm_weight[v1_2:v1_2 + T.int64(1)], norm_bias[v1_2:v1_2 + T.int64(1)])
+                            Ts.writes(T_layer_norm[T.int64(0), v1_2:v1_2 + T.int64(1)])
                             T_layer_norm[T.int64(0), v1_2] = (relu[T.int64(0), v1_2] - relu_sum_shared[T.int64(0)] / T.float32(768.0)) * T.rsqrt(relu_var_sum_shared[T.int64(0)] / T.float32(768.0) + T.float32(1.0000000000000001e-05)) * norm_weight[v1_2] + norm_bias[v1_2]
 
     @Ts.function(private=True)
@@ -1288,8 +1288,8 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v0 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(768), dtype=&quot;int64&quot;)
                         v1 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(768), dtype=&quot;int64&quot;)
-                        Ts.reads(fc1_weight[v1, v0])
-                        Ts.writes(T_transpose[v0, v1])
+                        Ts.reads(fc1_weight[v1, v0:v0 + T.int64(1)])
+                        Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                         T_transpose[v0, v1] = fc1_weight[v1, v0]
 
     @Ts.function(private=True)
@@ -1303,19 +1303,19 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v0 = Ts.axis.spatial(T.int64(768), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(256), dtype=&quot;int64&quot;)
                         v1 = Ts.axis.spatial(T.int64(256), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(256), dtype=&quot;int64&quot;)
-                        Ts.reads(fc2_weight[v1, v0])
-                        Ts.writes(T_transpose[v0, v1])
+                        Ts.reads(fc2_weight[v1, v0:v0 + T.int64(1)])
+                        Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                         T_transpose[v0, v1] = fc2_weight[v1, v0]
 
     @R.function
     def forward(x: R.Tensor((1, 768), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((768, 768), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((768,), dtype=&quot;float32&quot;), norm_weight: R.Tensor((768,), dtype=&quot;float32&quot;), norm_bias: R.Tensor((768,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((256, 768), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((256,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 256), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims = R.call_tir(Module.transpose, I.Tuple([fc1_weight]), ty_args=[R.Tensor((768, 768), dtype=&quot;float32&quot;)])
-            lv = R.call_tir(Module.fused_matmul_add_relu, I.Tuple([x, permute_dims, fc1_bias]), ty_args=[R.Tensor((1, 768), dtype=&quot;float32&quot;)])
-            layer_norm = R.call_tir(Module.layer_norm, I.Tuple([lv, norm_weight, norm_bias]), ty_args=[R.Tensor((1, 768), dtype=&quot;float32&quot;)])
-            permute_dims1 = R.call_tir(Module.transpose1, I.Tuple([fc2_weight]), ty_args=[R.Tensor((768, 256), dtype=&quot;float32&quot;)])
-            gv = R.call_tir(Module.fused_matmul1_add1, I.Tuple([layer_norm, permute_dims1, fc2_bias]), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
+            permute_dims = R.call_tir(Module.transpose, (fc1_weight,), ty_args=[R.Tensor((768, 768), dtype=&quot;float32&quot;)])
+            lv = R.call_tir(Module.fused_matmul_add_relu, (x, permute_dims, fc1_bias), ty_args=[R.Tensor((1, 768), dtype=&quot;float32&quot;)])
+            layer_norm = R.call_tir(Module.layer_norm, (lv, norm_weight, norm_bias), ty_args=[R.Tensor((1, 768), dtype=&quot;float32&quot;)])
+            permute_dims1 = R.call_tir(Module.transpose1, (fc2_weight,), ty_args=[R.Tensor((768, 256), dtype=&quot;float32&quot;)])
+            gv = R.call_tir(Module.fused_matmul1_add1, (layer_norm, permute_dims1, fc2_bias), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
             R.output(gv)
         return gv
 </pre></div>
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 32751bdb88a..eee28464fa1 100644
--- a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
@@ -627,7 +627,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.713</strong> total execution time for 4 files <strong>from deep_dive/tensor_ir/tutorials</strong>:</p>
+<p><strong>00:00.602</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" />
@@ -649,19 +649,19 @@ $(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.317</p></td>
+<td><p>00:00.267</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><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.220</p></td>
+<td><p>00:00.184</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><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.161</p></td>
+<td><p>00:00.138</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>
-<td><p>00:00.014</p></td>
+<td><p>00:00.012</p></td>
 <td><p>0.0</p></td>
 </tr>
 </tbody>
diff --git a/docs/deep_dive/tensor_ir/tutorials/tir_creation.html b/docs/deep_dive/tensor_ir/tutorials/tir_creation.html
index 2655256edca..09ba9ef0aab 100644
--- a/docs/deep_dive/tensor_ir/tutorials/tir_creation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_creation.html
@@ -923,8 +923,8 @@ class Module:
                             v_i = Ts.axis.spatial(128, i)
                             v_j = Ts.axis.spatial(128, j)
                             v_k = Ts.axis.reduce(128, k)
-                            Ts.reads(A[v_i, v_k], B[v_k, v_j])
-                            Ts.writes(Y[v_i, v_j])
+                            Ts.reads(A[v_i, v_k:v_k + 1], B[v_k, v_j:v_j + 1])
+                            Ts.writes(Y[v_i, v_j:v_j + 1])
                             with Ts.init():
                                 Y[v_i, v_j] = T.float32(0.0)
                             Y[v_i, v_j] = Y[v_i, v_j] + A[v_i, v_k] * B[v_k, v_j]
@@ -933,8 +933,8 @@ class Module:
                     with Ts.sblock(&quot;C&quot;):
                         v_i_1 = Ts.axis.spatial(128, i_1)
                         v_j_1 = Ts.axis.spatial(128, j_1)
-                        Ts.reads(Y[v_i_1, v_j_1])
-                        Ts.writes(C[v_i_1, v_j_1])
+                        Ts.reads(Y[v_i_1, v_j_1:v_j_1 + 1])
+                        Ts.writes(C[v_i_1, v_j_1:v_j_1 + 1])
                         C[v_i_1, v_j_1] = T.max(Y[v_i_1, v_j_1], T.float32(0.0))
 </pre></div>
 </div>
@@ -981,8 +981,8 @@ class Module:
                             v_i = Ts.axis.spatial(m, i)
                             v_j = Ts.axis.spatial(n, j)
                             v_k = Ts.axis.reduce(k, k_1)
-                            Ts.reads(A[v_i, v_k], B[v_k, v_j])
-                            Ts.writes(Y[v_i, v_j])
+                            Ts.reads(A[v_i, v_k:v_k + 1], B[v_k, v_j:v_j + 1])
+                            Ts.writes(Y[v_i, v_j:v_j + 1])
                             with Ts.init():
                                 Y[v_i, v_j] = T.float32(0.0)
                             Y[v_i, v_j] = Y[v_i, v_j] + A[v_i, v_k] * B[v_k, v_j]
@@ -991,8 +991,8 @@ class Module:
                     with Ts.sblock(&quot;C&quot;):
                         v_i_1 = Ts.axis.spatial(m, i_1)
                         v_j_1 = Ts.axis.spatial(n, j_1)
-                        Ts.reads(Y[v_i_1, v_j_1])
-                        Ts.writes(C[v_i_1, v_j_1])
+                        Ts.reads(Y[v_i_1, v_j_1:v_j_1 + 1])
+                        Ts.writes(C[v_i_1, v_j_1:v_j_1 + 1])
                         C[v_i_1, v_j_1] = T.max(Y[v_i_1, v_j_1], T.float32(0.0))
 </pre></div>
 </div>
diff --git a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
index c257dfceafc..bf57e82f064 100644
--- a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
@@ -715,7 +715,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.7543       2.7543       2.7543       2.7543       0.0000
+   2.4568       2.4568       2.4568       2.4568       0.0000
 </pre></div>
 </div>
 <section id="initialization-schedule">
@@ -769,8 +769,8 @@ class Module:
                                 v_1 = Ts.axis.spatial(128, i)
                                 v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                 v_3 = Ts.axis.reduce(128, k)
-                                Ts.reads(A[v_1, v_3], B[v_3, v_2])
-                                Ts.writes(v[v_1, v_2])
+                                Ts.reads(A[v_1, v_3:v_3 + 1], B[v_3, v_2:v_2 + 1])
+                                Ts.writes(v[v_1, v_2:v_2 + 1])
                                 with Ts.init():
                                     v[v_1, v_2] = T.float32(0.0)
                                 v[v_1, v_2] = v[v_1, v_2] + A[v_1, v_3] * B[v_3, v_2]
@@ -779,8 +779,8 @@ class Module:
                     with Ts.sblock(&quot;C&quot;):
                         v_4 = Ts.axis.spatial(128, i_1)
                         v_5 = Ts.axis.spatial(128, j)
-                        Ts.reads(v[v_4, v_5])
-                        Ts.writes(C[v_4, v_5])
+                        Ts.reads(v[v_4, v_5:v_5 + 1])
+                        Ts.writes(C[v_4, v_5:v_5 + 1])
                         C[v_4, v_5] = T.max(v[v_4, v_5], T.float32(0.0))
 </pre></div>
 </div>
@@ -815,8 +815,8 @@ class Module:
                                 v_1 = Ts.axis.spatial(128, i)
                                 v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                 v_3 = Ts.axis.reduce(128, k)
-                                Ts.reads(A[v_1, v_3], B[v_3, v_2])
-                                Ts.writes(v[v_1, v_2])
+                                Ts.reads(A[v_1, v_3:v_3 + 1], B[v_3, v_2:v_2 + 1])
+                                Ts.writes(v[v_1, v_2:v_2 + 1])
                                 with Ts.init():
                                     v[v_1, v_2] = T.float32(0.0)
                                 v[v_1, v_2] = v[v_1, v_2] + A[v_1, v_3] * B[v_3, v_2]
@@ -825,13 +825,13 @@ class Module:
                     with Ts.sblock(&quot;C&quot;):
                         v_4 = Ts.axis.spatial(128, i_1)
                         v_5 = Ts.axis.spatial(128, j)
-                        Ts.reads(v[v_4, v_5])
-                        Ts.writes(C[v_4, v_5])
+                        Ts.reads(v[v_4, v_5:v_5 + 1])
+                        Ts.writes(C[v_4, v_5:v_5 + 1])
                         C[v_4, v_5] = T.max(v[v_4, v_5], T.float32(0.0))
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.8625       0.8625       0.8625       0.8625       0.0000
+   0.8632       0.8632       0.8632       0.8632       0.0000
 </pre></div>
 </div>
 </section>
@@ -868,8 +868,8 @@ class Module:
                                 v_1 = Ts.axis.spatial(128, i)
                                 v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                 v_3 = Ts.axis.reduce(128, k)
-                                Ts.reads(A[v_1, v_3], B[v_3, v_2])
-                                Ts.writes(v[v_1, v_2])
+                                Ts.reads(A[v_1, v_3:v_3 + 1], B[v_3, v_2:v_2 + 1])
+                                Ts.writes(v[v_1, v_2:v_2 + 1])
                                 with Ts.init():
                                     v[v_1, v_2] = T.float32(0.0)
                                 v[v_1, v_2] = v[v_1, v_2] + A[v_1, v_3] * B[v_3, v_2]
@@ -877,8 +877,8 @@ class Module:
                         with Ts.sblock(&quot;C&quot;):
                             v_4 = Ts.axis.spatial(128, i)
                             v_5 = Ts.axis.spatial(128, j_0 * 8 + ax0)
-                            Ts.reads(v[v_4, v_5])
-                            Ts.writes(C[v_4, v_5])
+                            Ts.reads(v[v_4, v_5:v_5 + 1])
+                            Ts.writes(C[v_4, v_5:v_5 + 1])
                             C[v_4, v_5] = T.max(v[v_4, v_5], T.float32(0.0))
 </pre></div>
 </div>
@@ -918,7 +918,7 @@ class Module:
                             v_1 = Ts.axis.spatial(128, i)
                             v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1_init)
                             Ts.reads()
-                            Ts.writes(v[v_1, v_2])
+                            Ts.writes(v[v_1, v_2:v_2 + 1])
                             v[v_1, v_2] = T.float32(0.0)
                     for k in range(128):
                         for j_1 in range(8):
@@ -926,20 +926,20 @@ class Module:
                                 v_3 = Ts.axis.spatial(128, i)
                                 v_4 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                 v_5 = Ts.axis.reduce(128, k)
-                                Ts.reads(v[v_3, v_4], A[v_3, v_5], B[v_5, v_4])
-                                Ts.writes(v[v_3, v_4])
+                                Ts.reads(v[v_3, v_4:v_4 + 1], A[v_3, v_5:v_5 + 1], B[v_5, v_4:v_4 + 1])
+                                Ts.writes(v[v_3, v_4:v_4 + 1])
                                 v[v_3, v_4] = v[v_3, v_4] + A[v_3, v_5] * B[v_5, v_4]
                     for ax0 in range(8):
                         with Ts.sblock(&quot;C&quot;):
                             v_6 = Ts.axis.spatial(128, i)
                             v_7 = Ts.axis.spatial(128, j_0 * 8 + ax0)
-                            Ts.reads(v[v_6, v_7])
-                            Ts.writes(C[v_6, v_7])
+                            Ts.reads(v[v_6, v_7:v_7 + 1])
+                            Ts.writes(C[v_6, v_7:v_7 + 1])
                             C[v_6, v_7] = T.max(v[v_6, v_7], T.float32(0.0))
 
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   0.3379       0.3379       0.3379       0.3379       0.0000
+   0.3482       0.3482       0.3482       0.3482       0.0000
 </pre></div>
 </div>
 </section>
@@ -990,7 +990,7 @@ class Module:
                             v_1 = Ts.axis.spatial(128, i)
                             v_2 = Ts.axis.spatial(128, j_0 * 8 + j_1_init)
                             Ts.reads()
-                            Ts.writes(v[v_1, v_2])
+                            Ts.writes(v[v_1, v_2:v_2 + 1])
                             v[v_1, v_2] = T.float32(0.0)
                     for k in range(128):
                         for j_1 in range(8):
@@ -998,15 +998,15 @@ class Module:
                                 v_3 = Ts.axis.spatial(128, i)
                                 v_4 = Ts.axis.spatial(128, j_0 * 8 + j_1)
                                 v_5 = Ts.axis.reduce(128, k)
-                                Ts.reads(v[v_3, v_4], A[v_3, v_5], B[v_5, v_4])
-                                Ts.writes(v[v_3, v_4])
+                                Ts.reads(v[v_3, v_4:v_4 + 1], A[v_3, v_5:v_5 + 1], B[v_5, v_4:v_4 + 1])
+                                Ts.writes(v[v_3, v_4:v_4 + 1])
                                 v[v_3, v_4] = v[v_3, v_4] + A[v_3, v_5] * B[v_5, v_4]
                     for ax0 in range(8):
                         with Ts.sblock(&quot;C&quot;):
                             v_6 = Ts.axis.spatial(128, i)
                             v_7 = Ts.axis.spatial(128, j_0 * 8 + ax0)
-                            Ts.reads(v[v_6, v_7])
-                            Ts.writes(C[v_6, v_7])
+                            Ts.reads(v[v_6, v_7:v_7 + 1])
+                            Ts.writes(C[v_6, v_7:v_7 + 1])
                             C[v_6, v_7] = T.max(v[v_6, v_7], T.float32(0.0))
 
 # from tvm import s_tir
diff --git a/docs/get_started/tutorials/ir_module.html b/docs/get_started/tutorials/ir_module.html
index 751ddd878c0..6eb255a56a7 100644
--- a/docs/get_started/tutorials/ir_module.html
+++ b/docs/get_started/tutorials/ir_module.html
@@ -782,11 +782,11 @@ class Module:
     def forward(x: R.Tensor((1, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((256, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((256,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 256), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims: R.Tensor((784, 256), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc1_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 256), dtype=&quot;float32&quot;))
+            permute_dims: R.Tensor((784, 256), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight)
             matmul: R.Tensor((1, 256), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [x, permute_dims], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 256), dtype=&quot;float32&quot;))
             add: R.Tensor((1, 256), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias, ty=R.Tensor((1, 256), dtype=&quot;float32&quot;))
             relu: R.Tensor((1, 256), dtype=&quot;float32&quot;) = R.nn.relu(add)
-            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((256, 10), dtype=&quot;float32&quot;))
+            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             matmul1: R.Tensor((1, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [relu, permute_dims1], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 10), dtype=&quot;float32&quot;))
             add1: R.Tensor((1, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias, ty=R.Tensor((1, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((1, 10), dtype=&quot;float32&quot;) = add1
@@ -843,11 +843,11 @@ class Module:
     def main(x: R.Tensor((1, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((256, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((256,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 256), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims: R.Tensor((784, 256), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc1_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 256), dtype=&quot;float32&quot;))
+            permute_dims: R.Tensor((784, 256), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight)
             matmul: R.Tensor((1, 256), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [x, permute_dims], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 256), dtype=&quot;float32&quot;))
             add: R.Tensor((1, 256), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias, ty=R.Tensor((1, 256), dtype=&quot;float32&quot;))
             relu: R.Tensor((1, 256), dtype=&quot;float32&quot;) = R.nn.relu(add)
-            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((256, 10), dtype=&quot;float32&quot;))
+            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             matmul1: R.Tensor((1, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [relu, permute_dims1], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 10), dtype=&quot;float32&quot;))
             add1: R.Tensor((1, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias, ty=R.Tensor((1, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((1, 10), dtype=&quot;float32&quot;) = add1
@@ -934,8 +934,8 @@ class Module:
                     with Ts.sblock(&quot;T_add&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(1), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(256), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(p_fc1_bias[v_ax1], lv1[v_ax0, v_ax1])
-                        Ts.writes(T_add[v_ax0, v_ax1])
+                        Ts.reads(p_fc1_bias[v_ax1:v_ax1 + T.int64(1)], lv1[v_ax0, v_ax1:v_ax1 + T.int64(1)])
+                        Ts.writes(T_add[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_add[v_ax0, v_ax1] = p_fc1_bias[v_ax1] + lv1[v_ax0, v_ax1]
 
     @Ts.function(private=True)
@@ -949,8 +949,8 @@ class Module:
                     with Ts.sblock(&quot;T_add&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(1), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(p_fc2_bias[v_ax1], lv5[v_ax0, v_ax1])
-                        Ts.writes(T_add[v_ax0, v_ax1])
+                        Ts.reads(p_fc2_bias[v_ax1:v_ax1 + T.int64(1)], lv5[v_ax0, v_ax1:v_ax1 + T.int64(1)])
+                        Ts.writes(T_add[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_add[v_ax0, v_ax1] = p_fc2_bias[v_ax1] + lv5[v_ax0, v_ax1]
 
     @Ts.function(private=True)
@@ -966,8 +966,8 @@ class Module:
                             v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype=&quot;int64&quot;)
                             v_i1 = Ts.axis.spatial(T.int64(256), i1, dtype=&quot;int64&quot;)
                             v_k = Ts.axis.reduce(T.int64(784), k, dtype=&quot;int64&quot;)
-                            Ts.reads(x[v_i0, v_k], lv[v_k, v_i1])
-                            Ts.writes(matmul[v_i0, v_i1])
+                            Ts.reads(x[v_i0, v_k:v_k + T.int64(1)], lv[v_k, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(matmul[v_i0, v_i1:v_i1 + T.int64(1)])
                             with Ts.init():
                                 matmul[v_i0, v_i1] = T.float32(0.0)
                             matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + x[v_i0, v_k] * lv[v_k, v_i1]
@@ -985,8 +985,8 @@ class Module:
                             v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype=&quot;int64&quot;)
                             v_i1 = Ts.axis.spatial(T.int64(10), i1, dtype=&quot;int64&quot;)
                             v_k = Ts.axis.reduce(T.int64(256), k, dtype=&quot;int64&quot;)
-                            Ts.reads(lv3[v_i0, v_k], lv4[v_k, v_i1])
-                            Ts.writes(matmul[v_i0, v_i1])
+                            Ts.reads(lv3[v_i0, v_k:v_k + T.int64(1)], lv4[v_k, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(matmul[v_i0, v_i1:v_i1 + T.int64(1)])
                             with Ts.init():
                                 matmul[v_i0, v_i1] = T.float32(0.0)
                             matmul[v_i0, v_i1] = matmul[v_i0, v_i1] + lv3[v_i0, v_k] * lv4[v_k, v_i1]
@@ -1002,8 +1002,8 @@ class Module:
                     with Ts.sblock(&quot;compute&quot;):
                         v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype=&quot;int64&quot;)
                         v_i1 = Ts.axis.spatial(T.int64(256), i1, dtype=&quot;int64&quot;)
-                        Ts.reads(lv2[v_i0, v_i1])
-                        Ts.writes(compute[v_i0, v_i1])
+                        Ts.reads(lv2[v_i0, v_i1:v_i1 + T.int64(1)])
+                        Ts.writes(compute[v_i0, v_i1:v_i1 + T.int64(1)])
                         compute[v_i0, v_i1] = T.max(lv2[v_i0, v_i1], T.float32(0.0))
 
     @Ts.function(private=True)
@@ -1017,8 +1017,8 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(784), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(256), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(p_fc1_weight[v_ax1, v_ax0])
-                        Ts.writes(T_transpose[v_ax0, v_ax1])
+                        Ts.reads(p_fc1_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                        Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_transpose[v_ax0, v_ax1] = p_fc1_weight[v_ax1, v_ax0]
 
     @Ts.function(private=True)
@@ -1032,21 +1032,21 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(256), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(p_fc2_weight[v_ax1, v_ax0])
-                        Ts.writes(T_transpose[v_ax0, v_ax1])
+                        Ts.reads(p_fc2_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                        Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_transpose[v_ax0, v_ax1] = p_fc2_weight[v_ax1, v_ax0]
 
     @R.function
     def main(x: R.Tensor((1, 784), dtype=&quot;float32&quot;), p_fc1_weight: R.Tensor((256, 784), dtype=&quot;float32&quot;), p_fc1_bias: R.Tensor((256,), dtype=&quot;float32&quot;), p_fc2_weight: R.Tensor((10, 256), dtype=&quot;float32&quot;), p_fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            lv = R.call_tir(Module.transpose, I.Tuple([p_fc1_weight]), ty_args=[R.Tensor((784, 256), dtype=&quot;float32&quot;)])
-            lv1 = R.call_tir(Module.matmul, I.Tuple([x, lv]), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
-            lv2 = R.call_tir(Module.add, I.Tuple([p_fc1_bias, lv1]), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
-            lv3 = R.call_tir(Module.relu, I.Tuple([lv2]), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
-            lv4 = R.call_tir(Module.transpose1, I.Tuple([p_fc2_weight]), ty_args=[R.Tensor((256, 10), dtype=&quot;float32&quot;)])
-            lv5 = R.call_tir(Module.matmul1, I.Tuple([lv3, lv4]), ty_args=[R.Tensor((1, 10), dtype=&quot;float32&quot;)])
-            lv6 = R.call_tir(Module.add1, I.Tuple([p_fc2_bias, lv5]), ty_args=[R.Tensor((1, 10), dtype=&quot;float32&quot;)])
+            lv = R.call_tir(Module.transpose, (p_fc1_weight,), ty_args=[R.Tensor((784, 256), dtype=&quot;float32&quot;)])
+            lv1 = R.call_tir(Module.matmul, (x, lv), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
+            lv2 = R.call_tir(Module.add, (p_fc1_bias, lv1), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
+            lv3 = R.call_tir(Module.relu, (lv2,), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
+            lv4 = R.call_tir(Module.transpose1, (p_fc2_weight,), ty_args=[R.Tensor((256, 10), dtype=&quot;float32&quot;)])
+            lv5 = R.call_tir(Module.matmul1, (lv3, lv4), ty_args=[R.Tensor((1, 10), dtype=&quot;float32&quot;)])
+            lv6 = R.call_tir(Module.add1, (p_fc2_bias, lv5), ty_args=[R.Tensor((1, 10), dtype=&quot;float32&quot;)])
             gv: R.Tensor((1, 10), dtype=&quot;float32&quot;) = lv6
             R.output(gv)
         return gv
@@ -1109,8 +1109,8 @@ class Module:
                             v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype=&quot;int64&quot;)
                             v_i1 = Ts.axis.spatial(T.int64(10), i1, dtype=&quot;int64&quot;)
                             v_k = Ts.axis.reduce(T.int64(256), k, dtype=&quot;int64&quot;)
-                            Ts.reads(lv3[v_i0, v_k], lv4[v_k, v_i1])
-                            Ts.writes(matmul_intermediate[v_i0, v_i1])
+                            Ts.reads(lv3[v_i0, v_k:v_k + T.int64(1)], lv4[v_k, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(matmul_intermediate[v_i0, v_i1:v_i1 + T.int64(1)])
                             with Ts.init():
                                 matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
                             matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + lv3[v_i0, v_k] * lv4[v_k, v_i1]
@@ -1119,8 +1119,8 @@ class Module:
                     with Ts.sblock(&quot;T_add&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(1), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(p_fc2_bias[v_ax1], matmul_intermediate[v_ax0, v_ax1])
-                        Ts.writes(T_add_intermediate[v_ax0, v_ax1])
+                        Ts.reads(p_fc2_bias[v_ax1:v_ax1 + T.int64(1)], matmul_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
+                        Ts.writes(T_add_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_add_intermediate[v_ax0, v_ax1] = p_fc2_bias[v_ax1] + matmul_intermediate[v_ax0, v_ax1]
 
     @Ts.function(private=True)
@@ -1138,8 +1138,8 @@ class Module:
                             v_i0 = Ts.axis.spatial(T.int64(1), i0, dtype=&quot;int64&quot;)
                             v_i1 = Ts.axis.spatial(T.int64(256), i1, dtype=&quot;int64&quot;)
                             v_k = Ts.axis.reduce(T.int64(784), k, dtype=&quot;int64&quot;)
-                            Ts.reads(x[v_i0, v_k], lv[v_k, v_i1])
-                            Ts.writes(matmul_intermediate[v_i0, v_i1])
+                            Ts.reads(x[v_i0, v_k:v_k + T.int64(1)], lv[v_k, v_i1:v_i1 + T.int64(1)])
+                            Ts.writes(matmul_intermediate[v_i0, v_i1:v_i1 + T.int64(1)])
                             with Ts.init():
                                 matmul_intermediate[v_i0, v_i1] = T.float32(0.0)
                             matmul_intermediate[v_i0, v_i1] = matmul_intermediate[v_i0, v_i1] + x[v_i0, v_k] * lv[v_k, v_i1]
@@ -1148,16 +1148,16 @@ class Module:
                     with Ts.sblock(&quot;T_add&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(1), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(256), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(p_fc1_bias[v_ax1], matmul_intermediate[v_ax0, v_ax1])
-                        Ts.writes(T_add_intermediate[v_ax0, v_ax1])
+                        Ts.reads(p_fc1_bias[v_ax1:v_ax1 + T.int64(1)], matmul_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
+                        Ts.writes(T_add_intermediate[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_add_intermediate[v_ax0, v_ax1] = p_fc1_bias[v_ax1] + matmul_intermediate[v_ax0, v_ax1]
             for i0_1 in range(T.int64(0), T.int64(1)):
                 for i1_1 in range(T.int64(0), T.int64(256)):
                     with Ts.sblock(&quot;compute&quot;):
                         v_i0_1 = Ts.axis.spatial(T.int64(1), i0_1, dtype=&quot;int64&quot;)
                         v_i1_1 = Ts.axis.spatial(T.int64(256), i1_1, dtype=&quot;int64&quot;)
-                        Ts.reads(T_add_intermediate[v_i0_1, v_i1_1])
-                        Ts.writes(compute_intermediate[v_i0_1, v_i1_1])
+                        Ts.reads(T_add_intermediate[v_i0_1, v_i1_1:v_i1_1 + T.int64(1)])
+                        Ts.writes(compute_intermediate[v_i0_1, v_i1_1:v_i1_1 + T.int64(1)])
                         compute_intermediate[v_i0_1, v_i1_1] = T.max(T_add_intermediate[v_i0_1, v_i1_1], T.float32(0.0))
 
     @Ts.function(private=True)
@@ -1171,8 +1171,8 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(784), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(256), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(p_fc1_weight[v_ax1, v_ax0])
-                        Ts.writes(T_transpose[v_ax0, v_ax1])
+                        Ts.reads(p_fc1_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                        Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_transpose[v_ax0, v_ax1] = p_fc1_weight[v_ax1, v_ax0]
 
     @Ts.function(private=True)
@@ -1186,18 +1186,18 @@ class Module:
                     with Ts.sblock(&quot;T_transpose&quot;):
                         v_ax0 = Ts.axis.spatial(T.int64(256), ax0, dtype=&quot;int64&quot;)
                         v_ax1 = Ts.axis.spatial(T.int64(10), ax1, dtype=&quot;int64&quot;)
-                        Ts.reads(p_fc2_weight[v_ax1, v_ax0])
-                        Ts.writes(T_transpose[v_ax0, v_ax1])
+                        Ts.reads(p_fc2_weight[v_ax1, v_ax0:v_ax0 + T.int64(1)])
+                        Ts.writes(T_transpose[v_ax0, v_ax1:v_ax1 + T.int64(1)])
                         T_transpose[v_ax0, v_ax1] = p_fc2_weight[v_ax1, v_ax0]
 
     @R.function
     def main(x: R.Tensor((1, 784), dtype=&quot;float32&quot;), p_fc1_weight: R.Tensor((256, 784), dtype=&quot;float32&quot;), p_fc1_bias: R.Tensor((256,), dtype=&quot;float32&quot;), p_fc2_weight: R.Tensor((10, 256), dtype=&quot;float32&quot;), p_fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            lv = R.call_tir(Module.transpose, I.Tuple([p_fc1_weight]), ty_args=[R.Tensor((784, 256), dtype=&quot;float32&quot;)])
-            lv_1 = R.call_tir(Module.fused_matmul_add_relu, I.Tuple([x, lv, p_fc1_bias]), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
-            lv4 = R.call_tir(Module.transpose1, I.Tuple([p_fc2_weight]), ty_args=[R.Tensor((256, 10), dtype=&quot;float32&quot;)])
-            gv = R.call_tir(Module.fused_matmul1_add1, I.Tuple([lv_1, lv4, p_fc2_bias]), ty_args=[R.Tensor((1, 10), dtype=&quot;float32&quot;)])
+            lv = R.call_tir(Module.transpose, (p_fc1_weight,), ty_args=[R.Tensor((784, 256), dtype=&quot;float32&quot;)])
+            lv_1 = R.call_tir(Module.fused_matmul_add_relu, (x, lv, p_fc1_bias), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
+            lv4 = R.call_tir(Module.transpose1, (p_fc2_weight,), ty_args=[R.Tensor((256, 10), dtype=&quot;float32&quot;)])
+            gv = R.call_tir(Module.fused_matmul1_add1, (lv_1, lv4, p_fc2_bias), ty_args=[R.Tensor((1, 10), dtype=&quot;float32&quot;)])
             R.output(gv)
         return gv
 </pre></div>
@@ -1222,8 +1222,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.19126415 -0.11120734 -0.18844074 -0.09666331 -0.10459481  0.27168792
-   0.00239159  0.09554429 -0.07331742  0.14715831]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.05448412 -0.29549795 -0.15731497 -0.03810223 -0.07888201 -0.02606021
+   0.07264606 -0.02397087 -0.0854951   0.12246296]]
 </pre></div>
 </div>
 </section>
@@ -1257,8 +1257,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.19126418 -0.11120729 -0.18844078 -0.09666328 -0.10459483  0.27168787
-   0.00239164  0.09554419 -0.07331741  0.14715831]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.05448417 -0.29549783 -0.15731494 -0.03810223 -0.07888198 -0.02606017
+   0.07264615 -0.02397087 -0.08549506  0.12246294]]
 </pre></div>
 </div>
 </section>
diff --git a/docs/get_started/tutorials/quick_start.html b/docs/get_started/tutorials/quick_start.html
index b6892d4648f..19fa12a0925 100644
--- a/docs/get_started/tutorials/quick_start.html
+++ b/docs/get_started/tutorials/quick_start.html
@@ -744,11 +744,11 @@ class Module:
     def forward(x: R.Tensor((1, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((256, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((256,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 256), dtype=&quot;float32&quot;), fc2_bias: R.Tensor((10,), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims: R.Tensor((784, 256), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc1_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 256), dtype=&quot;float32&quot;))
+            permute_dims: R.Tensor((784, 256), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight)
             matmul: R.Tensor((1, 256), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [x, permute_dims], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 256), dtype=&quot;float32&quot;))
             add: R.Tensor((1, 256), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias, ty=R.Tensor((1, 256), dtype=&quot;float32&quot;))
             relu: R.Tensor((1, 256), dtype=&quot;float32&quot;) = R.nn.relu(add)
-            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((256, 10), dtype=&quot;float32&quot;))
+            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             matmul1: R.Tensor((1, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [relu, permute_dims1], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 10), dtype=&quot;float32&quot;))
             add1: R.Tensor((1, 10), dtype=&quot;float32&quot;) = R.add(matmul1, fc2_bias, ty=R.Tensor((1, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((1, 10), dtype=&quot;float32&quot;) = add1
@@ -797,8 +797,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/builtins/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>< [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[25108.578 25844.07  25979.24  26348.05  25168.773 25847.172 24586.246
-  25995.445 26530.38  25515.549]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[25122.676 25524.105 26727.49  24541.062 24177.166 24328.219 25000.912
+  24791.475 24570.314 23909.021]]
 </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 4fc85ef099f..64d946801fc 100644
--- a/docs/get_started/tutorials/sg_execution_times.html
+++ b/docs/get_started/tutorials/sg_execution_times.html
@@ -627,7 +627,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:06.556</strong> total execution time for 2 files <strong>from get_started/tutorials</strong>:</p>
+<p><strong>00:05.643</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" />
@@ -649,11 +649,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:06.350</p></td>
+<td><p>00:05.473</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.207</p></td>
+<td><p>00:00.170</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 13ebdc989ff..4401a260352 100644
--- a/docs/how_to/tutorials/cross_compilation_and_rpc.html
+++ b/docs/how_to/tutorials/cross_compilation_and_rpc.html
@@ -826,7 +826,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>1.07e-07 secs/op
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>9.2e-08 secs/op
 </pre></div>
 </div>
 </section>
@@ -1355,8 +1355,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/tmpijy_x2fd/model_deployed.so
-Saved parameters to: /tmp/tmpijy_x2fd/model_params.npz
+Exported library to: /tmp/tmphs8_oft0/model_deployed.so
+Saved parameters to: /tmp/tmphs8_oft0/model_params.npz
 
 RPC workflow (works for any remote device):
 ==================================================
diff --git a/docs/how_to/tutorials/customize_opt.html b/docs/how_to/tutorials/customize_opt.html
index fa3caa85317..7401d340896 100644
--- a/docs/how_to/tutorials/customize_opt.html
+++ b/docs/how_to/tutorials/customize_opt.html
@@ -730,11 +730,11 @@ class Module:
     def forward(x: R.Tensor((1, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((256, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((256,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 256), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            permute_dims: R.Tensor((784, 256), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc1_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((784, 256), dtype=&quot;float32&quot;))
+            permute_dims: R.Tensor((784, 256), dtype=&quot;float32&quot;) = R.permute_dims(fc1_weight)
             matmul: R.Tensor((1, 256), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [x, permute_dims], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 256), dtype=&quot;float32&quot;))
             add: R.Tensor((1, 256), dtype=&quot;float32&quot;) = R.add(matmul, fc1_bias, ty=R.Tensor((1, 256), dtype=&quot;float32&quot;))
             relu: R.Tensor((1, 256), dtype=&quot;float32&quot;) = R.nn.relu(add)
-            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((256, 10), dtype=&quot;float32&quot;))
+            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             matmul1: R.Tensor((1, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [relu, permute_dims1], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((1, 10), dtype=&quot;float32&quot;) = matmul1
             R.output(gv)
@@ -801,8 +801,8 @@ class Module:
     def forward(x: R.Tensor((1, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((256, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((256,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 256), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            lv = R.call_dps_packed(&quot;fused_relax_permute_dims_relax_matmul_relax_add_relax_nn_relu_cublas&quot;, I.Tuple([fc1_weight, x, fc1_bias]), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
-            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.permute_dims&quot;, [fc2_weight], attrs=I.make_node(&quot;relax.attrs.PermuteDimsAttrs&quot;, axes=None), ty=R.Tensor((256, 10), dtype=&quot;float32&quot;))
+            lv = R.call_dps_packed(&quot;fused_relax_permute_dims_relax_matmul_relax_add_relax_nn_relu_cublas&quot;, (fc1_weight, x, fc1_bias), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
+            permute_dims1: R.Tensor((256, 10), dtype=&quot;float32&quot;) = R.permute_dims(fc2_weight)
             matmul1: R.Tensor((1, 10), dtype=&quot;float32&quot;) = I.Call(&quot;relax.matmul&quot;, [lv, permute_dims1], attrs=I.make_node(&quot;relax.attrs.MatmulAttrs&quot;, out_dtype=None), ty=R.Tensor((1, 10), dtype=&quot;float32&quot;))
             gv: R.Tensor((1, 10), dtype=&quot;float32&quot;) = matmul1
             R.output(gv)
@@ -896,7 +896,7 @@ class Module:
                             vax1_fused_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                             v0 = Ts.axis.spatial(T.int64(10), ax0_fused_0 * T.int64(10) + ax0_fused_1, dtype=&quot;int64&quot;)
                             Ts.reads()
-                            Ts.writes(matmul_rf_local[vax1_fused_1, T.int64(0), v0])
+                            Ts.writes(matmul_rf_local[vax1_fused_1, T.int64(0), v0:v0 + T.int64(1)])
                             matmul_rf_local[vax1_fused_1, T.int64(0), v0] = T.float32(0.0)
                         for ax1_fused_0 in range(T.int64(0), T.int64(16)):
                             for u in range(1):
@@ -904,16 +904,16 @@ class Module:
                                     vax1_fused_1_1 = Ts.axis.spatial(T.int64(16), ax1_fused_1, dtype=&quot;int64&quot;)
                                     v0_1 = Ts.axis.spatial(T.int64(10), ax0_fused_0 * T.int64(10) + ax0_fused_1, dtype=&quot;int64&quot;)
                                     vax1_fused_0 = Ts.axis.reduce(T.int64(16), ax1_fused_0, dtype=&quot;int64&quot;)
-                                    Ts.reads(matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1], lv[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1])
-                                    Ts.writes(matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1])
+                                    Ts.reads(matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)], lv[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1:vax1_fused_0 * T.int64(16) + vax1_fused_1_1 + T.int64(1)], permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1:v0_1 + T.int64(1)])
+                                    Ts.writes(matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1:v0_1 + T.int64(1)])
                                     matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1] = matmul_rf_local[vax1_fused_1_1, T.int64(0), v0_1] + lv[T.int64(0), vax1_fused_0 * T.int64(16) + vax1_fused_1_1] * permute_dims1[vax1_fused_0 * T.int64(16) + vax1_fused_1_1, v0_1]
                 for ax1_fused in T.thread_binding(T.int64(10), thread=&quot;threadIdx.x&quot;):
                     for ax0 in T.thread_binding(T.int64(16), thread=&quot;threadIdx.y&quot;):
                         with Ts.sblock(&quot;matmul&quot;):
                             vax1_fused_1_2 = Ts.axis.reduce(T.int64(16), ax0, dtype=&quot;int64&quot;)
                             v0_2 = Ts.axis.spatial(T.int64(10), ax1_fused, dtype=&quot;int64&quot;)
-                            Ts.reads(matmul_rf_local[vax1_fused_1_2, T.int64(0), v0_2])
-                            Ts.writes(matmul[T.int64(0), v0_2])
+                            Ts.reads(matmul_rf_local[vax1_fused_1_2, T.int64(0), v0_2:v0_2 + T.int64(1)])
+                            Ts.writes(matmul[T.int64(0), v0_2:v0_2 + T.int64(1)])
                             with Ts.init():
                                 matmul[T.int64(0), v0_2] = T.float32(0.0)
                             matmul[T.int64(0), v0_2] = matmul[T.int64(0), v0_2] + matmul_rf_local[vax1_fused_1_2, T.int64(0), v0_2]
@@ -930,17 +930,17 @@ class Module:
                         v0 = Ts.axis.spatial(T.int64(256), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) // T.int64(10), dtype=&quot;int64&quot;)
                         v1 = Ts.axis.spatial(T.int64(10), (ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1) % T.int64(10), dtype=&quot;int64&quot;)
                         Ts.where(ax0_ax1_fused_0 * T.int64(1024) + ax0_ax1_fused_1 &lt; T.int64(2560))
-                        Ts.reads(fc2_weight[v1, v0])
-                        Ts.writes(T_transpose[v0, v1])
+                        Ts.reads(fc2_weight[v1, v0:v0 + T.int64(1)])
+                        Ts.writes(T_transpose[v0, v1:v1 + T.int64(1)])
                         T_transpose[v0, v1] = fc2_weight[v1, v0]
 
     @R.function
     def forward(x: R.Tensor((1, 784), dtype=&quot;float32&quot;), fc1_weight: R.Tensor((256, 784), dtype=&quot;float32&quot;), fc1_bias: R.Tensor((256,), dtype=&quot;float32&quot;), fc2_weight: R.Tensor((10, 256), dtype=&quot;float32&quot;)) -&gt; R.Tensor((1, 10), dtype=&quot;float32&quot;):
         R.func_attr({&quot;num_input&quot;: 1})
         with R.dataflow():
-            lv = R.call_dps_packed(&quot;fused_relax_permute_dims_relax_matmul_relax_add_relax_nn_relu_cublas&quot;, I.Tuple([fc1_weight, x, fc1_bias]), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
-            permute_dims1 = R.call_tir(Module.transpose, I.Tuple([fc2_weight]), ty_args=[R.Tensor((256, 10), dtype=&quot;float32&quot;)])
-            gv = R.call_tir(Module.matmul, I.Tuple([lv, permute_dims1]), ty_args=[R.Tensor((1, 10), dtype=&quot;float32&quot;)])
+            lv = R.call_dps_packed(&quot;fused_relax_permute_dims_relax_matmul_relax_add_relax_nn_relu_cublas&quot;, (fc1_weight, x, fc1_bias), ty_args=[R.Tensor((1, 256), dtype=&quot;float32&quot;)])
+            permute_dims1 = R.call_tir(Module.transpose, (fc2_weight,), ty_args=[R.Tensor((256, 10), dtype=&quot;float32&quot;)])
+            gv = R.call_tir(Module.matmul, (lv, permute_dims1), ty_args=[R.Tensor((1, 10), dtype=&quot;float32&quot;)])
             R.output(gv)
         return gv
 
diff --git a/docs/how_to/tutorials/e2e_opt_model.html b/docs/how_to/tutorials/e2e_opt_model.html
index 398ab3876ac..733d86785d4 100644
--- a/docs/how_to/tutorials/e2e_opt_model.html
+++ b/docs/how_to/tutorials/e2e_opt_model.html
@@ -667,8 +667,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]
- 61%|██████▏   | 27.4M/44.7M [00:00&lt;00:00, 286MB/s]
-100%|██████████| 44.7M/44.7M [00:00&lt;00:00, 322MB/s]
+ 55%|█████▌    | 24.8M/44.7M [00:00&lt;00:00, 259MB/s]
+100%|██████████| 44.7M/44.7M [00:00&lt;00:00, 289MB/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 2f9a67832f6..b5cc5309fae 100644
--- a/docs/how_to/tutorials/sg_execution_times.html
+++ b/docs/how_to/tutorials/sg_execution_times.html
@@ -627,7 +627,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:18.679</strong> total execution time for 8 files <strong>from how_to/tutorials</strong>:</p>
+<p><strong>00:15.114</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" />
@@ -649,31 +649,31 @@ $(document).ready( function () {
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="optimize_llm.html#sphx-glr-how-to-tutorials-optimize-llm-py"><span class="std std-ref">Optimize Large Language Model</span></a> (<code class="docutils literal notranslate"><span class="pre">optimize_llm.py</span></code>)</p></td>
-<td><p>00:13.225</p></td>
+<td><p>00:10.233</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.664</p></td>
+<td><p>00:03.335</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="e2e_opt_model.html#sphx-glr-how-to-tutorials-e2e-opt-model-py"><span class="std std-ref">End-to-End Optimize Model</span></a> (<code class="docutils literal notranslate"><span class="pre">e2e_opt_model.py</span></code>)</p></td>
-<td><p>00:00.696</p></td>
+<td><p>00:00.621</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="cross_compilation_and_rpc.html#sphx-glr-how-to-tutorials-cross-compilation-and-rpc-py"><span class="std std-ref">Cross Compilation and RPC</span></a> (<code class="docutils literal notranslate"><span class="pre">cross_compilation_and_rpc.py</span></code>)</p></td>
-<td><p>00:00.590</p></td>
+<td><p>00:00.489</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="customize_opt.html#sphx-glr-how-to-tutorials-customize-opt-py"><span class="std std-ref">Customize Optimization</span></a> (<code class="docutils literal notranslate"><span class="pre">customize_opt.py</span></code>)</p></td>
-<td><p>00:00.360</p></td>
+<td><p>00:00.308</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="bring_your_own_codegen.html#sphx-glr-how-to-tutorials-bring-your-own-codegen-py"><span class="std std-ref">Bring Your Own Codegen</span></a> (<code class="docutils literal notranslate"><span class="pre">bring_your_own_codegen.py</span></code>)</p></td>
-<td><p>00:00.137</p></td>
+<td><p>00:00.122</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="mix_python_and_tvm_with_pymodule.html#sphx-glr-how-to-tutorials-mix-python-and-tvm-with-pymodule-py"><span class="std std-ref">Mix Python/PyTorch with TVM Using BasePyModule</span></a> (<code class="docutils literal notranslate"><span class="pre">mix_python_and_tvm_with_pymodule.py</span></code>)</p></td>
-<td><p>00:00.005</p></td>
+<td><p>00:00.004</p></td>
 <td><p>0.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="export_and_load_executable.html#sphx-glr-how-to-tutorials-export-and-load-executable-py"><span class="std std-ref">Export and Load Relax Executables</span></a> (<code class="docutils literal notranslate"><span class="pre">export_and_load_executable.py</span></code>)</p></td>
diff --git a/docs/reference/api/doxygen/annotated.html b/docs/reference/api/doxygen/annotated.html
index 076f80dd197..78adcdeb7a6 100644
--- a/docs/reference/api/doxygen/annotated.html
+++ b/docs/reference/api/doxygen/annotated.html
@@ -89,9 +89,10 @@ $(function() {
 <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_01PrimVar_01_4.html" target="_self">TypeTraits&lt; 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_01SeqStmt_01_4.html" target="_self">TypeTraits&lt; SeqStmt &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_01tirx_1_1TensorVar_01_4.html" target="_self">TypeTraits&lt; tirx::TensorVar &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_01tvm_1_1StringImm_01_4.html" target="_self">TypeTraits&lt; tvm::StringImm &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_10_" class="odd" style="display:none;"><td 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_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_01TensorRegion_01_4.html" target="_self">TypeTraits&lt; TensorRegion &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_01tirx_1_1TensorVar_01_4.html" target="_self">TypeTraits&lt; tirx::TensorVar &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_10_" class="odd" style="display:none;"><td 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_1StringImm_01_4.html" target="_self">TypeTraits&lt; tvm::StringImm &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_11_" class="odd" style="display:none;"><td 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_1prim.html" target="_self">prim</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_1prim_1_1Add.html" target="_self">Add</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1prim_1_1AddNode.html" title="a + b">AddNode</a> </td></tr>
 <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_1prim_1_1AddNode.html" target="_self">AddNode</a></td><td class="desc"><ul>
@@ -612,24 +613,22 @@ $(function() {
 <tr id="row_0_6_1_46_" 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_1script_1_1printer_1_1LiteralDocNode.html" target="_self">LiteralDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents literal value </td></tr>
 <tr id="row_0_6_1_47_" 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_1script_1_1printer_1_1NamespaceDoc.html" target="_self">NamespaceDoc</a></td><td class="desc">An owning reference to a deferred script namespace </td></tr>
 <tr id="row_0_6_1_48_" 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_1script_1_1printer_1_1NamespaceDocNode.html" target="_self">NamespaceDocNode</a></td><td class="desc">A reference to a canonical script namespace </td></tr>
-<tr id="row_0_6_1_49_" 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_1script_1_1printer_1_1OpCallDoc.html" target="_self">OpCallDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html" title="Doc that represents call to an TIRX operator.">OpCallDocNode</a> </td></tr>
-<tr id="row_0_6_1_50_" 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_1script_1_1printer_1_1OpCallDocNode.html" target="_self">OpCallDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents call to an TIRX operator </td></tr>
-<tr id="row_0_6_1_51_" 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_1script_1_1printer_1_1OperationDoc.html" target="_self">OperationDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1OperationDocNode.html" title="Doc that represents operation.">OperationDocNode</a> </td></tr>
-<tr id="row_0_6_1_52_" 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_1script_1_1printer_1_1OperationDocNode.html" target="_self">OperationDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents operation </td></tr>
-<tr id="row_0_6_1_53_" 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_1script_1_1printer_1_1ReturnDoc.html" target="_self">ReturnDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ReturnDocNode.html" title="Doc that represents return statement.">ReturnDocNode</a> </td></tr>
-<tr id="row_0_6_1_54_" 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_1script_1_1printer_1_1ReturnDocNode.html" target="_self">ReturnDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents return statement </td></tr>
-<tr id="row_0_6_1_55_" 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_1script_1_1printer_1_1ScopeDoc.html" target="_self">ScopeDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ScopeDocNode.html" title="Doc that represents special scopes.">ScopeDocNode</a> </td></tr>
-<tr id="row_0_6_1_56_" 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_1script_1_1printer_1_1ScopeDocNode.html" target="_self">ScopeDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents special scopes </td></tr>
-<tr id="row_0_6_1_57_" 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_1script_1_1printer_1_1SliceDoc.html" target="_self">SliceDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1SliceDocNode.html" title="Doc that represents slice in Index expression.">SliceDocNode</a> </td></tr>
-<tr id="row_0_6_1_58_" 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_1script_1_1printer_1_1SliceDocNode.html" target="_self">SliceDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents slice in Index expression </td></tr>
-<tr id="row_0_6_1_59_" 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_1script_1_1printer_1_1StmtBlockDoc.html" target="_self">StmtBlockDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtBlockDocNode.html" title="The container doc that holds a list of StmtDoc.">StmtBlockDocNode</a> </td></tr>
-<tr id="row_0_6_1_60_" 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_1script_1_1printer_1_1StmtBlockDocNode.html" target="_self">StmtBlockDocNode</a></td><td class="desc">The container doc that holds a list of <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html" title="Reference type of StmtDocNode.">StmtDoc</a> </td></tr>
-<tr id="row_0_6_1_61_" 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_1script_1_1printer_1_1StmtDoc.html" target="_self">StmtDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" title="The base class of statement doc.">StmtDocNode</a> </td></tr>
-<tr id="row_0_6_1_62_" 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_1script_1_1printer_1_1StmtDocNode.html" target="_self">StmtDocNode</a></td><td class="desc">The base class of statement doc </td></tr>
-<tr id="row_0_6_1_63_" 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_1script_1_1printer_1_1TupleDoc.html" target="_self">TupleDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1TupleDocNode.html" title="Doc that represents tuple literal.">TupleDocNode</a> </td></tr>
-<tr id="row_0_6_1_64_" 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_1script_1_1printer_1_1TupleDocNode.html" target="_self">TupleDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents tuple literal </td></tr>
-<tr id="row_0_6_1_65_" 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_1script_1_1printer_1_1WhileDoc.html" target="_self">WhileDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1WhileDocNode.html" title="Doc that represents while statement.">WhileDocNode</a> </td></tr>
-<tr id="row_0_6_1_66_" 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_1script_1_1printer_1_1WhileDocNode.html" target="_self">WhileDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents while statement </td></tr>
+<tr id="row_0_6_1_49_" 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_1script_1_1printer_1_1OperationDoc.html" target="_self">OperationDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1OperationDocNode.html" title="Doc that represents operation.">OperationDocNode</a> </td></tr>
+<tr id="row_0_6_1_50_" 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_1script_1_1printer_1_1OperationDocNode.html" target="_self">OperationDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents operation </td></tr>
+<tr id="row_0_6_1_51_" 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_1script_1_1printer_1_1ReturnDoc.html" target="_self">ReturnDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ReturnDocNode.html" title="Doc that represents return statement.">ReturnDocNode</a> </td></tr>
+<tr id="row_0_6_1_52_" 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_1script_1_1printer_1_1ReturnDocNode.html" target="_self">ReturnDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents return statement </td></tr>
+<tr id="row_0_6_1_53_" 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_1script_1_1printer_1_1ScopeDoc.html" target="_self">ScopeDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ScopeDocNode.html" title="Doc that represents special scopes.">ScopeDocNode</a> </td></tr>
+<tr id="row_0_6_1_54_" 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_1script_1_1printer_1_1ScopeDocNode.html" target="_self">ScopeDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents special scopes </td></tr>
+<tr id="row_0_6_1_55_" 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_1script_1_1printer_1_1SliceDoc.html" target="_self">SliceDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1SliceDocNode.html" title="Doc that represents slice in Index expression.">SliceDocNode</a> </td></tr>
+<tr id="row_0_6_1_56_" 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_1script_1_1printer_1_1SliceDocNode.html" target="_self">SliceDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents slice in Index expression </td></tr>
+<tr id="row_0_6_1_57_" 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_1script_1_1printer_1_1StmtBlockDoc.html" target="_self">StmtBlockDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtBlockDocNode.html" title="The container doc that holds a list of StmtDoc.">StmtBlockDocNode</a> </td></tr>
+<tr id="row_0_6_1_58_" 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_1script_1_1printer_1_1StmtBlockDocNode.html" target="_self">StmtBlockDocNode</a></td><td class="desc">The container doc that holds a list of <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html" title="Reference type of StmtDocNode.">StmtDoc</a> </td></tr>
+<tr id="row_0_6_1_59_" 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_1script_1_1printer_1_1StmtDoc.html" target="_self">StmtDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" title="The base class of statement doc.">StmtDocNode</a> </td></tr>
+<tr id="row_0_6_1_60_" 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_1script_1_1printer_1_1StmtDocNode.html" target="_self">StmtDocNode</a></td><td class="desc">The base class of statement doc </td></tr>
+<tr id="row_0_6_1_61_" 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_1script_1_1printer_1_1TupleDoc.html" target="_self">TupleDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1TupleDocNode.html" title="Doc that represents tuple literal.">TupleDocNode</a> </td></tr>
+<tr id="row_0_6_1_62_" 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_1script_1_1printer_1_1TupleDocNode.html" target="_self">TupleDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents tuple literal </td></tr>
+<tr id="row_0_6_1_63_" 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_1script_1_1printer_1_1WhileDoc.html" target="_self">WhileDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1WhileDocNode.html" title="Doc that represents while statement.">WhileDocNode</a> </td></tr>
+<tr id="row_0_6_1_64_" 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_1script_1_1printer_1_1WhileDocNode.html" target="_self">WhileDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents while statement </td></tr>
 <tr id="row_0_7_" class="odd" style="display:none;"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_7_" class="arrow" onclick="toggleFolder('0_7_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacetvm_1_1support.html" target="_self">support</a></td><td class="desc"></td></tr>
 <tr id="row_0_7_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_1support_1_1NVTXScopedRange.html" target="_self">NVTXScopedRange</a></td><td class="desc">A class to create a NVTX range. No-op if TVM is not built against NVTX </td></tr>
 <tr id="row_0_7_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="structtvm_1_1support_1_1Serializer.html" target="_self">Serializer</a></td><td class="desc">Primary <a class="el" href="structtvm_1_1support_1_1Serializer.html" title="Primary Serializer template. Specialize for each serializable type.">Serializer</a> template. Specialize for each seri [...]
diff --git a/docs/reference/api/doxygen/classes.html b/docs/reference/api/doxygen/classes.html
index 3492cc4a33e..ab70063e5ea 100644
--- a/docs/reference/api/doxygen/classes.html
+++ b/docs/reference/api/doxygen/classes.html
@@ -112,7 +112,7 @@ $(function() {
 <dd><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1details_1_1Namer.html">Namer</a> (<a class="el" href="namespacetvm_1_1script_1_1ir__builder_1_1details.html">tvm::script::ir_builder::details</a>)</dd><dd><a class="el" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html">NamespaceDoc</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_1NamespaceDocNode.html">NamespaceDocNode [...]
 <dl class="classindex even">
 <dt class="alphachar"><a id="letter_O" name="letter_O">O</a></dt>
-<dd><a class="el" href="classtvm_1_1ObjectFunctor.html">ObjectFunctor</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1ObjectFunctor_3_01R_07NodeArg_00_01Args_8_8_8_08_4.html">ObjectFunctor&lt; R(NodeArg, Args...)&gt;</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1ObjectMutator.html">ObjectMutator</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1ObjectVisi [...]
+<dd><a class="el" href="classtvm_1_1ObjectFunctor.html">ObjectFunctor</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1ObjectFunctor_3_01R_07NodeArg_00_01Args_8_8_8_08_4.html">ObjectFunctor&lt; R(NodeArg, Args...)&gt;</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1ObjectMutator.html">ObjectMutator</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1ObjectVisi [...]
 <dl class="classindex odd">
 <dt class="alphachar"><a id="letter_P" name="letter_P">P</a></dt>
 <dd><a class="el" href="classtvm_1_1relax_1_1PackedFuncType.html">PackedFuncType</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="classtvm_1_1relax_1_1PackedFuncTypeNode.html">PackedFuncTypeNode</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="structtvm_1_1relax_1_1PadAttrs.html">PadAttrs</a> (<a class="el" href="namespacetvm_1_1relax.html">tvm::relax</a>)</dd><dd><a class="el" href="structtvm [...]
@@ -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="structtvm_1_1relax_1_1TakeBackwardAttrs.html">TakeBackwardAttrs</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 c [...]
+<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="structtvm_1_1relax_1_1TakeBackwardAttrs.html">TakeBackwardAttrs</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 c [...]
 <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_1UnknownLoc.html">UnknownLoc</a> (<a class="el" href="namespacetvm.html">tvm</a>)</dd><dd><a class="el" href="classtvm_1_1UnknownLocNode.html">UnknownLocNode</a> (<a class="el" href=" [...]
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1Doc.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1Doc.html
index 1220ca2baec..8de57dcb2f6 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1Doc.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1Doc.html
@@ -88,7 +88,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::Doc:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1Doc__inherit__graph.svg" width="7295" height="770"><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_1printer_1_1Doc__inherit__graph.svg" width="7024" height="770"><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::printer::Doc:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode.html
index 59cc5b77109..415f21d3439 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode.html
@@ -90,7 +90,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::DocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg" width="6251" height="784"><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_1printer_1_1DocNode__inherit__graph.svg" width="6019" height="784"><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::printer::DocNode:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg
index 4868e1bd334..380aa781834 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1DocNode__inherit__graph.svg
@@ -4,8 +4,8 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::script::printer::DocNode Pages: 1 -->
-<svg width="4688pt" height="588pt"
- viewBox="0.00 0.00 4688.00 588.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="4514pt" height="588pt"
+ viewBox="0.00 0.00 4514.00 588.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 584)">
 <title>tvm::script::printer::DocNode</title>
 <!-- Node1 -->
@@ -137,20 +137,20 @@
 <g id="Node000018" class="node">
 <title>Node18</title>
 <g id="a_Node000018"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" target="_top" xlink:title="The base class of statement doc.">
-<polygon fill="white" stroke="transparent" points="3375,-313 3219,-313 3219,-227 3375,-227 3375,-313"/>
-<text text-anchor="start" x="3251.5" y="-301" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="3260" y="-290" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDocNode</text>
-<text text-anchor="start" x="3223" y="-275" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3236" y="-275" font-family="Helvetica,sans-Serif" font-size="10.00">comment</text>
-<text text-anchor="start" x="3223" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3236" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="3236" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="3223" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3236" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="3219,-285 3219,-285 3375,-285 3375,-285 3219,-285"/>
-<polygon fill="#666666" stroke="#666666" points="3219,-270 3219,-270 3234,-270 3234,-270 3219,-270"/>
-<polygon fill="#666666" stroke="#666666" points="3234,-270 3234,-270 3375,-270 3375,-270 3234,-270"/>
-<polygon fill="none" stroke="#666666" points="3219,-227 3219,-313 3375,-313 3375,-227 3219,-227"/>
+<polygon fill="white" stroke="transparent" points="3288,-313 3132,-313 3132,-227 3288,-227 3288,-313"/>
+<text text-anchor="start" x="3164.5" y="-301" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="3173" y="-290" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDocNode</text>
+<text text-anchor="start" x="3136" y="-275" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3149" y="-275" font-family="Helvetica,sans-Serif" font-size="10.00">comment</text>
+<text text-anchor="start" x="3136" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3149" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="3149" y="-249" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="3136" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3149" y="-234" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="3132,-285 3132,-285 3288,-285 3288,-285 3132,-285"/>
+<polygon fill="#666666" stroke="#666666" points="3132,-270 3132,-270 3147,-270 3147,-270 3132,-270"/>
+<polygon fill="#666666" stroke="#666666" points="3147,-270 3147,-270 3288,-270 3288,-270 3147,-270"/>
+<polygon fill="none" stroke="#666666" points="3132,-227 3132,-313 3288,-313 3288,-227 3132,-227"/>
 </a>
 </g>
 </g>
@@ -158,8 +158,8 @@
 <g id="edge17_Node000001_Node000018" class="edge">
 <title>Node1&#45;&gt;Node18</title>
 <g id="a_edge17_Node000001_Node000018"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2254.14,-423.14C2468.62,-391.85 3015.02,-312.14 3218.8,-282.41"/>
-<polygon fill="none" stroke="#63b8ff" points="2253.57,-419.69 2244.18,-424.59 2254.58,-426.61 2253.57,-419.69"/>
+<path fill="none" stroke="#63b8ff" d="M2253.94,-422.1C2454.2,-390.45 2941.56,-313.43 3131.96,-283.33"/>
+<polygon fill="none" stroke="#63b8ff" points="2253.37,-418.65 2244.04,-423.67 2254.47,-425.56 2253.37,-418.65"/>
 </a>
 </g>
 </g>
@@ -589,8 +589,8 @@
 <g id="edge18_Node000018_Node000019" class="edge">
 <title>Node18&#45;&gt;Node19</title>
 <g id="a_edge18_Node000018_Node000019"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3208.69,-266.93C2988.98,-260.66 2423.2,-237.36 2253,-161 2237.32,-153.96 2222.56,-142.99 2209.81,-131.41"/>
-<polygon fill="none" stroke="#63b8ff" points="3208.8,-270.43 3218.89,-267.21 3208.99,-263.44 3208.8,-270.43"/>
+<path fill="none" stroke="#63b8ff" d="M3121.77,-265.97C2915.39,-257.8 2407.01,-230.96 2253,-161 2237.35,-153.89 2222.61,-142.89 2209.85,-131.31"/>
+<polygon fill="none" stroke="#63b8ff" points="3121.83,-269.48 3131.96,-266.37 3122.1,-262.48 3121.83,-269.48"/>
 </a>
 </g>
 </g>
@@ -623,8 +623,8 @@
 <g id="edge19_Node000018_Node000020" class="edge">
 <title>Node18&#45;&gt;Node20</title>
 <g id="a_edge19_Node000018_Node000020"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3208.88,-264.84C3016.46,-254.66 2564.91,-224.58 2427,-161 2414.74,-155.35 2403.01,-147.32 2392.37,-138.53"/>
-<polygon fill="none" stroke="#63b8ff" points="3208.79,-268.34 3218.95,-265.36 3209.15,-261.35 3208.79,-268.34"/>
+<path fill="none" stroke="#63b8ff" d="M3121.71,-263.43C2943.82,-251.15 2548.86,-218.18 2427,-161 2414.96,-155.35 2403.43,-147.44 2392.92,-138.79"/>
+<polygon fill="none" stroke="#63b8ff" points="3121.61,-266.93 3131.82,-264.13 3122.08,-259.95 3121.61,-266.93"/>
 </a>
 </g>
 </g>
@@ -651,8 +651,8 @@
 <g id="edge20_Node000018_Node000021" class="edge">
 <title>Node18&#45;&gt;Node21</title>
 <g id="a_edge20_Node000018_Node000021"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3208.49,-261.68C3045.97,-247.19 2706.93,-211.8 2601,-161 2582.37,-152.06 2564.89,-137.8 2550.57,-123.81"/>
-<polygon fill="none" stroke="#63b8ff" points="3208.67,-265.21 3218.94,-262.6 3209.28,-258.23 3208.67,-265.21"/>
+<path fill="none" stroke="#63b8ff" d="M3121.57,-268.53C2998.65,-264.6 2771.97,-245.27 2601,-161 2582.46,-151.86 2565.01,-137.56 2550.67,-123.59"/>
+<polygon fill="none" stroke="#63b8ff" points="3121.59,-272.04 3131.69,-268.83 3121.8,-265.04 3121.59,-272.04"/>
 </a>
 </g>
 </g>
@@ -685,8 +685,8 @@
 <g id="edge21_Node000018_Node000022" class="edge">
 <title>Node18&#45;&gt;Node22</title>
 <g id="a_edge21_Node000018_Node000022"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3208.7,-264.96C3100.94,-256.91 2915.72,-232.87 2775,-161 2763.34,-155.04 2752.07,-147.1 2741.73,-138.53"/>
-<polygon fill="none" stroke="#63b8ff" points="3208.65,-268.46 3218.88,-265.69 3209.15,-261.48 3208.65,-268.46"/>
+<path fill="none" stroke="#63b8ff" d="M3121.95,-260.07C3030.67,-247.95 2886.07,-220.51 2775,-161 2763.64,-154.91 2752.6,-147.01 2742.41,-138.55"/>
+<polygon fill="none" stroke="#63b8ff" points="3121.62,-263.56 3131.98,-261.37 3122.51,-256.62 3121.62,-263.56"/>
 </a>
 </g>
 </g>
@@ -713,8 +713,8 @@
 <g id="edge22_Node000018_Node000023" class="edge">
 <title>Node18&#45;&gt;Node23</title>
 <g id="a_edge22_Node000018_Node000023"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3208.63,-252.82C3135.56,-236.87 3030.89,-207.96 2949,-161 2931.61,-151.03 2914.78,-137.04 2900.64,-123.57"/>
-<polygon fill="none" stroke="#63b8ff" points="3208.21,-256.31 3218.72,-254.98 3209.68,-249.46 3208.21,-256.31"/>
+<path fill="none" stroke="#63b8ff" d="M3122.12,-241.29C3069.65,-222.68 3002.96,-195.31 2949,-161 2932.6,-150.57 2916.39,-136.93 2902.49,-123.91"/>
+<polygon fill="none" stroke="#63b8ff" points="3121.15,-244.66 3131.74,-244.66 3123.46,-238.05 3121.15,-244.66"/>
 </a>
 </g>
 </g>
@@ -741,8 +741,8 @@
 <g id="edge23_Node000018_Node000024" class="edge">
 <title>Node18&#45;&gt;Node24</title>
 <g id="a_edge23_Node000018_Node000024"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3213.99,-221.77C3184.47,-203.87 3151.51,-182.58 3123,-161 3107.99,-149.64 3092.53,-136.18 3078.89,-123.59"/>
-<polygon fill="none" stroke="#63b8ff" points="3212.25,-224.81 3222.63,-226.97 3215.87,-218.82 3212.25,-224.81"/>
+<path fill="none" stroke="#63b8ff" d="M3164.08,-219.52C3136.43,-189.72 3101.58,-152.17 3075.22,-123.76"/>
+<polygon fill="none" stroke="#63b8ff" points="3161.58,-221.97 3170.95,-226.92 3166.71,-217.21 3161.58,-221.97"/>
 </a>
 </g>
 </g>
@@ -769,8 +769,8 @@
 <g id="edge24_Node000018_Node000025" class="edge">
 <title>Node18&#45;&gt;Node25</title>
 <g id="a_edge24_Node000018_Node000025"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3273.16,-217.62C3259.48,-188.13 3242.51,-151.57 3229.61,-123.76"/>
-<polygon fill="none" stroke="#63b8ff" points="3270.09,-219.32 3277.48,-226.92 3276.44,-216.38 3270.09,-219.32"/>
+<path fill="none" stroke="#63b8ff" d="M3210,-216.85C3210,-187.5 3210,-151.33 3210,-123.76"/>
+<polygon fill="none" stroke="#63b8ff" points="3206.5,-216.92 3210,-226.92 3213.5,-216.92 3206.5,-216.92"/>
 </a>
 </g>
 </g>
@@ -799,8 +799,8 @@
 <g id="edge25_Node000018_Node000026" class="edge">
 <title>Node18&#45;&gt;Node26</title>
 <g id="a_edge25_Node000018_Node000026"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3320.84,-217.62C3334.52,-188.13 3351.49,-151.57 3364.39,-123.76"/>
-<polygon fill="none" stroke="#63b8ff" points="3317.56,-216.38 3316.52,-226.92 3323.91,-219.32 3317.56,-216.38"/>
+<path fill="none" stroke="#63b8ff" d="M3255.92,-219.52C3283.57,-189.72 3318.42,-152.17 3344.78,-123.76"/>
+<polygon fill="none" stroke="#63b8ff" points="3253.29,-217.21 3249.05,-226.92 3258.42,-221.97 3253.29,-217.21"/>
 </a>
 </g>
 </g>
@@ -833,8 +833,8 @@
 <g id="edge26_Node000018_Node000027" class="edge">
 <title>Node18&#45;&gt;Node27</title>
 <g id="a_edge26_Node000018_Node000027"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3380.01,-221.77C3409.53,-203.87 3442.49,-182.58 3471,-161 3480.14,-154.08 3489.44,-146.39 3498.4,-138.59"/>
-<polygon fill="none" stroke="#63b8ff" points="3378.13,-218.82 3371.37,-226.97 3381.75,-224.81 3378.13,-218.82"/>
+<path fill="none" stroke="#63b8ff" d="M3297.88,-241.29C3350.35,-222.68 3417.04,-195.31 3471,-161 3481.19,-154.52 3491.3,-146.81 3500.83,-138.77"/>
+<polygon fill="none" stroke="#63b8ff" points="3296.54,-238.05 3288.26,-244.66 3298.85,-244.66 3296.54,-238.05"/>
 </a>
 </g>
 </g>
@@ -873,8 +873,8 @@
 <g id="edge27_Node000018_Node000028" class="edge">
 <title>Node18&#45;&gt;Node28</title>
 <g id="a_edge27_Node000018_Node000028"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3385.37,-252.82C3458.44,-236.87 3563.11,-207.96 3645,-161 3648.02,-159.27 3651.02,-157.42 3653.99,-155.47"/>
-<polygon fill="none" stroke="#63b8ff" points="3384.32,-249.46 3375.28,-254.98 3385.79,-256.31 3384.32,-249.46"/>
+<path fill="none" stroke="#63b8ff" d="M3298.05,-260.07C3389.33,-247.95 3533.93,-220.51 3645,-161 3647.98,-159.41 3650.93,-157.69 3653.85,-155.87"/>
+<polygon fill="none" stroke="#63b8ff" points="3297.49,-256.62 3288.02,-261.37 3298.38,-263.56 3297.49,-256.62"/>
 </a>
 </g>
 </g>
@@ -907,37 +907,29 @@
 <g id="edge28_Node000018_Node000029" class="edge">
 <title>Node18&#45;&gt;Node29</title>
 <g id="a_edge28_Node000018_Node000029"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3385.3,-264.96C3493.06,-256.91 3678.28,-232.87 3819,-161 3830.66,-155.04 3841.93,-147.1 3852.27,-138.53"/>
-<polygon fill="none" stroke="#63b8ff" points="3384.85,-261.48 3375.12,-265.69 3385.35,-268.46 3384.85,-261.48"/>
+<path fill="none" stroke="#63b8ff" d="M3298.43,-268.53C3421.35,-264.6 3648.03,-245.27 3819,-161 3830.75,-155.21 3842.06,-147.35 3852.41,-138.81"/>
+<polygon fill="none" stroke="#63b8ff" points="3298.2,-265.04 3288.31,-268.83 3298.41,-272.04 3298.2,-265.04"/>
 </a>
 </g>
 </g>
 <!-- Node30 -->
 <g id="Node000030" class="node">
 <title>Node30</title>
-<g id="a_Node000030"><a xlink:href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html" target="_top" xlink:title="Doc that represents call to an TIRX operator.">
-<polygon fill="white" stroke="transparent" points="4158,-153.5 4002,-153.5 4002,-7.5 4158,-7.5 4158,-153.5"/>
-<text text-anchor="start" x="4034.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="4038.5" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">::OpCallDocNode</text>
-<text text-anchor="start" x="4006" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4019" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">callee</text>
-<text text-anchor="start" x="4006" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4019" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
+<g id="a_Node000030"><a xlink:href="classtvm_1_1script_1_1printer_1_1ReturnDocNode.html" target="_top" xlink:title="Doc that represents return statement.">
+<polygon fill="white" stroke="transparent" points="4158,-123.5 4002,-123.5 4002,-37.5 4158,-37.5 4158,-123.5"/>
+<text text-anchor="start" x="4034.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="4038.5" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ReturnDocNode</text>
 <text text-anchor="start" x="4006" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4019" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">workspace</text>
+<text text-anchor="start" x="4019" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
 <text text-anchor="start" x="4006" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4019" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">config</text>
-<text text-anchor="start" x="4006" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4019" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00">dispatch</text>
-<text text-anchor="start" x="4006" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4019" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="4019" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4006" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4019" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="4002,-125.5 4002,-125.5 4158,-125.5 4158,-125.5 4002,-125.5"/>
-<polygon fill="#666666" stroke="#666666" points="4002,-50.5 4002,-50.5 4017,-50.5 4017,-50.5 4002,-50.5"/>
-<polygon fill="#666666" stroke="#666666" points="4017,-50.5 4017,-50.5 4158,-50.5 4158,-50.5 4017,-50.5"/>
-<polygon fill="none" stroke="#666666" points="4002,-7.5 4002,-153.5 4158,-153.5 4158,-7.5 4002,-7.5"/>
+<text text-anchor="start" x="4019" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="4019" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="4006" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4019" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="4002,-95.5 4002,-95.5 4158,-95.5 4158,-95.5 4002,-95.5"/>
+<polygon fill="#666666" stroke="#666666" points="4002,-80.5 4002,-80.5 4017,-80.5 4017,-80.5 4002,-80.5"/>
+<polygon fill="#666666" stroke="#666666" points="4017,-80.5 4017,-80.5 4158,-80.5 4158,-80.5 4017,-80.5"/>
+<polygon fill="none" stroke="#666666" points="4002,-37.5 4002,-123.5 4158,-123.5 4158,-37.5 4002,-37.5"/>
 </a>
 </g>
 </g>
@@ -945,29 +937,35 @@
 <g id="edge29_Node000018_Node000030" class="edge">
 <title>Node18&#45;&gt;Node30</title>
 <g id="a_edge29_Node000018_Node000030"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3385.51,-261.68C3548.03,-247.19 3887.07,-211.8 3993,-161 3997.52,-158.83 4001.97,-156.35 4006.33,-153.64"/>
-<polygon fill="none" stroke="#63b8ff" points="3384.72,-258.23 3375.06,-262.6 3385.33,-265.21 3384.72,-258.23"/>
+<path fill="none" stroke="#63b8ff" d="M3298.29,-263.43C3476.18,-251.15 3871.14,-218.18 3993,-161 4011.89,-152.13 4029.54,-137.71 4043.94,-123.57"/>
+<polygon fill="none" stroke="#63b8ff" points="3297.92,-259.95 3288.18,-264.13 3298.39,-266.93 3297.92,-259.95"/>
 </a>
 </g>
 </g>
 <!-- Node31 -->
 <g id="Node000031" class="node">
 <title>Node31</title>
-<g id="a_Node000031"><a xlink:href="classtvm_1_1script_1_1printer_1_1ReturnDocNode.html" target="_top" xlink:title="Doc that represents return statement.">
-<polygon fill="white" stroke="transparent" points="4332,-123.5 4176,-123.5 4176,-37.5 4332,-37.5 4332,-123.5"/>
-<text text-anchor="start" x="4208.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="4212.5" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ReturnDocNode</text>
-<text text-anchor="start" x="4180" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4193" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
-<text text-anchor="start" x="4180" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4193" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="4193" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4180" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4193" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="4176,-95.5 4176,-95.5 4332,-95.5 4332,-95.5 4176,-95.5"/>
-<polygon fill="#666666" stroke="#666666" points="4176,-80.5 4176,-80.5 4191,-80.5 4191,-80.5 4176,-80.5"/>
-<polygon fill="#666666" stroke="#666666" points="4191,-80.5 4191,-80.5 4332,-80.5 4332,-80.5 4191,-80.5"/>
-<polygon fill="none" stroke="#666666" points="4176,-37.5 4176,-123.5 4332,-123.5 4332,-37.5 4176,-37.5"/>
+<g id="a_Node000031"><a xlink:href="classtvm_1_1script_1_1printer_1_1ScopeDocNode.html" target="_top" xlink:title="Doc that represents special scopes.">
+<polygon fill="white" stroke="transparent" points="4332,-146 4176,-146 4176,-15 4332,-15 4332,-146"/>
+<text text-anchor="start" x="4208.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="4214" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ScopeDocNode</text>
+<text text-anchor="start" x="4180" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4193" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">lhs</text>
+<text text-anchor="start" x="4180" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4193" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">rhs</text>
+<text text-anchor="start" x="4180" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4193" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
+<text text-anchor="start" x="4180" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4193" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">allow_concise_scoping</text>
+<text text-anchor="start" x="4180" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4193" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="4193" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="4180" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4193" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="4176,-117.5 4176,-117.5 4332,-117.5 4332,-117.5 4176,-117.5"/>
+<polygon fill="#666666" stroke="#666666" points="4176,-57.5 4176,-57.5 4191,-57.5 4191,-57.5 4176,-57.5"/>
+<polygon fill="#666666" stroke="#666666" points="4191,-57.5 4191,-57.5 4332,-57.5 4332,-57.5 4191,-57.5"/>
+<polygon fill="none" stroke="#666666" points="4176,-15 4176,-146 4332,-146 4332,-15 4176,-15"/>
 </a>
 </g>
 </g>
@@ -975,35 +973,31 @@
 <g id="edge30_Node000018_Node000031" class="edge">
 <title>Node18&#45;&gt;Node31</title>
 <g id="a_edge30_Node000018_Node000031"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3385.12,-264.84C3577.54,-254.66 4029.09,-224.58 4167,-161 4185.95,-152.26 4203.61,-137.87 4218,-123.71"/>
-<polygon fill="none" stroke="#63b8ff" points="3384.85,-261.35 3375.05,-265.36 3385.21,-268.34 3384.85,-261.35"/>
+<path fill="none" stroke="#63b8ff" d="M3298.23,-265.97C3504.61,-257.8 4012.99,-230.96 4167,-161 4175.66,-157.07 4184.05,-151.94 4191.97,-146.18"/>
+<polygon fill="none" stroke="#63b8ff" points="3297.9,-262.48 3288.04,-266.37 3298.17,-269.48 3297.9,-262.48"/>
 </a>
 </g>
 </g>
 <!-- Node32 -->
 <g id="Node000032" class="node">
 <title>Node32</title>
-<g id="a_Node000032"><a xlink:href="classtvm_1_1script_1_1printer_1_1ScopeDocNode.html" target="_top" xlink:title="Doc that represents special scopes.">
-<polygon fill="white" stroke="transparent" points="4506,-146 4350,-146 4350,-15 4506,-15 4506,-146"/>
-<text text-anchor="start" x="4382.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="4388" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ScopeDocNode</text>
-<text text-anchor="start" x="4354" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4367" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">lhs</text>
+<g id="a_Node000032"><a xlink:href="classtvm_1_1script_1_1printer_1_1WhileDocNode.html" target="_top" xlink:title="Doc that represents while statement.">
+<polygon fill="white" stroke="transparent" points="4506,-131 4350,-131 4350,-30 4506,-30 4506,-131"/>
+<text text-anchor="start" x="4382.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="4388.5" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">::WhileDocNode</text>
 <text text-anchor="start" x="4354" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4367" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">rhs</text>
+<text text-anchor="start" x="4367" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">predicate</text>
 <text text-anchor="start" x="4354" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="4367" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
 <text text-anchor="start" x="4354" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4367" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">allow_concise_scoping</text>
-<text text-anchor="start" x="4354" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4367" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="4367" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4354" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4367" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="4350,-117.5 4350,-117.5 4506,-117.5 4506,-117.5 4350,-117.5"/>
-<polygon fill="#666666" stroke="#666666" points="4350,-57.5 4350,-57.5 4365,-57.5 4365,-57.5 4350,-57.5"/>
-<polygon fill="#666666" stroke="#666666" points="4365,-57.5 4365,-57.5 4506,-57.5 4506,-57.5 4365,-57.5"/>
-<polygon fill="none" stroke="#666666" points="4350,-15 4350,-146 4506,-146 4506,-15 4350,-15"/>
+<text text-anchor="start" x="4367" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="4367" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="4354" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4367" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="4350,-102.5 4350,-102.5 4506,-102.5 4506,-102.5 4350,-102.5"/>
+<polygon fill="#666666" stroke="#666666" points="4350,-72.5 4350,-72.5 4365,-72.5 4365,-72.5 4350,-72.5"/>
+<polygon fill="#666666" stroke="#666666" points="4365,-72.5 4365,-72.5 4506,-72.5 4506,-72.5 4365,-72.5"/>
+<polygon fill="none" stroke="#666666" points="4350,-30 4350,-131 4506,-131 4506,-30 4350,-30"/>
 </a>
 </g>
 </g>
@@ -1011,40 +1005,8 @@
 <g id="edge31_Node000018_Node000032" class="edge">
 <title>Node18&#45;&gt;Node32</title>
 <g id="a_edge31_Node000018_Node000032"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3385.31,-266.93C3605.02,-260.66 4170.8,-237.36 4341,-161 4349.77,-157.06 4358.26,-151.89 4366.26,-146.07"/>
-<polygon fill="none" stroke="#63b8ff" points="3385.01,-263.44 3375.11,-267.21 3385.2,-270.43 3385.01,-263.44"/>
-</a>
-</g>
-</g>
-<!-- Node33 -->
-<g id="Node000033" class="node">
-<title>Node33</title>
-<g id="a_Node000033"><a xlink:href="classtvm_1_1script_1_1printer_1_1WhileDocNode.html" target="_top" xlink:title="Doc that represents while statement.">
-<polygon fill="white" stroke="transparent" points="4680,-131 4524,-131 4524,-30 4680,-30 4680,-131"/>
-<text text-anchor="start" x="4556.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="4562.5" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">::WhileDocNode</text>
-<text text-anchor="start" x="4528" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4541" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">predicate</text>
-<text text-anchor="start" x="4528" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4541" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
-<text text-anchor="start" x="4528" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4541" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="4541" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="4528" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4541" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="4524,-102.5 4524,-102.5 4680,-102.5 4680,-102.5 4524,-102.5"/>
-<polygon fill="#666666" stroke="#666666" points="4524,-72.5 4524,-72.5 4539,-72.5 4539,-72.5 4524,-72.5"/>
-<polygon fill="#666666" stroke="#666666" points="4539,-72.5 4539,-72.5 4680,-72.5 4680,-72.5 4539,-72.5"/>
-<polygon fill="none" stroke="#666666" points="4524,-30 4524,-131 4680,-131 4680,-30 4524,-30"/>
-</a>
-</g>
-</g>
-<!-- Node18&#45;&gt;Node33 -->
-<g id="edge32_Node000018_Node000033" class="edge">
-<title>Node18&#45;&gt;Node33</title>
-<g id="a_edge32_Node000018_Node000033"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3385.43,-268.44C3630.24,-265.75 4312.18,-250.22 4515,-161 4530.92,-154 4545.86,-142.88 4558.71,-131.15"/>
-<polygon fill="none" stroke="#63b8ff" points="3385.11,-264.94 3375.15,-268.55 3385.19,-271.94 3385.11,-264.94"/>
+<path fill="none" stroke="#63b8ff" d="M3298.19,-267.74C3530.56,-263.31 4154.48,-243.8 4341,-161 4356.9,-153.94 4371.83,-142.81 4384.68,-131.08"/>
+<polygon fill="none" stroke="#63b8ff" points="3298.03,-264.25 3288.09,-267.93 3298.16,-271.24 3298.03,-264.25"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1Doc__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1Doc__inherit__graph.svg
index e4011bcab9b..5b63320d1cd 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1Doc__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1Doc__inherit__graph.svg
@@ -4,8 +4,8 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::script::printer::Doc Pages: 1 -->
-<svg width="5471pt" height="577pt"
- viewBox="0.00 0.00 5471.00 577.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="5268pt" height="577pt"
+ viewBox="0.00 0.00 5268.00 577.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 573)">
 <title>tvm::script::printer::Doc</title>
 <!-- Node1 -->
@@ -120,18 +120,18 @@
 <g id="Node000018" class="node">
 <title>Node18</title>
 <g id="a_Node000018"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDoc.html" target="_top" xlink:title="Reference type of StmtDocNode.">
-<polygon fill="white" stroke="transparent" points="3940,-343 3755,-343 3755,-257 3940,-257 3940,-343"/>
-<text text-anchor="start" x="3802.5" y="-331" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="3823.5" y="-320" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDoc</text>
-<text text-anchor="start" x="3846" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="3759.5" y="-290" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="3772.5" y="-290" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="3772.5" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="3759.5" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="3772.5" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">StmtDoc()</text>
-<polygon fill="#666666" stroke="#666666" points="3755.5,-315 3755.5,-315 3940.5,-315 3940.5,-315 3755.5,-315"/>
-<polygon fill="#666666" stroke="#666666" points="3755.5,-300 3755.5,-300 3940.5,-300 3940.5,-300 3755.5,-300"/>
-<polygon fill="none" stroke="#666666" points="3755,-257 3755,-343 3940,-343 3940,-257 3755,-257"/>
+<polygon fill="white" stroke="transparent" points="3839,-343 3654,-343 3654,-257 3839,-257 3839,-343"/>
+<text text-anchor="start" x="3701.5" y="-331" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="3722.5" y="-320" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDoc</text>
+<text text-anchor="start" x="3745" y="-305" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="3658.5" y="-290" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="3671.5" y="-290" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="3671.5" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="3658.5" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="3671.5" y="-264" font-family="Helvetica,sans-Serif" font-size="10.00">StmtDoc()</text>
+<polygon fill="#666666" stroke="#666666" points="3654.5,-315 3654.5,-315 3839.5,-315 3839.5,-315 3654.5,-315"/>
+<polygon fill="#666666" stroke="#666666" points="3654.5,-300 3654.5,-300 3839.5,-300 3839.5,-300 3654.5,-300"/>
+<polygon fill="none" stroke="#666666" points="3654,-257 3654,-343 3839,-343 3839,-257 3654,-257"/>
 </a>
 </g>
 </g>
@@ -139,8 +139,8 @@
 <g id="edge17_Node000001_Node000018" class="edge">
 <title>Node1&#45;&gt;Node18</title>
 <g id="a_edge17_Node000001_Node000018"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M2630.22,-427.34C2879.9,-401.43 3515.67,-335.44 3754.73,-310.63"/>
-<polygon fill="none" stroke="#63b8ff" points="2629.64,-423.88 2620.06,-428.39 2630.37,-430.84 2629.64,-423.88"/>
+<path fill="none" stroke="#63b8ff" d="M2630.3,-426.45C2863.59,-400.23 3430.09,-336.56 3653.6,-311.44"/>
+<polygon fill="none" stroke="#63b8ff" points="2629.67,-423 2620.12,-427.59 2630.45,-429.95 2629.67,-423"/>
 </a>
 </g>
 </g>
@@ -550,8 +550,8 @@
 <g id="edge18_Node000018_Node000019" class="edge">
 <title>Node18&#45;&gt;Node19</title>
 <g id="a_edge18_Node000018_Node000019"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3744.48,-295.26C3469,-284.66 2729.45,-252.23 2629.5,-206 2601.11,-192.87 2576.29,-168.1 2558.35,-146.26"/>
-<polygon fill="none" stroke="#63b8ff" points="3744.75,-298.77 3754.87,-295.65 3745.01,-291.77 3744.75,-298.77"/>
+<path fill="none" stroke="#63b8ff" d="M3643.81,-299.43C3402.84,-299.02 2808.01,-289.32 2629.5,-206 2601.16,-192.77 2576.33,-168 2558.39,-146.18"/>
+<polygon fill="none" stroke="#63b8ff" points="3643.97,-302.93 3653.97,-299.44 3643.98,-295.93 3643.97,-302.93"/>
 </a>
 </g>
 </g>
@@ -578,8 +578,8 @@
 <g id="edge19_Node000018_Node000020" class="edge">
 <title>Node18&#45;&gt;Node20</title>
 <g id="a_edge19_Node000018_Node000020"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3744.53,-298.42C3519.68,-295.73 2992.18,-281.34 2832.5,-206 2804.21,-192.65 2779.39,-167.88 2761.43,-146.09"/>
-<polygon fill="none" stroke="#63b8ff" points="3744.64,-301.92 3754.68,-298.53 3744.72,-294.92 3744.64,-301.92"/>
+<path fill="none" stroke="#63b8ff" d="M3643.64,-297.2C3435.84,-292.17 2973.75,-273.51 2832.5,-206 2804.39,-192.57 2779.66,-167.93 2761.7,-146.24"/>
+<polygon fill="none" stroke="#63b8ff" points="3643.87,-300.71 3653.95,-297.44 3644.03,-293.71 3643.87,-300.71"/>
 </a>
 </g>
 </g>
@@ -606,8 +606,8 @@
 <g id="edge20_Node000018_Node000021" class="edge">
 <title>Node18&#45;&gt;Node21</title>
 <g id="a_edge20_Node000018_Node000021"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3744.75,-295.6C3555.33,-287.97 3159.24,-265.26 3036.5,-206 3008.31,-192.39 2983.33,-167.75 2965.15,-146.1"/>
-<polygon fill="none" stroke="#63b8ff" points="3744.86,-299.11 3754.99,-296.01 3745.14,-292.11 3744.86,-299.11"/>
+<path fill="none" stroke="#63b8ff" d="M3643.7,-293.65C3473.37,-283.46 3141.05,-257.52 3036.5,-206 3008.53,-192.22 2983.64,-167.72 2965.45,-146.18"/>
+<polygon fill="none" stroke="#63b8ff" points="3643.49,-297.15 3653.68,-294.25 3643.9,-290.16 3643.49,-297.15"/>
 </a>
 </g>
 </g>
@@ -634,8 +634,8 @@
 <g id="edge21_Node000018_Node000022" class="edge">
 <title>Node18&#45;&gt;Node22</title>
 <g id="a_edge21_Node000018_Node000022"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3744.85,-291.07C3595.31,-278.21 3325.94,-249.75 3239.5,-206 3211.79,-191.98 3187,-167.61 3168.79,-146.2"/>
-<polygon fill="none" stroke="#63b8ff" points="3744.71,-294.57 3754.97,-291.93 3745.3,-287.59 3744.71,-294.57"/>
+<path fill="none" stroke="#63b8ff" d="M3643.59,-297.85C3536.84,-292.73 3367.88,-273.39 3239.5,-206 3212.12,-191.62 3187.41,-167.38 3169.18,-146.14"/>
+<polygon fill="none" stroke="#63b8ff" points="3643.58,-301.35 3653.73,-298.3 3643.89,-294.36 3643.58,-301.35"/>
 </a>
 </g>
 </g>
@@ -662,8 +662,8 @@
 <g id="edge22_Node000018_Node000023" class="edge">
 <title>Node18&#45;&gt;Node23</title>
 <g id="a_edge22_Node000018_Node000023"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3744.67,-291.24C3659.26,-281.2 3536.91,-258.26 3442.5,-206 3415.66,-191.14 3391.15,-167.15 3372.89,-146.16"/>
-<polygon fill="none" stroke="#63b8ff" points="3744.3,-294.72 3754.63,-292.37 3745.09,-287.77 3744.3,-294.72"/>
+<path fill="none" stroke="#63b8ff" d="M3643.78,-280.68C3582.29,-266.62 3504.34,-243.16 3442.5,-206 3416.53,-190.39 3392.32,-166.75 3374.01,-146.16"/>
+<polygon fill="none" stroke="#63b8ff" points="3643.36,-284.18 3653.89,-282.95 3644.89,-277.35 3643.36,-284.18"/>
 </a>
 </g>
 </g>
@@ -690,8 +690,8 @@
 <g id="edge23_Node000018_Node000024" class="edge">
 <title>Node18&#45;&gt;Node24</title>
 <g id="a_edge23_Node000018_Node000024"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3745.5,-260.45C3712.25,-245.72 3676.05,-227.28 3645.5,-206 3621.25,-189.11 3597.69,-166.12 3579.33,-146.24"/>
-<polygon fill="none" stroke="#63b8ff" points="3744.23,-263.71 3754.8,-264.5 3747.03,-257.3 3744.23,-263.71"/>
+<path fill="none" stroke="#63b8ff" d="M3692.47,-250.01C3677.17,-235.93 3660.58,-220.47 3645.5,-206 3625.26,-186.58 3603.21,-164.63 3584.8,-146.08"/>
+<polygon fill="none" stroke="#63b8ff" points="3690.14,-252.62 3699.87,-256.8 3694.87,-247.46 3690.14,-252.62"/>
 </a>
 </g>
 </g>
@@ -718,8 +718,8 @@
 <g id="edge24_Node000018_Node000025" class="edge">
 <title>Node18&#45;&gt;Node25</title>
 <g id="a_edge24_Node000018_Node000025"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3820.87,-247.59C3804.5,-215.98 3783.78,-175.98 3768.37,-146.23"/>
-<polygon fill="none" stroke="#63b8ff" points="3817.88,-249.42 3825.58,-256.69 3824.09,-246.2 3817.88,-249.42"/>
+<path fill="none" stroke="#63b8ff" d="M3746.5,-246.37C3746.5,-214.95 3746.5,-175.6 3746.5,-146.23"/>
+<polygon fill="none" stroke="#63b8ff" points="3743,-246.69 3746.5,-256.69 3750,-246.69 3743,-246.69"/>
 </a>
 </g>
 </g>
@@ -746,8 +746,8 @@
 <g id="edge25_Node000018_Node000026" class="edge">
 <title>Node18&#45;&gt;Node26</title>
 <g id="a_edge25_Node000018_Node000026"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3874.39,-247.59C3890.92,-215.98 3911.85,-175.98 3927.41,-146.23"/>
-<polygon fill="none" stroke="#63b8ff" points="3871.17,-246.2 3869.63,-256.69 3877.37,-249.45 3871.17,-246.2"/>
+<path fill="none" stroke="#63b8ff" d="M3801.15,-250.11C3816.61,-236.03 3833.34,-220.54 3848.5,-206 3868.64,-186.67 3890.49,-164.74 3908.7,-146.17"/>
+<polygon fill="none" stroke="#63b8ff" points="3798.73,-247.59 3793.68,-256.9 3803.43,-252.77 3798.73,-247.59"/>
 </a>
 </g>
 </g>
@@ -774,8 +774,8 @@
 <g id="edge26_Node000018_Node000027" class="edge">
 <title>Node18&#45;&gt;Node27</title>
 <g id="a_edge26_Node000018_Node000027"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3949.63,-261.09C3983.48,-246.32 4020.42,-227.68 4051.5,-206 4075.72,-189.11 4099.16,-166 4117.35,-146.05"/>
-<polygon fill="none" stroke="#63b8ff" points="3947.98,-257.99 3940.17,-265.16 3950.74,-264.42 3947.98,-257.99"/>
+<path fill="none" stroke="#63b8ff" d="M3848.91,-281.02C3910.73,-267.04 3989.31,-243.55 4051.5,-206 4077.31,-190.42 4101.29,-166.78 4119.4,-146.18"/>
+<polygon fill="none" stroke="#63b8ff" points="3848.14,-277.6 3839.14,-283.18 3849.66,-284.44 3848.14,-277.6"/>
 </a>
 </g>
 </g>
@@ -802,8 +802,8 @@
 <g id="edge27_Node000018_Node000028" class="edge">
 <title>Node18&#45;&gt;Node28</title>
 <g id="a_edge27_Node000018_Node000028"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3950.08,-291.56C4035.98,-281.7 4159.44,-258.86 4254.5,-206 4281.18,-191.16 4305.45,-167.17 4323.51,-146.18"/>
-<polygon fill="none" stroke="#63b8ff" points="3949.61,-288.09 3940.06,-292.67 3950.38,-295.05 3949.61,-288.09"/>
+<path fill="none" stroke="#63b8ff" d="M3849.2,-298.04C3956.18,-293.1 4125.84,-273.92 4254.5,-206 4281.72,-191.63 4306.18,-167.39 4324.21,-146.14"/>
+<polygon fill="none" stroke="#63b8ff" points="3848.88,-294.55 3839.04,-298.48 3849.18,-301.55 3848.88,-294.55"/>
 </a>
 </g>
 </g>
@@ -830,21 +830,21 @@
 <g id="edge28_Node000018_Node000029" class="edge">
 <title>Node18&#45;&gt;Node29</title>
 <g id="a_edge28_Node000018_Node000029"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3950.21,-291.18C4100.22,-278.44 4370.82,-250.12 4457.5,-206 4485.04,-191.98 4509.6,-167.61 4527.6,-146.21"/>
-<polygon fill="none" stroke="#63b8ff" points="3949.73,-287.7 3940.06,-292.03 3950.32,-294.68 3949.73,-287.7"/>
+<path fill="none" stroke="#63b8ff" d="M3849.14,-293.74C4019.64,-283.67 4352.86,-257.87 4457.5,-206 4485.3,-192.22 4509.95,-167.72 4527.93,-146.18"/>
+<polygon fill="none" stroke="#63b8ff" points="3848.93,-290.25 3839.15,-294.33 3849.34,-297.24 3848.93,-290.25"/>
 </a>
 </g>
 </g>
 <!-- Node30 -->
 <g id="Node000030" class="node">
 <title>Node30</title>
-<g id="a_Node000030"><a xlink:href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html" target="_top" xlink:title="Reference type of OpCallDocNode.">
+<g id="a_Node000030"><a xlink:href="classtvm_1_1script_1_1printer_1_1ReturnDoc.html" target="_top" xlink:title="Reference type of ReturnDocNode.">
 <polygon fill="white" stroke="transparent" points="4854,-146 4669,-146 4669,-60 4854,-60 4854,-146"/>
 <text text-anchor="start" x="4716.5" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="4733" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">::OpCallDoc</text>
+<text text-anchor="start" x="4733" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">::ReturnDoc</text>
 <text text-anchor="start" x="4760" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 <text text-anchor="start" x="4673.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4686.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">OpCallDoc()</text>
+<text text-anchor="start" x="4686.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">ReturnDoc()</text>
 <text text-anchor="start" x="4673.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="4686.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
 <text text-anchor="start" x="4686.5" y="-67" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
@@ -858,27 +858,29 @@
 <g id="edge29_Node000018_Node000030" class="edge">
 <title>Node18&#45;&gt;Node30</title>
 <g id="a_edge29_Node000018_Node000030"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3950.53,-295.68C4140.46,-288.18 4537.6,-265.69 4660.5,-206 4688.52,-192.39 4713.26,-167.75 4731.24,-146.1"/>
-<polygon fill="none" stroke="#63b8ff" points="3950.12,-292.19 3940.26,-296.08 3950.39,-299.19 3950.12,-292.19"/>
+<path fill="none" stroke="#63b8ff" d="M3849.36,-297.2C4057.16,-292.17 4519.25,-273.51 4660.5,-206 4688.61,-192.57 4713.34,-167.93 4731.3,-146.24"/>
+<polygon fill="none" stroke="#63b8ff" points="3848.97,-293.71 3839.05,-297.44 3849.13,-300.71 3848.97,-293.71"/>
 </a>
 </g>
 </g>
 <!-- Node31 -->
 <g id="Node000031" class="node">
 <title>Node31</title>
-<g id="a_Node000031"><a xlink:href="classtvm_1_1script_1_1printer_1_1ReturnDoc.html" target="_top" xlink:title="Reference type of ReturnDocNode.">
-<polygon fill="white" stroke="transparent" points="5057,-146 4872,-146 4872,-60 5057,-60 5057,-146"/>
-<text text-anchor="start" x="4919.5" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="4936" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">::ReturnDoc</text>
-<text text-anchor="start" x="4963" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4876.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">ReturnDoc()</text>
-<text text-anchor="start" x="4876.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="4889.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="4889.5" y="-67" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="4872.5,-118 4872.5,-118 5057.5,-118 5057.5,-118 4872.5,-118"/>
-<polygon fill="#666666" stroke="#666666" points="4872.5,-103 4872.5,-103 5057.5,-103 5057.5,-103 4872.5,-103"/>
-<polygon fill="none" stroke="#666666" points="4872,-60 4872,-146 5057,-146 5057,-60 4872,-60"/>
+<g id="a_Node000031"><a xlink:href="classtvm_1_1script_1_1printer_1_1ScopeDoc.html" target="_top" xlink:title="Reference type of ScopeDocNode.">
+<polygon fill="white" stroke="transparent" points="5057,-153.5 4872,-153.5 4872,-52.5 5057,-52.5 5057,-153.5"/>
+<text text-anchor="start" x="4919.5" y="-141" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="4937.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">::ScopeDoc</text>
+<text text-anchor="start" x="4963" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="4876.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4889.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">ScopeDoc()</text>
+<text text-anchor="start" x="4876.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4889.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">ScopeDoc()</text>
+<text text-anchor="start" x="4876.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="4889.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="4889.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="4872.5,-125 4872.5,-125 5057.5,-125 5057.5,-125 4872.5,-125"/>
+<polygon fill="#666666" stroke="#666666" points="4872.5,-110 4872.5,-110 5057.5,-110 5057.5,-110 4872.5,-110"/>
+<polygon fill="none" stroke="#666666" points="4872,-52.5 4872,-153.5 5057,-153.5 5057,-52.5 4872,-52.5"/>
 </a>
 </g>
 </g>
@@ -886,29 +888,27 @@
 <g id="edge30_Node000018_Node000031" class="edge">
 <title>Node18&#45;&gt;Node31</title>
 <g id="a_edge30_Node000018_Node000031"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3950.16,-298.43C4174.99,-295.78 4703.56,-281.45 4863.5,-206 4891.79,-192.66 4916.61,-167.88 4934.57,-146.09"/>
-<polygon fill="none" stroke="#63b8ff" points="3949.97,-294.93 3940.01,-298.55 3950.05,-301.93 3949.97,-294.93"/>
+<path fill="none" stroke="#63b8ff" d="M3849.19,-299.43C4090.16,-299.02 4684.99,-289.32 4863.5,-206 4888.68,-194.25 4911.08,-173.38 4928.36,-153.57"/>
+<polygon fill="none" stroke="#63b8ff" points="3849.02,-295.93 3839.03,-299.44 3849.03,-302.93 3849.02,-295.93"/>
 </a>
 </g>
 </g>
 <!-- Node32 -->
 <g id="Node000032" class="node">
 <title>Node32</title>
-<g id="a_Node000032"><a xlink:href="classtvm_1_1script_1_1printer_1_1ScopeDoc.html" target="_top" xlink:title="Reference type of ScopeDocNode.">
-<polygon fill="white" stroke="transparent" points="5260,-153.5 5075,-153.5 5075,-52.5 5260,-52.5 5260,-153.5"/>
-<text text-anchor="start" x="5122.5" y="-141" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="5140.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">::ScopeDoc</text>
-<text text-anchor="start" x="5166" y="-115" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5079.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5092.5" y="-100" font-family="Helvetica,sans-Serif" font-size="10.00">ScopeDoc()</text>
-<text text-anchor="start" x="5079.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5092.5" y="-85" font-family="Helvetica,sans-Serif" font-size="10.00">ScopeDoc()</text>
-<text text-anchor="start" x="5079.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5092.5" y="-70" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5092.5" y="-59" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="5075.5,-125 5075.5,-125 5260.5,-125 5260.5,-125 5075.5,-125"/>
-<polygon fill="#666666" stroke="#666666" points="5075.5,-110 5075.5,-110 5260.5,-110 5260.5,-110 5075.5,-110"/>
-<polygon fill="none" stroke="#666666" points="5075,-52.5 5075,-153.5 5260,-153.5 5260,-52.5 5075,-52.5"/>
+<g id="a_Node000032"><a xlink:href="classtvm_1_1script_1_1printer_1_1WhileDoc.html" target="_top" xlink:title="Reference type of WhileDocNode.">
+<polygon fill="white" stroke="transparent" points="5260,-146 5075,-146 5075,-60 5260,-60 5260,-146"/>
+<text text-anchor="start" x="5122.5" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="5141.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">::WhileDoc</text>
+<text text-anchor="start" x="5166" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="5079.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5092.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">WhileDoc()</text>
+<text text-anchor="start" x="5079.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="5092.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="5092.5" y="-67" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="5075.5,-118 5075.5,-118 5260.5,-118 5260.5,-118 5075.5,-118"/>
+<polygon fill="#666666" stroke="#666666" points="5075.5,-103 5075.5,-103 5260.5,-103 5260.5,-103 5075.5,-103"/>
+<polygon fill="none" stroke="#666666" points="5075,-60 5075,-146 5260,-146 5260,-60 5075,-60"/>
 </a>
 </g>
 </g>
@@ -916,36 +916,8 @@
 <g id="edge31_Node000018_Node000032" class="edge">
 <title>Node18&#45;&gt;Node32</title>
 <g id="a_edge31_Node000018_Node000032"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3950.2,-295.27C4225.58,-284.71 4966.42,-252.29 5066.5,-206 5091.72,-194.33 5114.13,-173.48 5131.39,-153.66"/>
-<polygon fill="none" stroke="#63b8ff" points="3950.06,-291.78 3940.2,-295.66 3950.33,-298.77 3950.06,-291.78"/>
-</a>
-</g>
-</g>
-<!-- Node33 -->
-<g id="Node000033" class="node">
-<title>Node33</title>
-<g id="a_Node000033"><a xlink:href="classtvm_1_1script_1_1printer_1_1WhileDoc.html" target="_top" xlink:title="Reference type of WhileDocNode.">
-<polygon fill="white" stroke="transparent" points="5463,-146 5278,-146 5278,-60 5463,-60 5463,-146"/>
-<text text-anchor="start" x="5325.5" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="5344.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">::WhileDoc</text>
-<text text-anchor="start" x="5369" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="5282.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">WhileDoc()</text>
-<text text-anchor="start" x="5282.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="5295.5" y="-78" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="5295.5" y="-67" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="5278.5,-118 5278.5,-118 5463.5,-118 5463.5,-118 5278.5,-118"/>
-<polygon fill="#666666" stroke="#666666" points="5278.5,-103 5278.5,-103 5463.5,-103 5463.5,-103 5278.5,-103"/>
-<polygon fill="none" stroke="#666666" points="5278,-60 5278,-146 5463,-146 5463,-60 5278,-60"/>
-</a>
-</g>
-</g>
-<!-- Node18&#45;&gt;Node33 -->
-<g id="edge32_Node000018_Node000033" class="edge">
-<title>Node18&#45;&gt;Node33</title>
-<g id="a_edge32_Node000018_Node000033"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M3950.25,-296.48C4256.7,-288.37 5150.42,-260.3 5269.5,-206 5298.07,-192.97 5322.98,-168.06 5340.92,-146.12"/>
-<polygon fill="none" stroke="#63b8ff" points="3949.95,-292.98 3940.04,-296.75 3950.13,-299.98 3949.95,-292.98"/>
+<path fill="none" stroke="#63b8ff" d="M3849.41,-295.91C4140.71,-286.59 4957.01,-256.26 5066.5,-206 5095.04,-192.9 5119.95,-167.99 5137.89,-146.06"/>
+<polygon fill="none" stroke="#63b8ff" points="3849.16,-292.42 3839.27,-296.24 3849.38,-299.42 3849.16,-292.42"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc-members.html
deleted file mode 100644
index d568e585583..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc-members.html
+++ /dev/null
@@ -1,95 +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_1script.html">script</a></li><li class="navelem"><a class="el" href="namespacetvm_1_1script_1_1printer.html">printer</a></li><li class="navelem"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">OpCallDoc</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle"><div class="title">tvm::script::printer::OpCallDoc Member List</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">tvm::script::printer::OpCallDoc</a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html#accbc6699956d0166032a97e80ad3880d">Doc</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">tvm::script::printer::Doc</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html#ab8976b239f8ee9da30e3bbd5eb569409">Doc</a>(ffi::ObjectPtr&lt; DocNode &gt; data)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">tvm::script::printer::Doc</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#ab5b4f91b550e6e9b43f8a5659604da42">OpCallDoc</a>(ExprDoc callee, ffi::Array&lt; Doc &gt; args, ffi::Optional&lt; DictDoc &gt; workspace, ffi::Optional&lt; DictDoc &gt; config, ffi::Optional&lt; ExprDoc &gt; dispatch=std::nullopt)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">tvm::script::printer::OpCallDoc</a></td><td class="entry"><span cl [...]
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html#adec8d59e41d8a4093fb310089bf2c3ba">StmtDoc</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html">tvm::script::printer::StmtDoc</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#a6ebc9be8e178115a68d47075669f32a7">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(OpCallDoc, StmtDoc, OpCallDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">tvm::script::printer::OpCallDoc</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html#a9e9caa28a84fc631d8b8ec90dfa3a2b9">tvm::script::printer::StmtDoc::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(StmtDoc, Doc, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html">tvm::script::printer::StmtDoc</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html#a7e2ec6a42fa85c58589d3d06722460e8">tvm::script::printer::Doc::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(Doc, ffi::ObjectRef, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">tvm::script::printer::Doc</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_1script_1_1printer_1_1OpCallDoc.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc.html
deleted file mode 100644
index 65050c3caf0..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc.html
+++ /dev/null
@@ -1,237 +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::script::printer::OpCallDoc 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_1script.html">script</a></li><li class="navelem"><a class="el" href="namespacetvm_1_1script_1_1printer.html">printer</a></li><li class="navelem"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">OpCallDoc</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_1script_1_1printer_1_1OpCallDoc-members.html">List of all members</a>  </div>
-  <div class="headertitle"><div class="title">tvm::script::printer::OpCallDoc Class Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html" title="Doc that represents call to an TIRX operator.">OpCallDocNode</a>.  
- <a href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#details">More...</a></p>
-
-<p><code>#include &lt;<a class="el" href="doc_8h_source.html">doc.h</a>&gt;</code></p>
-<div class="dynheader">
-Inheritance diagram for tvm::script::printer::OpCallDoc:</div>
-<div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1OpCallDoc__inherit__graph.svg" width="258" height="570"><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::printer::OpCallDoc:</div>
-<div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1OpCallDoc__coll__graph.svg" width="258" height="570"><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:ab5b4f91b550e6e9b43f8a5659604da42" id="r_ab5b4f91b550e6e9b43f8a5659604da42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#ab5b4f91b550e6e9b43f8a5659604da42">OpCallDoc</a> (<a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> callee, ffi::Array&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">Doc</a> &gt [...]
-<tr class="memdesc:ab5b4f91b550e6e9b43f8a5659604da42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor of <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html" title="Reference type of OpCallDocNode.">OpCallDoc</a>.  <br /></td></tr>
-<tr class="separator:ab5b4f91b550e6e9b43f8a5659604da42"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6ebc9be8e178115a68d47075669f32a7" id="r_a6ebc9be8e178115a68d47075669f32a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#a6ebc9be8e178115a68d47075669f32a7">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">OpCallDoc</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1Stm [...]
-<tr class="separator:a6ebc9be8e178115a68d47075669f32a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_methods_classtvm_1_1script_1_1printer_1_1StmtDoc"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1script_1_1printer_1_1StmtDoc')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html">tvm::script::printer::StmtDoc</a></td></tr>
-<tr class="memitem:a9e9caa28a84fc631d8b8ec90dfa3a2b9 inherit pub_methods_classtvm_1_1script_1_1printer_1_1StmtDoc" id="r_a9e9caa28a84fc631d8b8ec90dfa3a2b9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html#a9e9caa28a84fc631d8b8ec90dfa3a2b9">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html">StmtDoc</a>, < [...]
-<tr class="separator:a9e9caa28a84fc631d8b8ec90dfa3a2b9 inherit pub_methods_classtvm_1_1script_1_1printer_1_1StmtDoc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_methods_classtvm_1_1script_1_1printer_1_1Doc"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1script_1_1printer_1_1Doc')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">tvm::script::printer::Doc</a></td></tr>
-<tr class="memitem:a7e2ec6a42fa85c58589d3d06722460e8 inherit pub_methods_classtvm_1_1script_1_1printer_1_1Doc" id="r_a7e2ec6a42fa85c58589d3d06722460e8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html#a7e2ec6a42fa85c58589d3d06722460e8">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a> (<a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">Doc</a>, ffi::ObjectRef, < [...]
-<tr class="separator:a7e2ec6a42fa85c58589d3d06722460e8 inherit pub_methods_classtvm_1_1script_1_1printer_1_1Doc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_methods_classtvm_1_1script_1_1printer_1_1StmtDoc"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classtvm_1_1script_1_1printer_1_1StmtDoc')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html">tvm::script::printer::StmtDoc</a></td></tr>
-<tr class="memitem:adec8d59e41d8a4093fb310089bf2c3ba inherit pro_methods_classtvm_1_1script_1_1printer_1_1StmtDoc" id="r_adec8d59e41d8a4093fb310089bf2c3ba"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html#adec8d59e41d8a4093fb310089bf2c3ba">StmtDoc</a> ()=default</td></tr>
-<tr class="separator:adec8d59e41d8a4093fb310089bf2c3ba inherit pro_methods_classtvm_1_1script_1_1printer_1_1StmtDoc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pro_methods_classtvm_1_1script_1_1printer_1_1Doc"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classtvm_1_1script_1_1printer_1_1Doc')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">tvm::script::printer::Doc</a></td></tr>
-<tr class="memitem:accbc6699956d0166032a97e80ad3880d inherit pro_methods_classtvm_1_1script_1_1printer_1_1Doc" id="r_accbc6699956d0166032a97e80ad3880d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html#accbc6699956d0166032a97e80ad3880d">Doc</a> ()=default</td></tr>
-<tr class="separator:accbc6699956d0166032a97e80ad3880d inherit pro_methods_classtvm_1_1script_1_1printer_1_1Doc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab8976b239f8ee9da30e3bbd5eb569409 inherit pro_methods_classtvm_1_1script_1_1printer_1_1Doc" id="r_ab8976b239f8ee9da30e3bbd5eb569409"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html#ab8976b239f8ee9da30e3bbd5eb569409">Doc</a> (ffi::ObjectPtr&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">DocNode</a> &gt; data)</td></tr>
-<tr class="separator:ab8976b239f8ee9da30e3bbd5eb569409 inherit pro_methods_classtvm_1_1script_1_1printer_1_1Doc"><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>Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html" title="Doc that represents call to an TIRX operator.">OpCallDocNode</a>. </p>
-<dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html" title="Doc that represents call to an TIRX operator.">OpCallDocNode</a> </dd></dl>
-</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="ab5b4f91b550e6e9b43f8a5659604da42" name="ab5b4f91b550e6e9b43f8a5659604da42"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab5b4f91b550e6e9b43f8a5659604da42">&#9670;&#160;</a></span>OpCallDoc()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::script::printer::OpCallDoc::OpCallDoc </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a>&#160;</td>
-          <td class="paramname"><em>callee</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Array&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">Doc</a> &gt;&#160;</td>
-          <td class="paramname"><em>args</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Optional&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1DictDoc.html">DictDoc</a> &gt;&#160;</td>
-          <td class="paramname"><em>workspace</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Optional&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1DictDoc.html">DictDoc</a> &gt;&#160;</td>
-          <td class="paramname"><em>config</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">ffi::Optional&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> &gt;&#160;</td>
-          <td class="paramname"><em>dispatch</em> = <code>std::nullopt</code>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Constructor of <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html" title="Reference type of OpCallDocNode.">OpCallDoc</a>. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">callee</td><td>The callee of this function call. </td></tr>
-    <tr><td class="paramname">args</td><td>The positional arguments. </td></tr>
-    <tr><td class="paramname">workspace</td><td>The workspace of this op call. </td></tr>
-    <tr><td class="paramname">config</td><td>The config of this op call. </td></tr>
-    <tr><td class="paramname">dispatch</td><td>The optional dispatch variant name of this op call. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a id="a6ebc9be8e178115a68d47075669f32a7" name="a6ebc9be8e178115a68d47075669f32a7"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a6ebc9be8e178115a68d47075669f32a7">&#9670;&#160;</a></span>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">tvm::script::printer::OpCallDoc::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">OpCallDoc</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html">StmtDoc</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">OpCallDocNode</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>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/tvm/script/printer/<a class="el" href="doc_8h_source.html">doc.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_1script_1_1printer_1_1OpCallDocNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode-members.html
deleted file mode 100644
index 18a189dd15d..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode-members.html
+++ /dev/null
@@ -1,101 +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_1script.html">script</a></li><li class="navelem"><a class="el" href="namespacetvm_1_1script_1_1printer.html">printer</a></li><li class="navelem"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">OpCallDocNode</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle"><div class="title">tvm::script::printer::OpCallDocNode Member List</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a1a0b6c779c2f5f2a41fdf39b63ddff08">_type_mutable</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</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_1printer_1_1OpCallDocNode.html#aa251921e11727010772291877807750a">args</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#adbcf4a3aabbe1d82f73fc2d5f6154f6b">callee</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a99434a755a816459b365afd7caf52b78">comment</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ab587d4e63b73fc2411792cba3517b5ae">config</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a9463aa1e349fdaa77ee00318eda01047">dispatch</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa711d33587526cd7b6e3e8c9c005653b">RegisterReflection</a>()</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</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_1printer_1_1DocNode.html#ac0eaa43901fa29108adaa7f51f09565a">source_paths</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"><span class="mlabel">mutable</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#af0b37df58f9538165af7bd13f03ec7aa">TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.printer.StmtDoc&quot;, StmtDocNode, DocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a63c0233ab2cc0b4e2d2dce9df5b5539f">tvm::script::printer::DocNode::TVM_FFI_DECLARE_OBJECT_INFO</a>(&quot;script.printer.Doc&quot;, DocNode, ffi::Object)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a37c9f827e2e422759bce6978c7b11fc3">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(&quot;script.printer.OpCallDoc&quot;, OpCallDocNode, StmtDocNode)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a></td><td class="entry"></td></tr>
-  <tr class="odd"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ac5eaf7f682b39836acebf055f7c843ed">workspace</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</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>
-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_1script_1_1printer_1_1OpCallDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode.html
deleted file mode 100644
index 313b66628b3..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode.html
+++ /dev/null
@@ -1,309 +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::script::printer::OpCallDocNode 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_1script.html">script</a></li><li class="navelem"><a class="el" href="namespacetvm_1_1script_1_1printer.html">printer</a></li><li class="navelem"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">OpCallDocNode</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="classtvm_1_1script_1_1printer_1_1OpCallDocNode-members.html">List of all members</a>  </div>
-  <div class="headertitle"><div class="title">tvm::script::printer::OpCallDocNode Class Reference</div></div>
-</div><!--header-->
-<div class="contents">
-
-<p><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents call to an TIRX operator.  
- <a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#details">More...</a></p>
-
-<p><code>#include &lt;<a class="el" href="doc_8h_source.html">doc.h</a>&gt;</code></p>
-<div class="dynheader">
-Inheritance diagram for tvm::script::printer::OpCallDocNode:</div>
-<div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1OpCallDocNode__inherit__graph.svg" width="219" height="684"><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::printer::OpCallDocNode:</div>
-<div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1OpCallDocNode__coll__graph.svg" width="491" height="722"><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:a37c9f827e2e422759bce6978c7b11fc3" id="r_a37c9f827e2e422759bce6978c7b11fc3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a37c9f827e2e422759bce6978c7b11fc3">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a> (&quot;script.printer.OpCallDoc&quot;, <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">OpCallDocNode</a>, <a class="el" href [...]
-<tr class="separator:a37c9f827e2e422759bce6978c7b11fc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_methods_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1script_1_1printer_1_1StmtDocNode')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td></tr>
-<tr class="memitem:af0b37df58f9538165af7bd13f03ec7aa inherit pub_methods_classtvm_1_1script_1_1printer_1_1StmtDocNode" id="r_af0b37df58f9538165af7bd13f03ec7aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#af0b37df58f9538165af7bd13f03ec7aa">TVM_FFI_DECLARE_OBJECT_INFO</a> (&quot;script.printer.StmtDoc&quot;, <a class="el" href="classtvm_1_1script_1_1printer_1_1St [...]
-<tr class="separator:af0b37df58f9538165af7bd13f03ec7aa inherit pub_methods_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_methods_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
-<tr class="memitem:a63c0233ab2cc0b4e2d2dce9df5b5539f inherit pub_methods_classtvm_1_1script_1_1printer_1_1DocNode" id="r_a63c0233ab2cc0b4e2d2dce9df5b5539f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a63c0233ab2cc0b4e2d2dce9df5b5539f">TVM_FFI_DECLARE_OBJECT_INFO</a> (&quot;script.printer.Doc&quot;, <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html"> [...]
-<tr class="separator:a63c0233ab2cc0b4e2d2dce9df5b5539f inherit pub_methods_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6202cee16104155937f3e64c703f6885 inherit pub_methods_classtvm_1_1script_1_1printer_1_1DocNode" id="r_a6202cee16104155937f3e64c703f6885"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a6202cee16104155937f3e64c703f6885">~DocNode</a> ()=default</td></tr>
-<tr class="separator:a6202cee16104155937f3e64c703f6885 inherit pub_methods_classtvm_1_1script_1_1printer_1_1DocNode"><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:aa711d33587526cd7b6e3e8c9c005653b" id="r_aa711d33587526cd7b6e3e8c9c005653b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa711d33587526cd7b6e3e8c9c005653b">RegisterReflection</a> ()</td></tr>
-<tr class="separator:aa711d33587526cd7b6e3e8c9c005653b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_static_methods_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classtvm_1_1script_1_1printer_1_1StmtDocNode')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td></tr>
-<tr class="memitem:aefcf9256e4c4157c7680a95d00e997b9 inherit pub_static_methods_classtvm_1_1script_1_1printer_1_1StmtDocNode" id="r_aefcf9256e4c4157c7680a95d00e997b9"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#aefcf9256e4c4157c7680a95d00e997b9">RegisterReflection</a> ()</td></tr>
-<tr class="separator:aefcf9256e4c4157c7680a95d00e997b9 inherit pub_static_methods_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_static_methods_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
-<tr class="memitem:aa1b21cca3298ed25ceef541db2f39f86 inherit pub_static_methods_classtvm_1_1script_1_1printer_1_1DocNode" id="r_aa1b21cca3298ed25ceef541db2f39f86"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#aa1b21cca3298ed25ceef541db2f39f86">RegisterReflection</a> ()</td></tr>
-<tr class="separator:aa1b21cca3298ed25ceef541db2f39f86 inherit pub_static_methods_classtvm_1_1script_1_1printer_1_1DocNode"><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:adbcf4a3aabbe1d82f73fc2d5f6154f6b" id="r_adbcf4a3aabbe1d82f73fc2d5f6154f6b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#adbcf4a3aabbe1d82f73fc2d5f6154f6b">callee</a> {ffi::UnsafeInit()}</td></tr>
-<tr class="memdesc:adbcf4a3aabbe1d82f73fc2d5f6154f6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The callee of this function call.  <br /></td></tr>
-<tr class="separator:adbcf4a3aabbe1d82f73fc2d5f6154f6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa251921e11727010772291877807750a" id="r_aa251921e11727010772291877807750a"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">Doc</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa251921e11727010772291877807750a">args</a></td></tr>
-<tr class="memdesc:aa251921e11727010772291877807750a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The positional arguments.  <br /></td></tr>
-<tr class="separator:aa251921e11727010772291877807750a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac5eaf7f682b39836acebf055f7c843ed" id="r_ac5eaf7f682b39836acebf055f7c843ed"><td class="memItemLeft" align="right" valign="top">ffi::Optional&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1DictDoc.html">DictDoc</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ac5eaf7f682b39836acebf055f7c843ed">workspace</a> {std::nullopt}</td></tr>
-<tr class="memdesc:ac5eaf7f682b39836acebf055f7c843ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">The workspace of this op call.  <br /></td></tr>
-<tr class="separator:ac5eaf7f682b39836acebf055f7c843ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab587d4e63b73fc2411792cba3517b5ae" id="r_ab587d4e63b73fc2411792cba3517b5ae"><td class="memItemLeft" align="right" valign="top">ffi::Optional&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1DictDoc.html">DictDoc</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ab587d4e63b73fc2411792cba3517b5ae">config</a> {std::nullopt}</td></tr>
-<tr class="memdesc:ab587d4e63b73fc2411792cba3517b5ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">The config of this op call.  <br /></td></tr>
-<tr class="separator:ab587d4e63b73fc2411792cba3517b5ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9463aa1e349fdaa77ee00318eda01047" id="r_a9463aa1e349fdaa77ee00318eda01047"><td class="memItemLeft" align="right" valign="top">ffi::Optional&lt; <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a9463aa1e349fdaa77ee00318eda01047">dispatch</a> {std::nullopt}</td></tr>
-<tr class="memdesc:a9463aa1e349fdaa77ee00318eda01047"><td class="mdescLeft">&#160;</td><td class="mdescRight">The optional dispatch variant of this op call.  <br /></td></tr>
-<tr class="separator:a9463aa1e349fdaa77ee00318eda01047"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">tvm::script::printer::StmtDocNode</a></td></tr>
-<tr class="memitem:a99434a755a816459b365afd7caf52b78 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode" id="r_a99434a755a816459b365afd7caf52b78"><td class="memItemLeft" align="right" valign="top">ffi::Optional&lt; ffi::String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a99434a755a816459b365afd7caf52b78">comment</a> {std::nullopt}</td></tr>
-<tr class="memdesc:a99434a755a816459b365afd7caf52b78 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The comment of this doc.  <br /></td></tr>
-<tr class="separator:a99434a755a816459b365afd7caf52b78 inherit pub_attribs_classtvm_1_1script_1_1printer_1_1StmtDocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="inherit_header pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
-<tr class="memitem:ac0eaa43901fa29108adaa7f51f09565a inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode" id="r_ac0eaa43901fa29108adaa7f51f09565a"><td class="memItemLeft" align="right" valign="top">ffi::Array&lt; <a class="el" href="namespacetvm_1_1script_1_1printer.html#aecb78d3edd725763c5f4dca6c3b1822c">AccessPath</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#ac0eaa43901fa29108adaa7f51f09565a">sour [...]
-<tr class="memdesc:ac0eaa43901fa29108adaa7f51f09565a inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of object paths of the source IR node.  <br /></td></tr>
-<tr class="separator:ac0eaa43901fa29108adaa7f51f09565a inherit pub_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pub_static_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classtvm_1_1script_1_1printer_1_1DocNode')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html">tvm::script::printer::DocNode</a></td></tr>
-<tr class="memitem:a1a0b6c779c2f5f2a41fdf39b63ddff08 inherit pub_static_attribs_classtvm_1_1script_1_1printer_1_1DocNode" id="r_a1a0b6c779c2f5f2a41fdf39b63ddff08"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1printer_1_1DocNode.html#a1a0b6c779c2f5f2a41fdf39b63ddff08">_type_mutable</a> = true</td></tr>
-<tr class="separator:a1a0b6c779c2f5f2a41fdf39b63ddff08 inherit pub_static_attribs_classtvm_1_1script_1_1printer_1_1DocNode"><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_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents call to an TIRX operator. </p>
-<dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html" title="Reference type of OpCallDocNode.">OpCallDoc</a> </dd></dl>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a id="aa711d33587526cd7b6e3e8c9c005653b" name="aa711d33587526cd7b6e3e8c9c005653b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa711d33587526cd7b6e3e8c9c005653b">&#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">static void tvm::script::printer::OpCallDocNode::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="a37c9f827e2e422759bce6978c7b11fc3" name="a37c9f827e2e422759bce6978c7b11fc3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a37c9f827e2e422759bce6978c7b11fc3">&#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::script::printer::OpCallDocNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL </td>
-          <td>(</td>
-          <td class="paramtype">&quot;script.printer.OpCallDoc&quot;&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">OpCallDocNode</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">StmtDocNode</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>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a id="aa251921e11727010772291877807750a" name="aa251921e11727010772291877807750a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa251921e11727010772291877807750a">&#9670;&#160;</a></span>args</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Array&lt;<a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html">Doc</a>&gt; tvm::script::printer::OpCallDocNode::args</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The positional arguments. </p>
-
-</div>
-</div>
-<a id="adbcf4a3aabbe1d82f73fc2d5f6154f6b" name="adbcf4a3aabbe1d82f73fc2d5f6154f6b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#adbcf4a3aabbe1d82f73fc2d5f6154f6b">&#9670;&#160;</a></span>callee</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> tvm::script::printer::OpCallDocNode::callee {ffi::UnsafeInit()}</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The callee of this function call. </p>
-
-</div>
-</div>
-<a id="ab587d4e63b73fc2411792cba3517b5ae" name="ab587d4e63b73fc2411792cba3517b5ae"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab587d4e63b73fc2411792cba3517b5ae">&#9670;&#160;</a></span>config</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Optional&lt;<a class="el" href="classtvm_1_1script_1_1printer_1_1DictDoc.html">DictDoc</a>&gt; tvm::script::printer::OpCallDocNode::config {std::nullopt}</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The config of this op call. </p>
-
-</div>
-</div>
-<a id="a9463aa1e349fdaa77ee00318eda01047" name="a9463aa1e349fdaa77ee00318eda01047"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a9463aa1e349fdaa77ee00318eda01047">&#9670;&#160;</a></span>dispatch</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Optional&lt;<a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a>&gt; tvm::script::printer::OpCallDocNode::dispatch {std::nullopt}</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The optional dispatch variant of this op call. </p>
-
-</div>
-</div>
-<a id="ac5eaf7f682b39836acebf055f7c843ed" name="ac5eaf7f682b39836acebf055f7c843ed"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ac5eaf7f682b39836acebf055f7c843ed">&#9670;&#160;</a></span>workspace</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">ffi::Optional&lt;<a class="el" href="classtvm_1_1script_1_1printer_1_1DictDoc.html">DictDoc</a>&gt; tvm::script::printer::OpCallDocNode::workspace {std::nullopt}</td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The workspace of this op call. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/tvm/script/printer/<a class="el" href="doc_8h_source.html">doc.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_1script_1_1printer_1_1OpCallDocNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode__coll__graph.svg
deleted file mode 100644
index f2ecf4d1c86..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode__coll__graph.svg
+++ /dev/null
@@ -1,211 +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::script::printer::OpCallDocNode Pages: 1 -->
-<svg width="368pt" height="541pt"
- viewBox="0.00 0.00 367.50 541.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 537)">
-<title>tvm::script::printer::OpCallDocNode</title>
-<!-- Node1 -->
-<g id="Node000001" class="node">
-<title>Node1</title>
-<g id="a_Node000001"><a xlink:title="Doc that represents call to an TIRX operator.">
-<polygon fill="#999999" stroke="transparent" points="250,-131 94,-131 94,0 250,0 250,-131"/>
-<text text-anchor="start" x="126.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="130.5" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">::OpCallDocNode</text>
-<text text-anchor="start" x="98" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="111" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
-<text text-anchor="start" x="98" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="111" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">workspace</text>
-<text text-anchor="start" x="98" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="111" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">config</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">dispatch</text>
-<text text-anchor="start" x="98" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="111" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="111" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</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,-102.5 94,-102.5 250,-102.5 250,-102.5 94,-102.5"/>
-<polygon fill="#666666" stroke="#666666" points="94,-42.5 94,-42.5 109,-42.5 109,-42.5 94,-42.5"/>
-<polygon fill="#666666" stroke="#666666" points="109,-42.5 109,-42.5 250,-42.5 250,-42.5 109,-42.5"/>
-<polygon fill="none" stroke="#666666" points="94,0 94,-131 250,-131 250,0 94,0"/>
-</a>
-</g>
-</g>
-<!-- Node2 -->
-<g id="Node000002" class="node">
-<title>Node2</title>
-<g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" target="_top" xlink:title="The base class of statement doc.">
-<polygon fill="white" stroke="transparent" points="156,-279 0,-279 0,-193 156,-193 156,-279"/>
-<text text-anchor="start" x="32.5" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="41" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDocNode</text>
-<text text-anchor="start" x="4" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">comment</text>
-<text text-anchor="start" x="4" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</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">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-251 0,-251 156,-251 156,-251 0,-251"/>
-<polygon fill="#666666" stroke="#666666" points="0,-236 0,-236 15,-236 15,-236 0,-236"/>
-<polygon fill="#666666" stroke="#666666" points="15,-236 15,-236 156,-236 156,-236 15,-236"/>
-<polygon fill="none" stroke="#666666" points="0,-193 0,-279 156,-279 156,-193 0,-193"/>
-</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="M106.49,-183.94C115.73,-167.36 126.12,-148.75 135.85,-131.31"/>
-<polygon fill="none" stroke="#63b8ff" points="103.29,-182.48 101.48,-192.91 109.41,-185.89 103.29,-182.48"/>
-</a>
-</g>
-</g>
-<!-- Node3 -->
-<g id="Node000003" class="node">
-<title>Node3</title>
-<g id="a_Node000003"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc.">
-<polygon fill="white" stroke="transparent" points="156,-447 0,-447 0,-331 156,-331 156,-447"/>
-<text text-anchor="start" x="32.5" y="-435" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="52.5" y="-424" font-family="Helvetica,sans-Serif" font-size="10.00">::DocNode</text>
-<text text-anchor="start" x="4" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-409" font-family="Helvetica,sans-Serif" font-size="10.00">source_paths</text>
-<text text-anchor="start" x="4" y="-394" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-394" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
-<text text-anchor="start" x="4" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-379" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-368" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-353" font-family="Helvetica,sans-Serif" font-size="10.00">~DocNode()</text>
-<text text-anchor="start" x="4" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-338" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-419 0,-419 156,-419 156,-419 0,-419"/>
-<polygon fill="#666666" stroke="#666666" points="0,-389 0,-389 15,-389 15,-389 0,-389"/>
-<polygon fill="#666666" stroke="#666666" points="15,-389 15,-389 156,-389 156,-389 15,-389"/>
-<polygon fill="none" stroke="#666666" points="0,-331 0,-447 156,-447 156,-331 0,-331"/>
-</a>
-</g>
-</g>
-<!-- Node3&#45;&gt;Node2 -->
-<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,-320.71C78,-306.55 78,-292.01 78,-279.1"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-320.91 78,-330.91 81.5,-320.91 74.5,-320.91"/>
-</a>
-</g>
-</g>
-<!-- Node4 -->
-<g id="Node000004" class="node">
-<title>Node4</title>
-<g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-533 49,-533 49,-484 107,-484 107,-533"/>
-<text text-anchor="start" x="54" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-490.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-515.5 49,-515.5 107,-515.5 107,-515.5 49,-515.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-500.5 49,-500.5 107,-500.5 107,-500.5 49,-500.5"/>
-<polygon fill="none" stroke="#666666" points="49,-484 49,-533 107,-533 107,-484 49,-484"/>
-</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="M78,-473.72C78,-465.43 78,-456.32 78,-447.26"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-473.72 78,-483.72 81.5,-473.72 74.5,-473.72"/>
-</a>
-</g>
-</g>
-<!-- Node5 -->
-<g id="Node000005" class="node">
-<title>Node5</title>
-<g id="a_Node000005"><a xlink:href="classtvm_1_1script_1_1printer_1_1ExprDoc.html" target="_top" xlink:title="Reference type of ExprDocNode.">
-<polygon fill="white" stroke="transparent" points="359.5,-294 174.5,-294 174.5,-178 359.5,-178 359.5,-294"/>
-<text text-anchor="start" x="222" y="-282" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="244" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">::ExprDoc</text>
-<text text-anchor="start" x="265.5" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="179" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="192" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">operator[]()</text>
-<text text-anchor="start" x="179" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="192" y="-226" font-family="Helvetica,sans-Serif" font-size="10.00">ExprDoc()</text>
-<text text-anchor="start" x="179" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="192" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="192" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="179" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="192" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">ExprDoc()</text>
-<polygon fill="#666666" stroke="#666666" points="175,-266 175,-266 360,-266 360,-266 175,-266"/>
-<polygon fill="#666666" stroke="#666666" points="175,-251 175,-251 360,-251 360,-251 175,-251"/>
-<polygon fill="none" stroke="#666666" points="174.5,-178 174.5,-294 359.5,-294 359.5,-178 174.5,-178"/>
-</a>
-</g>
-</g>
-<!-- Node5&#45;&gt;Node1 -->
-<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="M234.84,-177.95C228.26,-166.29 221.24,-153.84 214.37,-141.65"/>
-<polygon fill="none" stroke="#63b8ff" points="214.27,-141.48 207.84,-138.22 208.38,-131.03 214.81,-134.29 214.27,-141.48"/>
-</a>
-</g>
-<text text-anchor="middle" x="243.5" y="-152" font-family="Helvetica,sans-Serif" font-size="10.00" fill="grey"> +callee</text>
-</g>
-<!-- Node6 -->
-<g id="Node000006" class="node">
-<title>Node6</title>
-<g id="a_Node000006"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode.">
-<polygon fill="white" stroke="transparent" points="359.5,-434 174.5,-434 174.5,-344 359.5,-344 359.5,-434"/>
-<text text-anchor="start" x="209.5" y="-422" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer::Doc</text>
-<text text-anchor="start" x="265.5" y="-407" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="179" y="-392" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="192" y="-392" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="192" y="-381" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="179" y="-366" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="192" y="-366" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
-<text text-anchor="start" x="179" y="-351" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="192" y="-351" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
-<polygon fill="#666666" stroke="#666666" points="175,-417 175,-417 360,-417 360,-417 175,-417"/>
-<polygon fill="#666666" stroke="#666666" points="175,-402 175,-402 360,-402 360,-402 175,-402"/>
-<polygon fill="none" stroke="#666666" points="174.5,-344 174.5,-434 359.5,-434 359.5,-344 174.5,-344"/>
-</a>
-</g>
-</g>
-<!-- Node6&#45;&gt;Node5 -->
-<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="M267,-333.8C267,-320.9 267,-307.1 267,-294.08"/>
-<polygon fill="none" stroke="#63b8ff" points="263.5,-333.92 267,-343.92 270.5,-333.92 263.5,-333.92"/>
-</a>
-</g>
-</g>
-<!-- Node7 -->
-<g id="Node000007" class="node">
-<title>Node7</title>
-<g id="a_Node000007"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="304,-533 230,-533 230,-484 304,-484 304,-533"/>
-<text text-anchor="start" x="235" y="-520.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="265" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="265" y="-490.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="230,-515.5 230,-515.5 304,-515.5 304,-515.5 230,-515.5"/>
-<polygon fill="#666666" stroke="#666666" points="230,-500.5 230,-500.5 304,-500.5 304,-500.5 230,-500.5"/>
-<polygon fill="none" stroke="#666666" points="230,-484 230,-533 304,-533 304,-484 230,-484"/>
-</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="M267,-473.47C267,-461.2 267,-447.18 267,-434.18"/>
-<polygon fill="none" stroke="#63b8ff" points="263.5,-473.72 267,-483.72 270.5,-473.72 263.5,-473.72"/>
-</a>
-</g>
-</g>
-</g>
-</svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode__inherit__graph.svg
deleted file mode 100644
index d79b32c3b89..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDocNode__inherit__graph.svg
+++ /dev/null
@@ -1,128 +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::script::printer::OpCallDocNode Pages: 1 -->
-<svg width="164pt" height="513pt"
- viewBox="0.00 0.00 164.00 513.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 509)">
-<title>tvm::script::printer::OpCallDocNode</title>
-<!-- Node1 -->
-<g id="Node000001" class="node">
-<title>Node1</title>
-<g id="a_Node000001"><a xlink:title="Doc that represents call to an TIRX operator.">
-<polygon fill="#999999" stroke="transparent" points="156,-146 0,-146 0,0 156,0 156,-146"/>
-<text text-anchor="start" x="32.5" y="-134" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="36.5" y="-123" font-family="Helvetica,sans-Serif" font-size="10.00">::OpCallDocNode</text>
-<text text-anchor="start" x="4" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-108" font-family="Helvetica,sans-Serif" font-size="10.00">callee</text>
-<text text-anchor="start" x="4" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">args</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">workspace</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">config</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">dispatch</text>
-<text text-anchor="start" x="4" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-22" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</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,-118 0,-118 156,-118 156,-118 0,-118"/>
-<polygon fill="#666666" stroke="#666666" points="0,-43 0,-43 15,-43 15,-43 0,-43"/>
-<polygon fill="#666666" stroke="#666666" points="15,-43 15,-43 156,-43 156,-43 15,-43"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-146 156,-146 156,0 0,0"/>
-</a>
-</g>
-</g>
-<!-- Node2 -->
-<g id="Node000002" class="node">
-<title>Node2</title>
-<g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html" target="_top" xlink:title="The base class of statement doc.">
-<polygon fill="white" stroke="transparent" points="156,-268 0,-268 0,-182 156,-182 156,-268"/>
-<text text-anchor="start" x="32.5" y="-256" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="41" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDocNode</text>
-<text text-anchor="start" x="4" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">comment</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">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</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">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-240 0,-240 156,-240 156,-240 0,-240"/>
-<polygon fill="#666666" stroke="#666666" points="0,-225 0,-225 15,-225 15,-225 0,-225"/>
-<polygon fill="#666666" stroke="#666666" points="15,-225 15,-225 156,-225 156,-225 15,-225"/>
-<polygon fill="none" stroke="#666666" points="0,-182 0,-268 156,-268 156,-182 0,-182"/>
-</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="M78,-171.66C78,-163.44 78,-154.82 78,-146.25"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-171.82 78,-181.82 81.5,-171.82 74.5,-171.82"/>
-</a>
-</g>
-</g>
-<!-- Node3 -->
-<g id="Node000003" class="node">
-<title>Node3</title>
-<g id="a_Node000003"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc.">
-<polygon fill="white" stroke="transparent" points="156,-420 0,-420 0,-304 156,-304 156,-420"/>
-<text text-anchor="start" x="32.5" y="-408" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="52.5" y="-397" font-family="Helvetica,sans-Serif" font-size="10.00">::DocNode</text>
-<text text-anchor="start" x="4" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">source_paths</text>
-<text text-anchor="start" x="4" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
-<text text-anchor="start" x="4" y="-352" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-352" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="17" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="4" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">~DocNode()</text>
-<text text-anchor="start" x="4" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="0,-392 0,-392 156,-392 156,-392 0,-392"/>
-<polygon fill="#666666" stroke="#666666" points="0,-362 0,-362 15,-362 15,-362 0,-362"/>
-<polygon fill="#666666" stroke="#666666" points="15,-362 15,-362 156,-362 156,-362 15,-362"/>
-<polygon fill="none" stroke="#666666" points="0,-304 0,-420 156,-420 156,-304 0,-304"/>
-</a>
-</g>
-</g>
-<!-- Node3&#45;&gt;Node2 -->
-<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,-293.61C78,-284.95 78,-276.28 78,-268.19"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-293.75 78,-303.75 81.5,-293.75 74.5,-293.75"/>
-</a>
-</g>
-</g>
-<!-- Node4 -->
-<g id="Node000004" class="node">
-<title>Node4</title>
-<g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="107,-505 49,-505 49,-456 107,-456 107,-505"/>
-<text text-anchor="start" x="54" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="76" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="76" y="-462.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="49,-487.5 49,-487.5 107,-487.5 107,-487.5 49,-487.5"/>
-<polygon fill="#666666" stroke="#666666" points="49,-472.5 49,-472.5 107,-472.5 107,-472.5 49,-472.5"/>
-<polygon fill="none" stroke="#666666" points="49,-456 49,-505 107,-505 107,-456 49,-456"/>
-</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="M78,-445.87C78,-437.83 78,-429.03 78,-420.26"/>
-<polygon fill="none" stroke="#63b8ff" points="74.5,-445.92 78,-455.92 81.5,-445.92 74.5,-445.92"/>
-</a>
-</g>
-</g>
-</g>
-</svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc__coll__graph.svg
deleted file mode 100644
index 0391ffb7b66..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc__coll__graph.svg
+++ /dev/null
@@ -1,111 +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::script::printer::OpCallDoc Pages: 1 -->
-<svg width="193pt" height="427pt"
- viewBox="0.00 0.00 193.00 427.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 423)">
-<title>tvm::script::printer::OpCallDoc</title>
-<!-- Node1 -->
-<g id="Node000001" class="node">
-<title>Node1</title>
-<g id="a_Node000001"><a xlink:title="Reference type of OpCallDocNode.">
-<polygon fill="#999999" stroke="transparent" points="185,-86 0,-86 0,0 185,0 185,-86"/>
-<text text-anchor="start" x="47.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="64" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">::OpCallDoc</text>
-<text text-anchor="start" x="91" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">OpCallDoc()</text>
-<text text-anchor="start" x="4.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-58 0.5,-58 185.5,-58 185.5,-58 0.5,-58"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-43 0.5,-43 185.5,-43 185.5,-43 0.5,-43"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-86 185,-86 185,0 0,0"/>
-</a>
-</g>
-</g>
-<!-- Node2 -->
-<g id="Node000002" class="node">
-<title>Node2</title>
-<g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDoc.html" target="_top" xlink:title="Reference type of StmtDocNode.">
-<polygon fill="white" stroke="transparent" points="185,-208 0,-208 0,-122 185,-122 185,-208"/>
-<text text-anchor="start" x="47.5" y="-196" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="68.5" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDoc</text>
-<text text-anchor="start" x="91" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="17.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">StmtDoc()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-180 0.5,-180 185.5,-180 185.5,-180 0.5,-180"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-165 0.5,-165 185.5,-165 185.5,-165 0.5,-165"/>
-<polygon fill="none" stroke="#666666" points="0,-122 0,-208 185,-208 185,-122 0,-122"/>
-</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="M92.5,-111.55C92.5,-103.12 92.5,-94.49 92.5,-86.33"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-111.69 92.5,-121.69 96,-111.69 89,-111.69"/>
-</a>
-</g>
-</g>
-<!-- Node3 -->
-<g id="Node000003" class="node">
-<title>Node3</title>
-<g id="a_Node000003"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode.">
-<polygon fill="white" stroke="transparent" points="185,-334 0,-334 0,-244 185,-244 185,-334"/>
-<text text-anchor="start" x="35" y="-322" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer::Doc</text>
-<text text-anchor="start" x="91" y="-307" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-292" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-292" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="17.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
-<text text-anchor="start" x="4.5" y="-251" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="17.5" y="-251" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-317 0.5,-317 185.5,-317 185.5,-317 0.5,-317"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-302 0.5,-302 185.5,-302 185.5,-302 0.5,-302"/>
-<polygon fill="none" stroke="#666666" points="0,-244 0,-334 185,-334 185,-244 0,-244"/>
-</a>
-</g>
-</g>
-<!-- Node3&#45;&gt;Node2 -->
-<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="M92.5,-233.72C92.5,-225.21 92.5,-216.53 92.5,-208.35"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-233.96 92.5,-243.96 96,-233.96 89,-233.96"/>
-</a>
-</g>
-</g>
-<!-- Node4 -->
-<g id="Node000004" class="node">
-<title>Node4</title>
-<g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-419 55.5,-419 55.5,-370 129.5,-370 129.5,-419"/>
-<text text-anchor="start" x="60.5" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-401.5 55.5,-401.5 129.5,-401.5 129.5,-401.5 55.5,-401.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-386.5 55.5,-386.5 129.5,-386.5 129.5,-386.5 55.5,-386.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-370 55.5,-419 129.5,-419 129.5,-370 55.5,-370"/>
-</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="M92.5,-359.62C92.5,-351.56 92.5,-342.84 92.5,-334.39"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-359.75 92.5,-369.76 96,-359.76 89,-359.75"/>
-</a>
-</g>
-</g>
-</g>
-</svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc__inherit__graph.svg
deleted file mode 100644
index 0391ffb7b66..00000000000
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1OpCallDoc__inherit__graph.svg
+++ /dev/null
@@ -1,111 +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::script::printer::OpCallDoc Pages: 1 -->
-<svg width="193pt" height="427pt"
- viewBox="0.00 0.00 193.00 427.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 423)">
-<title>tvm::script::printer::OpCallDoc</title>
-<!-- Node1 -->
-<g id="Node000001" class="node">
-<title>Node1</title>
-<g id="a_Node000001"><a xlink:title="Reference type of OpCallDocNode.">
-<polygon fill="#999999" stroke="transparent" points="185,-86 0,-86 0,0 185,0 185,-86"/>
-<text text-anchor="start" x="47.5" y="-74" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="64" y="-63" font-family="Helvetica,sans-Serif" font-size="10.00">::OpCallDoc</text>
-<text text-anchor="start" x="91" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-33" font-family="Helvetica,sans-Serif" font-size="10.00">OpCallDoc()</text>
-<text text-anchor="start" x="4.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-18" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-7" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-58 0.5,-58 185.5,-58 185.5,-58 0.5,-58"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-43 0.5,-43 185.5,-43 185.5,-43 0.5,-43"/>
-<polygon fill="none" stroke="#666666" points="0,0 0,-86 185,-86 185,0 0,0"/>
-</a>
-</g>
-</g>
-<!-- Node2 -->
-<g id="Node000002" class="node">
-<title>Node2</title>
-<g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1printer_1_1StmtDoc.html" target="_top" xlink:title="Reference type of StmtDocNode.">
-<polygon fill="white" stroke="transparent" points="185,-208 0,-208 0,-122 185,-122 185,-208"/>
-<text text-anchor="start" x="47.5" y="-196" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="68.5" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDoc</text>
-<text text-anchor="start" x="91" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-155" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="17.5" y="-129" font-family="Helvetica,sans-Serif" font-size="10.00">StmtDoc()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-180 0.5,-180 185.5,-180 185.5,-180 0.5,-180"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-165 0.5,-165 185.5,-165 185.5,-165 0.5,-165"/>
-<polygon fill="none" stroke="#666666" points="0,-122 0,-208 185,-208 185,-122 0,-122"/>
-</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="M92.5,-111.55C92.5,-103.12 92.5,-94.49 92.5,-86.33"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-111.69 92.5,-121.69 96,-111.69 89,-111.69"/>
-</a>
-</g>
-</g>
-<!-- Node3 -->
-<g id="Node000003" class="node">
-<title>Node3</title>
-<g id="a_Node000003"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode.">
-<polygon fill="white" stroke="transparent" points="185,-334 0,-334 0,-244 185,-244 185,-334"/>
-<text text-anchor="start" x="35" y="-322" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer::Doc</text>
-<text text-anchor="start" x="91" y="-307" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="4.5" y="-292" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="17.5" y="-292" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="17.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="4.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="17.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
-<text text-anchor="start" x="4.5" y="-251" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="17.5" y="-251" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
-<polygon fill="#666666" stroke="#666666" points="0.5,-317 0.5,-317 185.5,-317 185.5,-317 0.5,-317"/>
-<polygon fill="#666666" stroke="#666666" points="0.5,-302 0.5,-302 185.5,-302 185.5,-302 0.5,-302"/>
-<polygon fill="none" stroke="#666666" points="0,-244 0,-334 185,-334 185,-244 0,-244"/>
-</a>
-</g>
-</g>
-<!-- Node3&#45;&gt;Node2 -->
-<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="M92.5,-233.72C92.5,-225.21 92.5,-216.53 92.5,-208.35"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-233.96 92.5,-243.96 96,-233.96 89,-233.96"/>
-</a>
-</g>
-</g>
-<!-- Node4 -->
-<g id="Node000004" class="node">
-<title>Node4</title>
-<g id="a_Node000004"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="129.5,-419 55.5,-419 55.5,-370 129.5,-370 129.5,-419"/>
-<text text-anchor="start" x="60.5" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="90.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="90.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="55.5,-401.5 55.5,-401.5 129.5,-401.5 129.5,-401.5 55.5,-401.5"/>
-<polygon fill="#666666" stroke="#666666" points="55.5,-386.5 55.5,-386.5 129.5,-386.5 129.5,-386.5 55.5,-386.5"/>
-<polygon fill="none" stroke="#666666" points="55.5,-370 55.5,-419 129.5,-419 129.5,-370 55.5,-370"/>
-</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="M92.5,-359.62C92.5,-351.56 92.5,-342.84 92.5,-334.39"/>
-<polygon fill="none" stroke="#63b8ff" points="89,-359.75 92.5,-369.76 96,-359.76 89,-359.75"/>
-</a>
-</g>
-</g>
-</g>
-</svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDoc.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDoc.html
index 2dbf850b9c2..7ca50dcc689 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDoc.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDoc.html
@@ -88,7 +88,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::StmtDoc:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1StmtDoc__inherit__graph.svg" width="4047" height="590"><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_1printer_1_1StmtDoc__inherit__graph.svg" width="3776" height="590"><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::printer::StmtDoc:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDocNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDocNode.html
index 777f173ba62..fea99c1d8ec 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDocNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDocNode.html
@@ -89,7 +89,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::script::printer::StmtDocNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1printer_1_1StmtDocNode__inherit__graph.svg" width="3467" 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_1printer_1_1StmtDocNode__inherit__graph.svg" width="3235" height="704"><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::printer::StmtDocNode:</div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDocNode__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDocNode__inherit__graph.svg
index 14232b73579..532a5eb408b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDocNode__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDocNode__inherit__graph.svg
@@ -4,28 +4,28 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::script::printer::StmtDocNode Pages: 1 -->
-<svg width="2600pt" height="528pt"
- viewBox="0.00 0.00 2600.00 528.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="2426pt" height="528pt"
+ viewBox="0.00 0.00 2426.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)">
 <title>tvm::script::printer::StmtDocNode</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="The base class of statement doc.">
-<polygon fill="#999999" stroke="transparent" points="1374,-283 1218,-283 1218,-197 1374,-197 1374,-283"/>
-<text text-anchor="start" x="1250.5" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="1259" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDocNode</text>
-<text text-anchor="start" x="1222" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">comment</text>
-<text text-anchor="start" x="1222" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1235" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="1222" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1218,-255 1218,-255 1374,-255 1374,-255 1218,-255"/>
-<polygon fill="#666666" stroke="#666666" points="1218,-240 1218,-240 1233,-240 1233,-240 1218,-240"/>
-<polygon fill="#666666" stroke="#666666" points="1233,-240 1233,-240 1374,-240 1374,-240 1233,-240"/>
-<polygon fill="none" stroke="#666666" points="1218,-197 1218,-283 1374,-283 1374,-197 1218,-197"/>
+<polygon fill="#999999" stroke="transparent" points="1287,-283 1131,-283 1131,-197 1287,-197 1287,-283"/>
+<text text-anchor="start" x="1163.5" y="-271" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="1172" y="-260" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDocNode</text>
+<text text-anchor="start" x="1135" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-245" font-family="Helvetica,sans-Serif" font-size="10.00">comment</text>
+<text text-anchor="start" x="1135" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-230" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1148" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="1135" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1131,-255 1131,-255 1287,-255 1287,-255 1131,-255"/>
+<polygon fill="#666666" stroke="#666666" points="1131,-240 1131,-240 1146,-240 1146,-240 1131,-240"/>
+<polygon fill="#666666" stroke="#666666" points="1146,-240 1146,-240 1287,-240 1287,-240 1146,-240"/>
+<polygon fill="none" stroke="#666666" points="1131,-197 1131,-283 1287,-283 1287,-197 1131,-197"/>
 </a>
 </g>
 </g>
@@ -56,8 +56,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="M1207.77,-236.26C958.32,-228.03 259.86,-201.62 165,-161 149.01,-154.15 134.05,-143.09 121.2,-131.36"/>
-<polygon fill="none" stroke="#63b8ff" points="1207.77,-239.76 1217.88,-236.59 1208,-232.76 1207.77,-239.76"/>
+<path fill="none" stroke="#63b8ff" d="M1120.77,-239.74C901.24,-240.42 335.84,-234.74 165,-161 149.03,-154.11 134.08,-143.03 121.22,-131.3"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.97,-243.24 1130.96,-239.7 1120.95,-236.24 1120.97,-243.24"/>
 </a>
 </g>
 </g>
@@ -90,8 +90,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="M1207.47,-239.03C1001.02,-237.95 493.51,-228.31 339,-161 326.43,-155.52 314.48,-147.47 303.69,-138.56"/>
-<polygon fill="none" stroke="#63b8ff" points="1207.65,-242.53 1217.67,-239.08 1207.68,-235.53 1207.65,-242.53"/>
+<path fill="none" stroke="#63b8ff" d="M1120.6,-238.19C928.15,-235.28 477.39,-221.96 339,-161 326.64,-155.56 314.87,-147.64 304.21,-138.88"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.63,-241.69 1130.68,-238.33 1120.74,-234.69 1120.63,-241.69"/>
 </a>
 </g>
 </g>
@@ -118,8 +118,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="M1207.79,-237.16C1030.06,-232.33 635.37,-215.62 513,-161 493.76,-152.41 475.91,-137.86 461.46,-123.54"/>
-<polygon fill="none" stroke="#63b8ff" points="1207.81,-240.66 1217.9,-237.43 1207.99,-233.67 1207.81,-240.66"/>
+<path fill="none" stroke="#63b8ff" d="M1120.27,-235.86C957.77,-229 619.31,-209.24 513,-161 494,-152.38 476.32,-138 461.94,-123.83"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.57,-239.38 1130.71,-236.29 1120.86,-232.38 1120.57,-239.38"/>
 </a>
 </g>
 </g>
@@ -152,8 +152,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="M1207.72,-234.24C1061.85,-225.3 777.61,-202.98 687,-161 674.93,-155.41 663.38,-147.53 652.87,-138.89"/>
-<polygon fill="none" stroke="#63b8ff" points="1207.78,-237.75 1217.97,-234.86 1208.2,-230.76 1207.78,-237.75"/>
+<path fill="none" stroke="#63b8ff" d="M1120.58,-232.06C992.37,-220.94 761.96,-196.69 687,-161 674.99,-155.28 663.47,-147.34 652.97,-138.68"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.51,-235.56 1130.77,-232.93 1121.11,-228.59 1120.51,-235.56"/>
 </a>
 </g>
 </g>
@@ -180,8 +180,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="M1207.67,-237.42C1116.48,-232.6 972.22,-215.95 861,-161 842.47,-151.85 825.02,-137.54 810.68,-123.57"/>
-<polygon fill="none" stroke="#63b8ff" points="1207.54,-240.91 1217.7,-237.91 1207.88,-233.92 1207.54,-240.91"/>
+<path fill="none" stroke="#63b8ff" d="M1120.65,-231.9C1047.6,-223.13 942.94,-203.7 861,-161 842.86,-151.54 825.61,-137.34 811.33,-123.55"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.41,-235.39 1130.74,-233.07 1121.21,-228.44 1120.41,-235.39"/>
 </a>
 </g>
 </g>
@@ -208,8 +208,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="M1207.86,-223.03C1155.32,-211.05 1088.64,-191.38 1035,-161 1017.55,-151.12 1000.71,-137.15 986.58,-123.68"/>
-<polygon fill="none" stroke="#63b8ff" points="1207.31,-226.5 1217.83,-225.25 1208.83,-219.66 1207.31,-226.5"/>
+<path fill="none" stroke="#63b8ff" d="M1121.31,-206.17C1092.76,-193.81 1061.6,-178.46 1035,-161 1018.75,-150.33 1002.58,-136.64 988.67,-123.62"/>
+<polygon fill="none" stroke="#63b8ff" points="1120.3,-209.55 1130.88,-210.24 1123.05,-203.11 1120.3,-209.55"/>
 </a>
 </g>
 </g>
@@ -236,8 +236,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="M1241.26,-190.07C1230.55,-180.45 1219.41,-170.42 1209,-161 1195.65,-148.92 1181.2,-135.75 1167.98,-123.67"/>
-<polygon fill="none" stroke="#63b8ff" points="1239.19,-192.91 1248.97,-196.98 1243.86,-187.7 1239.19,-192.91"/>
+<path fill="none" stroke="#63b8ff" d="M1180.71,-187.78C1169.23,-167 1156.13,-143.29 1145.23,-123.55"/>
+<polygon fill="none" stroke="#63b8ff" points="1177.79,-189.73 1185.69,-196.79 1183.91,-186.35 1177.79,-189.73"/>
 </a>
 </g>
 </g>
@@ -266,8 +266,8 @@
 <g id="edge10_Node000001_Node000011" class="edge">
 <title>Node1&#45;&gt;Node11</title>
 <g id="a_edge10_Node000001_Node000011"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1296,-186.66C1296,-166.15 1296,-142.94 1296,-123.55"/>
-<polygon fill="none" stroke="#63b8ff" points="1292.5,-186.79 1296,-196.79 1299.5,-186.79 1292.5,-186.79"/>
+<path fill="none" stroke="#63b8ff" d="M1237.29,-187.78C1248.77,-167 1261.87,-143.29 1272.77,-123.55"/>
+<polygon fill="none" stroke="#63b8ff" points="1234.09,-186.35 1232.31,-196.79 1240.21,-189.73 1234.09,-186.35"/>
 </a>
 </g>
 </g>
@@ -300,8 +300,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="M1350.74,-190.07C1361.45,-180.45 1372.59,-170.42 1383,-161 1390.89,-153.86 1399.16,-146.34 1407.34,-138.89"/>
-<polygon fill="none" stroke="#63b8ff" points="1348.14,-187.7 1343.03,-196.98 1352.81,-192.91 1348.14,-187.7"/>
+<path fill="none" stroke="#63b8ff" d="M1296.69,-206.17C1325.24,-193.81 1356.4,-178.46 1383,-161 1393.09,-154.38 1403.15,-146.58 1412.66,-138.51"/>
+<polygon fill="none" stroke="#63b8ff" points="1294.95,-203.11 1287.12,-210.24 1297.7,-209.55 1294.95,-203.11"/>
 </a>
 </g>
 </g>
@@ -340,8 +340,8 @@
 <g id="edge12_Node000001_Node000013" class="edge">
 <title>Node1&#45;&gt;Node13</title>
 <g id="a_edge12_Node000001_Node000013"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1384.14,-223.03C1436.68,-211.05 1503.36,-191.38 1557,-161 1559.94,-159.34 1562.86,-157.56 1565.75,-155.68"/>
-<polygon fill="none" stroke="#63b8ff" points="1383.17,-219.66 1374.17,-225.25 1384.69,-226.5 1383.17,-219.66"/>
+<path fill="none" stroke="#63b8ff" d="M1297.35,-231.9C1370.4,-223.13 1475.06,-203.7 1557,-161 1559.99,-159.44 1562.96,-157.75 1565.9,-155.95"/>
+<polygon fill="none" stroke="#63b8ff" points="1296.79,-228.44 1287.26,-233.07 1297.59,-235.39 1296.79,-228.44"/>
 </a>
 </g>
 </g>
@@ -374,37 +374,29 @@
 <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="M1384.33,-237.42C1475.52,-232.6 1619.78,-215.95 1731,-161 1742.74,-155.2 1754.05,-147.33 1764.4,-138.79"/>
-<polygon fill="none" stroke="#63b8ff" points="1384.12,-233.92 1374.3,-237.91 1384.46,-240.91 1384.12,-233.92"/>
+<path fill="none" stroke="#63b8ff" d="M1297.42,-232.06C1425.63,-220.94 1656.04,-196.69 1731,-161 1743.01,-155.28 1754.53,-147.34 1765.03,-138.68"/>
+<polygon fill="none" stroke="#63b8ff" points="1296.89,-228.59 1287.23,-232.93 1297.49,-235.56 1296.89,-228.59"/>
 </a>
 </g>
 </g>
 <!-- Node15 -->
 <g id="Node000015" class="node">
 <title>Node15</title>
-<g id="a_Node000015"><a xlink:href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html" target="_top" xlink:title="Doc that represents call to an TIRX operator.">
-<polygon fill="white" stroke="transparent" points="2070,-153.5 1914,-153.5 1914,-7.5 2070,-7.5 2070,-153.5"/>
-<text text-anchor="start" x="1946.5" y="-141.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="1950.5" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">::OpCallDocNode</text>
-<text text-anchor="start" x="1918" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1931" y="-115.5" font-family="Helvetica,sans-Serif" font-size="10.00">callee</text>
-<text text-anchor="start" x="1918" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1931" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">args</text>
+<g id="a_Node000015"><a xlink:href="classtvm_1_1script_1_1printer_1_1ReturnDocNode.html" target="_top" xlink:title="Doc that represents return statement.">
+<polygon fill="white" stroke="transparent" points="2070,-123.5 1914,-123.5 1914,-37.5 2070,-37.5 2070,-123.5"/>
+<text text-anchor="start" x="1946.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="1950.5" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ReturnDocNode</text>
 <text text-anchor="start" x="1918" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1931" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">workspace</text>
+<text text-anchor="start" x="1931" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
 <text text-anchor="start" x="1918" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1931" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">config</text>
-<text text-anchor="start" x="1918" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1931" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00">dispatch</text>
-<text text-anchor="start" x="1918" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1931" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1931" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="1918" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1931" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1914,-125.5 1914,-125.5 2070,-125.5 2070,-125.5 1914,-125.5"/>
-<polygon fill="#666666" stroke="#666666" points="1914,-50.5 1914,-50.5 1929,-50.5 1929,-50.5 1914,-50.5"/>
-<polygon fill="#666666" stroke="#666666" points="1929,-50.5 1929,-50.5 2070,-50.5 2070,-50.5 1929,-50.5"/>
-<polygon fill="none" stroke="#666666" points="1914,-7.5 1914,-153.5 2070,-153.5 2070,-7.5 1914,-7.5"/>
+<text text-anchor="start" x="1931" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1931" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="1918" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1931" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1914,-95.5 1914,-95.5 2070,-95.5 2070,-95.5 1914,-95.5"/>
+<polygon fill="#666666" stroke="#666666" points="1914,-80.5 1914,-80.5 1929,-80.5 1929,-80.5 1914,-80.5"/>
+<polygon fill="#666666" stroke="#666666" points="1929,-80.5 1929,-80.5 2070,-80.5 2070,-80.5 1929,-80.5"/>
+<polygon fill="none" stroke="#666666" points="1914,-37.5 1914,-123.5 2070,-123.5 2070,-37.5 1914,-37.5"/>
 </a>
 </g>
 </g>
@@ -412,29 +404,35 @@
 <g id="edge14_Node000001_Node000015" class="edge">
 <title>Node1&#45;&gt;Node15</title>
 <g id="a_edge14_Node000001_Node000015"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1384.28,-234.24C1530.15,-225.3 1814.39,-202.98 1905,-161 1909.64,-158.85 1914.21,-156.36 1918.66,-153.62"/>
-<polygon fill="none" stroke="#63b8ff" points="1383.8,-230.76 1374.03,-234.86 1384.22,-237.75 1383.8,-230.76"/>
+<path fill="none" stroke="#63b8ff" d="M1297.73,-235.86C1460.23,-229 1798.69,-209.24 1905,-161 1924,-152.38 1941.68,-138 1956.06,-123.83"/>
+<polygon fill="none" stroke="#63b8ff" points="1297.14,-232.38 1287.29,-236.29 1297.43,-239.38 1297.14,-232.38"/>
 </a>
 </g>
 </g>
 <!-- Node16 -->
 <g id="Node000016" class="node">
 <title>Node16</title>
-<g id="a_Node000016"><a xlink:href="classtvm_1_1script_1_1printer_1_1ReturnDocNode.html" target="_top" xlink:title="Doc that represents return statement.">
-<polygon fill="white" stroke="transparent" points="2244,-123.5 2088,-123.5 2088,-37.5 2244,-37.5 2244,-123.5"/>
-<text text-anchor="start" x="2120.5" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="2124.5" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ReturnDocNode</text>
-<text text-anchor="start" x="2092" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2105" y="-85.5" font-family="Helvetica,sans-Serif" font-size="10.00">value</text>
-<text text-anchor="start" x="2092" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2105" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="2105" y="-59.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="2092" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2105" y="-44.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="2088,-95.5 2088,-95.5 2244,-95.5 2244,-95.5 2088,-95.5"/>
-<polygon fill="#666666" stroke="#666666" points="2088,-80.5 2088,-80.5 2103,-80.5 2103,-80.5 2088,-80.5"/>
-<polygon fill="#666666" stroke="#666666" points="2103,-80.5 2103,-80.5 2244,-80.5 2244,-80.5 2103,-80.5"/>
-<polygon fill="none" stroke="#666666" points="2088,-37.5 2088,-123.5 2244,-123.5 2244,-37.5 2088,-37.5"/>
+<g id="a_Node000016"><a xlink:href="classtvm_1_1script_1_1printer_1_1ScopeDocNode.html" target="_top" xlink:title="Doc that represents special scopes.">
+<polygon fill="white" stroke="transparent" points="2244,-146 2088,-146 2088,-15 2244,-15 2244,-146"/>
+<text text-anchor="start" x="2120.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="2126" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ScopeDocNode</text>
+<text text-anchor="start" x="2092" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2105" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">lhs</text>
+<text text-anchor="start" x="2092" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2105" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">rhs</text>
+<text text-anchor="start" x="2092" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2105" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
+<text text-anchor="start" x="2092" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2105" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">allow_concise_scoping</text>
+<text text-anchor="start" x="2092" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2105" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="2105" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="2092" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2105" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="2088,-117.5 2088,-117.5 2244,-117.5 2244,-117.5 2088,-117.5"/>
+<polygon fill="#666666" stroke="#666666" points="2088,-57.5 2088,-57.5 2103,-57.5 2103,-57.5 2088,-57.5"/>
+<polygon fill="#666666" stroke="#666666" points="2103,-57.5 2103,-57.5 2244,-57.5 2244,-57.5 2103,-57.5"/>
+<polygon fill="none" stroke="#666666" points="2088,-15 2088,-146 2244,-146 2244,-15 2088,-15"/>
 </a>
 </g>
 </g>
@@ -442,35 +440,31 @@
 <g id="edge15_Node000001_Node000016" class="edge">
 <title>Node1&#45;&gt;Node16</title>
 <g id="a_edge15_Node000001_Node000016"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1384.21,-237.16C1561.94,-232.33 1956.63,-215.62 2079,-161 2098.24,-152.41 2116.09,-137.86 2130.54,-123.54"/>
-<polygon fill="none" stroke="#63b8ff" points="1384.01,-233.67 1374.1,-237.43 1384.19,-240.66 1384.01,-233.67"/>
+<path fill="none" stroke="#63b8ff" d="M1297.4,-238.19C1489.85,-235.28 1940.61,-221.96 2079,-161 2087.89,-157.08 2096.48,-151.88 2104.57,-146.01"/>
+<polygon fill="none" stroke="#63b8ff" points="1297.26,-234.69 1287.32,-238.33 1297.37,-241.69 1297.26,-234.69"/>
 </a>
 </g>
 </g>
 <!-- Node17 -->
 <g id="Node000017" class="node">
 <title>Node17</title>
-<g id="a_Node000017"><a xlink:href="classtvm_1_1script_1_1printer_1_1ScopeDocNode.html" target="_top" xlink:title="Doc that represents special scopes.">
-<polygon fill="white" stroke="transparent" points="2418,-146 2262,-146 2262,-15 2418,-15 2418,-146"/>
-<text text-anchor="start" x="2294.5" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="2300" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ScopeDocNode</text>
-<text text-anchor="start" x="2266" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2279" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">lhs</text>
+<g id="a_Node000017"><a xlink:href="classtvm_1_1script_1_1printer_1_1WhileDocNode.html" target="_top" xlink:title="Doc that represents while statement.">
+<polygon fill="white" stroke="transparent" points="2418,-131 2262,-131 2262,-30 2418,-30 2418,-131"/>
+<text text-anchor="start" x="2294.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="2300.5" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">::WhileDocNode</text>
 <text text-anchor="start" x="2266" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2279" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">rhs</text>
+<text text-anchor="start" x="2279" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">predicate</text>
 <text text-anchor="start" x="2266" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="2279" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
 <text text-anchor="start" x="2266" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2279" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">allow_concise_scoping</text>
-<text text-anchor="start" x="2266" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2279" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="2279" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="2266" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2279" y="-21.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="2262,-117.5 2262,-117.5 2418,-117.5 2418,-117.5 2262,-117.5"/>
-<polygon fill="#666666" stroke="#666666" points="2262,-57.5 2262,-57.5 2277,-57.5 2277,-57.5 2262,-57.5"/>
-<polygon fill="#666666" stroke="#666666" points="2277,-57.5 2277,-57.5 2418,-57.5 2418,-57.5 2277,-57.5"/>
-<polygon fill="none" stroke="#666666" points="2262,-15 2262,-146 2418,-146 2418,-15 2262,-15"/>
+<text text-anchor="start" x="2279" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="2279" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
+<text text-anchor="start" x="2266" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2279" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="2262,-102.5 2262,-102.5 2418,-102.5 2418,-102.5 2262,-102.5"/>
+<polygon fill="#666666" stroke="#666666" points="2262,-72.5 2262,-72.5 2277,-72.5 2277,-72.5 2262,-72.5"/>
+<polygon fill="#666666" stroke="#666666" points="2277,-72.5 2277,-72.5 2418,-72.5 2418,-72.5 2277,-72.5"/>
+<polygon fill="none" stroke="#666666" points="2262,-30 2262,-131 2418,-131 2418,-30 2262,-30"/>
 </a>
 </g>
 </g>
@@ -478,40 +472,8 @@
 <g id="edge16_Node000001_Node000017" class="edge">
 <title>Node1&#45;&gt;Node17</title>
 <g id="a_edge16_Node000001_Node000017"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1384.53,-239.03C1590.98,-237.95 2098.49,-228.31 2253,-161 2261.91,-157.12 2270.51,-151.94 2278.6,-146.08"/>
-<polygon fill="none" stroke="#63b8ff" points="1384.32,-235.53 1374.33,-239.08 1384.35,-242.53 1384.32,-235.53"/>
-</a>
-</g>
-</g>
-<!-- Node18 -->
-<g id="Node000018" class="node">
-<title>Node18</title>
-<g id="a_Node000018"><a xlink:href="classtvm_1_1script_1_1printer_1_1WhileDocNode.html" target="_top" xlink:title="Doc that represents while statement.">
-<polygon fill="white" stroke="transparent" points="2592,-131 2436,-131 2436,-30 2592,-30 2592,-131"/>
-<text text-anchor="start" x="2468.5" y="-118.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="2474.5" y="-107.5" font-family="Helvetica,sans-Serif" font-size="10.00">::WhileDocNode</text>
-<text text-anchor="start" x="2440" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">predicate</text>
-<text text-anchor="start" x="2440" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">body</text>
-<text text-anchor="start" x="2440" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="2453" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO_FINAL()</text>
-<text text-anchor="start" x="2440" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453" y="-36.5" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="2436,-102.5 2436,-102.5 2592,-102.5 2592,-102.5 2436,-102.5"/>
-<polygon fill="#666666" stroke="#666666" points="2436,-72.5 2436,-72.5 2451,-72.5 2451,-72.5 2436,-72.5"/>
-<polygon fill="#666666" stroke="#666666" points="2451,-72.5 2451,-72.5 2592,-72.5 2592,-72.5 2451,-72.5"/>
-<polygon fill="none" stroke="#666666" points="2436,-30 2436,-131 2592,-131 2592,-30 2436,-30"/>
-</a>
-</g>
-</g>
-<!-- Node1&#45;&gt;Node18 -->
-<g id="edge17_Node000001_Node000018" class="edge">
-<title>Node1&#45;&gt;Node18</title>
-<g id="a_edge17_Node000001_Node000018"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1384.23,-236.26C1633.68,-228.03 2332.14,-201.62 2427,-161 2442.99,-154.15 2457.95,-143.09 2470.8,-131.36"/>
-<polygon fill="none" stroke="#63b8ff" points="1384,-232.76 1374.12,-236.59 1384.23,-239.76 1384,-232.76"/>
+<path fill="none" stroke="#63b8ff" d="M1297.23,-239.74C1516.76,-240.42 2082.16,-234.74 2253,-161 2268.97,-154.11 2283.92,-143.03 2296.78,-131.3"/>
+<polygon fill="none" stroke="#63b8ff" points="1297.05,-236.24 1287.04,-239.7 1297.03,-243.24 1297.05,-236.24"/>
 </a>
 </g>
 </g>
@@ -519,24 +481,24 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc.">
-<polygon fill="white" stroke="transparent" points="1374,-435 1218,-435 1218,-319 1374,-319 1374,-435"/>
-<text text-anchor="start" x="1250.5" y="-423" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="1270.5" y="-412" font-family="Helvetica,sans-Serif" font-size="10.00">::DocNode</text>
-<text text-anchor="start" x="1222" y="-397" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235" y="-397" font-family="Helvetica,sans-Serif" font-size="10.00">source_paths</text>
-<text text-anchor="start" x="1222" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
-<text text-anchor="start" x="1222" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
-<text text-anchor="start" x="1235" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="1222" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">~DocNode()</text>
-<text text-anchor="start" x="1222" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1235" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
-<polygon fill="#666666" stroke="#666666" points="1218,-407 1218,-407 1374,-407 1374,-407 1218,-407"/>
-<polygon fill="#666666" stroke="#666666" points="1218,-377 1218,-377 1233,-377 1233,-377 1218,-377"/>
-<polygon fill="#666666" stroke="#666666" points="1233,-377 1233,-377 1374,-377 1374,-377 1233,-377"/>
-<polygon fill="none" stroke="#666666" points="1218,-319 1218,-435 1374,-435 1374,-319 1218,-319"/>
+<polygon fill="white" stroke="transparent" points="1287,-435 1131,-435 1131,-319 1287,-319 1287,-435"/>
+<text text-anchor="start" x="1163.5" y="-423" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="1183.5" y="-412" font-family="Helvetica,sans-Serif" font-size="10.00">::DocNode</text>
+<text text-anchor="start" x="1135" y="-397" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-397" font-family="Helvetica,sans-Serif" font-size="10.00">source_paths</text>
+<text text-anchor="start" x="1135" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">_type_mutable</text>
+<text text-anchor="start" x="1135" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-367" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DECLARE_OBJECT</text>
+<text text-anchor="start" x="1148" y="-356" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="1135" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-341" font-family="Helvetica,sans-Serif" font-size="10.00">~DocNode()</text>
+<text text-anchor="start" x="1135" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1148" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">RegisterReflection()</text>
+<polygon fill="#666666" stroke="#666666" points="1131,-407 1131,-407 1287,-407 1287,-407 1131,-407"/>
+<polygon fill="#666666" stroke="#666666" points="1131,-377 1131,-377 1146,-377 1146,-377 1131,-377"/>
+<polygon fill="#666666" stroke="#666666" points="1146,-377 1146,-377 1287,-377 1287,-377 1146,-377"/>
+<polygon fill="none" stroke="#666666" points="1131,-319 1131,-435 1287,-435 1287,-319 1131,-319"/>
 </a>
 </g>
 </g>
@@ -544,8 +506,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="M1296,-308.61C1296,-299.95 1296,-291.28 1296,-283.19"/>
-<polygon fill="none" stroke="#63b8ff" points="1292.5,-308.75 1296,-318.75 1299.5,-308.75 1292.5,-308.75"/>
+<path fill="none" stroke="#63b8ff" d="M1209,-308.61C1209,-299.95 1209,-291.28 1209,-283.19"/>
+<polygon fill="none" stroke="#63b8ff" points="1205.5,-308.75 1209,-318.75 1212.5,-308.75 1205.5,-308.75"/>
 </a>
 </g>
 </g>
@@ -553,13 +515,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1325,-520 1267,-520 1267,-471 1325,-471 1325,-520"/>
-<text text-anchor="start" x="1272" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
-<text text-anchor="start" x="1294" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="1294" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="1267,-502.5 1267,-502.5 1325,-502.5 1325,-502.5 1267,-502.5"/>
-<polygon fill="#666666" stroke="#666666" points="1267,-487.5 1267,-487.5 1325,-487.5 1325,-487.5 1267,-487.5"/>
-<polygon fill="none" stroke="#666666" points="1267,-471 1267,-520 1325,-520 1325,-471 1267,-471"/>
+<polygon fill="white" stroke="transparent" points="1238,-520 1180,-520 1180,-471 1238,-471 1238,-520"/>
+<text text-anchor="start" x="1185" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<text text-anchor="start" x="1207" y="-492.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1207" y="-477.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="1180,-502.5 1180,-502.5 1238,-502.5 1238,-502.5 1180,-502.5"/>
+<polygon fill="#666666" stroke="#666666" points="1180,-487.5 1180,-487.5 1238,-487.5 1238,-487.5 1180,-487.5"/>
+<polygon fill="none" stroke="#666666" points="1180,-471 1180,-520 1238,-520 1238,-471 1180,-471"/>
 </a>
 </g>
 </g>
@@ -567,8 +529,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="M1296,-460.87C1296,-452.83 1296,-444.03 1296,-435.26"/>
-<polygon fill="none" stroke="#63b8ff" points="1292.5,-460.92 1296,-470.92 1299.5,-460.92 1292.5,-460.92"/>
+<path fill="none" stroke="#63b8ff" d="M1209,-460.87C1209,-452.83 1209,-444.03 1209,-435.26"/>
+<polygon fill="none" stroke="#63b8ff" points="1205.5,-460.92 1209,-470.92 1212.5,-460.92 1205.5,-460.92"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDoc__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDoc__inherit__graph.svg
index 66dcedac74e..63e0f75a56a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDoc__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1printer_1_1StmtDoc__inherit__graph.svg
@@ -4,26 +4,26 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::script::printer::StmtDoc Pages: 1 -->
-<svg width="3035pt" height="442pt"
- viewBox="0.00 0.00 3035.00 442.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="2832pt" height="442pt"
+ viewBox="0.00 0.00 2832.00 442.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 438)">
 <title>tvm::script::printer::StmtDoc</title>
 <!-- Node1 -->
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:title="Reference type of StmtDocNode.">
-<polygon fill="#999999" stroke="transparent" points="1606,-223 1421,-223 1421,-137 1606,-137 1606,-223"/>
-<text text-anchor="start" x="1468.5" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="1489.5" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDoc</text>
-<text text-anchor="start" x="1512" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="1425.5" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1438.5" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="1438.5" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="1425.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="1438.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">StmtDoc()</text>
-<polygon fill="#666666" stroke="#666666" points="1421.5,-195 1421.5,-195 1606.5,-195 1606.5,-195 1421.5,-195"/>
-<polygon fill="#666666" stroke="#666666" points="1421.5,-180 1421.5,-180 1606.5,-180 1606.5,-180 1421.5,-180"/>
-<polygon fill="none" stroke="#666666" points="1421,-137 1421,-223 1606,-223 1606,-137 1421,-137"/>
+<polygon fill="#999999" stroke="transparent" points="1504,-223 1319,-223 1319,-137 1504,-137 1504,-223"/>
+<text text-anchor="start" x="1366.5" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="1387.5" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00">::StmtDoc</text>
+<text text-anchor="start" x="1410" y="-185" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1323.5" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1336.5" y="-170" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="1336.5" y="-159" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="1323.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="1336.5" y="-144" font-family="Helvetica,sans-Serif" font-size="10.00">StmtDoc()</text>
+<polygon fill="#666666" stroke="#666666" points="1319.5,-195 1319.5,-195 1504.5,-195 1504.5,-195 1319.5,-195"/>
+<polygon fill="#666666" stroke="#666666" points="1319.5,-180 1319.5,-180 1504.5,-180 1504.5,-180 1319.5,-180"/>
+<polygon fill="none" stroke="#666666" points="1319,-137 1319,-223 1504,-223 1504,-137 1319,-137"/>
 </a>
 </g>
 </g>
@@ -50,8 +50,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="M1410.61,-178.15C1141.68,-175.1 422.82,-161.36 193.5,-101 185.95,-99.01 178.29,-96.44 170.74,-93.51"/>
-<polygon fill="none" stroke="#63b8ff" points="1410.72,-181.65 1420.75,-178.26 1410.79,-174.65 1410.72,-181.65"/>
+<path fill="none" stroke="#63b8ff" d="M1308.57,-177.55C1054.45,-173.16 402.8,-156.64 193.5,-101 186.05,-99.02 178.49,-96.47 171.03,-93.58"/>
+<polygon fill="none" stroke="#63b8ff" points="1308.84,-181.06 1318.9,-177.73 1308.96,-174.06 1308.84,-181.06"/>
 </a>
 </g>
 </g>
@@ -78,8 +78,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="M1410.58,-176.86C1171.8,-171.07 586.08,-151.98 396.5,-101 389.05,-99 381.5,-96.43 374.05,-93.53"/>
-<polygon fill="none" stroke="#63b8ff" points="1410.57,-180.36 1420.65,-177.1 1410.74,-173.36 1410.57,-180.36"/>
+<path fill="none" stroke="#63b8ff" d="M1308.81,-176.02C1086.36,-168.77 566.32,-147.3 396.5,-101 389.15,-99 381.7,-96.45 374.34,-93.59"/>
+<polygon fill="none" stroke="#63b8ff" points="1308.75,-179.52 1318.86,-176.35 1308.98,-172.53 1308.75,-179.52"/>
 </a>
 </g>
 </g>
@@ -106,8 +106,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="M1410.63,-175C1204.93,-166.22 749.76,-142.65 599.5,-101 592.16,-98.97 584.71,-96.4 577.36,-93.52"/>
-<polygon fill="none" stroke="#63b8ff" points="1410.69,-178.51 1420.83,-175.43 1410.99,-171.51 1410.69,-178.51"/>
+<path fill="none" stroke="#63b8ff" d="M1308.7,-173.73C1121.03,-163.34 730.22,-137.98 599.5,-101 592.27,-98.95 584.92,-96.4 577.67,-93.55"/>
+<polygon fill="none" stroke="#63b8ff" points="1308.67,-177.23 1318.85,-174.29 1309.06,-170.24 1308.67,-177.23"/>
 </a>
 </g>
 </g>
@@ -134,8 +134,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="M1410.6,-178.77C1270.37,-175.98 1012.65,-161.99 802.5,-101 795.37,-98.93 788.14,-96.39 780.98,-93.55"/>
-<polygon fill="none" stroke="#63b8ff" points="1410.84,-182.27 1420.91,-178.96 1410.97,-175.27 1410.84,-182.27"/>
+<path fill="none" stroke="#63b8ff" d="M1308.61,-176.06C1185.78,-170.24 975.29,-152.85 802.5,-101 795.49,-98.9 788.36,-96.34 781.3,-93.52"/>
+<polygon fill="none" stroke="#63b8ff" points="1308.61,-179.57 1318.76,-176.53 1308.93,-172.57 1308.61,-179.57"/>
 </a>
 </g>
 </g>
@@ -162,8 +162,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="M1410.56,-172.38C1306.44,-163.56 1141.86,-143.78 1005.5,-101 998.7,-98.87 991.78,-96.33 984.93,-93.56"/>
-<polygon fill="none" stroke="#63b8ff" points="1410.5,-175.89 1420.75,-173.22 1411.08,-168.91 1410.5,-175.89"/>
+<path fill="none" stroke="#63b8ff" d="M1308.64,-166.94C1225.39,-155.36 1105.9,-134.58 1005.5,-101 998.93,-98.8 992.23,-96.26 985.58,-93.51"/>
+<polygon fill="none" stroke="#63b8ff" points="1308.23,-170.42 1318.61,-168.31 1309.18,-163.48 1308.23,-170.42"/>
 </a>
 </g>
 </g>
@@ -190,8 +190,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="M1411.06,-158.33C1351.1,-144.87 1274.45,-125.3 1208.5,-101 1202.36,-98.74 1196.1,-96.22 1189.85,-93.55"/>
-<polygon fill="none" stroke="#63b8ff" points="1410.39,-161.76 1420.92,-160.52 1411.91,-154.93 1410.39,-161.76"/>
+<path fill="none" stroke="#63b8ff" d="M1309.33,-141.77C1276.85,-129.4 1240.94,-115.15 1208.5,-101 1203.04,-98.62 1197.45,-96.1 1191.83,-93.52"/>
+<polygon fill="none" stroke="#63b8ff" points="1308.25,-145.1 1318.84,-145.38 1310.73,-138.56 1308.25,-145.1"/>
 </a>
 </g>
 </g>
@@ -218,8 +218,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="M1437.78,-131.44C1417.98,-119 1396.77,-105.69 1377.46,-93.56"/>
-<polygon fill="none" stroke="#63b8ff" points="1436.14,-134.54 1446.47,-136.9 1439.86,-128.62 1436.14,-134.54"/>
+<path fill="none" stroke="#63b8ff" d="M1371.83,-128.92C1362.56,-117.22 1352.78,-104.87 1343.82,-93.56"/>
+<polygon fill="none" stroke="#63b8ff" points="1369.2,-131.23 1378.15,-136.9 1374.68,-126.89 1369.2,-131.23"/>
 </a>
 </g>
 </g>
@@ -246,8 +246,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="M1513.5,-126.89C1513.5,-115.8 1513.5,-104.22 1513.5,-93.56"/>
-<polygon fill="none" stroke="#63b8ff" points="1510,-126.9 1513.5,-136.9 1517,-126.9 1510,-126.9"/>
+<path fill="none" stroke="#63b8ff" d="M1451.56,-128.92C1460.93,-117.22 1470.8,-104.87 1479.85,-93.56"/>
+<polygon fill="none" stroke="#63b8ff" points="1448.7,-126.9 1445.18,-136.9 1454.16,-131.28 1448.7,-126.9"/>
 </a>
 </g>
 </g>
@@ -274,8 +274,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="M1589.22,-131.44C1609.02,-119 1630.23,-105.69 1649.54,-93.56"/>
-<polygon fill="none" stroke="#63b8ff" points="1587.14,-128.62 1580.53,-136.9 1590.86,-134.54 1587.14,-128.62"/>
+<path fill="none" stroke="#63b8ff" d="M1513.71,-141.99C1546.48,-129.58 1582.75,-115.25 1615.5,-101 1620.96,-98.62 1626.55,-96.11 1632.17,-93.53"/>
+<polygon fill="none" stroke="#63b8ff" points="1512.24,-138.81 1504.12,-145.61 1514.71,-145.36 1512.24,-138.81"/>
 </a>
 </g>
 </g>
@@ -302,8 +302,8 @@
 <g id="edge12_Node000001_Node000013" class="edge">
 <title>Node1&#45;&gt;Node13</title>
 <g id="a_edge12_Node000001_Node000013"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1615.94,-158.33C1675.9,-144.87 1752.55,-125.3 1818.5,-101 1824.64,-98.74 1830.9,-96.22 1837.15,-93.55"/>
-<polygon fill="none" stroke="#63b8ff" points="1615.09,-154.93 1606.08,-160.52 1616.61,-161.76 1615.09,-154.93"/>
+<path fill="none" stroke="#63b8ff" d="M1514.2,-167.03C1597.67,-155.47 1717.69,-134.69 1818.5,-101 1825.07,-98.8 1831.77,-96.26 1838.42,-93.52"/>
+<polygon fill="none" stroke="#63b8ff" points="1513.65,-163.57 1504.21,-168.39 1514.59,-170.51 1513.65,-163.57"/>
 </a>
 </g>
 </g>
@@ -330,21 +330,21 @@
 <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="M1616.44,-172.38C1720.56,-163.56 1885.14,-143.78 2021.5,-101 2028.3,-98.87 2035.22,-96.33 2042.07,-93.56"/>
-<polygon fill="none" stroke="#63b8ff" points="1615.92,-168.91 1606.25,-173.22 1616.5,-175.89 1615.92,-168.91"/>
+<path fill="none" stroke="#63b8ff" d="M1514.29,-176.1C1637.29,-170.31 1848.3,-152.96 2021.5,-101 2028.51,-98.9 2035.64,-96.35 2042.7,-93.53"/>
+<polygon fill="none" stroke="#63b8ff" points="1513.96,-172.61 1504.13,-176.56 1514.28,-179.6 1513.96,-172.61"/>
 </a>
 </g>
 </g>
 <!-- Node15 -->
 <g id="Node000015" class="node">
 <title>Node15</title>
-<g id="a_Node000015"><a xlink:href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html" target="_top" xlink:title="Reference type of OpCallDocNode.">
+<g id="a_Node000015"><a xlink:href="classtvm_1_1script_1_1printer_1_1ReturnDoc.html" target="_top" xlink:title="Reference type of ReturnDocNode.">
 <polygon fill="white" stroke="transparent" points="2418,-93.5 2233,-93.5 2233,-7.5 2418,-7.5 2418,-93.5"/>
 <text text-anchor="start" x="2280.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="2297" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">::OpCallDoc</text>
+<text text-anchor="start" x="2297" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ReturnDoc</text>
 <text text-anchor="start" x="2324" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
 <text text-anchor="start" x="2237.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2250.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">OpCallDoc()</text>
+<text text-anchor="start" x="2250.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">ReturnDoc()</text>
 <text text-anchor="start" x="2237.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
 <text text-anchor="start" x="2250.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
 <text text-anchor="start" x="2250.5" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
@@ -358,27 +358,29 @@
 <g id="edge14_Node000001_Node000015" class="edge">
 <title>Node1&#45;&gt;Node15</title>
 <g id="a_edge14_Node000001_Node000015"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1616.4,-178.77C1756.63,-175.98 2014.35,-161.99 2224.5,-101 2231.63,-98.93 2238.86,-96.39 2246.02,-93.55"/>
-<polygon fill="none" stroke="#63b8ff" points="1616.03,-175.27 1606.09,-178.96 1616.16,-182.27 1616.03,-175.27"/>
+<path fill="none" stroke="#63b8ff" d="M1514.43,-173.73C1702.33,-163.36 2093.62,-138.02 2224.5,-101 2231.73,-98.95 2239.08,-96.4 2246.33,-93.55"/>
+<polygon fill="none" stroke="#63b8ff" points="1514.06,-170.25 1504.26,-174.29 1514.44,-177.24 1514.06,-170.25"/>
 </a>
 </g>
 </g>
 <!-- Node16 -->
 <g id="Node000016" class="node">
 <title>Node16</title>
-<g id="a_Node000016"><a xlink:href="classtvm_1_1script_1_1printer_1_1ReturnDoc.html" target="_top" xlink:title="Reference type of ReturnDocNode.">
-<polygon fill="white" stroke="transparent" points="2621,-93.5 2436,-93.5 2436,-7.5 2621,-7.5 2621,-93.5"/>
-<text text-anchor="start" x="2483.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="2500" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ReturnDoc</text>
-<text text-anchor="start" x="2527" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="2440.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">ReturnDoc()</text>
-<text text-anchor="start" x="2440.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2453.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2453.5" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="2436.5,-65.5 2436.5,-65.5 2621.5,-65.5 2621.5,-65.5 2436.5,-65.5"/>
-<polygon fill="#666666" stroke="#666666" points="2436.5,-50.5 2436.5,-50.5 2621.5,-50.5 2621.5,-50.5 2436.5,-50.5"/>
-<polygon fill="none" stroke="#666666" points="2436,-7.5 2436,-93.5 2621,-93.5 2621,-7.5 2436,-7.5"/>
+<g id="a_Node000016"><a xlink:href="classtvm_1_1script_1_1printer_1_1ScopeDoc.html" target="_top" xlink:title="Reference type of ScopeDocNode.">
+<polygon fill="white" stroke="transparent" points="2621,-101 2436,-101 2436,0 2621,0 2621,-101"/>
+<text text-anchor="start" x="2483.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="2501.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ScopeDoc</text>
+<text text-anchor="start" x="2527" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="2440.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2453.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">ScopeDoc()</text>
+<text text-anchor="start" x="2440.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2453.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">ScopeDoc()</text>
+<text text-anchor="start" x="2440.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2453.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2453.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="2436.5,-72.5 2436.5,-72.5 2621.5,-72.5 2621.5,-72.5 2436.5,-72.5"/>
+<polygon fill="#666666" stroke="#666666" points="2436.5,-57.5 2436.5,-57.5 2621.5,-57.5 2621.5,-57.5 2436.5,-57.5"/>
+<polygon fill="none" stroke="#666666" points="2436,0 2436,-101 2621,-101 2621,0 2436,0"/>
 </a>
 </g>
 </g>
@@ -386,29 +388,27 @@
 <g id="edge15_Node000001_Node000016" class="edge">
 <title>Node1&#45;&gt;Node16</title>
 <g id="a_edge15_Node000001_Node000016"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1616.37,-175C1822.07,-166.22 2277.24,-142.65 2427.5,-101 2434.84,-98.97 2442.29,-96.4 2449.64,-93.52"/>
-<polygon fill="none" stroke="#63b8ff" points="1616.01,-171.51 1606.17,-175.43 1616.31,-178.51 1616.01,-171.51"/>
+<path fill="none" stroke="#63b8ff" d="M1514.29,-176.03C1736.96,-168.79 2257.51,-147.34 2427.5,-101 2430.23,-100.26 2432.98,-99.44 2435.73,-98.55"/>
+<polygon fill="none" stroke="#63b8ff" points="1514.11,-172.53 1504.23,-176.35 1514.34,-179.53 1514.11,-172.53"/>
 </a>
 </g>
 </g>
 <!-- Node17 -->
 <g id="Node000017" class="node">
 <title>Node17</title>
-<g id="a_Node000017"><a xlink:href="classtvm_1_1script_1_1printer_1_1ScopeDoc.html" target="_top" xlink:title="Reference type of ScopeDocNode.">
-<polygon fill="white" stroke="transparent" points="2824,-101 2639,-101 2639,0 2824,0 2824,-101"/>
-<text text-anchor="start" x="2686.5" y="-88.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="2704.5" y="-77.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ScopeDoc</text>
-<text text-anchor="start" x="2730" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="2643.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2656.5" y="-47.5" font-family="Helvetica,sans-Serif" font-size="10.00">ScopeDoc()</text>
-<text text-anchor="start" x="2643.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2656.5" y="-32.5" font-family="Helvetica,sans-Serif" font-size="10.00">ScopeDoc()</text>
-<text text-anchor="start" x="2643.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2656.5" y="-17.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2656.5" y="-6.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="2639.5,-72.5 2639.5,-72.5 2824.5,-72.5 2824.5,-72.5 2639.5,-72.5"/>
-<polygon fill="#666666" stroke="#666666" points="2639.5,-57.5 2639.5,-57.5 2824.5,-57.5 2824.5,-57.5 2639.5,-57.5"/>
-<polygon fill="none" stroke="#666666" points="2639,0 2639,-101 2824,-101 2824,0 2639,0"/>
+<g id="a_Node000017"><a xlink:href="classtvm_1_1script_1_1printer_1_1WhileDoc.html" target="_top" xlink:title="Reference type of WhileDocNode.">
+<polygon fill="white" stroke="transparent" points="2824,-93.5 2639,-93.5 2639,-7.5 2824,-7.5 2824,-93.5"/>
+<text text-anchor="start" x="2686.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="start" x="2705.5" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">::WhileDoc</text>
+<text text-anchor="start" x="2730" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="2643.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2656.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">WhileDoc()</text>
+<text text-anchor="start" x="2643.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="2656.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="2656.5" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<polygon fill="#666666" stroke="#666666" points="2639.5,-65.5 2639.5,-65.5 2824.5,-65.5 2824.5,-65.5 2639.5,-65.5"/>
+<polygon fill="#666666" stroke="#666666" points="2639.5,-50.5 2639.5,-50.5 2824.5,-50.5 2824.5,-50.5 2639.5,-50.5"/>
+<polygon fill="none" stroke="#666666" points="2639,-7.5 2639,-93.5 2824,-93.5 2824,-7.5 2639,-7.5"/>
 </a>
 </g>
 </g>
@@ -416,36 +416,8 @@
 <g id="edge16_Node000001_Node000017" class="edge">
 <title>Node1&#45;&gt;Node17</title>
 <g id="a_edge16_Node000001_Node000017"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1616.42,-176.86C1855.2,-171.07 2440.92,-151.98 2630.5,-101 2633.23,-100.26 2635.98,-99.45 2638.74,-98.58"/>
-<polygon fill="none" stroke="#63b8ff" points="1616.26,-173.36 1606.35,-177.1 1616.43,-180.36 1616.26,-173.36"/>
-</a>
-</g>
-</g>
-<!-- Node18 -->
-<g id="Node000018" class="node">
-<title>Node18</title>
-<g id="a_Node000018"><a xlink:href="classtvm_1_1script_1_1printer_1_1WhileDoc.html" target="_top" xlink:title="Reference type of WhileDocNode.">
-<polygon fill="white" stroke="transparent" points="3027,-93.5 2842,-93.5 2842,-7.5 3027,-7.5 3027,-93.5"/>
-<text text-anchor="start" x="2889.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="start" x="2908.5" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">::WhileDoc</text>
-<text text-anchor="start" x="2933" y="-55.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="2846.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2859.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">WhileDoc()</text>
-<text text-anchor="start" x="2846.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="2859.5" y="-25.5" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="2859.5" y="-14.5" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<polygon fill="#666666" stroke="#666666" points="2842.5,-65.5 2842.5,-65.5 3027.5,-65.5 3027.5,-65.5 2842.5,-65.5"/>
-<polygon fill="#666666" stroke="#666666" points="2842.5,-50.5 2842.5,-50.5 3027.5,-50.5 3027.5,-50.5 2842.5,-50.5"/>
-<polygon fill="none" stroke="#666666" points="2842,-7.5 2842,-93.5 3027,-93.5 3027,-7.5 2842,-7.5"/>
-</a>
-</g>
-</g>
-<!-- Node1&#45;&gt;Node18 -->
-<g id="edge17_Node000001_Node000018" class="edge">
-<title>Node1&#45;&gt;Node18</title>
-<g id="a_edge17_Node000001_Node000018"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M1616.39,-178.15C1885.32,-175.1 2604.18,-161.36 2833.5,-101 2841.05,-99.01 2848.71,-96.44 2856.26,-93.51"/>
-<polygon fill="none" stroke="#63b8ff" points="1616.21,-174.65 1606.25,-178.26 1616.28,-181.65 1616.21,-174.65"/>
+<path fill="none" stroke="#63b8ff" d="M1514.52,-177.56C1768.84,-173.17 2421.03,-156.68 2630.5,-101 2637.95,-99.02 2645.51,-96.47 2652.97,-93.58"/>
+<polygon fill="none" stroke="#63b8ff" points="1514.11,-174.06 1504.17,-177.73 1514.23,-181.06 1514.11,-174.06"/>
 </a>
 </g>
 </g>
@@ -453,19 +425,19 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1script_1_1printer_1_1Doc.html" target="_top" xlink:title="Reference type of DocNode.">
-<polygon fill="white" stroke="transparent" points="1606,-349 1421,-349 1421,-259 1606,-259 1606,-349"/>
-<text text-anchor="start" x="1456" y="-337" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer::Doc</text>
-<text text-anchor="start" x="1512" y="-322" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="1425.5" y="-307" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
-<text text-anchor="start" x="1438.5" y="-307" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
-<text text-anchor="start" x="1438.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
-<text text-anchor="start" x="1425.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="1438.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
-<text text-anchor="start" x="1425.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
-<text text-anchor="start" x="1438.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
-<polygon fill="#666666" stroke="#666666" points="1421.5,-332 1421.5,-332 1606.5,-332 1606.5,-332 1421.5,-332"/>
-<polygon fill="#666666" stroke="#666666" points="1421.5,-317 1421.5,-317 1606.5,-317 1606.5,-317 1421.5,-317"/>
-<polygon fill="none" stroke="#666666" points="1421,-259 1421,-349 1606,-349 1606,-259 1421,-259"/>
+<polygon fill="white" stroke="transparent" points="1504,-349 1319,-349 1319,-259 1504,-259 1504,-349"/>
+<text text-anchor="start" x="1354" y="-337" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer::Doc</text>
+<text text-anchor="start" x="1410" y="-322" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1323.5" y="-307" font-family="Helvetica,sans-Serif" font-size="10.00">+</text>
+<text text-anchor="start" x="1336.5" y="-307" font-family="Helvetica,sans-Serif" font-size="10.00">TVM_FFI_DEFINE_OBJECT</text>
+<text text-anchor="start" x="1336.5" y="-296" font-family="Helvetica,sans-Serif" font-size="10.00">_REF_METHODS_NOTNULLABLE()</text>
+<text text-anchor="start" x="1323.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="1336.5" y="-281" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
+<text text-anchor="start" x="1323.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00">#</text>
+<text text-anchor="start" x="1336.5" y="-266" font-family="Helvetica,sans-Serif" font-size="10.00">Doc()</text>
+<polygon fill="#666666" stroke="#666666" points="1319.5,-332 1319.5,-332 1504.5,-332 1504.5,-332 1319.5,-332"/>
+<polygon fill="#666666" stroke="#666666" points="1319.5,-317 1319.5,-317 1504.5,-317 1504.5,-317 1319.5,-317"/>
+<polygon fill="none" stroke="#666666" points="1319,-259 1319,-349 1504,-349 1504,-259 1319,-259"/>
 </a>
 </g>
 </g>
@@ -473,8 +445,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="M1513.5,-248.72C1513.5,-240.21 1513.5,-231.53 1513.5,-223.35"/>
-<polygon fill="none" stroke="#63b8ff" points="1510,-248.96 1513.5,-258.96 1517,-248.96 1510,-248.96"/>
+<path fill="none" stroke="#63b8ff" d="M1411.5,-248.72C1411.5,-240.21 1411.5,-231.53 1411.5,-223.35"/>
+<polygon fill="none" stroke="#63b8ff" points="1408,-248.96 1411.5,-258.96 1415,-248.96 1408,-248.96"/>
 </a>
 </g>
 </g>
@@ -482,13 +454,13 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:title=" ">
-<polygon fill="white" stroke="transparent" points="1550.5,-434 1476.5,-434 1476.5,-385 1550.5,-385 1550.5,-434"/>
-<text text-anchor="start" x="1481.5" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
-<text text-anchor="start" x="1511.5" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<text text-anchor="start" x="1511.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polygon fill="#666666" stroke="#666666" points="1476.5,-416.5 1476.5,-416.5 1550.5,-416.5 1550.5,-416.5 1476.5,-416.5"/>
-<polygon fill="#666666" stroke="#666666" points="1476.5,-401.5 1476.5,-401.5 1550.5,-401.5 1550.5,-401.5 1476.5,-401.5"/>
-<polygon fill="none" stroke="#666666" points="1476.5,-385 1476.5,-434 1550.5,-434 1550.5,-385 1476.5,-385"/>
+<polygon fill="white" stroke="transparent" points="1448.5,-434 1374.5,-434 1374.5,-385 1448.5,-385 1448.5,-434"/>
+<text text-anchor="start" x="1379.5" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::ObjectRef</text>
+<text text-anchor="start" x="1409.5" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<text text-anchor="start" x="1409.5" y="-391.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polygon fill="#666666" stroke="#666666" points="1374.5,-416.5 1374.5,-416.5 1448.5,-416.5 1448.5,-416.5 1374.5,-416.5"/>
+<polygon fill="#666666" stroke="#666666" points="1374.5,-401.5 1374.5,-401.5 1448.5,-401.5 1448.5,-401.5 1374.5,-401.5"/>
+<polygon fill="none" stroke="#666666" points="1374.5,-385 1374.5,-434 1448.5,-434 1448.5,-385 1374.5,-385"/>
 </a>
 </g>
 </g>
@@ -496,8 +468,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="M1513.5,-374.62C1513.5,-366.56 1513.5,-357.84 1513.5,-349.39"/>
-<polygon fill="none" stroke="#63b8ff" points="1510,-374.75 1513.5,-384.76 1517,-374.76 1510,-374.75"/>
+<path fill="none" stroke="#63b8ff" d="M1411.5,-374.62C1411.5,-366.56 1411.5,-357.84 1411.5,-349.39"/>
+<polygon fill="none" stroke="#63b8ff" points="1408,-374.75 1411.5,-384.76 1415,-374.76 1408,-374.75"/>
 </a>
 </g>
 </g>
diff --git a/docs/reference/api/doxygen/doc_8h.html b/docs/reference/api/doxygen/doc_8h.html
index 99c4520150c..9dfc2f5fdac 100644
--- a/docs/reference/api/doxygen/doc_8h.html
+++ b/docs/reference/api/doxygen/doc_8h.html
@@ -282,12 +282,6 @@ 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_1script_1_1printer_1_1DocStringDoc.html">tvm::script::printer::DocStringDoc</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1DocStringDocNode.html" title="Doc that represents docstring.">DocStringDocNode</a>.  <a href="classtvm_1_1script_1_1printer_1_1DocStringDoc.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_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents call to an TIRX operator.  <a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.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_1script_1_1printer_1_1OpCallDoc.html">tvm::script::printer::OpCallDoc</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html" title="Doc that represents call to an TIRX operator.">OpCallDocNode</a>.  <a href="classtvm_1_1script_1_1printer_1_1OpCallDoc.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_1script_1_1printer_1_1NamespaceDocNode.html">tvm::script::printer::NamespaceDocNode</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A reference to a canonical script namespace.  <a href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/docs/reference/api/doxygen/doc_8h_source.html b/docs/reference/api/doxygen/doc_8h_source.html
index 6c8cd23d235..6c9d90bdfcb 100644
--- a/docs/reference/api/doxygen/doc_8h_source.html
+++ b/docs/reference/api/doxygen/doc_8h_source.html
@@ -1009,69 +1009,34 @@ $(document).ready(function() { init_codefold(0); });
 </div>
 <div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span> </div>
 <div class="foldopen" id="foldopen01360" data-start="{" data-end="};">
-<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html"> 1360</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">OpCallDocNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html">StmtDocNode</a> {</div>
+<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html"> 1360</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html">NamespaceDocNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">ExprDocNode</a> {</div>
 <div class="line"><a id="l01361" name="l01361"></a><span class="lineno"> 1361</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#adbcf4a3aabbe1d82f73fc2d5f6154f6b"> 1363</a></span>  <a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> <a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#adbcf4a3aabbe1d82f73fc2d5f6154f6b">callee</a>{ffi::UnsafeInit()};</div>
-<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa251921e11727010772291877807750a"> 1365</a></span>  ffi::Array&lt;Doc&gt; <a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa251921e11727010772291877807750a">args</a>;</div>
-<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ac5eaf7f682b39836acebf055f7c843ed"> 1367</a></span>  ffi::Optional&lt;DictDoc&gt; <a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ac5eaf7f682b39836acebf055f7c843ed">workspace</a>{std::nullopt};</div>
-<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ab587d4e63b73fc2411792cba3517b5ae"> 1369</a></span>  ffi::Optional&lt;DictDoc&gt; <a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ab587d4e63b73fc2411792cba3517b5ae">config</a>{std::nullopt};</div>
-<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a9463aa1e349fdaa77ee00318eda01047"> 1371</a></span>  ffi::Optional&lt;ExprDoc&gt; <a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a9463aa1e349fdaa77ee00318eda01047">dispatch</a>{std::nullopt};</div>
-<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span> </div>
-<div class="foldopen" id="foldopen01373" data-start="{" data-end="}">
-<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa711d33587526cd7b6e3e8c9c005653b"> 1373</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa711d33587526cd7b6e3e8c9c005653b">RegisterReflection</a>() {</div>
-<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span>    <span class="keyword">namespace </span>refl = tvm::ffi::reflection;</div>
-<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"> 1375</span>    refl::ObjectDef&lt;OpCallDocNode&gt;()</div>
-<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"> 1376</span>        .def_ro(<span class="stringliteral">&quot;callee&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#adbcf4a3aabbe1d82f73fc2d5f6154f6b">OpCallDocNode::callee</a>)</div>
-<div class="line"><a id="l01377" name="l01377"></a><span class="lineno"> 1377</span>        .def_ro(<span class="stringliteral">&quot;args&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa251921e11727010772291877807750a">OpCallDocNode::args</a>)</div>
-<div class="line"><a id="l01378" name="l01378"></a><span class="lineno"> 1378</span>        .def_ro(<span class="stringliteral">&quot;workspace&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ac5eaf7f682b39836acebf055f7c843ed">OpCallDocNode::workspace</a>)</div>
-<div class="line"><a id="l01379" name="l01379"></a><span class="lineno"> 1379</span>        .def_ro(<span class="stringliteral">&quot;config&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ab587d4e63b73fc2411792cba3517b5ae">OpCallDocNode::config</a>)</div>
-<div class="line"><a id="l01380" name="l01380"></a><span class="lineno"> 1380</span>        .def_ro(<span class="stringliteral">&quot;dispatch&quot;</span>, &amp;<a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a9463aa1e349fdaa77ee00318eda01047">OpCallDocNode::dispatch</a>);</div>
-<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"> 1381</span>  }</div>
-</div>
-<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"> 1382</span> </div>
-<div class="line"><a id="l01383" name="l01383"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a37c9f827e2e422759bce6978c7b11fc3"> 1383</a></span>  <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a37c9f827e2e422759bce6978c7b11fc3">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;script.printer.OpCallDoc&quot;</span>, <a class="code hl_class" href="classtvm_1_1script_1_1printer_ [...]
-<div class="line"><a id="l01384" name="l01384"></a><span class="lineno"> 1384</span>};</div>
-</div>
-<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"> 1385</span> </div>
-<div class="foldopen" id="foldopen01391" data-start="{" data-end="};">
-<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html"> 1391</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">OpCallDoc</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1StmtDoc.html">StmtDoc</a> {</div>
-<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l01401" name="l01401"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#ab5b4f91b550e6e9b43f8a5659604da42"> 1401</a></span>  TVM_DLL <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#ab5b4f91b550e6e9b43f8a5659604da42">OpCallDoc</a>(<a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> callee, ffi::Array&lt;Doc&gt;  [...]
-<div class="line"><a id="l01402" name="l01402"></a><span class="lineno"> 1402</span>                             ffi::Optional&lt;DictDoc&gt; config,</div>
-<div class="line"><a id="l01403" name="l01403"></a><span class="lineno"> 1403</span>                             ffi::Optional&lt;ExprDoc&gt; dispatch = std::nullopt);</div>
-<div class="line"><a id="l01404" name="l01404"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#a6ebc9be8e178115a68d47075669f32a7"> 1404</a></span>  <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#a6ebc9be8e178115a68d47075669f32a7">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">OpCallDoc</a>, <a class="code hl_class" href="clas [...]
-<div class="line"><a id="l01405" name="l01405"></a><span class="lineno"> 1405</span>};</div>
-</div>
-<div class="line"><a id="l01406" name="l01406"></a><span class="lineno"> 1406</span> </div>
-<div class="foldopen" id="foldopen01412" data-start="{" data-end="};">
-<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html"> 1412</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html">NamespaceDocNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html">ExprDocNode</a> {</div>
-<div class="line"><a id="l01413" name="l01413"></a><span class="lineno"> 1413</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l01415" name="l01415"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6"> 1415</a></span>  ffi::String <a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6">canonical_name</a>;</div>
-<div class="line"><a id="l01416" name="l01416"></a><span class="lineno"> 1416</span> </div>
-<div class="foldopen" id="foldopen01417" data-start="{" data-end="}">
-<div class="line"><a id="l01417" name="l01417"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a74205c9766e0ce8f1432dd543bed276d"> 1417</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a74205c9766e0ce8f1432dd543bed276d">RegisterReflection</a>() {</div>
-<div class="line"><a id="l01418" name="l01418"></a><span class="lineno"> 1418</span>    ffi::reflection::ObjectDef&lt;NamespaceDocNode&gt;().def_ro(<span class="stringliteral">&quot;canonical_name&quot;</span>,</div>
-<div class="line"><a id="l01419" name="l01419"></a><span class="lineno"> 1419</span>                                                          &amp;<a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6">NamespaceDocNode::canonical_name</a>);</div>
-<div class="line"><a id="l01420" name="l01420"></a><span class="lineno"> 1420</span>  }</div>
-</div>
-<div class="line"><a id="l01421" name="l01421"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a5a9df64c31f7f6898cc1993510766c3a"> 1421</a></span>  <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a5a9df64c31f7f6898cc1993510766c3a">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;script.printer.NamespaceDoc&quot;</span>, <a class="code hl_class" href="classtvm_1_1script_1_ [...]
-<div class="line"><a id="l01422" name="l01422"></a><span class="lineno"> 1422</span>};</div>
-</div>
-<div class="line"><a id="l01423" name="l01423"></a><span class="lineno"> 1423</span> </div>
-<div class="foldopen" id="foldopen01427" data-start="{" data-end="};">
-<div class="line"><a id="l01427" name="l01427"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html"> 1427</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html">NamespaceDoc</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> {</div>
-<div class="line"><a id="l01428" name="l01428"></a><span class="lineno"> 1428</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l01433" name="l01433"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#aa16a85483cb58dcdeed759480f606291"> 1433</a></span>  TVM_DLL <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#aa16a85483cb58dcdeed759480f606291">NamespaceDoc</a>(ffi::String canonical_name);</div>
-<div class="line"><a id="l01434" name="l01434"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#af682585e57a399696cfcdd6a49382e73"> 1434</a></span>  <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#af682585e57a399696cfcdd6a49382e73">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html">NamespaceDoc</a>, <a class="code hl_class [...]
-<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span>};</div>
-</div>
-<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"> 1436</span> </div>
-<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span>}  <span class="comment">// namespace printer</span></div>
-</div>
-<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span>}  <span class="comment">// namespace script</span></div>
-<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span>}  <span class="comment">// namespace tvm</span></div>
-<div class="line"><a id="l01440" name="l01440"></a><span class="lineno"> 1440</span> </div>
-<div class="line"><a id="l01441" name="l01441"></a><span class="lineno"> 1441</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_SCRIPT_PRINTER_DOC_H_</span></div>
+<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6"> 1363</a></span>  ffi::String <a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6">canonical_name</a>;</div>
+<div class="line"><a id="l01364" name="l01364"></a><span class="lineno"> 1364</span> </div>
+<div class="foldopen" id="foldopen01365" data-start="{" data-end="}">
+<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a74205c9766e0ce8f1432dd543bed276d"> 1365</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a74205c9766e0ce8f1432dd543bed276d">RegisterReflection</a>() {</div>
+<div class="line"><a id="l01366" name="l01366"></a><span class="lineno"> 1366</span>    ffi::reflection::ObjectDef&lt;NamespaceDocNode&gt;().def_ro(<span class="stringliteral">&quot;canonical_name&quot;</span>,</div>
+<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"> 1367</span>                                                          &amp;<a class="code hl_variable" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6">NamespaceDocNode::canonical_name</a>);</div>
+<div class="line"><a id="l01368" name="l01368"></a><span class="lineno"> 1368</span>  }</div>
+</div>
+<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a5a9df64c31f7f6898cc1993510766c3a"> 1369</a></span>  <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a5a9df64c31f7f6898cc1993510766c3a">TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a>(<span class="stringliteral">&quot;script.printer.NamespaceDoc&quot;</span>, <a class="code hl_class" href="classtvm_1_1script_1_ [...]
+<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"> 1370</span>};</div>
+</div>
+<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span> </div>
+<div class="foldopen" id="foldopen01375" data-start="{" data-end="};">
+<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html"> 1375</a></span><span class="keyword">class </span><a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html">NamespaceDoc</a> : <span class="keyword">public</span> <a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html">ExprDoc</a> {</div>
+<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"> 1376</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#aa16a85483cb58dcdeed759480f606291"> 1381</a></span>  TVM_DLL <span class="keyword">explicit</span> <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#aa16a85483cb58dcdeed759480f606291">NamespaceDoc</a>(ffi::String canonical_name);</div>
+<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"><a class="line" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#af682585e57a399696cfcdd6a49382e73"> 1382</a></span>  <a class="code hl_function" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#af682585e57a399696cfcdd6a49382e73">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a>(<a class="code hl_class" href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html">NamespaceDoc</a>, <a class="code hl_class [...]
+<div class="line"><a id="l01383" name="l01383"></a><span class="lineno"> 1383</span>};</div>
+</div>
+<div class="line"><a id="l01384" name="l01384"></a><span class="lineno"> 1384</span> </div>
+<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"> 1385</span>}  <span class="comment">// namespace printer</span></div>
+</div>
+<div class="line"><a id="l01386" name="l01386"></a><span class="lineno"> 1386</span>}  <span class="comment">// namespace script</span></div>
+<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"> 1387</span>}  <span class="comment">// namespace tvm</span></div>
+<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span> </div>
+<div class="line"><a id="l01389" name="l01389"></a><span class="lineno"> 1389</span><span class="preprocessor">#endif  </span><span class="comment">// TVM_SCRIPT_PRINTER_DOC_H_</span></div>
 <div class="ttc" id="aclasstvm_1_1FloatImm_html"><div class="ttname"><a href="classtvm_1_1FloatImm.html">tvm::FloatImm</a></div><div class="ttdoc">Managed reference class to FloatImmNode.</div><div class="ttdef"><b>Definition</b> expr.h:232</div></div>
 <div class="ttc" id="aclasstvm_1_1IntImm_html"><div class="ttname"><a href="classtvm_1_1IntImm.html">tvm::IntImm</a></div><div class="ttdoc">Managed reference class to IntImmNode.</div><div class="ttdef"><b>Definition</b> expr.h:152</div></div>
 <div class="ttc" id="aclasstvm_1_1IntImm_html_a232b7695930771cd5f3cf7723d5f80a5"><div class="ttname"><a href="classtvm_1_1IntImm.html#a232b7695930771cd5f3cf7723d5f80a5">tvm::IntImm::Int64</a></div><div class="ttdeci">static IntImm Int64(ffi::BigInt value, Location loc=UnknownLoc())</div><div class="ttdoc">Construct a scalar int64 constant.</div><div class="ttdef"><b>Definition</b> expr.h:195</div></div>
@@ -1267,24 +1232,13 @@ $(document).ready(function() { init_codefold(0); });
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1LiteralDoc_html_adf5050e0e390f618d0badcd56a2ecf66"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1LiteralDoc.html#adf5050e0e390f618d0badcd56a2ecf66">tvm::script::printer::LiteralDoc::Float</a></div><div class="ttdeci">static LiteralDoc Float(double v, const ffi::Optional&lt; AccessPath &gt; &amp;p)</div><div class="ttdoc">Create a LiteralDoc to represent float.</div><div class="ttdef"><b>Definition</b> doc.h:295</div></div>
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1LiteralDoc_html_af50fe059e494e0e68395cd49abcd0b8f"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1LiteralDoc.html#af50fe059e494e0e68395cd49abcd0b8f">tvm::script::printer::LiteralDoc::None</a></div><div class="ttdeci">static LiteralDoc None(const ffi::Optional&lt; AccessPath &gt; &amp;p)</div><div class="ttdoc">Create a LiteralDoc to represent None/null/empty value.</div><div class="ttdef"><b>Definition</b> doc.h:261</d [...]
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1LiteralDoc_html_aff9ffe0ea5415919afa1fdc8f85a9867"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1LiteralDoc.html#aff9ffe0ea5415919afa1fdc8f85a9867">tvm::script::printer::LiteralDoc::Str</a></div><div class="ttdeci">static LiteralDoc Str(const ffi::String &amp;v, const ffi::Optional&lt; AccessPath &gt; &amp;p)</div><div class="ttdoc">Create a LiteralDoc to represent string.</div><div class="ttdef"><b>Definition</b> doc [...]
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDocNode_html"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html">tvm::script::printer::NamespaceDocNode</a></div><div class="ttdoc">A reference to a canonical script namespace.</div><div class="ttdef"><b>Definition</b> doc.h:1412</div></div>
+<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDocNode_html"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html">tvm::script::printer::NamespaceDocNode</a></div><div class="ttdoc">A reference to a canonical script namespace.</div><div class="ttdef"><b>Definition</b> doc.h:1360</div></div>
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDocNode_html_a5a9df64c31f7f6898cc1993510766c3a"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a5a9df64c31f7f6898cc1993510766c3a">tvm::script::printer::NamespaceDocNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;script.printer.NamespaceDoc&quot;, NamespaceDocNode, ExprDocNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDocNode_html_a74205c9766e0ce8f1432dd543bed276d"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a74205c9766e0ce8f1432dd543bed276d">tvm::script::printer::NamespaceDocNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> doc.h:1417</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDocNode_html_aff1146b3556123ae0384c7ff0976aac6"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6">tvm::script::printer::NamespaceDocNode::canonical_name</a></div><div class="ttdeci">ffi::String canonical_name</div><div class="ttdoc">The namespace name before alias resolution.</div><div class="ttdef"><b>Definition</b> doc.h:1415</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDoc_html"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html">tvm::script::printer::NamespaceDoc</a></div><div class="ttdoc">An owning reference to a deferred script namespace.</div><div class="ttdef"><b>Definition</b> doc.h:1427</div></div>
+<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDocNode_html_a74205c9766e0ce8f1432dd543bed276d"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#a74205c9766e0ce8f1432dd543bed276d">tvm::script::printer::NamespaceDocNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> doc.h:1365</div></div>
+<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDocNode_html_aff1146b3556123ae0384c7ff0976aac6"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6">tvm::script::printer::NamespaceDocNode::canonical_name</a></div><div class="ttdeci">ffi::String canonical_name</div><div class="ttdoc">The namespace name before alias resolution.</div><div class="ttdef"><b>Definition</b> doc.h:1363</div></div>
+<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDoc_html"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html">tvm::script::printer::NamespaceDoc</a></div><div class="ttdoc">An owning reference to a deferred script namespace.</div><div class="ttdef"><b>Definition</b> doc.h:1375</div></div>
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDoc_html_aa16a85483cb58dcdeed759480f606291"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#aa16a85483cb58dcdeed759480f606291">tvm::script::printer::NamespaceDoc::NamespaceDoc</a></div><div class="ttdeci">NamespaceDoc(ffi::String canonical_name)</div><div class="ttdoc">Construct a deferred namespace reference.</div></div>
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1NamespaceDoc_html_af682585e57a399696cfcdd6a49382e73"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1NamespaceDoc.html#af682585e57a399696cfcdd6a49382e73">tvm::script::printer::NamespaceDoc::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(NamespaceDoc, ExprDoc, NamespaceDocNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDocNode_html"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html">tvm::script::printer::OpCallDocNode</a></div><div class="ttdoc">Doc that represents call to an TIRX operator.</div><div class="ttdef"><b>Definition</b> doc.h:1360</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDocNode_html_a37c9f827e2e422759bce6978c7b11fc3"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a37c9f827e2e422759bce6978c7b11fc3">tvm::script::printer::OpCallDocNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;script.printer.OpCallDoc&quot;, OpCallDocNode, StmtDocNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDocNode_html_a9463aa1e349fdaa77ee00318eda01047"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a9463aa1e349fdaa77ee00318eda01047">tvm::script::printer::OpCallDocNode::dispatch</a></div><div class="ttdeci">ffi::Optional&lt; ExprDoc &gt; dispatch</div><div class="ttdoc">The optional dispatch variant of this op call.</div><div class="ttdef"><b>Definition</b> doc.h:1371</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDocNode_html_aa251921e11727010772291877807750a"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa251921e11727010772291877807750a">tvm::script::printer::OpCallDocNode::args</a></div><div class="ttdeci">ffi::Array&lt; Doc &gt; args</div><div class="ttdoc">The positional arguments.</div><div class="ttdef"><b>Definition</b> doc.h:1365</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDocNode_html_aa711d33587526cd7b6e3e8c9c005653b"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#aa711d33587526cd7b6e3e8c9c005653b">tvm::script::printer::OpCallDocNode::RegisterReflection</a></div><div class="ttdeci">static void RegisterReflection()</div><div class="ttdef"><b>Definition</b> doc.h:1373</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDocNode_html_ab587d4e63b73fc2411792cba3517b5ae"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ab587d4e63b73fc2411792cba3517b5ae">tvm::script::printer::OpCallDocNode::config</a></div><div class="ttdeci">ffi::Optional&lt; DictDoc &gt; config</div><div class="ttdoc">The config of this op call.</div><div class="ttdef"><b>Definition</b> doc.h:1369</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDocNode_html_ac5eaf7f682b39836acebf055f7c843ed"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ac5eaf7f682b39836acebf055f7c843ed">tvm::script::printer::OpCallDocNode::workspace</a></div><div class="ttdeci">ffi::Optional&lt; DictDoc &gt; workspace</div><div class="ttdoc">The workspace of this op call.</div><div class="ttdef"><b>Definition</b> doc.h:1367</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDocNode_html_adbcf4a3aabbe1d82f73fc2d5f6154f6b"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#adbcf4a3aabbe1d82f73fc2d5f6154f6b">tvm::script::printer::OpCallDocNode::callee</a></div><div class="ttdeci">ExprDoc callee</div><div class="ttdoc">The callee of this function call.</div><div class="ttdef"><b>Definition</b> doc.h:1363</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDoc_html"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html">tvm::script::printer::OpCallDoc</a></div><div class="ttdoc">Reference type of OpCallDocNode.</div><div class="ttdef"><b>Definition</b> doc.h:1391</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDoc_html_a6ebc9be8e178115a68d47075669f32a7"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#a6ebc9be8e178115a68d47075669f32a7">tvm::script::printer::OpCallDoc::TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE</a></div><div class="ttdeci">TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(OpCallDoc, StmtDoc, OpCallDocNode)</div></div>
-<div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OpCallDoc_html_ab5b4f91b550e6e9b43f8a5659604da42"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#ab5b4f91b550e6e9b43f8a5659604da42">tvm::script::printer::OpCallDoc::OpCallDoc</a></div><div class="ttdeci">OpCallDoc(ExprDoc callee, ffi::Array&lt; Doc &gt; args, ffi::Optional&lt; DictDoc &gt; workspace, ffi::Optional&lt; DictDoc &gt; config, ffi::Optional&lt; ExprDoc &gt; dispatch=std::nullopt)</div><div cl [...]
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OperationDocNode_html"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OperationDocNode.html">tvm::script::printer::OperationDocNode</a></div><div class="ttdoc">Doc that represents operation.</div><div class="ttdef"><b>Definition</b> doc.h:536</div></div>
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OperationDocNode_html_a28358416397c95540a48852710c17385"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OperationDocNode.html#a28358416397c95540a48852710c17385">tvm::script::printer::OperationDocNode::TVM_FFI_DECLARE_OBJECT_INFO_FINAL</a></div><div class="ttdeci">TVM_FFI_DECLARE_OBJECT_INFO_FINAL(&quot;script.printer.OperationDoc&quot;, OperationDocNode, ExprDocNode)</div></div>
 <div class="ttc" id="aclasstvm_1_1script_1_1printer_1_1OperationDocNode_html_a2d6086cff6613d467c7606a1a71c7e63"><div class="ttname"><a href="classtvm_1_1script_1_1printer_1_1OperationDocNode.html#a2d6086cff6613d467c7606a1a71c7e63">tvm::script::printer::OperationDocNode::operands</a></div><div class="ttdeci">ffi::Array&lt; ExprDoc &gt; operands</div><div class="ttdoc">Operands of this expression.</div><div class="ttdef"><b>Definition</b> doc.h:580</div></div>
diff --git a/docs/reference/api/doxygen/functions_a.html b/docs/reference/api/doxygen/functions_a.html
index ed19fefb325..d17564bb01c 100644
--- a/docs/reference/api/doxygen/functions_a.html
+++ b/docs/reference/api/doxygen/functions_a.html
@@ -115,7 +115,7 @@ $(function() {
 <li>alpha&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1LeakyReluAttrs.html#ad391f46f46531b0053f70ab2042ac1e0">tvm::relax::LeakyReluAttrs</a></li>
 <li>Analyzer()&#160;:&#160;<a class="el" href="classtvm_1_1sym_1_1Analyzer.html#a22d86e55cc1b339ba90f04c9d49bce77">tvm::sym::Analyzer</a>, <a class="el" href="classtvm_1_1sym_1_1Z3Prover.html#a88d594816df596eed10643082b0d0805">tvm::sym::Z3Prover</a></li>
 <li>AnalyzerObj()&#160;:&#160;<a class="el" href="classtvm_1_1sym_1_1AnalyzerObj.html#aca86b9c3fdd851c0d094450bbb8f9459">tvm::sym::AnalyzerObj</a>, <a class="el" href="classtvm_1_1sym_1_1CanonicalSimplifier.html#ab502b81f91a3692606541f1ec44911de">tvm::sym::CanonicalSimplifier</a>, <a class="el" href="classtvm_1_1sym_1_1ConstIntBoundAnalyzer.html#ab502b81f91a3692606541f1ec44911de">tvm::sym::ConstIntBoundAnalyzer</a>, <a class="el" href="classtvm_1_1sym_1_1IntSetAnalyzer.html#ab502b81f91a3 [...]
-<li>And()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1And.html#a41a71a1db6bcf32bc0d94bb1684d959c">tvm::prim::And</a></li>
+<li>And()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1And.html#ae6c2c33f3bbd04ec0f9e80beb06cac48">tvm::prim::And</a></li>
 <li>AndNode()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1AndNode.html#a79b06dadaf22214c79c2b14c08f70f8a">tvm::prim::AndNode</a></li>
 <li>AndPattern()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1AndPattern.html#a027c47e6b406c0412ec0fe313838a75d">tvm::relax::AndPattern</a></li>
 <li>Annotate()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#ac54076d59c43238501c609768448b8e6">tvm::s_tir::ScheduleNode</a></li>
@@ -126,7 +126,7 @@ $(function() {
 <li>annotations&#160;:&#160;<a class="el" href="classtvm_1_1ForNode.html#ab9ae1f41c715c0a8c8dcdcf3b4c9823f">tvm::ForNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1SBlockNode.html#ae70f381c587a0a085367e74309ebfe2f">tvm::s_tir::SBlockNode</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1s__tir_1_1SBlockFrameNode.html#a5238ce3fae21d21fc62330c207cf08e2">tvm::script::ir_builder::s_tir::SBlockFrameNode</a></li>
 <li>AnyType()&#160;:&#160;<a class="el" href="classtvm_1_1AnyType.html#aa6f0d2a293f42367dbbca4faf18465ed">tvm::AnyType</a></li>
 <li>Append()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1TraceNode.html#a93902e5023c347080e3b6c593f6c3416">tvm::s_tir::TraceNode</a></li>
-<li>Apply()&#160;:&#160;<a class="el" href="classtvm_1_1LambdaExprNode.html#ac9f3da9a6668b480a2abb8321cf5c682">tvm::LambdaExprNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1MeasureCallbackNode.html#a1315d1f34b41f106b2947eb9497e6661">tvm::s_tir::meta_schedule::MeasureCallbackNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1MutatorNode.html#af48a9ed250598032967394ef661e55c6">tvm::s_tir::meta_schedule::MutatorNode</a>, <a class="el" href="classtvm [...]
+<li>Apply()&#160;:&#160;<a class="el" href="classtvm_1_1LambdaExprNode.html#ac9f3da9a6668b480a2abb8321cf5c682">tvm::LambdaExprNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1MeasureCallbackNode.html#a1315d1f34b41f106b2947eb9497e6661">tvm::s_tir::meta_schedule::MeasureCallbackNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1MutatorNode.html#af48a9ed250598032967394ef661e55c6">tvm::s_tir::meta_schedule::MutatorNode</a>, <a class="el" href="classtvm [...]
 <li>apply_softmax&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1MultiboxTransformLocAttrs.html#a2edaf8d654ebb18f47b4a3ef2e6810f4">tvm::relax::MultiboxTransformLocAttrs</a></li>
 <li>ApplyCustomRule()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1ScheduleRule.html#a41980394c9b3c2add7969b99cb9971a6">tvm::s_tir::meta_schedule::ScheduleRule</a></li>
 <li>ApplyJSONToSchedule()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1Trace.html#a8fa54d5d3ba0fdad42544432eacf0c69">tvm::s_tir::Trace</a></li>
@@ -135,7 +135,7 @@ $(function() {
 <li>arg_types&#160;:&#160;<a class="el" href="classtvm_1_1FuncTypeNode.html#aa8e067bd61ced30bc55f637f4792aef4">tvm::FuncTypeNode</a></li>
 <li>ArgInfo()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1ArgInfo.html#a986a0662c8dafbc4ba7c6a48d721a3fb">tvm::s_tir::meta_schedule::ArgInfo</a></li>
 <li>ArgKind&#160;:&#160;<a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#ad009411831e6f77c97ea9bf65e88ba6b">tvm::runtime::vm::Instruction</a></li>
-<li>args&#160;:&#160;<a class="el" href="classtvm_1_1CallNode.html#a323af62ed5243b5db00eb1832f842a1c">tvm::CallNode</a>, <a class="el" href="classtvm_1_1RegionStmtNode.html#aa0ff83b20975a305cff8622fcfed9cbe">tvm::RegionStmtNode</a>, <a class="el" href="classtvm_1_1relax_1_1CallPatternNode.html#a747a5214b15a6288560fdd359eeb7c75">tvm::relax::CallPatternNode</a>, <a class="el" href="classtvm_1_1relax_1_1SameShapeConstraintNode.html#ac5f5eb8f9a7e1f83966726767fec6568">tvm::relax::SameShapeCon [...]
+<li>args&#160;:&#160;<a class="el" href="classtvm_1_1CallNode.html#a323af62ed5243b5db00eb1832f842a1c">tvm::CallNode</a>, <a class="el" href="classtvm_1_1RegionStmtNode.html#aa0ff83b20975a305cff8622fcfed9cbe">tvm::RegionStmtNode</a>, <a class="el" href="classtvm_1_1relax_1_1CallPatternNode.html#a747a5214b15a6288560fdd359eeb7c75">tvm::relax::CallPatternNode</a>, <a class="el" href="classtvm_1_1relax_1_1SameShapeConstraintNode.html#ac5f5eb8f9a7e1f83966726767fec6568">tvm::relax::SameShapeCon [...]
 <li>args_info&#160;:&#160;<a class="el" href="classtvm_1_1OpNode.html#a1106cc90ca7823f513807317116b87e0">tvm::OpNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1MeasureCandidateNode.html#a3eaf9e7d35f07938f40ae6b056fd9522">tvm::s_tir::meta_schedule::MeasureCandidateNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1RunnerInputNode.html#adda3434c59e17fe2b9159ac1e0b105e4">tvm::s_tir::meta_schedule::RunnerInputNode</a>, <a class="el" href="classtvm_1_1 [...]
 <li>artifact_path&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1BuilderResultNode.html#a6b42b9c07eafa45985402eac9379b380">tvm::s_tir::meta_schedule::BuilderResultNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1RunnerInputNode.html#aa654ac5e47a68b46e70271d1652188ee">tvm::s_tir::meta_schedule::RunnerInputNode</a></li>
 <li>AsCondition()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DFConstraintNode.html#a3514ef6fe106812d23d06463faae9d7e">tvm::relax::DFConstraintNode</a>, <a class="el" href="classtvm_1_1relax_1_1SameShapeConstraintNode.html#a15a1ed26b5e2590d87fee3d1a1601072">tvm::relax::SameShapeConstraintNode</a></li>
diff --git a/docs/reference/api/doxygen/functions_c.html b/docs/reference/api/doxygen/functions_c.html
index 29f4670c9e0..b9258e06433 100644
--- a/docs/reference/api/doxygen/functions_c.html
+++ b/docs/reference/api/doxygen/functions_c.html
@@ -76,10 +76,10 @@ $(function() {
 <li>CacheInplace()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#a09f1cd626bf8514c3e7d8393039d5c0e">tvm::s_tir::ScheduleNode</a></li>
 <li>CacheRead()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#a1859bce31d9f5bed202ca90e9b6ab85d">tvm::s_tir::ScheduleNode</a></li>
 <li>CacheWrite()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#adb8919ca972244ea4eb13e9e5e4063df">tvm::s_tir::ScheduleNode</a></li>
-<li>Call()&#160;:&#160;<a class="el" href="classtvm_1_1Call.html#a9ea62a2cf30af9dd03892d9b7ac9e3de">tvm::Call</a>, <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#a70b9e9c1632058a9bfbaecb00a2926c2">tvm::runtime::vm::Instruction</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a84661ae5560b5daf2084443fb8c93e1d">tvm::script::printer::ExprDocNode</a></li>
+<li>Call()&#160;:&#160;<a class="el" href="classtvm_1_1Call.html#a26304eac4f5299ac4b4862105a9f5cd5">tvm::Call</a>, <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#a70b9e9c1632058a9bfbaecb00a2926c2">tvm::runtime::vm::Instruction</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a84661ae5560b5daf2084443fb8c93e1d">tvm::script::printer::ExprDocNode</a></li>
 <li>callbacks&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a45f552bb19d593f4ecc4b3b5d69cf8dc">tvm::script::ir_builder::IRBuilderFrameNode</a>, <a class="el" href="classtvm_1_1tirx_1_1DispatchContextNode.html#a3e48b15d23856ba7c084531dae51fb7b">tvm::tirx::DispatchContextNode</a></li>
 <li>CallDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1CallDoc.html#ae26a9378550bb5750464fd299b33e9ed">tvm::script::printer::CallDoc</a></li>
-<li>callee&#160;:&#160;<a class="el" href="classtvm_1_1CallSiteLocNode.html#a40365565ed92a9de7a0b2023befbc306">tvm::CallSiteLocNode</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#afd99b131a9accf85284b528203e71413">tvm::script::printer::CallDocNode</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#adbcf4a3aabbe1d82f73fc2d5f6154f6b">tvm::script::printer::OpCallDocNode</a></li>
+<li>callee&#160;:&#160;<a class="el" href="classtvm_1_1CallSiteLocNode.html#a40365565ed92a9de7a0b2023befbc306">tvm::CallSiteLocNode</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#afd99b131a9accf85284b528203e71413">tvm::script::printer::CallDocNode</a></li>
 <li>caller&#160;:&#160;<a class="el" href="classtvm_1_1CallSiteLocNode.html#af6317bd3ebd9e9c2a8d9e39d91cfafe9">tvm::CallSiteLocNode</a></li>
 <li>CallNode()&#160;:&#160;<a class="el" href="classtvm_1_1CallNode.html#adf837eb3faa5535c97311eb0f2ccb0e0">tvm::CallNode</a></li>
 <li>CallPacked()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1SessionObj.html#af5afdb77fe43ac0591c872648ee820d4">tvm::runtime::SessionObj</a></li>
@@ -117,7 +117,7 @@ $(function() {
 <li>ClearDispatch()&#160;:&#160;<a class="el" href="classtvm_1_1ObjectFunctor_3_01R_07NodeArg_00_01Args_8_8_8_08_4.html#a386da1d439515ecf52b8dddde6b178dd">tvm::ObjectFunctor&lt; R(NodeArg, Args...)&gt;</a></li>
 <li>clip&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1MultiboxTransformLocAttrs.html#a72744968ebdca190d8c51ab5ac5d6e2c">tvm::relax::MultiboxTransformLocAttrs</a></li>
 <li>Clone()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1MutatorNode.html#aae3e2b8f500bcb9a417dfdd2cf2f9d88">tvm::s_tir::meta_schedule::MutatorNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1PostprocNode.html#af5cf3bb5b41bb579661916a6f3ec1200">tvm::s_tir::meta_schedule::PostprocNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1PyMutatorNode.html#a20b39ff62a8f6963f0a07c9f1530d6e6">tvm::s_tir::meta_schedule::PyMutatorNode [...]
-<li>CmpOpNode()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1CmpOpNode.html#aa0067945121c62c729074e2567a971a1">tvm::prim::CmpOpNode&lt; T &gt;</a></li>
+<li>CmpOpNode()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1CmpOpNode.html#a98e606d5a175cf0c9e2b1246c1979110">tvm::prim::CmpOpNode&lt; T &gt;</a></li>
 <li>code()&#160;:&#160;<a class="el" href="classtvm_1_1PrimType.html#a0d4b4cdc6d1307df9540202d86fb6f5e">tvm::PrimType</a></li>
 <li>coeff&#160;:&#160;<a class="el" href="classtvm_1_1sym_1_1ModularSetNode.html#a7104eb112d27fb5b026d7f051463fc00">tvm::sym::ModularSetNode</a></li>
 <li>combiner&#160;:&#160;<a class="el" href="classtvm_1_1te_1_1ReduceNode.html#a9908b5a5102d5fa15bbca52125c4b901">tvm::te::ReduceNode</a></li>
@@ -136,7 +136,6 @@ $(function() {
 <li>Concrete()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1Schedule.html#a201df3b4dea486314be5ed26cc283b27">tvm::s_tir::Schedule</a></li>
 <li>cond&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1IfExprNode.html#a6fe48357f17d2a412839db1e72308139">tvm::relax::IfExprNode</a>, <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#a0a9bcefef97c5a7fd11a1dc5103669a2">tvm::runtime::vm::Instruction</a></li>
 <li>condition&#160;:&#160;<a class="el" href="classtvm_1_1AssertStmtNode.html#a42219a8d7a570a32b37fb4c1dd705a03">tvm::AssertStmtNode</a>, <a class="el" href="classtvm_1_1IfNode.html#a4e77795d3f6677cf272cbedac0fd70cd">tvm::IfNode</a>, <a class="el" href="classtvm_1_1prim_1_1SelectNode.html#a7be5da5d136256b91131ace2e5c55cb9">tvm::prim::SelectNode</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1ir_1_1AssertFrameNode.html#ae23a7e2026a82b0707302f4e3b2babcd">tvm::script::ir_build [...]
-<li>config&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ab587d4e63b73fc2411792cba3517b5ae">tvm::script::printer::OpCallDocNode</a></li>
 <li>Config&#160;:&#160;<a class="el" href="classtvm_1_1TargetTagRegistry.html#a6971395bfc555f734aac2e38ef0cdd50">tvm::TargetTagRegistry</a></li>
 <li>config&#160;:&#160;<a class="el" href="classtvm_1_1transform_1_1PassContextNode.html#a3eefdea0d7b623abd48b2fb3341631a5">tvm::transform::PassContextNode</a></li>
 <li>ConfigMap&#160;:&#160;<a class="el" href="classtvm_1_1ConfigSchema.html#af15d53ca8f6383ebf23fbec5dd684d5d">tvm::ConfigSchema</a></li>
@@ -154,17 +153,17 @@ $(function() {
 <li>Continue()&#160;:&#160;<a class="el" href="classtvm_1_1Continue.html#ac8c135897f6026ccf33c8d8c02ff8827">tvm::Continue</a></li>
 <li>ContinueDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1ContinueDoc.html#a3cd20ba5a6587b7d19bfc72e451985bb">tvm::script::printer::ContinueDoc</a></li>
 <li>ConvertConstant()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1ExecBuilderNode.html#ac0323caf936e8dc48bcffb6e04a825e8">tvm::relax::ExecBuilderNode</a></li>
-<li>ConvertFallbackValue()&#160;:&#160;<a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a6f4773ee3e012981e082c428d06c5b4d">tvm::ffi::TypeTraits&lt; Expr &gt;</a>, <a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01FloatImm_01_4.html#a2d1f8eb0eaebb896586a4f6914ef1596">tvm::ffi::TypeTraits&lt; FloatImm &gt;</a>, <a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">tvm::ffi::TypeTraits&lt; IntExpr &gt;</a>, <a c [...]
+<li>ConvertFallbackValue()&#160;:&#160;<a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a3ac03c8423e9d3ac76c7f81b80623eb9">tvm::ffi::TypeTraits&lt; Expr &gt;</a>, <a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01FloatImm_01_4.html#a2d1f8eb0eaebb896586a4f6914ef1596">tvm::ffi::TypeTraits&lt; FloatImm &gt;</a>, <a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">tvm::ffi::TypeTraits&lt; IntExpr &gt;</a>, <a c [...]
 <li>coord_start&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1NonMaximumSuppressionAttrs.html#ae7348ffbe5e56d404d819c33b0b1ee17">tvm::relax::NonMaximumSuppressionAttrs</a></li>
 <li>coordinate_transformation_mode&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1Resize2DAttrs.html#ae06df270d320a24daf50f8bf4785d356">tvm::relax::Resize2DAttrs</a>, <a class="el" href="structtvm_1_1relax_1_1Resize3DAttrs.html#aa8fa3788651d5b45ca9cf43e810ede9f">tvm::relax::Resize3DAttrs</a></li>
 <li>Copy()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#a9f97ca31fd603a33ac6d7e688f018201">tvm::s_tir::ScheduleNode</a></li>
 <li>CopyDataFromTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DeviceAPI.html#a2f8bed30e62ddd50f02989cbd8a03824">tvm::runtime::DeviceAPI</a></li>
-<li>CopyFrom()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a6ae739044fd444403bf0a013c5bcd71e">tvm::runtime::Tensor</a></li>
+<li>CopyFrom()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a4d04ea6025670c4853c4b20ce25edfee">tvm::runtime::Tensor</a></li>
 <li>CopyFromBytes()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#ab906e1a006435e988b0e3262bf605da9">tvm::runtime::Tensor</a></li>
 <li>CopyFromTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#aa215b42c46dd617a25f8240aa5dbb1b5">tvm::runtime::Tensor</a></li>
 <li>CopyFromWorker0()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1SessionObj.html#a6dcb310d5c3a8ca38aaedac7c9d1456d">tvm::runtime::SessionObj</a></li>
 <li>CopyOnWrite()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1BindingBlock.html#a974926705d8c711b39f14a3eecd06823">tvm::relax::BindingBlock</a></li>
-<li>CopyTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a9470fc8dc75556e8a0ff7b9b7d76537a">tvm::runtime::Tensor</a></li>
+<li>CopyTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a7590ee11d02a8e2da8ac1b55f8d752bc">tvm::runtime::Tensor</a></li>
 <li>CopyToBytes()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a22c2884b50b94c6d3731ad88e1a5848b">tvm::runtime::Tensor</a></li>
 <li>CopyToWorker0()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1SessionObj.html#a49c2c7066fff2cb998ba6aedf4f3b9c3">tvm::runtime::SessionObj</a></li>
 <li>CopyWithDType()&#160;:&#160;<a class="el" href="classtvm_1_1PrimVar.html#a982fc1e284ee1f0505439b686b34afb9">tvm::PrimVar</a>, <a class="el" href="classtvm_1_1Var.html#a3930c2126518b3b0d8810ca39576759c">tvm::Var</a></li>
diff --git a/docs/reference/api/doxygen/functions_d.html b/docs/reference/api/doxygen/functions_d.html
index c8287da455f..17737cf974d 100644
--- a/docs/reference/api/doxygen/functions_d.html
+++ b/docs/reference/api/doxygen/functions_d.html
@@ -148,9 +148,7 @@ $(function() {
 <li>DisallowDynamicLoop()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1Postproc.html#a0c76697b380d59359c4db9cb1afc3d54">tvm::s_tir::meta_schedule::Postproc</a></li>
 <li>DiscoWorker()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DiscoWorker.html#a089d3adcb982ccae8a8f760d2b52a080">tvm::runtime::DiscoWorker</a></li>
 <li>DiscoWorker::Impl&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DiscoWorker.html#a379c6dd5a183ed1df75515f7f21a3f49">tvm::runtime::DiscoWorker</a></li>
-<li>Dispatch()&#160;:&#160;<a class="el" href="classtvm_1_1ExprFunctor_3_01R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html#a8b267961edf7db8ed2eea10db0964932">tvm::ExprFunctor&lt; R(const Expr &amp;, Args...)&gt;</a></li>
-<li>dispatch&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a9463aa1e349fdaa77ee00318eda01047">tvm::script::printer::OpCallDocNode</a></li>
-<li>Dispatch()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1StmtFunctor_3_01R_07const_01Stmt_01_6_00_01Args_8_8_8_08_4.html#afe2459adeed04fc2dadd0c7195de9a94">tvm::tirx::StmtFunctor&lt; R(const Stmt &amp;, Args...)&gt;</a></li>
+<li>Dispatch()&#160;:&#160;<a class="el" href="classtvm_1_1ExprFunctor_3_01R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html#a8b267961edf7db8ed2eea10db0964932">tvm::ExprFunctor&lt; R(const Expr &amp;, Args...)&gt;</a>, <a class="el" href="classtvm_1_1tirx_1_1StmtFunctor_3_01R_07const_01Stmt_01_6_00_01Args_8_8_8_08_4.html#afe2459adeed04fc2dadd0c7195de9a94">tvm::tirx::StmtFunctor&lt; R(const Stmt &amp;, Args...)&gt;</a></li>
 <li>Dispatch_()&#160;:&#160;<a class="el" href="classtvm_1_1ExprFunctor_3_01R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html#ae7c1f64e45937ce0ca299c9841cc64aa">tvm::ExprFunctor&lt; R(const Expr &amp;, Args...)&gt;</a>, <a class="el" href="classtvm_1_1s__tir_1_1StmtFunctor_3_01R_07const_01Stmt_01_6_00_01Args_8_8_8_08_4.html#a786d4cbf0189d554d062d6140bab7105">tvm::s_tir::StmtFunctor&lt; R(const Stmt &amp;, Args...)&gt;</a>, <a class="el" href="classtvm_1_1tirx_1_1StmtFunctor_3_01R_07const_0 [...]
 <li>DispatchContext()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1DispatchContext.html#a1fdf4c8b2157474c5d4ed1934bf96180">tvm::tirx::DispatchContext</a></li>
 <li>DispatchDefault_()&#160;:&#160;<a class="el" href="classtvm_1_1ExprFunctor_3_01R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html#a49bf8ac54583bb0b30725a4dd76c2a18">tvm::ExprFunctor&lt; R(const Expr &amp;, Args...)&gt;</a>, <a class="el" href="classtvm_1_1tirx_1_1StmtFunctor_3_01R_07const_01Stmt_01_6_00_01Args_8_8_8_08_4.html#a940a20c15f7997ff74477f8450144816">tvm::tirx::StmtFunctor&lt; R(const Stmt &amp;, Args...)&gt;</a></li>
diff --git a/docs/reference/api/doxygen/functions_func_c.html b/docs/reference/api/doxygen/functions_func_c.html
index c95d3359e00..d81fe47196f 100644
--- a/docs/reference/api/doxygen/functions_func_c.html
+++ b/docs/reference/api/doxygen/functions_func_c.html
@@ -79,7 +79,7 @@ $(function() {
 <li>Call()&#160;:&#160;<a class="el" href="classtvm_1_1Call.html#a26304eac4f5299ac4b4862105a9f5cd5">tvm::Call</a>, <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#a70b9e9c1632058a9bfbaecb00a2926c2">tvm::runtime::vm::Instruction</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a84661ae5560b5daf2084443fb8c93e1d">tvm::script::printer::ExprDocNode</a></li>
 <li>CallDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1CallDoc.html#ae26a9378550bb5750464fd299b33e9ed">tvm::script::printer::CallDoc</a></li>
 <li>CallNode()&#160;:&#160;<a class="el" href="classtvm_1_1CallNode.html#adf837eb3faa5535c97311eb0f2ccb0e0">tvm::CallNode</a></li>
-<li>CallPacked()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1SessionObj.html#a3e5a412f242d3e466f9b359852fcc0fa">tvm::runtime::SessionObj</a></li>
+<li>CallPacked()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1SessionObj.html#af5afdb77fe43ac0591c872648ee820d4">tvm::runtime::SessionObj</a></li>
 <li>CallPattern()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1CallPattern.html#ac023536d9162e5dad42e100b8aa829b9">tvm::relax::CallPattern</a></li>
 <li>CallSiteLoc()&#160;:&#160;<a class="el" href="classtvm_1_1CallSiteLoc.html#ae2aae7fd46c6fc066082e3000fc361b2">tvm::CallSiteLoc</a></li>
 <li>CallWithPacked()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1SessionObj.html#a10bd253529384336ccf3aab3ece98882">tvm::runtime::SessionObj</a></li>
@@ -126,15 +126,15 @@ $(function() {
 <li>Continue()&#160;:&#160;<a class="el" href="classtvm_1_1Continue.html#ac8c135897f6026ccf33c8d8c02ff8827">tvm::Continue</a></li>
 <li>ContinueDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1ContinueDoc.html#a3cd20ba5a6587b7d19bfc72e451985bb">tvm::script::printer::ContinueDoc</a></li>
 <li>ConvertConstant()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1ExecBuilderNode.html#ac0323caf936e8dc48bcffb6e04a825e8">tvm::relax::ExecBuilderNode</a></li>
-<li>ConvertFallbackValue()&#160;:&#160;<a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a6f4773ee3e012981e082c428d06c5b4d">tvm::ffi::TypeTraits&lt; Expr &gt;</a>, <a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01FloatImm_01_4.html#a2d1f8eb0eaebb896586a4f6914ef1596">tvm::ffi::TypeTraits&lt; FloatImm &gt;</a>, <a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">tvm::ffi::TypeTraits&lt; IntExpr &gt;</a>, <a c [...]
+<li>ConvertFallbackValue()&#160;:&#160;<a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html#a6f4773ee3e012981e082c428d06c5b4d">tvm::ffi::TypeTraits&lt; Expr &gt;</a>, <a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01FloatImm_01_4.html#a2d1f8eb0eaebb896586a4f6914ef1596">tvm::ffi::TypeTraits&lt; FloatImm &gt;</a>, <a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01IntExpr_01_4.html#a04e5c69ff8fe02aeae0407d31441da67">tvm::ffi::TypeTraits&lt; IntExpr &gt;</a>, <a c [...]
 <li>Copy()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#a9f97ca31fd603a33ac6d7e688f018201">tvm::s_tir::ScheduleNode</a></li>
-<li>CopyDataFromTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DeviceAPI.html#a2f8bed30e62ddd50f02989cbd8a03824">tvm::runtime::DeviceAPI</a></li>
+<li>CopyDataFromTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DeviceAPI.html#ada4c726e7885d4cb3b83dafd8418fa13">tvm::runtime::DeviceAPI</a></li>
 <li>CopyFrom()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a6ae739044fd444403bf0a013c5bcd71e">tvm::runtime::Tensor</a></li>
 <li>CopyFromBytes()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#ab906e1a006435e988b0e3262bf605da9">tvm::runtime::Tensor</a></li>
 <li>CopyFromTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#aa215b42c46dd617a25f8240aa5dbb1b5">tvm::runtime::Tensor</a></li>
 <li>CopyFromWorker0()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1SessionObj.html#a6dcb310d5c3a8ca38aaedac7c9d1456d">tvm::runtime::SessionObj</a></li>
 <li>CopyOnWrite()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1BindingBlock.html#a974926705d8c711b39f14a3eecd06823">tvm::relax::BindingBlock</a></li>
-<li>CopyTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a7590ee11d02a8e2da8ac1b55f8d752bc">tvm::runtime::Tensor</a></li>
+<li>CopyTo()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a9470fc8dc75556e8a0ff7b9b7d76537a">tvm::runtime::Tensor</a></li>
 <li>CopyToBytes()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a22c2884b50b94c6d3731ad88e1a5848b">tvm::runtime::Tensor</a></li>
 <li>CopyToWorker0()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1SessionObj.html#a49c2c7066fff2cb998ba6aedf4f3b9c3">tvm::runtime::SessionObj</a></li>
 <li>CopyWithDType()&#160;:&#160;<a class="el" href="classtvm_1_1PrimVar.html#a982fc1e284ee1f0505439b686b34afb9">tvm::PrimVar</a>, <a class="el" href="classtvm_1_1Var.html#a3930c2126518b3b0d8810ca39576759c">tvm::Var</a></li>
diff --git a/docs/reference/api/doxygen/functions_func_g.html b/docs/reference/api/doxygen/functions_func_g.html
index 1ab3c6cfc7d..2e2c31c46ee 100644
--- a/docs/reference/api/doxygen/functions_func_g.html
+++ b/docs/reference/api/doxygen/functions_func_g.html
@@ -79,8 +79,8 @@ $(function() {
 <li>get()&#160;:&#160;<a class="el" href="classtvm_1_1DictAttrs.html#ad8f7996b9debb6eb1bf729251f3b78b3">tvm::DictAttrs</a></li>
 <li>Get()&#160;:&#160;<a class="el" href="classtvm_1_1EnvFunc.html#a4743fb115d189998a1c92f267de91272">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1Op.html#a3b206bfa4134d41a4001b7915d05dff5">tvm::Op</a></li>
 <li>get()&#160;:&#160;<a class="el" href="classtvm_1_1OpAttrMap.html#adbee48a3d975f50cc812fec1a4543eaa">tvm::OpAttrMap&lt; ValueType &gt;</a>, <a class="el" href="classtvm_1_1relax_1_1Binding.html#af3305881e12b4a6f2d1013a04060fadd">tvm::relax::Binding</a></li>
-<li>Get()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1ExecBuilderNode.html#a73c216f7f77ba02083adb8483551ed55">tvm::relax::ExecBuilderNode</a>, <a class="el" href="classtvm_1_1runtime_1_1DeviceAPI.html#a2b100fe3a7f95c2d11376ae3b2fdb6a2">tvm::runtime::DeviceAPI</a>, <a class="el" href="structtvm_1_1runtime_1_1ThreadLocalDiscoWorker.html#a69a26e7fced7ff0a61faf48d9a5d8dc5">tvm::runtime::ThreadLocalDiscoWorker</a>, <a class="el" href="classtvm_1_1s__tir_1_1InstructionKind.html#a7c41f [...]
-<li>get()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a7be51b1e4832a1dd37187cd29da72fde">tvm::tirx::TensorVar</a>, <a class="el" href="classtvm_1_1With.html#ab35df63e7c2a021c1656131f627adb60">tvm::With&lt; ContextType &gt;</a></li>
+<li>Get()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1ExecBuilderNode.html#a73c216f7f77ba02083adb8483551ed55">tvm::relax::ExecBuilderNode</a>, <a class="el" href="classtvm_1_1runtime_1_1DeviceAPI.html#a2b100fe3a7f95c2d11376ae3b2fdb6a2">tvm::runtime::DeviceAPI</a>, <a class="el" href="structtvm_1_1runtime_1_1ThreadLocalDiscoWorker.html#a69a26e7fced7ff0a61faf48d9a5d8dc5">tvm::runtime::ThreadLocalDiscoWorker</a>, <a class="el" href="classtvm_1_1s__tir_1_1InstructionKind.html#a7c41f [...]
+<li>get()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a7be51b1e4832a1dd37187cd29da72fde">tvm::tirx::TensorVar</a>, <a class="el" href="classtvm_1_1With.html#aeba9bd793f52d87f0d1635cccf7bd337">tvm::With&lt; ContextType &gt;</a></li>
 <li>GetAllocator()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1memory_1_1MemoryManager.html#adf54a15a89cdfc4698c1a5a95542e407">tvm::runtime::memory::MemoryManager</a></li>
 <li>GetAllTuningRecords()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1DatabaseNode.html#af2b0a7e2305c8222d02971ea4b3c66fa">tvm::s_tir::meta_schedule::DatabaseNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1PyDatabaseNode.html#af2898ac3be0dd1ccf587b7671e593e40">tvm::s_tir::meta_schedule::PyDatabaseNode</a></li>
 <li>GetAnalyzer()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1BlockBuilderNode.html#a8562b7497e5f1032aa86f7eee0867e5a">tvm::relax::BlockBuilderNode</a></li>
diff --git a/docs/reference/api/doxygen/functions_func_o.html b/docs/reference/api/doxygen/functions_func_o.html
index 4b059b73a2b..b88130ad441 100644
--- a/docs/reference/api/doxygen/functions_func_o.html
+++ b/docs/reference/api/doxygen/functions_func_o.html
@@ -80,8 +80,7 @@ $(function() {
 <li>OpaqueExpr()&#160;:&#160;<a class="el" href="classtvm_1_1OpaqueExpr.html#afd17da96046bfe1522adcd996454818a">tvm::OpaqueExpr</a></li>
 <li>OpaqueFunc()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1FuncType.html#a56b337d9d4d107eaa00b973cfcdd17fc">tvm::relax::FuncType</a></li>
 <li>OpaqueType()&#160;:&#160;<a class="el" href="classtvm_1_1OpaqueType.html#a6c374ff2d7cb64952ec2e7067e438d8f">tvm::OpaqueType</a></li>
-<li>OpCallDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#ab5b4f91b550e6e9b43f8a5659604da42">tvm::script::printer::OpCallDoc</a></li>
-<li>OpDef()&#160;:&#160;<a class="el" href="classtvm_1_1OpDef.html#ae559110ef55e803c57acae0a17e1e4e5">tvm::OpDef</a></li>
+<li>OpDef()&#160;:&#160;<a class="el" href="classtvm_1_1OpDef.html#a8e02417e15311a6c0955146acf2074f8">tvm::OpDef</a></li>
 <li>Operation()&#160;:&#160;<a class="el" href="classtvm_1_1te_1_1Operation.html#a7bc69f793cb5cbc99bf20fed8617d487">tvm::te::Operation</a></li>
 <li>OperationDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OperationDoc.html#a4cb1202058caaf27c3ed6f2951af28e3">tvm::script::printer::OperationDoc</a></li>
 <li>operator PatternSeq()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DFPattern.html#afce09ce23acba783755ac41f21145b0f">tvm::relax::DFPattern</a></li>
@@ -89,7 +88,7 @@ $(function() {
 <li>operator Var()&#160;:&#160;<a class="el" href="classtvm_1_1PrimVar.html#aa0bcffe86bfbe598728e862a15f4f4b3">tvm::PrimVar</a></li>
 <li>operator!=()&#160;:&#160;<a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">tvm::Expr</a>, <a class="el" href="classtvm_1_1relax_1_1NestedMsg.html#ae2848ef30c8566feec482c045bd27673">tvm::relax::NestedMsg&lt; T &gt;</a>, <a class="el" href="classtvm_1_1te_1_1Tensor.html#a9b3e114d34dda7e093663a9a9548140f">tvm::te::Tensor</a></li>
 <li>operator&amp;()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DFPattern.html#a935b45987613932342fba50b4f809834">tvm::relax::DFPattern</a></li>
-<li>operator()()&#160;:&#160;<a class="el" href="classtvm_1_1EnvFunc.html#ae3e0102263bfb4741599a06c627814cb">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1ExprFunctor_3_01R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html#a8e6a3f03309c393f7700f594ed68afda">tvm::ExprFunctor&lt; R(const Expr &amp;, Args...)&gt;</a>, <a class="el" href="classtvm_1_1ObjectFunctor_3_01R_07NodeArg_00_01Args_8_8_8_08_4.html#a832a7c23af840d60ec067b1475e72ee9">tvm::ObjectFunctor&lt; R(NodeArg, Args...)&gt;</a>,  [...]
+<li>operator()()&#160;:&#160;<a class="el" href="classtvm_1_1EnvFunc.html#ae3e0102263bfb4741599a06c627814cb">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1ExprFunctor_3_01R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html#a8e6a3f03309c393f7700f594ed68afda">tvm::ExprFunctor&lt; R(const Expr &amp;, Args...)&gt;</a>, <a class="el" href="classtvm_1_1ObjectFunctor_3_01R_07NodeArg_00_01Args_8_8_8_08_4.html#a832a7c23af840d60ec067b1475e72ee9">tvm::ObjectFunctor&lt; R(NodeArg, Args...)&gt;</a>,  [...]
 <li>operator*()&#160;:&#160;<a class="el" href="classtvm_1_1With.html#aa5cf1df354008179241e268deaa5a2eb">tvm::With&lt; ContextType &gt;</a></li>
 <li>operator-&gt;()&#160;:&#160;<a class="el" href="classtvm_1_1DictAttrs.html#a49deabd670cdf006037faba59a79ed34">tvm::DictAttrs</a>, <a class="el" href="classtvm_1_1EnvFunc.html#ad715c2b953c2f7ed0c5b4577fbb5c7e3">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1IRModule.html#aa659bf3e65fb7b1351b5be8826924e66">tvm::IRModule</a>, <a class="el" href="classtvm_1_1relax_1_1Binding.html#ab23c4b7cf09ff329b94ebb90e11d23f7">tvm::relax::Binding</a>, <a class="el" href="classtvm_1_1relax_1_1Dataf [...]
 <li>operator&lt;()&#160;:&#160;<a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">tvm::Expr</a></li>
diff --git a/docs/reference/api/doxygen/functions_func_r.html b/docs/reference/api/doxygen/functions_func_r.html
index 02238627580..6aafc1d244a 100644
--- a/docs/reference/api/doxygen/functions_func_r.html
+++ b/docs/reference/api/doxygen/functions_func_r.html
@@ -94,7 +94,7 @@ $(function() {
 <li>RegisterAttrValidator()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1FunctionFrameNode.html#a7dd7e92a47fad94c39b5071c14a9c7e8">tvm::script::ir_builder::tirx::FunctionFrameNode</a></li>
 <li>RegisterConfigOption()&#160;:&#160;<a class="el" href="classtvm_1_1transform_1_1PassContext.html#a2618668ab11d8604c7c9a93e0ec527d2">tvm::transform::PassContext</a></li>
 <li>RegisterOrGet()&#160;:&#160;<a class="el" href="classtvm_1_1TargetKindRegistry.html#a6123b4525e715d7353e445fa5f9b2165">tvm::TargetKindRegistry</a></li>
-<li>RegisterReflection()&#160;:&#160;<a class="el" href="classtvm_1_1AnyTypeNode.html#a690f7c61281e3bad083941de759696f8">tvm::AnyTypeNode</a>, <a class="el" href="classtvm_1_1ArgumentInfoNode.html#a3f35036e53337a3a86ee7ca34235f4fa">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1AssertStmtNode.html#a0080cbf046fc715b400b0ed5d6ad055a">tvm::AssertStmtNode</a>, <a class="el" href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html#a45c9818d95451ccf4eb79c0c3b5b6116">t [...]
+<li>RegisterReflection()&#160;:&#160;<a class="el" href="classtvm_1_1AnyTypeNode.html#a690f7c61281e3bad083941de759696f8">tvm::AnyTypeNode</a>, <a class="el" href="classtvm_1_1ArgumentInfoNode.html#a3f35036e53337a3a86ee7ca34235f4fa">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1AssertStmtNode.html#a0080cbf046fc715b400b0ed5d6ad055a">tvm::AssertStmtNode</a>, <a class="el" href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html#a45c9818d95451ccf4eb79c0c3b5b6116">t [...]
 <li>ReIndex()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#a2cb4cef0537e66429d40860594780aaa">tvm::s_tir::ScheduleNode</a></li>
 <li>ReindexCacheRead()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#ae521878b0f82d4dcf4932b34c0f11476">tvm::s_tir::ScheduleNode</a></li>
 <li>ReindexCacheWrite()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#ac2cdcd319867c595140eb958e28b4173">tvm::s_tir::ScheduleNode</a></li>
diff --git a/docs/reference/api/doxygen/functions_func_t.html b/docs/reference/api/doxygen/functions_func_t.html
index d1e7e035550..09bd1a61ca7 100644
--- a/docs/reference/api/doxygen/functions_func_t.html
+++ b/docs/reference/api/doxygen/functions_func_t.html
@@ -131,11 +131,11 @@ $(function() {
 <li>TupleTypeNode()&#160;:&#160;<a class="el" href="classtvm_1_1TupleTypeNode.html#a1e9cbe8e91816366c181fb888ddc18d9">tvm::TupleTypeNode</a></li>
 <li>TVM_DEFINE_OBJECT_REF_COW_METHOD()&#160;:&#160;<a class="el" href="classtvm_1_1AssertStmt.html#a401d1c786573cba184a5053bed4a7168">tvm::AssertStmt</a>, <a class="el" href="classtvm_1_1Bind.html#a2e0a42528e5b2510f08d3ff3c43d34ba">tvm::Bind</a>, <a class="el" href="classtvm_1_1Break.html#aacfb1c86342879e973b81c1343f3dffe">tvm::Break</a>, <a class="el" href="classtvm_1_1Call.html#ac7f8d11aa54e549a1154d2d2bd25c461">tvm::Call</a>, <a class="el" href="classtvm_1_1Continue.html#a17b5846e008e [...]
 <li>TVM_FFI_DECLARE_OBJECT_INFO()&#160;:&#160;<a class="el" href="classtvm_1_1AttrsNode.html#ae4806aea36c99253f52625489497803e">tvm::AttrsNode</a>, <a class="el" href="classtvm_1_1BaseFuncNode.html#a92a7f720142c275784235eb9905ee835">tvm::BaseFuncNode</a>, <a class="el" href="classtvm_1_1ConstantNode.html#a7ac1b77b387c65100e701bc11dc958e0">tvm::ConstantNode</a>, <a class="el" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">tvm::ExprNode</a>, <a class="el" href="classtvm [...]
-<li>TVM_FFI_DECLARE_OBJECT_INFO_FINAL()&#160;:&#160;<a class="el" href="classtvm_1_1AnyTypeNode.html#a1c2008016781a41f62c803986aaad81f">tvm::AnyTypeNode</a>, <a class="el" href="classtvm_1_1ArgumentInfoNode.html#ad5d4e5da3f0998f96b3155ae48b844cc">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1AssertStmtNode.html#ae06276577882fd897fac8ad3b2b0398b">tvm::AssertStmtNode</a>, <a class="el" href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html#ae268a401d28b4d0221b1 [...]
+<li>TVM_FFI_DECLARE_OBJECT_INFO_FINAL()&#160;:&#160;<a class="el" href="classtvm_1_1AnyTypeNode.html#a1c2008016781a41f62c803986aaad81f">tvm::AnyTypeNode</a>, <a class="el" href="classtvm_1_1ArgumentInfoNode.html#ad5d4e5da3f0998f96b3155ae48b844cc">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1AssertStmtNode.html#ae06276577882fd897fac8ad3b2b0398b">tvm::AssertStmtNode</a>, <a class="el" href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html#ae268a401d28b4d0221b1 [...]
 <li>TVM_FFI_DECLARE_OBJECT_INFO_PREDEFINED_TYPE_KEY()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1BinaryOpNode.html#a4ea9d6d505a52f8c48703981630df05c">tvm::prim::BinaryOpNode&lt; T &gt;</a>, <a class="el" href="classtvm_1_1prim_1_1CmpOpNode.html#a6f8cddcdbc85626674cffa6d59c585d7">tvm::prim::CmpOpNode&lt; T &gt;</a></li>
 <li>TVM_FFI_DECLARE_OBJECT_INFO_STATIC()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DRefObj.html#a18ed3c1a2f001484e33295fd0b7476aa">tvm::runtime::DRefObj</a></li>
 <li>TVM_FFI_DEFINE_DEFAULT_COPY_MOVE_AND_ASSIGN()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a706fea2f129ede37fe7980fda59a3bd1">tvm::tirx::TensorVar</a></li>
-<li>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()&#160;:&#160;<a class="el" href="classtvm_1_1AnyType.html#a801577ea879428083b5da2e81a58e62f">tvm::AnyType</a>, <a class="el" href="classtvm_1_1AssertStmt.html#a701cd68f5cd3422d0b868f538d1686c4">tvm::AssertStmt</a>, <a class="el" href="classtvm_1_1BaseFunc.html#a496463fef22ee43ebd9ace59626a0348">tvm::BaseFunc</a>, <a class="el" href="classtvm_1_1Bind.html#a62bd2536776c6a0c835d49b58749b2b9">tvm::Bind</a>, <a class="el" href="classtvm_1_1Br [...]
+<li>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()&#160;:&#160;<a class="el" href="classtvm_1_1AnyType.html#a801577ea879428083b5da2e81a58e62f">tvm::AnyType</a>, <a class="el" href="classtvm_1_1AssertStmt.html#a701cd68f5cd3422d0b868f538d1686c4">tvm::AssertStmt</a>, <a class="el" href="classtvm_1_1BaseFunc.html#a496463fef22ee43ebd9ace59626a0348">tvm::BaseFunc</a>, <a class="el" href="classtvm_1_1Bind.html#a62bd2536776c6a0c835d49b58749b2b9">tvm::Bind</a>, <a class="el" href="classtvm_1_1Br [...]
 <li>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE()&#160;:&#160;<a class="el" href="classtvm_1_1ArgumentInfo.html#ad079f3045ac104e7107ebc3197447462">tvm::ArgumentInfo</a>, <a class="el" href="classtvm_1_1Attrs.html#af88d2fff186ab0af971db3a281cae1ce">tvm::Attrs</a>, <a class="el" href="classtvm_1_1GlobalInfo.html#af82b716ca0477f2bd23aa4a526466126">tvm::GlobalInfo</a>, <a class="el" href="classtvm_1_1Range.html#a592353a8a4642af3d8e26d246436d37e">tvm::Range</a>, <a class="el" href="classtvm_1_ [...]
 <li>ty()&#160;:&#160;<a class="el" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">tvm::TypedExpr&lt; ExpectedType &gt;</a></li>
 <li>type()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1memory_1_1Allocator.html#a5690ce0a8e9e25bd8e5568173cc0b1bb">tvm::runtime::memory::Allocator</a>, <a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a42fcd94536191d8b98f75a6a0bfc3f7a">tvm::tirx::TensorVar</a></li>
diff --git a/docs/reference/api/doxygen/functions_g.html b/docs/reference/api/doxygen/functions_g.html
index 03a91a8b354..acdca8994af 100644
--- a/docs/reference/api/doxygen/functions_g.html
+++ b/docs/reference/api/doxygen/functions_g.html
@@ -79,8 +79,8 @@ $(function() {
 <li>get()&#160;:&#160;<a class="el" href="classtvm_1_1DictAttrs.html#ad8f7996b9debb6eb1bf729251f3b78b3">tvm::DictAttrs</a></li>
 <li>Get()&#160;:&#160;<a class="el" href="classtvm_1_1EnvFunc.html#a4743fb115d189998a1c92f267de91272">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1Op.html#a3b206bfa4134d41a4001b7915d05dff5">tvm::Op</a></li>
 <li>get()&#160;:&#160;<a class="el" href="classtvm_1_1OpAttrMap.html#adbee48a3d975f50cc812fec1a4543eaa">tvm::OpAttrMap&lt; ValueType &gt;</a>, <a class="el" href="classtvm_1_1relax_1_1Binding.html#af3305881e12b4a6f2d1013a04060fadd">tvm::relax::Binding</a></li>
-<li>Get()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1ExecBuilderNode.html#a73c216f7f77ba02083adb8483551ed55">tvm::relax::ExecBuilderNode</a>, <a class="el" href="classtvm_1_1runtime_1_1DeviceAPI.html#a2b100fe3a7f95c2d11376ae3b2fdb6a2">tvm::runtime::DeviceAPI</a>, <a class="el" href="structtvm_1_1runtime_1_1ThreadLocalDiscoWorker.html#a69a26e7fced7ff0a61faf48d9a5d8dc5">tvm::runtime::ThreadLocalDiscoWorker</a>, <a class="el" href="classtvm_1_1s__tir_1_1InstructionKind.html#a7c41f [...]
-<li>get()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a7be51b1e4832a1dd37187cd29da72fde">tvm::tirx::TensorVar</a>, <a class="el" href="classtvm_1_1With.html#ab35df63e7c2a021c1656131f627adb60">tvm::With&lt; ContextType &gt;</a></li>
+<li>Get()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1ExecBuilderNode.html#a73c216f7f77ba02083adb8483551ed55">tvm::relax::ExecBuilderNode</a>, <a class="el" href="classtvm_1_1runtime_1_1DeviceAPI.html#a2b100fe3a7f95c2d11376ae3b2fdb6a2">tvm::runtime::DeviceAPI</a>, <a class="el" href="structtvm_1_1runtime_1_1ThreadLocalDiscoWorker.html#a69a26e7fced7ff0a61faf48d9a5d8dc5">tvm::runtime::ThreadLocalDiscoWorker</a>, <a class="el" href="classtvm_1_1s__tir_1_1InstructionKind.html#a7c41f [...]
+<li>get()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a7be51b1e4832a1dd37187cd29da72fde">tvm::tirx::TensorVar</a>, <a class="el" href="classtvm_1_1With.html#aeba9bd793f52d87f0d1635cccf7bd337">tvm::With&lt; ContextType &gt;</a></li>
 <li>get_implicit_defs&#160;:&#160;<a class="el" href="structtvm_1_1script_1_1printer_1_1DocTranslatorVTable.html#af9d494dc72a2ee56d8b2903c660241bd">tvm::script::printer::DocTranslatorVTable</a></li>
 <li>GetAllocator()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1memory_1_1MemoryManager.html#adf54a15a89cdfc4698c1a5a95542e407">tvm::runtime::memory::MemoryManager</a></li>
 <li>GetAllTuningRecords()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1DatabaseNode.html#af2b0a7e2305c8222d02971ea4b3c66fa">tvm::s_tir::meta_schedule::DatabaseNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1PyDatabaseNode.html#af2898ac3be0dd1ccf587b7671e593e40">tvm::s_tir::meta_schedule::PyDatabaseNode</a></li>
diff --git a/docs/reference/api/doxygen/functions_i.html b/docs/reference/api/doxygen/functions_i.html
index b4827dae98d..eb21dc3ed0c 100644
--- a/docs/reference/api/doxygen/functions_i.html
+++ b/docs/reference/api/doxygen/functions_i.html
@@ -80,7 +80,7 @@ $(function() {
 <li>IfExpr()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1IfExpr.html#a49940cd017c27d91996a9b074b58d655">tvm::relax::IfExpr</a></li>
 <li>IfExprNode()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1IfExprNode.html#a55ca891d9d4cba196c5f06dd487a342b">tvm::relax::IfExprNode</a></li>
 <li>IfFrame()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1ir_1_1IfFrame.html#a8338fb3df01c06e28cddc8b39123a1ac">tvm::script::ir_builder::ir::IfFrame</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1relax_1_1IfFrame.html#abd5e125b569a7f39be94aadb6c4d5286">tvm::script::ir_builder::relax::IfFrame</a></li>
-<li>IfFrameNode()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1ir_1_1IfFrameNode.html#a5ef6a96bf59d1bfeb41ca7b54f9bcb3b">tvm::script::ir_builder::ir::IfFrameNode</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1relax_1_1IfFrameNode.html#ab9f377825f41a88f1267fcb5e589ce46">tvm::script::ir_builder::relax::IfFrameNode</a></li>
+<li>IfFrameNode()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1ir_1_1IfFrameNode.html#a99081e2338a38138e5f50f87626d9ea0">tvm::script::ir_builder::ir::IfFrameNode</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1relax_1_1IfFrameNode.html#a7afbfae19e6f56825e3af3639b3f7283">tvm::script::ir_builder::relax::IfFrameNode</a></li>
 <li>IfNode()&#160;:&#160;<a class="el" href="classtvm_1_1IfNode.html#a717f270aedf170e267871eaf6a4187b4">tvm::IfNode</a></li>
 <li>ignore_index&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1NLLLossAttrs.html#a87e28de97dd6dca1a8938de0258cbd0c">tvm::relax::NLLLossAttrs</a></li>
 <li>Immediate()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg.html#a596cc51f4b7267e37c8bdfb4bf815ce7">tvm::runtime::vm::Instruction::Arg</a></li>
@@ -98,7 +98,7 @@ $(function() {
 <li>IndexMap()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1IndexMap.html#a3a3b7f1bc73d27c42b03a796e32f3f2f">tvm::tirx::IndexMap</a></li>
 <li>IndexMapNode()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1IndexMapNode.html#a5a248dc1754f4ab7542649d239f5385c">tvm::tirx::IndexMapNode</a></li>
 <li>IndexOf()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1SLayout.html#a0b8b58402c140e48bad57a9828913a55">tvm::tirx::SLayout</a></li>
-<li>IndexWithNegativeIndices()&#160;:&#160;<a class="el" href="classtvm_1_1te_1_1Tensor.html#a13b0c7e854e12eb1ee7420cd9e96e7a2">tvm::te::Tensor</a></li>
+<li>IndexWithNegativeIndices()&#160;:&#160;<a class="el" href="classtvm_1_1te_1_1Tensor.html#a1727a7e0ad4c9c74f17763d3b5e694b6">tvm::te::Tensor</a></li>
 <li>indices&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1ShuffleNode.html#af32cb091064aaa4d755c2f70ec17f914">tvm::prim::ShuffleNode</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1IndexDocNode.html#a406f0d327c8b615a7b249c86acb37c90">tvm::script::printer::IndexDocNode</a>, <a class="el" href="classtvm_1_1sym_1_1IterMapResultNode.html#aea207cc301ef8d1ac0118c27e4a31f44">tvm::sym::IterMapResultNode</a>, <a class="el" href="classtvm_1_1TensorLoadNode.html#a306e3757ba3c016463d [...]
 <li>indices_or_sections&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1SplitAttrs.html#ac1efeac656d482df8cdc3010fca82bcc">tvm::relax::SplitAttrs</a></li>
 <li>Info()&#160;:&#160;<a class="el" href="classtvm_1_1transform_1_1PassNode.html#ab602b215ed172c9f09cf0fa2862858af">tvm::transform::PassNode</a>, <a class="el" href="classtvm_1_1transform_1_1SequentialNode.html#a4873bfc55a74cb39b692884b7b9aa5c2">tvm::transform::SequentialNode</a></li>
diff --git a/docs/reference/api/doxygen/functions_o.html b/docs/reference/api/doxygen/functions_o.html
index 060ac0bb16b..195d90064ae 100644
--- a/docs/reference/api/doxygen/functions_o.html
+++ b/docs/reference/api/doxygen/functions_o.html
@@ -90,29 +90,28 @@ $(function() {
 <li>OpaqueFunc()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1FuncType.html#ab0dc03dab6153122672e81d522d00f23">tvm::relax::FuncType</a></li>
 <li>OpaqueType()&#160;:&#160;<a class="el" href="classtvm_1_1OpaqueType.html#a6c374ff2d7cb64952ec2e7067e438d8f">tvm::OpaqueType</a></li>
 <li>OpAttrMap&#160;:&#160;<a class="el" href="classtvm_1_1OpNode.html#a456b137fe45c117890899cb9248d610d">tvm::OpNode</a></li>
-<li>OpCallDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDoc.html#ab5b4f91b550e6e9b43f8a5659604da42">tvm::script::printer::OpCallDoc</a></li>
 <li>OpDef()&#160;:&#160;<a class="el" href="classtvm_1_1OpDef.html#a33390a82b1c8342781e14b554aeadd8a">tvm::OpDef</a>, <a class="el" href="classtvm_1_1OpNode.html#a37a86f4a96f25f4cfd35717248877f6b">tvm::OpNode</a></li>
 <li>operands&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OperationDocNode.html#a2d6086cff6613d467c7606a1a71c7e63">tvm::script::printer::OperationDocNode</a></li>
-<li>Operation()&#160;:&#160;<a class="el" href="classtvm_1_1te_1_1Operation.html#a7bc69f793cb5cbc99bf20fed8617d487">tvm::te::Operation</a></li>
+<li>Operation()&#160;:&#160;<a class="el" href="classtvm_1_1te_1_1Operation.html#acac0ade4a74dcfd1ebb76971b9a2fbf8">tvm::te::Operation</a></li>
 <li>OperationDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OperationDoc.html#a4cb1202058caaf27c3ed6f2951af28e3">tvm::script::printer::OperationDoc</a></li>
 <li>operator PatternSeq()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DFPattern.html#afce09ce23acba783755ac41f21145b0f">tvm::relax::DFPattern</a></li>
 <li>operator PrimExpr()&#160;:&#160;<a class="el" href="classtvm_1_1te_1_1Tensor_1_1Slice.html#ab4d687e16bdccebe425e327fc3f2f4ba">tvm::te::Tensor::Slice</a></li>
 <li>operator Var()&#160;:&#160;<a class="el" href="classtvm_1_1PrimVar.html#aa0bcffe86bfbe598728e862a15f4f4b3">tvm::PrimVar</a></li>
 <li>operator!=()&#160;:&#160;<a class="el" href="classtvm_1_1Expr.html#a86bd9da75268e479e3bbe61729dce8ac">tvm::Expr</a>, <a class="el" href="classtvm_1_1relax_1_1NestedMsg.html#ae2848ef30c8566feec482c045bd27673">tvm::relax::NestedMsg&lt; T &gt;</a>, <a class="el" href="classtvm_1_1te_1_1Tensor.html#a9b3e114d34dda7e093663a9a9548140f">tvm::te::Tensor</a></li>
 <li>operator&amp;()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DFPattern.html#a935b45987613932342fba50b4f809834">tvm::relax::DFPattern</a></li>
-<li>operator()()&#160;:&#160;<a class="el" href="classtvm_1_1EnvFunc.html#ae3e0102263bfb4741599a06c627814cb">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1ExprFunctor_3_01R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html#a8e6a3f03309c393f7700f594ed68afda">tvm::ExprFunctor&lt; R(const Expr &amp;, Args...)&gt;</a>, <a class="el" href="classtvm_1_1ObjectFunctor_3_01R_07NodeArg_00_01Args_8_8_8_08_4.html#a832a7c23af840d60ec067b1475e72ee9">tvm::ObjectFunctor&lt; R(NodeArg, Args...)&gt;</a>,  [...]
+<li>operator()()&#160;:&#160;<a class="el" href="classtvm_1_1EnvFunc.html#ae3e0102263bfb4741599a06c627814cb">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1ExprFunctor_3_01R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html#a8e6a3f03309c393f7700f594ed68afda">tvm::ExprFunctor&lt; R(const Expr &amp;, Args...)&gt;</a>, <a class="el" href="classtvm_1_1ObjectFunctor_3_01R_07NodeArg_00_01Args_8_8_8_08_4.html#a832a7c23af840d60ec067b1475e72ee9">tvm::ObjectFunctor&lt; R(NodeArg, Args...)&gt;</a>,  [...]
 <li>operator*()&#160;:&#160;<a class="el" href="classtvm_1_1With.html#ad3295bc94ed82ce7fee08f89c148a909">tvm::With&lt; ContextType &gt;</a></li>
-<li>operator-&gt;()&#160;:&#160;<a class="el" href="classtvm_1_1DictAttrs.html#a49deabd670cdf006037faba59a79ed34">tvm::DictAttrs</a>, <a class="el" href="classtvm_1_1EnvFunc.html#ad715c2b953c2f7ed0c5b4577fbb5c7e3">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1IRModule.html#aa659bf3e65fb7b1351b5be8826924e66">tvm::IRModule</a>, <a class="el" href="classtvm_1_1relax_1_1Binding.html#ab23c4b7cf09ff329b94ebb90e11d23f7">tvm::relax::Binding</a>, <a class="el" href="classtvm_1_1relax_1_1Dataf [...]
+<li>operator-&gt;()&#160;:&#160;<a class="el" href="classtvm_1_1DictAttrs.html#a49deabd670cdf006037faba59a79ed34">tvm::DictAttrs</a>, <a class="el" href="classtvm_1_1EnvFunc.html#ad715c2b953c2f7ed0c5b4577fbb5c7e3">tvm::EnvFunc</a>, <a class="el" href="classtvm_1_1IRModule.html#aa659bf3e65fb7b1351b5be8826924e66">tvm::IRModule</a>, <a class="el" href="classtvm_1_1relax_1_1Binding.html#ab23c4b7cf09ff329b94ebb90e11d23f7">tvm::relax::Binding</a>, <a class="el" href="classtvm_1_1relax_1_1Dataf [...]
 <li>operator&lt;()&#160;:&#160;<a class="el" href="classtvm_1_1Expr.html#afb14020d9ae652a64a6f15dcba073c0e">tvm::Expr</a></li>
 <li>operator&lt;&lt;&#160;:&#160;<a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#a96e81961242155a0fc04368a7e40f108">tvm::runtime::vm::Instruction</a>, <a class="el" href="classtvm_1_1tirx_1_1SLayout.html#a10de755752d4abaadacd878efd5564bb">tvm::tirx::SLayout</a>, <a class="el" href="classtvm_1_1tirx_1_1SLayoutAxis.html#a3e059e61f3816d17898c490224d58352">tvm::tirx::SLayoutAxis</a></li>
-<li>operator=()&#160;:&#160;<a class="el" href="classtvm_1_1DictAttrs.html#ab5ead58c71f54fc3413e3decfc5ea25e">tvm::DictAttrs</a>, <a class="el" href="classtvm_1_1ObjectMutator.html#ac281620e7ef712b0d1d782010347b32c">tvm::ObjectMutator</a>, <a class="el" href="classtvm_1_1ObjectVisitor.html#a2ba5c163c86b3c6d75c600cfca5316e8">tvm::ObjectVisitor</a>, <a class="el" href="classtvm_1_1OpDef.html#a4fd0ba9aa4cee8b4df5c498f0352130a">tvm::OpDef</a>, <a class="el" href="classtvm_1_1relax_1_1Binding [...]
+<li>operator=()&#160;:&#160;<a class="el" href="classtvm_1_1DictAttrs.html#ab5ead58c71f54fc3413e3decfc5ea25e">tvm::DictAttrs</a>, <a class="el" href="classtvm_1_1ObjectMutator.html#ac281620e7ef712b0d1d782010347b32c">tvm::ObjectMutator</a>, <a class="el" href="classtvm_1_1ObjectVisitor.html#a2ba5c163c86b3c6d75c600cfca5316e8">tvm::ObjectVisitor</a>, <a class="el" href="classtvm_1_1OpDef.html#a4fd0ba9aa4cee8b4df5c498f0352130a">tvm::OpDef</a>, <a class="el" href="classtvm_1_1relax_1_1Binding [...]
 <li>operator==()&#160;:&#160;<a class="el" href="classtvm_1_1Expr.html#a637231cfc91838b8f14745ac199b5fbf">tvm::Expr</a>, <a class="el" href="classtvm_1_1relax_1_1NestedMsg.html#a7ff83c8d829af5173621b5ee4083035d">tvm::relax::NestedMsg&lt; T &gt;</a>, <a class="el" href="structtvm_1_1relax_1_1PairCons.html#aa6cbcacb9599e8119f89f814fb5b1b8f">tvm::relax::PairCons</a>, <a class="el" href="classtvm_1_1te_1_1Tensor.html#a1f1bad4907113ec2b508ee0a3c44ed40">tvm::te::Tensor</a>, <a class="el" href= [...]
 <li>operator[]()&#160;:&#160;<a class="el" href="classtvm_1_1OpAttrMap.html#a4fc0b35fb4712e54a43c8a475c417748">tvm::OpAttrMap&lt; ValueType &gt;</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDoc.html#a9b9183116fd8d329e1eaf7399653c36e">tvm::script::printer::ExprDoc</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1ExprDocNode.html#a9ac536aaf8c5e482fcef24da025111bb">tvm::script::printer::ExprDocNode</a>, <a class="el" href="classtvm_1_1SeqStmt.html#ab6abb64244118383 [...]
 <li>operator|()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DFPattern.html#a421011ffe33c4b8406a141a676a0a7e1">tvm::relax::DFPattern</a></li>
 <li>operator~()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DFPattern.html#abce844fe4314f8af18c2a0e38b0dad3b">tvm::relax::DFPattern</a></li>
 <li>OpRegistry&#160;:&#160;<a class="el" href="classtvm_1_1OpNode.html#af7ebaf5af32d51226208f533e6d5cb1d">tvm::OpNode</a></li>
 <li>opt_level&#160;:&#160;<a class="el" href="classtvm_1_1transform_1_1PassContextNode.html#af166034a8746d65044eea0a2673de991">tvm::transform::PassContextNode</a>, <a class="el" href="classtvm_1_1transform_1_1PassInfoNode.html#a8e22e5767cd899bb9aef1ee1c529a2a7">tvm::transform::PassInfoNode</a></li>
-<li>Or()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1Or.html#aa1257f22496020499206210a6c37e054">tvm::prim::Or</a></li>
+<li>Or()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1Or.html#a4c4befcd5780cb449900142e826de9df">tvm::prim::Or</a></li>
 <li>OrderedUnionDatabase()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1Database.html#aade8f036b4e9e5d088fe51b23e40ee38">tvm::s_tir::meta_schedule::Database</a></li>
 <li>original_fn_ptr_&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DataflowBlockRewriteNode.html#a20f44bd03d79fcaa77be014a6835bc44">tvm::relax::DataflowBlockRewriteNode</a></li>
 <li>OrNode()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1OrNode.html#a46f0030ca61d7834a45b330afe255e96">tvm::prim::OrNode</a></li>
diff --git a/docs/reference/api/doxygen/functions_r.html b/docs/reference/api/doxygen/functions_r.html
index a632496fd09..6d7e1a32e60 100644
--- a/docs/reference/api/doxygen/functions_r.html
+++ b/docs/reference/api/doxygen/functions_r.html
@@ -106,7 +106,7 @@ $(function() {
 <li>RegisterAttrValidator()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1FunctionFrameNode.html#a7dd7e92a47fad94c39b5071c14a9c7e8">tvm::script::ir_builder::tirx::FunctionFrameNode</a></li>
 <li>RegisterConfigOption()&#160;:&#160;<a class="el" href="classtvm_1_1transform_1_1PassContext.html#a2618668ab11d8604c7c9a93e0ec527d2">tvm::transform::PassContext</a></li>
 <li>RegisterOrGet()&#160;:&#160;<a class="el" href="classtvm_1_1TargetKindRegistry.html#a6123b4525e715d7353e445fa5f9b2165">tvm::TargetKindRegistry</a></li>
-<li>RegisterReflection()&#160;:&#160;<a class="el" href="classtvm_1_1AnyTypeNode.html#a690f7c61281e3bad083941de759696f8">tvm::AnyTypeNode</a>, <a class="el" href="classtvm_1_1ArgumentInfoNode.html#a3f35036e53337a3a86ee7ca34235f4fa">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1AssertStmtNode.html#a0080cbf046fc715b400b0ed5d6ad055a">tvm::AssertStmtNode</a>, <a class="el" href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html#a45c9818d95451ccf4eb79c0c3b5b6116">t [...]
+<li>RegisterReflection()&#160;:&#160;<a class="el" href="classtvm_1_1AnyTypeNode.html#a690f7c61281e3bad083941de759696f8">tvm::AnyTypeNode</a>, <a class="el" href="classtvm_1_1ArgumentInfoNode.html#a3f35036e53337a3a86ee7ca34235f4fa">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1AssertStmtNode.html#a0080cbf046fc715b400b0ed5d6ad055a">tvm::AssertStmtNode</a>, <a class="el" href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html#a45c9818d95451ccf4eb79c0c3b5b6116">t [...]
 <li>ReIndex()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#a2cb4cef0537e66429d40860594780aaa">tvm::s_tir::ScheduleNode</a></li>
 <li>ReindexCacheRead()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#ae521878b0f82d4dcf4932b34c0f11476">tvm::s_tir::ScheduleNode</a></li>
 <li>ReindexCacheWrite()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#ac2cdcd319867c595140eb958e28b4173">tvm::s_tir::ScheduleNode</a></li>
diff --git a/docs/reference/api/doxygen/functions_s.html b/docs/reference/api/doxygen/functions_s.html
index b45066ced2a..35430edc3ed 100644
--- a/docs/reference/api/doxygen/functions_s.html
+++ b/docs/reference/api/doxygen/functions_s.html
@@ -185,7 +185,7 @@ $(function() {
 <li>size&#160;:&#160;<a class="el" href="structtvm_1_1runtime_1_1memory_1_1Buffer.html#af2afe517225832a1c10252a8034abdd9">tvm::runtime::memory::Buffer</a></li>
 <li>Size()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1DatabaseNode.html#a8a86444b56c2ea48a661c535c6986b13">tvm::s_tir::meta_schedule::DatabaseNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1PyDatabaseNode.html#a920db92fd78e012a24ae4921218349b6">tvm::s_tir::meta_schedule::PyDatabaseNode</a></li>
 <li>size()&#160;:&#160;<a class="el" href="classtvm_1_1ScopeStack.html#a553f51623dd0d55317ca023e8cbb2b33">tvm::ScopeStack&lt; T &gt;</a>, <a class="el" href="classtvm_1_1SeqStmt.html#a35ff0b53c6f4411006ef0c25f702e64e">tvm::SeqStmt</a>, <a class="el" href="classtvm_1_1SeqStmtNode.html#acbfca1c16427532747e80175e2815a8a">tvm::SeqStmtNode</a>, <a class="el" href="structtvm_1_1tirx_1_1ActiveSet.html#a411ae885eedcc8dd916b1006914f12f5">tvm::tirx::ActiveSet</a>, <a class="el" href="classtvm_1_1W [...]
-<li>SLayout()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1SLayout.html#af5d67c1ac260699b1ca637ab2053d37d">tvm::tirx::SLayout</a></li>
+<li>SLayout()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1SLayout.html#a33961a815fbf438e38c526c3b0de2dc3">tvm::tirx::SLayout</a></li>
 <li>Slice()&#160;:&#160;<a class="el" href="classtvm_1_1te_1_1Tensor_1_1Slice.html#ab314819e8bcca6421e9a4f33e48578c3">tvm::te::Tensor::Slice</a>, <a class="el" href="classtvm_1_1tirx_1_1ComposeLayoutNode.html#a03af3801970aa925d4ccc5ad5dab4ffc">tvm::tirx::ComposeLayoutNode</a>, <a class="el" href="classtvm_1_1tirx_1_1LayoutNode.html#abcf6cd2ebb6dab87215fdca0183b439f">tvm::tirx::LayoutNode</a>, <a class="el" href="classtvm_1_1tirx_1_1TileLayoutNode.html#a1369f26719f092520d1967997d987424">t [...]
 <li>SliceDoc()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1SliceDoc.html#af2678e96cf9d1c82e4468b6bad8bf4e9">tvm::script::printer::SliceDoc</a></li>
 <li>soft_nms_sigma&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1NonMaximumSuppressionAttrs.html#a64596b167473f3bc8aff3ddcfd7d4e4b">tvm::relax::NonMaximumSuppressionAttrs</a></li>
diff --git a/docs/reference/api/doxygen/functions_t.html b/docs/reference/api/doxygen/functions_t.html
index fd17f4e177d..ccd483c14be 100644
--- a/docs/reference/api/doxygen/functions_t.html
+++ b/docs/reference/api/doxygen/functions_t.html
@@ -89,7 +89,7 @@ $(function() {
 <li>TaskScheduler()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TaskScheduler.html#a25daa154a4bacc6a29be32301984a22b">tvm::s_tir::meta_schedule::TaskScheduler</a></li>
 <li>te_grad_kwargs&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1CallTIRWithGradAttrs.html#afad3a6b3d8350e9c02736d09aaf90bd1">tvm::relax::CallTIRWithGradAttrs</a></li>
 <li>te_grad_name&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1CallTIRWithGradAttrs.html#a9a9a9fa22fc80aff2d71b46e6515879a">tvm::relax::CallTIRWithGradAttrs</a></li>
-<li>Tensor()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a13828a9652f856b2e654c143cd29eee6">tvm::runtime::Tensor</a>, <a class="el" href="classtvm_1_1te_1_1Tensor.html#af6b777ba59ab1afb6d4da3fb9f38a357">tvm::te::Tensor</a></li>
+<li>Tensor()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1Tensor.html#a13828a9652f856b2e654c143cd29eee6">tvm::runtime::Tensor</a>, <a class="el" href="classtvm_1_1te_1_1Tensor.html#a7d6e6bba3b098fc14f7f74a98fe28537">tvm::te::Tensor</a></li>
 <li>tensor_ty&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1distributed_1_1DTensorTypeNode.html#a26dc2379bb166c7fe99d45858f69de42">tvm::relax::distributed::DTensorTypeNode</a></li>
 <li>TensorDom()&#160;:&#160;<a class="el" href="structtvm_1_1te_1_1TensorDom.html#a1c1c057115d9dbeec11ff717bf18430b">tvm::te::TensorDom</a></li>
 <li>TensorInfo()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TensorInfo.html#acf73abc700776ff27a54c5bfbb8d5ccd">tvm::s_tir::meta_schedule::TensorInfo</a></li>
@@ -100,11 +100,11 @@ $(function() {
 <li>TensorLoadNode()&#160;:&#160;<a class="el" href="classtvm_1_1TensorLoadNode.html#a08f60369caf2ad19924ef22ef0d98f74">tvm::TensorLoadNode</a></li>
 <li>TensorMapType()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorMapType.html#a7c2e43be08f81b8cb9e9913607264f91">tvm::tirx::TensorMapType</a></li>
 <li>TensorRegion()&#160;:&#160;<a class="el" href="classtvm_1_1TensorRegion.html#abb98087a654cb1db8aee73371bf913ea">tvm::TensorRegion</a></li>
-<li>TensorRegionNode()&#160;:&#160;<a class="el" href="classtvm_1_1TensorRegionNode.html#a045dbc6ccb25d900abfe062611fd2005">tvm::TensorRegionNode</a></li>
+<li>TensorRegionNode()&#160;:&#160;<a class="el" href="classtvm_1_1TensorRegionNode.html#a735f61a61ac13e6950927646f1d470a2">tvm::TensorRegionNode</a></li>
 <li>TensorRegionType()&#160;:&#160;<a class="el" href="classtvm_1_1TensorRegionType.html#a2132aa9ab39f0a8fbb1c09f791bd2a8c">tvm::TensorRegionType</a></li>
 <li>TensorStore()&#160;:&#160;<a class="el" href="classtvm_1_1TensorStore.html#ab861ba55d3414cf43a4f3aa90933cb33">tvm::TensorStore</a></li>
 <li>TensorStoreNode()&#160;:&#160;<a class="el" href="classtvm_1_1TensorStoreNode.html#a50bcf9d8d1719a2260af9eb445470291">tvm::TensorStoreNode</a></li>
-<li>TensorType()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1TensorType.html#ae41d1240dfabfeb8039262b9802960ae">tvm::relax::TensorType</a>, <a class="el" href="classtvm_1_1tirx_1_1TensorType.html#a05111660c3b9db58c77d775e03a29014">tvm::tirx::TensorType</a></li>
+<li>TensorType()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1TensorType.html#aaf0a2c1bc2de029fb2949793c1895e5c">tvm::relax::TensorType</a>, <a class="el" href="classtvm_1_1tirx_1_1TensorType.html#a05111660c3b9db58c77d775e03a29014">tvm::tirx::TensorType</a></li>
 <li>TensorTypeNode()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorTypeNode.html#a5ae44e202ab143e98e27b17b702f3eaa">tvm::tirx::TensorTypeNode</a></li>
 <li>TensorVar()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#af04669651eeae9466cdf16e7396933d8">tvm::tirx::TensorVar</a></li>
 <li>TerminateTask()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TaskSchedulerNode.html#a47eca9f404e554a68aad9df5a9ec9745">tvm::s_tir::meta_schedule::TaskSchedulerNode</a></li>
@@ -123,7 +123,7 @@ $(function() {
 <li>tile_layout&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1ComposeLayoutNode.html#a4c90358e33fcb3f5e9c8dddf7329b814">tvm::tirx::ComposeLayoutNode</a></li>
 <li>TileLayout()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TileLayout.html#a9317589823ea5b704d135721be94431e">tvm::tirx::TileLayout</a></li>
 <li>TimedScope()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1Profiler.html#aa808076cd8e770318d18a1cf7fa1d5c7">tvm::s_tir::meta_schedule::Profiler</a></li>
-<li>TIRFrame()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrame.html#a2494400e71e245dd6ef829c22e979783">tvm::script::ir_builder::tirx::TIRFrame</a></li>
+<li>TIRFrame()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tirx_1_1TIRFrame.html#aa8117c4c56bc11ece758742b208f3386">tvm::script::ir_builder::tirx::TIRFrame</a></li>
 <li>to_users_&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1DataflowBlockRewriteNode.html#a667829eb57e5e2ca06817f15dc4e45ff">tvm::relax::DataflowBlockRewriteNode</a></li>
 <li>ToConfig()&#160;:&#160;<a class="el" href="classtvm_1_1TargetNode.html#ace76fa9881beb34df981af0d42723021">tvm::TargetNode</a></li>
 <li>ToDual()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1SLayoutAxis.html#ad46be2c6241a2451a2e86e743fa91106">tvm::tirx::SLayoutAxis</a></li>
@@ -135,7 +135,7 @@ $(function() {
 <li>total_timer&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1ProfilerNode.html#a471ccef4fb1252ba84603deb04b4337d">tvm::s_tir::meta_schedule::ProfilerNode</a></li>
 <li>TouchTask()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TaskSchedulerNode.html#a96dad2bf37679aba787f4e4b81c979f9">tvm::s_tir::meta_schedule::TaskSchedulerNode</a></li>
 <li>trace&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TuningRecordNode.html#a6c420954230cab91f9b839852eafe7fd">tvm::s_tir::meta_schedule::TuningRecordNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#a181cd324ae42a93a5308454122d10ff3">tvm::s_tir::ScheduleNode</a></li>
-<li>Trace()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1Trace.html#a894c9a4fca263f9ad13cec46ac74de11">tvm::s_tir::Trace</a></li>
+<li>Trace()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1Trace.html#aab8cc9848fd4be6164533a515937978c">tvm::s_tir::Trace</a></li>
 <li>Traced()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1Schedule.html#a5e3700664d2588ecb67b05d537fe3bbb">tvm::s_tir::Schedule</a></li>
 <li>training&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1BatchNormAttrs.html#a4dad5a52a849719b33e28fa68042616a">tvm::relax::BatchNormAttrs</a></li>
 <li>TRandState&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1LinearCongruentialEngine.html#ac02f5a19918906c1af2518756a76e488">tvm::s_tir::LinearCongruentialEngine</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TuneContext.html#a4194936898b815ebd28227cd9a263096">tvm::s_tir::meta_schedule::TuneContext</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TuneContextNode.html#aa2734f0544f44ca1171e768835dc02b4">tvm::s_tir::meta_schedule::TuneContextNode</a></li>
@@ -166,17 +166,18 @@ $(function() {
 <li>TupleTypeNode()&#160;:&#160;<a class="el" href="classtvm_1_1TupleTypeNode.html#a1e9cbe8e91816366c181fb888ddc18d9">tvm::TupleTypeNode</a></li>
 <li>TVM_DEFINE_OBJECT_REF_COW_METHOD()&#160;:&#160;<a class="el" href="classtvm_1_1AssertStmt.html#a401d1c786573cba184a5053bed4a7168">tvm::AssertStmt</a>, <a class="el" href="classtvm_1_1Bind.html#a2e0a42528e5b2510f08d3ff3c43d34ba">tvm::Bind</a>, <a class="el" href="classtvm_1_1Break.html#aacfb1c86342879e973b81c1343f3dffe">tvm::Break</a>, <a class="el" href="classtvm_1_1Call.html#ac7f8d11aa54e549a1154d2d2bd25c461">tvm::Call</a>, <a class="el" href="classtvm_1_1Continue.html#a17b5846e008e [...]
 <li>TVM_FFI_DECLARE_OBJECT_INFO()&#160;:&#160;<a class="el" href="classtvm_1_1AttrsNode.html#ae4806aea36c99253f52625489497803e">tvm::AttrsNode</a>, <a class="el" href="classtvm_1_1BaseFuncNode.html#a92a7f720142c275784235eb9905ee835">tvm::BaseFuncNode</a>, <a class="el" href="classtvm_1_1ConstantNode.html#a7ac1b77b387c65100e701bc11dc958e0">tvm::ConstantNode</a>, <a class="el" href="classtvm_1_1ExprNode.html#a79424fe36b005bfd36e56dfcfcb4a118">tvm::ExprNode</a>, <a class="el" href="classtvm [...]
-<li>TVM_FFI_DECLARE_OBJECT_INFO_FINAL()&#160;:&#160;<a class="el" href="classtvm_1_1AnyTypeNode.html#a1c2008016781a41f62c803986aaad81f">tvm::AnyTypeNode</a>, <a class="el" href="classtvm_1_1ArgumentInfoNode.html#ad5d4e5da3f0998f96b3155ae48b844cc">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1AssertStmtNode.html#ae06276577882fd897fac8ad3b2b0398b">tvm::AssertStmtNode</a>, <a class="el" href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html#ae268a401d28b4d0221b1 [...]
+<li>TVM_FFI_DECLARE_OBJECT_INFO_FINAL()&#160;:&#160;<a class="el" href="classtvm_1_1AnyTypeNode.html#a1c2008016781a41f62c803986aaad81f">tvm::AnyTypeNode</a>, <a class="el" href="classtvm_1_1ArgumentInfoNode.html#ad5d4e5da3f0998f96b3155ae48b844cc">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1AssertStmtNode.html#ae06276577882fd897fac8ad3b2b0398b">tvm::AssertStmtNode</a>, <a class="el" href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html#ae268a401d28b4d0221b1 [...]
 <li>TVM_FFI_DECLARE_OBJECT_INFO_PREDEFINED_TYPE_KEY()&#160;:&#160;<a class="el" href="classtvm_1_1prim_1_1BinaryOpNode.html#a4ea9d6d505a52f8c48703981630df05c">tvm::prim::BinaryOpNode&lt; T &gt;</a>, <a class="el" href="classtvm_1_1prim_1_1CmpOpNode.html#a6f8cddcdbc85626674cffa6d59c585d7">tvm::prim::CmpOpNode&lt; T &gt;</a></li>
 <li>TVM_FFI_DECLARE_OBJECT_INFO_STATIC()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DRefObj.html#a18ed3c1a2f001484e33295fd0b7476aa">tvm::runtime::DRefObj</a></li>
 <li>TVM_FFI_DEFINE_DEFAULT_COPY_MOVE_AND_ASSIGN()&#160;:&#160;<a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a706fea2f129ede37fe7980fda59a3bd1">tvm::tirx::TensorVar</a></li>
-<li>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()&#160;:&#160;<a class="el" href="classtvm_1_1AnyType.html#a801577ea879428083b5da2e81a58e62f">tvm::AnyType</a>, <a class="el" href="classtvm_1_1AssertStmt.html#a701cd68f5cd3422d0b868f538d1686c4">tvm::AssertStmt</a>, <a class="el" href="classtvm_1_1BaseFunc.html#a496463fef22ee43ebd9ace59626a0348">tvm::BaseFunc</a>, <a class="el" href="classtvm_1_1Bind.html#a62bd2536776c6a0c835d49b58749b2b9">tvm::Bind</a>, <a class="el" href="classtvm_1_1Br [...]
+<li>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE()&#160;:&#160;<a class="el" href="classtvm_1_1AnyType.html#a801577ea879428083b5da2e81a58e62f">tvm::AnyType</a>, <a class="el" href="classtvm_1_1AssertStmt.html#a701cd68f5cd3422d0b868f538d1686c4">tvm::AssertStmt</a>, <a class="el" href="classtvm_1_1BaseFunc.html#a496463fef22ee43ebd9ace59626a0348">tvm::BaseFunc</a>, <a class="el" href="classtvm_1_1Bind.html#a62bd2536776c6a0c835d49b58749b2b9">tvm::Bind</a>, <a class="el" href="classtvm_1_1Br [...]
 <li>TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE()&#160;:&#160;<a class="el" href="classtvm_1_1ArgumentInfo.html#ad079f3045ac104e7107ebc3197447462">tvm::ArgumentInfo</a>, <a class="el" href="classtvm_1_1Attrs.html#af88d2fff186ab0af971db3a281cae1ce">tvm::Attrs</a>, <a class="el" href="classtvm_1_1GlobalInfo.html#af82b716ca0477f2bd23aa4a526466126">tvm::GlobalInfo</a>, <a class="el" href="classtvm_1_1Range.html#a592353a8a4642af3d8e26d246436d37e">tvm::Range</a>, <a class="el" href="classtvm_1_ [...]
 <li>ty&#160;:&#160;<a class="el" href="classtvm_1_1ExprNode.html#a4c2a9b792a5ec422d8e04d6d78707fcb">tvm::ExprNode</a>, <a class="el" href="classtvm_1_1relax_1_1MatchCastNode.html#a93a4d080db242436bdee1ae702536324">tvm::relax::MatchCastNode</a>, <a class="el" href="classtvm_1_1relax_1_1TypePatternNode.html#a4c785bb96db69e2bb8b6741009483279">tvm::relax::TypePatternNode</a>, <a class="el" href="classtvm_1_1TypedExpr.html#a7d83b1f31a1cc6f0774df309e207e678">tvm::TypedExpr&lt; ExpectedType &gt [...]
 <li>ty_args&#160;:&#160;<a class="el" href="classtvm_1_1CallNode.html#aea255b3c2342dc40ac3b2a4af9d332a0">tvm::CallNode</a></li>
 <li>ty_args_info&#160;:&#160;<a class="el" href="classtvm_1_1OpNode.html#a59a1176e5da55aa98a8447c2da8e3830">tvm::OpNode</a></li>
+<li>type&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1PairCons.html#aa7fe6fdef3ab68d2f5176485000646b9">tvm::relax::PairCons</a></li>
 <li>Type&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1PairCons.html#ab64ed8db46c468684a6e00fcb6530647">tvm::relax::PairCons</a></li>
-<li>type&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1PairCons.html#aa7fe6fdef3ab68d2f5176485000646b9">tvm::relax::PairCons</a>, <a class="el" href="classtvm_1_1runtime_1_1memory_1_1Allocator.html#a5690ce0a8e9e25bd8e5568173cc0b1bb">tvm::runtime::memory::Allocator</a>, <a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a42fcd94536191d8b98f75a6a0bfc3f7a">tvm::tirx::TensorVar</a></li>
+<li>type()&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1memory_1_1Allocator.html#a5690ce0a8e9e25bd8e5568173cc0b1bb">tvm::runtime::memory::Allocator</a>, <a class="el" href="classtvm_1_1tirx_1_1TensorVar.html#a42fcd94536191d8b98f75a6a0bfc3f7a">tvm::tirx::TensorVar</a></li>
 <li>type_params&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1FunctionDocNode.html#a6b3656238d197981cf25870e7f7bb1ab">tvm::script::printer::FunctionDocNode</a></li>
 <li>type_str&#160;:&#160;<a class="el" href="structtvm_1_1ConfigSchema_1_1OptionEntry.html#a196a591fb39df500cf45fe3ec15e7a8d">tvm::ConfigSchema::OptionEntry</a></li>
 <li>TypedEnvFunc()&#160;:&#160;<a class="el" href="classtvm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html#a41a6b9014d0feeb628ca7edfd0d26f0b">tvm::TypedEnvFunc&lt; R(Args...)&gt;</a></li>
diff --git a/docs/reference/api/doxygen/functions_v.html b/docs/reference/api/doxygen/functions_v.html
index 8086555c85f..528905bb85c 100644
--- a/docs/reference/api/doxygen/functions_v.html
+++ b/docs/reference/api/doxygen/functions_v.html
@@ -82,7 +82,7 @@ $(function() {
 <li>value_to_bound_var&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1transform_1_1PatternCheckContextNode.html#a015fa5f7ff630ae7aa065fc169817f9f">tvm::relax::transform::PatternCheckContextNode</a></li>
 <li>values&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1ShapeExprNode.html#a0b018e0a288a46268ab03b0f4fd54e1c">tvm::relax::ShapeExprNode</a>, <a class="el" href="classtvm_1_1relax_1_1ShapeTypeNode.html#add3416d082274253baf955642455fcf6">tvm::relax::ShapeTypeNode</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1DictDocNode.html#af448345c2b322d0a35453c8b602e50d3">tvm::script::printer::DictDocNode</a></li>
 <li>var&#160;:&#160;<a class="el" href="classtvm_1_1BindNode.html#a949f264baee2e8012335b8a1df58cddd">tvm::BindNode</a>, <a class="el" href="classtvm_1_1prim_1_1LetNode.html#a46efb191894de5fe00445a43c3d683a7">tvm::prim::LetNode</a>, <a class="el" href="classtvm_1_1relax_1_1BindingNode.html#a31222a9c83a8532274cd8a56f991157b">tvm::relax::BindingNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1IterVarNode.html#a358127fd9f63fadfcdd2f20bdff4d705">tvm::s_tir::IterVarNode</a>, <a class="el" h [...]
-<li>Var()&#160;:&#160;<a class="el" href="classtvm_1_1Var.html#ab1e43f83b3c137b969c484465eb65337">tvm::Var</a></li>
+<li>Var()&#160;:&#160;<a class="el" href="classtvm_1_1Var.html#ae5aba21bb7c1a09774273f4f2b5ef0d8">tvm::Var</a></li>
 <li>var_args_info&#160;:&#160;<a class="el" href="classtvm_1_1OpNode.html#a126f0c272afde9f28489d80e446fb5c8">tvm::OpNode</a></li>
 <li>var_get_or_alloc_id&#160;:&#160;<a class="el" href="structtvm_1_1script_1_1printer_1_1DocTranslatorVTable.html#adaf16dc3885bed39cc9daba196e5abd1">tvm::script::printer::DocTranslatorVTable</a></li>
 <li>var_name&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1relax_1_1IfFrameNode.html#ab7e517b6100fa4c236bd88cc1a9a600a">tvm::script::ir_builder::relax::IfFrameNode</a></li>
@@ -91,7 +91,7 @@ $(function() {
 <li>var_ty_args_info&#160;:&#160;<a class="el" href="classtvm_1_1OpNode.html#ab6e6b14ea08f87dbb30148bae6a6d5a6">tvm::OpNode</a></li>
 <li>var_usages&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1transform_1_1PatternCheckContextNode.html#afa29eae60eeea28891d6efebf3ef61fa">tvm::relax::transform::PatternCheckContextNode</a></li>
 <li>VarBinding()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1VarBinding.html#afb0005363849fbf3f188657fcd2c247b">tvm::relax::VarBinding</a></li>
-<li>VarBindingNode()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1VarBindingNode.html#a3d62925ef25535c562bfbc6e9ee86ee7">tvm::relax::VarBindingNode</a></li>
+<li>VarBindingNode()&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1VarBindingNode.html#ad553ea0582fd478684eb10480ca9fff1">tvm::relax::VarBindingNode</a></li>
 <li>varg_default_wildcard&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1CallPatternNode.html#a06bae27dbf4398894632f88f75f6f623">tvm::relax::CallPatternNode</a></li>
 <li>VarGetOrAllocId()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1DocTranslatorObj.html#ad177ca6b4dd438224afdf993dbf7002c">tvm::script::printer::DocTranslatorObj</a></li>
 <li>variances&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1MultiboxTransformLocAttrs.html#a867153646fdde09eb89aa93c330a0355">tvm::relax::MultiboxTransformLocAttrs</a></li>
diff --git a/docs/reference/api/doxygen/functions_vars_a.html b/docs/reference/api/doxygen/functions_vars_a.html
index e87b0fc7dd4..c4f9d93db90 100644
--- a/docs/reference/api/doxygen/functions_vars_a.html
+++ b/docs/reference/api/doxygen/functions_vars_a.html
@@ -96,7 +96,7 @@ $(function() {
 <li>annotations&#160;:&#160;<a class="el" href="classtvm_1_1ForNode.html#ab9ae1f41c715c0a8c8dcdcf3b4c9823f">tvm::ForNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1SBlockNode.html#ae70f381c587a0a085367e74309ebfe2f">tvm::s_tir::SBlockNode</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1s__tir_1_1SBlockFrameNode.html#a5238ce3fae21d21fc62330c207cf08e2">tvm::script::ir_builder::s_tir::SBlockFrameNode</a></li>
 <li>apply_softmax&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1MultiboxTransformLocAttrs.html#a2edaf8d654ebb18f47b4a3ef2e6810f4">tvm::relax::MultiboxTransformLocAttrs</a></li>
 <li>arg_types&#160;:&#160;<a class="el" href="classtvm_1_1FuncTypeNode.html#aa8e067bd61ced30bc55f637f4792aef4">tvm::FuncTypeNode</a></li>
-<li>args&#160;:&#160;<a class="el" href="classtvm_1_1CallNode.html#a323af62ed5243b5db00eb1832f842a1c">tvm::CallNode</a>, <a class="el" href="classtvm_1_1RegionStmtNode.html#aa0ff83b20975a305cff8622fcfed9cbe">tvm::RegionStmtNode</a>, <a class="el" href="classtvm_1_1relax_1_1CallPatternNode.html#a747a5214b15a6288560fdd359eeb7c75">tvm::relax::CallPatternNode</a>, <a class="el" href="classtvm_1_1relax_1_1SameShapeConstraintNode.html#ac5f5eb8f9a7e1f83966726767fec6568">tvm::relax::SameShapeCon [...]
+<li>args&#160;:&#160;<a class="el" href="classtvm_1_1CallNode.html#a323af62ed5243b5db00eb1832f842a1c">tvm::CallNode</a>, <a class="el" href="classtvm_1_1RegionStmtNode.html#aa0ff83b20975a305cff8622fcfed9cbe">tvm::RegionStmtNode</a>, <a class="el" href="classtvm_1_1relax_1_1CallPatternNode.html#a747a5214b15a6288560fdd359eeb7c75">tvm::relax::CallPatternNode</a>, <a class="el" href="classtvm_1_1relax_1_1SameShapeConstraintNode.html#ac5f5eb8f9a7e1f83966726767fec6568">tvm::relax::SameShapeCon [...]
 <li>args_info&#160;:&#160;<a class="el" href="classtvm_1_1OpNode.html#a1106cc90ca7823f513807317116b87e0">tvm::OpNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1MeasureCandidateNode.html#a3eaf9e7d35f07938f40ae6b056fd9522">tvm::s_tir::meta_schedule::MeasureCandidateNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1RunnerInputNode.html#adda3434c59e17fe2b9159ac1e0b105e4">tvm::s_tir::meta_schedule::RunnerInputNode</a>, <a class="el" href="classtvm_1_1 [...]
 <li>artifact_path&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1BuilderResultNode.html#a6b42b9c07eafa45985402eac9379b380">tvm::s_tir::meta_schedule::BuilderResultNode</a>, <a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1RunnerInputNode.html#aa654ac5e47a68b46e70271d1652188ee">tvm::s_tir::meta_schedule::RunnerInputNode</a></li>
 <li>assume_inbound&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1StridedSliceAttrs.html#a8168d3fe82679449981a4e26ba3b84ba">tvm::relax::StridedSliceAttrs</a></li>
diff --git a/docs/reference/api/doxygen/functions_vars_c.html b/docs/reference/api/doxygen/functions_vars_c.html
index c3368769d3a..c9f763e0f96 100644
--- a/docs/reference/api/doxygen/functions_vars_c.html
+++ b/docs/reference/api/doxygen/functions_vars_c.html
@@ -73,7 +73,7 @@ $(function() {
 
 <h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
 <li>callbacks&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a45f552bb19d593f4ecc4b3b5d69cf8dc">tvm::script::ir_builder::IRBuilderFrameNode</a>, <a class="el" href="classtvm_1_1tirx_1_1DispatchContextNode.html#a3e48b15d23856ba7c084531dae51fb7b">tvm::tirx::DispatchContextNode</a></li>
-<li>callee&#160;:&#160;<a class="el" href="classtvm_1_1CallSiteLocNode.html#a40365565ed92a9de7a0b2023befbc306">tvm::CallSiteLocNode</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#afd99b131a9accf85284b528203e71413">tvm::script::printer::CallDocNode</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#adbcf4a3aabbe1d82f73fc2d5f6154f6b">tvm::script::printer::OpCallDocNode</a></li>
+<li>callee&#160;:&#160;<a class="el" href="classtvm_1_1CallSiteLocNode.html#a40365565ed92a9de7a0b2023befbc306">tvm::CallSiteLocNode</a>, <a class="el" href="classtvm_1_1script_1_1printer_1_1CallDocNode.html#afd99b131a9accf85284b528203e71413">tvm::script::printer::CallDocNode</a></li>
 <li>caller&#160;:&#160;<a class="el" href="classtvm_1_1CallSiteLocNode.html#af6317bd3ebd9e9c2a8d9e39d91cfafe9">tvm::CallSiteLocNode</a></li>
 <li>canonical_name&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1NamespaceDocNode.html#aff1146b3556123ae0384c7ff0976aac6">tvm::script::printer::NamespaceDocNode</a></li>
 <li>canonical_simplify&#160;:&#160;<a class="el" href="classtvm_1_1sym_1_1AnalyzerObj.html#a999515b92f3ff3a5e4b0a18580c590ae">tvm::sym::AnalyzerObj</a></li>
@@ -90,7 +90,7 @@ $(function() {
 <li>comment&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1StmtDocNode.html#a99434a755a816459b365afd7caf52b78">tvm::script::printer::StmtDocNode</a></li>
 <li>cond&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1IfExprNode.html#a6fe48357f17d2a412839db1e72308139">tvm::relax::IfExprNode</a>, <a class="el" href="structtvm_1_1runtime_1_1vm_1_1Instruction.html#a0a9bcefef97c5a7fd11a1dc5103669a2">tvm::runtime::vm::Instruction</a></li>
 <li>condition&#160;:&#160;<a class="el" href="classtvm_1_1AssertStmtNode.html#a42219a8d7a570a32b37fb4c1dd705a03">tvm::AssertStmtNode</a>, <a class="el" href="classtvm_1_1IfNode.html#a4e77795d3f6677cf272cbedac0fd70cd">tvm::IfNode</a>, <a class="el" href="classtvm_1_1prim_1_1SelectNode.html#a7be5da5d136256b91131ace2e5c55cb9">tvm::prim::SelectNode</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1ir_1_1AssertFrameNode.html#ae23a7e2026a82b0707302f4e3b2babcd">tvm::script::ir_build [...]
-<li>config&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ab587d4e63b73fc2411792cba3517b5ae">tvm::script::printer::OpCallDocNode</a>, <a class="el" href="classtvm_1_1transform_1_1PassContextNode.html#a3eefdea0d7b623abd48b2fb3341631a5">tvm::transform::PassContextNode</a></li>
+<li>config&#160;:&#160;<a class="el" href="classtvm_1_1transform_1_1PassContextNode.html#a3eefdea0d7b623abd48b2fb3341631a5">tvm::transform::PassContextNode</a></li>
 <li>const_int_bound&#160;:&#160;<a class="el" href="classtvm_1_1sym_1_1AnalyzerObj.html#abb9f2170a0b1cd7ccf173f393c1a2faf">tvm::sym::AnalyzerObj</a></li>
 <li>constants&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1vm_1_1VMExecutable.html#a8db062d10acf0ed58cd2d00426a6106f">tvm::runtime::vm::VMExecutable</a></li>
 <li>coord_start&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1NonMaximumSuppressionAttrs.html#ae7348ffbe5e56d404d819c33b0b1ee17">tvm::relax::NonMaximumSuppressionAttrs</a></li>
diff --git a/docs/reference/api/doxygen/functions_vars_d.html b/docs/reference/api/doxygen/functions_vars_d.html
index 8e40852f316..232507b9e10 100644
--- a/docs/reference/api/doxygen/functions_vars_d.html
+++ b/docs/reference/api/doxygen/functions_vars_d.html
@@ -104,7 +104,6 @@ $(function() {
 <li>dilation&#160;:&#160;<a class="el" href="structtvm_1_1relax_1_1Conv1DAttrs.html#a33a201ca45d510928b740718bed6d95c">tvm::relax::Conv1DAttrs</a>, <a class="el" href="structtvm_1_1relax_1_1Conv1DTransposeAttrs.html#a47ef9b1660a2b90cca2429344d5b82ec">tvm::relax::Conv1DTransposeAttrs</a>, <a class="el" href="structtvm_1_1relax_1_1Conv2DAttrs.html#a450ce3662daf2272d34d3ce216690529">tvm::relax::Conv2DAttrs</a>, <a class="el" href="structtvm_1_1relax_1_1Conv2DTransposeAttrs.html#a48841fafbd3 [...]
 <li>dim_specs&#160;:&#160;<a class="el" href="classtvm_1_1relax_1_1distributed_1_1PlacementNode.html#a2e0c364bf39e9b43c2765b4181b7be97">tvm::relax::distributed::PlacementNode</a></li>
 <li>disabled_pass&#160;:&#160;<a class="el" href="classtvm_1_1transform_1_1PassContextNode.html#a7b3e5ef0dc09987887390887b19d60ea">tvm::transform::PassContextNode</a></li>
-<li>dispatch&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#a9463aa1e349fdaa77ee00318eda01047">tvm::script::printer::OpCallDocNode</a></li>
 <li>dispatched&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1ExtractedTaskNode.html#a8be137581a62630c9b30e5e1d88acaf2">tvm::s_tir::meta_schedule::ExtractedTaskNode</a></li>
 <li>doc&#160;:&#160;<a class="el" href="classtvm_1_1ArgumentInfoNode.html#ac6e758834aeaa009febaf8996e797dc1">tvm::ArgumentInfoNode</a>, <a class="el" href="classtvm_1_1OpNode.html#a581785b139323c424e7980367e597d1f">tvm::OpNode</a></li>
 <li>doc_scopes_&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1DocTranslatorObj.html#a479c72c58a8e22da05cfbc8084abdb2a">tvm::script::printer::DocTranslatorObj</a></li>
diff --git a/docs/reference/api/doxygen/functions_vars_w.html b/docs/reference/api/doxygen/functions_vars_w.html
index 6c57b298a78..9dadfd7f58b 100644
--- a/docs/reference/api/doxygen/functions_vars_w.html
+++ b/docs/reference/api/doxygen/functions_vars_w.html
@@ -78,7 +78,6 @@ $(function() {
 <li>worker_id&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1cuda__ipc_1_1CUDAIPCMemoryObj.html#aee159316a5612aa8dbe42b9941e788b3">tvm::runtime::cuda_ipc::CUDAIPCMemoryObj</a>, <a class="el" href="classtvm_1_1runtime_1_1DiscoWorker.html#a5a6414e30855435fa0e6c0e226867edd">tvm::runtime::DiscoWorker</a></li>
 <li>worker_zero_data&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DiscoWorker.html#ac4a5ec8d54ff321dbb960d442106773f">tvm::runtime::DiscoWorker</a></li>
 <li>workload&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TuningRecordNode.html#a950857678405bdfbedda2632aab850d1">tvm::s_tir::meta_schedule::TuningRecordNode</a></li>
-<li>workspace&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ac5eaf7f682b39836acebf055f7c843ed">tvm::script::printer::OpCallDocNode</a></li>
 <li>writes&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1SBlockNode.html#a0dd25645eb5121832e4f8ad55603d10d">tvm::s_tir::SBlockNode</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1s__tir_1_1SBlockFrameNode.html#aa62d5bcaffc983e9cd032351884c8298">tvm::script::ir_builder::s_tir::SBlockFrameNode</a></li>
 </ul>
 </div><!-- contents -->
diff --git a/docs/reference/api/doxygen/functions_w.html b/docs/reference/api/doxygen/functions_w.html
index 0e36d5b09ac..f82898d97cb 100644
--- a/docs/reference/api/doxygen/functions_w.html
+++ b/docs/reference/api/doxygen/functions_w.html
@@ -93,7 +93,7 @@ $(function() {
 <li>WithDecision()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1TraceNode.html#af5463d12f1e2024136e82421daa9bb11">tvm::s_tir::TraceNode</a></li>
 <li>WithDocScope()&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1DocTranslatorObj.html#a87b934fc34525e7855f4a2f4e9f2b5c7">tvm::script::printer::DocTranslatorObj</a></li>
 <li>WithFilter()&#160;:&#160;<a class="el" href="structtvm_1_1tirx_1_1ExecContext.html#abedc4e591b93385635f69bcc4428d840">tvm::tirx::ExecContext</a></li>
-<li>WithGroup()&#160;:&#160;<a class="el" href="classtvm_1_1WithGroup.html#a506a5212abf0f5d2854f903a599587aa">tvm::WithGroup&lt; ContextType &gt;</a></li>
+<li>WithGroup()&#160;:&#160;<a class="el" href="classtvm_1_1WithGroup.html#a2b06930fa490149e771d9d16c31743b4">tvm::WithGroup&lt; ContextType &gt;</a></li>
 <li>WithHost()&#160;:&#160;<a class="el" href="classtvm_1_1Target.html#a509ce63995f082c80742ea5ca6ac112f">tvm::Target</a></li>
 <li>WithLanes()&#160;:&#160;<a class="el" href="classtvm_1_1PrimType.html#a47021aa229034baedd51cb5bd78a0b6c">tvm::PrimType</a></li>
 <li>WithNewScope()&#160;:&#160;<a class="el" href="classtvm_1_1ScopeStack.html#a428e28b37398a250ea20ea660ef49fad">tvm::ScopeStack&lt; T &gt;</a></li>
@@ -104,11 +104,10 @@ $(function() {
 <li>worker_id&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1cuda__ipc_1_1CUDAIPCMemoryObj.html#aee159316a5612aa8dbe42b9941e788b3">tvm::runtime::cuda_ipc::CUDAIPCMemoryObj</a>, <a class="el" href="classtvm_1_1runtime_1_1DiscoWorker.html#a5a6414e30855435fa0e6c0e226867edd">tvm::runtime::DiscoWorker</a></li>
 <li>worker_zero_data&#160;:&#160;<a class="el" href="classtvm_1_1runtime_1_1DiscoWorker.html#ac4a5ec8d54ff321dbb960d442106773f">tvm::runtime::DiscoWorker</a></li>
 <li>workload&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1TuningRecordNode.html#a950857678405bdfbedda2632aab850d1">tvm::s_tir::meta_schedule::TuningRecordNode</a></li>
-<li>Workload()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1Workload.html#ac58e502d27bb29071ceb6455724392d2">tvm::s_tir::meta_schedule::Workload</a></li>
+<li>Workload()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1meta__schedule_1_1Workload.html#a21acf51a06ad0dbbad3661afc2206953">tvm::s_tir::meta_schedule::Workload</a></li>
 <li>WorkloadEqual()&#160;:&#160;<a class="el" href="structtvm_1_1s__tir_1_1meta__schedule_1_1WorkloadEqual.html#aecd57490b4085910fa0f34d958df11c9">tvm::s_tir::meta_schedule::WorkloadEqual</a></li>
 <li>WorkOn()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#a98c7166dccb89aec6fefe6652ad7cd3f">tvm::s_tir::ScheduleNode</a></li>
-<li>workspace&#160;:&#160;<a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html#ac5eaf7f682b39836acebf055f7c843ed">tvm::script::printer::OpCallDocNode</a></li>
-<li>Write()&#160;:&#160;<a class="el" href="structtvm_1_1support_1_1Serializer_3_01DLDataType_01_4.html#a90e6d264b6b4024fd82eb3ed22b101a8">tvm::support::Serializer&lt; DLDataType &gt;</a>, <a class="el" href="structtvm_1_1support_1_1Serializer_3_01DLDevice_01_4.html#a86809d7b22cf4bdff8ba2cc9d7f34c50">tvm::support::Serializer&lt; DLDevice &gt;</a>, <a class="el" href="structtvm_1_1support_1_1Serializer_3_01ffi_1_1Array_3_01T_01_4_01_4.html#a9464e988515dd37308280cd4901cad43">tvm::support:: [...]
+<li>Write()&#160;:&#160;<a class="el" href="structtvm_1_1support_1_1Serializer_3_01DLDataType_01_4.html#a90e6d264b6b4024fd82eb3ed22b101a8">tvm::support::Serializer&lt; DLDataType &gt;</a>, <a class="el" href="structtvm_1_1support_1_1Serializer_3_01DLDevice_01_4.html#a86809d7b22cf4bdff8ba2cc9d7f34c50">tvm::support::Serializer&lt; DLDevice &gt;</a>, <a class="el" href="structtvm_1_1support_1_1Serializer_3_01ffi_1_1Array_3_01T_01_4_01_4.html#a9464e988515dd37308280cd4901cad43">tvm::support:: [...]
 <li>WriteArray()&#160;:&#160;<a class="el" href="classtvm_1_1support_1_1Stream.html#a2960a1a4127a1a31819df7e13cce553d">tvm::support::Stream</a></li>
 <li>WriteAt()&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1ScheduleNode.html#ac8a6ba36b9a2b94906c9ba2b769953db">tvm::s_tir::ScheduleNode</a></li>
 <li>writes&#160;:&#160;<a class="el" href="classtvm_1_1s__tir_1_1SBlockNode.html#a0dd25645eb5121832e4f8ad55603d10d">tvm::s_tir::SBlockNode</a>, <a class="el" href="classtvm_1_1script_1_1ir__builder_1_1s__tir_1_1SBlockFrameNode.html#aa62d5bcaffc983e9cd032351884c8298">tvm::script::ir_builder::s_tir::SBlockFrameNode</a></li>
diff --git a/docs/reference/api/doxygen/hierarchy.html b/docs/reference/api/doxygen/hierarchy.html
index 5fd5a854d01..14c79571fee 100644
--- a/docs/reference/api/doxygen/hierarchy.html
+++ b/docs/reference/api/doxygen/hierarchy.html
@@ -505,10 +505,9 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <tr id="row_44_74_3_8_" 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_1script_1_1printer_1_1ForDocNode.html" target="_self">tvm::script::printer::ForDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents for statement </td></tr>
 <tr id="row_44_74_3_9_" 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_1script_1_1printer_1_1FunctionDocNode.html" target="_self">tvm::script::printer::FunctionDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents function definition </td></tr>
 <tr id="row_44_74_3_10_" 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_1script_1_1printer_1_1IfDocNode.html" target="_self">tvm::script::printer::IfDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represent if-then-else statement </td></tr>
-<tr id="row_44_74_3_11_" 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_1script_1_1printer_1_1OpCallDocNode.html" target="_self">tvm::script::printer::OpCallDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents call to an TIRX operator </td></tr>
-<tr id="row_44_74_3_12_" 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_1script_1_1printer_1_1ReturnDocNode.html" target="_self">tvm::script::printer::ReturnDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents return statement </td></tr>
-<tr id="row_44_74_3_13_" 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_1script_1_1printer_1_1ScopeDocNode.html" target="_self">tvm::script::printer::ScopeDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents special scopes </td></tr>
-<tr id="row_44_74_3_14_" 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_1script_1_1printer_1_1WhileDocNode.html" target="_self">tvm::script::printer::WhileDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents while statement </td></tr>
+<tr id="row_44_74_3_11_" 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_1script_1_1printer_1_1ReturnDocNode.html" target="_self">tvm::script::printer::ReturnDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents return statement </td></tr>
+<tr id="row_44_74_3_12_" 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_1script_1_1printer_1_1ScopeDocNode.html" target="_self">tvm::script::printer::ScopeDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents special scopes </td></tr>
+<tr id="row_44_74_3_13_" 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_1script_1_1printer_1_1WhileDocNode.html" target="_self">tvm::script::printer::WhileDocNode</a></td><td class="desc"><a class="el" href="classtvm_1_1script_1_1printer_1_1Doc.html" title="Reference type of DocNode.">Doc</a> that represents while statement </td></tr>
 <tr id="row_44_75_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1script_1_1printer_1_1DocTranslatorObj.html" target="_self">tvm::script::printer::DocTranslatorObj</a></td><td class="desc">Eager translation context shared by registered hooks. Hooks construct Docs, use explicit lexical scopes, and attach origins when emitting </td></tr>
 <tr id="row_44_76_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1sym_1_1AnalyzerObj.html" target="_self">tvm::sym::AnalyzerObj</a></td><td class="desc"><a class="el" href="classtvm_1_1sym_1_1Analyzer.html" title="Managed reference to AnalyzerObj.">Analyzer</a> that contains bunch of sub-analyzers </td></tr>
 <tr id="row_44_77_" class="odd" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1sym_1_1ConstIntBoundNode.html" target="_self">tvm::sym::ConstIntBoundNode</a></td><td class="desc"><a class="el" href="classtvm_1_1Constant.html" title="Managed reference to a literal constant.">Constant</a> integer up and lower bound(inclusive). Useful for value bound anal [...]
@@ -798,10 +797,9 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <tr id="row_47_75_3_8_" class="even" 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_1script_1_1printer_1_1ForDoc.html" target="_self">tvm::script::printer::ForDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ForDocNode.html" title="Doc that represents for statement.">ForDocNode</a> </td></tr>
 <tr id="row_47_75_3_9_" class="even" 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_1script_1_1printer_1_1FunctionDoc.html" target="_self">tvm::script::printer::FunctionDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1FunctionDocNode.html" title="Doc that represents function definition.">FunctionDocNod [...]
 <tr id="row_47_75_3_10_" class="even" 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_1script_1_1printer_1_1IfDoc.html" target="_self">tvm::script::printer::IfDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1IfDocNode.html" title="Doc that represent if-then-else statement.">IfDocNode</a> </td></tr>
-<tr id="row_47_75_3_11_" class="even" 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_1script_1_1printer_1_1OpCallDoc.html" target="_self">tvm::script::printer::OpCallDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1OpCallDocNode.html" title="Doc that represents call to an TIRX operator.">OpCallDocNode< [...]
-<tr id="row_47_75_3_12_" class="even" 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_1script_1_1printer_1_1ReturnDoc.html" target="_self">tvm::script::printer::ReturnDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ReturnDocNode.html" title="Doc that represents return statement.">ReturnDocNode</a> </td></tr>
-<tr id="row_47_75_3_13_" class="even" 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_1script_1_1printer_1_1ScopeDoc.html" target="_self">tvm::script::printer::ScopeDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ScopeDocNode.html" title="Doc that represents special scopes.">ScopeDocNode</a> </td></tr>
-<tr id="row_47_75_3_14_" class="even" 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_1script_1_1printer_1_1WhileDoc.html" target="_self">tvm::script::printer::WhileDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1WhileDocNode.html" title="Doc that represents while statement.">WhileDocNode</a> </td></tr>
+<tr id="row_47_75_3_11_" class="even" 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_1script_1_1printer_1_1ReturnDoc.html" target="_self">tvm::script::printer::ReturnDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ReturnDocNode.html" title="Doc that represents return statement.">ReturnDocNode</a> </td></tr>
+<tr id="row_47_75_3_12_" class="even" 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_1script_1_1printer_1_1ScopeDoc.html" target="_self">tvm::script::printer::ScopeDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1ScopeDocNode.html" title="Doc that represents special scopes.">ScopeDocNode</a> </td></tr>
+<tr id="row_47_75_3_13_" class="even" 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_1script_1_1printer_1_1WhileDoc.html" target="_self">tvm::script::printer::WhileDoc</a></td><td class="desc">Reference type of <a class="el" href="classtvm_1_1script_1_1printer_1_1WhileDocNode.html" title="Doc that represents while statement.">WhileDocNode</a> </td></tr>
 <tr id="row_47_76_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1script_1_1printer_1_1DocTranslator.html" target="_self">tvm::script::printer::DocTranslator</a></td><td class="desc">Owning reference to a hook translation context </td></tr>
 <tr id="row_47_77_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1sym_1_1Analyzer.html" target="_self">tvm::sym::Analyzer</a></td><td class="desc">Managed reference to <a class="el" href="classtvm_1_1sym_1_1AnalyzerObj.html" title="Analyzer that contains bunch of sub-analyzers.">AnalyzerObj</a> </td></tr>
 <tr id="row_47_78_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1sym_1_1ConstIntBound.html" target="_self">tvm::sym::ConstIntBound</a></td><td class="desc">Reference class to <a class="el" href="classtvm_1_1sym_1_1ConstIntBoundNode.html" title="Constant integer up and lower bound(inclusive). Useful for value bound analysis.">ConstIntBou [...]
@@ -845,7 +843,8 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <tr id="row_49_4_" class="even" style="display:none;"><td class="entry"><span style="width:32px;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">tvm::ffi::TypeTraits&lt; PrimExpr &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_49_5_" class="even" style="display:none;"><td class="entry"><span style="width:32px;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">tvm::ffi::TypeTraits&lt; PrimType &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_49_6_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01SeqStmt_01_4.html" target="_self">tvm::ffi::TypeTraits&lt; SeqStmt &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_49_7_" class="even" style="display:none;"><td class="entry"><span style="width:32px;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_1StringImm_01_4.html" target="_self">tvm::ffi::TypeTraits&lt; tvm::StringImm &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_49_7_" class="even" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ffi_1_1TypeTraits_3_01TensorRegion_01_4.html" target="_self">tvm::ffi::TypeTraits&lt; TensorRegion &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_49_8_" class="even" style="display:none;"><td class="entry"><span style="width:32px;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_1StringImm_01_4.html" target="_self">tvm::ffi::TypeTraits&lt; tvm::StringImm &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_50_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1OpAttrMap.html" target="_self">tvm::OpAttrMap&lt; ValueType &gt;</a></td><td class="desc">Typed live view of an <a class="el" href="classtvm_1_1Op.html" title="Reference-counted handle to a canonical named operator.">Op</a> attribute column </td></tr>
 <tr id="row_51_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtvm_1_1OpDef.html" target="_self">tvm::OpDef</a></td><td class="desc">Noncopyable temporary builder for a canonical <a class="el" href="classtvm_1_1Op.html" title="Reference-counted handle to a canonical named operator.">Op</a>; see <a class="el" href="classtvm_1_1Op.html" title="Reference-counted handle  [...]
 <tr id="row_52_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtvm_1_1ConfigSchema_1_1OptionEntry.html" target="_self">tvm::ConfigSchema::OptionEntry</a></td><td class="desc">Schema entry for one declared option </td></tr>
diff --git a/docs/reference/api/doxygen/inherit_graph_14.svg b/docs/reference/api/doxygen/inherit_graph_14.svg
index 49a7731b5ca..f8436de2e28 100644
--- a/docs/reference/api/doxygen/inherit_graph_14.svg
+++ b/docs/reference/api/doxygen/inherit_graph_14.svg
@@ -27,9 +27,9 @@
 </g>
 </g>
 <!-- Node0&#45;&gt;Node1 -->
-<g id="edge717_Node000000_Node000001" class="edge">
+<g id="edge716_Node000000_Node000001" class="edge">
 <title>Node0&#45;&gt;Node1</title>
-<g id="a_edge717_Node000000_Node000001"><a xlink:title=" ">
+<g id="a_edge716_Node000000_Node000001"><a xlink:title=" ">
 <path fill="none" stroke="#63b8ff" d="M99.06,-9.5C107.46,-9.5 116.18,-9.5 124.69,-9.5"/>
 <polygon fill="#63b8ff" stroke="#63b8ff" points="99.01,-6 89.01,-9.5 99.01,-13 99.01,-6"/>
 </a>
diff --git a/docs/reference/api/doxygen/inherit_graph_23.svg b/docs/reference/api/doxygen/inherit_graph_23.svg
index b4f7c1dc3a1..8f564603a6f 100644
--- a/docs/reference/api/doxygen/inherit_graph_23.svg
+++ b/docs/reference/api/doxygen/inherit_graph_23.svg
@@ -28,9 +28,9 @@
 </g>
 </g>
 <!-- Node0&#45;&gt;Node1 -->
-<g id="edge718_Node000000_Node000001" class="edge">
+<g id="edge717_Node000000_Node000001" class="edge">
 <title>Node0&#45;&gt;Node1</title>
-<g id="a_edge718_Node000000_Node000001"><a xlink:title=" ">
+<g id="a_edge717_Node000000_Node000001"><a xlink:title=" ">
 <path fill="none" stroke="#63b8ff" d="M167.53,-15C175.99,-15 184.52,-15 192.85,-15"/>
 <polygon fill="#63b8ff" stroke="#63b8ff" points="167.26,-11.5 157.26,-15 167.26,-18.5 167.26,-11.5"/>
 </a>
diff --git a/docs/reference/api/doxygen/inherit_graph_24.svg b/docs/reference/api/doxygen/inherit_graph_24.svg
index 65a19bdaccc..961d50d9867 100644
--- a/docs/reference/api/doxygen/inherit_graph_24.svg
+++ b/docs/reference/api/doxygen/inherit_graph_24.svg
@@ -28,9 +28,9 @@
 </g>
 </g>
 <!-- Node0&#45;&gt;Node1 -->
-<g id="edge719_Node000000_Node000001" class="edge">
+<g id="edge718_Node000000_Node000001" class="edge">
 <title>Node0&#45;&gt;Node1</title>
-<g id="a_edge719_Node000000_Node000001"><a xlink:title=" ">
+<g id="a_edge718_Node000000_Node000001"><a xlink:title=" ">
 <path fill="none" stroke="#63b8ff" d="M141.24,-15C149.71,-15 158.36,-15 166.87,-15"/>
 <polygon fill="#63b8ff" stroke="#63b8ff" points="141.01,-11.5 131.01,-15 141.01,-18.5 141.01,-11.5"/>
 </a>
@@ -46,9 +46,9 @@
 </g>
 </g>
 <!-- Node1&#45;&gt;Node2 -->
-<g id="edge720_Node000001_Node000002" class="edge">
+<g id="edge719_Node000001_Node000002" class="edge">
 <title>Node1&#45;&gt;Node2</title>
-<g id="a_edge720_Node000001_Node000002"><a xlink:title=" ">
+<g id="a_edge719_Node000001_Node000002"><a xlink:title=" ">
 <path fill="none" stroke="#63b8ff" d="M334.31,-15C342.92,-15 351.55,-15 359.88,-15"/>
 <polygon fill="#63b8ff" stroke="#63b8ff" points="334.23,-11.5 324.23,-15 334.23,-18.5 334.23,-11.5"/>
 </a>
diff --git a/docs/reference/api/doxygen/inherit_graph_27.svg b/docs/reference/api/doxygen/inherit_graph_27.svg
index 38203ad714f..98c5b170c85 100644
--- a/docs/reference/api/doxygen/inherit_graph_27.svg
+++ b/docs/reference/api/doxygen/inherit_graph_27.svg
@@ -28,9 +28,9 @@
 </g>
 </g>
 <!-- Node0&#45;&gt;Node1 -->
-<g id="edge721_Node000000_Node000001" class="edge">
+<g id="edge720_Node000000_Node000001" class="edge">
 <title>Node0&#45;&gt;Node1</title>
-<g id="a_edge721_Node000000_Node000001"><a xlink:title=" ">
+<g id="a_edge720_Node000000_Node000001"><a xlink:title=" ">
 <path fill="none" stroke="#63b8ff" d="M141.22,-15C149.81,-15 158.51,-15 166.91,-15"/>
 <polygon fill="#63b8ff" stroke="#63b8ff" points="141.19,-11.5 131.19,-15 141.19,-18.5 141.19,-11.5"/>
 </a>
diff --git a/docs/reference/api/doxygen/inherit_graph_3.svg b/docs/reference/api/doxygen/inherit_graph_3.svg
index 19c5b08c19b..395e4d0f331 100644
--- a/docs/reference/api/doxygen/inherit_graph_3.svg
+++ b/docs/reference/api/doxygen/inherit_graph_3.svg
@@ -4,16 +4,16 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: Graphical Class Hierarchy Pages: 1 -->
-<svg width="1145pt" height="10504pt"
- viewBox="0.00 0.00 1145.00 10504.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 10500)">
+<svg width="1145pt" height="10456pt"
+ viewBox="0.00 0.00 1145.00 10456.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 10452)">
 <title>Graphical Class Hierarchy</title>
 <!-- Node0 -->
 <g id="Node000000" class="node">
 <title>Node0</title>
 <g id="a_Node000000"><a xlink:title=" ">
-<polygon fill="#e0e0e0" stroke="#999999" points="64,-2270 0,-2270 0,-2251 64,-2251 64,-2270"/>
-<text text-anchor="middle" x="32" y="-2258" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
+<polygon fill="#e0e0e0" stroke="#999999" points="64,-2222 0,-2222 0,-2203 64,-2203 64,-2222"/>
+<text text-anchor="middle" x="32" y="-2210" font-family="Helvetica,sans-Serif" font-size="10.00">ffi::Object</text>
 </a>
 </g>
 </g>
@@ -21,8 +21,8 @@
 <g id="Node000001" class="node">
 <title>Node1</title>
 <g id="a_Node000001"><a xlink:href="classtvm_1_1ArgumentInfoNode.html" target="_top" xlink:title="An operator argument&#39;s name and documentation.">
-<polygon fill="white" stroke="#666666" points="265.5,-8661 131.5,-8661 131.5,-8642 265.5,-8642 265.5,-8661"/>
-<text text-anchor="middle" x="198.5" y="-8649" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ArgumentInfoNode</text>
+<polygon fill="white" stroke="#666666" points="265.5,-8613 131.5,-8613 131.5,-8594 265.5,-8594 265.5,-8613"/>
+<text text-anchor="middle" x="198.5" y="-8601" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ArgumentInfoNode</text>
 </a>
 </g>
 </g>
@@ -30,8 +30,8 @@
 <g id="edge5_Node000000_Node000001" class="edge">
 <title>Node0&#45;&gt;Node1</title>
 <g id="a_edge5_Node000000_Node000001"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.03,-2280.32C33.71,-2666.55 44.88,-8567.98 100,-8633.5 108.03,-8643.05 119.34,-8648.63 131.41,-8651.73"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.53,-2280.3 33.02,-2270.31 29.53,-2280.32 36.53,-2280.3"/>
+<path fill="none" stroke="#63b8ff" d="M33.03,-2232.32C33.71,-2618.55 44.88,-8519.98 100,-8585.5 108.03,-8595.05 119.34,-8600.63 131.41,-8603.73"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.53,-2232.3 33.02,-2222.31 29.53,-2232.32 36.53,-2232.3"/>
 </a>
 </g>
 </g>
@@ -39,8 +39,8 @@
 <g id="Node000002" class="node">
 <title>Node2</title>
 <g id="a_Node000002"><a xlink:href="classtvm_1_1AttrsNode.html" target="_top" xlink:title="Base class of all attribute class.">
-<polygon fill="white" stroke="#666666" points="244,-8624 153,-8624 153,-8605 244,-8605 244,-8624"/>
-<text text-anchor="middle" x="198.5" y="-8612" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::AttrsNode</text>
+<polygon fill="white" stroke="#666666" points="244,-8576 153,-8576 153,-8557 244,-8557 244,-8576"/>
+<text text-anchor="middle" x="198.5" y="-8564" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::AttrsNode</text>
 </a>
 </g>
 </g>
@@ -48,8 +48,8 @@
 <g id="edge6_Node000000_Node000002" class="edge">
 <title>Node0&#45;&gt;Node2</title>
 <g id="a_edge6_Node000000_Node000002"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.25,-2280.61C35.92,-2492.63 59.8,-4339.17 100,-5833.5 131.73,-7013.07 191.67,-8473.35 197.1,-8604.92"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.75,-2280.31 33.12,-2270.36 29.75,-2280.4 36.75,-2280.31"/>
+<path fill="none" stroke="#63b8ff" d="M33.25,-2232.61C35.92,-2444.63 59.8,-4291.17 100,-5785.5 131.73,-6965.07 191.67,-8425.35 197.1,-8556.92"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.75,-2232.31 33.12,-2222.36 29.75,-2232.4 36.75,-2232.31"/>
 </a>
 </g>
 </g>
@@ -57,8 +57,8 @@
 <g id="Node000090" class="node">
 <title>Node90</title>
 <g id="a_Node000090"><a xlink:href="classtvm_1_1EnvFuncNode.html" target="_top" xlink:title="A serializable function backed by TVM&#39;s global environment.">
-<polygon fill="white" stroke="#666666" points="252.5,-5824 144.5,-5824 144.5,-5805 252.5,-5805 252.5,-5824"/>
-<text text-anchor="middle" x="198.5" y="-5812" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::EnvFuncNode</text>
+<polygon fill="white" stroke="#666666" points="252.5,-5776 144.5,-5776 144.5,-5757 252.5,-5757 252.5,-5776"/>
+<text text-anchor="middle" x="198.5" y="-5764" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::EnvFuncNode</text>
 </a>
 </g>
 </g>
@@ -66,8 +66,8 @@
 <g id="edge94_Node000000_Node000090" class="edge">
 <title>Node0&#45;&gt;Node90</title>
 <g id="a_edge94_Node000000_Node000090"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.03,-2280.45C33.43,-2561.74 39.27,-5724.92 100,-5796.5 110.91,-5809.36 127.76,-5815.02 144.4,-5817.09"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.53,-2280.12 33.01,-2270.13 29.53,-2280.13 36.53,-2280.12"/>
+<path fill="none" stroke="#63b8ff" d="M33.03,-2232.45C33.43,-2513.74 39.27,-5676.92 100,-5748.5 110.91,-5761.36 127.76,-5767.02 144.4,-5769.09"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.53,-2232.12 33.01,-2222.13 29.53,-2232.13 36.53,-2232.12"/>
 </a>
 </g>
 </g>
@@ -75,8 +75,8 @@
 <g id="Node000091" class="node">
 <title>Node91</title>
 <g id="a_Node000091"><a xlink:href="classtvm_1_1ExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="#666666" points="243,-5787 154,-5787 154,-5768 243,-5768 243,-5787"/>
-<text text-anchor="middle" x="198.5" y="-5775" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
+<polygon fill="white" stroke="#666666" points="243,-5739 154,-5739 154,-5720 243,-5720 243,-5739"/>
+<text text-anchor="middle" x="198.5" y="-5727" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::ExprNode</text>
 </a>
 </g>
 </g>
@@ -84,8 +84,8 @@
 <g id="edge95_Node000000_Node000091" class="edge">
 <title>Node0&#45;&gt;Node91</title>
 <g id="a_edge95_Node000000_Node000091"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.89,-2280.53C32.05,-2458.77 28.41,-3791.71 100,-4869.5 124.69,-5241.26 186.21,-5695.63 196.14,-5767.68"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.39,-2280.3 32.94,-2270.28 29.39,-2280.26 36.39,-2280.3"/>
+<path fill="none" stroke="#63b8ff" d="M32.89,-2232.53C32.05,-2410.77 28.41,-3743.71 100,-4821.5 124.69,-5193.26 186.21,-5647.63 196.14,-5719.68"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.39,-2232.3 32.94,-2222.28 29.39,-2232.26 36.39,-2232.3"/>
 </a>
 </g>
 </g>
@@ -93,8 +93,8 @@
 <g id="Node000175" class="node">
 <title>Node175</title>
 <g id="a_Node000175"><a xlink:href="classtvm_1_1GlobalInfoNode.html" target="_top" xlink:title="GlobalInfo are globally static object that are referred by the IR itself. Base node for all global in...">
-<polygon fill="white" stroke="#666666" points="257.5,-4860 139.5,-4860 139.5,-4841 257.5,-4841 257.5,-4860"/>
-<text text-anchor="middle" x="198.5" y="-4848" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GlobalInfoNode</text>
+<polygon fill="white" stroke="#666666" points="257.5,-4812 139.5,-4812 139.5,-4793 257.5,-4793 257.5,-4812"/>
+<text text-anchor="middle" x="198.5" y="-4800" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::GlobalInfoNode</text>
 </a>
 </g>
 </g>
@@ -102,8 +102,8 @@
 <g id="edge179_Node000000_Node000175" class="edge">
 <title>Node0&#45;&gt;Node175</title>
 <g id="a_edge179_Node000000_Node000175"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.07,-2280.28C33.89,-2509.14 43.1,-4648.54 100,-4767.5 116.59,-4802.19 155.29,-4827.9 178.63,-4840.92"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.57,-2280.09 33.03,-2270.1 29.57,-2280.11 36.57,-2280.09"/>
+<path fill="none" stroke="#63b8ff" d="M33.07,-2232.28C33.89,-2461.14 43.1,-4600.54 100,-4719.5 116.59,-4754.19 155.29,-4779.9 178.63,-4792.92"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.57,-2232.09 33.03,-2222.1 29.57,-2232.11 36.57,-2232.09"/>
 </a>
 </g>
 </g>
@@ -111,8 +111,8 @@
 <g id="Node000179" class="node">
 <title>Node179</title>
 <g id="a_Node000179"><a xlink:href="classtvm_1_1IRModuleNode.html" target="_top" xlink:title="IRModule that holds functions and type definitions.">
-<polygon fill="white" stroke="#666666" points="255,-4758 142,-4758 142,-4739 255,-4739 255,-4758"/>
-<text text-anchor="middle" x="198.5" y="-4746" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::IRModuleNode</text>
+<polygon fill="white" stroke="#666666" points="255,-4710 142,-4710 142,-4691 255,-4691 255,-4710"/>
+<text text-anchor="middle" x="198.5" y="-4698" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::IRModuleNode</text>
 </a>
 </g>
 </g>
@@ -120,8 +120,8 @@
 <g id="edge183_Node000000_Node000179" class="edge">
 <title>Node0&#45;&gt;Node179</title>
 <g id="a_edge183_Node000000_Node000179"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.19,-2280.58C35.46,-2512.74 57.77,-4681.14 100,-4730.5 110.41,-4742.66 126.12,-4748.37 141.91,-4750.7"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.69,-2280.21 33.09,-2270.24 29.69,-2280.28 36.69,-2280.21"/>
+<path fill="none" stroke="#63b8ff" d="M33.19,-2232.58C35.46,-2464.74 57.77,-4633.14 100,-4682.5 110.41,-4694.66 126.12,-4700.37 141.91,-4702.7"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.69,-2232.21 33.09,-2222.24 29.69,-2232.28 36.69,-2232.21"/>
 </a>
 </g>
 </g>
@@ -129,8 +129,8 @@
 <g id="Node000180" class="node">
 <title>Node180</title>
 <g id="a_Node000180"><a xlink:href="classtvm_1_1LocationNode.html" target="_top" xlink:title="Base class for immutable source&#45;location metadata.">
-<polygon fill="white" stroke="#666666" points="253,-4721 144,-4721 144,-4702 253,-4702 253,-4721"/>
-<text text-anchor="middle" x="198.5" y="-4709" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::LocationNode</text>
+<polygon fill="white" stroke="#666666" points="253,-4673 144,-4673 144,-4654 253,-4654 253,-4673"/>
+<text text-anchor="middle" x="198.5" y="-4661" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::LocationNode</text>
 </a>
 </g>
 </g>
@@ -138,8 +138,8 @@
 <g id="edge184_Node000000_Node000180" class="edge">
 <title>Node0&#45;&gt;Node180</title>
 <g id="a_edge184_Node000000_Node000180"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.04,-2280.72C33.52,-2492.33 39.39,-4298.2 100,-4527.5 119.12,-4599.85 171.07,-4675.5 190.25,-4701.81"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.54,-2280.44 33.02,-2270.45 29.54,-2280.46 36.54,-2280.44"/>
+<path fill="none" stroke="#63b8ff" d="M33.04,-2232.72C33.52,-2444.33 39.39,-4250.2 100,-4479.5 119.12,-4551.85 171.07,-4627.5 190.25,-4653.81"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.54,-2232.44 33.02,-2222.45 29.54,-2232.46 36.54,-2232.44"/>
 </a>
 </g>
 </g>
@@ -147,8 +147,8 @@
 <g id="Node000184" class="node">
 <title>Node184</title>
 <g id="a_Node000184"><a xlink:href="classtvm_1_1PrinterConfigNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="264,-4518 133,-4518 133,-4499 264,-4499 264,-4518"/>
-<text text-anchor="middle" x="198.5" y="-4506" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrinterConfigNode</text>
+<polygon fill="white" stroke="#666666" points="264,-4470 133,-4470 133,-4451 264,-4451 264,-4470"/>
+<text text-anchor="middle" x="198.5" y="-4458" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::PrinterConfigNode</text>
 </a>
 </g>
 </g>
@@ -156,8 +156,8 @@
 <g id="edge188_Node000000_Node000184" class="edge">
 <title>Node0&#45;&gt;Node184</title>
 <g id="a_edge188_Node000000_Node000184"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.89,-2280.15C31.75,-2495.03 23.84,-4401.74 100,-4490.5 108.41,-4500.3 120.26,-4505.9 132.81,-4508.92"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.39,-2280.05 32.94,-2270.03 29.39,-2280.01 36.39,-2280.05"/>
+<path fill="none" stroke="#63b8ff" d="M32.89,-2232.15C31.75,-2447.03 23.84,-4353.74 100,-4442.5 108.41,-4452.3 120.26,-4457.9 132.81,-4460.92"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.39,-2232.05 32.94,-2222.03 29.39,-2232.01 36.39,-2232.05"/>
 </a>
 </g>
 </g>
@@ -165,8 +165,8 @@
 <g id="Node000185" class="node">
 <title>Node185</title>
 <g id="a_Node000185"><a xlink:href="classtvm_1_1RangeNode.html" target="_top" xlink:title="range over one dimension">
-<polygon fill="white" stroke="#666666" points="247.5,-4481 149.5,-4481 149.5,-4462 247.5,-4462 247.5,-4481"/>
-<text text-anchor="middle" x="198.5" y="-4469" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RangeNode</text>
+<polygon fill="white" stroke="#666666" points="247.5,-4433 149.5,-4433 149.5,-4414 247.5,-4414 247.5,-4433"/>
+<text text-anchor="middle" x="198.5" y="-4421" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RangeNode</text>
 </a>
 </g>
 </g>
@@ -174,8 +174,8 @@
 <g id="edge189_Node000000_Node000185" class="edge">
 <title>Node0&#45;&gt;Node185</title>
 <g id="a_edge189_Node000000_Node000185"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.9,-2280.47C31.88,-2494.95 25.16,-4366.32 100,-4453.5 112.05,-4467.54 131.18,-4472.96 149.31,-4474.53"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.4,-2280.36 32.95,-2270.34 29.4,-2280.32 36.4,-2280.36"/>
+<path fill="none" stroke="#63b8ff" d="M32.9,-2232.47C31.88,-2446.95 25.16,-4318.32 100,-4405.5 112.05,-4419.54 131.18,-4424.96 149.31,-4426.53"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.4,-2232.36 32.95,-2222.34 29.4,-2232.32 36.4,-2232.36"/>
 </a>
 </g>
 </g>
@@ -183,8 +183,8 @@
 <g id="Node000186" class="node">
 <title>Node186</title>
 <g id="a_Node000186"><a xlink:href="classtvm_1_1SourceMapObj.html" target="_top" xlink:title="Stores locations in frontend source that generated a node.">
-<polygon fill="white" stroke="#666666" points="255,-4444 142,-4444 142,-4425 255,-4425 255,-4444"/>
-<text text-anchor="middle" x="198.5" y="-4432" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::SourceMapObj</text>
+<polygon fill="white" stroke="#666666" points="255,-4396 142,-4396 142,-4377 255,-4377 255,-4396"/>
+<text text-anchor="middle" x="198.5" y="-4384" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::SourceMapObj</text>
 </a>
 </g>
 </g>
@@ -192,8 +192,8 @@
 <g id="edge190_Node000000_Node000186" class="edge">
 <title>Node0&#45;&gt;Node186</title>
 <g id="a_edge190_Node000000_Node000186"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.91,-2280.45C32.02,-2492.83 26.44,-4330.85 100,-4416.5 110.43,-4428.64 126.15,-4434.34 141.94,-4436.67"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.41,-2280.19 32.95,-2270.17 29.41,-2280.16 36.41,-2280.19"/>
+<path fill="none" stroke="#63b8ff" d="M32.91,-2232.45C32.02,-2444.83 26.44,-4282.85 100,-4368.5 110.43,-4380.64 126.15,-4386.34 141.94,-4388.67"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.41,-2232.19 32.95,-2222.17 29.41,-2232.16 36.41,-2232.19"/>
 </a>
 </g>
 </g>
@@ -201,8 +201,8 @@
 <g id="Node000187" class="node">
 <title>Node187</title>
 <g id="a_Node000187"><a xlink:href="classtvm_1_1SourceNameNode.html" target="_top" xlink:title="The name of a source fragment.">
-<polygon fill="white" stroke="#666666" points="263.5,-4407 133.5,-4407 133.5,-4388 263.5,-4388 263.5,-4407"/>
-<text text-anchor="middle" x="198.5" y="-4395" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::SourceNameNode</text>
+<polygon fill="white" stroke="#666666" points="263.5,-4359 133.5,-4359 133.5,-4340 263.5,-4340 263.5,-4359"/>
+<text text-anchor="middle" x="198.5" y="-4347" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::SourceNameNode</text>
 </a>
 </g>
 </g>
@@ -210,8 +210,8 @@
 <g id="edge191_Node000000_Node000187" class="edge">
 <title>Node0&#45;&gt;Node187</title>
 <g id="a_edge191_Node000000_Node000187"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.92,-2280.11C32.16,-2488.84 27.67,-4295.34 100,-4379.5 108.53,-4389.42 120.58,-4395.04 133.32,-4398.03"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.42,-2280.02 32.96,-2270.01 29.42,-2279.99 36.42,-2280.02"/>
+<path fill="none" stroke="#63b8ff" d="M32.92,-2232.11C32.16,-2440.84 27.67,-4247.34 100,-4331.5 108.53,-4341.42 120.58,-4347.04 133.32,-4350.03"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.42,-2232.02 32.96,-2222.01 29.42,-2231.99 36.42,-2232.02"/>
 </a>
 </g>
 </g>
@@ -219,8 +219,8 @@
 <g id="Node000188" class="node">
 <title>Node188</title>
 <g id="a_Node000188"><a xlink:href="classtvm_1_1SourceNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="249,-4370 148,-4370 148,-4351 249,-4351 249,-4370"/>
-<text text-anchor="middle" x="198.5" y="-4358" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::SourceNode</text>
+<polygon fill="white" stroke="#666666" points="249,-4322 148,-4322 148,-4303 249,-4303 249,-4322"/>
+<text text-anchor="middle" x="198.5" y="-4310" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::SourceNode</text>
 </a>
 </g>
 </g>
@@ -228,8 +228,8 @@
 <g id="edge192_Node000000_Node000188" class="edge">
 <title>Node0&#45;&gt;Node188</title>
 <g id="a_edge192_Node000000_Node000188"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.93,-2280.4C32.3,-2488.47 28.99,-4259.91 100,-4342.5 111.73,-4356.14 130.13,-4361.64 147.8,-4363.38"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.43,-2280.31 32.96,-2270.3 29.43,-2280.28 36.43,-2280.31"/>
+<path fill="none" stroke="#63b8ff" d="M32.93,-2232.4C32.3,-2440.47 28.99,-4211.91 100,-4294.5 111.73,-4308.14 130.13,-4313.64 147.8,-4315.38"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.43,-2232.31 32.96,-2222.3 29.43,-2232.28 36.43,-2232.31"/>
 </a>
 </g>
 </g>
@@ -237,8 +237,8 @@
 <g id="Node000189" class="node">
 <title>Node189</title>
 <g id="a_Node000189"><a xlink:href="classtvm_1_1StmtNode.html" target="_top" xlink:title="Base node of all statements.">
-<polygon fill="white" stroke="#666666" points="244,-4333 153,-4333 153,-4314 244,-4314 244,-4333"/>
-<text text-anchor="middle" x="198.5" y="-4321" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::StmtNode</text>
+<polygon fill="white" stroke="#666666" points="244,-4285 153,-4285 153,-4266 244,-4266 244,-4285"/>
+<text text-anchor="middle" x="198.5" y="-4273" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::StmtNode</text>
 </a>
 </g>
 </g>
@@ -246,8 +246,8 @@
 <g id="edge193_Node000000_Node000189" class="edge">
 <title>Node0&#45;&gt;Node189</title>
 <g id="a_edge193_Node000000_Node000189"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.27,-2280.29C35.58,-2444.15 53.11,-3578.33 100,-3916.5 122.4,-4078.07 180.5,-4269.26 194.45,-4313.87"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.77,-2280.15 33.13,-2270.2 29.77,-2280.25 36.77,-2280.15"/>
+<path fill="none" stroke="#63b8ff" d="M33.27,-2232.29C35.58,-2396.15 53.11,-3530.33 100,-3868.5 122.4,-4030.07 180.5,-4221.26 194.45,-4265.87"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.77,-2232.15 33.13,-2222.2 29.77,-2232.25 36.77,-2232.15"/>
 </a>
 </g>
 </g>
@@ -255,8 +255,8 @@
 <g id="Node000204" class="node">
 <title>Node204</title>
 <g id="a_Node000204"><a xlink:href="classtvm_1_1TargetKindNode.html" target="_top" xlink:title="Target kind, specifies the kind of the target.">
-<polygon fill="white" stroke="#666666" points="258,-3907 139,-3907 139,-3888 258,-3888 258,-3907"/>
-<text text-anchor="middle" x="198.5" y="-3895" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TargetKindNode</text>
+<polygon fill="white" stroke="#666666" points="258,-3859 139,-3859 139,-3840 258,-3840 258,-3859"/>
+<text text-anchor="middle" x="198.5" y="-3847" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TargetKindNode</text>
 </a>
 </g>
 </g>
@@ -264,8 +264,8 @@
 <g id="edge208_Node000000_Node000204" class="edge">
 <title>Node0&#45;&gt;Node204</title>
 <g id="a_edge208_Node000000_Node000204"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.12,-2280.12C34.29,-2459.93 44.91,-3816.03 100,-3879.5 109.82,-3890.81 124.22,-3896.51 138.96,-3899.11"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.62,-2279.99 33.05,-2270.01 29.62,-2280.03 36.62,-2279.99"/>
+<path fill="none" stroke="#63b8ff" d="M33.12,-2232.12C34.29,-2411.93 44.91,-3768.03 100,-3831.5 109.82,-3842.81 124.22,-3848.51 138.96,-3851.11"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.62,-2231.99 33.05,-2222.01 29.62,-2232.03 36.62,-2231.99"/>
 </a>
 </g>
 </g>
@@ -273,8 +273,8 @@
 <g id="Node000205" class="node">
 <title>Node205</title>
 <g id="a_Node000205"><a xlink:href="classtvm_1_1TargetNode.html" target="_top" xlink:title="Compilation target.">
-<polygon fill="white" stroke="#666666" points="247.5,-3870 149.5,-3870 149.5,-3851 247.5,-3851 247.5,-3870"/>
-<text text-anchor="middle" x="198.5" y="-3858" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TargetNode</text>
+<polygon fill="white" stroke="#666666" points="247.5,-3822 149.5,-3822 149.5,-3803 247.5,-3803 247.5,-3822"/>
+<text text-anchor="middle" x="198.5" y="-3810" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TargetNode</text>
 </a>
 </g>
 </g>
@@ -282,8 +282,8 @@
 <g id="edge209_Node000000_Node000205" class="edge">
 <title>Node0&#45;&gt;Node205</title>
 <g id="a_edge209_Node000000_Node000205"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.14,-2280.22C34.47,-2458.08 46.19,-3780.57 100,-3842.5 112.14,-3856.47 131.27,-3861.88 149.39,-3863.46"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.64,-2280.16 33.07,-2270.19 29.64,-2280.21 36.64,-2280.16"/>
+<path fill="none" stroke="#63b8ff" d="M33.14,-2232.22C34.47,-2410.08 46.19,-3732.57 100,-3794.5 112.14,-3808.47 131.27,-3813.88 149.39,-3815.46"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.64,-2232.16 33.07,-2222.19 29.64,-2232.21 36.64,-2232.16"/>
 </a>
 </g>
 </g>
@@ -291,8 +291,8 @@
 <g id="Node000206" class="node">
 <title>Node206</title>
 <g id="a_Node000206"><a xlink:href="classtvm_1_1TypeNode.html" target="_top" xlink:title="Type is the base type of all types.">
-<polygon fill="white" stroke="#666666" points="243.5,-3833 153.5,-3833 153.5,-3814 243.5,-3814 243.5,-3833"/>
-<text text-anchor="middle" x="198.5" y="-3821" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
+<polygon fill="white" stroke="#666666" points="243.5,-3785 153.5,-3785 153.5,-3766 243.5,-3766 243.5,-3785"/>
+<text text-anchor="middle" x="198.5" y="-3773" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::TypeNode</text>
 </a>
 </g>
 </g>
@@ -300,8 +300,8 @@
 <g id="edge210_Node000000_Node000206" class="edge">
 <title>Node0&#45;&gt;Node206</title>
 <g id="a_edge210_Node000000_Node000206"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.97,-2280.12C32.9,-2425.77 35.07,-3340.49 100,-3608.5 120.36,-3692.55 173.39,-3784.11 191.41,-3813.7"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.47,-2280.01 32.98,-2270.01 29.47,-2280 36.47,-2280.01"/>
+<path fill="none" stroke="#63b8ff" d="M32.97,-2232.12C32.9,-2377.77 35.07,-3292.49 100,-3560.5 120.36,-3644.55 173.39,-3736.11 191.41,-3765.7"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.47,-2232.01 32.98,-2222.01 29.47,-2232 36.47,-2232.01"/>
 </a>
 </g>
 </g>
@@ -309,8 +309,8 @@
 <g id="Node000223" class="node">
 <title>Node223</title>
 <g id="a_Node000223"><a xlink:href="classtvm_1_1UniqueNameSupplyNode.html" target="_top" xlink:title="UniqueNameSupply can be used to generate unique names.">
-<polygon fill="white" stroke="#666666" points="280.5,-3599 116.5,-3599 116.5,-3580 280.5,-3580 280.5,-3599"/>
-<text text-anchor="middle" x="198.5" y="-3587" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::UniqueNameSupplyNode</text>
+<polygon fill="white" stroke="#666666" points="280.5,-3551 116.5,-3551 116.5,-3532 280.5,-3532 280.5,-3551"/>
+<text text-anchor="middle" x="198.5" y="-3539" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::UniqueNameSupplyNode</text>
 </a>
 </g>
 </g>
@@ -318,8 +318,8 @@
 <g id="edge227_Node000000_Node000223" class="edge">
 <title>Node0&#45;&gt;Node223</title>
 <g id="a_edge227_Node000000_Node000223"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.32,-2280.61C36,-2441.95 55.53,-3520.76 100,-3571.5 104.54,-3576.68 110.04,-3580.68 116.09,-3583.74"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.82,-2280.2 33.15,-2270.25 29.82,-2280.31 36.82,-2280.2"/>
+<path fill="none" stroke="#63b8ff" d="M33.32,-2232.61C36,-2393.95 55.53,-3472.76 100,-3523.5 104.54,-3528.68 110.04,-3532.68 116.09,-3535.74"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.82,-2232.2 33.15,-2222.25 29.82,-2232.31 36.82,-2232.2"/>
 </a>
 </g>
 </g>
@@ -327,8 +327,8 @@
 <g id="Node000224" class="node">
 <title>Node224</title>
 <g id="a_Node000224"><a xlink:href="classtvm_1_1relax_1_1BindingBlockNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="279.5,-3562 117.5,-3562 117.5,-3543 279.5,-3543 279.5,-3562"/>
-<text text-anchor="middle" x="198.5" y="-3550" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BindingBlockNode</text>
+<polygon fill="white" stroke="#666666" points="279.5,-3514 117.5,-3514 117.5,-3495 279.5,-3495 279.5,-3514"/>
+<text text-anchor="middle" x="198.5" y="-3502" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BindingBlockNode</text>
 </a>
 </g>
 </g>
@@ -336,8 +336,8 @@
 <g id="edge228_Node000000_Node000224" class="edge">
 <title>Node0&#45;&gt;Node224</title>
 <g id="a_edge228_Node000000_Node000224"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.35,-2280.53C36.22,-2438.99 56.79,-3485.27 100,-3534.5 104.88,-3540.06 110.88,-3544.26 117.47,-3547.41"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.85,-2280.27 33.17,-2270.33 29.85,-2280.4 36.85,-2280.27"/>
+<path fill="none" stroke="#63b8ff" d="M33.35,-2232.53C36.22,-2390.99 56.79,-3437.27 100,-3486.5 104.88,-3492.06 110.88,-3496.26 117.47,-3499.41"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.85,-2232.27 33.17,-2222.33 29.85,-2232.4 36.85,-2232.27"/>
 </a>
 </g>
 </g>
@@ -345,8 +345,8 @@
 <g id="Node000226" class="node">
 <title>Node226</title>
 <g id="a_Node000226"><a xlink:href="classtvm_1_1relax_1_1BindingNode.html" target="_top" xlink:title="The base class of a variable binding in Relax.">
-<polygon fill="white" stroke="#666666" points="266,-3525 131,-3525 131,-3506 266,-3506 266,-3525"/>
-<text text-anchor="middle" x="198.5" y="-3513" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BindingNode</text>
+<polygon fill="white" stroke="#666666" points="266,-3477 131,-3477 131,-3458 266,-3458 266,-3477"/>
+<text text-anchor="middle" x="198.5" y="-3465" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BindingNode</text>
 </a>
 </g>
 </g>
@@ -354,8 +354,8 @@
 <g id="edge230_Node000000_Node000226" class="edge">
 <title>Node0&#45;&gt;Node226</title>
 <g id="a_edge230_Node000000_Node000226"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.38,-2280.42C36.45,-2435.85 58.05,-3449.78 100,-3497.5 108.07,-3506.68 119.16,-3512.15 130.98,-3515.27"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.87,-2279.98 33.18,-2270.05 29.88,-2280.12 36.87,-2279.98"/>
+<path fill="none" stroke="#63b8ff" d="M33.38,-2232.42C36.45,-2387.85 58.05,-3401.78 100,-3449.5 108.07,-3458.68 119.16,-3464.15 130.98,-3467.27"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.87,-2231.98 33.18,-2222.05 29.88,-2232.12 36.87,-2231.98"/>
 </a>
 </g>
 </g>
@@ -363,8 +363,8 @@
 <g id="Node000229" class="node">
 <title>Node229</title>
 <g id="a_Node000229"><a xlink:href="classtvm_1_1relax_1_1BlockBuilderNode.html" target="_top" xlink:title="A builder to build Relax binding blocks.">
-<polygon fill="white" stroke="#666666" points="278.5,-3488 118.5,-3488 118.5,-3469 278.5,-3469 278.5,-3488"/>
-<text text-anchor="middle" x="198.5" y="-3476" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BlockBuilderNode</text>
+<polygon fill="white" stroke="#666666" points="278.5,-3440 118.5,-3440 118.5,-3421 278.5,-3421 278.5,-3440"/>
+<text text-anchor="middle" x="198.5" y="-3428" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BlockBuilderNode</text>
 </a>
 </g>
 </g>
@@ -372,8 +372,8 @@
 <g id="edge233_Node000000_Node000229" class="edge">
 <title>Node0&#45;&gt;Node229</title>
 <g id="a_edge233_Node000000_Node000229"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.41,-2280.29C36.68,-2432.63 59.3,-3414.29 100,-3460.5 105.12,-3466.31 111.45,-3470.64 118.41,-3473.82"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.91,-2280.03 33.2,-2270.1 29.91,-2280.18 36.91,-2280.03"/>
+<path fill="none" stroke="#63b8ff" d="M33.41,-2232.29C36.68,-2384.63 59.3,-3366.29 100,-3412.5 105.12,-3418.31 111.45,-3422.64 118.41,-3425.82"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.91,-2232.03 33.2,-2222.1 29.91,-2232.18 36.91,-2232.03"/>
 </a>
 </g>
 </g>
@@ -381,8 +381,8 @@
 <g id="Node000230" class="node">
 <title>Node230</title>
 <g id="a_Node000230"><a xlink:href="classtvm_1_1relax_1_1DFConstraintNode.html" target="_top" xlink:title="Additional constraints on the graph.">
-<polygon fill="white" stroke="#666666" points="279.5,-3451 117.5,-3451 117.5,-3432 279.5,-3432 279.5,-3451"/>
-<text text-anchor="middle" x="198.5" y="-3439" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFConstraintNode</text>
+<polygon fill="white" stroke="#666666" points="279.5,-3403 117.5,-3403 117.5,-3384 279.5,-3384 279.5,-3403"/>
+<text text-anchor="middle" x="198.5" y="-3391" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFConstraintNode</text>
 </a>
 </g>
 </g>
@@ -390,8 +390,8 @@
 <g id="edge234_Node000000_Node000230" class="edge">
 <title>Node0&#45;&gt;Node230</title>
 <g id="a_edge234_Node000000_Node000230"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.45,-2280.14C36.92,-2429.29 60.55,-3378.79 100,-3423.5 104.9,-3429.05 110.9,-3433.24 117.5,-3436.38"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.95,-2280.06 33.22,-2270.14 29.95,-2280.22 36.95,-2280.06"/>
+<path fill="none" stroke="#63b8ff" d="M33.45,-2232.14C36.92,-2381.29 60.55,-3330.79 100,-3375.5 104.9,-3381.05 110.9,-3385.24 117.5,-3388.38"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.95,-2232.06 33.22,-2222.14 29.95,-2232.22 36.95,-2232.06"/>
 </a>
 </g>
 </g>
@@ -399,8 +399,8 @@
 <g id="Node000232" class="node">
 <title>Node232</title>
 <g id="a_Node000232"><a xlink:href="classtvm_1_1relax_1_1DFPatternNode.html" target="_top" xlink:title="Base type of all dataflow patterns.">
-<polygon fill="white" stroke="#666666" points="271.5,-3414 125.5,-3414 125.5,-3395 271.5,-3395 271.5,-3414"/>
-<text text-anchor="middle" x="198.5" y="-3402" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPatternNode</text>
+<polygon fill="white" stroke="#666666" points="271.5,-3366 125.5,-3366 125.5,-3347 271.5,-3347 271.5,-3366"/>
+<text text-anchor="middle" x="198.5" y="-3354" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPatternNode</text>
 </a>
 </g>
 </g>
@@ -408,8 +408,8 @@
 <g id="edge236_Node000000_Node000232" class="edge">
 <title>Node0&#45;&gt;Node232</title>
 <g id="a_edge236_Node000000_Node000232"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.5,-2280.39C37.25,-2427.49 62.09,-3342.18 100,-3385.5 106.7,-3393.16 115.49,-3398.29 125.05,-3401.67"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.99,-2280.06 33.24,-2270.16 29.99,-2280.24 36.99,-2280.06"/>
+<path fill="none" stroke="#63b8ff" d="M33.5,-2232.39C37.25,-2379.49 62.09,-3294.18 100,-3337.5 106.7,-3345.16 115.49,-3350.29 125.05,-3353.67"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.99,-2232.06 33.24,-2222.16 29.99,-2232.24 36.99,-2232.06"/>
 </a>
 </g>
 </g>
@@ -417,9 +417,9 @@
 <g id="Node000253" class="node">
 <title>Node253</title>
 <g id="a_Node000253"><a xlink:href="classtvm_1_1relax_1_1DataflowBlockRewriteNode.html" target="_top" xlink:title="Statement rewriter for relax.DataflowBlock.">
-<polygon fill="white" stroke="#666666" points="270,-3376.5 127,-3376.5 127,-3346.5 270,-3346.5 270,-3376.5"/>
-<text text-anchor="start" x="135" y="-3364.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowBlock</text>
-<text text-anchor="middle" x="198.5" y="-3353.5" font-family="Helvetica,sans-Serif" font-size="10.00">RewriteNode</text>
+<polygon fill="white" stroke="#666666" points="270,-3328.5 127,-3328.5 127,-3298.5 270,-3298.5 270,-3328.5"/>
+<text text-anchor="start" x="135" y="-3316.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowBlock</text>
+<text text-anchor="middle" x="198.5" y="-3305.5" font-family="Helvetica,sans-Serif" font-size="10.00">RewriteNode</text>
 </a>
 </g>
 </g>
@@ -427,8 +427,8 @@
 <g id="edge257_Node000000_Node000253" class="edge">
 <title>Node0&#45;&gt;Node253</title>
 <g id="a_edge257_Node000000_Node000253"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.85,-2280.39C31.95,-2420.28 29.63,-3253.23 100,-3337.5 107.04,-3345.93 116.52,-3351.66 126.81,-3355.52"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.35,-2280.29 32.92,-2270.27 29.35,-2280.24 36.35,-2280.29"/>
+<path fill="none" stroke="#63b8ff" d="M32.85,-2232.39C31.95,-2372.28 29.63,-3205.23 100,-3289.5 107.04,-3297.93 116.52,-3303.66 126.81,-3307.52"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.35,-2232.29 32.92,-2222.27 29.35,-2232.24 36.35,-2232.29"/>
 </a>
 </g>
 </g>
@@ -436,8 +436,8 @@
 <g id="Node000254" class="node">
 <title>Node254</title>
 <g id="a_Node000254"><a xlink:href="classtvm_1_1relax_1_1ExecBuilderNode.html" target="_top" xlink:title="A builder provides api to build VM executable with instructions.">
-<polygon fill="white" stroke="#666666" points="276,-3328 121,-3328 121,-3309 276,-3309 276,-3328"/>
-<text text-anchor="middle" x="198.5" y="-3316" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExecBuilderNode</text>
+<polygon fill="white" stroke="#666666" points="276,-3280 121,-3280 121,-3261 276,-3261 276,-3280"/>
+<text text-anchor="middle" x="198.5" y="-3268" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExecBuilderNode</text>
 </a>
 </g>
 </g>
@@ -445,8 +445,8 @@
 <g id="edge258_Node000000_Node000254" class="edge">
 <title>Node0&#45;&gt;Node254</title>
 <g id="a_edge258_Node000000_Node000254"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.84,-2280.59C31.94,-2418.44 29.73,-3221.39 100,-3300.5 105.72,-3306.93 112.92,-3311.54 120.81,-3314.79"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.34,-2280.29 32.92,-2270.27 29.34,-2280.24 36.34,-2280.29"/>
+<path fill="none" stroke="#63b8ff" d="M32.84,-2232.59C31.94,-2370.44 29.73,-3173.39 100,-3252.5 105.72,-3258.93 112.92,-3263.54 120.81,-3266.79"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.34,-2232.29 32.92,-2222.27 29.34,-2232.24 36.34,-2232.29"/>
 </a>
 </g>
 </g>
@@ -454,8 +454,8 @@
 <g id="Node000255" class="node">
 <title>Node255</title>
 <g id="a_Node000255"><a xlink:href="classtvm_1_1relax_1_1MatchResultNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="278,-3291 119,-3291 119,-3272 278,-3272 278,-3291"/>
-<text text-anchor="middle" x="198.5" y="-3279" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::MatchResultNode</text>
+<polygon fill="white" stroke="#666666" points="278,-3243 119,-3243 119,-3224 278,-3224 278,-3243"/>
+<text text-anchor="middle" x="198.5" y="-3231" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::MatchResultNode</text>
 </a>
 </g>
 </g>
@@ -463,8 +463,8 @@
 <g id="edge259_Node000000_Node000255" class="edge">
 <title>Node0&#45;&gt;Node255</title>
 <g id="a_edge259_Node000000_Node000255"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.89,-2280.29C32.35,-2414.44 32.2,-3187.35 100,-3263.5 105.27,-3269.41 111.79,-3273.78 118.94,-3276.97"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.39,-2280.24 32.94,-2270.22 29.39,-2280.21 36.39,-2280.24"/>
+<path fill="none" stroke="#63b8ff" d="M32.89,-2232.29C32.35,-2366.44 32.2,-3139.35 100,-3215.5 105.27,-3221.41 111.79,-3225.78 118.94,-3228.97"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.39,-2232.24 32.94,-2222.22 29.39,-2232.21 36.39,-2232.24"/>
 </a>
 </g>
 </g>
@@ -472,8 +472,8 @@
 <g id="Node000256" class="node">
 <title>Node256</title>
 <g id="a_Node000256"><a xlink:href="classtvm_1_1relax_1_1PatternContextNode.html" target="_top" xlink:title="A context to manage the graph&#45;level pattern matching.">
-<polygon fill="white" stroke="#666666" points="284,-3254 113,-3254 113,-3235 284,-3235 284,-3254"/>
-<text text-anchor="middle" x="198.5" y="-3242" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::PatternContextNode</text>
+<polygon fill="white" stroke="#666666" points="284,-3206 113,-3206 113,-3187 284,-3187 284,-3206"/>
+<text text-anchor="middle" x="198.5" y="-3194" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::PatternContextNode</text>
 </a>
 </g>
 </g>
@@ -481,8 +481,8 @@
 <g id="edge260_Node000000_Node000256" class="edge">
 <title>Node0&#45;&gt;Node256</title>
 <g id="a_edge260_Node000000_Node000256"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.95,-2280.36C32.78,-2411.81 34.73,-3153.38 100,-3226.5 103.67,-3230.61 107.94,-3233.97 112.61,-3236.71"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.45,-2280.17 32.97,-2270.16 29.45,-2280.16 36.45,-2280.17"/>
+<path fill="none" stroke="#63b8ff" d="M32.95,-2232.36C32.78,-2363.81 34.73,-3105.38 100,-3178.5 103.67,-3182.61 107.94,-3185.97 112.61,-3188.71"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.45,-2232.17 32.97,-2222.16 29.45,-2232.16 36.45,-2232.17"/>
 </a>
 </g>
 </g>
@@ -490,8 +490,8 @@
 <g id="Node000257" class="node">
 <title>Node257</title>
 <g id="a_Node000257"><a xlink:href="classtvm_1_1relax_1_1PatternSeqNode.html" target="_top" xlink:title="A sequence of DFPatterns that the previous DFPattern is connected to the next one.">
-<polygon fill="white" stroke="#666666" points="274,-3217 123,-3217 123,-3198 274,-3198 274,-3217"/>
-<text text-anchor="middle" x="198.5" y="-3205" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::PatternSeqNode</text>
+<polygon fill="white" stroke="#666666" points="274,-3169 123,-3169 123,-3150 274,-3150 274,-3169"/>
+<text text-anchor="middle" x="198.5" y="-3157" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::PatternSeqNode</text>
 </a>
 </g>
 </g>
@@ -499,8 +499,8 @@
 <g id="edge261_Node000000_Node000257" class="edge">
 <title>Node0&#45;&gt;Node257</title>
 <g id="a_edge261_Node000000_Node000257"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.01,-2280.36C33.29,-2408.73 37.66,-3118.17 100,-3188.5 106.18,-3195.47 114.09,-3200.34 122.72,-3203.7"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.51,-2280.07 33,-2270.07 29.51,-2280.08 36.51,-2280.07"/>
+<path fill="none" stroke="#63b8ff" d="M33.01,-2232.36C33.29,-2360.73 37.66,-3070.17 100,-3140.5 106.18,-3147.47 114.09,-3152.34 122.72,-3155.7"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.51,-2232.07 33,-2222.07 29.51,-2232.08 36.51,-2232.07"/>
 </a>
 </g>
 </g>
@@ -508,9 +508,9 @@
 <g id="Node000258" class="node">
 <title>Node258</title>
 <g id="a_Node000258"><a xlink:href="classtvm_1_1relax_1_1distributed_1_1PlacementNode.html" target="_top" xlink:title="Describes how data is distributed in each dimension of the device mesh.">
-<polygon fill="white" stroke="#666666" points="261,-3179.5 136,-3179.5 136,-3149.5 261,-3149.5 261,-3179.5"/>
-<text text-anchor="start" x="144" y="-3167.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
-<text text-anchor="middle" x="198.5" y="-3156.5" font-family="Helvetica,sans-Serif" font-size="10.00">::PlacementNode</text>
+<polygon fill="white" stroke="#666666" points="261,-3131.5 136,-3131.5 136,-3101.5 261,-3101.5 261,-3131.5"/>
+<text text-anchor="start" x="144" y="-3119.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
+<text text-anchor="middle" x="198.5" y="-3108.5" font-family="Helvetica,sans-Serif" font-size="10.00">::PlacementNode</text>
 </a>
 </g>
 </g>
@@ -518,8 +518,8 @@
 <g id="edge262_Node000000_Node000258" class="edge">
 <title>Node0&#45;&gt;Node258</title>
 <g id="a_edge262_Node000000_Node000258"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.14,-2280.44C34.2,-2404.96 42.56,-3072.68 100,-3140.5 109.13,-3151.27 122.24,-3157.63 135.9,-3161.29"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.64,-2280.1 33.06,-2270.12 29.64,-2280.15 36.64,-2280.1"/>
+<path fill="none" stroke="#63b8ff" d="M33.14,-2232.44C34.2,-2356.96 42.56,-3024.68 100,-3092.5 109.13,-3103.27 122.24,-3109.63 135.9,-3113.29"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.64,-2232.1 33.06,-2222.12 29.64,-2232.15 36.64,-2232.1"/>
 </a>
 </g>
 </g>
@@ -527,9 +527,9 @@
 <g id="Node000259" class="node">
 <title>Node259</title>
 <g id="a_Node000259"><a xlink:href="classtvm_1_1relax_1_1distributed_1_1PlacementSpecNode.html" target="_top" xlink:title="Describes how data is distributed in one dimension of the device mesh.">
-<polygon fill="white" stroke="#666666" points="261,-3131.5 136,-3131.5 136,-3101.5 261,-3101.5 261,-3131.5"/>
-<text text-anchor="start" x="144" y="-3119.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
-<text text-anchor="middle" x="198.5" y="-3108.5" font-family="Helvetica,sans-Serif" font-size="10.00">::PlacementSpecNode</text>
+<polygon fill="white" stroke="#666666" points="261,-3083.5 136,-3083.5 136,-3053.5 261,-3053.5 261,-3083.5"/>
+<text text-anchor="start" x="144" y="-3071.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::distributed</text>
+<text text-anchor="middle" x="198.5" y="-3060.5" font-family="Helvetica,sans-Serif" font-size="10.00">::PlacementSpecNode</text>
 </a>
 </g>
 </g>
@@ -537,8 +537,8 @@
 <g id="edge263_Node000000_Node000259" class="edge">
 <title>Node0&#45;&gt;Node259</title>
 <g id="a_edge263_Node000000_Node000259"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.23,-2280.46C34.83,-2401 45.7,-3028.68 100,-3092.5 109.15,-3103.26 122.27,-3109.61 135.93,-3113.27"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.73,-2280.1 33.1,-2270.15 29.73,-2280.19 36.73,-2280.1"/>
+<path fill="none" stroke="#63b8ff" d="M33.23,-2232.46C34.83,-2353 45.7,-2980.68 100,-3044.5 109.15,-3055.26 122.27,-3061.61 135.93,-3065.27"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.73,-2232.1 33.1,-2222.15 29.73,-2232.19 36.73,-2232.1"/>
 </a>
 </g>
 </g>
@@ -546,9 +546,9 @@
 <g id="Node000261" class="node">
 <title>Node261</title>
 <g id="a_Node000261"><a xlink:href="classtvm_1_1relax_1_1transform_1_1FusionPatternNode.html" target="_top" xlink:title="The pattern object used as the input of FuseOpsByPattern. For bindings to be fused,...">
-<polygon fill="white" stroke="#666666" points="259,-3083.5 138,-3083.5 138,-3053.5 259,-3053.5 259,-3083.5"/>
-<text text-anchor="start" x="146" y="-3071.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::transform</text>
-<text text-anchor="middle" x="198.5" y="-3060.5" font-family="Helvetica,sans-Serif" font-size="10.00">::FusionPatternNode</text>
+<polygon fill="white" stroke="#666666" points="259,-3035.5 138,-3035.5 138,-3005.5 259,-3005.5 259,-3035.5"/>
+<text text-anchor="start" x="146" y="-3023.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::transform</text>
+<text text-anchor="middle" x="198.5" y="-3012.5" font-family="Helvetica,sans-Serif" font-size="10.00">::FusionPatternNode</text>
 </a>
 </g>
 </g>
@@ -556,8 +556,8 @@
 <g id="edge265_Node000000_Node000261" class="edge">
 <title>Node0&#45;&gt;Node261</title>
 <g id="a_edge265_Node000000_Node000261"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.34,-2280.38C35.48,-2396.58 48.83,-2984.64 100,-3044.5 109.63,-3055.76 123.61,-3062.19 138,-3065.76"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.83,-2280.06 33.15,-2270.12 29.83,-2280.18 36.83,-2280.06"/>
+<path fill="none" stroke="#63b8ff" d="M33.34,-2232.38C35.48,-2348.58 48.83,-2936.64 100,-2996.5 109.63,-3007.76 123.61,-3014.19 138,-3017.76"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.83,-2232.06 33.15,-2222.12 29.83,-2232.18 36.83,-2232.06"/>
 </a>
 </g>
 </g>
@@ -565,9 +565,9 @@
 <g id="Node000262" class="node">
 <title>Node262</title>
 <g id="a_Node000262"><a xlink:href="classtvm_1_1relax_1_1transform_1_1PatternCheckContextNode.html" target="_top" xlink:title="The input of FusionPattern::check.">
-<polygon fill="white" stroke="#666666" points="274,-3035.5 123,-3035.5 123,-3005.5 274,-3005.5 274,-3035.5"/>
-<text text-anchor="start" x="131" y="-3023.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::transform</text>
-<text text-anchor="middle" x="198.5" y="-3012.5" font-family="Helvetica,sans-Serif" font-size="10.00">::PatternCheckContextNode</text>
+<polygon fill="white" stroke="#666666" points="274,-2987.5 123,-2987.5 123,-2957.5 274,-2957.5 274,-2987.5"/>
+<text text-anchor="start" x="131" y="-2975.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::transform</text>
+<text text-anchor="middle" x="198.5" y="-2964.5" font-family="Helvetica,sans-Serif" font-size="10.00">::PatternCheckContextNode</text>
 </a>
 </g>
 </g>
@@ -575,8 +575,8 @@
 <g id="edge266_Node000000_Node000262" class="edge">
 <title>Node0&#45;&gt;Node262</title>
 <g id="a_edge266_Node000000_Node000262"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.45,-2280.2C36.17,-2391.69 51.93,-2940.59 100,-2996.5 106.14,-3003.64 114.02,-3008.83 122.65,-3012.59"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.94,-2279.96 33.21,-2270.05 29.95,-2280.13 36.94,-2279.96"/>
+<path fill="none" stroke="#63b8ff" d="M33.45,-2232.2C36.17,-2343.69 51.93,-2892.59 100,-2948.5 106.14,-2955.64 114.02,-2960.83 122.65,-2964.59"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.94,-2231.96 33.21,-2222.05 29.95,-2232.13 36.94,-2231.96"/>
 </a>
 </g>
 </g>
@@ -584,8 +584,8 @@
 <g id="Node000263" class="node">
 <title>Node263</title>
 <g id="a_Node000263"><a xlink:href="classtvm_1_1runtime_1_1DRefObj.html" target="_top" xlink:title="An object that exists on all workers.">
-<polygon fill="white" stroke="#666666" points="262,-2987 135,-2987 135,-2968 262,-2968 262,-2987"/>
-<text text-anchor="middle" x="198.5" y="-2975" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DRefObj</text>
+<polygon fill="white" stroke="#666666" points="262,-2939 135,-2939 135,-2920 262,-2920 262,-2939"/>
+<text text-anchor="middle" x="198.5" y="-2927" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::DRefObj</text>
 </a>
 </g>
 </g>
@@ -593,8 +593,8 @@
 <g id="edge267_Node000000_Node000263" class="edge">
 <title>Node0&#45;&gt;Node263</title>
 <g id="a_edge267_Node000000_Node000263"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.5,-2280.26C36.42,-2388.64 52.81,-2908.02 100,-2959.5 109.07,-2969.4 121.67,-2974.93 134.8,-2977.85"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.99,-2279.99 33.23,-2270.09 30,-2280.18 36.99,-2279.99"/>
+<path fill="none" stroke="#63b8ff" d="M33.5,-2232.26C36.42,-2340.64 52.81,-2860.02 100,-2911.5 109.07,-2921.4 121.67,-2926.93 134.8,-2929.85"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.99,-2231.99 33.23,-2222.09 30,-2232.18 36.99,-2231.99"/>
 </a>
 </g>
 </g>
@@ -602,8 +602,8 @@
 <g id="Node000264" class="node">
 <title>Node264</title>
 <g id="a_Node000264"><a xlink:href="classtvm_1_1runtime_1_1SessionObj.html" target="_top" xlink:title="A Disco interactive session. It allows users to interact with the Disco command queue with various ff...">
-<polygon fill="white" stroke="#666666" points="268.5,-2950 128.5,-2950 128.5,-2931 268.5,-2931 268.5,-2950"/>
-<text text-anchor="middle" x="198.5" y="-2938" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::SessionObj</text>
+<polygon fill="white" stroke="#666666" points="268.5,-2902 128.5,-2902 128.5,-2883 268.5,-2883 268.5,-2902"/>
+<text text-anchor="middle" x="198.5" y="-2890" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::SessionObj</text>
 </a>
 </g>
 </g>
@@ -611,8 +611,8 @@
 <g id="edge268_Node000000_Node000264" class="edge">
 <title>Node0&#45;&gt;Node264</title>
 <g id="a_edge268_Node000000_Node000264"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.61,-2280.18C37.02,-2384.93 55.3,-2873.99 100,-2922.5 107.58,-2930.73 117.6,-2935.94 128.33,-2939.13"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="37.1,-2279.95 33.29,-2270.07 30.11,-2280.17 37.1,-2279.95"/>
+<path fill="none" stroke="#63b8ff" d="M33.61,-2232.18C37.02,-2336.93 55.3,-2825.99 100,-2874.5 107.58,-2882.73 117.6,-2887.94 128.33,-2891.13"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="37.1,-2231.95 33.29,-2222.07 30.11,-2232.17 37.1,-2231.95"/>
 </a>
 </g>
 </g>
@@ -620,8 +620,8 @@
 <g id="Node000265" class="node">
 <title>Node265</title>
 <g id="a_Node000265"><a xlink:href="classtvm_1_1runtime_1_1TimerNode.html" target="_top" xlink:title="Base class for all timer implementations.">
-<polygon fill="white" stroke="#666666" points="268.5,-2913 128.5,-2913 128.5,-2894 268.5,-2894 268.5,-2913"/>
-<text text-anchor="middle" x="198.5" y="-2901" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::TimerNode</text>
+<polygon fill="white" stroke="#666666" points="268.5,-2865 128.5,-2865 128.5,-2846 268.5,-2846 268.5,-2865"/>
+<text text-anchor="middle" x="198.5" y="-2853" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::TimerNode</text>
 </a>
 </g>
 </g>
@@ -629,8 +629,8 @@
 <g id="edge269_Node000000_Node000265" class="edge">
 <title>Node0&#45;&gt;Node265</title>
 <g id="a_edge269_Node000000_Node000265"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.76,-2280.63C37.8,-2382.58 58.14,-2838.9 100,-2884.5 107.58,-2892.76 117.6,-2898.05 128.32,-2901.34"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="37.25,-2280.32 33.37,-2270.46 30.26,-2280.59 37.25,-2280.32"/>
+<path fill="none" stroke="#63b8ff" d="M33.76,-2232.63C37.8,-2334.58 58.14,-2790.9 100,-2836.5 107.58,-2844.76 117.6,-2850.05 128.32,-2853.34"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="37.25,-2232.32 33.37,-2222.46 30.26,-2232.59 37.25,-2232.32"/>
 </a>
 </g>
 </g>
@@ -638,9 +638,9 @@
 <g id="Node000266" class="node">
 <title>Node266</title>
 <g id="a_Node000266"><a xlink:href="classtvm_1_1runtime_1_1cuda__ipc_1_1CUDAIPCMemoryObj.html" target="_top" xlink:title="The CUDA IPC (interprocess communication) memory object, which internally contains data pointers to C...">
-<polygon fill="white" stroke="#666666" points="270,-2875.5 127,-2875.5 127,-2845.5 270,-2845.5 270,-2875.5"/>
-<text text-anchor="start" x="135" y="-2863.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::cuda</text>
-<text text-anchor="middle" x="198.5" y="-2852.5" font-family="Helvetica,sans-Serif" font-size="10.00">_ipc::CUDAIPCMemoryObj</text>
+<polygon fill="white" stroke="#666666" points="270,-2827.5 127,-2827.5 127,-2797.5 270,-2797.5 270,-2827.5"/>
+<text text-anchor="start" x="135" y="-2815.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::cuda</text>
+<text text-anchor="middle" x="198.5" y="-2804.5" font-family="Helvetica,sans-Serif" font-size="10.00">_ipc::CUDAIPCMemoryObj</text>
 </a>
 </g>
 </g>
@@ -648,8 +648,8 @@
 <g id="edge270_Node000000_Node000266" class="edge">
 <title>Node0&#45;&gt;Node266</title>
 <g id="a_edge270_Node000000_Node000266"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.98,-2280.23C38.9,-2376.48 62.33,-2793.78 100,-2836.5 107.15,-2844.61 116.55,-2850.19 126.7,-2854.01"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="37.47,-2279.95 33.47,-2270.13 30.47,-2280.3 37.47,-2279.95"/>
+<path fill="none" stroke="#63b8ff" d="M33.98,-2232.23C38.9,-2328.48 62.33,-2745.78 100,-2788.5 107.15,-2796.61 116.55,-2802.19 126.7,-2806.01"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="37.47,-2231.95 33.47,-2222.13 30.47,-2232.3 37.47,-2231.95"/>
 </a>
 </g>
 </g>
@@ -657,9 +657,9 @@
 <g id="Node000267" class="node">
 <title>Node267</title>
 <g id="a_Node000267"><a xlink:href="classtvm_1_1runtime_1_1memory_1_1StorageObj.html" target="_top" xlink:title="An object representing a storage allocation.">
-<polygon fill="white" stroke="#666666" points="262.5,-2827.5 134.5,-2827.5 134.5,-2797.5 262.5,-2797.5 262.5,-2827.5"/>
-<text text-anchor="start" x="142.5" y="-2815.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::memory</text>
-<text text-anchor="middle" x="198.5" y="-2804.5" font-family="Helvetica,sans-Serif" font-size="10.00">::StorageObj</text>
+<polygon fill="white" stroke="#666666" points="262.5,-2779.5 134.5,-2779.5 134.5,-2749.5 262.5,-2749.5 262.5,-2779.5"/>
+<text text-anchor="start" x="142.5" y="-2767.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::memory</text>
+<text text-anchor="middle" x="198.5" y="-2756.5" font-family="Helvetica,sans-Serif" font-size="10.00">::StorageObj</text>
 </a>
 </g>
 </g>
@@ -667,8 +667,8 @@
 <g id="edge271_Node000000_Node000267" class="edge">
 <title>Node0&#45;&gt;Node267</title>
 <g id="a_edge271_Node000000_Node000267"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.64,-2280.18C31.49,-2366.58 31.32,-2711.42 100,-2788.5 108.93,-2798.52 121.31,-2804.69 134.25,-2808.41"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.14,-2280.21 32.8,-2270.15 29.14,-2280.1 36.14,-2280.21"/>
+<path fill="none" stroke="#63b8ff" d="M32.64,-2232.18C31.49,-2318.58 31.32,-2663.42 100,-2740.5 108.93,-2750.52 121.31,-2756.69 134.25,-2760.41"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.14,-2232.21 32.8,-2222.15 29.14,-2232.1 36.14,-2232.21"/>
 </a>
 </g>
 </g>
@@ -676,8 +676,8 @@
 <g id="Node000268" class="node">
 <title>Node268</title>
 <g id="a_Node000268"><a xlink:href="classtvm_1_1runtime_1_1vm_1_1VMClosureObj.html" target="_top" xlink:title="An object representing a vm closure.">
-<polygon fill="white" stroke="#666666" points="287,-2779 110,-2779 110,-2760 287,-2760 287,-2779"/>
-<text text-anchor="middle" x="198.5" y="-2767" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::vm::VMClosureObj</text>
+<polygon fill="white" stroke="#666666" points="287,-2731 110,-2731 110,-2712 287,-2712 287,-2731"/>
+<text text-anchor="middle" x="198.5" y="-2719" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::vm::VMClosureObj</text>
 </a>
 </g>
 </g>
@@ -685,8 +685,8 @@
 <g id="edge272_Node000000_Node000268" class="edge">
 <title>Node0&#45;&gt;Node268</title>
 <g id="a_edge272_Node000000_Node000268"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.74,-2280.46C32.1,-2363.75 34.06,-2682.39 100,-2751.5 103.09,-2754.74 106.56,-2757.5 110.29,-2759.86"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.24,-2280.36 32.84,-2270.32 29.25,-2280.29 36.24,-2280.36"/>
+<path fill="none" stroke="#63b8ff" d="M32.74,-2232.46C32.1,-2315.75 34.06,-2634.39 100,-2703.5 103.09,-2706.74 106.56,-2709.5 110.29,-2711.86"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.24,-2232.36 32.84,-2222.32 29.25,-2232.29 36.24,-2232.36"/>
 </a>
 </g>
 </g>
@@ -694,8 +694,8 @@
 <g id="Node000269" class="node">
 <title>Node269</title>
 <g id="a_Node000269"><a xlink:href="classtvm_1_1runtime_1_1vm_1_1VMExtensionNode.html" target="_top" xlink:title="Represent a VM extension. A VM extension allows the user to extend the VM with target specific functi...">
-<polygon fill="white" stroke="#666666" points="297,-2742 100,-2742 100,-2723 297,-2723 297,-2742"/>
-<text text-anchor="middle" x="198.5" y="-2730" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::vm::VMExtensionNode</text>
+<polygon fill="white" stroke="#666666" points="297,-2694 100,-2694 100,-2675 297,-2675 297,-2694"/>
+<text text-anchor="middle" x="198.5" y="-2682" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::vm::VMExtensionNode</text>
 </a>
 </g>
 </g>
@@ -703,8 +703,8 @@
 <g id="edge273_Node000000_Node000269" class="edge">
 <title>Node0&#45;&gt;Node269</title>
 <g id="a_edge273_Node000000_Node000269"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.99,-2280.46C33.37,-2359.76 38.98,-2651.24 100,-2714.5 103.11,-2717.72 106.59,-2720.47 110.34,-2722.82"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.49,-2280.35 32.96,-2270.35 29.49,-2280.36 36.49,-2280.35"/>
+<path fill="none" stroke="#63b8ff" d="M32.99,-2232.46C33.37,-2311.76 38.98,-2603.24 100,-2666.5 103.11,-2669.72 106.59,-2672.47 110.34,-2674.82"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.49,-2232.35 32.96,-2222.35 29.49,-2232.36 36.49,-2232.35"/>
 </a>
 </g>
 </g>
@@ -712,8 +712,8 @@
 <g id="Node000270" class="node">
 <title>Node270</title>
 <g id="a_Node000270"><a xlink:href="classtvm_1_1s__tir_1_1InstructionKindNode.html" target="_top" xlink:title="Kind of an instruction, e.g. Split, Reorder, etc. Besides the name, every kind of instruction has its...">
-<polygon fill="white" stroke="#666666" points="282.5,-2705 114.5,-2705 114.5,-2686 282.5,-2686 282.5,-2705"/>
-<text text-anchor="middle" x="198.5" y="-2693" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::InstructionKindNode</text>
+<polygon fill="white" stroke="#666666" points="282.5,-2657 114.5,-2657 114.5,-2638 282.5,-2638 282.5,-2657"/>
+<text text-anchor="middle" x="198.5" y="-2645" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::InstructionKindNode</text>
 </a>
 </g>
 </g>
@@ -721,8 +721,8 @@
 <g id="edge274_Node000000_Node000270" class="edge">
 <title>Node0&#45;&gt;Node270</title>
 <g id="a_edge274_Node000000_Node000270"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.28,-2280.73C34.77,-2356.22 43.94,-2620.12 100,-2677.5 104.21,-2681.81 109.09,-2685.28 114.38,-2688.05"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="36.77,-2280.23 33.1,-2270.29 29.78,-2280.35 36.77,-2280.23"/>
+<path fill="none" stroke="#63b8ff" d="M33.28,-2232.73C34.77,-2308.22 43.94,-2572.12 100,-2629.5 104.21,-2633.81 109.09,-2637.28 114.38,-2640.05"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="36.77,-2232.23 33.1,-2222.29 29.78,-2232.35 36.77,-2232.23"/>
 </a>
 </g>
 </g>
@@ -730,8 +730,8 @@
 <g id="Node000271" class="node">
 <title>Node271</title>
 <g id="a_Node000271"><a xlink:href="classtvm_1_1s__tir_1_1InstructionNode.html" target="_top" xlink:title="Schedule instructions each corresponds to a schedule primitive.">
-<polygon fill="white" stroke="#666666" points="271.5,-2668 125.5,-2668 125.5,-2649 271.5,-2649 271.5,-2668"/>
-<text text-anchor="middle" x="198.5" y="-2656" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::InstructionNode</text>
+<polygon fill="white" stroke="#666666" points="271.5,-2620 125.5,-2620 125.5,-2601 271.5,-2601 271.5,-2620"/>
+<text text-anchor="middle" x="198.5" y="-2608" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::InstructionNode</text>
 </a>
 </g>
 </g>
@@ -739,8 +739,8 @@
 <g id="edge275_Node000000_Node000271" class="edge">
 <title>Node0&#45;&gt;Node271</title>
 <g id="a_edge275_Node000000_Node000271"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.61,-2280.29C36.22,-2350.87 48.72,-2588.8 100,-2640.5 107.03,-2647.59 115.88,-2652.39 125.36,-2655.57"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="37.1,-2279.99 33.26,-2270.12 30.11,-2280.23 37.1,-2279.99"/>
+<path fill="none" stroke="#63b8ff" d="M33.61,-2232.29C36.22,-2302.87 48.72,-2540.8 100,-2592.5 107.03,-2599.59 115.88,-2604.39 125.36,-2607.57"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="37.1,-2231.99 33.26,-2222.12 30.11,-2232.23 37.1,-2231.99"/>
 </a>
 </g>
 </g>
@@ -748,8 +748,8 @@
 <g id="Node000272" class="node">
 <title>Node272</title>
 <g id="a_Node000272"><a xlink:href="classtvm_1_1s__tir_1_1LoopRVNode.html" target="_top" xlink:title="A random variable that evaluates to a TensorIR for loop.">
-<polygon fill="white" stroke="#666666" points="264,-2631 133,-2631 133,-2612 264,-2612 264,-2631"/>
-<text text-anchor="middle" x="198.5" y="-2619" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::LoopRVNode</text>
+<polygon fill="white" stroke="#666666" points="264,-2583 133,-2583 133,-2564 264,-2564 264,-2583"/>
+<text text-anchor="middle" x="198.5" y="-2571" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::LoopRVNode</text>
 </a>
 </g>
 </g>
@@ -757,8 +757,8 @@
 <g id="edge276_Node000000_Node000272" class="edge">
 <title>Node0&#45;&gt;Node272</title>
 <g id="a_edge276_Node000000_Node000272"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M34.03,-2280.47C37.88,-2346.7 53.62,-2557.6 100,-2603.5 108.93,-2612.34 120.7,-2617.6 132.95,-2620.61"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="37.51,-2279.96 33.46,-2270.17 30.52,-2280.34 37.51,-2279.96"/>
+<path fill="none" stroke="#63b8ff" d="M34.03,-2232.47C37.88,-2298.7 53.62,-2509.6 100,-2555.5 108.93,-2564.34 120.7,-2569.6 132.95,-2572.61"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="37.51,-2231.96 33.46,-2222.17 30.52,-2232.34 37.51,-2231.96"/>
 </a>
 </g>
 </g>
@@ -766,8 +766,8 @@
 <g id="Node000273" class="node">
 <title>Node273</title>
 <g id="a_Node000273"><a xlink:href="classtvm_1_1s__tir_1_1MatchBufferRegionNode.html" target="_top" xlink:title="Match introduces a constraint that the source buffer region can be remapped to the data layout specif...">
-<polygon fill="white" stroke="#666666" points="292.5,-2594 104.5,-2594 104.5,-2575 292.5,-2575 292.5,-2594"/>
-<text text-anchor="middle" x="198.5" y="-2582" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::MatchBufferRegionNode</text>
+<polygon fill="white" stroke="#666666" points="292.5,-2546 104.5,-2546 104.5,-2527 292.5,-2527 292.5,-2546"/>
+<text text-anchor="middle" x="198.5" y="-2534" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::MatchBufferRegionNode</text>
 </a>
 </g>
 </g>
@@ -775,8 +775,8 @@
 <g id="edge277_Node000000_Node000273" class="edge">
 <title>Node0&#45;&gt;Node273</title>
 <g id="a_edge277_Node000000_Node000273"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M34.53,-2280.28C39.67,-2341.51 58.42,-2526.27 100,-2566.5 103.34,-2569.73 107.06,-2572.48 111.04,-2574.82"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="38,-2279.73 33.7,-2270.05 31.02,-2280.3 38,-2279.73"/>
+<path fill="none" stroke="#63b8ff" d="M34.53,-2232.28C39.67,-2293.51 58.42,-2478.27 100,-2518.5 103.34,-2521.73 107.06,-2524.48 111.04,-2526.82"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="38,-2231.73 33.7,-2222.05 31.02,-2232.3 38,-2231.73"/>
 </a>
 </g>
 </g>
@@ -784,8 +784,8 @@
 <g id="Node000274" class="node">
 <title>Node274</title>
 <g id="a_Node000274"><a xlink:href="classtvm_1_1s__tir_1_1SBlockRVNode.html" target="_top" xlink:title="A random variable that evaluates to a TensorIR block.">
-<polygon fill="white" stroke="#666666" points="269,-2557 128,-2557 128,-2538 269,-2538 269,-2557"/>
-<text text-anchor="middle" x="198.5" y="-2545" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::SBlockRVNode</text>
+<polygon fill="white" stroke="#666666" points="269,-2509 128,-2509 128,-2490 269,-2490 269,-2509"/>
+<text text-anchor="middle" x="198.5" y="-2497" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::SBlockRVNode</text>
 </a>
 </g>
 </g>
@@ -793,8 +793,8 @@
 <g id="edge278_Node000000_Node000274" class="edge">
 <title>Node0&#45;&gt;Node274</title>
 <g id="a_edge278_Node000000_Node000274"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M35.14,-2280.06C41.68,-2336 63.18,-2494.88 100,-2529.5 107.77,-2536.81 117.5,-2541.64 127.78,-2544.75"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="38.61,-2279.58 34.01,-2270.04 31.66,-2280.37 38.61,-2279.58"/>
+<path fill="none" stroke="#63b8ff" d="M35.14,-2232.06C41.68,-2288 63.18,-2446.88 100,-2481.5 107.77,-2488.81 117.5,-2493.64 127.78,-2496.75"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="38.61,-2231.58 34.01,-2222.04 31.66,-2232.37 38.61,-2231.58"/>
 </a>
 </g>
 </g>
@@ -802,8 +802,8 @@
 <g id="Node000275" class="node">
 <title>Node275</title>
 <g id="a_Node000275"><a xlink:href="classtvm_1_1s__tir_1_1ScheduleNode.html" target="_top" xlink:title="The user&#45;facing schedule class.">
-<polygon fill="white" stroke="#666666" points="268,-2520 129,-2520 129,-2501 268,-2501 268,-2520"/>
-<text text-anchor="middle" x="198.5" y="-2508" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::ScheduleNode</text>
+<polygon fill="white" stroke="#666666" points="268,-2472 129,-2472 129,-2453 268,-2453 268,-2472"/>
+<text text-anchor="middle" x="198.5" y="-2460" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::ScheduleNode</text>
 </a>
 </g>
 </g>
@@ -811,8 +811,8 @@
 <g id="edge279_Node000000_Node000275" class="edge">
 <title>Node0&#45;&gt;Node275</title>
 <g id="a_edge279_Node000000_Node000275"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.3,-2280.5C31.89,-2325.67 37.69,-2436.05 100,-2492.5 108.04,-2499.78 118.02,-2504.57 128.51,-2507.65"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="35.8,-2280.33 32.51,-2270.26 28.8,-2280.19 35.8,-2280.33"/>
+<path fill="none" stroke="#63b8ff" d="M32.3,-2232.5C31.89,-2277.67 37.69,-2388.05 100,-2444.5 108.04,-2451.78 118.02,-2456.57 128.51,-2459.65"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="35.8,-2232.33 32.51,-2222.26 28.8,-2232.19 35.8,-2232.33"/>
 </a>
 </g>
 </g>
@@ -820,8 +820,8 @@
 <g id="Node000276" class="node">
 <title>Node276</title>
 <g id="a_Node000276"><a xlink:href="classtvm_1_1s__tir_1_1ScheduleStateNode.html" target="_top" xlink:title="The state of scheduling, which exposes a Replace method as the primary interface for all the scheduli...">
-<polygon fill="white" stroke="#666666" points="280.5,-2483 116.5,-2483 116.5,-2464 280.5,-2464 280.5,-2483"/>
-<text text-anchor="middle" x="198.5" y="-2471" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::ScheduleStateNode</text>
+<polygon fill="white" stroke="#666666" points="280.5,-2435 116.5,-2435 116.5,-2416 280.5,-2416 280.5,-2435"/>
+<text text-anchor="middle" x="198.5" y="-2423" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::ScheduleStateNode</text>
 </a>
 </g>
 </g>
@@ -829,8 +829,8 @@
 <g id="edge280_Node000000_Node000276" class="edge">
 <title>Node0&#45;&gt;Node276</title>
 <g id="a_edge280_Node000000_Node000276"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.57,-2280.26C35.85,-2320.02 46.93,-2409.78 100,-2455.5 104.82,-2459.66 110.29,-2462.99 116.11,-2465.65"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="37.05,-2279.87 33.12,-2270.04 30.06,-2280.18 37.05,-2279.87"/>
+<path fill="none" stroke="#63b8ff" d="M33.57,-2232.26C35.85,-2272.02 46.93,-2361.78 100,-2407.5 104.82,-2411.66 110.29,-2414.99 116.11,-2417.65"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="37.05,-2231.87 33.12,-2222.04 30.06,-2232.18 37.05,-2231.87"/>
 </a>
 </g>
 </g>
@@ -838,8 +838,8 @@
 <g id="Node000277" class="node">
 <title>Node277</title>
 <g id="a_Node000277"><a xlink:href="classtvm_1_1s__tir_1_1TensorIntrinNode.html" target="_top" xlink:title="Tensor intrinsics for tensorization.">
-<polygon fill="white" stroke="#666666" points="274.5,-2446 122.5,-2446 122.5,-2427 274.5,-2427 274.5,-2446"/>
-<text text-anchor="middle" x="198.5" y="-2434" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::TensorIntrinNode</text>
+<polygon fill="white" stroke="#666666" points="274.5,-2398 122.5,-2398 122.5,-2379 274.5,-2379 274.5,-2398"/>
+<text text-anchor="middle" x="198.5" y="-2386" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::TensorIntrinNode</text>
 </a>
 </g>
 </g>
@@ -847,8 +847,8 @@
 <g id="edge281_Node000000_Node000277" class="edge">
 <title>Node0&#45;&gt;Node277</title>
 <g id="a_edge281_Node000000_Node000277"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M35.37,-2280.24C40.54,-2314.18 56.15,-2383.32 100,-2418.5 106.58,-2423.78 114.21,-2427.7 122.25,-2430.58"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="38.81,-2279.61 33.99,-2270.18 31.88,-2280.56 38.81,-2279.61"/>
+<path fill="none" stroke="#63b8ff" d="M35.37,-2232.24C40.54,-2266.18 56.15,-2335.32 100,-2370.5 106.58,-2375.78 114.21,-2379.7 122.25,-2382.58"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="38.81,-2231.61 33.99,-2222.18 31.88,-2232.56 38.81,-2231.61"/>
 </a>
 </g>
 </g>
@@ -856,8 +856,8 @@
 <g id="Node000278" class="node">
 <title>Node278</title>
 <g id="a_Node000278"><a xlink:href="classtvm_1_1s__tir_1_1TraceNode.html" target="_top" xlink:title="An execution trace of a scheduling program.">
-<polygon fill="white" stroke="#666666" points="258.5,-2409 138.5,-2409 138.5,-2390 258.5,-2390 258.5,-2409"/>
-<text text-anchor="middle" x="198.5" y="-2397" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::TraceNode</text>
+<polygon fill="white" stroke="#666666" points="258.5,-2361 138.5,-2361 138.5,-2342 258.5,-2342 258.5,-2361"/>
+<text text-anchor="middle" x="198.5" y="-2349" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::TraceNode</text>
 </a>
 </g>
 </g>
@@ -865,8 +865,8 @@
 <g id="edge282_Node000000_Node000278" class="edge">
 <title>Node0&#45;&gt;Node278</title>
 <g id="a_edge282_Node000000_Node000278"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M38.23,-2280C46.56,-2307.07 65.53,-2355.52 100,-2380.5 111.17,-2388.59 124.88,-2393.49 138.46,-2396.38"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="41.52,-2278.78 35.38,-2270.15 34.8,-2280.72 41.52,-2278.78"/>
+<path fill="none" stroke="#63b8ff" d="M38.23,-2232C46.56,-2259.07 65.53,-2307.52 100,-2332.5 111.17,-2340.59 124.88,-2345.49 138.46,-2348.38"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="41.52,-2230.78 35.38,-2222.15 34.8,-2232.72 41.52,-2230.78"/>
 </a>
 </g>
 </g>
@@ -874,9 +874,9 @@
 <g id="Node000279" class="node">
 <title>Node279</title>
 <g id="a_Node000279"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1ArgInfoNode.html" target="_top" xlink:title="The argument information.">
-<polygon fill="white" stroke="#666666" points="270,-2371.5 127,-2371.5 127,-2341.5 270,-2341.5 270,-2371.5"/>
-<text text-anchor="start" x="135" y="-2359.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-2348.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ArgInfoNode</text>
+<polygon fill="white" stroke="#666666" points="270,-2323.5 127,-2323.5 127,-2293.5 270,-2293.5 270,-2323.5"/>
+<text text-anchor="start" x="135" y="-2311.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-2300.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ArgInfoNode</text>
 </a>
 </g>
 </g>
@@ -884,8 +884,8 @@
 <g id="edge283_Node000000_Node000279" class="edge">
 <title>Node0&#45;&gt;Node279</title>
 <g id="a_edge283_Node000000_Node000279"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M44.96,-2278.4C56.94,-2294.93 76.9,-2318.92 100,-2332.5 108.27,-2337.36 117.48,-2341.24 126.85,-2344.33"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="47.75,-2276.28 39.15,-2270.1 42.01,-2280.3 47.75,-2276.28"/>
+<path fill="none" stroke="#63b8ff" d="M44.96,-2230.4C56.94,-2246.93 76.9,-2270.92 100,-2284.5 108.27,-2289.36 117.48,-2293.24 126.85,-2296.33"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="47.75,-2228.28 39.15,-2222.1 42.01,-2232.3 47.75,-2228.28"/>
 </a>
 </g>
 </g>
@@ -893,9 +893,9 @@
 <g id="Node000281" class="node">
 <title>Node281</title>
 <g id="a_Node000281"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1BuilderInputNode.html" target="_top" xlink:title="The builder&#39;s input, containing an IRModule and the target.">
-<polygon fill="white" stroke="#666666" points="270,-2323.5 127,-2323.5 127,-2293.5 270,-2293.5 270,-2323.5"/>
-<text text-anchor="start" x="135" y="-2311.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-2300.5" font-family="Helvetica,sans-Serif" font-size="10.00">::BuilderInputNode</text>
+<polygon fill="white" stroke="#666666" points="270,-2275.5 127,-2275.5 127,-2245.5 270,-2245.5 270,-2275.5"/>
+<text text-anchor="start" x="135" y="-2263.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-2252.5" font-family="Helvetica,sans-Serif" font-size="10.00">::BuilderInputNode</text>
 </a>
 </g>
 </g>
@@ -903,8 +903,8 @@
 <g id="edge285_Node000000_Node000281" class="edge">
 <title>Node0&#45;&gt;Node281</title>
 <g id="a_edge285_Node000000_Node000281"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M67.23,-2273.52C77.67,-2277.29 89.24,-2281.26 100,-2284.5 110.43,-2287.64 121.58,-2290.68 132.48,-2293.48"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="68.21,-2270.16 57.62,-2270 65.8,-2276.73 68.21,-2270.16"/>
+<path fill="none" stroke="#63b8ff" d="M67.23,-2225.52C77.67,-2229.29 89.24,-2233.26 100,-2236.5 110.43,-2239.64 121.58,-2242.68 132.48,-2245.48"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="68.21,-2222.16 57.62,-2222 65.8,-2228.73 68.21,-2222.16"/>
 </a>
 </g>
 </g>
@@ -912,9 +912,9 @@
 <g id="Node000282" class="node">
 <title>Node282</title>
 <g id="a_Node000282"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1BuilderNode.html" target="_top" xlink:title="The abstract builder interface.">
-<polygon fill="white" stroke="#666666" points="270,-2275.5 127,-2275.5 127,-2245.5 270,-2245.5 270,-2275.5"/>
-<text text-anchor="start" x="135" y="-2263.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-2252.5" font-family="Helvetica,sans-Serif" font-size="10.00">::BuilderNode</text>
+<polygon fill="white" stroke="#666666" points="270,-2227.5 127,-2227.5 127,-2197.5 270,-2197.5 270,-2227.5"/>
+<text text-anchor="start" x="135" y="-2215.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-2204.5" font-family="Helvetica,sans-Serif" font-size="10.00">::BuilderNode</text>
 </a>
 </g>
 </g>
@@ -922,8 +922,8 @@
 <g id="edge286_Node000000_Node000282" class="edge">
 <title>Node0&#45;&gt;Node282</title>
 <g id="a_edge286_Node000000_Node000282"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M74.34,-2260.5C90.24,-2260.5 108.86,-2260.5 126.75,-2260.5"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="74.33,-2257 64.33,-2260.5 74.33,-2264 74.33,-2257"/>
+<path fill="none" stroke="#63b8ff" d="M74.34,-2212.5C90.24,-2212.5 108.86,-2212.5 126.75,-2212.5"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="74.33,-2209 64.33,-2212.5 74.33,-2216 74.33,-2209"/>
 </a>
 </g>
 </g>
@@ -931,9 +931,9 @@
 <g id="Node000284" class="node">
 <title>Node284</title>
 <g id="a_Node000284"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1BuilderResultNode.html" target="_top" xlink:title="The builder&#39;s output, containing the artifact path or error message if any.">
-<polygon fill="white" stroke="#666666" points="270,-2227.5 127,-2227.5 127,-2197.5 270,-2197.5 270,-2227.5"/>
-<text text-anchor="start" x="135" y="-2215.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-2204.5" font-family="Helvetica,sans-Serif" font-size="10.00">::BuilderResultNode</text>
+<polygon fill="white" stroke="#666666" points="270,-2179.5 127,-2179.5 127,-2149.5 270,-2149.5 270,-2179.5"/>
+<text text-anchor="start" x="135" y="-2167.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-2156.5" font-family="Helvetica,sans-Serif" font-size="10.00">::BuilderResultNode</text>
 </a>
 </g>
 </g>
@@ -941,8 +941,8 @@
 <g id="edge288_Node000000_Node000284" class="edge">
 <title>Node0&#45;&gt;Node284</title>
 <g id="a_edge288_Node000000_Node000284"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M67.23,-2247.48C77.67,-2243.71 89.24,-2239.74 100,-2236.5 110.43,-2233.36 121.58,-2230.32 132.48,-2227.52"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="65.8,-2244.27 57.62,-2251 68.21,-2250.84 65.8,-2244.27"/>
+<path fill="none" stroke="#63b8ff" d="M67.23,-2199.48C77.67,-2195.71 89.24,-2191.74 100,-2188.5 110.43,-2185.36 121.58,-2182.32 132.48,-2179.52"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="65.8,-2196.27 57.62,-2203 68.21,-2202.84 65.8,-2196.27"/>
 </a>
 </g>
 </g>
@@ -950,9 +950,9 @@
 <g id="Node000285" class="node">
 <title>Node285</title>
 <g id="a_Node000285"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1CostModelNode.html" target="_top" xlink:title="Cost model.">
-<polygon fill="white" stroke="#666666" points="270,-2179.5 127,-2179.5 127,-2149.5 270,-2149.5 270,-2179.5"/>
-<text text-anchor="start" x="135" y="-2167.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-2156.5" font-family="Helvetica,sans-Serif" font-size="10.00">::CostModelNode</text>
+<polygon fill="white" stroke="#666666" points="270,-2131.5 127,-2131.5 127,-2101.5 270,-2101.5 270,-2131.5"/>
+<text text-anchor="start" x="135" y="-2119.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-2108.5" font-family="Helvetica,sans-Serif" font-size="10.00">::CostModelNode</text>
 </a>
 </g>
 </g>
@@ -960,8 +960,8 @@
 <g id="edge289_Node000000_Node000285" class="edge">
 <title>Node0&#45;&gt;Node285</title>
 <g id="a_edge289_Node000000_Node000285"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M44.96,-2242.6C56.94,-2226.07 76.9,-2202.08 100,-2188.5 108.27,-2183.64 117.48,-2179.76 126.85,-2176.67"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="42.01,-2240.7 39.15,-2250.9 47.75,-2244.72 42.01,-2240.7"/>
+<path fill="none" stroke="#63b8ff" d="M44.96,-2194.6C56.94,-2178.07 76.9,-2154.08 100,-2140.5 108.27,-2135.64 117.48,-2131.76 126.85,-2128.67"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="42.01,-2192.7 39.15,-2202.9 47.75,-2196.72 42.01,-2192.7"/>
 </a>
 </g>
 </g>
@@ -969,9 +969,9 @@
 <g id="Node000287" class="node">
 <title>Node287</title>
 <g id="a_Node000287"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1DatabaseNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="270,-2131.5 127,-2131.5 127,-2101.5 270,-2101.5 270,-2131.5"/>
-<text text-anchor="start" x="135" y="-2119.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-2108.5" font-family="Helvetica,sans-Serif" font-size="10.00">::DatabaseNode</text>
+<polygon fill="white" stroke="#666666" points="270,-2083.5 127,-2083.5 127,-2053.5 270,-2053.5 270,-2083.5"/>
+<text text-anchor="start" x="135" y="-2071.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-2060.5" font-family="Helvetica,sans-Serif" font-size="10.00">::DatabaseNode</text>
 </a>
 </g>
 </g>
@@ -979,8 +979,8 @@
 <g id="edge291_Node000000_Node000287" class="edge">
 <title>Node0&#45;&gt;Node287</title>
 <g id="a_edge291_Node000000_Node000287"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M38.4,-2241.23C46.94,-2214.43 66.15,-2166.31 100,-2140.5 107.97,-2134.42 117.28,-2129.86 126.92,-2126.45"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="35,-2240.39 35.47,-2250.98 41.7,-2242.41 35,-2240.39"/>
+<path fill="none" stroke="#63b8ff" d="M38.4,-2193.23C46.94,-2166.43 66.15,-2118.31 100,-2092.5 107.97,-2086.42 117.28,-2081.86 126.92,-2078.45"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="35,-2192.39 35.47,-2202.98 41.7,-2194.41 35,-2192.39"/>
 </a>
 </g>
 </g>
@@ -988,9 +988,9 @@
 <g id="Node000289" class="node">
 <title>Node289</title>
 <g id="a_Node000289"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1ExtractedTaskNode.html" target="_top" xlink:title="A tuning task extracted from the high&#45;level IR.">
-<polygon fill="white" stroke="#666666" points="270,-2083.5 127,-2083.5 127,-2053.5 270,-2053.5 270,-2083.5"/>
-<text text-anchor="start" x="135" y="-2071.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-2060.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ExtractedTaskNode</text>
+<polygon fill="white" stroke="#666666" points="270,-2035.5 127,-2035.5 127,-2005.5 270,-2005.5 270,-2035.5"/>
+<text text-anchor="start" x="135" y="-2023.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-2012.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ExtractedTaskNode</text>
 </a>
 </g>
 </g>
@@ -998,8 +998,8 @@
 <g id="edge293_Node000000_Node000289" class="edge">
 <title>Node0&#45;&gt;Node289</title>
 <g id="a_edge293_Node000000_Node000289"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M35.06,-2240.79C39.83,-2205.55 54.91,-2131.76 100,-2092.5 107.76,-2085.75 117.12,-2080.83 126.93,-2077.27"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="31.58,-2240.44 33.85,-2250.78 38.53,-2241.28 31.58,-2240.44"/>
+<path fill="none" stroke="#63b8ff" d="M35.06,-2192.79C39.83,-2157.55 54.91,-2083.76 100,-2044.5 107.76,-2037.75 117.12,-2032.83 126.93,-2029.27"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="31.58,-2192.44 33.85,-2202.78 38.53,-2193.28 31.58,-2192.44"/>
 </a>
 </g>
 </g>
@@ -1007,9 +1007,9 @@
 <g id="Node000290" class="node">
 <title>Node290</title>
 <g id="a_Node000290"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1FeatureExtractorNode.html" target="_top" xlink:title="Extractor for features from measure candidates for use in cost model.">
-<polygon fill="white" stroke="#666666" points="270,-2035.5 127,-2035.5 127,-2005.5 270,-2005.5 270,-2035.5"/>
-<text text-anchor="start" x="135" y="-2023.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-2012.5" font-family="Helvetica,sans-Serif" font-size="10.00">::FeatureExtractorNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1987.5 127,-1987.5 127,-1957.5 270,-1957.5 270,-1987.5"/>
+<text text-anchor="start" x="135" y="-1975.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1964.5" font-family="Helvetica,sans-Serif" font-size="10.00">::FeatureExtractorNode</text>
 </a>
 </g>
 </g>
@@ -1017,8 +1017,8 @@
 <g id="edge294_Node000000_Node000290" class="edge">
 <title>Node0&#45;&gt;Node290</title>
 <g id="a_edge294_Node000000_Node000290"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.05,-2240.38C34.3,-2197.73 43.46,-2097.78 100,-2044.5 107.61,-2037.33 117.01,-2032.2 126.94,-2028.55"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.55,-2240.53 32.88,-2250.59 36.55,-2240.65 29.55,-2240.53"/>
+<path fill="none" stroke="#63b8ff" d="M33.05,-2192.38C34.3,-2149.73 43.46,-2049.78 100,-1996.5 107.61,-1989.33 117.01,-1984.2 126.94,-1980.55"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.55,-2192.53 32.88,-2202.59 36.55,-2192.65 29.55,-2192.53"/>
 </a>
 </g>
 </g>
@@ -1026,9 +1026,9 @@
 <g id="Node000292" class="node">
 <title>Node292</title>
 <g id="a_Node000292"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1MeasureCallbackNode.html" target="_top" xlink:title="Rules to apply after measure results is available.">
-<polygon fill="white" stroke="#666666" points="270,-1987.5 127,-1987.5 127,-1957.5 270,-1957.5 270,-1987.5"/>
-<text text-anchor="start" x="135" y="-1975.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1964.5" font-family="Helvetica,sans-Serif" font-size="10.00">::MeasureCallbackNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1939.5 127,-1939.5 127,-1909.5 270,-1909.5 270,-1939.5"/>
+<text text-anchor="start" x="135" y="-1927.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1916.5" font-family="Helvetica,sans-Serif" font-size="10.00">::MeasureCallbackNode</text>
 </a>
 </g>
 </g>
@@ -1036,8 +1036,8 @@
 <g id="edge296_Node000000_Node000292" class="edge">
 <title>Node0&#45;&gt;Node292</title>
 <g id="a_edge296_Node000000_Node000292"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M35.39,-2240.69C42.44,-2185.43 64.91,-2031.34 100,-1996.5 107.42,-1989.13 116.72,-1983.9 126.61,-1980.2"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="31.88,-2240.55 34.12,-2250.91 38.82,-2241.41 31.88,-2240.55"/>
+<path fill="none" stroke="#63b8ff" d="M35.39,-2192.69C42.44,-2137.43 64.91,-1983.34 100,-1948.5 107.42,-1941.13 116.72,-1935.9 126.61,-1932.2"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="31.88,-2192.55 34.12,-2202.91 38.82,-2193.41 31.88,-2192.55"/>
 </a>
 </g>
 </g>
@@ -1045,9 +1045,9 @@
 <g id="Node000294" class="node">
 <title>Node294</title>
 <g id="a_Node000294"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1MeasureCandidateNode.html" target="_top" xlink:title="The schedule (with input shapes) to be measured.">
-<polygon fill="white" stroke="#666666" points="270,-1939.5 127,-1939.5 127,-1909.5 270,-1909.5 270,-1939.5"/>
-<text text-anchor="start" x="135" y="-1927.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1916.5" font-family="Helvetica,sans-Serif" font-size="10.00">::MeasureCandidateNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1891.5 127,-1891.5 127,-1861.5 270,-1861.5 270,-1891.5"/>
+<text text-anchor="start" x="135" y="-1879.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1868.5" font-family="Helvetica,sans-Serif" font-size="10.00">::MeasureCandidateNode</text>
 </a>
 </g>
 </g>
@@ -1055,8 +1055,8 @@
 <g id="edge298_Node000000_Node000294" class="edge">
 <title>Node0&#45;&gt;Node294</title>
 <g id="a_edge298_Node000000_Node000294"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M34.54,-2240.83C39.77,-2179.12 58.86,-1990.88 100,-1948.5 107.41,-1940.87 116.82,-1935.51 126.86,-1931.78"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="31.05,-2240.57 33.72,-2250.82 38.03,-2241.14 31.05,-2240.57"/>
+<path fill="none" stroke="#63b8ff" d="M34.54,-2192.83C39.77,-2131.12 58.86,-1942.88 100,-1900.5 107.41,-1892.87 116.82,-1887.51 126.86,-1883.78"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="31.05,-2192.57 33.72,-2202.82 38.03,-2193.14 31.05,-2192.57"/>
 </a>
 </g>
 </g>
@@ -1064,9 +1064,9 @@
 <g id="Node000295" class="node">
 <title>Node295</title>
 <g id="a_Node000295"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1MutatorNode.html" target="_top" xlink:title="Mutator is designed to mutate the trace to explore the design space.">
-<polygon fill="white" stroke="#666666" points="270,-1891.5 127,-1891.5 127,-1861.5 270,-1861.5 270,-1891.5"/>
-<text text-anchor="start" x="135" y="-1879.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1868.5" font-family="Helvetica,sans-Serif" font-size="10.00">::MutatorNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1843.5 127,-1843.5 127,-1813.5 270,-1813.5 270,-1843.5"/>
+<text text-anchor="start" x="135" y="-1831.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1820.5" font-family="Helvetica,sans-Serif" font-size="10.00">::MutatorNode</text>
 </a>
 </g>
 </g>
@@ -1074,8 +1074,8 @@
 <g id="edge299_Node000000_Node000295" class="edge">
 <title>Node0&#45;&gt;Node295</title>
 <g id="a_edge299_Node000000_Node000295"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.94,-2240.54C37.57,-2172.4 52.86,-1950.42 100,-1900.5 107.3,-1892.77 116.66,-1887.36 126.68,-1883.6"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="30.44,-2240.59 33.43,-2250.76 37.43,-2240.95 30.44,-2240.59"/>
+<path fill="none" stroke="#63b8ff" d="M33.94,-2192.54C37.57,-2124.4 52.86,-1902.42 100,-1852.5 107.3,-1844.77 116.66,-1839.36 126.68,-1835.6"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="30.44,-2192.59 33.43,-2202.76 37.43,-2192.95 30.44,-2192.59"/>
 </a>
 </g>
 </g>
@@ -1083,9 +1083,9 @@
 <g id="Node000297" class="node">
 <title>Node297</title>
 <g id="a_Node000297"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1PostprocNode.html" target="_top" xlink:title="Rules to apply a postprocessor to a schedule.">
-<polygon fill="white" stroke="#666666" points="270,-1843.5 127,-1843.5 127,-1813.5 270,-1813.5 270,-1843.5"/>
-<text text-anchor="start" x="135" y="-1831.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1820.5" font-family="Helvetica,sans-Serif" font-size="10.00">::PostprocNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1795.5 127,-1795.5 127,-1765.5 270,-1765.5 270,-1795.5"/>
+<text text-anchor="start" x="135" y="-1783.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1772.5" font-family="Helvetica,sans-Serif" font-size="10.00">::PostprocNode</text>
 </a>
 </g>
 </g>
@@ -1093,8 +1093,8 @@
 <g id="edge301_Node000000_Node000297" class="edge">
 <title>Node0&#45;&gt;Node297</title>
 <g id="a_edge301_Node000000_Node000297"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.46,-2240.81C35.57,-2167.29 46.7,-1910.17 100,-1852.5 107.22,-1844.69 116.53,-1839.24 126.53,-1835.47"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.95,-2240.88 33.19,-2250.97 36.95,-2241.07 29.95,-2240.88"/>
+<path fill="none" stroke="#63b8ff" d="M33.46,-2192.81C35.57,-2119.29 46.7,-1862.17 100,-1804.5 107.22,-1796.69 116.53,-1791.24 126.53,-1787.47"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.95,-2192.88 33.19,-2202.97 36.95,-2193.07 29.95,-2192.88"/>
 </a>
 </g>
 </g>
@@ -1102,9 +1102,9 @@
 <g id="Node000299" class="node">
 <title>Node299</title>
 <g id="a_Node000299"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1ProfilerNode.html" target="_top" xlink:title="A generic profiler.">
-<polygon fill="white" stroke="#666666" points="270,-1795.5 127,-1795.5 127,-1765.5 270,-1765.5 270,-1795.5"/>
-<text text-anchor="start" x="135" y="-1783.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1772.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ProfilerNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1747.5 127,-1747.5 127,-1717.5 270,-1717.5 270,-1747.5"/>
+<text text-anchor="start" x="135" y="-1735.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1724.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ProfilerNode</text>
 </a>
 </g>
 </g>
@@ -1112,8 +1112,8 @@
 <g id="edge303_Node000000_Node000299" class="edge">
 <title>Node0&#45;&gt;Node299</title>
 <g id="a_edge303_Node000000_Node000299"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.08,-2240.55C33.83,-2161.3 40.63,-1869.83 100,-1804.5 107.27,-1796.5 116.74,-1790.97 126.91,-1787.18"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.58,-2240.63 33.01,-2250.65 36.58,-2240.68 29.58,-2240.63"/>
+<path fill="none" stroke="#63b8ff" d="M33.08,-2192.55C33.83,-2113.3 40.63,-1821.83 100,-1756.5 107.27,-1748.5 116.74,-1742.97 126.91,-1739.18"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.58,-2192.63 33.01,-2202.65 36.58,-2192.68 29.58,-2192.63"/>
 </a>
 </g>
 </g>
@@ -1121,9 +1121,9 @@
 <g id="Node000300" class="node">
 <title>Node300</title>
 <g id="a_Node000300"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1RunnerFutureNode.html" target="_top" xlink:title="A class to asynchronously fetch runner&#39;s output.">
-<polygon fill="white" stroke="#666666" points="270,-1747.5 127,-1747.5 127,-1717.5 270,-1717.5 270,-1747.5"/>
-<text text-anchor="start" x="135" y="-1735.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1724.5" font-family="Helvetica,sans-Serif" font-size="10.00">::RunnerFutureNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1699.5 127,-1699.5 127,-1669.5 270,-1669.5 270,-1699.5"/>
+<text text-anchor="start" x="135" y="-1687.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1676.5" font-family="Helvetica,sans-Serif" font-size="10.00">::RunnerFutureNode</text>
 </a>
 </g>
 </g>
@@ -1131,8 +1131,8 @@
 <g id="edge304_Node000000_Node000300" class="edge">
 <title>Node0&#45;&gt;Node300</title>
 <g id="a_edge304_Node000000_Node000300"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.77,-2240.66C32.23,-2156.46 34.44,-1829.63 100,-1756.5 107.21,-1748.45 116.65,-1742.89 126.82,-1739.09"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.28,-2240.91 32.86,-2250.88 36.28,-2240.85 29.28,-2240.91"/>
+<path fill="none" stroke="#63b8ff" d="M32.77,-2192.66C32.23,-2108.46 34.44,-1781.63 100,-1708.5 107.21,-1700.45 116.65,-1694.89 126.82,-1691.09"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.28,-2192.91 32.86,-2202.88 36.28,-2192.85 29.28,-2192.91"/>
 </a>
 </g>
 </g>
@@ -1140,9 +1140,9 @@
 <g id="Node000301" class="node">
 <title>Node301</title>
 <g id="a_Node000301"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1RunnerInputNode.html" target="_top" xlink:title="Runner&#39;s input containing path of artifact, type of device and argument info.">
-<polygon fill="white" stroke="#666666" points="270,-1699.5 127,-1699.5 127,-1669.5 270,-1669.5 270,-1699.5"/>
-<text text-anchor="start" x="135" y="-1687.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1676.5" font-family="Helvetica,sans-Serif" font-size="10.00">::RunnerInputNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1651.5 127,-1651.5 127,-1621.5 270,-1621.5 270,-1651.5"/>
+<text text-anchor="start" x="135" y="-1639.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1628.5" font-family="Helvetica,sans-Serif" font-size="10.00">::RunnerInputNode</text>
 </a>
 </g>
 </g>
@@ -1150,8 +1150,8 @@
 <g id="edge305_Node000000_Node000301" class="edge">
 <title>Node0&#45;&gt;Node301</title>
 <g id="a_edge305_Node000000_Node000301"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M34.08,-2240.71C39.39,-2146.83 63.89,-1749.25 100,-1708.5 107.17,-1700.41 116.58,-1694.83 126.74,-1691.02"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="30.58,-2240.64 33.52,-2250.82 37.57,-2241.03 30.58,-2240.64"/>
+<path fill="none" stroke="#63b8ff" d="M34.08,-2192.71C39.39,-2098.83 63.89,-1701.25 100,-1660.5 107.17,-1652.41 116.58,-1646.83 126.74,-1643.02"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="30.58,-2192.64 33.52,-2202.82 37.57,-2193.03 30.58,-2192.64"/>
 </a>
 </g>
 </g>
@@ -1159,9 +1159,9 @@
 <g id="Node000302" class="node">
 <title>Node302</title>
 <g id="a_Node000302"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1RunnerNode.html" target="_top" xlink:title="The abstract runner interface.">
-<polygon fill="white" stroke="#666666" points="270,-1651.5 127,-1651.5 127,-1621.5 270,-1621.5 270,-1651.5"/>
-<text text-anchor="start" x="135" y="-1639.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1628.5" font-family="Helvetica,sans-Serif" font-size="10.00">::RunnerNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1603.5 127,-1603.5 127,-1573.5 270,-1573.5 270,-1603.5"/>
+<text text-anchor="start" x="135" y="-1591.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1580.5" font-family="Helvetica,sans-Serif" font-size="10.00">::RunnerNode</text>
 </a>
 </g>
 </g>
@@ -1169,8 +1169,8 @@
 <g id="edge306_Node000000_Node000302" class="edge">
 <title>Node0&#45;&gt;Node302</title>
 <g id="a_edge306_Node000000_Node000302"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.87,-2240.88C38.43,-2142.44 60.76,-1705.21 100,-1660.5 107.13,-1652.38 116.52,-1646.78 126.67,-1642.96"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="30.37,-2240.79 33.42,-2250.94 37.37,-2241.11 30.37,-2240.79"/>
+<path fill="none" stroke="#63b8ff" d="M33.87,-2192.88C38.43,-2094.44 60.76,-1657.21 100,-1612.5 107.13,-1604.38 116.52,-1598.78 126.67,-1594.96"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="30.37,-2192.79 33.42,-2202.94 37.37,-2193.11 30.37,-2192.79"/>
 </a>
 </g>
 </g>
@@ -1178,9 +1178,9 @@
 <g id="Node000304" class="node">
 <title>Node304</title>
 <g id="a_Node000304"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1RunnerResultNode.html" target="_top" xlink:title="Runner&#39;s output containing measurement result of MeasureCandidate or error msg if any.">
-<polygon fill="white" stroke="#666666" points="270,-1603.5 127,-1603.5 127,-1573.5 270,-1573.5 270,-1603.5"/>
-<text text-anchor="start" x="135" y="-1591.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1580.5" font-family="Helvetica,sans-Serif" font-size="10.00">::RunnerResultNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1555.5 127,-1555.5 127,-1525.5 270,-1525.5 270,-1555.5"/>
+<text text-anchor="start" x="135" y="-1543.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1532.5" font-family="Helvetica,sans-Serif" font-size="10.00">::RunnerResultNode</text>
 </a>
 </g>
 </g>
@@ -1188,8 +1188,8 @@
 <g id="edge308_Node000000_Node000304" class="edge">
 <title>Node0&#45;&gt;Node304</title>
 <g id="a_edge308_Node000000_Node000304"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.71,-2240.62C37.6,-2136.95 57.68,-1661.12 100,-1612.5 107.1,-1604.35 116.47,-1598.74 126.61,-1594.91"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="30.21,-2240.55 33.34,-2250.67 37.21,-2240.81 30.21,-2240.55"/>
+<path fill="none" stroke="#63b8ff" d="M33.71,-2192.62C37.6,-2088.95 57.68,-1613.12 100,-1564.5 107.1,-1556.35 116.47,-1550.74 126.61,-1546.91"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="30.21,-2192.55 33.34,-2202.67 37.21,-2192.81 30.21,-2192.55"/>
 </a>
 </g>
 </g>
@@ -1197,9 +1197,9 @@
 <g id="Node000305" class="node">
 <title>Node305</title>
 <g id="a_Node000305"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1ScheduleRuleNode.html" target="_top" xlink:title="Rules to modify a block in a schedule.">
-<polygon fill="white" stroke="#666666" points="270,-1555.5 127,-1555.5 127,-1525.5 270,-1525.5 270,-1555.5"/>
-<text text-anchor="start" x="135" y="-1543.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1532.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ScheduleRuleNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1507.5 127,-1507.5 127,-1477.5 270,-1477.5 270,-1507.5"/>
+<text text-anchor="start" x="135" y="-1495.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1484.5" font-family="Helvetica,sans-Serif" font-size="10.00">::ScheduleRuleNode</text>
 </a>
 </g>
 </g>
@@ -1207,8 +1207,8 @@
 <g id="edge309_Node000000_Node000305" class="edge">
 <title>Node0&#45;&gt;Node305</title>
 <g id="a_edge309_Node000000_Node000305"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.56,-2240.87C36.78,-2133.2 54.53,-1617.12 100,-1564.5 107.07,-1556.32 116.43,-1550.7 126.56,-1546.87"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="30.05,-2240.88 33.26,-2250.98 37.05,-2241.08 30.05,-2240.88"/>
+<path fill="none" stroke="#63b8ff" d="M33.56,-2192.87C36.78,-2085.2 54.53,-1569.12 100,-1516.5 107.07,-1508.32 116.43,-1502.7 126.56,-1498.87"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="30.05,-2192.88 33.26,-2202.98 37.05,-2193.08 30.05,-2192.88"/>
 </a>
 </g>
 </g>
@@ -1216,9 +1216,9 @@
 <g id="Node000307" class="node">
 <title>Node307</title>
 <g id="a_Node000307"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1SearchStrategyNode.html" target="_top" xlink:title="The search strategy for measure candidates generation.">
-<polygon fill="white" stroke="#666666" points="270,-1507.5 127,-1507.5 127,-1477.5 270,-1477.5 270,-1507.5"/>
-<text text-anchor="start" x="135" y="-1495.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1484.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SearchStrategyNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1459.5 127,-1459.5 127,-1429.5 270,-1429.5 270,-1459.5"/>
+<text text-anchor="start" x="135" y="-1447.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SearchStrategyNode</text>
 </a>
 </g>
 </g>
@@ -1226,8 +1226,8 @@
 <g id="edge311_Node000000_Node000307" class="edge">
 <title>Node0&#45;&gt;Node307</title>
 <g id="a_edge311_Node000000_Node000307"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.43,-2240.59C36.07,-2127.89 51.44,-1573.04 100,-1516.5 107.04,-1508.3 116.39,-1502.67 126.52,-1498.83"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.93,-2240.77 33.2,-2250.85 36.93,-2240.93 29.93,-2240.77"/>
+<path fill="none" stroke="#63b8ff" d="M33.43,-2192.59C36.07,-2079.89 51.44,-1525.04 100,-1468.5 107.04,-1460.3 116.39,-1454.67 126.52,-1450.83"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.93,-2192.77 33.2,-2202.85 36.93,-2192.93 29.93,-2192.77"/>
 </a>
 </g>
 </g>
@@ -1235,9 +1235,9 @@
 <g id="Node000309" class="node">
 <title>Node309</title>
 <g id="a_Node000309"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1SpaceGeneratorNode.html" target="_top" xlink:title="The abstract class for design space generation.">
-<polygon fill="white" stroke="#666666" points="270,-1459.5 127,-1459.5 127,-1429.5 270,-1429.5 270,-1459.5"/>
-<text text-anchor="start" x="135" y="-1447.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SpaceGeneratorNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1411.5 127,-1411.5 127,-1381.5 270,-1381.5 270,-1411.5"/>
+<text text-anchor="start" x="135" y="-1399.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1388.5" font-family="Helvetica,sans-Serif" font-size="10.00">::SpaceGeneratorNode</text>
 </a>
 </g>
 </g>
@@ -1245,8 +1245,8 @@
 <g id="edge313_Node000000_Node000309" class="edge">
 <title>Node0&#45;&gt;Node309</title>
 <g id="a_edge313_Node000000_Node000309"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.32,-2240.77C35.36,-2124.24 48.28,-1529.04 100,-1468.5 107.13,-1460.15 116.66,-1454.46 126.97,-1450.62"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.82,-2240.72 33.15,-2250.78 36.82,-2240.84 29.82,-2240.72"/>
+<path fill="none" stroke="#63b8ff" d="M33.32,-2192.77C35.36,-2076.24 48.28,-1481.04 100,-1420.5 107.13,-1412.15 116.66,-1406.46 126.97,-1402.62"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.82,-2192.72 33.15,-2202.78 36.82,-2192.84 29.82,-2192.72"/>
 </a>
 </g>
 </g>
@@ -1254,9 +1254,9 @@
 <g id="Node000311" class="node">
 <title>Node311</title>
 <g id="a_Node000311"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1TaskRecordNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="270,-1411.5 127,-1411.5 127,-1381.5 270,-1381.5 270,-1411.5"/>
-<text text-anchor="start" x="135" y="-1399.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1388.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TaskRecordNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1363.5 127,-1363.5 127,-1333.5 270,-1333.5 270,-1363.5"/>
+<text text-anchor="start" x="135" y="-1351.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1340.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TaskRecordNode</text>
 </a>
 </g>
 </g>
@@ -1264,8 +1264,8 @@
 <g id="edge315_Node000000_Node000311" class="edge">
 <title>Node0&#45;&gt;Node311</title>
 <g id="a_edge315_Node000000_Node000311"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.22,-2240.71C34.71,-2119.93 45.16,-1485.02 100,-1420.5 107.11,-1412.13 116.63,-1406.43 126.94,-1402.59"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.72,-2240.72 33.1,-2250.76 36.72,-2240.8 29.72,-2240.72"/>
+<path fill="none" stroke="#63b8ff" d="M33.22,-2192.71C34.71,-2071.93 45.16,-1437.02 100,-1372.5 107.11,-1364.13 116.63,-1358.43 126.94,-1354.59"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.72,-2192.72 33.1,-2202.76 36.72,-2192.8 29.72,-2192.72"/>
 </a>
 </g>
 </g>
@@ -1273,9 +1273,9 @@
 <g id="Node000312" class="node">
 <title>Node312</title>
 <g id="a_Node000312"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1TaskSchedulerNode.html" target="_top" xlink:title="The abstract interface of task schedulers.">
-<polygon fill="white" stroke="#666666" points="270,-1363.5 127,-1363.5 127,-1333.5 270,-1333.5 270,-1363.5"/>
-<text text-anchor="start" x="135" y="-1351.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1340.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TaskSchedulerNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1315.5 127,-1315.5 127,-1285.5 270,-1285.5 270,-1315.5"/>
+<text text-anchor="start" x="135" y="-1303.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1292.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TaskSchedulerNode</text>
 </a>
 </g>
 </g>
@@ -1283,8 +1283,8 @@
 <g id="edge316_Node000000_Node000312" class="edge">
 <title>Node0&#45;&gt;Node312</title>
 <g id="a_edge316_Node000000_Node000312"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.13,-2240.76C34.09,-2116.09 42.01,-1441.02 100,-1372.5 107.09,-1364.12 116.6,-1358.41 126.91,-1354.56"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.63,-2240.76 33.05,-2250.79 36.63,-2240.81 29.63,-2240.76"/>
+<path fill="none" stroke="#63b8ff" d="M33.13,-2192.76C34.09,-2068.09 42.01,-1393.02 100,-1324.5 107.09,-1316.12 116.6,-1310.41 126.91,-1306.56"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.63,-2192.76 33.05,-2202.79 36.63,-2192.81 29.63,-2192.76"/>
 </a>
 </g>
 </g>
@@ -1292,9 +1292,9 @@
 <g id="Node000314" class="node">
 <title>Node314</title>
 <g id="a_Node000314"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1TuneContextNode.html" target="_top" xlink:title="The auto tuning context.">
-<polygon fill="white" stroke="#666666" points="270,-1315.5 127,-1315.5 127,-1285.5 270,-1285.5 270,-1315.5"/>
-<text text-anchor="start" x="135" y="-1303.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1292.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TuneContextNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1267.5 127,-1267.5 127,-1237.5 270,-1237.5 270,-1267.5"/>
+<text text-anchor="start" x="135" y="-1255.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1244.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TuneContextNode</text>
 </a>
 </g>
 </g>
@@ -1302,8 +1302,8 @@
 <g id="edge318_Node000000_Node000314" class="edge">
 <title>Node0&#45;&gt;Node314</title>
 <g id="a_edge318_Node000000_Node000314"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.05,-2240.51C33.52,-2111.27 38.9,-1396.97 100,-1324.5 107.08,-1316.1 116.58,-1310.39 126.88,-1306.54"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.54,-2240.85 33.01,-2250.86 36.54,-2240.87 29.54,-2240.85"/>
+<path fill="none" stroke="#63b8ff" d="M33.05,-2192.51C33.52,-2063.27 38.9,-1348.97 100,-1276.5 107.08,-1268.1 116.58,-1262.39 126.88,-1258.54"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.54,-2192.85 33.01,-2202.86 36.54,-2192.87 29.54,-2192.85"/>
 </a>
 </g>
 </g>
@@ -1311,9 +1311,9 @@
 <g id="Node000315" class="node">
 <title>Node315</title>
 <g id="a_Node000315"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1TuningRecordNode.html" target="_top" xlink:title="The class of tuning records.">
-<polygon fill="white" stroke="#666666" points="270,-1267.5 127,-1267.5 127,-1237.5 270,-1237.5 270,-1267.5"/>
-<text text-anchor="start" x="135" y="-1255.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1244.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TuningRecordNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1219.5 127,-1219.5 127,-1189.5 270,-1189.5 270,-1219.5"/>
+<text text-anchor="start" x="135" y="-1207.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1196.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TuningRecordNode</text>
 </a>
 </g>
 </g>
@@ -1321,8 +1321,8 @@
 <g id="edge319_Node000000_Node000315" class="edge">
 <title>Node0&#45;&gt;Node315</title>
 <g id="a_edge319_Node000000_Node000315"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.97,-2240.73C32.96,-2108.29 35.72,-1353.02 100,-1276.5 107.06,-1268.09 116.56,-1262.37 126.85,-1258.52"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.47,-2240.98 32.98,-2250.98 36.47,-2240.98 29.47,-2240.98"/>
+<path fill="none" stroke="#63b8ff" d="M32.97,-2192.73C32.96,-2060.29 35.72,-1305.02 100,-1228.5 107.06,-1220.09 116.56,-1214.37 126.85,-1210.52"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.47,-2192.98 32.98,-2202.98 36.47,-2192.98 29.47,-2192.98"/>
 </a>
 </g>
 </g>
@@ -1330,9 +1330,9 @@
 <g id="Node000316" class="node">
 <title>Node316</title>
 <g id="a_Node000316"><a xlink:href="classtvm_1_1s__tir_1_1meta__schedule_1_1WorkloadNode.html" target="_top" xlink:title="A workload, i.e. an IRModule and its structural hash.">
-<polygon fill="white" stroke="#666666" points="270,-1219.5 127,-1219.5 127,-1189.5 270,-1189.5 270,-1219.5"/>
-<text text-anchor="start" x="135" y="-1207.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
-<text text-anchor="middle" x="198.5" y="-1196.5" font-family="Helvetica,sans-Serif" font-size="10.00">::WorkloadNode</text>
+<polygon fill="white" stroke="#666666" points="270,-1171.5 127,-1171.5 127,-1141.5 270,-1141.5 270,-1171.5"/>
+<text text-anchor="start" x="135" y="-1159.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::s_tir::meta_schedule</text>
+<text text-anchor="middle" x="198.5" y="-1148.5" font-family="Helvetica,sans-Serif" font-size="10.00">::WorkloadNode</text>
 </a>
 </g>
 </g>
@@ -1340,8 +1340,8 @@
 <g id="edge320_Node000000_Node000316" class="edge">
 <title>Node0&#45;&gt;Node316</title>
 <g id="a_edge320_Node000000_Node000316"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.9,-2240.61C32.43,-2104.12 32.59,-1309 100,-1228.5 107.05,-1220.08 116.54,-1214.35 126.83,-1210.5"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.41,-2240.85 32.95,-2250.83 36.41,-2240.82 29.41,-2240.85"/>
+<path fill="none" stroke="#63b8ff" d="M32.9,-2192.61C32.43,-2056.12 32.59,-1261 100,-1180.5 107.05,-1172.08 116.54,-1166.35 126.83,-1162.5"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.41,-2192.85 32.95,-2202.83 36.41,-2192.82 29.41,-2192.85"/>
 </a>
 </g>
 </g>
@@ -1349,9 +1349,9 @@
 <g id="Node000317" class="node">
 <title>Node317</title>
 <g id="a_Node000317"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html" target="_top" xlink:title="A stack frame of the IRBuilder used to keep track of the current scope. Furthermore,...">
-<polygon fill="white" stroke="#666666" points="260,-1171.5 137,-1171.5 137,-1141.5 260,-1141.5 260,-1171.5"/>
-<text text-anchor="start" x="145" y="-1159.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="middle" x="198.5" y="-1148.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
+<polygon fill="white" stroke="#666666" points="260,-1123.5 137,-1123.5 137,-1093.5 260,-1093.5 260,-1123.5"/>
+<text text-anchor="start" x="145" y="-1111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="middle" x="198.5" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
 </a>
 </g>
 </g>
@@ -1359,8 +1359,8 @@
 <g id="edge321_Node000000_Node000317" class="edge">
 <title>Node0&#45;&gt;Node317</title>
 <g id="a_edge321_Node000000_Node000317"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.84,-2240.55C31.92,-2100.27 29.44,-1265.01 100,-1180.5 109.27,-1169.39 122.78,-1162.97 136.81,-1159.35"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.34,-2240.73 32.92,-2250.71 36.34,-2240.68 29.34,-2240.73"/>
+<path fill="none" stroke="#63b8ff" d="M32.84,-2192.55C31.92,-2052.27 29.44,-1217.01 100,-1132.5 109.27,-1121.39 122.78,-1114.97 136.81,-1111.35"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.34,-2192.73 32.92,-2202.71 36.34,-2192.68 29.34,-2192.73"/>
 </a>
 </g>
 </g>
@@ -1368,9 +1368,9 @@
 <g id="Node000339" class="node">
 <title>Node339</title>
 <g id="a_Node000339"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderNode.html" target="_top" xlink:title="A language variant agnostic IRBuilder that constructs any IR of TVM. An idiomatic use of this class i...">
-<polygon fill="white" stroke="#666666" points="259,-1123.5 138,-1123.5 138,-1093.5 259,-1093.5 259,-1123.5"/>
-<text text-anchor="start" x="146" y="-1111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="middle" x="198.5" y="-1100.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderNode</text>
+<polygon fill="white" stroke="#666666" points="259,-1075.5 138,-1075.5 138,-1045.5 259,-1045.5 259,-1075.5"/>
+<text text-anchor="start" x="146" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="middle" x="198.5" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderNode</text>
 </a>
 </g>
 </g>
@@ -1378,8 +1378,8 @@
 <g id="edge343_Node000000_Node000339" class="edge">
 <title>Node0&#45;&gt;Node339</title>
 <g id="a_edge343_Node000000_Node000339"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.79,-2240.57C31.44,-2096.79 26.28,-1221.03 100,-1132.5 109.48,-1121.11 123.42,-1114.64 137.8,-1111.08"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.29,-2240.96 32.89,-2250.93 36.29,-2240.9 29.29,-2240.96"/>
+<path fill="none" stroke="#63b8ff" d="M32.79,-2192.57C31.44,-2048.79 26.28,-1173.03 100,-1084.5 109.48,-1073.11 123.42,-1066.64 137.8,-1063.08"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.29,-2192.96 32.89,-2202.93 36.29,-2192.9 29.29,-2192.96"/>
 </a>
 </g>
 </g>
@@ -1387,9 +1387,9 @@
 <g id="Node000340" class="node">
 <title>Node340</title>
 <g id="a_Node000340"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocNode.html" target="_top" xlink:title="The base class of all Doc.">
-<polygon fill="white" stroke="#666666" points="252,-1075.5 145,-1075.5 145,-1045.5 252,-1045.5 252,-1075.5"/>
-<text text-anchor="start" x="153" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="middle" x="198.5" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">::DocNode</text>
+<polygon fill="white" stroke="#666666" points="252,-1027.5 145,-1027.5 145,-997.5 252,-997.5 252,-1027.5"/>
+<text text-anchor="start" x="153" y="-1015.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="middle" x="198.5" y="-1004.5" font-family="Helvetica,sans-Serif" font-size="10.00">::DocNode</text>
 </a>
 </g>
 </g>
@@ -1397,18 +1397,36 @@
 <g id="edge344_Node000000_Node000340" class="edge">
 <title>Node0&#45;&gt;Node340</title>
 <g id="a_edge344_Node000000_Node000340"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.46,-2240.66C37.07,-2090 61.48,-1130.88 100,-1084.5 111.03,-1071.22 128.11,-1064.63 144.91,-1061.53"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.96,-2240.68 33.22,-2250.76 36.96,-2240.85 29.96,-2240.68"/>
+<path fill="none" stroke="#63b8ff" d="M33.46,-2192.66C37.07,-2042 61.48,-1082.88 100,-1036.5 111.03,-1023.22 128.11,-1016.63 144.91,-1013.53"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.96,-2192.68 33.22,-2202.76 36.96,-2192.85 29.96,-2192.68"/>
+</a>
+</g>
+</g>
+<!-- Node371 -->
+<g id="Node000371" class="node">
+<title>Node371</title>
+<g id="a_Node000371"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocTranslatorObj.html" target="_top" xlink:title="Eager translation context shared by registered hooks. Hooks construct Docs, use explicit lexical scop...">
+<polygon fill="white" stroke="#666666" points="252,-979.5 145,-979.5 145,-949.5 252,-949.5 252,-979.5"/>
+<text text-anchor="start" x="153" y="-967.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
+<text text-anchor="middle" x="198.5" y="-956.5" font-family="Helvetica,sans-Serif" font-size="10.00">::DocTranslatorObj</text>
+</a>
+</g>
+</g>
+<!-- Node0&#45;&gt;Node371 -->
+<g id="edge375_Node000000_Node000371" class="edge">
+<title>Node0&#45;&gt;Node371</title>
+<g id="a_edge375_Node000000_Node000371"><a xlink:title=" ">
+<path fill="none" stroke="#63b8ff" d="M33.43,-2192.34C36.78,-2037.11 59.92,-1036.86 100,-988.5 111.01,-975.21 128.09,-968.61 144.89,-965.52"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.92,-2192.64 33.2,-2202.72 36.92,-2192.79 29.92,-2192.64"/>
 </a>
 </g>
 </g>
 <!-- Node372 -->
 <g id="Node000372" class="node">
 <title>Node372</title>
-<g id="a_Node000372"><a xlink:href="classtvm_1_1script_1_1printer_1_1DocTranslatorObj.html" target="_top" xlink:title="Eager translation context shared by registered hooks. Hooks construct Docs, use explicit lexical scop...">
-<polygon fill="white" stroke="#666666" points="252,-1027.5 145,-1027.5 145,-997.5 252,-997.5 252,-1027.5"/>
-<text text-anchor="start" x="153" y="-1015.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::printer</text>
-<text text-anchor="middle" x="198.5" y="-1004.5" font-family="Helvetica,sans-Serif" font-size="10.00">::DocTranslatorObj</text>
+<g id="a_Node000372"><a xlink:href="classtvm_1_1sym_1_1AnalyzerObj.html" target="_top" xlink:title="Analyzer that contains bunch of sub&#45;analyzers.">
+<polygon fill="white" stroke="#666666" points="262.5,-931 134.5,-931 134.5,-912 262.5,-912 262.5,-931"/>
+<text text-anchor="middle" x="198.5" y="-919" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::AnalyzerObj</text>
 </a>
 </g>
 </g>
@@ -1416,17 +1434,17 @@
 <g id="edge376_Node000000_Node000372" class="edge">
 <title>Node0&#45;&gt;Node372</title>
 <g id="a_edge376_Node000000_Node000372"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.43,-2240.34C36.78,-2085.11 59.92,-1084.86 100,-1036.5 111.01,-1023.21 128.09,-1016.61 144.89,-1013.52"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.92,-2240.64 33.2,-2250.72 36.92,-2240.79 29.92,-2240.64"/>
+<path fill="none" stroke="#63b8ff" d="M33.36,-2192.5C36.27,-2034.32 57.1,-989.86 100,-940.5 108.82,-930.35 121.32,-924.62 134.44,-921.56"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.85,-2192.62 33.17,-2202.68 36.85,-2192.75 29.85,-2192.62"/>
 </a>
 </g>
 </g>
 <!-- Node373 -->
 <g id="Node000373" class="node">
 <title>Node373</title>
-<g id="a_Node000373"><a xlink:href="classtvm_1_1sym_1_1AnalyzerObj.html" target="_top" xlink:title="Analyzer that contains bunch of sub&#45;analyzers.">
-<polygon fill="white" stroke="#666666" points="262.5,-979 134.5,-979 134.5,-960 262.5,-960 262.5,-979"/>
-<text text-anchor="middle" x="198.5" y="-967" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::AnalyzerObj</text>
+<g id="a_Node000373"><a xlink:href="classtvm_1_1sym_1_1ConstIntBoundNode.html" target="_top" xlink:title="Constant integer up and lower bound(inclusive). Useful for value bound analysis.">
+<polygon fill="white" stroke="#666666" points="281.5,-894 115.5,-894 115.5,-875 281.5,-875 281.5,-894"/>
+<text text-anchor="middle" x="198.5" y="-882" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::ConstIntBoundNode</text>
 </a>
 </g>
 </g>
@@ -1434,17 +1452,17 @@
 <g id="edge377_Node000000_Node000373" class="edge">
 <title>Node0&#45;&gt;Node373</title>
 <g id="a_edge377_Node000000_Node000373"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.36,-2240.5C36.27,-2082.32 57.1,-1037.86 100,-988.5 108.82,-978.35 121.32,-972.62 134.44,-969.56"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.85,-2240.62 33.17,-2250.68 36.85,-2240.75 29.85,-2240.62"/>
+<path fill="none" stroke="#63b8ff" d="M33.33,-2192.42C36.05,-2031.36 55.85,-954.38 100,-903.5 104.3,-898.55 109.46,-894.65 115.15,-891.6"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.82,-2192.71 33.16,-2202.76 36.82,-2192.82 29.82,-2192.71"/>
 </a>
 </g>
 </g>
 <!-- Node374 -->
 <g id="Node000374" class="node">
 <title>Node374</title>
-<g id="a_Node000374"><a xlink:href="classtvm_1_1sym_1_1ConstIntBoundNode.html" target="_top" xlink:title="Constant integer up and lower bound(inclusive). Useful for value bound analysis.">
-<polygon fill="white" stroke="#666666" points="281.5,-942 115.5,-942 115.5,-923 281.5,-923 281.5,-942"/>
-<text text-anchor="middle" x="198.5" y="-930" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::ConstIntBoundNode</text>
+<g id="a_Node000374"><a xlink:href="classtvm_1_1sym_1_1IntSetNode.html" target="_top" xlink:title="Base class of all Integer set containers. represent a set of integers in one dimension.">
+<polygon fill="white" stroke="#666666" points="260,-857 137,-857 137,-838 260,-838 260,-857"/>
+<text text-anchor="middle" x="198.5" y="-845" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IntSetNode</text>
 </a>
 </g>
 </g>
@@ -1452,17 +1470,17 @@
 <g id="edge378_Node000000_Node000374" class="edge">
 <title>Node0&#45;&gt;Node374</title>
 <g id="a_edge378_Node000000_Node000374"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.33,-2240.42C36.05,-2079.36 55.85,-1002.38 100,-951.5 104.3,-946.55 109.46,-942.65 115.15,-939.6"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.82,-2240.71 33.16,-2250.76 36.82,-2240.82 29.82,-2240.71"/>
+<path fill="none" stroke="#63b8ff" d="M33.29,-2192.85C35.79,-2030.75 54.55,-918.95 100,-866.5 109.37,-855.68 122.92,-849.88 136.94,-846.98"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.79,-2192.8 33.14,-2202.86 36.79,-2192.91 29.79,-2192.8"/>
 </a>
 </g>
 </g>
 <!-- Node375 -->
 <g id="Node000375" class="node">
 <title>Node375</title>
-<g id="a_Node000375"><a xlink:href="classtvm_1_1sym_1_1IntSetNode.html" target="_top" xlink:title="Base class of all Integer set containers. represent a set of integers in one dimension.">
-<polygon fill="white" stroke="#666666" points="260,-905 137,-905 137,-886 260,-886 260,-905"/>
-<text text-anchor="middle" x="198.5" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IntSetNode</text>
+<g id="a_Node000375"><a xlink:href="classtvm_1_1sym_1_1IterMapResultNode.html" target="_top" xlink:title="Result of DetectIterMap.">
+<polygon fill="white" stroke="#666666" points="280,-820 117,-820 117,-801 280,-801 280,-820"/>
+<text text-anchor="middle" x="198.5" y="-808" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IterMapResultNode</text>
 </a>
 </g>
 </g>
@@ -1470,17 +1488,17 @@
 <g id="edge379_Node000000_Node000375" class="edge">
 <title>Node0&#45;&gt;Node375</title>
 <g id="a_edge379_Node000000_Node000375"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.29,-2240.85C35.79,-2078.75 54.55,-966.95 100,-914.5 109.37,-903.68 122.92,-897.88 136.94,-894.98"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.79,-2240.8 33.14,-2250.86 36.79,-2240.91 29.79,-2240.8"/>
+<path fill="none" stroke="#63b8ff" d="M33.27,-2192.82C35.58,-2028.11 53.29,-883.47 100,-829.5 104.74,-824.02 110.55,-819.83 116.95,-816.65"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.76,-2192.91 33.13,-2202.96 36.76,-2193.01 29.76,-2192.91"/>
 </a>
 </g>
 </g>
 <!-- Node376 -->
 <g id="Node000376" class="node">
 <title>Node376</title>
-<g id="a_Node000376"><a xlink:href="classtvm_1_1sym_1_1IterMapResultNode.html" target="_top" xlink:title="Result of DetectIterMap.">
-<polygon fill="white" stroke="#666666" points="280,-868 117,-868 117,-849 280,-849 280,-868"/>
-<text text-anchor="middle" x="198.5" y="-856" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IterMapResultNode</text>
+<g id="a_Node000376"><a xlink:href="classtvm_1_1sym_1_1IterMarkNode.html" target="_top" xlink:title="Mark the source as an iterator in [0, extent).">
+<polygon fill="white" stroke="#666666" points="266.5,-783 130.5,-783 130.5,-764 266.5,-764 266.5,-783"/>
+<text text-anchor="middle" x="198.5" y="-771" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IterMarkNode</text>
 </a>
 </g>
 </g>
@@ -1488,17 +1506,17 @@
 <g id="edge380_Node000000_Node000376" class="edge">
 <title>Node0&#45;&gt;Node376</title>
 <g id="a_edge380_Node000000_Node000376"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.27,-2240.82C35.58,-2076.11 53.29,-931.47 100,-877.5 104.74,-872.02 110.55,-867.83 116.95,-864.65"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.76,-2240.91 33.13,-2250.96 36.76,-2241.01 29.76,-2240.91"/>
+<path fill="none" stroke="#63b8ff" d="M33.25,-2192.3C35.4,-2023.18 52.08,-847.94 100,-792.5 107.89,-783.37 118.76,-777.81 130.38,-774.55"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.74,-2192.66 33.12,-2202.71 36.74,-2192.75 29.74,-2192.66"/>
 </a>
 </g>
 </g>
 <!-- Node377 -->
 <g id="Node000377" class="node">
 <title>Node377</title>
-<g id="a_Node000377"><a xlink:href="classtvm_1_1sym_1_1IterMarkNode.html" target="_top" xlink:title="Mark the source as an iterator in [0, extent).">
-<polygon fill="white" stroke="#666666" points="266.5,-831 130.5,-831 130.5,-812 266.5,-812 266.5,-831"/>
-<text text-anchor="middle" x="198.5" y="-819" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::IterMarkNode</text>
+<g id="a_Node000377"><a xlink:href="classtvm_1_1sym_1_1ModularSetNode.html" target="_top" xlink:title="Range of a linear integer function. Use to do specify the possible index values.">
+<polygon fill="white" stroke="#666666" points="273.5,-746 123.5,-746 123.5,-727 273.5,-727 273.5,-746"/>
+<text text-anchor="middle" x="198.5" y="-734" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::ModularSetNode</text>
 </a>
 </g>
 </g>
@@ -1506,17 +1524,17 @@
 <g id="edge381_Node000000_Node000377" class="edge">
 <title>Node0&#45;&gt;Node377</title>
 <g id="a_edge381_Node000000_Node000377"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.25,-2240.3C35.4,-2071.18 52.08,-895.94 100,-840.5 107.89,-831.37 118.76,-825.81 130.38,-822.55"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.74,-2240.66 33.12,-2250.71 36.74,-2240.75 29.74,-2240.66"/>
+<path fill="none" stroke="#63b8ff" d="M33.22,-2192.81C35.16,-2023.14 50.77,-812.53 100,-755.5 106.2,-748.32 114.23,-743.35 123.03,-739.97"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.72,-2192.8 33.1,-2202.84 36.72,-2192.88 29.72,-2192.8"/>
 </a>
 </g>
 </g>
 <!-- Node378 -->
 <g id="Node000378" class="node">
 <title>Node378</title>
-<g id="a_Node000378"><a xlink:href="classtvm_1_1sym_1_1ModularSetNode.html" target="_top" xlink:title="Range of a linear integer function. Use to do specify the possible index values.">
-<polygon fill="white" stroke="#666666" points="273.5,-794 123.5,-794 123.5,-775 273.5,-775 273.5,-794"/>
-<text text-anchor="middle" x="198.5" y="-782" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::sym::ModularSetNode</text>
+<g id="a_Node000378"><a xlink:href="classtvm_1_1te_1_1CommReducerNode.html" target="_top" xlink:title="A commutative reducer node to represent a commutative binary operator with identity element.">
+<polygon fill="white" stroke="#666666" points="276,-709 121,-709 121,-690 276,-690 276,-709"/>
+<text text-anchor="middle" x="198.5" y="-697" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::te::CommReducerNode</text>
 </a>
 </g>
 </g>
@@ -1524,17 +1542,17 @@
 <g id="edge382_Node000000_Node000378" class="edge">
 <title>Node0&#45;&gt;Node378</title>
 <g id="a_edge382_Node000000_Node000378"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.22,-2240.81C35.16,-2071.14 50.77,-860.53 100,-803.5 106.2,-796.32 114.23,-791.35 123.03,-787.97"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.72,-2240.8 33.1,-2250.84 36.72,-2240.88 29.72,-2240.8"/>
+<path fill="none" stroke="#63b8ff" d="M33.19,-2192.85C34.96,-2020.89 49.5,-777.07 100,-718.5 105.63,-711.97 112.78,-707.27 120.64,-703.92"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.69,-2192.94 33.09,-2202.98 36.69,-2193.01 29.69,-2192.94"/>
 </a>
 </g>
 </g>
 <!-- Node379 -->
 <g id="Node000379" class="node">
 <title>Node379</title>
-<g id="a_Node000379"><a xlink:href="classtvm_1_1te_1_1CommReducerNode.html" target="_top" xlink:title="A commutative reducer node to represent a commutative binary operator with identity element.">
-<polygon fill="white" stroke="#666666" points="276,-757 121,-757 121,-738 276,-738 276,-757"/>
-<text text-anchor="middle" x="198.5" y="-745" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::te::CommReducerNode</text>
+<g id="a_Node000379"><a xlink:href="classtvm_1_1te_1_1OperationNode.html" target="_top" xlink:title="Base class of all operation nodes.">
+<polygon fill="white" stroke="#666666" points="264,-672 133,-672 133,-653 264,-653 264,-672"/>
+<text text-anchor="middle" x="198.5" y="-660" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::te::OperationNode</text>
 </a>
 </g>
 </g>
@@ -1542,35 +1560,35 @@
 <g id="edge383_Node000000_Node000379" class="edge">
 <title>Node0&#45;&gt;Node379</title>
 <g id="a_edge383_Node000000_Node000379"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.19,-2240.85C34.96,-2068.89 49.5,-825.07 100,-766.5 105.63,-759.97 112.78,-755.27 120.64,-751.92"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.69,-2240.94 33.09,-2250.98 36.69,-2241.01 29.69,-2240.94"/>
+<path fill="none" stroke="#63b8ff" d="M33.17,-2192.62C34.78,-2017.42 48.26,-741.57 100,-681.5 108.44,-671.7 120.3,-666.01 132.86,-662.87"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.67,-2192.71 33.08,-2202.74 36.67,-2192.77 29.67,-2192.71"/>
 </a>
 </g>
 </g>
-<!-- Node380 -->
-<g id="Node000380" class="node">
-<title>Node380</title>
-<g id="a_Node000380"><a xlink:href="classtvm_1_1te_1_1OperationNode.html" target="_top" xlink:title="Base class of all operation nodes.">
-<polygon fill="white" stroke="#666666" points="264,-720 133,-720 133,-701 264,-701 264,-720"/>
-<text text-anchor="middle" x="198.5" y="-708" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::te::OperationNode</text>
+<!-- Node385 -->
+<g id="Node000385" class="node">
+<title>Node385</title>
+<g id="a_Node000385"><a xlink:href="classtvm_1_1tirx_1_1DependencyNode.html" target="_top" xlink:title="A tuple (src, dst, kind) representing certain types of dependency. For example, (A,...">
+<polygon fill="white" stroke="#666666" points="274,-635 123,-635 123,-616 274,-616 274,-635"/>
+<text text-anchor="middle" x="198.5" y="-623" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::DependencyNode</text>
 </a>
 </g>
 </g>
-<!-- Node0&#45;&gt;Node380 -->
-<g id="edge384_Node000000_Node000380" class="edge">
-<title>Node0&#45;&gt;Node380</title>
-<g id="a_edge384_Node000000_Node000380"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.17,-2240.62C34.78,-2065.42 48.26,-789.57 100,-729.5 108.44,-719.7 120.3,-714.01 132.86,-710.87"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.67,-2240.71 33.08,-2250.74 36.67,-2240.77 29.67,-2240.71"/>
+<!-- Node0&#45;&gt;Node385 -->
+<g id="edge389_Node000000_Node000385" class="edge">
+<title>Node0&#45;&gt;Node385</title>
+<g id="a_edge389_Node000000_Node000385"><a xlink:title=" ">
+<path fill="none" stroke="#63b8ff" d="M33.15,-2192.69C34.59,-2015.39 46.99,-706.11 100,-644.5 106.07,-637.44 113.92,-632.51 122.53,-629.13"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.65,-2192.87 33.07,-2202.9 36.65,-2192.93 29.65,-2192.87"/>
 </a>
 </g>
 </g>
 <!-- Node386 -->
 <g id="Node000386" class="node">
 <title>Node386</title>
-<g id="a_Node000386"><a xlink:href="classtvm_1_1tirx_1_1DependencyNode.html" target="_top" xlink:title="A tuple (src, dst, kind) representing certain types of dependency. For example, (A,...">
-<polygon fill="white" stroke="#666666" points="274,-683 123,-683 123,-664 274,-664 274,-683"/>
-<text text-anchor="middle" x="198.5" y="-671" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::DependencyNode</text>
+<g id="a_Node000386"><a xlink:href="classtvm_1_1tirx_1_1DispatchContextNode.html" target="_top" xlink:title="The context information of the kernel required by op dispatch.">
+<polygon fill="white" stroke="#666666" points="284,-598 113,-598 113,-579 284,-579 284,-598"/>
+<text text-anchor="middle" x="198.5" y="-586" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::DispatchContextNode</text>
 </a>
 </g>
 </g>
@@ -1578,17 +1596,17 @@
 <g id="edge390_Node000000_Node000386" class="edge">
 <title>Node0&#45;&gt;Node386</title>
 <g id="a_edge390_Node000000_Node000386"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.15,-2240.69C34.59,-2063.39 46.99,-754.11 100,-692.5 106.07,-685.44 113.92,-680.51 122.53,-677.13"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.65,-2240.87 33.07,-2250.9 36.65,-2240.93 29.65,-2240.87"/>
+<path fill="none" stroke="#63b8ff" d="M33.13,-2192.5C34.41,-2012.08 45.74,-670.62 100,-607.5 103.71,-603.18 108.08,-599.67 112.89,-596.81"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.63,-2192.65 33.06,-2202.68 36.63,-2192.7 29.63,-2192.65"/>
 </a>
 </g>
 </g>
 <!-- Node387 -->
 <g id="Node000387" class="node">
 <title>Node387</title>
-<g id="a_Node000387"><a xlink:href="classtvm_1_1tirx_1_1DispatchContextNode.html" target="_top" xlink:title="The context information of the kernel required by op dispatch.">
-<polygon fill="white" stroke="#666666" points="284,-646 113,-646 113,-627 284,-627 284,-646"/>
-<text text-anchor="middle" x="198.5" y="-634" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::DispatchContextNode</text>
+<g id="a_Node000387"><a xlink:href="classtvm_1_1tirx_1_1ExecScopeNode.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="#666666" points="269.5,-561 127.5,-561 127.5,-542 269.5,-542 269.5,-561"/>
+<text text-anchor="middle" x="198.5" y="-549" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::ExecScopeNode</text>
 </a>
 </g>
 </g>
@@ -1596,17 +1614,17 @@
 <g id="edge391_Node000000_Node000387" class="edge">
 <title>Node0&#45;&gt;Node387</title>
 <g id="a_edge391_Node000000_Node000387"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.13,-2240.5C34.41,-2060.08 45.74,-718.62 100,-655.5 103.71,-651.18 108.08,-647.67 112.89,-644.81"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.63,-2240.65 33.06,-2250.68 36.63,-2240.7 29.63,-2240.65"/>
+<path fill="none" stroke="#63b8ff" d="M33.11,-2192.6C34.23,-2010.28 44.47,-635.16 100,-570.5 107.19,-562.13 116.88,-556.75 127.37,-553.4"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.61,-2192.84 33.05,-2202.86 36.61,-2192.88 29.61,-2192.84"/>
 </a>
 </g>
 </g>
 <!-- Node388 -->
 <g id="Node000388" class="node">
 <title>Node388</title>
-<g id="a_Node000388"><a xlink:href="classtvm_1_1tirx_1_1ExecScopeNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="269.5,-609 127.5,-609 127.5,-590 269.5,-590 269.5,-609"/>
-<text text-anchor="middle" x="198.5" y="-597" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::ExecScopeNode</text>
+<g id="a_Node000388"><a xlink:href="classtvm_1_1tirx_1_1IndexMapNode.html" target="_top" xlink:title="Defines a mapping between two representations of indices into a buffer.">
+<polygon fill="white" stroke="#666666" points="267.5,-524 129.5,-524 129.5,-505 267.5,-505 267.5,-524"/>
+<text text-anchor="middle" x="198.5" y="-512" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::IndexMapNode</text>
 </a>
 </g>
 </g>
@@ -1614,17 +1632,17 @@
 <g id="edge392_Node000000_Node000388" class="edge">
 <title>Node0&#45;&gt;Node388</title>
 <g id="a_edge392_Node000000_Node000388"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.11,-2240.6C34.23,-2058.28 44.47,-683.16 100,-618.5 107.19,-610.13 116.88,-604.75 127.37,-601.4"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.61,-2240.84 33.05,-2250.86 36.61,-2240.88 29.61,-2240.84"/>
+<path fill="none" stroke="#63b8ff" d="M33.09,-2192.43C34.06,-2007.13 43.22,-599.68 100,-533.5 107.64,-524.6 118.09,-519.09 129.34,-515.79"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.59,-2192.62 33.04,-2202.64 36.59,-2192.66 29.59,-2192.62"/>
 </a>
 </g>
 </g>
 <!-- Node389 -->
 <g id="Node000389" class="node">
 <title>Node389</title>
-<g id="a_Node000389"><a xlink:href="classtvm_1_1tirx_1_1IndexMapNode.html" target="_top" xlink:title="Defines a mapping between two representations of indices into a buffer.">
-<polygon fill="white" stroke="#666666" points="267.5,-572 129.5,-572 129.5,-553 267.5,-553 267.5,-572"/>
-<text text-anchor="middle" x="198.5" y="-560" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::IndexMapNode</text>
+<g id="a_Node000389"><a xlink:href="classtvm_1_1tirx_1_1IterNode.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="#666666" points="252,-487 145,-487 145,-468 252,-468 252,-487"/>
+<text text-anchor="middle" x="198.5" y="-475" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::IterNode</text>
 </a>
 </g>
 </g>
@@ -1632,17 +1650,17 @@
 <g id="edge393_Node000000_Node000389" class="edge">
 <title>Node0&#45;&gt;Node389</title>
 <g id="a_edge393_Node000000_Node000389"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.09,-2240.43C34.06,-2055.13 43.22,-647.68 100,-581.5 107.64,-572.6 118.09,-567.09 129.34,-563.79"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.59,-2240.62 33.04,-2250.64 36.59,-2240.66 29.59,-2240.62"/>
+<path fill="none" stroke="#63b8ff" d="M33.08,-2192.57C33.88,-2005.55 41.94,-564.23 100,-496.5 111.06,-483.6 128.04,-477.82 144.75,-475.58"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.58,-2192.83 33.03,-2202.84 36.58,-2192.86 29.58,-2192.83"/>
 </a>
 </g>
 </g>
 <!-- Node390 -->
 <g id="Node000390" class="node">
 <title>Node390</title>
-<g id="a_Node000390"><a xlink:href="classtvm_1_1tirx_1_1IterNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="252,-535 145,-535 145,-516 252,-516 252,-535"/>
-<text text-anchor="middle" x="198.5" y="-523" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::IterNode</text>
+<g id="a_Node000390"><a xlink:href="classtvm_1_1tirx_1_1LayoutNode.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="#666666" points="260,-450 137,-450 137,-431 260,-431 260,-450"/>
+<text text-anchor="middle" x="198.5" y="-438" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::LayoutNode</text>
 </a>
 </g>
 </g>
@@ -1650,35 +1668,36 @@
 <g id="edge394_Node000000_Node000390" class="edge">
 <title>Node0&#45;&gt;Node390</title>
 <g id="a_edge394_Node000000_Node000390"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.08,-2240.57C33.88,-2053.55 41.94,-612.23 100,-544.5 111.06,-531.6 128.04,-525.82 144.75,-523.58"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.58,-2240.83 33.03,-2250.84 36.58,-2240.86 29.58,-2240.83"/>
+<path fill="none" stroke="#63b8ff" d="M33.06,-2192.42C33.71,-2002.56 40.69,-528.74 100,-459.5 109.31,-448.63 122.83,-442.81 136.86,-439.91"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.56,-2192.62 33.03,-2202.63 36.56,-2192.64 29.56,-2192.62"/>
 </a>
 </g>
 </g>
-<!-- Node391 -->
-<g id="Node000391" class="node">
-<title>Node391</title>
-<g id="a_Node000391"><a xlink:href="classtvm_1_1tirx_1_1LayoutNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="260,-498 137,-498 137,-479 260,-479 260,-498"/>
-<text text-anchor="middle" x="198.5" y="-486" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::LayoutNode</text>
+<!-- Node393 -->
+<g id="Node000393" class="node">
+<title>Node393</title>
+<g id="a_Node000393"><a xlink:href="classtvm_1_1tirx_1_1SBijectiveLayoutNode.html" target="_top" xlink:title=" ">
+<polygon fill="white" stroke="#666666" points="284.5,-413 112.5,-413 112.5,-394 284.5,-394 284.5,-413"/>
+<text text-anchor="middle" x="198.5" y="-401" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::SBijectiveLayoutNode</text>
 </a>
 </g>
 </g>
-<!-- Node0&#45;&gt;Node391 -->
-<g id="edge395_Node000000_Node000391" class="edge">
-<title>Node0&#45;&gt;Node391</title>
-<g id="a_edge395_Node000000_Node000391"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.06,-2240.42C33.71,-2050.56 40.69,-576.74 100,-507.5 109.31,-496.63 122.83,-490.81 136.86,-487.91"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.56,-2240.62 33.03,-2250.63 36.56,-2240.64 29.56,-2240.62"/>
+<!-- Node0&#45;&gt;Node393 -->
+<g id="edge397_Node000000_Node000393" class="edge">
+<title>Node0&#45;&gt;Node393</title>
+<g id="a_edge397_Node000000_Node000393"><a xlink:title=" ">
+<path fill="none" stroke="#63b8ff" d="M33.04,-2192.59C33.54,-2001.21 39.41,-493.3 100,-422.5 103.59,-418.31 107.8,-414.87 112.43,-412.05"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.54,-2192.84 33.02,-2202.85 36.54,-2192.86 29.54,-2192.84"/>
 </a>
 </g>
 </g>
 <!-- Node394 -->
 <g id="Node000394" class="node">
 <title>Node394</title>
-<g id="a_Node000394"><a xlink:href="classtvm_1_1tirx_1_1SBijectiveLayoutNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="#666666" points="284.5,-461 112.5,-461 112.5,-442 284.5,-442 284.5,-461"/>
-<text text-anchor="middle" x="198.5" y="-449" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::SBijectiveLayoutNode</text>
+<g id="a_Node000394"><a xlink:href="classtvm_1_1tirx_1_1SBlockDependenceInfoNode.html" target="_top" xlink:title="An object that helps build and query block level dependences using the 2 core objects SBlockScope and...">
+<polygon fill="white" stroke="#666666" points="277.5,-375.5 119.5,-375.5 119.5,-345.5 277.5,-345.5 277.5,-375.5"/>
+<text text-anchor="start" x="127.5" y="-363.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::SBlockDependence</text>
+<text text-anchor="middle" x="198.5" y="-352.5" font-family="Helvetica,sans-Serif" font-size="10.00">InfoNode</text>
 </a>
 </g>
 </g>
@@ -1686,18 +1705,17 @@
 <g id="edge398_Node000000_Node000394" class="edge">
 <title>Node0&#45;&gt;Node394</title>
 <g id="a_edge398_Node000000_Node000394"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.04,-2240.59C33.54,-2049.21 39.41,-541.3 100,-470.5 103.59,-466.31 107.8,-462.87 112.43,-460.05"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.54,-2240.84 33.02,-2250.85 36.54,-2240.86 29.54,-2240.84"/>
+<path fill="none" stroke="#63b8ff" d="M33.05,-2192.49C33.65,-1998.61 40.3,-459.6 100,-385.5 105.26,-378.97 111.98,-374.01 119.42,-370.26"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.55,-2192.65 33.02,-2202.66 36.55,-2192.67 29.55,-2192.65"/>
 </a>
 </g>
 </g>
 <!-- Node395 -->
 <g id="Node000395" class="node">
 <title>Node395</title>
-<g id="a_Node000395"><a xlink:href="classtvm_1_1tirx_1_1SBlockDependenceInfoNode.html" target="_top" xlink:title="An object that helps build and query block level dependences using the 2 core objects SBlockScope and...">
-<polygon fill="white" stroke="#666666" points="277.5,-423.5 119.5,-423.5 119.5,-393.5 277.5,-393.5 277.5,-423.5"/>
-<text text-anchor="start" x="127.5" y="-411.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::SBlockDependence</text>
-<text text-anchor="middle" x="198.5" y="-400.5" font-family="Helvetica,sans-Serif" font-size="10.00">InfoNode</text>
+<g id="a_Node000395"><a xlink:href="classtvm_1_1tirx_1_1SBlockScopeNode.html" target="_top" xlink:title="An object with 1&#45;to&#45;1 correspondence with each block reference in the sref tree. This data structure ...">
+<polygon fill="white" stroke="#666666" points="274.5,-327 122.5,-327 122.5,-308 274.5,-308 274.5,-327"/>
+<text text-anchor="middle" x="198.5" y="-315" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::SBlockScopeNode</text>
 </a>
 </g>
 </g>
@@ -1705,17 +1723,17 @@
 <g id="edge399_Node000000_Node000395" class="edge">
 <title>Node0&#45;&gt;Node395</title>
 <g id="a_edge399_Node000000_Node000395"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.05,-2240.49C33.65,-2046.61 40.3,-507.6 100,-433.5 105.26,-426.97 111.98,-422.01 119.42,-418.26"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.55,-2240.65 33.02,-2250.66 36.55,-2240.67 29.55,-2240.65"/>
+<path fill="none" stroke="#63b8ff" d="M33.01,-2192.54C33.17,-1995.88 36.47,-410.86 100,-336.5 106.05,-329.42 113.88,-324.48 122.48,-321.1"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.51,-2192.82 33,-2202.83 36.51,-2192.83 29.51,-2192.82"/>
 </a>
 </g>
 </g>
 <!-- Node396 -->
 <g id="Node000396" class="node">
 <title>Node396</title>
-<g id="a_Node000396"><a xlink:href="classtvm_1_1tirx_1_1SBlockScopeNode.html" target="_top" xlink:title="An object with 1&#45;to&#45;1 correspondence with each block reference in the sref tree. This data structure ...">
-<polygon fill="white" stroke="#666666" points="274.5,-375 122.5,-375 122.5,-356 274.5,-356 274.5,-375"/>
-<text text-anchor="middle" x="198.5" y="-363" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::SBlockScopeNode</text>
+<g id="a_Node000396"><a xlink:href="classtvm_1_1tirx_1_1SLayoutNode.html" target="_top" xlink:title="SLayout is to describe how data is organized within an N&#45;dimention tensor. It is composed of upper ca...">
+<polygon fill="white" stroke="#666666" points="263,-290 134,-290 134,-271 263,-271 263,-290"/>
+<text text-anchor="middle" x="198.5" y="-278" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::SLayoutNode</text>
 </a>
 </g>
 </g>
@@ -1723,17 +1741,17 @@
 <g id="edge400_Node000000_Node000396" class="edge">
 <title>Node0&#45;&gt;Node396</title>
 <g id="a_edge400_Node000000_Node000396"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M33.01,-2240.54C33.17,-2043.88 36.47,-458.86 100,-384.5 106.05,-377.42 113.88,-372.48 122.48,-369.1"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.51,-2240.82 33,-2250.83 36.51,-2240.83 29.51,-2240.82"/>
+<path fill="none" stroke="#63b8ff" d="M32.99,-2192.44C33.02,-1993.22 35.21,-375.39 100,-299.5 108.62,-289.4 120.88,-283.66 133.8,-280.56"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.49,-2192.64 32.99,-2202.64 36.49,-2192.64 29.49,-2192.64"/>
 </a>
 </g>
 </g>
 <!-- Node397 -->
 <g id="Node000397" class="node">
 <title>Node397</title>
-<g id="a_Node000397"><a xlink:href="classtvm_1_1tirx_1_1SLayoutNode.html" target="_top" xlink:title="SLayout is to describe how data is organized within an N&#45;dimention tensor. It is composed of upper ca...">
-<polygon fill="white" stroke="#666666" points="263,-338 134,-338 134,-319 263,-319 263,-338"/>
-<text text-anchor="middle" x="198.5" y="-326" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::SLayoutNode</text>
+<g id="a_Node000397"><a xlink:href="classtvm_1_1tirx_1_1StmtSRefNode.html" target="_top" xlink:title="An object that refers to schedulable elements (block/for&#45;loop) in TensorIR, aka &quot;sref&quot;.">
+<polygon fill="white" stroke="#666666" points="266.5,-253 130.5,-253 130.5,-234 266.5,-234 266.5,-253"/>
+<text text-anchor="middle" x="198.5" y="-241" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtSRefNode</text>
 </a>
 </g>
 </g>
@@ -1741,17 +1759,17 @@
 <g id="edge401_Node000000_Node000397" class="edge">
 <title>Node0&#45;&gt;Node397</title>
 <g id="a_edge401_Node000000_Node000397"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.99,-2240.44C33.02,-2041.22 35.21,-423.39 100,-347.5 108.62,-337.4 120.88,-331.66 133.8,-328.56"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.49,-2240.64 32.99,-2250.64 36.49,-2240.64 29.49,-2240.64"/>
+<path fill="none" stroke="#63b8ff" d="M32.98,-2192.67C32.86,-1992.35 33.92,-339.96 100,-262.5 107.84,-253.32 118.68,-247.73 130.29,-244.47"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.48,-2192.89 32.99,-2202.89 36.48,-2192.89 29.48,-2192.89"/>
 </a>
 </g>
 </g>
 <!-- Node398 -->
 <g id="Node000398" class="node">
 <title>Node398</title>
-<g id="a_Node000398"><a xlink:href="classtvm_1_1tirx_1_1StmtSRefNode.html" target="_top" xlink:title="An object that refers to schedulable elements (block/for&#45;loop) in TensorIR, aka &quot;sref&quot;.">
-<polygon fill="white" stroke="#666666" points="266.5,-301 130.5,-301 130.5,-282 266.5,-282 266.5,-301"/>
-<text text-anchor="middle" x="198.5" y="-289" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::tirx::StmtSRefNode</text>
+<g id="a_Node000398"><a xlink:href="classtvm_1_1transform_1_1PassContextNode.html" target="_top" xlink:title="PassContextNode contains the information that a pass can rely on, such as analysis results.">
+<polygon fill="white" stroke="#666666" points="289.5,-216 107.5,-216 107.5,-197 289.5,-197 289.5,-216"/>
+<text text-anchor="middle" x="198.5" y="-204" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::transform::PassContextNode</text>
 </a>
 </g>
 </g>
@@ -1759,17 +1777,17 @@
 <g id="edge402_Node000000_Node000398" class="edge">
 <title>Node0&#45;&gt;Node398</title>
 <g id="a_edge402_Node000000_Node000398"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.98,-2240.67C32.86,-2040.35 33.92,-387.96 100,-310.5 107.84,-301.32 118.68,-295.73 130.29,-292.47"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.48,-2240.89 32.99,-2250.89 36.48,-2240.89 29.48,-2240.89"/>
+<path fill="none" stroke="#63b8ff" d="M32.97,-2192.6C32.72,-1989.85 32.65,-304.49 100,-225.5 103.13,-221.83 106.75,-218.73 110.7,-216.12"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.47,-2192.71 32.98,-2202.71 36.47,-2192.7 29.47,-2192.71"/>
 </a>
 </g>
 </g>
 <!-- Node399 -->
 <g id="Node000399" class="node">
 <title>Node399</title>
-<g id="a_Node000399"><a xlink:href="classtvm_1_1transform_1_1PassContextNode.html" target="_top" xlink:title="PassContextNode contains the information that a pass can rely on, such as analysis results.">
-<polygon fill="white" stroke="#666666" points="289.5,-264 107.5,-264 107.5,-245 289.5,-245 289.5,-264"/>
-<text text-anchor="middle" x="198.5" y="-252" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::transform::PassContextNode</text>
+<g id="a_Node000399"><a xlink:href="classtvm_1_1transform_1_1PassInfoNode.html" target="_top" xlink:title="Meta data that will be used to help optimization and analysis.">
+<polygon fill="white" stroke="#666666" points="279.5,-179 117.5,-179 117.5,-160 279.5,-160 279.5,-179"/>
+<text text-anchor="middle" x="198.5" y="-167" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::transform::PassInfoNode</text>
 </a>
 </g>
 </g>
@@ -1777,17 +1795,17 @@
 <g id="edge403_Node000000_Node000399" class="edge">
 <title>Node0&#45;&gt;Node399</title>
 <g id="a_edge403_Node000000_Node000399"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.97,-2240.6C32.72,-2037.85 32.65,-352.49 100,-273.5 103.13,-269.83 106.75,-266.73 110.7,-264.12"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.47,-2240.71 32.98,-2250.71 36.47,-2240.7 29.47,-2240.71"/>
+<path fill="none" stroke="#63b8ff" d="M32.95,-2192.84C32.52,-1989.06 30.93,-267.76 100,-187.5 104.83,-181.89 110.79,-177.66 117.36,-174.5"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.45,-2192.98 32.97,-2202.97 36.45,-2192.96 29.45,-2192.98"/>
 </a>
 </g>
 </g>
 <!-- Node400 -->
 <g id="Node000400" class="node">
 <title>Node400</title>
-<g id="a_Node000400"><a xlink:href="classtvm_1_1transform_1_1PassInfoNode.html" target="_top" xlink:title="Meta data that will be used to help optimization and analysis.">
-<polygon fill="white" stroke="#666666" points="279.5,-227 117.5,-227 117.5,-208 279.5,-208 279.5,-227"/>
-<text text-anchor="middle" x="198.5" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::transform::PassInfoNode</text>
+<g id="a_Node000400"><a xlink:href="classtvm_1_1transform_1_1PassInstrumentNode.html" target="_top" xlink:title="PassInstrumentNode forms an instrument implementation. It provides API for users to register callback...">
+<polygon fill="white" stroke="#666666" points="297,-142 100,-142 100,-123 297,-123 297,-142"/>
+<text text-anchor="middle" x="198.5" y="-130" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::transform::PassInstrumentNode</text>
 </a>
 </g>
 </g>
@@ -1795,17 +1813,17 @@
 <g id="edge404_Node000000_Node000400" class="edge">
 <title>Node0&#45;&gt;Node400</title>
 <g id="a_edge404_Node000000_Node000400"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.95,-2240.84C32.52,-2037.06 30.93,-315.76 100,-235.5 104.83,-229.89 110.79,-225.66 117.36,-222.5"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.45,-2240.98 32.97,-2250.97 36.45,-2240.96 29.45,-2240.98"/>
+<path fill="none" stroke="#63b8ff" d="M32.94,-2192.79C32.37,-1986.72 29.65,-232.28 100,-150.5 102.81,-147.24 105.99,-144.44 109.46,-142.05"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.44,-2192.81 32.97,-2202.8 36.44,-2192.79 29.44,-2192.81"/>
 </a>
 </g>
 </g>
 <!-- Node401 -->
 <g id="Node000401" class="node">
 <title>Node401</title>
-<g id="a_Node000401"><a xlink:href="classtvm_1_1transform_1_1PassInstrumentNode.html" target="_top" xlink:title="PassInstrumentNode forms an instrument implementation. It provides API for users to register callback...">
-<polygon fill="white" stroke="#666666" points="297,-190 100,-190 100,-171 297,-171 297,-190"/>
-<text text-anchor="middle" x="198.5" y="-178" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::transform::PassInstrumentNode</text>
+<g id="a_Node000401"><a xlink:href="classtvm_1_1transform_1_1PassNode.html" target="_top" xlink:title="PassNode is the base type of differnt types of optimization passes. It is designed as a pure class an...">
+<polygon fill="white" stroke="#666666" points="270,-105 127,-105 127,-86 270,-86 270,-105"/>
+<text text-anchor="middle" x="198.5" y="-93" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::transform::PassNode</text>
 </a>
 </g>
 </g>
@@ -1813,26 +1831,8 @@
 <g id="edge405_Node000000_Node000401" class="edge">
 <title>Node0&#45;&gt;Node401</title>
 <g id="a_edge405_Node000000_Node000401"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.94,-2240.79C32.37,-2034.72 29.65,-280.28 100,-198.5 102.81,-195.24 105.99,-192.44 109.46,-190.05"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.44,-2240.81 32.97,-2250.8 36.44,-2240.79 29.44,-2240.81"/>
-</a>
-</g>
-</g>
-<!-- Node402 -->
-<g id="Node000402" class="node">
-<title>Node402</title>
-<g id="a_Node000402"><a xlink:href="classtvm_1_1transform_1_1PassNode.html" target="_top" xlink:title="PassNode is the base type of differnt types of optimization passes. It is designed as a pure class an...">
-<polygon fill="white" stroke="#666666" points="270,-153 127,-153 127,-134 270,-134 270,-153"/>
-<text text-anchor="middle" x="198.5" y="-141" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::transform::PassNode</text>
-</a>
-</g>
-</g>
-<!-- Node0&#45;&gt;Node402 -->
-<g id="edge406_Node000000_Node000402" class="edge">
-<title>Node0&#45;&gt;Node402</title>
-<g id="a_edge406_Node000000_Node000402"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M32.93,-2240.44C32.23,-2030.67 28.42,-244.77 100,-161.5 107.07,-153.28 116.56,-148.01 126.86,-144.74"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="29.43,-2240.64 32.96,-2250.62 36.43,-2240.61 29.43,-2240.64"/>
+<path fill="none" stroke="#63b8ff" d="M32.93,-2192.44C32.23,-1982.67 28.42,-196.77 100,-113.5 107.07,-105.28 116.56,-100.01 126.86,-96.74"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="29.43,-2192.64 32.96,-2202.62 36.43,-2192.61 29.43,-2192.64"/>
 </a>
 </g>
 </g>
@@ -1840,8 +1840,8 @@
 <g id="Node000003" class="node">
 <title>Node3</title>
 <g id="a_Node000003"><a xlink:href="classtvm_1_1DictAttrsNode.html" target="_top" xlink:title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior,...">
-<polygon fill="white" stroke="#666666" points="491,-10496 381,-10496 381,-10477 491,-10477 491,-10496"/>
-<text text-anchor="middle" x="436" y="-10484" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrsNode</text>
+<polygon fill="white" stroke="#666666" points="491,-10448 381,-10448 381,-10429 491,-10429 491,-10448"/>
+<text text-anchor="middle" x="436" y="-10436" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrsNode</text>
 </a>
 </g>
 </g>
@@ -1849,8 +1849,8 @@
 <g id="edge7_Node000002_Node000003" class="edge">
 <title>Node2&#45;&gt;Node3</title>
 <g id="a_edge7_Node000002_Node000003"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.06,-8612.69C270.23,-8615.08 286.43,-8620.93 297,-8633.5 362.57,-8711.51 267.11,-10389.76 333,-10467.5 344.71,-10481.31 362.94,-10487.2 380.77,-10489.27"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.35,-8609.21 244.04,-8611.63 253.61,-8616.17 254.35,-8609.21"/>
+<path fill="none" stroke="#63b8ff" d="M254.06,-8564.69C270.23,-8567.08 286.43,-8572.93 297,-8585.5 362.57,-8663.51 267.11,-10341.76 333,-10419.5 344.71,-10433.31 362.94,-10439.2 380.77,-10441.27"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.35,-8561.21 244.04,-8563.63 253.61,-8568.17 254.35,-8561.21"/>
 </a>
 </g>
 </g>
@@ -1858,9 +1858,9 @@
 <g id="Node000004" class="node">
 <title>Node4</title>
 <g id="a_Node000004"><a xlink:href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorAttrs.html" target="_top" xlink:title="Static options for the dense tcgen05 instruction descriptor.">
-<polygon fill="white" stroke="#666666" points="516.5,-10458.5 355.5,-10458.5 355.5,-10428.5 516.5,-10428.5 516.5,-10458.5"/>
-<text text-anchor="start" x="363.5" y="-10446.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::backend::cuda</text>
-<text text-anchor="middle" x="436" y="-10435.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TCGen05InstrDescriptorAttrs</text>
+<polygon fill="white" stroke="#666666" points="516.5,-10410.5 355.5,-10410.5 355.5,-10380.5 516.5,-10380.5 516.5,-10410.5"/>
+<text text-anchor="start" x="363.5" y="-10398.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::backend::cuda</text>
+<text text-anchor="middle" x="436" y="-10387.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TCGen05InstrDescriptorAttrs</text>
 </a>
 </g>
 </g>
@@ -1868,8 +1868,8 @@
 <g id="edge8_Node000002_Node000004" class="edge">
 <title>Node2&#45;&gt;Node4</title>
 <g id="a_edge8_Node000002_Node000004"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.05,-8612.7C270.23,-8615.08 286.43,-8620.93 297,-8633.5 360.88,-8709.45 270.6,-10342.33 333,-10419.5 338.95,-10426.86 346.69,-10432.21 355.25,-10436.08"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.35,-8609.21 244.03,-8611.63 253.61,-8616.17 254.35,-8609.21"/>
+<path fill="none" stroke="#63b8ff" d="M254.05,-8564.7C270.23,-8567.08 286.43,-8572.93 297,-8585.5 360.88,-8661.45 270.6,-10294.33 333,-10371.5 338.95,-10378.86 346.69,-10384.21 355.25,-10388.08"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.35,-8561.21 244.03,-8563.63 253.61,-8568.17 254.35,-8561.21"/>
 </a>
 </g>
 </g>
@@ -1877,10 +1877,10 @@
 <g id="Node000005" class="node">
 <title>Node5</title>
 <g id="a_Node000005"><a xlink:href="structtvm_1_1backend_1_1cuda_1_1TCGen05InstrDescriptorBlockScaledAttrs.html" target="_top" xlink:title="Static options for the block&#45;scaled tcgen05 instruction descriptor.">
-<polygon fill="white" stroke="#666666" points="518.5,-10410 353.5,-10410 353.5,-10369 518.5,-10369 518.5,-10410"/>
-<text text-anchor="start" x="361.5" y="-10398" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::backend::cuda</text>
-<text text-anchor="start" x="361.5" y="-10387" font-family="Helvetica,sans-Serif" font-size="10.00">::TCGen05InstrDescriptorBlock</text>
-<text text-anchor="middle" x="436" y="-10376" font-family="Helvetica,sans-Serif" font-size="10.00">ScaledAttrs</text>
+<polygon fill="white" stroke="#666666" points="518.5,-10362 353.5,-10362 353.5,-10321 518.5,-10321 518.5,-10362"/>
+<text text-anchor="start" x="361.5" y="-10350" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::backend::cuda</text>
+<text text-anchor="start" x="361.5" y="-10339" font-family="Helvetica,sans-Serif" font-size="10.00">::TCGen05InstrDescriptorBlock</text>
+<text text-anchor="middle" x="436" y="-10328" font-family="Helvetica,sans-Serif" font-size="10.00">ScaledAttrs</text>
 </a>
 </g>
 </g>
@@ -1888,8 +1888,8 @@
 <g id="edge9_Node000002_Node000005" class="edge">
 <title>Node2&#45;&gt;Node5</title>
 <g id="a_edge9_Node000002_Node000005"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.05,-8612.7C270.22,-8615.09 286.42,-8620.93 297,-8633.5 358.76,-8706.88 274.74,-10283.31 333,-10359.5 338.38,-10366.54 345.33,-10371.99 353.07,-10376.21"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.34,-8609.21 244.03,-8611.63 253.6,-8616.17 254.34,-8609.21"/>
+<path fill="none" stroke="#63b8ff" d="M254.05,-8564.7C270.22,-8567.09 286.42,-8572.93 297,-8585.5 358.76,-8658.88 274.74,-10235.31 333,-10311.5 338.38,-10318.54 345.33,-10323.99 353.07,-10328.21"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.34,-8561.21 244.03,-8563.63 253.6,-8568.17 254.34,-8561.21"/>
 </a>
 </g>
 </g>
@@ -1897,9 +1897,9 @@
 <g id="Node000006" class="node">
 <title>Node6</title>
 <g id="a_Node000006"><a xlink:href="structtvm_1_1backend_1_1cuda_1_1TensorMapEncodeTiledAttr.html" target="_top" xlink:title="Fixed encoding options for tensormap_encode_tiled.">
-<polygon fill="white" stroke="#666666" points="512,-10350.5 360,-10350.5 360,-10320.5 512,-10320.5 512,-10350.5"/>
-<text text-anchor="start" x="368" y="-10338.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::backend::cuda</text>
-<text text-anchor="middle" x="436" y="-10327.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TensorMapEncodeTiledAttr</text>
+<polygon fill="white" stroke="#666666" points="512,-10302.5 360,-10302.5 360,-10272.5 512,-10272.5 512,-10302.5"/>
+<text text-anchor="start" x="368" y="-10290.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::backend::cuda</text>
+<text text-anchor="middle" x="436" y="-10279.5" font-family="Helvetica,sans-Serif" font-size="10.00">::TensorMapEncodeTiledAttr</text>
 </a>
 </g>
 </g>
@@ -1907,8 +1907,8 @@
 <g id="edge10_Node000002_Node000006" class="edge">
 <title>Node2&#45;&gt;Node6</title>
 <g id="a_edge10_Node000002_Node000006"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.04,-8612.71C270.22,-8615.09 286.42,-8620.94 297,-8633.5 357.06,-8704.82 274.33,-10239.03 333,-10311.5 339.98,-10320.12 349.43,-10326 359.77,-10329.95"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.34,-8609.22 244.03,-8611.64 253.6,-8616.18 254.34,-8609.22"/>
+<path fill="none" stroke="#63b8ff" d="M254.04,-8564.71C270.22,-8567.09 286.42,-8572.94 297,-8585.5 357.06,-8656.82 274.33,-10191.03 333,-10263.5 339.98,-10272.12 349.43,-10278 359.77,-10281.95"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.34,-8561.22 244.03,-8563.64 253.6,-8568.18 254.34,-8561.22"/>
 </a>
 </g>
 </g>
@@ -1916,9 +1916,9 @@
 <g id="Node000007" class="node">
 <title>Node7</title>
 <g id="a_Node000007"><a xlink:href="structtvm_1_1relax_1_1AdaptivePool1DAttrs.html" target="_top" xlink:title="Attributes for 1d adaptive pool operator.">
-<polygon fill="white" stroke="#666666" points="507.5,-10302.5 364.5,-10302.5 364.5,-10272.5 507.5,-10272.5 507.5,-10302.5"/>
-<text text-anchor="start" x="372.5" y="-10290.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AdaptivePool1</text>
-<text text-anchor="middle" x="436" y="-10279.5" font-family="Helvetica,sans-Serif" font-size="10.00">DAttrs</text>
+<polygon fill="white" stroke="#666666" points="507.5,-10254.5 364.5,-10254.5 364.5,-10224.5 507.5,-10224.5 507.5,-10254.5"/>
+<text text-anchor="start" x="372.5" y="-10242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AdaptivePool1</text>
+<text text-anchor="middle" x="436" y="-10231.5" font-family="Helvetica,sans-Serif" font-size="10.00">DAttrs</text>
 </a>
 </g>
 </g>
@@ -1926,8 +1926,8 @@
 <g id="edge11_Node000002_Node000007" class="edge">
 <title>Node2&#45;&gt;Node7</title>
 <g id="a_edge11_Node000002_Node000007"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.04,-8612.71C270.21,-8615.1 286.42,-8620.94 297,-8633.5 355.37,-8702.77 275.98,-10193.12 333,-10263.5 341.02,-10273.39 352.27,-10279.67 364.4,-10283.57"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.34,-8609.22 244.02,-8611.64 253.59,-8616.18 254.34,-8609.22"/>
+<path fill="none" stroke="#63b8ff" d="M254.04,-8564.71C270.21,-8567.1 286.42,-8572.94 297,-8585.5 355.37,-8654.77 275.98,-10145.12 333,-10215.5 341.02,-10225.39 352.27,-10231.67 364.4,-10235.57"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.34,-8561.22 244.02,-8563.64 253.59,-8568.18 254.34,-8561.22"/>
 </a>
 </g>
 </g>
@@ -1935,9 +1935,9 @@
 <g id="Node000008" class="node">
 <title>Node8</title>
 <g id="a_Node000008"><a xlink:href="structtvm_1_1relax_1_1AdaptivePool2DAttrs.html" target="_top" xlink:title="Attributes for 2d adaptive pool operator.">
-<polygon fill="white" stroke="#666666" points="507.5,-10254.5 364.5,-10254.5 364.5,-10224.5 507.5,-10224.5 507.5,-10254.5"/>
-<text text-anchor="start" x="372.5" y="-10242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AdaptivePool2</text>
-<text text-anchor="middle" x="436" y="-10231.5" font-family="Helvetica,sans-Serif" font-size="10.00">DAttrs</text>
+<polygon fill="white" stroke="#666666" points="507.5,-10206.5 364.5,-10206.5 364.5,-10176.5 507.5,-10176.5 507.5,-10206.5"/>
+<text text-anchor="start" x="372.5" y="-10194.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AdaptivePool2</text>
+<text text-anchor="middle" x="436" y="-10183.5" font-family="Helvetica,sans-Serif" font-size="10.00">DAttrs</text>
 </a>
 </g>
 </g>
@@ -1945,8 +1945,8 @@
 <g id="edge12_Node000002_Node000008" class="edge">
 <title>Node2&#45;&gt;Node8</title>
 <g id="a_edge12_Node000002_Node000008"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.03,-8612.71C270.21,-8615.1 286.41,-8620.94 297,-8633.5 353.67,-8700.71 277.64,-10147.21 333,-10215.5 341.02,-10225.39 352.28,-10231.67 364.41,-10235.57"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.33,-8609.23 244.02,-8611.64 253.59,-8616.19 254.33,-8609.23"/>
+<path fill="none" stroke="#63b8ff" d="M254.03,-8564.71C270.21,-8567.1 286.41,-8572.94 297,-8585.5 353.67,-8652.71 277.64,-10099.21 333,-10167.5 341.02,-10177.39 352.28,-10183.67 364.41,-10187.57"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.33,-8561.23 244.02,-8563.64 253.59,-8568.19 254.33,-8561.23"/>
 </a>
 </g>
 </g>
@@ -1954,9 +1954,9 @@
 <g id="Node000009" class="node">
 <title>Node9</title>
 <g id="a_Node000009"><a xlink:href="structtvm_1_1relax_1_1AdaptivePool3DAttrs.html" target="_top" xlink:title="Attributes for 3d adaptive pool operator.">
-<polygon fill="white" stroke="#666666" points="507.5,-10206.5 364.5,-10206.5 364.5,-10176.5 507.5,-10176.5 507.5,-10206.5"/>
-<text text-anchor="start" x="372.5" y="-10194.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AdaptivePool3</text>
-<text text-anchor="middle" x="436" y="-10183.5" font-family="Helvetica,sans-Serif" font-size="10.00">DAttrs</text>
+<polygon fill="white" stroke="#666666" points="507.5,-10158.5 364.5,-10158.5 364.5,-10128.5 507.5,-10128.5 507.5,-10158.5"/>
+<text text-anchor="start" x="372.5" y="-10146.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AdaptivePool3</text>
+<text text-anchor="middle" x="436" y="-10135.5" font-family="Helvetica,sans-Serif" font-size="10.00">DAttrs</text>
 </a>
 </g>
 </g>
@@ -1964,8 +1964,8 @@
 <g id="edge13_Node000002_Node000009" class="edge">
 <title>Node2&#45;&gt;Node9</title>
 <g id="a_edge13_Node000002_Node000009"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.03,-8612.72C270.2,-8615.11 286.41,-8620.95 297,-8633.5 351.98,-8698.65 279.29,-10101.3 333,-10167.5 341.02,-10177.39 352.28,-10183.66 364.41,-10187.56"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.33,-8609.23 244.01,-8611.65 253.58,-8616.19 254.33,-8609.23"/>
+<path fill="none" stroke="#63b8ff" d="M254.03,-8564.72C270.2,-8567.11 286.41,-8572.95 297,-8585.5 351.98,-8650.65 279.29,-10053.3 333,-10119.5 341.02,-10129.39 352.28,-10135.66 364.41,-10139.56"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.33,-8561.23 244.01,-8563.65 253.58,-8568.19 254.33,-8561.23"/>
 </a>
 </g>
 </g>
@@ -1973,8 +1973,8 @@
 <g id="Node000010" class="node">
 <title>Node10</title>
 <g id="a_Node000010"><a xlink:href="structtvm_1_1relax_1_1AffineGridAttrs.html" target="_top" xlink:title="Attributes used in image affine_grid operator.">
-<polygon fill="white" stroke="#666666" points="508.5,-10158 363.5,-10158 363.5,-10139 508.5,-10139 508.5,-10158"/>
-<text text-anchor="middle" x="436" y="-10146" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AffineGridAttrs</text>
+<polygon fill="white" stroke="#666666" points="508.5,-10110 363.5,-10110 363.5,-10091 508.5,-10091 508.5,-10110"/>
+<text text-anchor="middle" x="436" y="-10098" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AffineGridAttrs</text>
 </a>
 </g>
 </g>
@@ -1982,8 +1982,8 @@
 <g id="edge14_Node000002_Node000010" class="edge">
 <title>Node2&#45;&gt;Node10</title>
 <g id="a_edge14_Node000002_Node000010"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.02,-8612.72C270.2,-8615.11 286.4,-8620.95 297,-8633.5 350.63,-8697.02 279.1,-10066.2 333,-10129.5 340.88,-10138.76 351.7,-10144.45 363.36,-10147.82"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.32,-8609.23 244.01,-8611.65 253.58,-8616.19 254.32,-8609.23"/>
+<path fill="none" stroke="#63b8ff" d="M254.02,-8564.72C270.2,-8567.11 286.4,-8572.95 297,-8585.5 350.63,-8649.02 279.1,-10018.2 333,-10081.5 340.88,-10090.76 351.7,-10096.45 363.36,-10099.82"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.32,-8561.23 244.01,-8563.65 253.58,-8568.19 254.32,-8561.23"/>
 </a>
 </g>
 </g>
@@ -1991,9 +1991,9 @@
 <g id="Node000011" class="node">
 <title>Node11</title>
 <g id="a_Node000011"><a xlink:href="structtvm_1_1relax_1_1AllClassNonMaximumSuppressionAttrs.html" target="_top" xlink:title="Attributes used in AllClassNonMaximumSuppression operator.">
-<polygon fill="white" stroke="#666666" points="526.5,-10120.5 345.5,-10120.5 345.5,-10090.5 526.5,-10090.5 526.5,-10120.5"/>
-<text text-anchor="start" x="353.5" y="-10108.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AllClassNonMaximum</text>
-<text text-anchor="middle" x="436" y="-10097.5" font-family="Helvetica,sans-Serif" font-size="10.00">SuppressionAttrs</text>
+<polygon fill="white" stroke="#666666" points="526.5,-10072.5 345.5,-10072.5 345.5,-10042.5 526.5,-10042.5 526.5,-10072.5"/>
+<text text-anchor="start" x="353.5" y="-10060.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AllClassNonMaximum</text>
+<text text-anchor="middle" x="436" y="-10049.5" font-family="Helvetica,sans-Serif" font-size="10.00">SuppressionAttrs</text>
 </a>
 </g>
 </g>
@@ -2001,8 +2001,8 @@
 <g id="edge15_Node000002_Node000011" class="edge">
 <title>Node2&#45;&gt;Node11</title>
 <g id="a_edge15_Node000002_Node000011"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.02,-8612.73C270.19,-8615.11 286.4,-8620.96 297,-8633.5 400.88,-8756.43 231.52,-9956.59 333,-10081.5 336.56,-10085.88 340.75,-10089.55 345.37,-10092.61"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.32,-8609.24 244,-8611.66 253.57,-8616.2 254.32,-8609.24"/>
+<path fill="none" stroke="#63b8ff" d="M254.02,-8564.73C270.19,-8567.11 286.4,-8572.96 297,-8585.5 400.88,-8708.43 231.52,-9908.59 333,-10033.5 336.56,-10037.88 340.75,-10041.55 345.37,-10044.61"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.32,-8561.24 244,-8563.66 253.57,-8568.2 254.32,-8561.24"/>
 </a>
 </g>
 </g>
@@ -2010,8 +2010,8 @@
 <g id="Node000012" class="node">
 <title>Node12</title>
 <g id="a_Node000012"><a xlink:href="structtvm_1_1relax_1_1AllGatherAttrs.html" target="_top" xlink:title="Attributes used in allgather operators.">
-<polygon fill="white" stroke="#666666" points="507,-10072 365,-10072 365,-10053 507,-10053 507,-10072"/>
-<text text-anchor="middle" x="436" y="-10060" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AllGatherAttrs</text>
+<polygon fill="white" stroke="#666666" points="507,-10024 365,-10024 365,-10005 507,-10005 507,-10024"/>
+<text text-anchor="middle" x="436" y="-10012" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AllGatherAttrs</text>
 </a>
 </g>
 </g>
@@ -2019,8 +2019,8 @@
 <g id="edge16_Node000002_Node000012" class="edge">
 <title>Node2&#45;&gt;Node12</title>
 <g id="a_edge16_Node000002_Node000012"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.22,-8612.76C270.33,-8615.17 286.44,-8621.01 297,-8633.5 398.26,-8753.25 230.68,-9925.65 333,-10044.5 341.27,-10054.11 352.72,-10059.79 364.98,-10062.98"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.57,-8609.28 244.25,-8611.68 253.81,-8616.24 254.57,-8609.28"/>
+<path fill="none" stroke="#63b8ff" d="M254.22,-8564.76C270.33,-8567.17 286.44,-8573.01 297,-8585.5 398.26,-8705.25 230.68,-9877.65 333,-9996.5 341.27,-10006.11 352.72,-10011.79 364.98,-10014.98"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.57,-8561.28 244.25,-8563.68 253.81,-8568.24 254.57,-8561.28"/>
 </a>
 </g>
 </g>
@@ -2028,8 +2028,8 @@
 <g id="Node000013" class="node">
 <title>Node13</title>
 <g id="a_Node000013"><a xlink:href="structtvm_1_1relax_1_1AllReduceAttrs.html" target="_top" xlink:title="Attributes used in allreduce operators.">
-<polygon fill="white" stroke="#666666" points="508.5,-10035 363.5,-10035 363.5,-10016 508.5,-10016 508.5,-10035"/>
-<text text-anchor="middle" x="436" y="-10023" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AllReduceAttrs</text>
+<polygon fill="white" stroke="#666666" points="508.5,-9987 363.5,-9987 363.5,-9968 508.5,-9968 508.5,-9987"/>
+<text text-anchor="middle" x="436" y="-9975" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AllReduceAttrs</text>
 </a>
 </g>
 </g>
@@ -2037,8 +2037,8 @@
 <g id="edge17_Node000002_Node000013" class="edge">
 <title>Node2&#45;&gt;Node13</title>
 <g id="a_edge17_Node000002_Node000013"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.22,-8612.77C270.32,-8615.17 286.44,-8621.02 297,-8633.5 395.58,-8750 233.94,-9890.41 333,-10006.5 340.89,-10015.75 351.71,-10021.44 363.37,-10024.81"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.56,-8609.28 244.24,-8611.68 253.81,-8616.24 254.56,-8609.28"/>
+<path fill="none" stroke="#63b8ff" d="M254.22,-8564.77C270.32,-8567.17 286.44,-8573.02 297,-8585.5 395.58,-8702 233.94,-9842.41 333,-9958.5 340.89,-9967.75 351.71,-9973.44 363.37,-9976.81"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.56,-8561.28 244.24,-8563.68 253.81,-8568.24 254.56,-8561.28"/>
 </a>
 </g>
 </g>
@@ -2046,9 +2046,9 @@
 <g id="Node000014" class="node">
 <title>Node14</title>
 <g id="a_Node000014"><a xlink:href="structtvm_1_1relax_1_1ArgmaxArgminAttrs.html" target="_top" xlink:title="Attributes for search operators.">
-<polygon fill="white" stroke="#666666" points="509,-9997.5 363,-9997.5 363,-9967.5 509,-9967.5 509,-9997.5"/>
-<text text-anchor="start" x="371" y="-9985.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ArgmaxArgmin</text>
-<text text-anchor="middle" x="436" y="-9974.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
+<polygon fill="white" stroke="#666666" points="509,-9949.5 363,-9949.5 363,-9919.5 509,-9919.5 509,-9949.5"/>
+<text text-anchor="start" x="371" y="-9937.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ArgmaxArgmin</text>
+<text text-anchor="middle" x="436" y="-9926.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
 </a>
 </g>
 </g>
@@ -2056,8 +2056,8 @@
 <g id="edge18_Node000002_Node000014" class="edge">
 <title>Node2&#45;&gt;Node14</title>
 <g id="a_edge18_Node000002_Node000014"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.21,-8612.77C270.32,-8615.18 286.43,-8621.02 297,-8633.5 392.19,-8745.88 240,-9844.3 333,-9958.5 340.7,-9967.95 351.35,-9974.1 362.89,-9978.03"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.56,-8609.29 244.24,-8611.69 253.8,-8616.25 254.56,-8609.29"/>
+<path fill="none" stroke="#63b8ff" d="M254.21,-8564.77C270.32,-8567.18 286.43,-8573.02 297,-8585.5 392.19,-8697.88 240,-9796.3 333,-9910.5 340.7,-9919.95 351.35,-9926.1 362.89,-9930.03"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.56,-8561.29 244.24,-8563.69 253.8,-8568.25 254.56,-8561.29"/>
 </a>
 </g>
 </g>
@@ -2065,8 +2065,8 @@
 <g id="Node000015" class="node">
 <title>Node15</title>
 <g id="a_Node000015"><a xlink:href="structtvm_1_1relax_1_1ArgsortAttrs.html" target="_top" xlink:title="Attributes used in argsort operator.">
-<polygon fill="white" stroke="#666666" points="501.5,-9949 370.5,-9949 370.5,-9930 501.5,-9930 501.5,-9949"/>
-<text text-anchor="middle" x="436" y="-9937" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ArgsortAttrs</text>
+<polygon fill="white" stroke="#666666" points="501.5,-9901 370.5,-9901 370.5,-9882 501.5,-9882 501.5,-9901"/>
+<text text-anchor="middle" x="436" y="-9889" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ArgsortAttrs</text>
 </a>
 </g>
 </g>
@@ -2074,8 +2074,8 @@
 <g id="edge19_Node000002_Node000015" class="edge">
 <title>Node2&#45;&gt;Node15</title>
 <g id="a_edge19_Node000002_Node000015"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.21,-8612.78C270.31,-8615.19 286.43,-8621.03 297,-8633.5 389.57,-8742.71 239.46,-9813.12 333,-9921.5 342.46,-9932.46 356.05,-9938.3 370.25,-9941.17"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.55,-8609.29 244.23,-8611.69 253.79,-8616.25 254.55,-8609.29"/>
+<path fill="none" stroke="#63b8ff" d="M254.21,-8564.78C270.31,-8567.19 286.43,-8573.03 297,-8585.5 389.57,-8694.71 239.46,-9765.12 333,-9873.5 342.46,-9884.46 356.05,-9890.3 370.25,-9893.17"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.55,-8561.29 244.23,-8563.69 253.79,-8568.25 254.55,-8561.29"/>
 </a>
 </g>
 </g>
@@ -2083,8 +2083,8 @@
 <g id="Node000016" class="node">
 <title>Node16</title>
 <g id="a_Node000016"><a xlink:href="structtvm_1_1relax_1_1AstypeAttrs.html" target="_top" xlink:title="Attributes used in astype operator.">
-<polygon fill="white" stroke="#666666" points="501,-9912 371,-9912 371,-9893 501,-9893 501,-9912"/>
-<text text-anchor="middle" x="436" y="-9900" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AstypeAttrs</text>
+<polygon fill="white" stroke="#666666" points="501,-9864 371,-9864 371,-9845 501,-9845 501,-9864"/>
+<text text-anchor="middle" x="436" y="-9852" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AstypeAttrs</text>
 </a>
 </g>
 </g>
@@ -2092,8 +2092,8 @@
 <g id="edge20_Node000002_Node000016" class="edge">
 <title>Node2&#45;&gt;Node16</title>
 <g id="a_edge20_Node000002_Node000016"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.2,-8612.78C270.3,-8615.19 286.42,-8621.03 297,-8633.5 386.96,-8739.54 242.1,-9779.27 333,-9884.5 342.58,-9895.59 356.4,-9901.44 370.79,-9904.27"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.55,-8609.3 244.23,-8611.7 253.79,-8616.26 254.55,-8609.3"/>
+<path fill="none" stroke="#63b8ff" d="M254.2,-8564.78C270.3,-8567.19 286.42,-8573.03 297,-8585.5 386.96,-8691.54 242.1,-9731.27 333,-9836.5 342.58,-9847.59 356.4,-9853.44 370.79,-9856.27"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.55,-8561.3 244.23,-8563.7 253.79,-8568.26 254.55,-8561.3"/>
 </a>
 </g>
 </g>
@@ -2101,8 +2101,8 @@
 <g id="Node000017" class="node">
 <title>Node17</title>
 <g id="a_Node000017"><a xlink:href="structtvm_1_1relax_1_1AttentionAttrs.html" target="_top" xlink:title="Attributes used in Attention operator.">
-<polygon fill="white" stroke="#666666" points="506.5,-9875 365.5,-9875 365.5,-9856 506.5,-9856 506.5,-9875"/>
-<text text-anchor="middle" x="436" y="-9863" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AttentionAttrs</text>
+<polygon fill="white" stroke="#666666" points="506.5,-9827 365.5,-9827 365.5,-9808 506.5,-9808 506.5,-9827"/>
+<text text-anchor="middle" x="436" y="-9815" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AttentionAttrs</text>
 </a>
 </g>
 </g>
@@ -2110,8 +2110,8 @@
 <g id="edge21_Node000002_Node000017" class="edge">
 <title>Node2&#45;&gt;Node17</title>
 <g id="a_edge21_Node000002_Node000017"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.19,-8612.79C270.3,-8615.2 286.42,-8621.04 297,-8633.5 384.35,-8736.37 244.74,-9745.41 333,-9847.5 341.35,-9857.16 352.91,-9862.84 365.27,-9866.02"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.54,-8609.3 244.22,-8611.7 253.78,-8616.26 254.54,-8609.3"/>
+<path fill="none" stroke="#63b8ff" d="M254.19,-8564.79C270.3,-8567.2 286.42,-8573.04 297,-8585.5 384.35,-8688.37 244.74,-9697.41 333,-9799.5 341.35,-9809.16 352.91,-9814.84 365.27,-9818.02"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.54,-8561.3 244.22,-8563.7 253.78,-8568.26 254.54,-8561.3"/>
 </a>
 </g>
 </g>
@@ -2119,8 +2119,8 @@
 <g id="Node000018" class="node">
 <title>Node18</title>
 <g id="a_Node000018"><a xlink:href="structtvm_1_1relax_1_1BatchNormAttrs.html" target="_top" xlink:title="Attributes used in batch_norm operator.">
-<polygon fill="white" stroke="#666666" points="511.5,-9838 360.5,-9838 360.5,-9819 511.5,-9819 511.5,-9838"/>
-<text text-anchor="middle" x="436" y="-9826" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BatchNormAttrs</text>
+<polygon fill="white" stroke="#666666" points="511.5,-9790 360.5,-9790 360.5,-9771 511.5,-9771 511.5,-9790"/>
+<text text-anchor="middle" x="436" y="-9778" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BatchNormAttrs</text>
 </a>
 </g>
 </g>
@@ -2128,8 +2128,8 @@
 <g id="edge22_Node000002_Node000018" class="edge">
 <title>Node2&#45;&gt;Node18</title>
 <g id="a_edge22_Node000002_Node000018"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.19,-8612.79C270.29,-8615.2 286.41,-8621.04 297,-8633.5 381.73,-8733.19 247.38,-9711.56 333,-9810.5 340.24,-9818.86 349.88,-9824.25 360.36,-9827.6"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.53,-8609.31 244.21,-8611.71 253.78,-8616.27 254.53,-8609.31"/>
+<path fill="none" stroke="#63b8ff" d="M254.19,-8564.79C270.29,-8567.2 286.41,-8573.04 297,-8585.5 381.73,-8685.19 247.38,-9663.56 333,-9762.5 340.24,-9770.86 349.88,-9776.25 360.36,-9779.6"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.53,-8561.31 244.21,-8563.71 253.78,-8568.27 254.53,-8561.31"/>
 </a>
 </g>
 </g>
@@ -2137,8 +2137,8 @@
 <g id="Node000019" class="node">
 <title>Node19</title>
 <g id="a_Node000019"><a xlink:href="structtvm_1_1relax_1_1BucketizeAttrs.html" target="_top" xlink:title="Attributes for bucketize operator.">
-<polygon fill="white" stroke="#666666" points="507.5,-9801 364.5,-9801 364.5,-9782 507.5,-9782 507.5,-9801"/>
-<text text-anchor="middle" x="436" y="-9789" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BucketizeAttrs</text>
+<polygon fill="white" stroke="#666666" points="507.5,-9753 364.5,-9753 364.5,-9734 507.5,-9734 507.5,-9753"/>
+<text text-anchor="middle" x="436" y="-9741" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BucketizeAttrs</text>
 </a>
 </g>
 </g>
@@ -2146,8 +2146,8 @@
 <g id="edge23_Node000002_Node000019" class="edge">
 <title>Node2&#45;&gt;Node19</title>
 <g id="a_edge23_Node000002_Node000019"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.18,-8612.8C270.28,-8615.21 286.4,-8621.05 297,-8633.5 379.05,-8729.94 250.55,-9676.4 333,-9772.5 341.15,-9782 352.4,-9787.74 364.45,-9791.07"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.53,-8609.32 244.21,-8611.71 253.77,-8616.28 254.53,-8609.32"/>
+<path fill="none" stroke="#63b8ff" d="M254.18,-8564.8C270.28,-8567.21 286.4,-8573.05 297,-8585.5 379.05,-8681.94 250.55,-9628.4 333,-9724.5 341.15,-9734 352.4,-9739.74 364.45,-9743.07"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.53,-8561.32 244.21,-8563.71 253.77,-8568.28 254.53,-8561.32"/>
 </a>
 </g>
 </g>
@@ -2155,9 +2155,9 @@
 <g id="Node000020" class="node">
 <title>Node20</title>
 <g id="a_Node000020"><a xlink:href="structtvm_1_1relax_1_1CallInplacePackedAttrs.html" target="_top" xlink:title="Attributes used in call_inplace_packed.">
-<polygon fill="white" stroke="#666666" points="516.5,-9763.5 355.5,-9763.5 355.5,-9733.5 516.5,-9733.5 516.5,-9763.5"/>
-<text text-anchor="start" x="363.5" y="-9751.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::CallInplacePacked</text>
-<text text-anchor="middle" x="436" y="-9740.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
+<polygon fill="white" stroke="#666666" points="516.5,-9715.5 355.5,-9715.5 355.5,-9685.5 516.5,-9685.5 516.5,-9715.5"/>
+<text text-anchor="start" x="363.5" y="-9703.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::CallInplacePacked</text>
+<text text-anchor="middle" x="436" y="-9692.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
 </a>
 </g>
 </g>
@@ -2165,8 +2165,8 @@
 <g id="edge24_Node000002_Node000020" class="edge">
 <title>Node2&#45;&gt;Node20</title>
 <g id="a_edge24_Node000002_Node000020"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.17,-8612.81C270.27,-8615.22 286.39,-8621.05 297,-8633.5 375.66,-8725.82 256.14,-9630.68 333,-9724.5 338.99,-9731.82 346.76,-9737.15 355.34,-9741.01"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.52,-8609.33 244.2,-8611.72 253.76,-8616.28 254.52,-8609.33"/>
+<path fill="none" stroke="#63b8ff" d="M254.17,-8564.81C270.27,-8567.22 286.39,-8573.05 297,-8585.5 375.66,-8677.82 256.14,-9582.68 333,-9676.5 338.99,-9683.82 346.76,-9689.15 355.34,-9693.01"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.52,-8561.33 244.2,-8563.72 253.76,-8568.28 254.52,-8561.33"/>
 </a>
 </g>
 </g>
@@ -2174,9 +2174,9 @@
 <g id="Node000021" class="node">
 <title>Node21</title>
 <g id="a_Node000021"><a xlink:href="structtvm_1_1relax_1_1CallTIRInplaceAttrs.html" target="_top" xlink:title="Attributes used in call_tir_inplace.">
-<polygon fill="white" stroke="#666666" points="507.5,-9715.5 364.5,-9715.5 364.5,-9685.5 507.5,-9685.5 507.5,-9715.5"/>
-<text text-anchor="start" x="372.5" y="-9703.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::CallTIRInplace</text>
-<text text-anchor="middle" x="436" y="-9692.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
+<polygon fill="white" stroke="#666666" points="507.5,-9667.5 364.5,-9667.5 364.5,-9637.5 507.5,-9637.5 507.5,-9667.5"/>
+<text text-anchor="start" x="372.5" y="-9655.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::CallTIRInplace</text>
+<text text-anchor="middle" x="436" y="-9644.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
 </a>
 </g>
 </g>
@@ -2184,8 +2184,8 @@
 <g id="edge25_Node000002_Node000021" class="edge">
 <title>Node2&#45;&gt;Node21</title>
 <g id="a_edge25_Node000002_Node000021"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.16,-8612.82C270.26,-8615.23 286.39,-8621.06 297,-8633.5 372.27,-8721.71 259.45,-9586.85 333,-9676.5 341.02,-9686.27 352.2,-9692.51 364.24,-9696.41"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.51,-8609.34 244.19,-8611.73 253.75,-8616.29 254.51,-8609.34"/>
+<path fill="none" stroke="#63b8ff" d="M254.16,-8564.82C270.26,-8567.23 286.39,-8573.06 297,-8585.5 372.27,-8673.71 259.45,-9538.85 333,-9628.5 341.02,-9638.27 352.2,-9644.51 364.24,-9648.41"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.51,-8561.34 244.19,-8563.73 253.75,-8568.29 254.51,-8561.34"/>
 </a>
 </g>
 </g>
@@ -2193,9 +2193,9 @@
 <g id="Node000022" class="node">
 <title>Node22</title>
 <g id="a_Node000022"><a xlink:href="structtvm_1_1relax_1_1CallTIRWithGradAttrs.html" target="_top" xlink:title="Attributes used in call_tir_with_grad.">
-<polygon fill="white" stroke="#666666" points="512.5,-9667.5 359.5,-9667.5 359.5,-9637.5 512.5,-9637.5 512.5,-9667.5"/>
-<text text-anchor="start" x="367.5" y="-9655.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::CallTIRWithGrad</text>
-<text text-anchor="middle" x="436" y="-9644.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
+<polygon fill="white" stroke="#666666" points="512.5,-9619.5 359.5,-9619.5 359.5,-9589.5 512.5,-9589.5 512.5,-9619.5"/>
+<text text-anchor="start" x="367.5" y="-9607.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::CallTIRWithGrad</text>
+<text text-anchor="middle" x="436" y="-9596.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
 </a>
 </g>
 </g>
@@ -2203,8 +2203,8 @@
 <g id="edge26_Node000002_Node000022" class="edge">
 <title>Node2&#45;&gt;Node22</title>
 <g id="a_edge26_Node000002_Node000022"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.15,-8612.83C270.25,-8615.24 286.38,-8621.07 297,-8633.5 368.88,-8717.59 262.76,-9543.03 333,-9628.5 339.93,-9636.93 349.22,-9642.73 359.37,-9646.67"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.5,-8609.35 244.17,-8611.74 253.74,-8616.31 254.5,-8609.35"/>
+<path fill="none" stroke="#63b8ff" d="M254.15,-8564.83C270.25,-8567.24 286.38,-8573.07 297,-8585.5 368.88,-8669.59 262.76,-9495.03 333,-9580.5 339.93,-9588.93 349.22,-9594.73 359.37,-9598.67"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.5,-8561.35 244.17,-8563.74 253.74,-8568.31 254.5,-8561.35"/>
 </a>
 </g>
 </g>
@@ -2212,8 +2212,8 @@
 <g id="Node000023" class="node">
 <title>Node23</title>
 <g id="a_Node000023"><a xlink:href="structtvm_1_1relax_1_1ConcatAttrs.html" target="_top" xlink:title="Attributes used in concat operators.">
-<polygon fill="white" stroke="#666666" points="501,-9619 371,-9619 371,-9600 501,-9600 501,-9619"/>
-<text text-anchor="middle" x="436" y="-9607" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ConcatAttrs</text>
+<polygon fill="white" stroke="#666666" points="501,-9571 371,-9571 371,-9552 501,-9552 501,-9571"/>
+<text text-anchor="middle" x="436" y="-9559" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ConcatAttrs</text>
 </a>
 </g>
 </g>
@@ -2221,8 +2221,8 @@
 <g id="edge27_Node000002_Node000023" class="edge">
 <title>Node2&#45;&gt;Node23</title>
 <g id="a_edge27_Node000002_Node000023"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.14,-8612.84C270.23,-8615.25 286.37,-8621.08 297,-8633.5 366.27,-8714.42 263.02,-9511.2 333,-9591.5 342.63,-9602.55 356.46,-9608.39 370.85,-9611.21"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.49,-8609.36 244.16,-8611.75 253.73,-8616.31 254.49,-8609.36"/>
+<path fill="none" stroke="#63b8ff" d="M254.14,-8564.84C270.23,-8567.25 286.37,-8573.08 297,-8585.5 366.27,-8666.42 263.02,-9463.2 333,-9543.5 342.63,-9554.55 356.46,-9560.39 370.85,-9563.21"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.49,-8561.36 244.16,-8563.75 253.73,-8568.31 254.49,-8561.36"/>
 </a>
 </g>
 </g>
@@ -2230,8 +2230,8 @@
 <g id="Node000024" class="node">
 <title>Node24</title>
 <g id="a_Node000024"><a xlink:href="structtvm_1_1relax_1_1Conv1DAttrs.html" target="_top" xlink:title="Attributes used in Conv1d operator.">
-<polygon fill="white" stroke="#666666" points="503,-9582 369,-9582 369,-9563 503,-9563 503,-9582"/>
-<text text-anchor="middle" x="436" y="-9570" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv1DAttrs</text>
+<polygon fill="white" stroke="#666666" points="503,-9534 369,-9534 369,-9515 503,-9515 503,-9534"/>
+<text text-anchor="middle" x="436" y="-9522" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv1DAttrs</text>
 </a>
 </g>
 </g>
@@ -2239,8 +2239,8 @@
 <g id="edge28_Node000002_Node000024" class="edge">
 <title>Node2&#45;&gt;Node24</title>
 <g id="a_edge28_Node000002_Node000024"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.12,-8612.85C270.22,-8615.26 286.36,-8621.09 297,-8633.5 363.58,-8711.17 266.09,-9476.11 333,-9553.5 342.19,-9564.13 355.25,-9570.04 368.96,-9573.13"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.48,-8609.37 244.15,-8611.76 253.71,-8616.32 254.48,-8609.37"/>
+<path fill="none" stroke="#63b8ff" d="M254.12,-8564.85C270.22,-8567.26 286.36,-8573.09 297,-8585.5 363.58,-8663.17 266.09,-9428.11 333,-9505.5 342.19,-9516.13 355.25,-9522.04 368.96,-9525.13"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.48,-8561.37 244.15,-8563.76 253.71,-8568.32 254.48,-8561.37"/>
 </a>
 </g>
 </g>
@@ -2248,9 +2248,9 @@
 <g id="Node000025" class="node">
 <title>Node25</title>
 <g id="a_Node000025"><a xlink:href="structtvm_1_1relax_1_1Conv1DTransposeAttrs.html" target="_top" xlink:title="Attributes used in Conv1DTranspose operator.">
-<polygon fill="white" stroke="#666666" points="516,-9544.5 356,-9544.5 356,-9514.5 516,-9514.5 516,-9544.5"/>
-<text text-anchor="start" x="364" y="-9532.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv1DTranspose</text>
-<text text-anchor="middle" x="436" y="-9521.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
+<polygon fill="white" stroke="#666666" points="516,-9496.5 356,-9496.5 356,-9466.5 516,-9466.5 516,-9496.5"/>
+<text text-anchor="start" x="364" y="-9484.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv1DTranspose</text>
+<text text-anchor="middle" x="436" y="-9473.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
 </a>
 </g>
 </g>
@@ -2258,8 +2258,8 @@
 <g id="edge29_Node000002_Node000025" class="edge">
 <title>Node2&#45;&gt;Node25</title>
 <g id="a_edge29_Node000002_Node000025"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.11,-8612.86C270.21,-8615.28 286.34,-8621.1 297,-8633.5 360.19,-8707.05 271.24,-9430.74 333,-9505.5 339.14,-9512.93 347.11,-9518.32 355.89,-9522.18"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.46,-8609.38 244.14,-8611.77 253.7,-8616.34 254.46,-8609.38"/>
+<path fill="none" stroke="#63b8ff" d="M254.11,-8564.86C270.21,-8567.28 286.34,-8573.1 297,-8585.5 360.19,-8659.05 271.24,-9382.74 333,-9457.5 339.14,-9464.93 347.11,-9470.32 355.89,-9474.18"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.46,-8561.38 244.14,-8563.77 253.7,-8568.34 254.46,-8561.38"/>
 </a>
 </g>
 </g>
@@ -2267,8 +2267,8 @@
 <g id="Node000026" class="node">
 <title>Node26</title>
 <g id="a_Node000026"><a xlink:href="structtvm_1_1relax_1_1Conv2DAttrs.html" target="_top" xlink:title="Attributes used in Conv2d operator.">
-<polygon fill="white" stroke="#666666" points="503,-9496 369,-9496 369,-9477 503,-9477 503,-9496"/>
-<text text-anchor="middle" x="436" y="-9484" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv2DAttrs</text>
+<polygon fill="white" stroke="#666666" points="503,-9448 369,-9448 369,-9429 503,-9429 503,-9448"/>
+<text text-anchor="middle" x="436" y="-9436" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv2DAttrs</text>
 </a>
 </g>
 </g>
@@ -2276,8 +2276,8 @@
 <g id="edge30_Node000002_Node000026" class="edge">
 <title>Node2&#45;&gt;Node26</title>
 <g id="a_edge30_Node000002_Node000026"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.09,-8612.87C270.19,-8615.29 286.33,-8621.11 297,-8633.5 357.51,-8703.8 272.2,-9397.46 333,-9467.5 342.21,-9478.11 355.28,-9484.02 369,-9487.11"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.45,-8609.39 244.13,-8611.78 253.69,-8616.35 254.45,-8609.39"/>
+<path fill="none" stroke="#63b8ff" d="M254.09,-8564.87C270.19,-8567.29 286.33,-8573.11 297,-8585.5 357.51,-8655.8 272.2,-9349.46 333,-9419.5 342.21,-9430.11 355.28,-9436.02 369,-9439.11"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.45,-8561.39 244.13,-8563.78 253.69,-8568.35 254.45,-8561.39"/>
 </a>
 </g>
 </g>
@@ -2285,9 +2285,9 @@
 <g id="Node000027" class="node">
 <title>Node27</title>
 <g id="a_Node000027"><a xlink:href="structtvm_1_1relax_1_1Conv2DTransposeAttrs.html" target="_top" xlink:title="Attributes used in Conv2d operator.">
-<polygon fill="white" stroke="#666666" points="516,-9458.5 356,-9458.5 356,-9428.5 516,-9428.5 516,-9458.5"/>
-<text text-anchor="start" x="364" y="-9446.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv2DTranspose</text>
-<text text-anchor="middle" x="436" y="-9435.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
+<polygon fill="white" stroke="#666666" points="516,-9410.5 356,-9410.5 356,-9380.5 516,-9380.5 516,-9410.5"/>
+<text text-anchor="start" x="364" y="-9398.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv2DTranspose</text>
+<text text-anchor="middle" x="436" y="-9387.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
 </a>
 </g>
 </g>
@@ -2295,8 +2295,8 @@
 <g id="edge31_Node000002_Node000027" class="edge">
 <title>Node2&#45;&gt;Node27</title>
 <g id="a_edge31_Node000002_Node000027"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.07,-8612.89C270.17,-8615.31 286.32,-8621.12 297,-8633.5 354.12,-8699.68 277.17,-9352.23 333,-9419.5 339.16,-9426.92 347.14,-9432.3 355.92,-9436.16"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.43,-8609.41 244.11,-8611.8 253.67,-8616.37 254.43,-8609.41"/>
+<path fill="none" stroke="#63b8ff" d="M254.07,-8564.89C270.17,-8567.31 286.32,-8573.12 297,-8585.5 354.12,-8651.68 277.17,-9304.23 333,-9371.5 339.16,-9378.92 347.14,-9384.3 355.92,-9388.16"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.43,-8561.41 244.11,-8563.8 253.67,-8568.37 254.43,-8561.41"/>
 </a>
 </g>
 </g>
@@ -2304,8 +2304,8 @@
 <g id="Node000028" class="node">
 <title>Node28</title>
 <g id="a_Node000028"><a xlink:href="structtvm_1_1relax_1_1Conv3DAttrs.html" target="_top" xlink:title="Attributes used in Conv3d operator.">
-<polygon fill="white" stroke="#666666" points="503,-9410 369,-9410 369,-9391 503,-9391 503,-9410"/>
-<text text-anchor="middle" x="436" y="-9398" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv3DAttrs</text>
+<polygon fill="white" stroke="#666666" points="503,-9362 369,-9362 369,-9343 503,-9343 503,-9362"/>
+<text text-anchor="middle" x="436" y="-9350" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv3DAttrs</text>
 </a>
 </g>
 </g>
@@ -2313,8 +2313,8 @@
 <g id="edge32_Node000002_Node000028" class="edge">
 <title>Node2&#45;&gt;Node28</title>
 <g id="a_edge32_Node000002_Node000028"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.06,-8612.9C270.15,-8615.32 286.3,-8621.13 297,-8633.5 351.44,-8696.43 278.3,-9318.8 333,-9381.5 342.18,-9392.02 355.15,-9397.91 368.77,-9401.01"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.42,-8609.42 244.09,-8611.81 253.65,-8616.38 254.42,-8609.42"/>
+<path fill="none" stroke="#63b8ff" d="M254.06,-8564.9C270.15,-8567.32 286.3,-8573.13 297,-8585.5 351.44,-8648.43 278.3,-9270.8 333,-9333.5 342.18,-9344.02 355.15,-9349.91 368.77,-9353.01"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.42,-8561.42 244.09,-8563.81 253.65,-8568.38 254.42,-8561.42"/>
 </a>
 </g>
 </g>
@@ -2322,9 +2322,9 @@
 <g id="Node000029" class="node">
 <title>Node29</title>
 <g id="a_Node000029"><a xlink:href="structtvm_1_1relax_1_1Conv3DTransposeAttrs.html" target="_top" xlink:title="Attributes used in Conv3dTranspose operator.">
-<polygon fill="white" stroke="#666666" points="516,-9372.5 356,-9372.5 356,-9342.5 516,-9342.5 516,-9372.5"/>
-<text text-anchor="start" x="364" y="-9360.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv3DTranspose</text>
-<text text-anchor="middle" x="436" y="-9349.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
+<polygon fill="white" stroke="#666666" points="516,-9324.5 356,-9324.5 356,-9294.5 516,-9294.5 516,-9324.5"/>
+<text text-anchor="start" x="364" y="-9312.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Conv3DTranspose</text>
+<text text-anchor="middle" x="436" y="-9301.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
 </a>
 </g>
 </g>
@@ -2332,8 +2332,8 @@
 <g id="edge33_Node000002_Node000029" class="edge">
 <title>Node2&#45;&gt;Node29</title>
 <g id="a_edge33_Node000002_Node000029"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.03,-8612.93C270.13,-8615.34 286.28,-8621.15 297,-8633.5 399.1,-8751.13 233.19,-9213.92 333,-9333.5 339.18,-9340.9 347.17,-9346.27 355.96,-9350.12"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.39,-8609.44 244.07,-8611.83 253.63,-8616.4 254.39,-8609.44"/>
+<path fill="none" stroke="#63b8ff" d="M254.03,-8564.93C270.13,-8567.34 286.28,-8573.15 297,-8585.5 399.1,-8703.13 233.19,-9165.92 333,-9285.5 339.18,-9292.9 347.17,-9298.27 355.96,-9302.12"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.39,-8561.44 244.07,-8563.83 253.63,-8568.4 254.39,-8561.44"/>
 </a>
 </g>
 </g>
@@ -2341,9 +2341,9 @@
 <g id="Node000030" class="node">
 <title>Node30</title>
 <g id="a_Node000030"><a xlink:href="structtvm_1_1relax_1_1DistributionAttrs.html" target="_top" xlink:title="Attributes for redistribute and annotate_sharding operator.">
-<polygon fill="white" stroke="#666666" points="501,-9324.5 371,-9324.5 371,-9294.5 501,-9294.5 501,-9324.5"/>
-<text text-anchor="start" x="379" y="-9312.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Distribution</text>
-<text text-anchor="middle" x="436" y="-9301.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
+<polygon fill="white" stroke="#666666" points="501,-9276.5 371,-9276.5 371,-9246.5 501,-9246.5 501,-9276.5"/>
+<text text-anchor="start" x="379" y="-9264.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::Distribution</text>
+<text text-anchor="middle" x="436" y="-9253.5" font-family="Helvetica,sans-Serif" font-size="10.00">Attrs</text>
 </a>
 </g>
 </g>
@@ -2351,8 +2351,8 @@
 <g id="edge34_Node000002_Node000030" class="edge">
 <title>Node2&#45;&gt;Node30</title>
 <g id="a_edge34_Node000002_Node000030"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.01,-8612.95C270.1,-8615.37 286.26,-8621.17 297,-8633.5 392.33,-8742.9 239.8,-9174.27 333,-9285.5 342.58,-9296.93 356.49,-9303.51 370.97,-9307.16"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.37,-8609.47 244.04,-8611.85 253.6,-8616.43 254.37,-8609.47"/>
+<path fill="none" stroke="#63b8ff" d="M254.01,-8564.95C270.1,-8567.37 286.26,-8573.17 297,-8585.5 392.33,-8694.9 239.8,-9126.27 333,-9237.5 342.58,-9248.93 356.49,-9255.51 370.97,-9259.16"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.37,-8561.47 244.04,-8563.85 253.6,-8568.43 254.37,-8561.47"/>
 </a>
 </g>
 </g>
@@ -2360,8 +2360,8 @@
 <g id="Node000031" class="node">
 <title>Node31</title>
 <g id="a_Node000031"><a xlink:href="structtvm_1_1relax_1_1DropoutAttrs.html" target="_top" xlink:title="Attributes used in dropout operator.">
-<polygon fill="white" stroke="#666666" points="503.5,-9276 368.5,-9276 368.5,-9257 503.5,-9257 503.5,-9276"/>
-<text text-anchor="middle" x="436" y="-9264" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DropoutAttrs</text>
+<polygon fill="white" stroke="#666666" points="503.5,-9228 368.5,-9228 368.5,-9209 503.5,-9209 503.5,-9228"/>
+<text text-anchor="middle" x="436" y="-9216" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DropoutAttrs</text>
 </a>
 </g>
 </g>
@@ -2369,8 +2369,8 @@
 <g id="edge35_Node000002_Node000031" class="edge">
 <title>Node2&#45;&gt;Node31</title>
 <g id="a_edge35_Node000002_Node000031"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M253.98,-8612.97C270.07,-8615.39 286.24,-8621.19 297,-8633.5 387.11,-8736.57 241.98,-9146.24 333,-9248.5 342.15,-9258.78 354.93,-9264.52 368.37,-9267.52"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.35,-8609.49 244.02,-8611.87 253.58,-8616.45 254.35,-8609.49"/>
+<path fill="none" stroke="#63b8ff" d="M253.98,-8564.97C270.07,-8567.39 286.24,-8573.19 297,-8585.5 387.11,-8688.57 241.98,-9098.24 333,-9200.5 342.15,-9210.78 354.93,-9216.52 368.37,-9219.52"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.35,-8561.49 244.02,-8563.87 253.58,-8568.45 254.35,-8561.49"/>
 </a>
 </g>
 </g>
@@ -2378,8 +2378,8 @@
 <g id="Node000032" class="node">
 <title>Node32</title>
 <g id="a_Node000032"><a xlink:href="structtvm_1_1relax_1_1EinsumAttrs.html" target="_top" xlink:title="Attributes used in einsum operator.">
-<polygon fill="white" stroke="#666666" points="502,-9239 370,-9239 370,-9220 502,-9220 502,-9239"/>
-<text text-anchor="middle" x="436" y="-9227" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::EinsumAttrs</text>
+<polygon fill="white" stroke="#666666" points="502,-9191 370,-9191 370,-9172 502,-9172 502,-9191"/>
+<text text-anchor="middle" x="436" y="-9179" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::EinsumAttrs</text>
 </a>
 </g>
 </g>
@@ -2387,8 +2387,8 @@
 <g id="edge36_Node000002_Node000032" class="edge">
 <title>Node2&#45;&gt;Node32</title>
 <g id="a_edge36_Node000002_Node000032"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.62,-8613.1C270.49,-8615.58 286.36,-8621.38 297,-8633.5 381.88,-8730.23 247.26,-9115.53 333,-9211.5 342.52,-9222.16 355.97,-9227.94 369.98,-9230.83"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.58,-8609.57 244.25,-8611.91 253.79,-8616.52 254.58,-8609.57"/>
+<path fill="none" stroke="#63b8ff" d="M254.62,-8565.1C270.49,-8567.58 286.36,-8573.38 297,-8585.5 381.88,-8682.23 247.26,-9067.53 333,-9163.5 342.52,-9174.16 355.97,-9179.94 369.98,-9182.83"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.58,-8561.57 244.25,-8563.91 253.79,-8568.52 254.58,-8561.57"/>
 </a>
 </g>
 </g>
@@ -2396,8 +2396,8 @@
 <g id="Node000033" class="node">
 <title>Node33</title>
 <g id="a_Node000033"><a xlink:href="structtvm_1_1relax_1_1ExpandDimsAttrs.html" target="_top" xlink:title="Attributes used in expand_dims operators.">
-<polygon fill="white" stroke="#666666" points="515,-9202 357,-9202 357,-9183 515,-9183 515,-9202"/>
-<text text-anchor="middle" x="436" y="-9190" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExpandDimsAttrs</text>
+<polygon fill="white" stroke="#666666" points="515,-9154 357,-9154 357,-9135 515,-9135 515,-9154"/>
+<text text-anchor="middle" x="436" y="-9142" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExpandDimsAttrs</text>
 </a>
 </g>
 </g>
@@ -2405,8 +2405,8 @@
 <g id="edge37_Node000002_Node000033" class="edge">
 <title>Node2&#45;&gt;Node33</title>
 <g id="a_edge37_Node000002_Node000033"><a xlink:title=" ">
-<path fill="none" stroke="#63b8ff" d="M254.59,-8613.12C270.45,-8615.61 286.34,-8621.4 297,-8633.5 376.66,-8723.89 252.53,-9084.82 333,-9174.5 339.48,-9181.73 347.77,-9186.71 356.81,-9190.06"/>
-<polygon fill="#63b8ff" stroke="#63b8ff" points="254.55,-8609.6 244.22,-8611.94 253.76,-8616.55 254.55,-8609.6"/>
+<path fill="none" stroke="#63b8ff" d="M254.59,-8565.12C270.45,-8567.61 286.34,-8573.4 297,-8585.5 376.66,-8675.89 252.53,-9036.82 333,-9126.5 339.48,-9133.73 347.77,-9138.71 356.81,-9142.06"/>
+<polygon fill="#63b8ff" stroke="#63b8ff" points="254.55,-8561.6 244.22,-8563.94 253.76,-8568.55 254.55,-8561.6"/>
 </a>
 </g>
 </g>
@@ -2414,8 +2414,8 @@
 <g id="Node000034" class="node">
 <title>Node34</title>
 <g id="a_Node000034"><a xlink:href="structtvm_1_1relax_1_1FlipAttrs.html" target="_top" xlink:title="Attributes used in flip operators.">
... 17838 lines suppressed ...