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 2024/03/26 01:32:38 UTC

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

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 b653d030cc deploying docs (apache/tvm@b2204ae6988c7745ea9736340ccd900bc21ae821)
b653d030cc is described below

commit b653d030cc1bca334a2a585e12ae935e6113ce83
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Tue Mar 26 01:32:29 2024 +0000

    deploying docs (apache/tvm@b2204ae6988c7745ea9736340ccd900bc21ae821)
---
 .../how_to/compile_models/from_darknet.rst.txt     |    2 +-
 .../how_to/compile_models/from_oneflow.rst.txt     |    2 +-
 .../how_to/compile_models/from_paddle.rst.txt      |    5 -
 .../how_to/compile_models/from_pytorch.rst.txt     |    2 +-
 .../how_to/compile_models/from_tensorflow.rst.txt  |    2 +-
 .../compile_models/sg_execution_times.rst.txt      |   20 +-
 .../deploy_models/deploy_model_on_adreno.rst.txt   |    4 +-
 .../deploy_model_on_adreno_tvmc.rst.txt            |    2 +-
 .../deploy_models/deploy_model_on_android.rst.txt  |    2 +-
 .../deploy_object_detection_pytorch.rst.txt        |    4 +-
 .../deploy_models/deploy_prequantized.rst.txt      |    6 +-
 .../deploy_prequantized_tflite.rst.txt             |    2 +-
 .../deploy_models/sg_execution_times.rst.txt       |   18 +-
 .../how_to/extend_tvm/sg_execution_times.rst.txt   |    8 +-
 .../how_to/extend_tvm/use_pass_instrument.rst.txt  |   16 +-
 .../optimize_operators/opt_conv_cuda.rst.txt       |    2 +-
 .../optimize_operators/opt_conv_tensorcore.rst.txt |    2 +-
 .../how_to/optimize_operators/opt_gemm.rst.txt     |   16 +-
 .../optimize_operators/sg_execution_times.rst.txt  |    8 +-
 .../sg_execution_times.rst.txt                     |   14 +-
 .../tune_conv2d_layer_cuda.rst.txt                 |    2 +-
 .../tune_network_cuda.rst.txt                      |    4 +-
 .../tune_network_x86.rst.txt                       |    4 +-
 .../tune_with_autotvm/sg_execution_times.rst.txt   |    8 +-
 .../tune_with_autotvm/tune_conv2d_cuda.rst.txt     |    2 +-
 .../work_with_microtvm/micro_autotune.rst.txt      |   18 +-
 .../work_with_microtvm/micro_pytorch.rst.txt       |    4 +-
 .../how_to/work_with_microtvm/micro_train.rst.txt  |   16 +-
 .../work_with_microtvm/sg_execution_times.rst.txt  |   14 +-
 .../work_with_relay/sg_execution_times.rst.txt     |   10 +-
 .../how_to/work_with_schedules/intrin_math.rst.txt |    2 +-
 .../work_with_schedules/sg_execution_times.rst.txt |   18 +-
 .../tutorials/frontend/deploy_detection.rst.txt    |    2 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |    4 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    6 +-
 .../topic/vta/tutorials/sg_execution_times.rst.txt |    6 +-
 .../tutorial/auto_scheduler_matmul_x86.rst.txt     |    4 +-
 docs/_sources/tutorial/autotvm_matmul_x86.rst.txt  |   20 +-
 docs/_sources/tutorial/autotvm_relay_x86.rst.txt   |   65 +-
 .../tutorial/cross_compilation_and_rpc.rst.txt     |    2 +-
 docs/_sources/tutorial/intro_topi.rst.txt          |    2 +-
 docs/_sources/tutorial/sg_execution_times.rst.txt  |   18 +-
 .../tutorial/tensor_expr_get_started.rst.txt       |   42 +-
 docs/commit_hash                                   |    2 +-
 docs/genindex.html                                 |    2 +
 docs/how_to/compile_models/from_darknet.html       |    2 +-
 docs/how_to/compile_models/from_oneflow.html       |   15 +-
 docs/how_to/compile_models/from_paddle.html        |    1 -
 docs/how_to/compile_models/from_pytorch.html       |   12 +-
 docs/how_to/compile_models/from_tensorflow.html    |    2 +-
 docs/how_to/compile_models/sg_execution_times.html |   20 +-
 .../deploy_models/deploy_model_on_adreno.html      |    4 +-
 .../deploy_models/deploy_model_on_adreno_tvmc.html |   29 +-
 .../deploy_models/deploy_model_on_android.html     |    2 +-
 .../deploy_object_detection_pytorch.html           |   57 +-
 docs/how_to/deploy_models/deploy_prequantized.html |    8 +-
 .../deploy_models/deploy_prequantized_tflite.html  |    2 +-
 docs/how_to/deploy_models/sg_execution_times.html  |   18 +-
 docs/how_to/extend_tvm/sg_execution_times.html     |    8 +-
 docs/how_to/extend_tvm/use_pass_instrument.html    |   16 +-
 docs/how_to/optimize_operators/opt_conv_cuda.html  |    2 +-
 .../optimize_operators/opt_conv_tensorcore.html    |    2 +-
 docs/how_to/optimize_operators/opt_gemm.html       |   16 +-
 .../optimize_operators/sg_execution_times.html     |    8 +-
 .../sg_execution_times.html                        |   14 +-
 .../tune_conv2d_layer_cuda.html                    |    2 +-
 .../tune_with_autoscheduler/tune_network_cuda.html |    4 +-
 .../tune_with_autoscheduler/tune_network_x86.html  |    4 +-
 .../tune_with_autotvm/sg_execution_times.html      |    8 +-
 .../how_to/tune_with_autotvm/tune_conv2d_cuda.html |    2 +-
 docs/how_to/work_with_microtvm/micro_autotune.html |   18 +-
 docs/how_to/work_with_microtvm/micro_pytorch.html  |    6 +-
 docs/how_to/work_with_microtvm/micro_train.html    |   16 +-
 .../work_with_microtvm/sg_execution_times.html     |   14 +-
 .../how_to/work_with_relay/sg_execution_times.html |   10 +-
 docs/how_to/work_with_schedules/intrin_math.html   |    2 +-
 .../work_with_schedules/sg_execution_times.html    |   18 +-
 docs/install/nnpack.html                           |   12 +-
 docs/objects.inv                                   |  Bin 25682 -> 25682 bytes
 .../reference/api/doxygen/algorithm_8h_source.html |    2 +-
 .../api/doxygen/annotation_8h_source.html          |    2 +-
 .../api/doxygen/axis__group__graph_8h_source.html  |    2 +-
 .../reference/api/doxygen/bitserial_8h_source.html |    2 +-
 .../api/doxygen/block__scope_8h_source.html        |    4 +-
 docs/reference/api/doxygen/call_8h_source.html     |    2 +-
 docs/reference/api/doxygen/ccl_8h_source.html      |    2 +-
 docs/reference/api/doxygen/classtvm_1_1Attrs.html  |    2 +-
 .../doxygen/classtvm_1_1Attrs__inherit__graph.svg  |   97 +-
 .../api/doxygen/classtvm_1_1BaseFuncNode.html      |    2 +-
 .../classtvm_1_1BaseFuncNode__coll__graph.svg      |  351 +++---
 .../api/doxygen/classtvm_1_1DictAttrs-members.html |    6 +-
 .../api/doxygen/classtvm_1_1DictAttrs.html         |   26 +-
 .../doxygen/classtvm_1_1DictAttrs__coll__graph.svg |  135 +-
 .../classtvm_1_1DictAttrs__inherit__graph.svg      |   97 +-
 .../api/doxygen/classtvm_1_1IRModule-members.html  |    2 +-
 .../api/doxygen/classtvm_1_1IRModule.html          |   12 +-
 .../api/doxygen/classtvm_1_1IRModuleNode.html      |    2 +-
 .../classtvm_1_1IRModuleNode__coll__graph.svg      |  457 +++----
 .../classtvm_1_1relax_1_1AttrPatternNode.html      |    2 +-
 ...vm_1_1relax_1_1AttrPatternNode__coll__graph.svg |  295 ++---
 ...sstvm_1_1relax_1_1DataflowBlockRewriteNode.html |    2 +-
 ...ax_1_1DataflowBlockRewriteNode__coll__graph.svg |  727 +++++------
 ...tvm_1_1relax_1_1ExternFuncNode__coll__graph.svg |  143 +--
 .../classtvm_1_1relax_1_1Function-members.html     |    4 +-
 .../api/doxygen/classtvm_1_1relax_1_1Function.html |   22 +-
 .../doxygen/classtvm_1_1relax_1_1FunctionNode.html |    2 +-
 ...sstvm_1_1relax_1_1FunctionNode__coll__graph.svg |  423 +++----
 .../classtvm_1_1relay_1_1AttrPatternNode.html      |    2 +-
 ...vm_1_1relay_1_1AttrPatternNode__coll__graph.svg |  291 ++---
 .../doxygen/classtvm_1_1relay_1_1ExecutorNode.html |    2 +-
 ...sstvm_1_1relay_1_1ExecutorNode__coll__graph.svg |  229 ++--
 .../classtvm_1_1relay_1_1Function-members.html     |    2 +-
 .../api/doxygen/classtvm_1_1relay_1_1Function.html |   12 +-
 .../doxygen/classtvm_1_1relay_1_1FunctionNode.html |    2 +-
 ...sstvm_1_1relay_1_1FunctionNode__coll__graph.svg |  581 ++++-----
 .../doxygen/classtvm_1_1relay_1_1RuntimeNode.html  |    2 +-
 ...asstvm_1_1relay_1_1RuntimeNode__coll__graph.svg |  227 ++--
 ...uilder_1_1tir_1_1PrimFuncFrameNode-members.html |    2 +-
 ...1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html |   14 +-
 ...er_1_1tir_1_1PrimFuncFrameNode__coll__graph.svg |  621 +++++----
 .../classtvm_1_1tir_1_1PrimFunc-members.html       |    2 +-
 .../api/doxygen/classtvm_1_1tir_1_1PrimFunc.html   |   12 +-
 .../doxygen/classtvm_1_1tir_1_1PrimFuncNode.html   |    2 +-
 ...lasstvm_1_1tir_1_1PrimFuncNode__coll__graph.svg |  231 ++--
 docs/reference/api/doxygen/create_8h_source.html   |    2 +-
 .../api/doxygen/cuda_2dense_8h_source.html         |    2 +-
 .../api/doxygen/cuda_2injective_8h_source.html     |    2 +-
 .../api/doxygen/cuda_2pooling_8h_source.html       |    2 +-
 .../api/doxygen/cuda_2reduction_8h_source.html     |    2 +-
 .../api/doxygen/cuda_2softmax_8h_source.html       |    2 +-
 docs/reference/api/doxygen/datatype_8h_source.html |    2 +-
 .../api/doxygen/detail_2broadcast_8h_source.html   |    2 +-
 .../api/doxygen/device__copy_8h_source.html        |    2 +-
 .../api/doxygen/distributed_8h_source.html         |    2 +-
 docs/reference/api/doxygen/executor_8h_source.html |    2 +-
 docs/reference/api/doxygen/functions_a.html        |    2 +-
 docs/reference/api/doxygen/functions_c.html        |    2 +-
 docs/reference/api/doxygen/functions_d.html        |    2 +-
 docs/reference/api/doxygen/functions_f.html        |    4 +-
 docs/reference/api/doxygen/functions_func_c.html   |    2 +-
 docs/reference/api/doxygen/functions_func_d.html   |    2 +-
 docs/reference/api/doxygen/functions_func_f.html   |    4 +-
 docs/reference/api/doxygen/functions_func_i.html   |    2 +-
 docs/reference/api/doxygen/functions_func_p.html   |    2 +-
 docs/reference/api/doxygen/functions_func_s.html   |    6 +-
 docs/reference/api/doxygen/functions_func_t.html   |    6 +-
 docs/reference/api/doxygen/functions_i.html        |    2 +-
 docs/reference/api/doxygen/functions_l.html        |    2 +-
 docs/reference/api/doxygen/functions_o.html        |    2 +-
 docs/reference/api/doxygen/functions_p.html        |    4 +-
 docs/reference/api/doxygen/functions_s.html        |   10 +-
 docs/reference/api/doxygen/functions_t.html        |    8 +-
 docs/reference/api/doxygen/functions_vars_a.html   |    2 +-
 .../api/doxygen/generic_2injective_8h_source.html  |    2 +-
 docs/reference/api/doxygen/globals_defs.html       |    3 +
 docs/reference/api/doxygen/globals_t.html          |    3 +
 docs/reference/api/doxygen/index_8h_source.html    |    2 +-
 docs/reference/api/doxygen/ir_2attrs_8h.html       |    2 +-
 .../reference/api/doxygen/ir_2attrs_8h_source.html | 1181 +++++++++---------
 docs/reference/api/doxygen/ir_2expr_8h_source.html |    2 +-
 .../api/doxygen/ir_2module_8h_source.html          |  157 +--
 docs/reference/api/doxygen/ir_2op_8h_source.html   |    2 +-
 docs/reference/api/doxygen/ir_2type_8h_source.html |    2 +-
 .../api/doxygen/ir__docsifier_8h_source.html       |    2 +-
 .../api/doxygen/linear__algebra_8h_source.html     |    2 +-
 .../api/doxygen/manipulate_8h_source.html          |    2 +-
 docs/reference/api/doxygen/namespacemembers_e.html |    2 +-
 docs/reference/api/doxygen/ndarray_8h_source.html  |    6 +-
 .../api/doxygen/nested__msg_8h_source.html         |    2 +-
 docs/reference/api/doxygen/node_8h_source.html     |    2 +-
 docs/reference/api/doxygen/object_8h.html          |   41 +-
 docs/reference/api/doxygen/object_8h_source.html   |  354 +++---
 .../api/doxygen/on__device_8h_source.html          |    2 +-
 docs/reference/api/doxygen/optional_8h_source.html |    2 +-
 .../api/doxygen/packed__func_8h_source.html        |    2 +-
 docs/reference/api/doxygen/qdq_8h_source.html      |    2 +-
 docs/reference/api/doxygen/random_8h_source.html   |    2 +-
 docs/reference/api/doxygen/reduce_8h_source.html   |    2 +-
 .../api/doxygen/relax_2attrs_2image_8h_source.html |    2 +-
 .../api/doxygen/relax_2attrs_2nn_8h_source.html    |    2 +-
 .../api/doxygen/relax_2attrs_2op_8h_source.html    |    2 +-
 .../api/doxygen/relax_2expr_8h_source.html         |  163 ++-
 .../doxygen/relax_2expr__functor_8h_source.html    |    4 +-
 .../api/doxygen/relay_2attrs_2debug_8h_source.html |    2 +-
 .../api/doxygen/relay_2attrs_2image_8h_source.html |    2 +-
 .../doxygen/relay_2attrs_2memory_8h_source.html    |    2 +-
 .../api/doxygen/relay_2attrs_2nn_8h_source.html    |    2 +-
 .../doxygen/relay_2attrs_2transform_8h_source.html |    2 +-
 .../api/doxygen/relay_2attrs_2vm_8h_source.html    |    2 +-
 .../doxygen/relay_2expr__functor_8h_source.html    |    2 +-
 .../api/doxygen/relay_2function_8h_source.html     |    6 +-
 .../api/doxygen/relay_2qnn_2attrs_8h_source.html   |    2 +-
 .../runtime_2container_2base_8h_source.html        |    2 +-
 docs/reference/api/doxygen/search/all_10.js        |  402 +++---
 docs/reference/api/doxygen/search/all_11.js        |  654 +++++-----
 docs/reference/api/doxygen/search/all_12.js        |   14 +-
 docs/reference/api/doxygen/search/all_13.js        |  651 +++++-----
 docs/reference/api/doxygen/search/all_14.js        |  596 +++++----
 docs/reference/api/doxygen/search/all_15.js        | 1316 ++++++++++----------
 docs/reference/api/doxygen/search/all_16.js        |  142 +--
 docs/reference/api/doxygen/search/all_17.js        |  299 ++---
 docs/reference/api/doxygen/search/all_18.js        |  156 +--
 docs/reference/api/doxygen/search/all_19.js        |    4 +-
 docs/reference/api/doxygen/search/all_1a.js        |    2 +-
 docs/reference/api/doxygen/search/all_1b.js        |  136 +-
 docs/reference/api/doxygen/search/all_2.js         |    2 +-
 docs/reference/api/doxygen/search/all_4.js         |    2 +-
 docs/reference/api/doxygen/search/all_5.js         |    2 +-
 docs/reference/api/doxygen/search/all_6.js         |  233 ++--
 docs/reference/api/doxygen/search/all_7.js         |  736 +++++------
 docs/reference/api/doxygen/search/all_8.js         |  402 +++---
 docs/reference/api/doxygen/search/all_9.js         |   92 +-
 docs/reference/api/doxygen/search/all_a.js         |  766 ++++++------
 docs/reference/api/doxygen/search/all_b.js         |   10 +-
 docs/reference/api/doxygen/search/all_c.js         |  822 ++++++------
 docs/reference/api/doxygen/search/all_d.js         |  323 ++---
 docs/reference/api/doxygen/search/all_e.js         |  583 +++++----
 docs/reference/api/doxygen/search/all_f.js         |  237 ++--
 docs/reference/api/doxygen/search/classes_0.js     |  680 +++++-----
 docs/reference/api/doxygen/search/classes_1.js     |  156 +--
 docs/reference/api/doxygen/search/classes_10.js    |  158 +--
 docs/reference/api/doxygen/search/classes_11.js    |  318 ++---
 docs/reference/api/doxygen/search/classes_12.js    |  326 ++---
 docs/reference/api/doxygen/search/classes_13.js    |   18 +-
 docs/reference/api/doxygen/search/classes_14.js    |   48 +-
 docs/reference/api/doxygen/search/classes_15.js    |   42 +-
 docs/reference/api/doxygen/search/classes_16.js    |    2 +-
 docs/reference/api/doxygen/search/classes_2.js     |  192 +--
 docs/reference/api/doxygen/search/classes_3.js     |  168 +--
 docs/reference/api/doxygen/search/classes_4.js     |   94 +-
 docs/reference/api/doxygen/search/classes_5.js     |   96 +-
 docs/reference/api/doxygen/search/classes_6.js     |   46 +-
 docs/reference/api/doxygen/search/classes_7.js     |   16 +-
 docs/reference/api/doxygen/search/classes_8.js     |  182 +--
 docs/reference/api/doxygen/search/classes_9.js     |    4 +-
 docs/reference/api/doxygen/search/classes_a.js     |   74 +-
 docs/reference/api/doxygen/search/classes_b.js     |  184 +--
 docs/reference/api/doxygen/search/classes_c.js     |   42 +-
 docs/reference/api/doxygen/search/classes_d.js     |  182 +--
 docs/reference/api/doxygen/search/classes_e.js     |  242 ++--
 docs/reference/api/doxygen/search/classes_f.js     |    2 +-
 docs/reference/api/doxygen/search/defines_0.js     |    8 +-
 docs/reference/api/doxygen/search/defines_1.js     |    4 +-
 docs/reference/api/doxygen/search/defines_2.js     |    4 +-
 docs/reference/api/doxygen/search/defines_3.js     |    2 +-
 docs/reference/api/doxygen/search/defines_4.js     |    4 +-
 docs/reference/api/doxygen/search/defines_5.js     |   12 +-
 docs/reference/api/doxygen/search/defines_6.js     |   20 +-
 docs/reference/api/doxygen/search/defines_7.js     |    8 +-
 docs/reference/api/doxygen/search/defines_8.js     |  191 +--
 docs/reference/api/doxygen/search/defines_9.js     |    2 +-
 docs/reference/api/doxygen/search/enums_0.js       |   10 +-
 docs/reference/api/doxygen/search/enums_1.js       |    8 +-
 docs/reference/api/doxygen/search/enums_2.js       |    8 +-
 docs/reference/api/doxygen/search/enums_3.js       |   10 +-
 docs/reference/api/doxygen/search/enums_4.js       |    8 +-
 docs/reference/api/doxygen/search/enums_5.js       |    6 +-
 docs/reference/api/doxygen/search/enums_6.js       |    8 +-
 docs/reference/api/doxygen/search/enums_7.js       |    2 +-
 docs/reference/api/doxygen/search/enums_8.js       |    4 +-
 docs/reference/api/doxygen/search/enums_9.js       |   12 +-
 docs/reference/api/doxygen/search/enums_a.js       |    4 +-
 docs/reference/api/doxygen/search/enums_b.js       |    6 +-
 docs/reference/api/doxygen/search/enums_c.js       |    2 +-
 docs/reference/api/doxygen/search/enums_d.js       |   10 +-
 docs/reference/api/doxygen/search/enums_e.js       |   16 +-
 docs/reference/api/doxygen/search/enums_f.js       |    2 +-
 docs/reference/api/doxygen/search/enumvalues_0.js  |   10 +-
 docs/reference/api/doxygen/search/enumvalues_1.js  |    2 +-
 docs/reference/api/doxygen/search/enumvalues_2.js  |    2 +-
 docs/reference/api/doxygen/search/enumvalues_3.js  |    2 +-
 docs/reference/api/doxygen/search/enumvalues_4.js  |   36 +-
 docs/reference/api/doxygen/search/enumvalues_5.js  |    6 +-
 docs/reference/api/doxygen/search/enumvalues_6.js  |   10 +-
 docs/reference/api/doxygen/search/enumvalues_7.js  |  634 +++++-----
 docs/reference/api/doxygen/search/enumvalues_8.js  |    4 +-
 docs/reference/api/doxygen/search/enumvalues_9.js  |    2 +-
 docs/reference/api/doxygen/search/enumvalues_a.js  |    4 +-
 docs/reference/api/doxygen/search/enumvalues_b.js  |    6 +-
 docs/reference/api/doxygen/search/enumvalues_c.js  |    4 +-
 docs/reference/api/doxygen/search/enumvalues_d.js  |    2 +-
 docs/reference/api/doxygen/search/files_0.js       |   34 +-
 docs/reference/api/doxygen/search/files_1.js       |   32 +-
 docs/reference/api/doxygen/search/files_10.js      |   42 +-
 docs/reference/api/doxygen/search/files_11.js      |    2 +-
 docs/reference/api/doxygen/search/files_12.js      |   10 +-
 docs/reference/api/doxygen/search/files_13.js      |    6 +-
 docs/reference/api/doxygen/search/files_2.js       |   28 +-
 docs/reference/api/doxygen/search/files_3.js       |   38 +-
 docs/reference/api/doxygen/search/files_4.js       |   26 +-
 docs/reference/api/doxygen/search/files_5.js       |   20 +-
 docs/reference/api/doxygen/search/files_6.js       |   14 +-
 docs/reference/api/doxygen/search/files_7.js       |   28 +-
 docs/reference/api/doxygen/search/files_8.js       |   10 +-
 docs/reference/api/doxygen/search/files_9.js       |   34 +-
 docs/reference/api/doxygen/search/files_a.js       |   16 +-
 docs/reference/api/doxygen/search/files_b.js       |   16 +-
 docs/reference/api/doxygen/search/files_c.js       |   26 +-
 docs/reference/api/doxygen/search/files_d.js       |    2 +-
 docs/reference/api/doxygen/search/files_e.js       |   26 +-
 docs/reference/api/doxygen/search/files_f.js       |   58 +-
 docs/reference/api/doxygen/search/functions_0.js   |   12 +-
 docs/reference/api/doxygen/search/functions_1.js   |  346 ++---
 docs/reference/api/doxygen/search/functions_10.js  |  297 +++--
 docs/reference/api/doxygen/search/functions_11.js  |    8 +-
 docs/reference/api/doxygen/search/functions_12.js  |  332 ++---
 docs/reference/api/doxygen/search/functions_13.js  |  530 ++++----
 docs/reference/api/doxygen/search/functions_14.js  |  529 ++++----
 docs/reference/api/doxygen/search/functions_15.js  |  130 +-
 docs/reference/api/doxygen/search/functions_16.js  |  176 +--
 docs/reference/api/doxygen/search/functions_17.js  |   76 +-
 docs/reference/api/doxygen/search/functions_18.js  |    2 +-
 docs/reference/api/doxygen/search/functions_19.js  |  136 +-
 docs/reference/api/doxygen/search/functions_2.js   |  156 +--
 docs/reference/api/doxygen/search/functions_3.js   |  394 +++---
 docs/reference/api/doxygen/search/functions_4.js   |  268 ++--
 docs/reference/api/doxygen/search/functions_5.js   |  173 ++-
 docs/reference/api/doxygen/search/functions_6.js   |  310 ++---
 docs/reference/api/doxygen/search/functions_7.js   |  334 ++---
 docs/reference/api/doxygen/search/functions_8.js   |   58 +-
 docs/reference/api/doxygen/search/functions_9.js   |  432 +++----
 docs/reference/api/doxygen/search/functions_a.js   |   10 +-
 docs/reference/api/doxygen/search/functions_b.js   |    8 +-
 docs/reference/api/doxygen/search/functions_c.js   |  198 +--
 docs/reference/api/doxygen/search/functions_d.js   |  243 ++--
 docs/reference/api/doxygen/search/functions_e.js   |  118 +-
 docs/reference/api/doxygen/search/functions_f.js   |  156 +--
 docs/reference/api/doxygen/search/namespaces_0.js  |    4 +-
 docs/reference/api/doxygen/search/namespaces_1.js  |   88 +-
 docs/reference/api/doxygen/search/related_0.js     |    2 +-
 docs/reference/api/doxygen/search/related_1.js     |   10 +-
 docs/reference/api/doxygen/search/related_10.js    |    2 +-
 docs/reference/api/doxygen/search/related_11.js    |    8 +-
 docs/reference/api/doxygen/search/related_12.js    |   12 +-
 docs/reference/api/doxygen/search/related_2.js     |    2 +-
 docs/reference/api/doxygen/search/related_3.js     |   12 +-
 docs/reference/api/doxygen/search/related_4.js     |   14 +-
 docs/reference/api/doxygen/search/related_5.js     |    2 +-
 docs/reference/api/doxygen/search/related_6.js     |    6 +-
 docs/reference/api/doxygen/search/related_7.js     |    8 +-
 docs/reference/api/doxygen/search/related_8.js     |    2 +-
 docs/reference/api/doxygen/search/related_9.js     |   14 +-
 docs/reference/api/doxygen/search/related_a.js     |    2 +-
 docs/reference/api/doxygen/search/related_b.js     |   24 +-
 docs/reference/api/doxygen/search/related_c.js     |    2 +-
 docs/reference/api/doxygen/search/related_d.js     |   10 +-
 docs/reference/api/doxygen/search/related_e.js     |   10 +-
 docs/reference/api/doxygen/search/related_f.js     |   24 +-
 docs/reference/api/doxygen/search/typedefs_0.js    |    8 +-
 docs/reference/api/doxygen/search/typedefs_1.js    |    8 +-
 docs/reference/api/doxygen/search/typedefs_10.js   |    4 +-
 docs/reference/api/doxygen/search/typedefs_11.js   |    2 +-
 docs/reference/api/doxygen/search/typedefs_2.js    |   10 +-
 docs/reference/api/doxygen/search/typedefs_3.js    |   10 +-
 docs/reference/api/doxygen/search/typedefs_4.js    |   14 +-
 docs/reference/api/doxygen/search/typedefs_5.js    |  150 +--
 docs/reference/api/doxygen/search/typedefs_6.js    |    8 +-
 docs/reference/api/doxygen/search/typedefs_7.js    |   22 +-
 docs/reference/api/doxygen/search/typedefs_8.js    |    6 +-
 docs/reference/api/doxygen/search/typedefs_9.js    |    4 +-
 docs/reference/api/doxygen/search/typedefs_a.js    |   14 +-
 docs/reference/api/doxygen/search/typedefs_b.js    |    6 +-
 docs/reference/api/doxygen/search/typedefs_c.js    |   22 +-
 docs/reference/api/doxygen/search/typedefs_d.js    |   18 +-
 docs/reference/api/doxygen/search/typedefs_e.js    |   24 +-
 docs/reference/api/doxygen/search/typedefs_f.js    |  124 +-
 docs/reference/api/doxygen/search/variables_0.js   |   18 +-
 docs/reference/api/doxygen/search/variables_1.js   |  126 +-
 docs/reference/api/doxygen/search/variables_10.js  |    2 +-
 docs/reference/api/doxygen/search/variables_11.js  |  154 +--
 docs/reference/api/doxygen/search/variables_12.js  |  238 ++--
 docs/reference/api/doxygen/search/variables_13.js  |  164 +--
 docs/reference/api/doxygen/search/variables_14.js  |   14 +-
 docs/reference/api/doxygen/search/variables_15.js  |   86 +-
 docs/reference/api/doxygen/search/variables_16.js  |   36 +-
 docs/reference/api/doxygen/search/variables_17.js  |    2 +-
 docs/reference/api/doxygen/search/variables_2.js   |  102 +-
 docs/reference/api/doxygen/search/variables_3.js   |  172 +--
 docs/reference/api/doxygen/search/variables_4.js   |  154 +--
 docs/reference/api/doxygen/search/variables_5.js   |   76 +-
 docs/reference/api/doxygen/search/variables_6.js   |  164 +--
 docs/reference/api/doxygen/search/variables_7.js   |   26 +-
 docs/reference/api/doxygen/search/variables_8.js   |   24 +-
 docs/reference/api/doxygen/search/variables_9.js   |  160 +--
 docs/reference/api/doxygen/search/variables_a.js   |  184 +--
 docs/reference/api/doxygen/search/variables_b.js   |   56 +-
 docs/reference/api/doxygen/search/variables_c.js   |  138 +-
 docs/reference/api/doxygen/search/variables_d.js   |   86 +-
 docs/reference/api/doxygen/search/variables_e.js   |   72 +-
 docs/reference/api/doxygen/search/variables_f.js   |  140 +--
 docs/reference/api/doxygen/search_8h_source.html   |    2 +-
 docs/reference/api/doxygen/sorting_8h_source.html  |    2 +-
 .../api/doxygen/statistical_8h_source.html         |    2 +-
 docs/reference/api/doxygen/string_8h_source.html   |    2 +-
 .../api/doxygen/struct__info_8h_source.html        |    2 +-
 .../api/doxygen/tir_2analysis_8h_source.html       |    2 +-
 .../api/doxygen/tir_2frame_8h_source.html          |    6 +-
 .../api/doxygen/tir_2function_8h_source.html       |    8 +-
 docs/reference/api/doxygen/tir_2op_8h_source.html  |    2 +-
 .../api/doxygen/tir_2utils_8h_source.html          |    2 +-
 .../api/doxygen/tir__pattern_8h_source.html        |    2 +-
 .../api/doxygen/topi_2transform_8h_source.html     |    2 +-
 .../api/doxygen/virtual__device_8h_source.html     |    2 +-
 docs/reference/api/doxygen/vision_8h_source.html   |    2 +-
 docs/reference/api/doxygen/x86_2bnn_8h_source.html |    2 +-
 .../api/doxygen/x86_2default_8h_source.html        |    2 +-
 docs/reference/api/python/auto_scheduler.html      |    4 +-
 docs/reference/api/python/ir.html                  |   11 +-
 .../api/typedoc/classes/ArtifactCache.html         |   12 +-
 docs/reference/api/typedoc/classes/DLDataType.html |   14 +-
 docs/reference/api/typedoc/classes/DLDevice.html   |   12 +-
 docs/reference/api/typedoc/classes/Instance.html   |  114 +-
 .../classes/LinearCongruentialGenerator.html       |   16 +-
 docs/reference/api/typedoc/classes/Module.html     |   12 +-
 docs/reference/api/typedoc/classes/NDArray.html    |   30 +-
 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 +-
 .../api/typedoc/classes/VirtualMachine.html        |   10 +-
 .../classes/_internal_.AsyncifyHandler.html        |   12 +-
 .../classes/_internal_.CachedCallStack.html        |   36 +-
 .../classes/_internal_.CanvasRenderManager.html    |   10 +-
 .../typedoc/classes/_internal_.Environment.html    |   14 +-
 .../api/typedoc/classes/_internal_.FFILibrary.html |   22 +-
 .../api/typedoc/classes/_internal_.Memory.html     |   36 +-
 .../typedoc/classes/_internal_.PackedFuncCell.html |    8 +-
 .../typedoc/classes/_internal_.RuntimeContext.html |   56 +-
 .../api/typedoc/classes/_internal_.TVMString.html  |   14 +-
 .../typedoc/classes/_internal_.WebGPUContext.html  |   28 +-
 .../enums/_internal_.AsyncifyStateKind.html        |    8 +-
 .../typedoc/enums/_internal_.RPCServerState.html   |   14 +-
 docs/reference/api/typedoc/functions/assert.html   |    2 +-
 .../api/typedoc/functions/createPolyfillWASI.html  |    2 +-
 .../api/typedoc/functions/deleteNDArrayCache.html  |    2 +-
 .../api/typedoc/functions/detectGPUDevice.html     |    2 +-
 .../api/typedoc/functions/hasNDArrayInCache.html   |    2 +-
 .../api/typedoc/functions/instantiate.html         |    2 +-
 docs/reference/api/typedoc/functions/wasmPath.html |    2 +-
 .../api/typedoc/interfaces/Disposable.html         |    4 +-
 .../typedoc/interfaces/GPUDeviceDetectOutput.html  |    8 +-
 .../api/typedoc/interfaces/InitProgressReport.html |   10 +-
 .../api/typedoc/interfaces/LibraryProvider.html    |    6 +-
 .../_internal_.ArtifactCacheTemplate.html          |   10 +-
 .../interfaces/_internal_.FunctionInfo.html        |    8 +-
 .../interfaces/_internal_.NDArrayCacheEntry.html   |   14 +-
 .../interfaces/_internal_.NDArrayShardEntry.html   |   10 +-
 .../api/typedoc/types/InitProgressCallback.html    |    2 +-
 docs/reference/api/typedoc/types/PackedFunc.html   |    2 +-
 .../typedoc/types/_internal_.AsyncPackedFunc.html  |    2 +-
 .../types/_internal_.FObjectConstructor.html       |    2 +-
 .../types/_internal_.FTVMWasmAllocSpace.html       |    2 +-
 .../types/_internal_.FTVMWasmFreeSpace.html        |    2 +-
 .../types/_internal_.FTVMWasmPackedCFunc.html      |    2 +-
 .../api/typedoc/types/_internal_.Pointer.html      |    2 +-
 .../typedoc/types/_internal_.TVMObjectBase.html    |    2 +-
 docs/searchindex.js                                |    2 +-
 .../vta/tutorials/frontend/deploy_detection.html   |    2 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    4 +-
 .../vta/tutorials/optimize/sg_execution_times.html |    6 +-
 docs/topic/vta/tutorials/sg_execution_times.html   |    6 +-
 docs/tutorial/auto_scheduler_matmul_x86.html       |    4 +-
 docs/tutorial/autotvm_matmul_x86.html              |   20 +-
 docs/tutorial/autotvm_relay_x86.html               |  276 ++--
 docs/tutorial/cross_compilation_and_rpc.html       |    2 +-
 docs/tutorial/intro_topi.html                      |    2 +-
 docs/tutorial/sg_execution_times.html              |   18 +-
 docs/tutorial/tensor_expr_get_started.html         |   42 +-
 468 files changed, 15505 insertions(+), 15414 deletions(-)

diff --git a/docs/_sources/how_to/compile_models/from_darknet.rst.txt b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
index 8f6840ea94..4e8e158758 100644
--- a/docs/_sources/how_to/compile_models/from_darknet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
@@ -318,7 +318,7 @@ The process is no different from other examples.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  37.768 seconds)
+   **Total running time of the script:** ( 1 minutes  34.060 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_darknet.py:
diff --git a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
index 884ab81cf5..1353beef45 100644
--- a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
@@ -121,7 +121,7 @@ Load a pretrained OneFlow model and save model
  .. code-block:: none
 
     Downloading: "https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip" to /workspace/.oneflow/flowvision_cache/resnet18.zip
-       0%|          | 0.00/41.5M [00:00<?, ?B/s]      19%|#9        | 7.99M/41.5M [00:00<00:00, 52.3MB/s]      39%|###8      | 16.0M/41.5M [00:00<00:00, 50.9MB/s]      54%|#####3    | 22.3M/41.5M [00:00<00:00, 41.1MB/s]      64%|######3   | 26.4M/41.5M [00:00<00:00, 38.4MB/s]      77%|#######7  | 32.0M/41.5M [00:00<00:00, 41.1MB/s]      96%|#########6| 40.0M/41.5M [00:00<00:00, 46.7MB/s]     100%|##########| 41.5M/41.5M [00:00<00:00, 46.2MB/s]
+       0%|          | 0.00/41.5M [00:00<?, ?B/s]      15%|#5        | 6.33M/41.5M [00:00<00:00, 52.4MB/s]      27%|##7       | 11.3M/41.5M [00:00<00:00, 48.3MB/s]      38%|###8      | 15.9M/41.5M [00:00<00:00, 30.6MB/s]      49%|####9     | 20.4M/41.5M [00:00<00:00, 35.0MB/s]      58%|#####8    | 24.2M/41.5M [00:00<00:00, 23.0MB/s]      77%|#######7  | 32.0M/41.5M [00:00<00:00, 34.3MB/s]      92%|#########2| 38.3M/41.5M [00:01<00:00, 35.5MB/s]     100%|##########| 41.5M/41.5M [00:01<00:00, 35.3MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_paddle.rst.txt b/docs/_sources/how_to/compile_models/from_paddle.rst.txt
index dbee5cfcf0..8df75c9e33 100644
--- a/docs/_sources/how_to/compile_models/from_paddle.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_paddle.rst.txt
@@ -207,11 +207,6 @@ Look up prediction top 1 index in 1000 class synset.
 
 
 
-.. rst-class:: sphx-glr-timing
-
-   **Total running time of the script:** ( 1 minutes  4.862 seconds)
-
-
 .. _sphx_glr_download_how_to_compile_models_from_paddle.py:
 
 .. only:: html
diff --git a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
index ed585c6ba0..20118e50bb 100644
--- a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
@@ -101,7 +101,7 @@ Load a pretrained PyTorch model
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     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]      18%|#7        | 7.99M/44.7M [00:00<00:00, 61.9MB/s]      36%|###5      | 16.0M/44.7M [00:00<00:00, 54.2MB/s]      67%|######6   | 29.9M/44.7M [00:00<00:00, 86.4MB/s]      87%|########7 | 39.1M/44.7M [00:00<00:00, 71.0MB/s]     100%|##########| 44.7M/44.7M [00:00<00:00, 70.0MB/s]
+       0%|          | 0.00/44.7M [00:00<?, ?B/s]       5%|4         | 2.05M/44.7M [00:00<00:02, 18.4MB/s]      18%|#7        | 7.99M/44.7M [00:00<00:00, 39.2MB/s]      36%|###5      | 16.0M/44.7M [00:00<00:00, 45.5MB/s]      54%|#####3    | 24.0M/44.7M [00:00<00:00, 50.2MB/s]      72%|#######1  | 32.0M/44.7M [00:00<00:00, 49.4MB/s]      90%|########9 | 40.0M/44.7M [00:00<00:00, 52.5MB/s]     100%|##########| 44.7M/44.7M [00:00<00:00, 47.5MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
index 8596d15fba..961d444e03 100644
--- a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
@@ -430,7 +430,7 @@ Run the corresponding model on tensorflow
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  35.187 seconds)
+   **Total running time of the script:** ( 1 minutes  28.643 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_tensorflow.py:
diff --git a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
index 43a9fdfe89..9c51c20f7f 100644
--- a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**06:54.933** total execution time for **how_to_compile_models** files:
+**06:30.993** total execution time for **how_to_compile_models** files:
 
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:37.768 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:34.060 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:35.187 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:28.643 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 01:04.862 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 00:58.952 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:45.875 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:42.158 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:39.992 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:37.058 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:29.494 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:27.701 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:28.004 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:27.165 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:10.801 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:12.474 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.951 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.782 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
index 2d2cd27b13..3cfaa4abfd 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
@@ -673,7 +673,7 @@ well as provides information about the model's performance
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-     4124.2011    4124.0746    4127.4333    4122.1314      1.8444                  
+     3992.9270    3992.7420    3994.4361    3991.4240      1.0967                  
 
 
 
@@ -681,7 +681,7 @@ well as provides information about the model's performance
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  21.096 seconds)
+   **Total running time of the script:** ( 1 minutes  17.208 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_model_on_adreno.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
index 9a6eaac607..65047846e4 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno_tvmc.rst.txt
@@ -127,7 +127,7 @@ Make a Keras Resnet50 Model
  .. code-block:: none
 
     Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels.h5
-          8192/102967424 [..............................] - ETA: 0s       8380416/102967424 [=>............................] - ETA: 1s      15024128/102967424 [===>..........................] - ETA: 1s      16769024/102967424 [===>..........................] - ETA: 1s      18964480/102967424 [====>.........................] - ETA: 1s      25157632/102967424 [======>.......................] - ETA: 1s      33546240/102967424 [========>.....................] - ETA: 1s      41934848/102967424 [===========>..................] - ETA: 0s
       50323456/102967424 [=============>................] - ETA: 0s      53010432/102967424 [==============>...............] - ETA: 0s      58712064/102967424 [================>.............] - ETA: 0s      60907520/102967424 [================>.............] - ETA: 0s      67100672/102967424 [==================>...........] - ETA: 0s      74227712/102967424 [====================>.........] - ETA: 0s      75489280/102967424 [====================>.........] - ETA: 0s      83877888/102967424 [=======================>......] -
  ETA: 0s      86073344/102967424 [========================>.....] - ETA: 0s      90628096/102967424 [=========================>....] - ETA: 0s      92266496/102967424 [=========================>....] - ETA: 0s     100646912/102967424 [============================>.] - ETA: 0s     102850560/102967424 [============================>.] - ETA: 0s     102967424/102967424 [==============================] - 2s 0us/step
+          8192/102967424 [..............................] - ETA: 0s       8380416/102967424 [=>............................] - ETA: 2s      10731520/102967424 [==>...........................] - ETA: 1s      16769024/102967424 [===>..........................] - ETA: 2s      23158784/102967424 [=====>........................] - ETA: 1s      25157632/102967424 [======>.......................] - ETA: 1s      33546240/102967424 [========>.....................] - ETA: 1s      40189952/102967424 [==========>...................] - ETA: 1s
       41934848/102967424 [===========>..................] - ETA: 1s      50323456/102967424 [=============>................] - ETA: 1s      56967168/102967424 [===============>..............] - ETA: 1s      58712064/102967424 [================>.............] - ETA: 1s      65355776/102967424 [==================>...........] - ETA: 0s      67100672/102967424 [==================>...........] - ETA: 0s      69296128/102967424 [===================>..........] - ETA: 0s      73744384/102967424 [====================>.........] -
  ETA: 0s      75489280/102967424 [====================>.........] - ETA: 0s      75628544/102967424 [=====================>........] - ETA: 0s      82124800/102967424 [======================>.......] - ETA: 0s      83877888/102967424 [=======================>......] - ETA: 0s      92266496/102967424 [=========================>....] - ETA: 0s      98910208/102967424 [===========================>..] - ETA: 0s     100646912/102967424 [============================>.] - ETA: 0s     102850560/102967424
  [============================>.] - ETA: 0s     102967424/102967424 [==============================] - 3s 0us/step
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
index ce9f165a48..011424193b 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
@@ -437,7 +437,7 @@ Execute on TVM
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      16.3471      16.1218      17.0181      15.8422       0.4472                  
+      14.0667      14.0262      14.7313      13.8267       0.2386                  
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
index 590af643ee..3f884f59f8 100644
--- a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
@@ -130,7 +130,7 @@ Load pre-trained maskrcnn from torchvision and do tracing
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=MaskRCNN_ResNet50_FPN_Weights.COCO_V1`. You can also use `weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth" to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
-       0%|          | 0.00/170M [00:00<?, ?B/s]       5%|4         | 7.68M/170M [00:00<00:02, 80.5MB/s]       9%|9         | 15.4M/170M [00:00<00:04, 33.8MB/s]      12%|#1        | 19.9M/170M [00:00<00:04, 36.0MB/s]      17%|#7        | 29.6M/170M [00:00<00:02, 53.4MB/s]      21%|##1       | 36.0M/170M [00:00<00:03, 45.2MB/s]      24%|##4       | 41.2M/170M [00:00<00:02, 47.2MB/s]      28%|##8       | 48.0M/170M [00:01<00:02, 52.7MB/s]      33%|###2      | 56.0M/170M [00:01<00:02, 57.8MB/s]      38%|###7      | 64.0M/170M [00:01<00:01, 56.3MB/s]      42%|####2     | 72.0M/170M [00:01<00:01, 62.7MB/s]      48%|####8     | 82.1M/170M [00:01<00:01, 72.1MB/s]      53%|#####2    | 89.3M/170M [00:01<00:01, 63.8MB/s]      57%|#####6    | 96.0M/170M [00:01<00:01, 56.5MB/s]      60%|#####9    | 102M/170M [00:01<00:01, 56.0MB/s]       63%|######3   | 107M/170M [00:02<00:01, 49.1MB/s]      66%|######6   | 112M/170M [00:02<00:01, 39.8MB/s]      71%|#######   | 120M/170M [00:02<00:01, 46.8MB/s] 
      76%|#######5  | 128M/170M [00:02<00:00, 56.0MB/s]      80%|########  | 136M/170M [00:02<00:00, 53.1MB/s]      87%|########6 | 147M/170M [00:02<00:00, 68.4MB/s]      91%|#########1| 155M/170M [00:02<00:00, 59.8MB/s]      95%|#########4| 161M/170M [00:03<00:00, 45.7MB/s]      99%|#########8| 168M/170M [00:03<00:00, 48.6MB/s]     100%|##########| 170M/170M [00:03<00:00, 52.6MB/s]
+       0%|          | 0.00/170M [00:00<?, ?B/s]       5%|4         | 7.99M/170M [00:00<00:03, 50.3MB/s]       8%|8         | 14.3M/170M [00:00<00:03, 52.2MB/s]      11%|#1        | 19.3M/170M [00:00<00:03, 47.6MB/s]      14%|#4        | 24.0M/170M [00:00<00:03, 40.2MB/s]      18%|#7        | 30.3M/170M [00:00<00:03, 44.5MB/s]      20%|##        | 34.6M/170M [00:00<00:03, 42.9MB/s]      24%|##3       | 40.0M/170M [00:00<00:03, 41.3MB/s]      27%|##7       | 46.3M/170M [00:01<00:03, 36.1MB/s]      29%|##9       | 49.9M/170M [00:01<00:03, 31.9MB/s]      33%|###2      | 56.0M/170M [00:01<00:03, 34.7MB/s]      38%|###7      | 64.0M/170M [00:01<00:02, 37.4MB/s]      43%|####2     | 72.8M/170M [00:01<00:02, 48.4MB/s]      47%|####6     | 79.8M/170M [00:01<00:01, 54.0MB/s]      50%|#####     | 85.5M/170M [00:02<00:01, 50.6MB/s]      53%|#####3    | 90.7M/170M [00:02<00:02, 40.0MB/s]      56%|#####5    | 95.1M/170M [00:02<00:02, 36.6MB/s]      60%|######    | 102M/170M [00:02<00:01, 36.8MB/s
 ]       62%|######2   | 106M/170M [00:02<00:01, 36.0MB/s]      66%|######5   | 112M/170M [00:03<00:02, 30.3MB/s]      71%|#######   | 120M/170M [00:03<00:01, 35.0MB/s]      74%|#######4  | 126M/170M [00:03<00:01, 39.2MB/s]      77%|#######6  | 130M/170M [00:03<00:01, 36.2MB/s]      80%|########  | 136M/170M [00:03<00:01, 34.6MB/s]      85%|########4 | 144M/170M [00:03<00:00, 41.5MB/s]      88%|########8 | 150M/170M [00:03<00:00, 41.3MB/s]      91%|######### | 154M/170M [00:04<00:00, 35.5MB/s]      93%|#########3| 158M/170M [00:04<00:00, 32.3MB/s]      95%|#########5| 161M/170M [00:04<00:00, 26.6MB/s]      98%|#########7| 166M/170M [00:04<00:00, 29.5MB/s]     100%|#########9| 169M/170M [00:04<00:00, 29.7MB/s]     100%|##########| 170M/170M [00:04<00:00, 37.5MB/s]
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/nn/functional.py:3912: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
       (torch.floor((input.size(i + 2).float() * torch.tensor(scale_factors[i], dtype=torch.float32)).float()))
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/ops/boxes.py:157: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
@@ -292,7 +292,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 3 minutes  45.152 seconds)
+   **Total running time of the script:** ( 3 minutes  24.257 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_object_detection_pytorch.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
index a0d16d0a7e..9bd372c695 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
@@ -227,7 +227,7 @@ training. Other models require a full post training calibration.
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=MobileNet_V2_Weights.IMAGENET1K_V1`. You can also use `weights=MobileNet_V2_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/mobilenet_v2-b0353104.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
-       0%|          | 0.00/13.6M [00:00<?, ?B/s]      60%|#####9    | 8.12M/13.6M [00:00<00:00, 80.5MB/s]     100%|##########| 13.6M/13.6M [00:00<00:00, 109MB/s] 
+       0%|          | 0.00/13.6M [00:00<?, ?B/s]      59%|#####8    | 7.99M/13.6M [00:00<00:00, 38.7MB/s]     100%|##########| 13.6M/13.6M [00:00<00:00, 46.5MB/s]
 
 
 
@@ -409,7 +409,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      89.2959      89.2392      91.3354      88.8678       0.3085                  
+      86.0785      86.0713      87.1651      85.5597       0.2862                  
 
 
 
@@ -457,7 +457,7 @@ TODO
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  32.945 seconds)
+   **Total running time of the script:** ( 1 minutes  26.325 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_prequantized.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
index 591206fdd9..673d8ec21f 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
@@ -423,7 +423,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      110.8619     110.8138     113.5532     110.1644      0.4566                  
+      105.4646     105.3497     139.3925     102.8951      3.6720                  
 
 
 
diff --git a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
index c9f9597b27..a44b281b62 100644
--- a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**10:17.658** total execution time for **how_to_deploy_models** files:
+**09:32.281** total execution time for **how_to_deploy_models** files:
 
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:45.152 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:24.257 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:32.945 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:26.325 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:21.096 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:17.208 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:53.870 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:49.812 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 00:53.571 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 00:49.788 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno_tvmc.py` (``deploy_model_on_adreno_tvmc.py``)         | 00:49.194 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno_tvmc.py` (``deploy_model_on_adreno_tvmc.py``)         | 00:46.623 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:30.997 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:29.270 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:30.823 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:28.989 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)                                     | 00:00.009 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
index 04a70cfa5e..47bdae5e2b 100644
--- a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
@@ -5,12 +5,12 @@
 
 Computation times
 =================
-**00:03.997** total execution time for **how_to_extend_tvm** files:
+**00:03.816** total execution time for **how_to_extend_tvm** files:
 
 +-------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)     | 00:02.784 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)     | 00:02.641 | 0.0 MB |
 +-------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)               | 00:01.205 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)               | 00:01.168 | 0.0 MB |
 +-------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``) | 00:00.007 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``) | 00:00.008 | 0.0 MB |
 +-------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
index f565a63c8f..b0105d91e8 100644
--- a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
@@ -220,10 +220,10 @@ profile the execution time of each passes.
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 24878us [24878us] (48.91%; 48.91%)
-    FoldScaleAxis: 25990us [8us] (51.09%; 51.09%)
-            FoldConstant: 25981us [1796us] (51.08%; 99.97%)
-                    InferType: 24185us [24185us] (47.54%; 93.09%)
+    InferType: 24133us [24133us] (48.86%; 48.86%)
+    FoldScaleAxis: 25263us [8us] (51.14%; 51.14%)
+            FoldConstant: 25255us [1743us] (51.13%; 99.97%)
+                    InferType: 23512us [23512us] (47.60%; 93.10%)
 
 
 
@@ -262,10 +262,10 @@ Refer to following sections and :py:func:`tvm.instrument.pass_instrument` for th
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 24018us [24018us] (48.67%; 48.67%)
-    FoldScaleAxis: 25326us [6us] (51.33%; 51.33%)
-            FoldConstant: 25320us [1709us] (51.31%; 99.98%)
-                    InferType: 23611us [23611us] (47.85%; 93.25%)
+    InferType: 23291us [23291us] (48.71%; 48.71%)
+    FoldScaleAxis: 24529us [6us] (51.29%; 51.29%)
+            FoldConstant: 24523us [1608us] (51.28%; 99.98%)
+                    InferType: 22915us [22915us] (47.92%; 93.44%)
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
index d58f321588..495e9f2ead 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
@@ -331,7 +331,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 36.085758 ms
+    Convolution: 41.756641 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
index 6e10d31326..dcd94671d1 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
@@ -598,7 +598,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 12.268134 ms
+    conv2d with tensor core: 11.553373 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
index adb49858bb..6a27114c7d 100644
--- a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
@@ -134,8 +134,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 
  .. code-block:: none
 
-    Numpy running time: 0.019377
-    Baseline: 3.209001
+    Numpy running time: 0.014173
+    Baseline: 3.333864
 
 
 
@@ -227,7 +227,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.310524
+    Opt1: 0.289339
 
 
 
@@ -318,7 +318,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.295412
+    Opt2: 0.265132
 
 
 
@@ -406,7 +406,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.119812
+    Opt3: 0.112726
 
 
 
@@ -523,7 +523,7 @@ flattening.
 
  .. code-block:: none
 
-    Opt4: 0.108216
+    Opt4: 0.103589
 
 
 
@@ -635,7 +635,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.111956
+    Opt5: 0.097269
 
 
 
@@ -748,7 +748,7 @@ Furthermore, we can also utilize multi-core processors to do the thread-level pa
 
  .. code-block:: none
 
-    Opt6: 0.132732
+    Opt6: 0.115186
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
index 6320f5637d..2f6bb07882 100644
--- a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
@@ -5,12 +5,12 @@
 
 Computation times
 =================
-**00:34.256** total execution time for **how_to_optimize_operators** files:
+**00:31.964** total execution time for **how_to_optimize_operators** files:
 
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:30.925 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:28.804 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.959 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.861 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.373 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.300 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
index c9daed5e3a..635fef2ccc 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
@@ -5,18 +5,18 @@
 
 Computation times
 =================
-**03:45.210** total execution time for **how_to_tune_with_autoscheduler** files:
+**03:31.459** total execution time for **how_to_tune_with_autoscheduler** files:
 
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:38.264 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:31.469 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:14.862 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:10.885 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:18.528 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:17.322 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:17.120 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:16.118 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 00:16.334 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 00:15.567 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:00.102 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:00.098 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
index c366f7cb01..88257b7c33 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
@@ -766,7 +766,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.336 ms
+    Execution time of this operator: 0.340 ms
 
 
 
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
index 4b1d3268bb..69eba0e0c6 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
@@ -633,7 +633,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       3.1953       3.1954       3.1958       3.1949       0.0004                  
+       3.2063       3.2065       3.2069       3.2056       0.0005                  
 
 
 
@@ -660,7 +660,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  14.862 seconds)
+   **Total running time of the script:** ( 1 minutes  10.885 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_cuda.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
index f01694cf52..b5a3c55200 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
@@ -655,7 +655,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      755.9659     755.7582     757.9040     754.2355      1.5048                  
+      706.9694     707.8581     708.5028     704.5473      1.7328                  
 
 
 
@@ -682,7 +682,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  38.264 seconds)
+   **Total running time of the script:** ( 1 minutes  31.469 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_x86.py:
diff --git a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
index 1fea73c224..6191ce33cd 100644
--- a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:24.143** total execution time for **how_to_tune_with_autotvm** files:
+**00:22.929** total execution time for **how_to_tune_with_autotvm** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:24.106 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:22.891 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.022 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.023 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)             | 00:00.006 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)             | 00:00.005 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``) | 00:00.005 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
index 2419e8e4b1..65d3b50ae0 100644
--- a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
@@ -326,7 +326,7 @@ and measure running time.
 
     Best config:
     ,None
-    Time cost of this operator: 0.036997
+    Time cost of this operator: 0.037261
 
 
 
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
index f36632290c..30b823d217 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
@@ -360,10 +360,10 @@ Timing the untuned program
     ########## Build without Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  323.6     98.859   (1, 2, 10, 10, 3)  2       1        [323.6]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.81      0.859    (1, 6, 10, 10)     1       1        [2.81]            
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.924     0.282    (1, 1, 10, 10, 3)  1       1        [0.924]           
-    Total_time                                    -                                             327.334   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  298.9     98.766   (1, 2, 10, 10, 3)  2       1        [298.9]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.797     0.924    (1, 6, 10, 10)     1       1        [2.797]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.939     0.31     (1, 1, 10, 10, 3)  1       1        [0.939]           
+    Total_time                                    -                                             302.635   -        -                  -       -        -                 
 
 
 
@@ -428,10 +428,10 @@ Timing the tuned program
     ########## Build with Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  99.125    97.19    (1, 6, 10, 10, 1)  2       1        [99.125]          
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.926     1.888    (1, 6, 10, 10)     1       1        [1.926]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.94      0.922    (1, 1, 10, 10, 3)  1       1        [0.94]            
-    Total_time                                    -                                             101.991   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  101.3     97.468   (1, 6, 10, 10, 1)  2       1        [101.3]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.815     1.746    (1, 6, 10, 10)     1       1        [1.815]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.817     0.786    (1, 3, 10, 10, 1)  1       1        [0.817]           
+    Total_time                                    -                                             103.932   -        -                  -       -        -                 
 
 
 
@@ -439,7 +439,7 @@ Timing the tuned program
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  24.199 seconds)
+   **Total running time of the script:** ( 1 minutes  23.203 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_autotune.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
index 7713a84e11..890cf07d64 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
@@ -118,7 +118,7 @@ download a cat image and preprocess it to use as the model input.
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/ao/quantization/utils.py:310: UserWarning: must run observer before calling calculate_qparams. Returning default values.
       warnings.warn(
     Downloading: "https://download.pytorch.org/models/quantized/mobilenet_v2_qnnpack_37f702c5.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2_qnnpack_37f702c5.pth
-       0%|          | 0.00/3.42M [00:00<?, ?B/s]      61%|######    | 2.09M/3.42M [00:00<00:00, 13.0MB/s]     100%|##########| 3.42M/3.42M [00:00<00:00, 20.4MB/s]
+       0%|          | 0.00/3.42M [00:00<?, ?B/s]      61%|######    | 2.09M/3.42M [00:00<00:00, 20.9MB/s]     100%|##########| 3.42M/3.42M [00:00<00:00, 32.2MB/s]
     /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/_utils.py:314: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly.  To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
       device=storage.device,
     /workspace/python/tvm/relay/frontend/pytorch_utils.py:47: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
@@ -326,7 +326,7 @@ Look up prediction top 1 index in 1000 class synset.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  32.456 seconds)
+   **Total running time of the script:** ( 1 minutes  25.702 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_pytorch.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
index 8aab5f8c69..d462fa26d7 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
@@ -217,7 +217,7 @@ take about **2 minutes** to download the Stanford Cars, while COCO 2017 validati
  .. code-block:: none
 
 
-    '/tmp/tmp70nnat82/images/random'
+    '/tmp/tmpcdbf34dz/images/random'
 
 
 
@@ -317,8 +317,8 @@ objects to other stuff? We can display some examples from our datasets using ``m
 
  .. code-block:: none
 
-    /tmp/tmp70nnat82/images/target contains 8144 images
-    /tmp/tmp70nnat82/images/random contains 5000 images
+    /tmp/tmpcdbf34dz/images/target contains 8144 images
+    /tmp/tmpcdbf34dz/images/random contains 5000 images
 
 
 
@@ -493,13 +493,13 @@ the time on our validation set).
  .. code-block:: none
 
     Epoch 1/3
-    328/328 - 39s - loss: 0.2230 - accuracy: 0.9231 - val_loss: 0.1066 - val_accuracy: 0.9622 - 39s/epoch - 118ms/step
+    328/328 - 38s - loss: 0.2255 - accuracy: 0.9236 - val_loss: 0.1498 - val_accuracy: 0.9475 - 38s/epoch - 117ms/step
     Epoch 2/3
-    328/328 - 35s - loss: 0.0964 - accuracy: 0.9653 - val_loss: 0.1114 - val_accuracy: 0.9596 - 35s/epoch - 108ms/step
+    328/328 - 34s - loss: 0.1056 - accuracy: 0.9614 - val_loss: 0.0974 - val_accuracy: 0.9649 - 34s/epoch - 104ms/step
     Epoch 3/3
-    328/328 - 35s - loss: 0.0694 - accuracy: 0.9742 - val_loss: 0.1262 - val_accuracy: 0.9634 - 35s/epoch - 108ms/step
+    328/328 - 34s - loss: 0.0695 - accuracy: 0.9714 - val_loss: 0.1018 - val_accuracy: 0.9611 - 34s/epoch - 104ms/step
 
-    <keras.callbacks.History object at 0x7f99984b5520>
+    <keras.callbacks.History object at 0x7f3625f34640>
 
 
 
@@ -860,7 +860,7 @@ Arduino tutorial for how to do that `on GitHub <https://github.com/guberti/tvm-a
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 4 minutes  32.358 seconds)
+   **Total running time of the script:** ( 4 minutes  33.137 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_train.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
index 65bbac2fc3..441e891468 100644
--- a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
@@ -5,20 +5,20 @@
 
 Computation times
 =================
-**07:58.694** total execution time for **how_to_work_with_microtvm** files:
+**07:49.261** total execution time for **how_to_work_with_microtvm** files:
 
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)           | 04:32.358 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)           | 04:33.137 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)       | 01:32.456 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)       | 01:25.702 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)     | 01:24.199 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)     | 01:23.203 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)               | 00:12.556 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)               | 00:11.596 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_custom_ide.py` (``micro_custom_ide.py``) | 00:08.646 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_custom_ide.py` (``micro_custom_ide.py``) | 00:08.426 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)         | 00:08.479 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)         | 00:07.197 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_microtvm_micro_ethosu.py` (``micro_ethosu.py``)         | 00:00.000 | 0.0 MB |
 +-----------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
index ae0ffecee0..76a986ed9e 100644
--- a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:40.524** total execution time for **how_to_work_with_relay** files:
+**00:37.278** total execution time for **how_to_work_with_relay** files:
 
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:35.233 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:32.288 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:03.381 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:03.078 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.903 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.906 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)                 | 00:00.007 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)                 | 00:00.006 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
index 91fe5ab71f..65412af4a7 100644
--- a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
@@ -281,7 +281,7 @@ The following example customizes CUDA lowering rule for :code:`exp`.
  .. code-block:: none
 
 
-    <function my_cuda_math_rule at 0x7f9b727650d0>
+    <function my_cuda_math_rule at 0x7f36489b5940>
 
 
 
diff --git a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
index eafeaf822d..b2f58360fb 100644
--- a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
@@ -5,22 +5,22 @@
 
 Computation times
 =================
-**00:05.713** total execution time for **how_to_work_with_schedules** files:
+**00:05.350** total execution time for **how_to_work_with_schedules** files:
 
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)                 | 00:02.710 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)                 | 00:02.491 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.180 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.164 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.768 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.709 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.750 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.703 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.129 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.118 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.073 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.068 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.069 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.064 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)               | 00:00.034 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)               | 00:00.031 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
index 40ff8537b1..35c80e4cc3 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
@@ -337,7 +337,7 @@ The compilation steps are:
 
     /workspace/python/tvm/relay/build_module.py:345: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       warnings.warn(
-    yolov3-tiny inference graph built in 26.60s!
+    yolov3-tiny inference graph built in 25.60s!
 
 
 
diff --git a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
index 46c80c840f..c562780078 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,8 +5,8 @@
 
 Computation times
 =================
-**00:59.202** total execution time for **topic_vta_tutorials_frontend** files:
+**00:58.182** total execution time for **topic_vta_tutorials_frontend** files:
 
 +--------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``) | 00:59.202 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``) | 00:58.182 | 0.0 MB |
 +--------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
index bb86e48557..794ea4c69e 100644
--- a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:03.310** total execution time for **topic_vta_tutorials_optimize** files:
+**00:03.228** total execution time for **topic_vta_tutorials_optimize** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.784 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.738 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.526 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.490 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
index 122550099e..4731cbd92d 100644
--- a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:00.856** total execution time for **topic_vta_tutorials** files:
+**00:00.810** total execution time for **topic_vta_tutorials** files:
 
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.443 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.418 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.413 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.392 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
index 06986d3033..a87dbc7352 100644
--- a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
@@ -318,7 +318,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 96.671 ms
+    Execution time of this operator: 90.297 ms
 
 
 
@@ -434,7 +434,7 @@ operations.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  22.350 seconds)
+   **Total running time of the script:** ( 1 minutes  26.845 seconds)
 
 
 .. _sphx_glr_download_tutorial_auto_scheduler_matmul_x86.py:
diff --git a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
index 1d8f0a5301..5caebd13d2 100644
--- a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
@@ -454,16 +454,16 @@ reduce variance, we take 5 measurements and average them.
     waiting for device...
     device available
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 12.71/12.71     result: MeasureResult(costs=(0.0211143846,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6849653720855713, timestamp=1711377237.4038525)       [('tile_y', [-1, 1]), ('tile_x', [-1, 64])],None,60
-    No: 2   GFLOPS: 11.03/12.71     result: MeasureResult(costs=(0.0243468046,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6569178104400635, timestamp=1711377238.060961)        [('tile_y', [-1, 2]), ('tile_x', [-1, 512])],None,91
-    No: 3   GFLOPS: 10.64/12.71     result: MeasureResult(costs=(0.025225627,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7338004112243652, timestamp=1711377238.7344112)        [('tile_y', [-1, 512]), ('tile_x', [-1, 128])],None,79
-    No: 4   GFLOPS: 5.54/12.71      result: MeasureResult(costs=(0.0484323648,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.0331470966339111, timestamp=1711377239.7716644)       [('tile_y', [-1, 1]), ('tile_x', [-1, 4])],None,20
-    No: 5   GFLOPS: 11.05/12.71     result: MeasureResult(costs=(0.024284726599999997,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6592066287994385, timestamp=1711377240.5697815)       [('tile_y', [-1, 4]), ('tile_x', [-1, 512])],None,92
-    No: 6   GFLOPS: 7.15/12.71      result: MeasureResult(costs=(0.0375390826,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.8935387134552002, timestamp=1711377241.4342897)       [('tile_y', [-1, 32]), ('tile_x', [-1, 16])],None,45
-    No: 7   GFLOPS: 3.61/12.71      result: MeasureResult(costs=(0.0742691632,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.4695651531219482, timestamp=1711377242.886847)        [('tile_y', [-1, 256]), ('tile_x', [-1, 8])],None,38
-    No: 8   GFLOPS: 10.12/12.71     result: MeasureResult(costs=(0.0265151678,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.699089527130127, timestamp=1711377243.5744827)        [('tile_y', [-1, 2]), ('tile_x', [-1, 32])],None,51
-    No: 9   GFLOPS: 11.00/12.71     result: MeasureResult(costs=(0.0243939912,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6178884506225586, timestamp=1711377244.3256378)       [('tile_y', [-1, 32]), ('tile_x', [-1, 512])],None,95
-    No: 10  GFLOPS: 8.08/12.71      result: MeasureResult(costs=(0.033225121,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7794101238250732, timestamp=1711377245.1210167)        [('tile_y', [-1, 8]), ('tile_x', [-1, 4])],None,23
+    No: 1   GFLOPS: 15.21/15.21     result: MeasureResult(costs=(0.0176487176,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.8112664222717285, timestamp=1711412854.174332)        [('tile_y', [-1, 64]), ('tile_x', [-1, 64])],None,66
+    No: 2   GFLOPS: 0.49/15.21      result: MeasureResult(costs=(0.5473304694000001,), error_no=MeasureErrorNo.NO_ERROR, all_cost=8.998860359191895, timestamp=1711412863.1878605)  [('tile_y', [-1, 512]), ('tile_x', [-1, 1])],None,9
+    No: 3   GFLOPS: 9.03/15.21      result: MeasureResult(costs=(0.0297315732,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.7357842922210693, timestamp=1711412863.9135172)       [('tile_y', [-1, 2]), ('tile_x', [-1, 64])],None,61
+    No: 4   GFLOPS: 10.49/15.21     result: MeasureResult(costs=(0.0256010866,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6572360992431641, timestamp=1711412864.5746505)       [('tile_y', [-1, 2]), ('tile_x', [-1, 32])],None,51
+    No: 5   GFLOPS: 10.21/15.21     result: MeasureResult(costs=(0.026284070600000004,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.8004286289215088, timestamp=1711412865.4857905)       [('tile_y', [-1, 2]), ('tile_x', [-1, 128])],None,71
+    No: 6   GFLOPS: 5.30/15.21      result: MeasureResult(costs=(0.050693976200000004,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.0584945678710938, timestamp=1711412866.5519757)       [('tile_y', [-1, 1]), ('tile_x', [-1, 4])],None,20
+    No: 7   GFLOPS: 12.13/15.21     result: MeasureResult(costs=(0.0221238458,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6365554332733154, timestamp=1711412867.155255)        [('tile_y', [-1, 32]), ('tile_x', [-1, 32])],None,55
+    No: 8   GFLOPS: 14.20/15.21     result: MeasureResult(costs=(0.018908204,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6061372756958008, timestamp=1711412867.7113252)        [('tile_y', [-1, 128]), ('tile_x', [-1, 64])],None,67
+    No: 9   GFLOPS: 3.78/15.21      result: MeasureResult(costs=(0.07108949099999999,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.3624863624572754, timestamp=1711412869.1839068)        [('tile_y', [-1, 64]), ('tile_x', [-1, 8])],None,36
+    No: 10  GFLOPS: 11.55/15.21     result: MeasureResult(costs=(0.0232429458,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5932090282440186, timestamp=1711412869.8090227)       [('tile_y', [-1, 256]), ('tile_x', [-1, 32])],None,58
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
index 8aaa72561d..352bb8a4a1 100644
--- a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
@@ -311,7 +311,7 @@ standard deviation.
 
  .. code-block:: none
 
-    {'mean': 500.03113871003734, 'median': 499.87854545006485, 'std': 1.8908746993241885}
+    {'mean': 467.955818890041, 'median': 467.91639319962997, 'std': 2.0992307479877996}
 
 
 
@@ -582,29 +582,31 @@ the tuning data to.
 
  .. code-block:: none
 
-     [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  1/25]  Current/Best:   15.24/  19.56 GFLOPS | Progress: (4/20) | 8.27 s     [Task  1/25]  Current/Best:    8.31/  20.48 GFLOPS | Progress: (8/20) | 11.44 s     [Task  1/25]  Current/Best:   12.69/  20.48 GFLOPS | Progress: (12/20) | 15.27 s     [Task  1/25]  Current/Best:    8.56/  20.48 GFLOPS | Progress: (16/20) | 19.01 s     [Task  1/25]  Current/Best:   12.61/  20.48 GFLOPS | Progress: (20/20) | 21.41 s Done.
-     [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  2/25]  Current/Best:   15.01/  15.01 GFLOPS | Progress: (4/20) | 4.14 s     [Task  2/25]  Current/Best:   18.87/  18.87 GFLOPS | Progress: (8/20) | 5.99 s     [Task  2/25]  Current/Best:    5.54/  20.51 GFLOPS | Progress: (12/20) | 7.47 s     [Task  2/25]  Current/Best:   16.86/  20.51 GFLOPS | Progress: (16/20) | 9.08 s     [Task  2/25]  Current/Best:   18.40/  20.51 GFLOPS | Progress: (20/20) | 10.71 s Done.
-     [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  3/25]  Current/Best:    7.74/  13.19 GFLOPS | Progress: (4/20) | 5.35 s     [Task  3/25]  Current/Best:    6.89/  21.09 GFLOPS | Progress: (8/20) | 7.71 s     [Task  3/25]  Current/Best:   11.97/  21.32 GFLOPS | Progress: (12/20) | 10.28 s     [Task  3/25]  Current/Best:    7.68/  21.32 GFLOPS | Progress: (16/20) | 14.26 s     [Task  3/25]  Current/Best:    6.92/  21.32 GFLOPS | Progress: (20/20) | 17.05 s Done.
-     [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  4/25]  Current/Best:   13.91/  17.84 GFLOPS | Progress: (4/20) | 8.73 s     [Task  4/25]  Current/Best:   10.45/  17.84 GFLOPS | Progress: (8/20) | 11.08 s     [Task  4/25]  Current/Best:   11.08/  17.84 GFLOPS | Progress: (12/20) | 17.18 s     [Task  4/25]  Current/Best:   21.20/  21.20 GFLOPS | Progress: (16/20) | 19.27 s     [Task  4/25]  Current/Best:   16.75/  21.20 GFLOPS | Progress: (20/20) | 21.39 s Done.
-     [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  5/25]  Current/Best:    5.63/  15.22 GFLOPS | Progress: (4/20) | 4.98 s     [Task  5/25]  Current/Best:    7.45/  15.22 GFLOPS | Progress: (8/20) | 6.85 s     [Task  5/25]  Current/Best:   15.03/  16.87 GFLOPS | Progress: (12/20) | 8.94 s     [Task  5/25]  Current/Best:   11.33/  18.83 GFLOPS | Progress: (16/20) | 11.83 s     [Task  5/25]  Current/Best:    5.80/  18.83 GFLOPS | Progress: (20/20) | 13.91 s Done.
-     [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  6/25]  Current/Best:   17.69/  17.69 GFLOPS | Progress: (4/20) | 7.56 s     [Task  6/25]  Current/Best:    3.93/  17.69 GFLOPS | Progress: (8/20) | 11.53 s     [Task  6/25]  Current/Best:   15.65/  17.69 GFLOPS | Progress: (12/20) | 13.56 s     [Task  6/25]  Current/Best:    5.42/  17.69 GFLOPS | Progress: (16/20) | 15.73 s     [Task  6/25]  Current/Best:    5.80/  21.25 GFLOPS | Progress: (20/20) | 18.40 s Done.
-     [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  7/25]  Current/Best:   18.13/  18.13 GFLOPS | Progress: (4/20) | 4.97 s     [Task  7/25]  Current/Best:   19.67/  19.67 GFLOPS | Progress: (8/20) | 7.40 s     [Task  7/25]  Current/Best:   12.38/  19.67 GFLOPS | Progress: (12/20) | 9.63 s     [Task  7/25]  Current/Best:   20.87/  20.87 GFLOPS | Progress: (16/20) | 11.87 s     [Task  7/25]  Current/Best:   14.85/  20.87 GFLOPS | Progress: (20/20) | 14.62 s Done.
-     [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  8/25]  Current/Best:    8.37/  16.23 GFLOPS | Progress: (4/20) | 11.32 s     [Task  8/25]  Current/Best:    3.03/  16.23 GFLOPS | Progress: (8/20) | 14.46 s     [Task  8/25]  Current/Best:    3.86/  19.31 GFLOPS | Progress: (12/20) | 16.92 s     [Task  8/25]  Current/Best:    2.78/  19.31 GFLOPS | Progress: (16/20) | 20.22 s     [Task  8/25]  Current/Best:   13.03/  19.31 GFLOPS | Progress: (20/20) | 32.98 s Done.
-     [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  9/25]  Current/Best:   20.71/  20.71 GFLOPS | Progress: (4/20) | 6.32 s     [Task  9/25]  Current/Best:   17.25/  20.71 GFLOPS | Progress: (8/20) | 10.99 s     [Task  9/25]  Current/Best:   20.84/  20.84 GFLOPS | Progress: (12/20) | 13.20 s     [Task  9/25]  Current/Best:   14.28/  20.84 GFLOPS | Progress: (16/20) | 14.99 s     [Task  9/25]  Current/Best:    7.67/  20.84 GFLOPS | Progress: (20/20) | 25.83 s Done.
-     [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 10/25]  Current/Best:   13.53/  18.42 GFLOPS | Progress: (4/20) | 4.93 s     [Task 10/25]  Current/Best:   13.33/  18.42 GFLOPS | Progress: (8/20) | 6.69 s     [Task 10/25]  Current/Best:   14.32/  19.35 GFLOPS | Progress: (12/20) | 8.81 s     [Task 10/25]  Current/Best:   14.92/  19.35 GFLOPS | Progress: (16/20) | 10.83 s     [Task 10/25]  Current/Best:   18.20/  19.35 GFLOPS | Progress: (20/20) | 12.72 s Done.
-     [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 11/25]  Current/Best:   11.73/  18.96 GFLOPS | Progress: (4/20) | 6.35 s     [Task 11/25]  Current/Best:   14.77/  19.62 GFLOPS | Progress: (8/20) | 8.45 s     [Task 11/25]  Current/Best:   11.83/  19.73 GFLOPS | Progress: (12/20) | 10.64 s     [Task 11/25]  Current/Best:   11.51/  19.73 GFLOPS | Progress: (16/20) | 13.27 s     [Task 11/25]  Current/Best:    9.93/  19.73 GFLOPS | Progress: (20/20) | 16.40 s Done.
-     [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 12/25]  Current/Best:   14.86/  14.86 GFLOPS | Progress: (4/20) | 5.10 s     [Task 12/25]  Current/Best:   11.86/  14.86 GFLOPS | Progress: (8/20) | 8.10 s     [Task 12/25]  Current/Best:   14.29/  20.27 GFLOPS | Progress: (12/20) | 10.55 s     [Task 12/25]  Current/Best:   12.91/  20.81 GFLOPS | Progress: (16/20) | 14.12 s     [Task 12/25]  Current/Best:   11.29/  20.81 GFLOPS | Progress: (20/20) | 21.97 s Done.
-     [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 13/25]  Current/Best:    9.33/  13.82 GFLOPS | Progress: (4/20) | 6.47 s     [Task 13/25]  Current/Best:   14.10/  16.76 GFLOPS | Progress: (8/20) | 9.40 s     [Task 13/25]  Current/Best:   11.05/  21.11 GFLOPS | Progress: (12/20) | 12.61 s     [Task 13/25]  Current/Best:   12.53/  21.11 GFLOPS | Progress: (16/20) | 14.88 s     [Task 13/25]  Current/Best:   19.58/  22.74 GFLOPS | Progress: (20/20) | 17.10 s Done.
-     [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 14/25]  Current/Best:    9.18/  13.59 GFLOPS | Progress: (4/20) | 14.37 s     [Task 14/25]  Current/Best:    3.05/  13.59 GFLOPS | Progress: (8/20) | 18.30 s     [Task 14/25]  Current/Best:    9.64/  15.11 GFLOPS | Progress: (12/20) | 20.43 s     [Task 14/25]  Current/Best:   20.51/  20.51 GFLOPS | Progress: (16/20) | 23.60 s     [Task 14/25]  Current/Best:   16.78/  20.51 GFLOPS | Progress: (20/20) | 32.89 s     [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 15/25]  Current/Best:   16.27/  16.27 GFLOPS | Progress: (4/20) | 13.88 s     [Task 15/25]  Current/Best:    7.99/  17.73 GFLOPS | Progress: (8/20) | 19.38 s     [Task 15/25]  Current/Best:   14.74/  18.63 GFLOPS | Progress: (12/20) | 23.05 s     [Task 15/25]  Current/Best:   16.25/  18.63 GFLOPS | Progress: (16/20) | 29.85 s     [Task 15/25]  Current/Best:   22.92/  22.92 GFLOPS | Progress: (2
 0/20) | 31.38 s     [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 16/25]  Current/Best:    7.76/  14.48 GFLOPS | Progress: (4/20) | 4.72 s     [Task 16/25]  Current/Best:   17.73/  17.73 GFLOPS | Progress: (8/20) | 6.40 s     [Task 16/25]  Current/Best:   14.12/  17.73 GFLOPS | Progress: (12/20) | 9.17 s     [Task 16/25]  Current/Best:   14.35/  20.46 GFLOPS | Progress: (16/20) | 11.05 s     [Task 16/25]  Current/Best:   11.88/  20.46 GFLOPS | Progress: (20/20) | 14.43 s Done.
-     [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 17/25]  Current/Best:   12.27/  20.54 GFLOPS | Progress: (4/20) | 5.69 s     [Task 17/25]  Current/Best:   18.93/  21.61 GFLOPS | Progress: (8/20) | 7.93 s Done.
+     [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  1/25]  Current/Best:   14.18/  24.64 GFLOPS | Progress: (4/20) | 8.01 s     [Task  1/25]  Current/Best:   15.33/  24.64 GFLOPS | Progress: (8/20) | 10.65 s     [Task  1/25]  Current/Best:    1.99/  24.64 GFLOPS | Progress: (12/20) | 13.96 s     [Task  1/25]  Current/Best:   21.62/  24.64 GFLOPS | Progress: (16/20) | 17.18 s     [Task  1/25]  Current/Best:   18.84/  24.64 GFLOPS | Progress: (20/20) | 20.47 s Done.
+     [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  2/25]  Current/Best:   12.43/  19.32 GFLOPS | Progress: (4/20) | 3.88 s     [Task  2/25]  Current/Best:    6.66/  19.32 GFLOPS | Progress: (8/20) | 5.35 s     [Task  2/25]  Current/Best:   15.87/  20.41 GFLOPS | Progress: (12/20) | 6.85 s     [Task  2/25]  Current/Best:    5.95/  20.41 GFLOPS | Progress: (16/20) | 8.39 s     [Task  2/25]  Current/Best:    6.33/  20.41 GFLOPS | Progress: (20/20) | 9.88 s Done.
+     [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  3/25]  Current/Best:    6.26/  22.23 GFLOPS | Progress: (4/20) | 4.76 s     [Task  3/25]  Current/Best:   14.43/  22.23 GFLOPS | Progress: (8/20) | 7.78 s     [Task  3/25]  Current/Best:    6.44/  22.23 GFLOPS | Progress: (12/20) | 10.14 s     [Task  3/25]  Current/Best:   10.26/  22.23 GFLOPS | Progress: (16/20) | 12.97 s     [Task  3/25]  Current/Best:   24.12/  24.12 GFLOPS | Progress: (20/20) | 15.50 s Done.
+     [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  4/25]  Current/Best:   17.46/  17.46 GFLOPS | Progress: (4/20) | 4.66 s     [Task  4/25]  Current/Best:   14.67/  17.95 GFLOPS | Progress: (8/20) | 8.28 s     [Task  4/25]  Current/Best:   12.90/  17.95 GFLOPS | Progress: (12/20) | 14.08 s     [Task  4/25]  Current/Best:   13.11/  17.95 GFLOPS | Progress: (16/20) | 15.99 s     [Task  4/25]  Current/Best:    6.82/  19.59 GFLOPS | Progress: (20/20) | 17.88 s Done.
+     [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  5/25]  Current/Best:    3.84/  16.18 GFLOPS | Progress: (4/20) | 4.85 s     [Task  5/25]  Current/Best:    4.69/  23.00 GFLOPS | Progress: (8/20) | 7.61 s     [Task  5/25]  Current/Best:    5.78/  23.00 GFLOPS | Progress: (12/20) | 9.80 s     [Task  5/25]  Current/Best:   11.79/  23.00 GFLOPS | Progress: (16/20) | 11.56 s     [Task  5/25]  Current/Best:   14.70/  23.00 GFLOPS | Progress: (20/20) | 14.02 s Done.
+     [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  6/25]  Current/Best:    9.17/  14.67 GFLOPS | Progress: (4/20) | 4.97 s     [Task  6/25]  Current/Best:   10.90/  14.67 GFLOPS | Progress: (8/20) | 8.11 s     [Task  6/25]  Current/Best:   15.28/  23.17 GFLOPS | Progress: (12/20) | 10.61 s     [Task  6/25]  Current/Best:   10.95/  23.17 GFLOPS | Progress: (16/20) | 13.15 s     [Task  6/25]  Current/Best:   16.65/  23.17 GFLOPS | Progress: (20/20) | 16.23 s Done.
+     [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  7/25]  Current/Best:   14.52/  16.10 GFLOPS | Progress: (4/20) | 5.53 s     [Task  7/25]  Current/Best:   17.27/  17.27 GFLOPS | Progress: (8/20) | 8.01 s     [Task  7/25]  Current/Best:   16.50/  21.16 GFLOPS | Progress: (12/20) | 10.01 s     [Task  7/25]  Current/Best:   19.05/  21.16 GFLOPS | Progress: (16/20) | 12.21 s     [Task  7/25]  Current/Best:    1.64/  21.16 GFLOPS | Progress: (20/20) | 16.43 s Done.
+     [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  8/25]  Current/Best:    9.85/  20.07 GFLOPS | Progress: (4/20) | 7.70 s     [Task  8/25]  Current/Best:   10.51/  20.07 GFLOPS | Progress: (8/20) | 11.44 s     [Task  8/25]  Current/Best:   16.17/  20.07 GFLOPS | Progress: (12/20) | 14.28 s     [Task  8/25]  Current/Best:   15.84/  20.07 GFLOPS | Progress: (16/20) | 25.89 s     [Task  8/25]  Current/Best:    8.88/  20.07 GFLOPS | Progress: (20/20) | 37.36 s     [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task  9/25]  Current/Best:   13.23/  13.23 GFLOPS | Progress: (4/20) | 10.62 s     [Task  9/25]  Current/Best:   17.10/  18.09 GFLOPS | Progress: (8/20) | 12.53 s     [Task  9/25]  Current/Best:    6.48/  18.09 GFLOPS | Progress: (12/20) | 15.66 s     [Task  9/25]  Current/Best:    8.61/  18.09 GFLOPS | Progress: (16/20) | 19.16 s     [Task  9/25]  Current/Best:   16.39/  22.07 GFLOPS | Progress: (20
 /20) | 22.20 s Done.
+     [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 10/25]  Current/Best:   16.54/  19.27 GFLOPS | Progress: (4/20) | 4.68 s     [Task 10/25]  Current/Best:   17.03/  20.06 GFLOPS | Progress: (8/20) | 6.40 s     [Task 10/25]  Current/Best:    5.66/  20.06 GFLOPS | Progress: (12/20) | 9.04 s     [Task 10/25]  Current/Best:    6.53/  20.06 GFLOPS | Progress: (16/20) | 10.83 s     [Task 10/25]  Current/Best:   11.91/  20.13 GFLOPS | Progress: (20/20) | 12.96 s Done.
+     [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 11/25]  Current/Best:    5.71/  18.52 GFLOPS | Progress: (4/20) | 5.14 s     [Task 11/25]  Current/Best:    7.92/  22.89 GFLOPS | Progress: (8/20) | 7.43 s     [Task 11/25]  Current/Best:   24.12/  24.12 GFLOPS | Progress: (12/20) | 9.58 s     [Task 11/25]  Current/Best:   11.35/  24.12 GFLOPS | Progress: (16/20) | 11.82 s     [Task 11/25]  Current/Best:   15.14/  25.00 GFLOPS | Progress: (20/20) | 13.73 s Done.
+     [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 12/25]  Current/Best:   18.72/  18.72 GFLOPS | Progress: (4/20) | 4.69 s     [Task 12/25]  Current/Best:   15.72/  18.72 GFLOPS | Progress: (8/20) | 7.73 s     [Task 12/25]  Current/Best:   11.33/  18.79 GFLOPS | Progress: (12/20) | 11.29 s     [Task 12/25]  Current/Best:    8.35/  19.06 GFLOPS | Progress: (16/20) | 14.17 s     [Task 12/25]  Current/Best:   16.08/  19.06 GFLOPS | Progress: (20/20) | 16.37 s Done.
+     [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 13/25]  Current/Best:   11.89/  21.79 GFLOPS | Progress: (4/20) | 5.14 s     [Task 13/25]  Current/Best:   21.41/  21.79 GFLOPS | Progress: (8/20) | 7.40 s     [Task 13/25]  Current/Best:   20.71/  21.79 GFLOPS | Progress: (12/20) | 10.02 s     [Task 13/25]  Current/Best:   13.70/  21.79 GFLOPS | Progress: (16/20) | 12.66 s     [Task 13/25]  Current/Best:   11.71/  22.42 GFLOPS | Progress: (20/20) | 16.06 s Done.
+     [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 14/25]  Current/Best:    6.74/  13.97 GFLOPS | Progress: (4/20) | 4.69 s     [Task 14/25]  Current/Best:   16.18/  16.18 GFLOPS | Progress: (8/20) | 7.18 s     [Task 14/25]  Current/Best:    6.49/  19.67 GFLOPS | Progress: (12/20) | 9.53 s     [Task 14/25]  Current/Best:   10.81/  19.67 GFLOPS | Progress: (16/20) | 12.16 s     [Task 14/25]  Current/Best:   12.36/  19.69 GFLOPS | Progress: (20/20) | 14.84 s Done.
+     [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 15/25]  Current/Best:   15.75/  19.26 GFLOPS | Progress: (4/20) | 10.07 s     [Task 15/25]  Current/Best:    6.73/  21.42 GFLOPS | Progress: (8/20) | 11.78 s     [Task 15/25]  Current/Best:   17.03/  21.65 GFLOPS | Progress: (12/20) | 13.87 s     [Task 15/25]  Current/Best:   10.10/  21.65 GFLOPS | Progress: (16/20) | 15.92 s     [Task 15/25]  Current/Best:   11.28/  21.65 GFLOPS | Progress: (20/20) | 21.13 s Done.
+     [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 16/25]  Current/Best:   16.75/  16.75 GFLOPS | Progress: (4/20) | 5.73 s     [Task 16/25]  Current/Best:   12.63/  17.56 GFLOPS | Progress: (8/20) | 7.80 s     [Task 16/25]  Current/Best:   14.30/  21.42 GFLOPS | Progress: (12/20) | 9.60 s     [Task 16/25]  Current/Best:   14.86/  22.19 GFLOPS | Progress: (16/20) | 11.21 s     [Task 16/25]  Current/Best:   18.43/  22.19 GFLOPS | Progress: (20/20) | 12.75 s Done.
+     [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 17/25]  Current/Best:   24.33/  24.33 GFLOPS | Progress: (4/20) | 5.26 s     [Task 17/25]  Current/Best:   16.95/  24.59 GFLOPS | Progress: (8/20) | 7.70 s     [Task 17/25]  Current/Best:   14.63/  24.59 GFLOPS | Progress: (12/20) | 10.58 s     [Task 17/25]  Current/Best:   18.15/  24.59 GFLOPS | Progress: (16/20) | 14.15 s     [Task 17/25]  Current/Best:   22.57/  24.59 GFLOPS | Progress: (20/20) | 16.47 s Done.
+     [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 18/25]  Current/Best:   19.11/  21.18 GFLOPS | Progress: (4/20) | 8.41 s     [Task 18/25]  Current/Best:   17.62/  21.18 GFLOPS | Progress: (8/20) | 11.99 s     [Task 18/25]  Current/Best:   14.57/  21.18 GFLOPS | Progress: (12/20) | 15.97 s     [Task 18/25]  Current/Best:    6.71/  21.18 GFLOPS | Progress: (16/20) | 19.23 s     [Task 18/25]  Current/Best:   18.54/  21.18 GFLOPS | Progress: (20/20) | 21.42 s Done.
+     [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 19/25]  Current/Best:   12.63/  20.53 GFLOPS | Progress: (4/20) | 5.30 s     [Task 19/25]  Current/Best:   14.30/  20.53 GFLOPS | Progress: (8/20) | 8.85 s     [Task 19/25]  Current/Best:   17.98/  20.53 GFLOPS | Progress: (12/20) | 12.13 s     [Task 19/25]  Current/Best:   17.57/  20.53 GFLOPS | Progress: (16/20) | 16.13 s     [Task 19/25]  Current/Best:   19.30/  20.53 GFLOPS | Progress: (20/20) | 20.67 s Done.
+     [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 20/25]  Current/Best:    9.86/  11.26 GFLOPS | Progress: (4/20) | 14.21 s Done.
+     [Task 20/25]  Current/Best:    7.06/  12.28 GFLOPS | Progress: (8/20) | 26.34 s     [Task 20/25]  Current/Best:    9.60/  12.28 GFLOPS | Progress: (12/20) | 33.97 s     [Task 20/25]  Current/Best:   22.34/  22.34 GFLOPS | Progress: (16/20) | 42.74 s     [Task 20/25]  Current/Best:    7.87/  22.34 GFLOPS | Progress: (20/20) | 47.37 s Done.
+     [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 21/25]  Current/Best:   10.83/  11.31 GFLOPS | Progress: (4/20) | 5.08 s     [Task 21/25]  Current/Best:   18.43/  19.25 GFLOPS | Progress: (8/20) | 12.74 s     [Task 21/25]  Current/Best:   19.78/  19.78 GFLOPS | Progress: (12/20) | 18.74 s     [Task 21/25]  Current/Best:    8.96/  19.78 GFLOPS | Progress: (16/20) | 29.43 s     [Task 21/25]  Current/Best:   17.06/  22.49 GFLOPS | Progress: (20/20) | 31.15 s Done.
+     [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 22/25]  Current/Best:    5.32/  15.40 GFLOPS | Progress: (4/20) | 4.65 s     [Task 22/25]  Current/Best:    6.90/  18.61 GFLOPS | Progress: (8/20) | 8.96 s     [Task 22/25]  Current/Best:   18.89/  19.29 GFLOPS | Progress: (12/20) | 10.93 s     [Task 22/25]  Current/Best:    2.71/  22.65 GFLOPS | Progress: (16/20) | 22.32 s     [Task 22/25]  Current/Best:    6.40/  22.65 GFLOPS | Progress: (20/20) | 25.16 s     [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 23/25]  Current/Best:   13.12/  13.34 GFLOPS | Progress: (4/20) | 6.25 s     [Task 23/25]  Current/Best:   14.51/  20.07 GFLOPS | Progress: (8/20) | 11.15 s     [Task 23/25]  Current/Best:    3.19/  20.07 GFLOPS | Progress: (12/20) | 14.28 s     [Task 23/25]  Current/Best:    5.52/  20.07 GFLOPS | Progress: (16/20) | 17.48 s     [Task 23/25]  Current/Best:   24.44/  24.44 GFLOPS | Progress: (20/2
 0) | 19.66 s Done.
+     [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 24/25]  Current/Best:    3.81/   3.94 GFLOPS | Progress: (4/20) | 6.42 s     [Task 24/25]  Current/Best:   10.86/  10.86 GFLOPS | Progress: (8/20) | 17.42 s     [Task 24/25]  Current/Best:    7.65/  10.86 GFLOPS | Progress: (12/20) | 22.40 s     [Task 24/25]  Current/Best:    1.15/  10.86 GFLOPS | Progress: (16/20) | 33.37 s     [Task 24/25]  Current/Best:    3.92/  10.86 GFLOPS | Progress: (20/20) | 40.82 s     [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 25/25]  Current/Best:    4.36/   9.72 GFLOPS | Progress: (4/20) | 5.18 s     [Task 25/25]  Current/Best:    4.38/   9.72 GFLOPS | Progress: (8/20) | 7.21 s     [Task 25/25]  Current/Best:    3.03/   9.72 GFLOPS | Progress: (12/20) | 18.17 s     [Task 25/25]  Current/Best:    7.42/   9.72 GFLOPS | Progress: (16/20) | 30.52 s Done.
      Done.
-     [Task 17/25]  Current/Best:    6.13/  21.61 GFLOPS | Progress: (12/20) | 11.78 s     [Task 17/25]  Current/Best:   19.08/  21.61 GFLOPS | Progress: (16/20) | 14.36 s     [Task 17/25]  Current/Best:   10.25/  21.61 GFLOPS | Progress: (20/20) | 17.01 s Done.
-     [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 18/25]  Current/Best:   19.27/  19.27 GFLOPS | Progress: (4/20) | 4.75 s     [Task 18/25]  Current/Best:   11.85/  21.25 GFLOPS | Progress: (8/20) | 10.07 s     [Task 18/25]  Current/Best:   16.41/  21.25 GFLOPS | Progress: (12/20) | 12.13 s     [Task 18/25]  Current/Best:   12.44/  21.25 GFLOPS | Progress: (16/20) | 14.63 s     [Task 18/25]  Current/Best:    9.46/  21.25 GFLOPS | Progress: (20/20) | 18.86 s Done.
-     [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 19/25]  Current/Best:   17.98/  17.98 GFLOPS | Progress: (4/20) | 7.78 s     [Task 19/25]  Current/Best:    9.74/  17.98 GFLOPS | Progress: (8/20) | 12.01 s     [Task 19/25]  Current/Best:   18.35/  19.42 GFLOPS | Progress: (12/20) | 14.74 s     [Task 19/25]  Current/Best:   11.04/  19.42 GFLOPS | Progress: (16/20) | 17.46 s     [Task 19/25]  Current/Best:   10.41/  21.02 GFLOPS | Progress: (20/20) | 23.04 s Done.
-     [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 20/25]  Current/Best:    6.88/  14.91 GFLOPS | Progress: (4/20) | 5.45 s     [Task 20/25]  Current/Best:    5.92/  14.91 GFLOPS | Progress: (8/20) | 12.84 s     [Task 20/25]  Current/Best:    7.18/  18.44 GFLOPS | Progress: (12/20) | 21.11 s     [Task 20/25]  Current/Best:    8.50/  18.45 GFLOPS | Progress: (16/20) | 27.49 s     [Task 20/25]  Current/Best:   10.94/  18.45 GFLOPS | Progress: (20/20) | 29.92 s Done.
-     [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 21/25]  Current/Best:    6.13/  13.78 GFLOPS | Progress: (4/20) | 14.13 s     [Task 21/25]  Current/Best:    4.97/  14.25 GFLOPS | Progress: (8/20) | 25.42 s     [Task 21/25]  Current/Best:   12.79/  14.25 GFLOPS | Progress: (12/20) | 28.83 s     [Task 21/25]  Current/Best:   11.77/  17.79 GFLOPS | Progress: (16/20) | 30.52 s     [Task 21/25]  Current/Best:    9.96/  17.79 GFLOPS | Progress: (20/20) | 33.07 s     [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 22/25]  Current/Best:   10.46/  18.49 GFLOPS | Progress: (4/20) | 5.13 s     [Task 22/25]  Current/Best:   11.26/  18.49 GFLOPS | Progress: (8/20) | 7.86 s     [Task 22/25]  Current/Best:   18.93/  18.93 GFLOPS | Progress: (12/20) | 9.83 s     [Task 22/25]  Current/Best:   10.18/  18.93 GFLOPS | Progress: (16/20) | 12.24 s     [Task 22/25]  Current/Best:   17.37/  18.93 GFLOPS | Progress: (20/2
 0) | 14.19 s Done.
-     [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 23/25]  Current/Best:    5.06/  18.20 GFLOPS | Progress: (4/20) | 5.61 s     [Task 23/25]  Current/Best:    5.34/  20.88 GFLOPS | Progress: (8/20) | 9.28 s     [Task 23/25]  Current/Best:   10.56/  21.22 GFLOPS | Progress: (12/20) | 13.74 s     [Task 23/25]  Current/Best:    3.08/  21.22 GFLOPS | Progress: (16/20) | 16.55 s     [Task 23/25]  Current/Best:   12.73/  21.22 GFLOPS | Progress: (20/20) | 18.82 s Done.
-     [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 24/25]  Current/Best:    6.03/   6.03 GFLOPS | Progress: (4/20) | 6.23 s     [Task 24/25]  Current/Best:    3.01/   6.03 GFLOPS | Progress: (8/20) | 16.42 s     [Task 24/25]  Current/Best:    9.70/   9.70 GFLOPS | Progress: (12/20) | 22.81 s     [Task 24/25]  Current/Best:    9.56/   9.70 GFLOPS | Progress: (16/20) | 33.52 s     [Task 24/25]  Current/Best:    5.82/   9.70 GFLOPS | Progress: (20/20) | 44.53 s     [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s     [Task 25/25]  Current/Best:    1.53/   8.56 GFLOPS | Progress: (4/20) | 12.54 s     [Task 25/25]  Current/Best:    1.53/   8.70 GFLOPS | Progress: (8/20) | 17.62 s     [Task 25/25]  Current/Best:    7.38/   8.88 GFLOPS | Progress: (12/20) | 28.43 s     [Task 25/25]  Current/Best:    1.55/   9.07 GFLOPS | Progress: (16/20) | 30.73 s     [Task 25/25]  Current/Best:    4.09/   9.07 GFLOPS | Progress: (20
 /20) | 32.22 s Done.
+     [Task 25/25]  Current/Best:    7.02/  10.36 GFLOPS | Progress: (20/20) | 42.55 s Done.
 
 
 
@@ -669,13 +671,6 @@ model using optimized operators to speed up our computations.
 
 
 
-.. rst-class:: sphx-glr-script-out
-
- .. code-block:: none
-
-     Done.
-     Done.
-
 
 
 
@@ -708,8 +703,8 @@ Verify that the optimized model runs and produces the same results:
 
  .. code-block:: none
 
-    class='n02123045 tabby, tabby cat' with probability=0.621104
-    class='n02123159 tiger cat' with probability=0.356378
+    class='n02123045 tabby, tabby cat' with probability=0.621105
+    class='n02123159 tiger cat' with probability=0.356377
     class='n02124075 Egyptian cat' with probability=0.019712
     class='n02129604 tiger, Panthera tigris' with probability=0.001215
     class='n04040759 radiator' with probability=0.000262
@@ -766,8 +761,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 422.51470897001127, 'median': 421.35716734992457, 'std': 2.9735225423039346}
-    unoptimized: {'mean': 500.03113871003734, 'median': 499.87854545006485, 'std': 1.8908746993241885}
+    optimized: {'mean': 374.1590725099377, 'median': 374.5468540000729, 'std': 2.9968354374994246}
+    unoptimized: {'mean': 467.955818890041, 'median': 467.91639319962997, 'std': 2.0992307479877996}
 
 
 
@@ -790,7 +785,7 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 13 minutes  35.096 seconds)
+   **Total running time of the script:** ( 13 minutes  3.760 seconds)
 
 
 .. _sphx_glr_download_tutorial_autotvm_relay_x86.py:
diff --git a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
index 1bda17275d..76673b35f8 100644
--- a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
@@ -274,7 +274,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.2e-07 secs/op
+    1.152e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorial/intro_topi.rst.txt b/docs/_sources/tutorial/intro_topi.rst.txt
index 99a98a026f..4f9b97c57a 100644
--- a/docs/_sources/tutorial/intro_topi.rst.txt
+++ b/docs/_sources/tutorial/intro_topi.rst.txt
@@ -270,7 +270,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0x2db84bf0)), stage(b, placeholder(b, 0x15d98ae0)), stage(T_add, compute(T_add, body=[a[ax0, ax1, ax2] + b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T.Range(0, 10), "DataPar", ""), T.iter_var(ax2, T.Range(0, 10), "DataPar", "")], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[a[ax0, ax1, ax2] * b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T [...]
+    [stage(a, placeholder(a, 0x9cd9f90)), stage(b, placeholder(b, 0x25a44d60)), stage(T_add, compute(T_add, body=[a[ax0, ax1, ax2] + b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T.Range(0, 10), "DataPar", ""), T.iter_var(ax2, T.Range(0, 10), "DataPar", "")], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[a[ax0, ax1, ax2] * b[ax1, ax2]], axis=[T.iter_var(ax0, T.Range(0, 100), "DataPar", ""), T.iter_var(ax1, T. [...]
 
 
 
diff --git a/docs/_sources/tutorial/sg_execution_times.rst.txt b/docs/_sources/tutorial/sg_execution_times.rst.txt
index 64da4f32b4..08b6dd1460 100644
--- a/docs/_sources/tutorial/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorial/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**16:57.647** total execution time for **tutorial** files:
+**16:34.853** total execution time for **tutorial** files:
 
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 13:35.096 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 13:03.760 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:22.350 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:26.845 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 00:58.505 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 00:58.021 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:44.911 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:41.896 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:14.709 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:22.468 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.921 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.860 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.916 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.839 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.237 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.164 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_uma.py` (``uma.py``)                                             | 00:00.000 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
index dbce420626..cdca19ccdc 100644
--- a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
@@ -286,7 +286,7 @@ helper function to run a profile of the TVM generated code.
  .. code-block:: none
 
     Numpy running time: 0.000006
-    naive: 0.000006
+    naive: 0.000007
 
 
 
@@ -444,7 +444,7 @@ factor to be the number of threads on your CPU.
 
  .. code-block:: none
 
-    vector: 0.000040
+    vector: 0.000038
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -498,10 +498,10 @@ We can now compare the different schedules
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                   numpy    6.464379985118285e-06                    1.0
-                   naive               5.835e-06      0.9026387702196983
-                parallel    8.195199999999999e-06      1.267747257875659
-                  vector    4.0413199999999995e-05     6.251674575602863
+                   numpy    5.9458000032464044e-06                   1.0
+                   naive              7.3322e-06      1.2331729953911368
+                parallel              7.8104e-06      1.3135995149072497
+                  vector             3.81235e-05       6.411836923405527
 
 
 
@@ -922,7 +922,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.019359
+    Numpy running time: 0.014298
 
 
 
@@ -980,7 +980,7 @@ optimizations.
 
  .. code-block:: none
 
-    none: 3.217291
+    none: 3.345678
 
 
 
@@ -1080,7 +1080,7 @@ schedule.
 
  .. code-block:: none
 
-    blocking: 0.322699
+    blocking: 0.281335
 
 
 
@@ -1164,7 +1164,7 @@ already cache friendly from our previous optimizations.
 
  .. code-block:: none
 
-    vectorization: 0.306371
+    vectorization: 0.264173
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1230,7 +1230,7 @@ more cache friendly.
 
  .. code-block:: none
 
-    loop permutation: 0.114222
+    loop permutation: 0.110047
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1321,7 +1321,7 @@ optimized schedule.
 
  .. code-block:: none
 
-    array packing: 0.105307
+    array packing: 0.103082
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1404,7 +1404,7 @@ to `C` when all the block results are ready.
 
  .. code-block:: none
 
-    block caching: 0.111202
+    block caching: 0.096946
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1478,7 +1478,7 @@ of thread-level parallelization.
 
  .. code-block:: none
 
-    parallelization: 0.132116
+    parallelization: 0.114783
     # from tvm.script import ir as I
     # from tvm.script import tir as T
 
@@ -1548,13 +1548,13 @@ working, we can compare the results.
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                    none            3.2172910849                     1.0
-                blocking            0.3226988988     0.10030143070191928
-           vectorization             0.306370773     0.09522631459674798
-        loop permutation            0.1142220848     0.03550256466879504
-           array packing            0.1053069596      0.0327315610621142
-           block caching     0.11120236780000001      0.0345639747431981
-         parallelization            0.1321162988     0.04106445307982024
+                    none      3.3456779488999997                     1.0
+                blocking             0.281334914     0.08408906006404411
+           vectorization            0.2641727907     0.07895942010403463
+        loop permutation     0.11004728960000001     0.03289237376723054
+           array packing             0.103081512    0.030810351018361284
+           block caching     0.09694578940000001    0.028976425968277698
+         parallelization            0.1147833179      0.0343079398714209
 
 
 
diff --git a/docs/commit_hash b/docs/commit_hash
index 7eb02bb702..3fc9ff907e 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-5a8d928b84c09b19cea8a17c8c85911fcae1e61d
+b2204ae6988c7745ea9736340ccd900bc21ae821
diff --git a/docs/genindex.html b/docs/genindex.html
index a47a37ca7f..7242f36cdf 100644
--- a/docs/genindex.html
+++ b/docs/genindex.html
@@ -1905,6 +1905,8 @@
         <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.space.ConfigSpace.get">(tvm.autotvm.task.space.ConfigSpace method)</a>
 </li>
         <li><a href="reference/api/python/autotvm.html#tvm.autotvm.task.topi_integration.TaskExtractEnv.get">(tvm.autotvm.task.topi_integration.TaskExtractEnv static method)</a>
+</li>
+        <li><a href="reference/api/python/ir.html#tvm.ir.DictAttrs.get">(tvm.ir.DictAttrs method)</a>
 </li>
         <li><a href="reference/api/python/ir.html#tvm.ir.EnvFunc.get">(tvm.ir.EnvFunc static method)</a>
 </li>
diff --git a/docs/how_to/compile_models/from_darknet.html b/docs/how_to/compile_models/from_darknet.html
index 4329e6419c..09e59acff2 100644
--- a/docs/how_to/compile_models/from_darknet.html
+++ b/docs/how_to/compile_models/from_darknet.html
@@ -604,7 +604,7 @@ class:[&#39;truck 0.9266&#39;] left:471 top:83 right:689 bottom:169
 class:[&#39;bicycle 0.9984&#39;] left:111 top:113 right:577 bottom:447
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  37.768 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  34.060 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-darknet-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7716f96385bd5abb6e822041e285be54/from_darknet.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_darknet.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/from_oneflow.html b/docs/how_to/compile_models/from_oneflow.html
index 11e1318ac0..1acf4e6500 100644
--- a/docs/how_to/compile_models/from_oneflow.html
+++ b/docs/how_to/compile_models/from_oneflow.html
@@ -468,13 +468,14 @@ Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdo
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip&quot; to /workspace/.oneflow/flowvision_cache/resnet18.zip
 
   0%|          | 0.00/41.5M [00:00&lt;?, ?B/s]
- 19%|#9        | 7.99M/41.5M [00:00&lt;00:00, 52.3MB/s]
- 39%|###8      | 16.0M/41.5M [00:00&lt;00:00, 50.9MB/s]
- 54%|#####3    | 22.3M/41.5M [00:00&lt;00:00, 41.1MB/s]
- 64%|######3   | 26.4M/41.5M [00:00&lt;00:00, 38.4MB/s]
- 77%|#######7  | 32.0M/41.5M [00:00&lt;00:00, 41.1MB/s]
- 96%|#########6| 40.0M/41.5M [00:00&lt;00:00, 46.7MB/s]
-100%|##########| 41.5M/41.5M [00:00&lt;00:00, 46.2MB/s]
+ 15%|#5        | 6.33M/41.5M [00:00&lt;00:00, 52.4MB/s]
+ 27%|##7       | 11.3M/41.5M [00:00&lt;00:00, 48.3MB/s]
+ 38%|###8      | 15.9M/41.5M [00:00&lt;00:00, 30.6MB/s]
+ 49%|####9     | 20.4M/41.5M [00:00&lt;00:00, 35.0MB/s]
+ 58%|#####8    | 24.2M/41.5M [00:00&lt;00:00, 23.0MB/s]
+ 77%|#######7  | 32.0M/41.5M [00:00&lt;00:00, 34.3MB/s]
+ 92%|#########2| 38.3M/41.5M [00:01&lt;00:00, 35.5MB/s]
+100%|##########| 41.5M/41.5M [00:01&lt;00:00, 35.3MB/s]
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/compile_models/from_paddle.html b/docs/how_to/compile_models/from_paddle.html
index b701f398f0..12b26b40e5 100644
--- a/docs/how_to/compile_models/from_paddle.html
+++ b/docs/how_to/compile_models/from_paddle.html
@@ -503,7 +503,6 @@ To begin, we’ll install PaddlePaddle&gt;=2.1.3:</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>TVM prediction top-1 id: 282, class name:  282: &#39;tiger cat&#39;,
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  4.862 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-paddle-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/16269b77359771348d507395692524cf/from_paddle.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_paddle.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/from_pytorch.html b/docs/how_to/compile_models/from_pytorch.html
index 89ebab9000..756070fac8 100644
--- a/docs/how_to/compile_models/from_pytorch.html
+++ b/docs/how_to/compile_models/from_pytorch.html
@@ -451,11 +451,13 @@ be unstable.</p>
 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]
- 18%|#7        | 7.99M/44.7M [00:00&lt;00:00, 61.9MB/s]
- 36%|###5      | 16.0M/44.7M [00:00&lt;00:00, 54.2MB/s]
- 67%|######6   | 29.9M/44.7M [00:00&lt;00:00, 86.4MB/s]
- 87%|########7 | 39.1M/44.7M [00:00&lt;00:00, 71.0MB/s]
-100%|##########| 44.7M/44.7M [00:00&lt;00:00, 70.0MB/s]
+  5%|4         | 2.05M/44.7M [00:00&lt;00:02, 18.4MB/s]
+ 18%|#7        | 7.99M/44.7M [00:00&lt;00:00, 39.2MB/s]
+ 36%|###5      | 16.0M/44.7M [00:00&lt;00:00, 45.5MB/s]
+ 54%|#####3    | 24.0M/44.7M [00:00&lt;00:00, 50.2MB/s]
+ 72%|#######1  | 32.0M/44.7M [00:00&lt;00:00, 49.4MB/s]
+ 90%|########9 | 40.0M/44.7M [00:00&lt;00:00, 52.5MB/s]
+100%|##########| 44.7M/44.7M [00:00&lt;00:00, 47.5MB/s]
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/compile_models/from_tensorflow.html b/docs/how_to/compile_models/from_tensorflow.html
index 6a0cad1be9..7cb57e2265 100644
--- a/docs/how_to/compile_models/from_tensorflow.html
+++ b/docs/how_to/compile_models/from_tensorflow.html
@@ -671,7 +671,7 @@ banana (score = 0.00022)
 desk (score = 0.00019)
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  35.187 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  28.643 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-tensorflow-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7f1d3d1b878694c201c614c807cdebc8/from_tensorflow.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_tensorflow.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/sg_execution_times.html b/docs/how_to/compile_models/sg_execution_times.html
index 649d69a0e8..35832c5162 100644
--- a/docs/how_to/compile_models/sg_execution_times.html
+++ b/docs/how_to/compile_models/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-compile-models-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>06:54.933</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
+<p><strong>06:30.993</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 81%" />
@@ -369,39 +369,39 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_darknet.html#sphx-glr-how-to-compile-models-from-darknet-py"><span class="std std-ref">Compile YOLO-V2 and YOLO-V3 in DarkNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_darknet.py</span></code>)</p></td>
-<td><p>01:37.768</p></td>
+<td><p>01:34.060</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_tensorflow.html#sphx-glr-how-to-compile-models-from-tensorflow-py"><span class="std std-ref">Compile Tensorflow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tensorflow.py</span></code>)</p></td>
-<td><p>01:35.187</p></td>
+<td><p>01:28.643</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_paddle.html#sphx-glr-how-to-compile-models-from-paddle-py"><span class="std std-ref">Compile PaddlePaddle Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_paddle.py</span></code>)</p></td>
-<td><p>01:04.862</p></td>
+<td><p>00:58.952</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_oneflow.html#sphx-glr-how-to-compile-models-from-oneflow-py"><span class="std std-ref">Compile OneFlow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_oneflow.py</span></code>)</p></td>
-<td><p>00:45.875</p></td>
+<td><p>00:42.158</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_coreml.html#sphx-glr-how-to-compile-models-from-coreml-py"><span class="std std-ref">Compile CoreML Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_coreml.py</span></code>)</p></td>
-<td><p>00:39.992</p></td>
+<td><p>00:37.058</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_pytorch.html#sphx-glr-how-to-compile-models-from-pytorch-py"><span class="std std-ref">Compile PyTorch Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_pytorch.py</span></code>)</p></td>
-<td><p>00:29.494</p></td>
+<td><p>00:27.701</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_keras.html#sphx-glr-how-to-compile-models-from-keras-py"><span class="std std-ref">Compile Keras Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_keras.py</span></code>)</p></td>
-<td><p>00:28.004</p></td>
+<td><p>00:27.165</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_tflite.html#sphx-glr-how-to-compile-models-from-tflite-py"><span class="std std-ref">Compile TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tflite.py</span></code>)</p></td>
-<td><p>00:10.801</p></td>
+<td><p>00:12.474</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_onnx.html#sphx-glr-how-to-compile-models-from-onnx-py"><span class="std std-ref">Compile ONNX Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_onnx.py</span></code>)</p></td>
-<td><p>00:02.951</p></td>
+<td><p>00:02.782</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/deploy_models/deploy_model_on_adreno.html b/docs/how_to/deploy_models/deploy_model_on_adreno.html
index fb02694d63..26f37ac213 100644
--- a/docs/how_to/deploy_models/deploy_model_on_adreno.html
+++ b/docs/how_to/deploy_models/deploy_model_on_adreno.html
@@ -850,10 +850,10 @@ Top5 predictions:
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
- 4124.2011    4124.0746    4127.4333    4122.1314      1.8444
+ 3992.9270    3992.7420    3994.4361    3991.4240      1.0967
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  21.096 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  17.208 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-model-on-adreno-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/2387d8448da213eb625e6b3d916327d4/deploy_model_on_adreno.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_model_on_adreno.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_model_on_adreno_tvmc.html b/docs/how_to/deploy_models/deploy_model_on_adreno_tvmc.html
index 36cb72c4f7..1175052793 100644
--- a/docs/how_to/deploy_models/deploy_model_on_adreno_tvmc.html
+++ b/docs/how_to/deploy_models/deploy_model_on_adreno_tvmc.html
@@ -458,27 +458,30 @@ to run this tutorial with a real device over rpc.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels.h5
 
      8192/102967424 [..............................] - ETA: 0s
-  8380416/102967424 [=&gt;............................] - ETA: 1s
- 15024128/102967424 [===&gt;..........................] - ETA: 1s
- 16769024/102967424 [===&gt;..........................] - ETA: 1s
- 18964480/102967424 [====&gt;.........................] - ETA: 1s
+  8380416/102967424 [=&gt;............................] - ETA: 2s
+ 10731520/102967424 [==&gt;...........................] - ETA: 1s
+ 16769024/102967424 [===&gt;..........................] - ETA: 2s
+ 23158784/102967424 [=====&gt;........................] - ETA: 1s
  25157632/102967424 [======&gt;.......................] - ETA: 1s
  33546240/102967424 [========&gt;.....................] - ETA: 1s
- 41934848/102967424 [===========&gt;..................] - ETA: 0s
- 50323456/102967424 [=============&gt;................] - ETA: 0s
- 53010432/102967424 [==============&gt;...............] - ETA: 0s
- 58712064/102967424 [================&gt;.............] - ETA: 0s
- 60907520/102967424 [================&gt;.............] - ETA: 0s
+ 40189952/102967424 [==========&gt;...................] - ETA: 1s
+ 41934848/102967424 [===========&gt;..................] - ETA: 1s
+ 50323456/102967424 [=============&gt;................] - ETA: 1s
+ 56967168/102967424 [===============&gt;..............] - ETA: 1s
+ 58712064/102967424 [================&gt;.............] - ETA: 1s
+ 65355776/102967424 [==================&gt;...........] - ETA: 0s
  67100672/102967424 [==================&gt;...........] - ETA: 0s
- 74227712/102967424 [====================&gt;.........] - ETA: 0s
+ 69296128/102967424 [===================&gt;..........] - ETA: 0s
+ 73744384/102967424 [====================&gt;.........] - ETA: 0s
  75489280/102967424 [====================&gt;.........] - ETA: 0s
+ 75628544/102967424 [=====================&gt;........] - ETA: 0s
+ 82124800/102967424 [======================&gt;.......] - ETA: 0s
  83877888/102967424 [=======================&gt;......] - ETA: 0s
- 86073344/102967424 [========================&gt;.....] - ETA: 0s
- 90628096/102967424 [=========================&gt;....] - ETA: 0s
  92266496/102967424 [=========================&gt;....] - ETA: 0s
+ 98910208/102967424 [===========================&gt;..] - ETA: 0s
 100646912/102967424 [============================&gt;.] - ETA: 0s
 102850560/102967424 [============================&gt;.] - ETA: 0s
-102967424/102967424 [==============================] - 2s 0us/step
+102967424/102967424 [==============================] - 3s 0us/step
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/deploy_models/deploy_model_on_android.html b/docs/how_to/deploy_models/deploy_model_on_android.html
index 6a1b3992ba..f61c06af00 100644
--- a/docs/how_to/deploy_models/deploy_model_on_android.html
+++ b/docs/how_to/deploy_models/deploy_model_on_android.html
@@ -682,7 +682,7 @@ to the remote android device.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  16.3471      16.1218      17.0181      15.8422       0.4472
+  14.0667      14.0262      14.7313      13.8267       0.2386
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
index 0411ea583f..d1a0940955 100644
--- a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
+++ b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
@@ -474,30 +474,37 @@ be unstable.</p>
 Downloading: &quot;https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth&quot; to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
 
   0%|          | 0.00/170M [00:00&lt;?, ?B/s]
-  5%|4         | 7.68M/170M [00:00&lt;00:02, 80.5MB/s]
-  9%|9         | 15.4M/170M [00:00&lt;00:04, 33.8MB/s]
- 12%|#1        | 19.9M/170M [00:00&lt;00:04, 36.0MB/s]
- 17%|#7        | 29.6M/170M [00:00&lt;00:02, 53.4MB/s]
- 21%|##1       | 36.0M/170M [00:00&lt;00:03, 45.2MB/s]
- 24%|##4       | 41.2M/170M [00:00&lt;00:02, 47.2MB/s]
- 28%|##8       | 48.0M/170M [00:01&lt;00:02, 52.7MB/s]
- 33%|###2      | 56.0M/170M [00:01&lt;00:02, 57.8MB/s]
- 38%|###7      | 64.0M/170M [00:01&lt;00:01, 56.3MB/s]
- 42%|####2     | 72.0M/170M [00:01&lt;00:01, 62.7MB/s]
- 48%|####8     | 82.1M/170M [00:01&lt;00:01, 72.1MB/s]
- 53%|#####2    | 89.3M/170M [00:01&lt;00:01, 63.8MB/s]
- 57%|#####6    | 96.0M/170M [00:01&lt;00:01, 56.5MB/s]
- 60%|#####9    | 102M/170M [00:01&lt;00:01, 56.0MB/s]
- 63%|######3   | 107M/170M [00:02&lt;00:01, 49.1MB/s]
- 66%|######6   | 112M/170M [00:02&lt;00:01, 39.8MB/s]
- 71%|#######   | 120M/170M [00:02&lt;00:01, 46.8MB/s]
- 76%|#######5  | 128M/170M [00:02&lt;00:00, 56.0MB/s]
- 80%|########  | 136M/170M [00:02&lt;00:00, 53.1MB/s]
- 87%|########6 | 147M/170M [00:02&lt;00:00, 68.4MB/s]
- 91%|#########1| 155M/170M [00:02&lt;00:00, 59.8MB/s]
- 95%|#########4| 161M/170M [00:03&lt;00:00, 45.7MB/s]
- 99%|#########8| 168M/170M [00:03&lt;00:00, 48.6MB/s]
-100%|##########| 170M/170M [00:03&lt;00:00, 52.6MB/s]
+  5%|4         | 7.99M/170M [00:00&lt;00:03, 50.3MB/s]
+  8%|8         | 14.3M/170M [00:00&lt;00:03, 52.2MB/s]
+ 11%|#1        | 19.3M/170M [00:00&lt;00:03, 47.6MB/s]
+ 14%|#4        | 24.0M/170M [00:00&lt;00:03, 40.2MB/s]
+ 18%|#7        | 30.3M/170M [00:00&lt;00:03, 44.5MB/s]
+ 20%|##        | 34.6M/170M [00:00&lt;00:03, 42.9MB/s]
+ 24%|##3       | 40.0M/170M [00:00&lt;00:03, 41.3MB/s]
+ 27%|##7       | 46.3M/170M [00:01&lt;00:03, 36.1MB/s]
+ 29%|##9       | 49.9M/170M [00:01&lt;00:03, 31.9MB/s]
+ 33%|###2      | 56.0M/170M [00:01&lt;00:03, 34.7MB/s]
+ 38%|###7      | 64.0M/170M [00:01&lt;00:02, 37.4MB/s]
+ 43%|####2     | 72.8M/170M [00:01&lt;00:02, 48.4MB/s]
+ 47%|####6     | 79.8M/170M [00:01&lt;00:01, 54.0MB/s]
+ 50%|#####     | 85.5M/170M [00:02&lt;00:01, 50.6MB/s]
+ 53%|#####3    | 90.7M/170M [00:02&lt;00:02, 40.0MB/s]
+ 56%|#####5    | 95.1M/170M [00:02&lt;00:02, 36.6MB/s]
+ 60%|######    | 102M/170M [00:02&lt;00:01, 36.8MB/s]
+ 62%|######2   | 106M/170M [00:02&lt;00:01, 36.0MB/s]
+ 66%|######5   | 112M/170M [00:03&lt;00:02, 30.3MB/s]
+ 71%|#######   | 120M/170M [00:03&lt;00:01, 35.0MB/s]
+ 74%|#######4  | 126M/170M [00:03&lt;00:01, 39.2MB/s]
+ 77%|#######6  | 130M/170M [00:03&lt;00:01, 36.2MB/s]
+ 80%|########  | 136M/170M [00:03&lt;00:01, 34.6MB/s]
+ 85%|########4 | 144M/170M [00:03&lt;00:00, 41.5MB/s]
+ 88%|########8 | 150M/170M [00:03&lt;00:00, 41.3MB/s]
+ 91%|######### | 154M/170M [00:04&lt;00:00, 35.5MB/s]
+ 93%|#########3| 158M/170M [00:04&lt;00:00, 32.3MB/s]
+ 95%|#########5| 161M/170M [00:04&lt;00:00, 26.6MB/s]
+ 98%|#########7| 166M/170M [00:04&lt;00:00, 29.5MB/s]
+100%|#########9| 169M/170M [00:04&lt;00:00, 29.7MB/s]
+100%|##########| 170M/170M [00:04&lt;00:00, 37.5MB/s]
 /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/nn/functional.py:3912: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
   (torch.floor((input.size(i + 2).float() * torch.tensor(scale_factors[i], dtype=torch.float32)).float()))
 /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torchvision/ops/boxes.py:157: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
@@ -588,7 +595,7 @@ torchvision rcnn models.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Get 9 valid boxes
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  45.152 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  24.257 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-object-detection-pytorch-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7795da4b258c8feff986668b95ef57ad/deploy_object_detection_pytorch.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_object_detection_pytorch.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_prequantized.html b/docs/how_to/deploy_models/deploy_prequantized.html
index ab517ad569..626149c340 100644
--- a/docs/how_to/deploy_models/deploy_prequantized.html
+++ b/docs/how_to/deploy_models/deploy_prequantized.html
@@ -515,8 +515,8 @@ training. Other models require a full post training calibration.</p>
 Downloading: &quot;https://download.pytorch.org/models/mobilenet_v2-b0353104.pth&quot; to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
 
   0%|          | 0.00/13.6M [00:00&lt;?, ?B/s]
- 60%|#####9    | 8.12M/13.6M [00:00&lt;00:00, 80.5MB/s]
-100%|##########| 13.6M/13.6M [00:00&lt;00:00, 109MB/s]
+ 59%|#####8    | 7.99M/13.6M [00:00&lt;00:00, 38.7MB/s]
+100%|##########| 13.6M/13.6M [00:00&lt;00:00, 46.5MB/s]
 </pre></div>
 </div>
 </div>
@@ -607,7 +607,7 @@ output values are identical out of 1000 outputs from mobilenet v2.</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)
-  89.2959      89.2392      91.3354      88.8678       0.3085
+  86.0785      86.0713      87.1651      85.5597       0.2862
 </pre></div>
 </div>
 <div class="admonition note">
@@ -646,7 +646,7 @@ This includes support for the VNNI 8 bit dot product instruction (CascadeLake or
 <div class="section" id="deploy-a-quantized-tflite-model">
 <h2>Deploy a quantized TFLite Model<a class="headerlink" href="#deploy-a-quantized-tflite-model" title="Permalink to this headline">¶</a></h2>
 <p>TODO</p>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  32.945 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  26.325 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-prequantized-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/fb8217c13f4351224c6cf3aacf1a87fc/deploy_prequantized.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_prequantized.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_prequantized_tflite.html b/docs/how_to/deploy_models/deploy_prequantized_tflite.html
index 0e3bcf8f7b..1832da76b6 100644
--- a/docs/how_to/deploy_models/deploy_prequantized_tflite.html
+++ b/docs/how_to/deploy_models/deploy_prequantized_tflite.html
@@ -600,7 +600,7 @@ TFLite Top-5 labels: [387 102 386 341 349]
 </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)
-  110.8619     110.8138     113.5532     110.1644      0.4566
+  105.4646     105.3497     139.3925     102.8951      3.6720
 </pre></div>
 </div>
 <div class="admonition note">
diff --git a/docs/how_to/deploy_models/sg_execution_times.html b/docs/how_to/deploy_models/sg_execution_times.html
index f11340d74b..05e1ad1265 100644
--- a/docs/how_to/deploy_models/sg_execution_times.html
+++ b/docs/how_to/deploy_models/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-deploy-models-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>10:17.658</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
+<p><strong>09:32.281</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 86%" />
@@ -369,35 +369,35 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_object_detection_pytorch.html#sphx-glr-how-to-deploy-models-deploy-object-detection-pytorch-py"><span class="std std-ref">Compile PyTorch Object Detection Models</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_object_detection_pytorch.py</span></code>)</p></td>
-<td><p>03:45.152</p></td>
+<td><p>03:24.257</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_prequantized.html#sphx-glr-how-to-deploy-models-deploy-prequantized-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized.py</span></code>)</p></td>
-<td><p>01:32.945</p></td>
+<td><p>01:26.325</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_model_on_adreno.html#sphx-glr-how-to-deploy-models-deploy-model-on-adreno-py"><span class="std std-ref">Deploy the Pretrained Model on Adrenoâ„¢</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_adreno.py</span></code>)</p></td>
-<td><p>01:21.096</p></td>
+<td><p>01:17.208</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_android.html#sphx-glr-how-to-deploy-models-deploy-model-on-android-py"><span class="std std-ref">Deploy the Pretrained Model on Android</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_android.py</span></code>)</p></td>
-<td><p>00:53.870</p></td>
+<td><p>00:49.812</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_prequantized_tflite.html#sphx-glr-how-to-deploy-models-deploy-prequantized-tflite-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM - Part 3 (TFLite)</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized_tflite.py</span></code>)</p></td>
-<td><p>00:53.571</p></td>
+<td><p>00:49.788</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_adreno_tvmc.html#sphx-glr-how-to-deploy-models-deploy-model-on-adreno-tvmc-py"><span class="std std-ref">Deploy the Pretrained Model on Adrenoâ„¢ with tvmc Interface</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_adreno_tvmc.py</span></code>)</p></td>
-<td><p>00:49.194</p></td>
+<td><p>00:46.623</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_model_on_nano.html#sphx-glr-how-to-deploy-models-deploy-model-on-nano-py"><span class="std std-ref">Deploy the Pretrained Model on Jetson Nano</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_nano.py</span></code>)</p></td>
-<td><p>00:30.997</p></td>
+<td><p>00:29.270</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_rasp.html#sphx-glr-how-to-deploy-models-deploy-model-on-rasp-py"><span class="std std-ref">Deploy the Pretrained Model on Raspberry Pi</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_rasp.py</span></code>)</p></td>
-<td><p>00:30.823</p></td>
+<td><p>00:28.989</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_sparse.html#sphx-glr-how-to-deploy-models-deploy-sparse-py"><span class="std std-ref">Deploy a Hugging Face Pruned Model on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_sparse.py</span></code>)</p></td>
diff --git a/docs/how_to/extend_tvm/sg_execution_times.html b/docs/how_to/extend_tvm/sg_execution_times.html
index 066f278ba5..3e997fd8e4 100644
--- a/docs/how_to/extend_tvm/sg_execution_times.html
+++ b/docs/how_to/extend_tvm/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-extend-tvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:03.997</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
+<p><strong>00:03.816</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 83%" />
@@ -369,15 +369,15 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="use_pass_instrument.html#sphx-glr-how-to-extend-tvm-use-pass-instrument-py"><span class="std std-ref">How to Use TVM Pass Instrument</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_instrument.py</span></code>)</p></td>
-<td><p>00:02.784</p></td>
+<td><p>00:02.641</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="use_pass_infra.html#sphx-glr-how-to-extend-tvm-use-pass-infra-py"><span class="std std-ref">How to Use TVM Pass Infra</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_infra.py</span></code>)</p></td>
-<td><p>00:01.205</p></td>
+<td><p>00:01.168</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="low_level_custom_pass.html#sphx-glr-how-to-extend-tvm-low-level-custom-pass-py"><span class="std std-ref">Writing a Customized Pass</span></a> (<code class="docutils literal notranslate"><span class="pre">low_level_custom_pass.py</span></code>)</p></td>
-<td><p>00:00.007</p></td>
+<td><p>00:00.008</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/extend_tvm/use_pass_instrument.html b/docs/how_to/extend_tvm/use_pass_instrument.html
index 864703e12f..192725ddc3 100644
--- a/docs/how_to/extend_tvm/use_pass_instrument.html
+++ b/docs/how_to/extend_tvm/use_pass_instrument.html
@@ -545,10 +545,10 @@ profile the execution time of each passes.</p>
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Printing results of timing profile...
-InferType: 24878us [24878us] (48.91%; 48.91%)
-FoldScaleAxis: 25990us [8us] (51.09%; 51.09%)
-        FoldConstant: 25981us [1796us] (51.08%; 99.97%)
-                InferType: 24185us [24185us] (47.54%; 93.09%)
+InferType: 24133us [24133us] (48.86%; 48.86%)
+FoldScaleAxis: 25263us [8us] (51.14%; 51.14%)
+        FoldConstant: 25255us [1743us] (51.13%; 99.97%)
+                InferType: 23512us [23512us] (47.60%; 93.10%)
 </pre></div>
 </div>
 </div>
@@ -570,10 +570,10 @@ Refer to following sections and <a class="reference internal" href="../../refere
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Printing results of timing profile...
-InferType: 24018us [24018us] (48.67%; 48.67%)
-FoldScaleAxis: 25326us [6us] (51.33%; 51.33%)
-        FoldConstant: 25320us [1709us] (51.31%; 99.98%)
-                InferType: 23611us [23611us] (47.85%; 93.25%)
+InferType: 23291us [23291us] (48.71%; 48.71%)
+FoldScaleAxis: 24529us [6us] (51.29%; 51.29%)
+        FoldConstant: 24523us [1608us] (51.28%; 99.98%)
+                InferType: 22915us [22915us] (47.92%; 93.44%)
 </pre></div>
 </div>
 <p>Register empty list to clear existing instruments.</p>
diff --git a/docs/how_to/optimize_operators/opt_conv_cuda.html b/docs/how_to/optimize_operators/opt_conv_cuda.html
index 969c5a93cd..bb71264cbe 100644
--- a/docs/how_to/optimize_operators/opt_conv_cuda.html
+++ b/docs/how_to/optimize_operators/opt_conv_cuda.html
@@ -595,7 +595,7 @@ latency of convolution.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Convolution: </span><span class="si">%f</span><span class="s2"> ms&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span> <span class="o">*</span> <span cl [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 36.085758 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 41.756641 ms
 </pre></div>
 </div>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-optimize-operators-opt-conv-cuda-py">
diff --git a/docs/how_to/optimize_operators/opt_conv_tensorcore.html b/docs/how_to/optimize_operators/opt_conv_tensorcore.html
index c469be600d..7d0c2e6db5 100644
--- a/docs/how_to/optimize_operators/opt_conv_tensorcore.html
+++ b/docs/how_to/optimize_operators/opt_conv_tensorcore.html
@@ -877,7 +877,7 @@ be able to run on our build server</p>
     <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;conv2d with tensor core: </span><span class="si">%f</span><span class="s2"> ms&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span> <span class="o">* [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 12.268134 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 11.553373 ms
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/optimize_operators/opt_gemm.html b/docs/how_to/optimize_operators/opt_gemm.html
index 274fa4e9e1..47be1217f6 100644
--- a/docs/how_to/optimize_operators/opt_gemm.html
+++ b/docs/how_to/optimize_operators/opt_gemm.html
@@ -492,8 +492,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Baseline: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.019377
-Baseline: 3.209001
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.014173
+Baseline: 3.333864
 </pre></div>
 </div>
 <p>In TVM, we can always inspect lower level IR to debug or optimize our schedule.
@@ -552,7 +552,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt1: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.310524
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.289339
 </pre></div>
 </div>
 <p>Here is the generated IR after blocking.</p>
@@ -609,7 +609,7 @@ vastly.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt2: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.295412
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.265132
 </pre></div>
 </div>
 <p>Here is the generated IR after vectorization.</p>
@@ -664,7 +664,7 @@ the access pattern for A matrix is more cache friendly.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt3: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.119812
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.112726
 </pre></div>
 </div>
 <p>Here is the generated IR after loop permutation.</p>
@@ -741,7 +741,7 @@ flattening.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt4: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.108216
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.103589
 </pre></div>
 </div>
 <p>Here is the generated IR after array packing.</p>
@@ -819,7 +819,7 @@ write to C when all the block results are ready.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt5: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.111956
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.097269
 </pre></div>
 </div>
 <p>Here is the generated IR after blocking.</p>
@@ -899,7 +899,7 @@ class Module:
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt6: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">opt6_time</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.132732
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.115186
 </pre></div>
 </div>
 <p>Here is the generated IR after parallelization.</p>
diff --git a/docs/how_to/optimize_operators/sg_execution_times.html b/docs/how_to/optimize_operators/sg_execution_times.html
index 400db4f2c2..89270efc1e 100644
--- a/docs/how_to/optimize_operators/sg_execution_times.html
+++ b/docs/how_to/optimize_operators/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-optimize-operators-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:34.256</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
+<p><strong>00:31.964</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 83%" />
@@ -369,15 +369,15 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="opt_gemm.html#sphx-glr-how-to-optimize-operators-opt-gemm-py"><span class="std std-ref">How to optimize GEMM on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_gemm.py</span></code>)</p></td>
-<td><p>00:30.925</p></td>
+<td><p>00:28.804</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="opt_conv_tensorcore.html#sphx-glr-how-to-optimize-operators-opt-conv-tensorcore-py"><span class="std std-ref">How to optimize convolution using TensorCores</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_tensorcore.py</span></code>)</p></td>
-<td><p>00:01.959</p></td>
+<td><p>00:01.861</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="opt_conv_cuda.html#sphx-glr-how-to-optimize-operators-opt-conv-cuda-py"><span class="std std-ref">How to optimize convolution on GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_cuda.py</span></code>)</p></td>
-<td><p>00:01.373</p></td>
+<td><p>00:01.300</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/tune_with_autoscheduler/sg_execution_times.html b/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
index 501c2df412..1b86d193b1 100644
--- a/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
+++ b/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-tune-with-autoscheduler-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>03:45.210</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
+<p><strong>03:31.459</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 85%" />
@@ -369,27 +369,27 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_network_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-x86-py"><span class="std std-ref">Auto-scheduling a Neural Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_x86.py</span></code>)</p></td>
-<td><p>01:38.264</p></td>
+<td><p>01:31.469</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_network_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-cuda-py"><span class="std std-ref">Auto-scheduling a Neural Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_cuda.py</span></code>)</p></td>
-<td><p>01:14.862</p></td>
+<td><p>01:10.885</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_network_arm.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-arm-py"><span class="std std-ref">Auto-scheduling a Neural Network for ARM CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_arm.py</span></code>)</p></td>
-<td><p>00:18.528</p></td>
+<td><p>00:17.322</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_network_mali.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-mali-py"><span class="std std-ref">Auto-scheduling a Neural Network for mali GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_mali.py</span></code>)</p></td>
-<td><p>00:17.120</p></td>
+<td><p>00:16.118</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_conv2d_layer_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-conv2d-layer-cuda-py"><span class="std std-ref">Auto-scheduling a Convolution Layer for GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_layer_cuda.py</span></code>)</p></td>
-<td><p>00:16.334</p></td>
+<td><p>00:15.567</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_sparse_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-sparse-x86-py"><span class="std std-ref">Auto-scheduling Sparse Matrix Multiplication on CPU with Custom Sketch Rule</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_sparse_x86.py</span></code>)</p></td>
-<td><p>00:00.102</p></td>
+<td><p>00:00.098</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html b/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
index fffa3f2576..f4084ab655 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
@@ -1032,7 +1032,7 @@ class Module:
 <span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.336 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.340 ms
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html b/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
index bcda5c88c7..d7c05e84c8 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_network_cuda.html
@@ -923,7 +923,7 @@ so we can read the log file and load the best schedules.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-   3.1953       3.1954       3.1958       3.1949       0.0004
+   3.2063       3.2065       3.2069       3.2056       0.0005
 </pre></div>
 </div>
 </div>
@@ -945,7 +945,7 @@ to learn how to use the RPC Tracker and RPC Server.
 To use the RPC Tracker in auto-scheduler, replace the runner in <code class="code docutils literal notranslate"><span class="pre">TuningOptions</span></code>
 with <a class="reference internal" href="../../reference/api/python/auto_scheduler.html#tvm.auto_scheduler.RPCRunner" title="tvm.auto_scheduler.RPCRunner"><code class="xref any py py-class docutils literal notranslate"><span class="pre">auto_scheduler.RPCRunner</span></code></a>.</p></li>
 </ol>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  14.862 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  10.885 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autoscheduler-tune-network-cuda-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/eafe360d52540634c9eea0fa89e804bd/tune_network_cuda.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">tune_network_cuda.py</span></code></a></p>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_network_x86.html b/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
index c4171f17ba..5a5af56c50 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_network_x86.html
@@ -945,7 +945,7 @@ so we can read the log file and load the best schedules.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  755.9659     755.7582     757.9040     754.2355      1.5048
+  706.9694     707.8581     708.5028     704.5473      1.7328
 </pre></div>
 </div>
 </div>
@@ -967,7 +967,7 @@ to learn how to use the RPC Tracker and RPC Server.
 To use the RPC Tracker in auto-scheduler, replace the runner in <code class="code docutils literal notranslate"><span class="pre">TuningOptions</span></code>
 with <a class="reference internal" href="../../reference/api/python/auto_scheduler.html#tvm.auto_scheduler.RPCRunner" title="tvm.auto_scheduler.RPCRunner"><code class="xref any py py-class docutils literal notranslate"><span class="pre">auto_scheduler.RPCRunner</span></code></a>.</p></li>
 </ol>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  38.264 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  31.469 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autoscheduler-tune-network-x86-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/e416b94ca1090b0897c0f6e0df95b911/tune_network_x86.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">tune_network_x86.py</span></code></a></p>
diff --git a/docs/how_to/tune_with_autotvm/sg_execution_times.html b/docs/how_to/tune_with_autotvm/sg_execution_times.html
index 7b3fe9cbfe..b89977757b 100644
--- a/docs/how_to/tune_with_autotvm/sg_execution_times.html
+++ b/docs/how_to/tune_with_autotvm/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-tune-with-autotvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:24.143</strong> total execution time for <strong>how_to_tune_with_autotvm</strong> files:</p>
+<p><strong>00:22.929</strong> total execution time for <strong>how_to_tune_with_autotvm</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 84%" />
@@ -369,15 +369,15 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_conv2d_cuda.html#sphx-glr-how-to-tune-with-autotvm-tune-conv2d-cuda-py"><span class="std std-ref">Tuning High Performance Convolution on NVIDIA GPUs</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_cuda.py</span></code>)</p></td>
-<td><p>00:24.106</p></td>
+<td><p>00:22.891</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_relay_x86.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-x86-py"><span class="std std-ref">Auto-tuning a Convolutional Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_x86.py</span></code>)</p></td>
-<td><p>00:00.022</p></td>
+<td><p>00:00.023</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_relay_cuda.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-cuda-py"><span class="std std-ref">Auto-tuning a Convolutional Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_cuda.py</span></code>)</p></td>
-<td><p>00:00.006</p></td>
+<td><p>00:00.005</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_relay_mobile_gpu.html#sphx-glr-how-to-tune-with-autotvm-tune-relay-mobile-gpu-py"><span class="std std-ref">Auto-tuning a Convolutional Network for Mobile GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_relay_mobile_gpu.py</span></code>)</p></td>
diff --git a/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html b/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
index 7909fc2576..e076dcf228 100644
--- a/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
+++ b/docs/how_to/tune_with_autotvm/tune_conv2d_cuda.html
@@ -630,7 +630,7 @@ and measure running time.</p>
 
 Best config:
 ,None
-Time cost of this operator: 0.036997
+Time cost of this operator: 0.037261
 </pre></div>
 </div>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-tune-with-autotvm-tune-conv2d-cuda-py">
diff --git a/docs/how_to/work_with_microtvm/micro_autotune.html b/docs/how_to/work_with_microtvm/micro_autotune.html
index 8c8276e4e0..4e58b5264f 100644
--- a/docs/how_to/work_with_microtvm/micro_autotune.html
+++ b/docs/how_to/work_with_microtvm/micro_autotune.html
@@ -664,10 +664,10 @@ the tuned operator.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>########## Build without Autotuning ##########
 Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)
 ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------
-tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  323.6     98.859   (1, 2, 10, 10, 3)  2       1        [323.6]
-tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.81      0.859    (1, 6, 10, 10)     1       1        [2.81]
-tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.924     0.282    (1, 1, 10, 10, 3)  1       1        [0.924]
-Total_time                                    -                                             327.334   -        -                  -       -        -
+tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  298.9     98.766   (1, 2, 10, 10, 3)  2       1        [298.9]
+tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.797     0.924    (1, 6, 10, 10)     1       1        [2.797]
+tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.939     0.31     (1, 1, 10, 10, 3)  1       1        [0.939]
+Total_time                                    -                                             302.635   -        -                  -       -        -
 </pre></div>
 </div>
 </div>
@@ -719,13 +719,13 @@ Total_time                                    -
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>########## Build with Autotuning ##########
 Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)
 ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------
-tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  99.125    97.19    (1, 6, 10, 10, 1)  2       1        [99.125]
-tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.926     1.888    (1, 6, 10, 10)     1       1        [1.926]
-tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.94      0.922    (1, 1, 10, 10, 3)  1       1        [0.94]
-Total_time                                    -                                             101.991   -        -                  -       -        -
+tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  101.3     97.468   (1, 6, 10, 10, 1)  2       1        [101.3]
+tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.815     1.746    (1, 6, 10, 10)     1       1        [1.815]
+tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.817     0.786    (1, 3, 10, 10, 1)  1       1        [0.817]
+Total_time                                    -                                             103.932   -        -                  -       -        -
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  24.199 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  23.203 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-work-with-microtvm-micro-autotune-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/9ccca8fd489a1486ac71b55a55c320c5/micro_autotune.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">micro_autotune.py</span></code></a></p>
diff --git a/docs/how_to/work_with_microtvm/micro_pytorch.html b/docs/how_to/work_with_microtvm/micro_pytorch.html
index 889def0584..eea9171744 100644
--- a/docs/how_to/work_with_microtvm/micro_pytorch.html
+++ b/docs/how_to/work_with_microtvm/micro_pytorch.html
@@ -475,8 +475,8 @@ download a cat image and preprocess it to use as the model input.</p>
 Downloading: &quot;https://download.pytorch.org/models/quantized/mobilenet_v2_qnnpack_37f702c5.pth&quot; to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2_qnnpack_37f702c5.pth
 
   0%|          | 0.00/3.42M [00:00&lt;?, ?B/s]
- 61%|######    | 2.09M/3.42M [00:00&lt;00:00, 13.0MB/s]
-100%|##########| 3.42M/3.42M [00:00&lt;00:00, 20.4MB/s]
+ 61%|######    | 2.09M/3.42M [00:00&lt;00:00, 20.9MB/s]
+100%|##########| 3.42M/3.42M [00:00&lt;00:00, 32.2MB/s]
 /venv/apache-tvm-py3.8/lib/python3.8/site-packages/torch/_utils.py:314: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly.  To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
   device=storage.device,
 /workspace/python/tvm/relay/frontend/pytorch_utils.py:47: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
@@ -604,7 +604,7 @@ via the host <cite>main.cc`</cite> or if a Zephyr emulated board is selected as
 Torch top-1 id: 282, class name: tiger cat
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  32.456 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  25.702 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-work-with-microtvm-micro-pytorch-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/12b9ecc04c41abaa12022061771821d1/micro_pytorch.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">micro_pytorch.py</span></code></a></p>
diff --git a/docs/how_to/work_with_microtvm/micro_train.html b/docs/how_to/work_with_microtvm/micro_train.html
index ab389469b0..2e0c94b7e0 100644
--- a/docs/how_to/work_with_microtvm/micro_train.html
+++ b/docs/how_to/work_with_microtvm/micro_train.html
@@ -543,7 +543,7 @@ take about <strong>2 minutes</strong> to download the Stanford Cars, while COCO
 <a href="https://docs.python.org/3/library/shutil.html#shutil.move" title="shutil.move" class="sphx-glr-backref-module-shutil sphx-glr-backref-type-py-function"><span class="n">shutil</span><span class="o">.</span><span class="n">move</span></a><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-typ [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&#39;/tmp/tmp70nnat82/images/random&#39;
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&#39;/tmp/tmpcdbf34dz/images/random&#39;
 </pre></div>
 </div>
 </div>
@@ -603,8 +603,8 @@ objects to other stuff? We can display some examples from our datasets using <co
     <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">&quot;off&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
-<img src="../../_images/sphx_glr_micro_train_001.png" srcset="../../_images/sphx_glr_micro_train_001.png" alt="[1.0, 0.0], [1.0, 0.0], [1.0, 0.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0]" class = "sphx-glr-single-img"/><div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/tmp/tmp70nnat82/images/target contains 8144 images
-/tmp/tmp70nnat82/images/random contains 5000 images
+<img src="../../_images/sphx_glr_micro_train_001.png" srcset="../../_images/sphx_glr_micro_train_001.png" alt="[1.0, 0.0], [1.0, 0.0], [1.0, 0.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0]" class = "sphx-glr-single-img"/><div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/tmp/tmpcdbf34dz/images/target contains 8144 images
+/tmp/tmpcdbf34dz/images/random contains 5000 images
 </pre></div>
 </div>
 </div>
@@ -716,13 +716,13 @@ the time on our validation set).</p>
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Epoch 1/3
-328/328 - 39s - loss: 0.2230 - accuracy: 0.9231 - val_loss: 0.1066 - val_accuracy: 0.9622 - 39s/epoch - 118ms/step
+328/328 - 38s - loss: 0.2255 - accuracy: 0.9236 - val_loss: 0.1498 - val_accuracy: 0.9475 - 38s/epoch - 117ms/step
 Epoch 2/3
-328/328 - 35s - loss: 0.0964 - accuracy: 0.9653 - val_loss: 0.1114 - val_accuracy: 0.9596 - 35s/epoch - 108ms/step
+328/328 - 34s - loss: 0.1056 - accuracy: 0.9614 - val_loss: 0.0974 - val_accuracy: 0.9649 - 34s/epoch - 104ms/step
 Epoch 3/3
-328/328 - 35s - loss: 0.0694 - accuracy: 0.9742 - val_loss: 0.1262 - val_accuracy: 0.9634 - 35s/epoch - 108ms/step
+328/328 - 34s - loss: 0.0695 - accuracy: 0.9714 - val_loss: 0.1018 - val_accuracy: 0.9611 - 34s/epoch - 104ms/step
 
-&lt;keras.callbacks.History object at 0x7f99984b5520&gt;
+&lt;keras.callbacks.History object at 0x7f3625f34640&gt;
 </pre></div>
 </div>
 </div>
@@ -986,7 +986,7 @@ as intended.</p>
 <p>From here, we could modify the model to read live images from the camera - we have another
 Arduino tutorial for how to do that <a class="reference external" href="https://github.com/guberti/tvm-arduino-demos/tree/master/examples/person_detection">on GitHub</a>. Alternatively, we could also
 <a class="reference external" href="https://tvm.apache.org/docs/how_to/work_with_microtvm/micro_autotune.html">use TVM’s autotuning capabilities</a> to dramatically improve the model’s performance.</p>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 4 minutes  32.358 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 4 minutes  33.137 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-work-with-microtvm-micro-train-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/b52cec46baf4f78d6bcd94cbe269c8a6/micro_train.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">micro_train.py</span></code></a></p>
diff --git a/docs/how_to/work_with_microtvm/sg_execution_times.html b/docs/how_to/work_with_microtvm/sg_execution_times.html
index 77289c9461..ceb8972cd8 100644
--- a/docs/how_to/work_with_microtvm/sg_execution_times.html
+++ b/docs/how_to/work_with_microtvm/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-microtvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>07:58.694</strong> total execution time for <strong>how_to_work_with_microtvm</strong> files:</p>
+<p><strong>07:49.261</strong> total execution time for <strong>how_to_work_with_microtvm</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 82%" />
@@ -369,27 +369,27 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="micro_train.html#sphx-glr-how-to-work-with-microtvm-micro-train-py"><span class="std std-ref">5. Training Vision Models for microTVM on Arduino</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_train.py</span></code>)</p></td>
-<td><p>04:32.358</p></td>
+<td><p>04:33.137</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="micro_pytorch.html#sphx-glr-how-to-work-with-microtvm-micro-pytorch-py"><span class="std std-ref">4. microTVM PyTorch Tutorial</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_pytorch.py</span></code>)</p></td>
-<td><p>01:32.456</p></td>
+<td><p>01:25.702</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="micro_autotune.html#sphx-glr-how-to-work-with-microtvm-micro-autotune-py"><span class="std std-ref">6. Model Tuning with microTVM</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_autotune.py</span></code>)</p></td>
-<td><p>01:24.199</p></td>
+<td><p>01:23.203</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="micro_aot.html#sphx-glr-how-to-work-with-microtvm-micro-aot-py"><span class="std std-ref">3. microTVM Ahead-of-Time (AOT) Compilation</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_aot.py</span></code>)</p></td>
-<td><p>00:12.556</p></td>
+<td><p>00:11.596</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="micro_custom_ide.html#sphx-glr-how-to-work-with-microtvm-micro-custom-ide-py"><span class="std std-ref">9. Bring microTVM to your own development environment</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_custom_ide.py</span></code>)</p></td>
-<td><p>00:08.646</p></td>
+<td><p>00:08.426</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="micro_tflite.html#sphx-glr-how-to-work-with-microtvm-micro-tflite-py"><span class="std std-ref">2. microTVM TFLite Tutorial</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_tflite.py</span></code>)</p></td>
-<td><p>00:08.479</p></td>
+<td><p>00:07.197</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="micro_ethosu.html#sphx-glr-how-to-work-with-microtvm-micro-ethosu-py"><span class="std std-ref">7. Running TVM on bare metal Arm(R) Cortex(R)-M55 CPU and Ethos(TM)-U55 NPU with CMSIS-NN</span></a> (<code class="docutils literal notranslate"><span class="pre">micro_ethosu.py</span></code>)</p></td>
diff --git a/docs/how_to/work_with_relay/sg_execution_times.html b/docs/how_to/work_with_relay/sg_execution_times.html
index 1091b450f6..79142cde92 100644
--- a/docs/how_to/work_with_relay/sg_execution_times.html
+++ b/docs/how_to/work_with_relay/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-relay-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:40.524</strong> total execution time for <strong>how_to_work_with_relay</strong> files:</p>
+<p><strong>00:37.278</strong> total execution time for <strong>how_to_work_with_relay</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 84%" />
@@ -369,19 +369,19 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="using_pipeline_executor.html#sphx-glr-how-to-work-with-relay-using-pipeline-executor-py"><span class="std std-ref">Using Pipeline Executor in Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_pipeline_executor.py</span></code>)</p></td>
-<td><p>00:35.233</p></td>
+<td><p>00:32.288</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="using_external_lib.html#sphx-glr-how-to-work-with-relay-using-external-lib-py"><span class="std std-ref">Using External Libraries in Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_external_lib.py</span></code>)</p></td>
-<td><p>00:03.381</p></td>
+<td><p>00:03.078</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="build_gcn.html#sphx-glr-how-to-work-with-relay-build-gcn-py"><span class="std std-ref">Building a Graph Convolutional Network</span></a> (<code class="docutils literal notranslate"><span class="pre">build_gcn.py</span></code>)</p></td>
-<td><p>00:01.903</p></td>
+<td><p>00:01.906</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="using_relay_viz.html#sphx-glr-how-to-work-with-relay-using-relay-viz-py"><span class="std std-ref">Use Relay Visualizer to Visualize Relay</span></a> (<code class="docutils literal notranslate"><span class="pre">using_relay_viz.py</span></code>)</p></td>
-<td><p>00:00.007</p></td>
+<td><p>00:00.006</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/work_with_schedules/intrin_math.html b/docs/how_to/work_with_schedules/intrin_math.html
index f90760d64d..abf6e7f52b 100644
--- a/docs/how_to/work_with_schedules/intrin_math.html
+++ b/docs/how_to/work_with_schedules/intrin_math.html
@@ -572,7 +572,7 @@ The following example customizes CUDA lowering rule for <code class="code docuti
 <a href="../../reference/api/python/ir.html#tvm.ir.register_intrin_lowering" title="tvm.ir.register_intrin_lowering" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-function"><span class="n">register_intrin_lowering</span></a><span class="p">(</span><span class="s2">&quot;tir.exp&quot;</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="s2">&quot;cuda&quot;</span><span class="p">,</span> <span class="n">f</span><span class="o">= [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&lt;function my_cuda_math_rule at 0x7f9b727650d0&gt;
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>&lt;function my_cuda_math_rule at 0x7f36489b5940&gt;
 </pre></div>
 </div>
 <p>Register the rule to TVM with override option to override existing rule.
diff --git a/docs/how_to/work_with_schedules/sg_execution_times.html b/docs/how_to/work_with_schedules/sg_execution_times.html
index d6298ee5cf..80dc9428cc 100644
--- a/docs/how_to/work_with_schedules/sg_execution_times.html
+++ b/docs/how_to/work_with_schedules/sg_execution_times.html
@@ -360,7 +360,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-work-with-schedules-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:05.713</strong> total execution time for <strong>how_to_work_with_schedules</strong> files:</p>
+<p><strong>00:05.350</strong> total execution time for <strong>how_to_work_with_schedules</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 83%" />
@@ -369,35 +369,35 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="intrin_math.html#sphx-glr-how-to-work-with-schedules-intrin-math-py"><span class="std std-ref">Intrinsics and Math Functions</span></a> (<code class="docutils literal notranslate"><span class="pre">intrin_math.py</span></code>)</p></td>
-<td><p>00:02.710</p></td>
+<td><p>00:02.491</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tensorize.html#sphx-glr-how-to-work-with-schedules-tensorize-py"><span class="std std-ref">Use Tensorize to Leverage Hardware Intrinsics</span></a> (<code class="docutils literal notranslate"><span class="pre">tensorize.py</span></code>)</p></td>
-<td><p>00:01.180</p></td>
+<td><p>00:01.164</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="reduction.html#sphx-glr-how-to-work-with-schedules-reduction-py"><span class="std std-ref">Reduction</span></a> (<code class="docutils literal notranslate"><span class="pre">reduction.py</span></code>)</p></td>
-<td><p>00:00.768</p></td>
+<td><p>00:00.709</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="scan.html#sphx-glr-how-to-work-with-schedules-scan-py"><span class="std std-ref">Scan and Recurrent Kernel</span></a> (<code class="docutils literal notranslate"><span class="pre">scan.py</span></code>)</p></td>
-<td><p>00:00.750</p></td>
+<td><p>00:00.703</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="extern_op.html#sphx-glr-how-to-work-with-schedules-extern-op-py"><span class="std std-ref">External Tensor Functions</span></a> (<code class="docutils literal notranslate"><span class="pre">extern_op.py</span></code>)</p></td>
-<td><p>00:00.129</p></td>
+<td><p>00:00.118</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="schedule_primitives.html#sphx-glr-how-to-work-with-schedules-schedule-primitives-py"><span class="std std-ref">Schedule Primitives in TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">schedule_primitives.py</span></code>)</p></td>
-<td><p>00:00.073</p></td>
+<td><p>00:00.068</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tedd.html#sphx-glr-how-to-work-with-schedules-tedd-py"><span class="std std-ref">Use Tensor Expression Debug Display (TEDD) for Visualization</span></a> (<code class="docutils literal notranslate"><span class="pre">tedd.py</span></code>)</p></td>
-<td><p>00:00.069</p></td>
+<td><p>00:00.064</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tuple_inputs.html#sphx-glr-how-to-work-with-schedules-tuple-inputs-py"><span class="std std-ref">Compute and Reduce with Tuple Inputs</span></a> (<code class="docutils literal notranslate"><span class="pre">tuple_inputs.py</span></code>)</p></td>
-<td><p>00:00.034</p></td>
+<td><p>00:00.031</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/install/nnpack.html b/docs/install/nnpack.html
index 262b273e47..61f3a9d084 100644
--- a/docs/install/nnpack.html
+++ b/docs/install/nnpack.html
@@ -249,7 +249,17 @@
               <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p>
 <ul class="current">
 <li class="toctree-l1 current"><a class="reference internal" href="index.html">Installing TVM</a><ul class="current">
-<li class="toctree-l2"><a class="reference internal" href="from_source.html">Install from Source</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="from_source.html">Install from Source</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="from_source.html#developers-get-source-from-github">Developers: Get Source from Github</a></li>
+<li class="toctree-l3"><a class="reference internal" href="from_source.html#build-the-shared-library">Build the Shared Library</a></li>
+<li class="toctree-l3"><a class="reference internal" href="from_source.html#python-package-installation">Python Package Installation</a></li>
+<li class="toctree-l3 current"><a class="reference internal" href="from_source.html#install-contrib-libraries">Install Contrib Libraries</a><ul class="current">
+<li class="toctree-l4 current"><a class="current reference internal" href="#">NNPACK Contrib Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="from_source.html#enable-c-tests">Enable C++ Tests</a></li>
+</ul>
+</li>
 <li class="toctree-l2"><a class="reference internal" href="docker.html">Docker Images</a></li>
 <li class="toctree-l2 current"><a class="current reference internal" href="#">NNPACK Contrib Installation</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="#conditions">Conditions</a></li>
diff --git a/docs/objects.inv b/docs/objects.inv
index 659f4836ed..72ea23c2fc 100644
Binary files a/docs/objects.inv and b/docs/objects.inv differ
diff --git a/docs/reference/api/doxygen/algorithm_8h_source.html b/docs/reference/api/doxygen/algorithm_8h_source.html
index 904c712ab4..7f3e57c628 100644
--- a/docs/reference/api/doxygen/algorithm_8h_source.html
+++ b/docs/reference/api/doxygen/algorithm_8h_source.html
@@ -161,7 +161,7 @@ $(function() {
 <div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}  <span class="comment">// namespace relay</span></div>
 <div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAY_ATTRS_ALGORITHM_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:833</div></div>
+<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:830</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1DataType_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></div><div class="ttdoc">Runtime primitive data type.</div><div class="ttdef"><b>Definition:</b> data_type.h:43</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1DataType_html_ab45f13dd70d982d9f977c79b6f7fac98"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html#ab45f13dd70d982d9f977c79b6f7fac98">tvm::runtime::DataType::Int</a></div><div class="ttdeci">static DataType Int(int bits, int lanes=1)</div><div class="ttdoc">Construct an int type.</div><div class="ttdef"><b>Definition:</b> data_type.h:212</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1Optional_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Optional.html">tvm::runtime::Optional</a></div><div class="ttdoc">Optional container that to represent to a Nullable variant of T.</div><div class="ttdef"><b>Definition:</b> optional.h:51</div></div>
diff --git a/docs/reference/api/doxygen/annotation_8h_source.html b/docs/reference/api/doxygen/annotation_8h_source.html
index 258f81166a..c635102aab 100644
--- a/docs/reference/api/doxygen/annotation_8h_source.html
+++ b/docs/reference/api/doxygen/annotation_8h_source.html
@@ -117,7 +117,7 @@ $(function() {
 <div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;}  <span class="comment">// namespace relay</span></div>
 <div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAY_ATTRS_ANNOTATION_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:833</div></div>
+<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:830</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1DataType_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></div><div class="ttdoc">Runtime primitive data type.</div><div class="ttdef"><b>Definition:</b> data_type.h:43</div></div>
 <div class="ttc" id="air_2attrs_8h_html"><div class="ttname"><a href="ir_2attrs_8h.html">attrs.h</a></div><div class="ttdoc">Helpers for attribute objects.</div></div>
 <div class="ttc" id="air_2attrs_8h_html_a578da113eb199bad72e26c03ad24832f"><div class="ttname"><a href="ir_2attrs_8h.html#a578da113eb199bad72e26c03ad24832f">TVM_ATTR_FIELD</a></div><div class="ttdeci">#define TVM_ATTR_FIELD(FieldName)</div><div class="ttdoc">Declare an attribute field.</div><div class="ttdef"><b>Definition:</b> attrs.h:76</div></div>
diff --git a/docs/reference/api/doxygen/axis__group__graph_8h_source.html b/docs/reference/api/doxygen/axis__group__graph_8h_source.html
index a9596bd579..1559b04b44 100644
--- a/docs/reference/api/doxygen/axis__group__graph_8h_source.html
+++ b/docs/reference/api/doxygen/axis__group__graph_8h_source.html
@@ -531,7 +531,7 @@ $(function() {
 <div class="ttc" id="aclasstvm_1_1runtime_1_1Map_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Map.html">tvm::runtime::Map</a></div><div class="ttdoc">Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics,...</div><div class="ttdef"><b>Definition:</b> map.h:1271</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1Map_html_aa713b1b421fda78159a0a66740943c6c"><div class="ttname"><a href="classtvm_1_1runtime_1_1Map.html#aa713b1b421fda78159a0a66740943c6c">tvm::runtime::Map::count</a></div><div class="ttdeci">size_t count(const K &amp;key) const</div><div class="ttdef"><b>Definition:</b> map.h:1356</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1Map_html_ad3a78d88e3a9292d11ce04ff2dfe0702"><div class="ttname"><a href="classtvm_1_1runtime_1_1Map.html#ad3a78d88e3a9292d11ce04ff2dfe0702">tvm::runtime::Map::Set</a></div><div class="ttdeci">void Set(const K &amp;key, const V &amp;value)</div><div class="ttdoc">set the Map.</div><div class="ttdef"><b>Definition:</b> map.h:1374</div></div>
-<div class="ttc" id="aclasstvm_1_1runtime_1_1Object_html_a90e90b3f4ba8a590baff78c75807bbc7"><div class="ttname"><a href="classtvm_1_1runtime_1_1Object.html#a90e90b3f4ba8a590baff78c75807bbc7">tvm::runtime::Object::IsInstance</a></div><div class="ttdeci">bool IsInstance() const</div><div class="ttdef"><b>Definition:</b> object.h:860</div></div>
+<div class="ttc" id="aclasstvm_1_1runtime_1_1Object_html_a90e90b3f4ba8a590baff78c75807bbc7"><div class="ttname"><a href="classtvm_1_1runtime_1_1Object.html#a90e90b3f4ba8a590baff78c75807bbc7">tvm::runtime::Object::IsInstance</a></div><div class="ttdeci">bool IsInstance() const</div><div class="ttdef"><b>Definition:</b> object.h:870</div></div>
 <div class="ttc" id="aclasstvm_1_1tir_1_1BufferAxisGraphExtractor_html"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferAxisGraphExtractor.html">tvm::tir::BufferAxisGraphExtractor</a></div><div class="ttdoc">Construct an axis group graph from a PrimFunc. Two buffer axis are connected if they are accessed by ...</div><div class="ttdef"><b>Definition:</b> axis_group_graph.h:67</div></div>
 <div class="ttc" id="aclasstvm_1_1tir_1_1BufferAxisGraphExtractor_html_a8deb81dd5625a7d76143f800d355b46a"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferAxisGraphExtractor.html#a8deb81dd5625a7d76143f800d355b46a">tvm::tir::BufferAxisGraphExtractor::GetTIRVarAxisGraph</a></div><div class="ttdeci">static std::vector&lt; std::vector&lt; TIRVarAxis &gt; &gt; GetTIRVarAxisGraph(const PrimFunc &amp;prim_func)</div><div class="ttdef"><b>Definition:</b> axis_group_graph.h:69</div></div>
 <div class="ttc" id="aclasstvm_1_1tir_1_1BufferAxisGraphExtractor_html_aff70b4e34f336ce2f7d22cd402840934"><div class="ttname"><a href="classtvm_1_1tir_1_1BufferAxisGraphExtractor.html#aff70b4e34f336ce2f7d22cd402840934">tvm::tir::BufferAxisGraphExtractor::DFSGraph</a></div><div class="ttdeci">void DFSGraph(BufferAxis cur, std::unordered_set&lt; BufferAxis, BufferAxisHash &gt; *visited, std::vector&lt; BufferAxis &gt; *buffer_axis_group)</div><div class="ttdef"><b>Definition:</b> axis_grou [...]
diff --git a/docs/reference/api/doxygen/bitserial_8h_source.html b/docs/reference/api/doxygen/bitserial_8h_source.html
index 581253788b..296d2367d3 100644
--- a/docs/reference/api/doxygen/bitserial_8h_source.html
+++ b/docs/reference/api/doxygen/bitserial_8h_source.html
@@ -195,7 +195,7 @@ $(function() {
 <div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;}  <span class="comment">// namespace relay</span></div>
 <div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAY_ATTRS_BITSERIAL_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:833</div></div>
+<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:830</div></div>
 <div class="ttc" id="aclasstvm_1_1PrimExpr_html"><div class="ttname"><a href="classtvm_1_1PrimExpr.html">tvm::PrimExpr</a></div><div class="ttdoc">Reference to PrimExprNode.</div><div class="ttdef"><b>Definition:</b> expr.h:114</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contiguous sequence of ObjectRefs.</div><div class="ttdef"><b>Definition:</b> array.h:289</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1DataType_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1DataType.html">tvm::runtime::DataType</a></div><div class="ttdoc">Runtime primitive data type.</div><div class="ttdef"><b>Definition:</b> data_type.h:43</div></div>
diff --git a/docs/reference/api/doxygen/block__scope_8h_source.html b/docs/reference/api/doxygen/block__scope_8h_source.html
index afab272e99..459156ed1b 100644
--- a/docs/reference/api/doxygen/block__scope_8h_source.html
+++ b/docs/reference/api/doxygen/block__scope_8h_source.html
@@ -243,9 +243,9 @@ $(function() {
 <div class="ttc" id="aclasstvm_1_1runtime_1_1Array_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Array.html">tvm::runtime::Array</a></div><div class="ttdoc">Array, container representing a contiguous sequence of ObjectRefs.</div><div class="ttdef"><b>Definition:</b> array.h:289</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1ObjectRef_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></div><div class="ttdoc">Base class of all object reference.</div><div class="ttdef"><b>Definition:</b> object.h:519</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1ObjectRef_html_ac261cdb80487fb29ac42b28678f8cbef"><div class="ttname"><a href="classtvm_1_1runtime_1_1ObjectRef.html#ac261cdb80487fb29ac42b28678f8cbef">tvm::runtime::ObjectRef::data_</a></div><div class="ttdeci">ObjectPtr&lt; Object &gt; data_</div><div class="ttdoc">Internal pointer that backs the reference.</div><div class="ttdef"><b>Definition:</b> object.h:605</div></div>
-<div class="ttc" id="aclasstvm_1_1runtime_1_1ObjectRef_html_ada5c6dfe7d5ca76e6f0714c4ef922539"><div class="ttname"><a href="classtvm_1_1runtime_1_1ObjectRef.html#ada5c6dfe7d5ca76e6f0714c4ef922539">tvm::runtime::ObjectRef::as</a></div><div class="ttdeci">const ObjectType * as() const</div><div class="ttdoc">Try to downcast the internal Object to a raw pointer of a corresponding type.</div><div class="ttdef"><b>Definition:</b> object.h:896</div></div>
+<div class="ttc" id="aclasstvm_1_1runtime_1_1ObjectRef_html_ada5c6dfe7d5ca76e6f0714c4ef922539"><div class="ttname"><a href="classtvm_1_1runtime_1_1ObjectRef.html#ada5c6dfe7d5ca76e6f0714c4ef922539">tvm::runtime::ObjectRef::as</a></div><div class="ttdeci">const ObjectType * as() const</div><div class="ttdoc">Try to downcast the internal Object to a raw pointer of a corresponding type.</div><div class="ttdef"><b>Definition:</b> object.h:906</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1Object_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></div><div class="ttdoc">base class of all object containers.</div><div class="ttdef"><b>Definition:</b> object.h:171</div></div>
-<div class="ttc" id="aclasstvm_1_1runtime_1_1Object_html_a90e90b3f4ba8a590baff78c75807bbc7"><div class="ttname"><a href="classtvm_1_1runtime_1_1Object.html#a90e90b3f4ba8a590baff78c75807bbc7">tvm::runtime::Object::IsInstance</a></div><div class="ttdeci">bool IsInstance() const</div><div class="ttdef"><b>Definition:</b> object.h:860</div></div>
+<div class="ttc" id="aclasstvm_1_1runtime_1_1Object_html_a90e90b3f4ba8a590baff78c75807bbc7"><div class="ttname"><a href="classtvm_1_1runtime_1_1Object.html#a90e90b3f4ba8a590baff78c75807bbc7">tvm::runtime::Object::IsInstance</a></div><div class="ttdeci">bool IsInstance() const</div><div class="ttdef"><b>Definition:</b> object.h:870</div></div>
 <div class="ttc" id="aclasstvm_1_1tir_1_1BlockScopeNode_html"><div class="ttname"><a href="classtvm_1_1tir_1_1BlockScopeNode.html">tvm::tir::BlockScopeNode</a></div><div class="ttdoc">An object with 1-to-1 correspondence with each block reference in the sref tree. This data structure ...</div><div class="ttdef"><b>Definition:</b> block_scope.h:257</div></div>
 <div class="ttc" id="aclasstvm_1_1tir_1_1BlockScopeNode_html_a312bcbd592ee4f234f82cce920af7fab"><div class="ttname"><a href="classtvm_1_1tir_1_1BlockScopeNode.html#a312bcbd592ee4f234f82cce920af7fab">tvm::tir::BlockScopeNode::GetDepsByDst</a></div><div class="ttdeci">Array&lt; Dependency &gt; GetDepsByDst(const StmtSRef &amp;dst) const</div><div class="ttdoc">Get all dependencies whose dst equals dst</div></div>
 <div class="ttc" id="aclasstvm_1_1tir_1_1BlockScopeNode_html_a460aa1dc8f4f608db1b7f529d51b9d29"><div class="ttname"><a href="classtvm_1_1tir_1_1BlockScopeNode.html#a460aa1dc8f4f608db1b7f529d51b9d29">tvm::tir::BlockScopeNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> block_scope.h:270</div></div>
diff --git a/docs/reference/api/doxygen/call_8h_source.html b/docs/reference/api/doxygen/call_8h_source.html
index 0d813e7c41..40997242f9 100644
--- a/docs/reference/api/doxygen/call_8h_source.html
+++ b/docs/reference/api/doxygen/call_8h_source.html
@@ -111,7 +111,7 @@ $(function() {
 <div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;}  <span class="comment">// namespace relay</span></div>
 <div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAY_ATTRS_CALL_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:833</div></div>
+<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:830</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1Map_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1Map.html">tvm::runtime::Map</a></div><div class="ttdoc">Map container of NodeRef-&gt;NodeRef in DSL graph. Map implements copy on write semantics,...</div><div class="ttdef"><b>Definition:</b> map.h:1271</div></div>
 <div class="ttc" id="air_2attrs_8h_html"><div class="ttname"><a href="ir_2attrs_8h.html">attrs.h</a></div><div class="ttdoc">Helpers for attribute objects.</div></div>
 <div class="ttc" id="air_2attrs_8h_html_a578da113eb199bad72e26c03ad24832f"><div class="ttname"><a href="ir_2attrs_8h.html#a578da113eb199bad72e26c03ad24832f">TVM_ATTR_FIELD</a></div><div class="ttdeci">#define TVM_ATTR_FIELD(FieldName)</div><div class="ttdoc">Declare an attribute field.</div><div class="ttdef"><b>Definition:</b> attrs.h:76</div></div>
diff --git a/docs/reference/api/doxygen/ccl_8h_source.html b/docs/reference/api/doxygen/ccl_8h_source.html
index 1d77f73e8a..33275ba4f6 100644
--- a/docs/reference/api/doxygen/ccl_8h_source.html
+++ b/docs/reference/api/doxygen/ccl_8h_source.html
@@ -125,7 +125,7 @@ $(function() {
 <div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;}  <span class="comment">// namespace tvm</span></div>
 <div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160; </div>
 <div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#endif  </span><span class="comment">// TVM_RELAX_ATTRS_CCL_H_</span></div>
-<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:833</div></div>
+<div class="ttc" id="aclasstvm_1_1AttrsNode_html"><div class="ttname"><a href="classtvm_1_1AttrsNode.html">tvm::AttrsNode</a></div><div class="ttdoc">The base class of the all the Use &quot;curiously recurring template pattern&quot;.</div><div class="ttdef"><b>Definition:</b> attrs.h:830</div></div>
 <div class="ttc" id="aclasstvm_1_1runtime_1_1String_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1String.html">tvm::runtime::String</a></div><div class="ttdoc">Reference to string objects.</div><div class="ttdef"><b>Definition:</b> string.h:98</div></div>
 <div class="ttc" id="air_2attrs_8h_html_a578da113eb199bad72e26c03ad24832f"><div class="ttname"><a href="ir_2attrs_8h.html#a578da113eb199bad72e26c03ad24832f">TVM_ATTR_FIELD</a></div><div class="ttdeci">#define TVM_ATTR_FIELD(FieldName)</div><div class="ttdoc">Declare an attribute field.</div><div class="ttdef"><b>Definition:</b> attrs.h:76</div></div>
 <div class="ttc" id="anamespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdoc">runtime implementation for LibTorch/TorchScript.</div><div class="ttdef"><b>Definition:</b> analyzer.h:36</div></div>
diff --git a/docs/reference/api/doxygen/classtvm_1_1Attrs.html b/docs/reference/api/doxygen/classtvm_1_1Attrs.html
index b4b94d3fca..3a5b44b5a5 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Attrs.html
+++ b/docs/reference/api/doxygen/classtvm_1_1Attrs.html
@@ -80,7 +80,7 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::Attrs:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Attrs__inherit__graph.svg" width="219" height="706"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1Attrs__inherit__graph.svg" width="240" height="720"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1Attrs__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1Attrs__inherit__graph.svg
index 7b0d4f65d5..75114563bc 100644
--- a/docs/reference/api/doxygen/classtvm_1_1Attrs__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1Attrs__inherit__graph.svg
@@ -4,22 +4,22 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::Attrs Pages: 1 -->
-<svg width="164pt" height="529pt"
- viewBox="0.00 0.00 164.00 529.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 525)">
+<svg width="180pt" height="540pt"
+ viewBox="0.00 0.00 180.00 540.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 536)">
 <title>tvm::Attrs</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-525 160,-525 160,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-536 176,-536 176,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="#bfbfbf" stroke="black" points="0,-171.5 0,-239.5 156,-239.5 156,-171.5 0,-171.5"/>
-<text text-anchor="middle" x="78" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="0,-220.5 156,-220.5 "/>
-<text text-anchor="middle" x="78" y="-208.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-201.5 156,-201.5 "/>
-<text text-anchor="start" x="8" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="#bfbfbf" stroke="black" points="8,-182.5 8,-250.5 164,-250.5 164,-182.5 8,-182.5"/>
+<text text-anchor="middle" x="86" y="-238.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="8,-231.5 164,-231.5 "/>
+<text text-anchor="middle" x="86" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="8,-212.5 164,-212.5 "/>
+<text text-anchor="start" x="16" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="16" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
@@ -27,17 +27,18 @@
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="0,-0.5 0,-134.5 156,-134.5 156,-0.5 0,-0.5"/>
-<text text-anchor="middle" x="78" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="0,-115.5 156,-115.5 "/>
-<text text-anchor="middle" x="78" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-96.5 156,-96.5 "/>
-<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<polygon fill="white" stroke="black" points="0,-0.5 0,-145.5 172,-145.5 172,-0.5 0,-0.5"/>
+<text text-anchor="middle" x="86" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="0,-126.5 172,-126.5 "/>
+<text text-anchor="middle" x="86" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="0,-107.5 172,-107.5 "/>
+<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
 <text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
 <text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
 <text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
@@ -46,44 +47,44 @@
 <!-- Node1&#45;&gt;Node3 -->
 <g id="edge2" class="edge">
 <title>Node1&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M78,-160.96C78,-152.57 78,-143.6 78,-134.68"/>
-<polygon fill="none" stroke="midnightblue" points="74.5,-161.23 78,-171.23 81.5,-161.23 74.5,-161.23"/>
+<path fill="none" stroke="midnightblue" d="M86,-172.09C86,-163.73 86,-154.76 86,-145.77"/>
+<polygon fill="none" stroke="midnightblue" points="82.5,-172.32 86,-182.32 89.5,-172.32 82.5,-172.32"/>
 </g>
 <!-- Node2 -->
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="11,-276.5 11,-520.5 145,-520.5 145,-276.5 11,-276.5"/>
-<text text-anchor="middle" x="78" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="11,-501.5 145,-501.5 "/>
-<text text-anchor="start" x="19" y="-489.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<text text-anchor="start" x="19" y="-478.5" font-family="Helvetica,sans-Serif" font-size="10.00"># data_</text>
-<polyline fill="none" stroke="black" points="11,-471.5 145,-471.5 "/>
-<text text-anchor="start" x="19" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="19" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="19" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="19" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="19" y="-415.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="19" y="-404.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="19" y="-393.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="19" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="19" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="19" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="19" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="19" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="19" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="19" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="19" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="19" y="-294.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="19" y="-283.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="19,-287.5 19,-531.5 153,-531.5 153,-287.5 19,-287.5"/>
+<text text-anchor="middle" x="86" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="19,-512.5 153,-512.5 "/>
+<text text-anchor="start" x="27" y="-500.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<text text-anchor="start" x="27" y="-489.5" font-family="Helvetica,sans-Serif" font-size="10.00"># data_</text>
+<polyline fill="none" stroke="black" points="19,-482.5 153,-482.5 "/>
+<text text-anchor="start" x="27" y="-470.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="27" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="27" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="27" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="27" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="27" y="-415.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="27" y="-404.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="27" y="-393.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="27" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="27" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="27" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="27" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="27" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="27" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="27" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="27" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="27" y="-294.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M78,-266.15C78,-256.63 78,-247.65 78,-239.7"/>
-<polygon fill="none" stroke="midnightblue" points="74.5,-266.27 78,-276.27 81.5,-266.27 74.5,-266.27"/>
+<path fill="none" stroke="midnightblue" d="M86,-277.15C86,-267.63 86,-258.65 86,-250.7"/>
+<polygon fill="none" stroke="midnightblue" points="82.5,-277.27 86,-287.27 89.5,-277.27 82.5,-277.27"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode.html b/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode.html
index d4e298cd39..651ae25e65 100644
--- a/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::BaseFuncNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::BaseFuncNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1BaseFuncNode__coll__graph.svg" width="1008" height="2236"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1BaseFuncNode__coll__graph.svg" width="1014" height="2251"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode__coll__graph.svg
index 109854a0ed..66b1bb955b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1BaseFuncNode__coll__graph.svg
@@ -4,27 +4,27 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::BaseFuncNode Pages: 1 -->
-<svg width="756pt" height="1677pt"
- viewBox="0.00 0.00 756.00 1677.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 1673)">
+<svg width="760pt" height="1688pt"
+ viewBox="0.00 0.00 760.00 1688.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 1684)">
 <title>tvm::BaseFuncNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1673 752,-1673 752,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1684 756,-1684 756,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Base node of all functions.">
-<polygon fill="#bfbfbf" stroke="black" points="472.5,-0.5 472.5,-123.5 645.5,-123.5 645.5,-0.5 472.5,-0.5"/>
-<text text-anchor="middle" x="559" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
-<polyline fill="none" stroke="black" points="472.5,-104.5 645.5,-104.5 "/>
-<text text-anchor="start" x="480.5" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="480.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="472.5,-74.5 645.5,-74.5 "/>
-<text text-anchor="start" x="480.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="480.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="480.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="480.5" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
-<text text-anchor="start" x="480.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="480.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#bfbfbf" stroke="black" points="476.5,-0.5 476.5,-123.5 649.5,-123.5 649.5,-0.5 476.5,-0.5"/>
+<text text-anchor="middle" x="563" y="-111.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
+<polyline fill="none" stroke="black" points="476.5,-104.5 649.5,-104.5 "/>
+<text text-anchor="start" x="484.5" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="484.5" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="476.5,-74.5 649.5,-74.5 "/>
+<text text-anchor="start" x="484.5" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="484.5" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="484.5" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="484.5" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
+<text text-anchor="start" x="484.5" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="484.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
@@ -49,185 +49,186 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M502.51,-152.4C508.55,-142.84 514.76,-133.01 520.75,-123.53"/>
-<polygon fill="none" stroke="midnightblue" points="499.4,-150.76 497.02,-161.08 505.32,-154.5 499.4,-150.76"/>
+<path fill="none" stroke="midnightblue" d="M503.99,-152.69C510.34,-143.04 516.87,-133.11 523.17,-123.53"/>
+<polygon fill="none" stroke="midnightblue" points="501.04,-150.81 498.46,-161.08 506.88,-154.65 501.04,-150.81"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1BaseExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="black" points="120.5,-445.5 120.5,-568.5 293.5,-568.5 293.5,-445.5 120.5,-445.5"/>
-<text text-anchor="middle" x="207" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="120.5,-549.5 293.5,-549.5 "/>
-<text text-anchor="start" x="128.5" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="128.5" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="128.5" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="128.5" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="128.5" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="128.5" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="120.5,-475.5 293.5,-475.5 "/>
-<text text-anchor="start" x="128.5" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="128.5" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="120.5,-456.5 120.5,-579.5 293.5,-579.5 293.5,-456.5 120.5,-456.5"/>
+<text text-anchor="middle" x="207" y="-567.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="120.5,-560.5 293.5,-560.5 "/>
+<text text-anchor="start" x="128.5" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="128.5" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="128.5" y="-526.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="128.5" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="128.5" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="128.5" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="120.5,-486.5 293.5,-486.5 "/>
+<text text-anchor="start" x="128.5" y="-474.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="128.5" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M232.12,-435.93C251.2,-390.5 281.15,-332.45 322,-292 337.21,-276.93 356.15,-264.22 375.14,-253.83"/>
-<polygon fill="none" stroke="midnightblue" points="228.79,-434.84 228.22,-445.42 235.26,-437.51 228.79,-434.84"/>
+<path fill="none" stroke="midnightblue" d="M229.96,-446.85C248.6,-398.58 278.91,-335.57 322,-292 337.15,-276.68 356.18,-263.84 375.27,-253.41"/>
+<polygon fill="none" stroke="midnightblue" points="226.65,-445.7 226.39,-456.29 233.2,-448.18 226.65,-445.7"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers.">
-<polygon fill="white" stroke="black" points="174,-784.5 174,-1171.5 358,-1171.5 358,-784.5 174,-784.5"/>
-<text text-anchor="middle" x="266" y="-1159.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="174,-1152.5 358,-1152.5 "/>
-<text text-anchor="start" x="182" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="182" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="182" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="182" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="182" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="182" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="182" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="182" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="182" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="182" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="182" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="182" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="182" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="182" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="174,-990.5 358,-990.5 "/>
-<text text-anchor="start" x="182" y="-978.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="182" y="-967.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="182" y="-956.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="182" y="-945.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="182" y="-934.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="174,-795.5 174,-1182.5 358,-1182.5 358,-795.5 174,-795.5"/>
+<text text-anchor="middle" x="266" y="-1170.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="174,-1163.5 358,-1163.5 "/>
+<text text-anchor="start" x="182" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="182" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="182" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="182" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="182" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="182" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="182" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="182" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="182" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="182" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="182" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="182" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="182" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="182" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="174,-1001.5 358,-1001.5 "/>
+<text text-anchor="start" x="182" y="-989.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="182" y="-978.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="182" y="-967.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="182" y="-956.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="182" y="-945.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="182" y="-934.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="182" y="-923.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="182" y="-912.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="182" y="-901.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="182" y="-901.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="182" y="-890.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="182" y="-879.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="182" y="-868.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="182" y="-857.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="182" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="182" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="182" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="182" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="182" y="-802.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="182" y="-791.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-879.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="182" y="-868.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="182" y="-857.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="182" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="182" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="182" y="-802.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M222.14,-774.25C221.74,-771.49 221.36,-768.73 221,-766 212.07,-698.86 208.81,-621.16 207.63,-568.72"/>
-<polygon fill="none" stroke="midnightblue" points="218.7,-774.94 223.63,-784.32 225.63,-773.91 218.7,-774.94"/>
+<path fill="none" stroke="midnightblue" d="M222.14,-785.25C221.74,-782.49 221.36,-779.73 221,-777 212.07,-709.86 208.81,-632.16 207.63,-579.72"/>
+<polygon fill="none" stroke="midnightblue" points="218.7,-785.94 223.63,-795.32 225.63,-784.91 218.7,-785.94"/>
 </g>
 <!-- Node4&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M358.28,-1011.92C369.02,-1005.66 376,-994.36 376,-978 376,-967.01 372.85,-958.3 367.52,-951.87"/>
-<polygon fill="none" stroke="#404040" points="367.46,-951.81 360.29,-951 358.28,-944.08 365.45,-944.89 367.46,-951.81"/>
-<text text-anchor="middle" x="402" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M358.28,-1022.92C369.02,-1016.66 376,-1005.36 376,-989 376,-978.01 372.85,-969.3 367.52,-962.87"/>
+<polygon fill="none" stroke="#404040" points="367.46,-962.81 360.29,-962 358.28,-955.08 365.45,-955.89 367.46,-962.81"/>
+<text text-anchor="middle" x="402" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="0,-933 0,-1023 156,-1023 156,-933 0,-933"/>
-<text text-anchor="middle" x="78" y="-1011" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="0,-1004 156,-1004 "/>
-<text text-anchor="middle" x="78" y="-992" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-985 156,-985 "/>
-<text text-anchor="start" x="8" y="-973" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="8" y="-962" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="8" y="-951" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-940" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="0,-944 0,-1034 156,-1034 156,-944 0,-944"/>
+<text text-anchor="middle" x="78" y="-1022" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="0,-1015 156,-1015 "/>
+<text text-anchor="middle" x="78" y="-1003" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="0,-996 156,-996 "/>
+<text text-anchor="start" x="8" y="-984" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="8" y="-973" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="8" y="-962" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-951" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node3 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M85.34,-932.88C98.18,-859.71 127.48,-709.21 170,-587 170.82,-584.65 171.68,-582.28 172.58,-579.9"/>
-<polygon fill="none" stroke="#404040" points="172.59,-579.87 171.1,-572.81 177.04,-568.72 178.53,-575.78 172.59,-579.87"/>
-<text text-anchor="middle" x="187.5" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M85.34,-943.88C98.18,-870.71 127.48,-720.21 170,-598 170.82,-595.65 171.68,-593.28 172.58,-590.9"/>
+<polygon fill="none" stroke="#404040" points="172.59,-590.87 171.1,-583.81 177.04,-579.72 178.53,-586.78 172.59,-590.87"/>
+<text text-anchor="middle" x="187.5" y="-685" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="427,-1209.5 427,-1442.5 561,-1442.5 561,-1209.5 427,-1209.5"/>
-<text text-anchor="middle" x="494" y="-1430.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="427,-1423.5 561,-1423.5 "/>
-<text text-anchor="start" x="435" y="-1411.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="427,-1404.5 561,-1404.5 "/>
+<polygon fill="white" stroke="black" points="427,-1220.5 427,-1453.5 561,-1453.5 561,-1220.5 427,-1220.5"/>
+<text text-anchor="middle" x="494" y="-1441.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="427,-1434.5 561,-1434.5 "/>
+<text text-anchor="start" x="435" y="-1422.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="427,-1415.5 561,-1415.5 "/>
+<text text-anchor="start" x="435" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="435" y="-1392.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="435" y="-1381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="435" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="435" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="435" y="-1348.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="435" y="-1337.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="435" y="-1326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="435" y="-1315.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="435" y="-1304.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="435" y="-1293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="435" y="-1282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="435" y="-1381.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="435" y="-1370.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="435" y="-1359.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="435" y="-1348.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="435" y="-1337.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="435" y="-1326.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="435" y="-1315.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="435" y="-1304.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="435" y="-1293.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="435" y="-1282.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="435" y="-1271.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="435" y="-1260.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="435" y="-1249.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="435" y="-1238.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="435" y="-1227.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="435" y="-1216.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="435" y="-1260.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="435" y="-1249.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="435" y="-1238.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="435" y="-1227.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node2 -->
 <g id="edge8" class="edge">
 <title>Node6&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M515.88,-1209.28C544.19,-1039.96 584.36,-715.45 535,-445 524.94,-389.85 505.03,-329.53 488.55,-285.02"/>
-<polygon fill="none" stroke="#404040" points="488.54,-285 482.69,-280.79 484.33,-273.76 490.18,-277.98 488.54,-285"/>
-<text text-anchor="middle" x="601" y="-674" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
+<path fill="none" stroke="#404040" d="M515.39,-1220.36C543.09,-1051.15 582.52,-726.78 535,-456 524.65,-397.05 504.08,-332.24 487.4,-285.23"/>
+<polygon fill="none" stroke="#404040" points="487.31,-284.98 481.52,-280.68 483.26,-273.68 489.05,-277.98 487.31,-284.98"/>
+<text text-anchor="middle" x="600" y="-685" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M417.24,-1306.09C344.09,-1284.56 235.03,-1242.86 165,-1172 123.92,-1130.43 100.31,-1066.05 88.31,-1023.23"/>
-<polygon fill="none" stroke="midnightblue" points="416.29,-1309.45 426.87,-1308.86 418.23,-1302.73 416.29,-1309.45"/>
+<path fill="none" stroke="midnightblue" d="M417.24,-1317.09C344.09,-1295.56 235.03,-1253.86 165,-1183 123.92,-1141.43 100.31,-1077.05 88.31,-1034.23"/>
+<polygon fill="none" stroke="midnightblue" points="416.29,-1320.45 426.87,-1319.86 418.23,-1313.73 416.29,-1320.45"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="black" points="222,-642.5 222,-710.5 378,-710.5 378,-642.5 222,-642.5"/>
-<text text-anchor="middle" x="300" y="-698.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<polyline fill="none" stroke="black" points="222,-691.5 378,-691.5 "/>
-<text text-anchor="middle" x="300" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="222,-672.5 378,-672.5 "/>
-<text text-anchor="start" x="230" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="230" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="222,-653.5 222,-721.5 378,-721.5 378,-653.5 222,-653.5"/>
+<text text-anchor="middle" x="300" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<polyline fill="none" stroke="black" points="222,-702.5 378,-702.5 "/>
+<text text-anchor="middle" x="300" y="-690.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="222,-683.5 378,-683.5 "/>
+<text text-anchor="start" x="230" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="230" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node8 -->
 <g id="edge10" class="edge">
 <title>Node6&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M473.56,-1199.37C472.28,-1190.12 471.08,-1180.92 470,-1172 459.62,-1086.09 490.71,-851.84 437,-784 421.03,-763.83 403.66,-779.88 382,-766 359.43,-751.53 338.93,-729.41 324.07,-710.9"/>
-<polygon fill="none" stroke="midnightblue" points="470.12,-1200 474.98,-1209.42 477.05,-1199.03 470.12,-1200"/>
+<path fill="none" stroke="midnightblue" d="M473.56,-1210.37C472.28,-1201.12 471.08,-1191.92 470,-1183 459.62,-1097.09 490.71,-862.84 437,-795 421.03,-774.83 403.66,-790.88 382,-777 359.43,-762.53 338.93,-740.41 324.07,-721.9"/>
+<polygon fill="none" stroke="midnightblue" points="470.12,-1211 474.98,-1220.42 477.05,-1210.03 470.12,-1211"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="383.5,-587.5 383.5,-765.5 540.5,-765.5 540.5,-587.5 383.5,-587.5"/>
-<text text-anchor="start" x="391.5" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="462" y="-742.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
-<polyline fill="none" stroke="black" points="383.5,-735.5 540.5,-735.5 "/>
-<text text-anchor="start" x="391.5" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="383.5,-716.5 540.5,-716.5 "/>
+<polygon fill="white" stroke="black" points="383.5,-598.5 383.5,-776.5 540.5,-776.5 540.5,-598.5 383.5,-598.5"/>
+<text text-anchor="start" x="391.5" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="462" y="-753.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
+<polyline fill="none" stroke="black" points="383.5,-746.5 540.5,-746.5 "/>
+<text text-anchor="start" x="391.5" y="-734.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="383.5,-727.5 540.5,-727.5 "/>
+<text text-anchor="start" x="391.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="391.5" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="391.5" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="391.5" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
@@ -235,116 +236,116 @@
 <text text-anchor="start" x="391.5" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="391.5" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="391.5" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="391.5" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="391.5" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="391.5" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="391.5" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="391.5" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<text text-anchor="start" x="391.5" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node9 -->
 <g id="edge12" class="edge">
 <title>Node6&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M489.51,-1199.27C485.34,-1089.59 478.49,-926.2 470,-784 469.64,-777.98 469.24,-771.78 468.82,-765.53"/>
-<polygon fill="none" stroke="midnightblue" points="486.02,-1199.53 489.9,-1209.39 493.02,-1199.26 486.02,-1199.53"/>
+<path fill="none" stroke="midnightblue" d="M489.51,-1210.27C485.34,-1100.59 478.49,-937.2 470,-795 469.64,-788.98 469.24,-782.78 468.82,-776.53"/>
+<polygon fill="none" stroke="midnightblue" points="486.02,-1210.53 489.9,-1220.39 493.02,-1210.26 486.02,-1210.53"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="592,-944 592,-1012 748,-1012 748,-944 592,-944"/>
-<text text-anchor="middle" x="670" y="-1000" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="592,-993 748,-993 "/>
-<text text-anchor="middle" x="670" y="-981" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="592,-974 748,-974 "/>
-<text text-anchor="start" x="600" y="-962" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="600" y="-951" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="592,-955 592,-1023 748,-1023 748,-955 592,-955"/>
+<text text-anchor="middle" x="670" y="-1011" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="592,-1004 748,-1004 "/>
+<text text-anchor="middle" x="670" y="-992" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="592,-985 748,-985 "/>
+<text text-anchor="start" x="600" y="-973" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="600" y="-962" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node11 -->
 <g id="edge15" class="edge">
 <title>Node6&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M566.33,-1212.26C570.39,-1205.13 574.31,-1198 578,-1191 610.34,-1129.58 640.99,-1054.36 657.46,-1012.04"/>
-<polygon fill="none" stroke="midnightblue" points="563.09,-1210.88 561.13,-1221.29 569.15,-1214.37 563.09,-1210.88"/>
+<path fill="none" stroke="midnightblue" d="M566.33,-1223.26C570.39,-1216.13 574.31,-1209 578,-1202 610.34,-1140.58 640.99,-1065.36 657.46,-1023.04"/>
+<polygon fill="none" stroke="midnightblue" points="563.09,-1221.88 561.13,-1232.29 569.15,-1225.37 563.09,-1221.88"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="424,-1490.5 424,-1668.5 564,-1668.5 564,-1490.5 424,-1490.5"/>
-<text text-anchor="start" x="432" y="-1656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="494" y="-1645.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="424,-1638.5 564,-1638.5 "/>
-<text text-anchor="middle" x="494" y="-1626.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="424,-1619.5 564,-1619.5 "/>
+<polygon fill="white" stroke="black" points="424,-1501.5 424,-1679.5 564,-1679.5 564,-1501.5 424,-1501.5"/>
+<text text-anchor="start" x="432" y="-1667.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="494" y="-1656.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="424,-1649.5 564,-1649.5 "/>
+<text text-anchor="middle" x="494" y="-1637.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="424,-1630.5 564,-1630.5 "/>
+<text text-anchor="start" x="432" y="-1618.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="432" y="-1607.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="432" y="-1596.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="432" y="-1585.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="432" y="-1574.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="432" y="-1563.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="432" y="-1552.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="432" y="-1541.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="432" y="-1530.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="432" y="-1519.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="432" y="-1508.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="432" y="-1497.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="432" y="-1552.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="432" y="-1541.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="432" y="-1530.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="432" y="-1519.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="432" y="-1508.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="#404040" d="M494,-1490.18C494,-1478.84 494,-1467.05 494,-1455.23"/>
-<polygon fill="none" stroke="#404040" points="494,-1454.91 490,-1448.91 494,-1442.91 498,-1448.91 494,-1454.91"/>
-<text text-anchor="middle" x="513.5" y="-1464" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M494,-1501.18C494,-1489.84 494,-1478.05 494,-1466.23"/>
+<polygon fill="none" stroke="#404040" points="494,-1465.91 490,-1459.91 494,-1453.91 498,-1459.91 494,-1465.91"/>
+<text text-anchor="middle" x="513.5" y="-1475" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node8&#45;&gt;Node2 -->
 <g id="edge9" class="edge">
 <title>Node8&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M309.92,-642.47C323.58,-597.52 349.29,-514.72 374,-445 393.25,-390.68 417.02,-329.84 434.99,-284.9"/>
-<polygon fill="none" stroke="#404040" points="435.08,-284.68 433.6,-277.62 439.55,-273.54 441.03,-280.6 435.08,-284.68"/>
-<text text-anchor="middle" x="416" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
+<path fill="none" stroke="#404040" d="M310.2,-653.14C324.07,-608.17 349.91,-525.72 374,-456 394.04,-398.02 418.37,-332.71 436.36,-285.27"/>
+<polygon fill="none" stroke="#404040" points="436.41,-285.13 434.81,-278.1 440.68,-273.92 442.28,-280.95 436.41,-285.13"/>
+<text text-anchor="middle" x="416" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
 </g>
 <!-- Node9&#45;&gt;Node2 -->
 <g id="edge11" class="edge">
 <title>Node9&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M462,-587.39C462,-499.37 462,-365.98 462,-286.03"/>
-<polygon fill="none" stroke="#404040" points="462,-285.67 458,-279.67 462,-273.67 466,-279.67 462,-285.67"/>
-<text text-anchor="middle" x="496.5" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
+<path fill="none" stroke="#404040" d="M462,-598.47C462,-507.68 462,-368.07 462,-285.76"/>
+<polygon fill="none" stroke="#404040" points="462,-285.55 458,-279.55 462,-273.55 466,-279.55 462,-285.55"/>
+<text text-anchor="middle" x="496.5" y="-515.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="583,-292.5 583,-426.5 739,-426.5 739,-292.5 583,-292.5"/>
-<text text-anchor="middle" x="661" y="-414.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="583,-407.5 739,-407.5 "/>
-<text text-anchor="middle" x="661" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="583,-388.5 739,-388.5 "/>
-<text text-anchor="start" x="591" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="591" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="591" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="591" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="591" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="591" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="591" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="591" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="580,-292.5 580,-437.5 752,-437.5 752,-292.5 580,-292.5"/>
+<text text-anchor="middle" x="666" y="-425.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="580,-418.5 752,-418.5 "/>
+<text text-anchor="middle" x="666" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="580,-399.5 752,-399.5 "/>
+<text text-anchor="start" x="588" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="588" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="588" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="588" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="588" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="588" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="588" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="588" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="588" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node10&#45;&gt;Node1 -->
 <g id="edge13" class="edge">
 <title>Node10&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M638.11,-292.18C621.99,-245.5 600.43,-183.03 583.89,-135.1"/>
-<polygon fill="none" stroke="#404040" points="583.82,-134.91 578.08,-130.54 579.91,-123.56 585.64,-127.93 583.82,-134.91"/>
-<text text-anchor="middle" x="648" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M641.46,-292.29C625.19,-244.74 603.92,-182.57 587.63,-134.97"/>
+<polygon fill="none" stroke="#404040" points="587.59,-134.86 581.86,-130.48 583.71,-123.51 589.43,-127.89 587.59,-134.86"/>
+<text text-anchor="middle" x="651" y="-215" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node11&#45;&gt;Node10 -->
 <g id="edge14" class="edge">
 <title>Node11&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M669.37,-933.82C667.82,-827.71 663.82,-553.57 661.97,-426.71"/>
-<polygon fill="none" stroke="midnightblue" points="665.87,-933.91 669.52,-943.85 672.87,-933.8 665.87,-933.91"/>
+<path fill="none" stroke="midnightblue" d="M669.72,-944.72C669.04,-839.17 667.3,-567.67 666.46,-437.58"/>
+<polygon fill="none" stroke="midnightblue" points="666.22,-945.02 669.79,-955 673.22,-944.98 666.22,-945.02"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1DictAttrs-members.html b/docs/reference/api/doxygen/classtvm_1_1DictAttrs-members.html
index d76641f81f..028fdc4363 100644
--- a/docs/reference/api/doxygen/classtvm_1_1DictAttrs-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1DictAttrs-members.html
@@ -78,7 +78,7 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aa5c355fbb7d2f7402ee360dba8a52cdd">ContainerType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ac261cdb80487fb29ac42b28678f8cbef">data_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a17d8d5ad92691f9e18e3e0ae8ef69e4f">defined</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html#a3999d7e2b942c8f9993f6d51cb8f3ded">DictAttrs</a>(Map&lt; String, ObjectRef &gt; dict)</td><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html">tvm::DictAttrs</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html#a5855433b73cec99f7d742b556c01d8ed">DictAttrs</a>(Map&lt; String, ObjectRef &gt; dict={})</td><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html">tvm::DictAttrs</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#acd04bb22a6861e9952c344ee8547411f">DowncastNoCheck</a>(ObjectRef ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a22e5bb9d64dbc773bb9263b70882239e">FFIClearAfterMove</a>(ObjectRef *ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aadbc0886ffa80162ff31eefd0431ba09">get</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -95,8 +95,8 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#affdf1b8cdb36e140de7b3ad7064e4617">operator==</a>(const ObjectRef &amp;other) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ae31a5b9f40781d60a2901994ead700e8">same_as</a>(const ObjectRef &amp;other) const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html#adcb7e5ecede9d976bda30fb3f762c953">TVM_DEFINE_OBJECT_REF_COW_METHOD</a>(DictAttrsNode)</td><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html">tvm::DictAttrs</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html#a64c05cc1cf96bb2d876348a2721fa609">TVM_DEFINE_OBJECT_REF_METHODS</a>(DictAttrs, Attrs, DictAttrsNode)</td><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html">tvm::DictAttrs</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1Attrs.html#a1bf8ffc23955fe9b066d838ca41819e1">tvm::Attrs::TVM_DEFINE_OBJECT_REF_METHODS</a>(Attrs, ObjectRef, BaseAttrsNode)</td><td class="entry"><a class="el" href="classtvm_1_1Attrs.html">tvm::Attrs</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1Attrs.html#a1bf8ffc23955fe9b066d838ca41819e1">TVM_DEFINE_OBJECT_REF_METHODS</a>(Attrs, ObjectRef, BaseAttrsNode)</td><td class="entry"><a class="el" href="classtvm_1_1Attrs.html">tvm::Attrs</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html#afcb5444a0a4ad51f9b2968368e17aa79">TVM_DEFINE_OBJECT_REF_METHODS_WITHOUT_DEFAULT_CONSTRUCTOR</a>(DictAttrs, Attrs, DictAttrsNode)</td><td class="entry"><a class="el" href="classtvm_1_1DictAttrs.html">tvm::DictAttrs</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a4e7cdb1574b93a59e784d70aa47b8da7">unique</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a0ae0da21d247cd87ea94fe3777c4405e">use_count</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
diff --git a/docs/reference/api/doxygen/classtvm_1_1DictAttrs.html b/docs/reference/api/doxygen/classtvm_1_1DictAttrs.html
index 8b95c58a4c..316c91b4ca 100644
--- a/docs/reference/api/doxygen/classtvm_1_1DictAttrs.html
+++ b/docs/reference/api/doxygen/classtvm_1_1DictAttrs.html
@@ -80,21 +80,21 @@ $(function() {
 <div class="dynheader">
 Inheritance diagram for tvm::DictAttrs:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1DictAttrs__inherit__graph.svg" width="219" height="706"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1DictAttrs__inherit__graph.svg" width="240" height="720"><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::DictAttrs:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1DictAttrs__coll__graph.svg" width="219" height="995"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1DictAttrs__coll__graph.svg" width="240" height="1010"><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 name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a3999d7e2b942c8f9993f6d51cb8f3ded"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrs.html#a3999d7e2b942c8f9993f6d51cb8f3ded">DictAttrs</a> (<a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a> &gt; dict)</td></tr>
-<tr class="memdesc:a3999d7e2b942c8f9993f6d51cb8f3ded"><td class="mdescLeft">&#160;</td><td class="mdescRight">Consruct a <a class="el" href="classtvm_1_1Attrs.html" title="Managed reference to BaseAttrsNode.">Attrs</a> backed by <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior,...">DictAttrsNode</a>.  <a href="classtvm_1_1DictAttrs.html#a3999d7e2b942c8f9993f6d51cb8f3ded">More...< [...]
-<tr class="separator:a3999d7e2b942c8f9993f6d51cb8f3ded"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5855433b73cec99f7d742b556c01d8ed"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrs.html#a5855433b73cec99f7d742b556c01d8ed">DictAttrs</a> (<a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a> &gt; dict={})</td></tr>
+<tr class="memdesc:a5855433b73cec99f7d742b556c01d8ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Consruct a <a class="el" href="classtvm_1_1Attrs.html" title="Managed reference to BaseAttrsNode.">Attrs</a> backed by <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior,...">DictAttrsNode</a>.  <a href="classtvm_1_1DictAttrs.html#a5855433b73cec99f7d742b556c01d8ed">More...< [...]
+<tr class="separator:a5855433b73cec99f7d742b556c01d8ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a4bff303c0d4e87ed01ffe4cdb36b05d0"><td class="memTemplParams" colspan="2">template&lt;typename TObjectRef &gt; </td></tr>
 <tr class="memitem:a4bff303c0d4e87ed01ffe4cdb36b05d0"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt; TObjectRef &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrs.html#a4bff303c0d4e87ed01ffe4cdb36b05d0">GetAttr</a> (const std::string &amp;attr_key, <a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt; TObjectRef &gt; default_value=<a [...]
 <tr class="memdesc:a4bff303c0d4e87ed01ffe4cdb36b05d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a function attribute.  <a href="classtvm_1_1DictAttrs.html#a4bff303c0d4e87ed01ffe4cdb36b05d0">More...</a><br /></td></tr>
@@ -105,8 +105,8 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:a45e524ce0f8ae389341ec37e468d887d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrs.html#a45e524ce0f8ae389341ec37e468d887d">HasNonzeroAttr</a> (const std::string &amp;attr_key) const</td></tr>
 <tr class="memdesc:a45e524ce0f8ae389341ec37e468d887d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the function has an non-zero integer attr.  <a href="classtvm_1_1DictAttrs.html#a45e524ce0f8ae389341ec37e468d887d">More...</a><br /></td></tr>
 <tr class="separator:a45e524ce0f8ae389341ec37e468d887d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a64c05cc1cf96bb2d876348a2721fa609"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrs.html#a64c05cc1cf96bb2d876348a2721fa609">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>, <a class="el" href="classtvm_1_1Attrs.html">Attrs</a>, <a class="el" href="classtvm_1_1DictAttrsNode.html">DictAttrsNode</a>)</td></tr>
-<tr class="separator:a64c05cc1cf96bb2d876348a2721fa609"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afcb5444a0a4ad51f9b2968368e17aa79"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrs.html#afcb5444a0a4ad51f9b2968368e17aa79">TVM_DEFINE_OBJECT_REF_METHODS_WITHOUT_DEFAULT_CONSTRUCTOR</a> (<a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>, <a class="el" href="classtvm_1_1Attrs.html">Attrs</a>, <a class="el" href="classtvm_1_1DictAttrsNode.html">DictAttrsNode</a>)</ [...]
+<tr class="separator:afcb5444a0a4ad51f9b2968368e17aa79"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:adcb7e5ecede9d976bda30fb3f762c953"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1DictAttrs.html#adcb7e5ecede9d976bda30fb3f762c953">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1DictAttrsNode.html">DictAttrsNode</a>)</td></tr>
 <tr class="separator:adcb7e5ecede9d976bda30fb3f762c953"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_methods_classtvm_1_1Attrs"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classtvm_1_1Attrs')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classtvm_1_1Attrs.html">tvm::Attrs</a></td></tr>
@@ -183,8 +183,8 @@ Additional Inherited Members</h2></td></tr>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior,...">DictAttrsNode</a>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1DictAttrsNode.html" title="Specialized attribute type that is backed by a map. The DictAttrsNode implements the Attrs behavior,...">DictAttrsNode</a>. </dd></dl>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a3999d7e2b942c8f9993f6d51cb8f3ded"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3999d7e2b942c8f9993f6d51cb8f3ded">&#9670;&nbsp;</a></span>DictAttrs()</h2>
+<a id="a5855433b73cec99f7d742b556c01d8ed"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5855433b73cec99f7d742b556c01d8ed">&#9670;&nbsp;</a></span>DictAttrs()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -196,7 +196,7 @@ Additional Inherited Members</h2></td></tr>
           <td class="memname">tvm::DictAttrs::DictAttrs </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a> &gt;&#160;</td>
-          <td class="paramname"><em>dict</em></td><td>)</td>
+          <td class="paramname"><em>dict</em> = <code>{}</code></td><td>)</td>
           <td></td>
         </tr>
       </table>
@@ -380,14 +380,14 @@ template&lt;typename TObjectRef &gt; </div>
 
 </div>
 </div>
-<a id="a64c05cc1cf96bb2d876348a2721fa609"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a64c05cc1cf96bb2d876348a2721fa609">&#9670;&nbsp;</a></span>TVM_DEFINE_OBJECT_REF_METHODS()</h2>
+<a id="afcb5444a0a4ad51f9b2968368e17aa79"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afcb5444a0a4ad51f9b2968368e17aa79">&#9670;&nbsp;</a></span>TVM_DEFINE_OBJECT_REF_METHODS_WITHOUT_DEFAULT_CONSTRUCTOR()</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">tvm::DictAttrs::TVM_DEFINE_OBJECT_REF_METHODS </td>
+          <td class="memname">tvm::DictAttrs::TVM_DEFINE_OBJECT_REF_METHODS_WITHOUT_DEFAULT_CONSTRUCTOR </td>
           <td>(</td>
           <td class="paramtype"><a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>&#160;</td>
           <td class="paramname">, </td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1DictAttrs__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1DictAttrs__coll__graph.svg
index 2abac83d98..1629f97f60 100644
--- a/docs/reference/api/doxygen/classtvm_1_1DictAttrs__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1DictAttrs__coll__graph.svg
@@ -4,26 +4,27 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::DictAttrs Pages: 1 -->
-<svg width="164pt" height="746pt"
- viewBox="0.00 0.00 164.00 746.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 742)">
+<svg width="180pt" height="757pt"
+ viewBox="0.00 0.00 180.00 757.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 753)">
 <title>tvm::DictAttrs</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-742 160,-742 160,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-753 176,-753 176,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-134.5 156,-134.5 156,-0.5 0,-0.5"/>
-<text text-anchor="middle" x="78" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="0,-115.5 156,-115.5 "/>
-<text text-anchor="middle" x="78" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-96.5 156,-96.5 "/>
-<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-145.5 172,-145.5 172,-0.5 0,-0.5"/>
+<text text-anchor="middle" x="86" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="0,-126.5 172,-126.5 "/>
+<text text-anchor="middle" x="86" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="0,-107.5 172,-107.5 "/>
+<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
 <text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
 <text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
 <text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
@@ -33,87 +34,87 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="0,-172.5 0,-240.5 156,-240.5 156,-172.5 0,-172.5"/>
-<text text-anchor="middle" x="78" y="-228.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="0,-221.5 156,-221.5 "/>
-<text text-anchor="middle" x="78" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-202.5 156,-202.5 "/>
-<text text-anchor="start" x="8" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="8,-183.5 8,-251.5 164,-251.5 164,-183.5 8,-183.5"/>
+<text text-anchor="middle" x="86" y="-239.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="8,-232.5 164,-232.5 "/>
+<text text-anchor="middle" x="86" y="-220.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="8,-213.5 164,-213.5 "/>
+<text text-anchor="start" x="16" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="16" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M78,-162.33C78,-153.52 78,-144.05 78,-134.64"/>
-<polygon fill="none" stroke="midnightblue" points="74.5,-162.34 78,-172.34 81.5,-162.34 74.5,-162.34"/>
+<path fill="none" stroke="midnightblue" d="M86,-173.19C86,-164.48 86,-155.11 86,-145.72"/>
+<polygon fill="none" stroke="midnightblue" points="82.5,-173.45 86,-183.45 89.5,-173.45 82.5,-173.45"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="11,-278.5 11,-511.5 145,-511.5 145,-278.5 11,-278.5"/>
-<text text-anchor="middle" x="78" y="-499.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="11,-492.5 145,-492.5 "/>
-<text text-anchor="start" x="19" y="-480.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="11,-473.5 145,-473.5 "/>
-<text text-anchor="start" x="19" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="19" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="19" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="19" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="19" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="19" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="19" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="19" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="19" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="19" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="19" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="19" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="19" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="19" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="19" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="19" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="19" y="-285.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="19,-289.5 19,-522.5 153,-522.5 153,-289.5 19,-289.5"/>
+<text text-anchor="middle" x="86" y="-510.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="19,-503.5 153,-503.5 "/>
+<text text-anchor="start" x="27" y="-491.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="19,-484.5 153,-484.5 "/>
+<text text-anchor="start" x="27" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="27" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="27" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="27" y="-439.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="27" y="-428.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="27" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="27" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="27" y="-395.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="27" y="-384.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="27" y="-373.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="27" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="27" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="27" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="27" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="27" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="27" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="27" y="-296.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M78,-268.17C78,-258.23 78,-248.86 78,-240.59"/>
-<polygon fill="none" stroke="midnightblue" points="74.5,-268.27 78,-278.27 81.5,-268.27 74.5,-268.27"/>
+<path fill="none" stroke="midnightblue" d="M86,-279.17C86,-269.23 86,-259.86 86,-251.59"/>
+<polygon fill="none" stroke="midnightblue" points="82.5,-279.27 86,-289.27 89.5,-279.27 82.5,-279.27"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="8,-559.5 8,-737.5 148,-737.5 148,-559.5 8,-559.5"/>
-<text text-anchor="start" x="16" y="-725.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="78" y="-714.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="8,-707.5 148,-707.5 "/>
-<text text-anchor="middle" x="78" y="-695.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="8,-688.5 148,-688.5 "/>
-<text text-anchor="start" x="16" y="-676.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="16" y="-665.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="16" y="-654.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="16" y="-643.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="16" y="-632.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="16" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="16" y="-610.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="16" y="-599.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="16" y="-588.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="16" y="-577.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="16" y="-566.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<polygon fill="white" stroke="black" points="16,-570.5 16,-748.5 156,-748.5 156,-570.5 16,-570.5"/>
+<text text-anchor="start" x="24" y="-736.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="86" y="-725.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="16,-718.5 156,-718.5 "/>
+<text text-anchor="middle" x="86" y="-706.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="16,-699.5 156,-699.5 "/>
+<text text-anchor="start" x="24" y="-687.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="24" y="-676.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="24" y="-665.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="24" y="-654.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="24" y="-643.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="24" y="-632.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="24" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="24" y="-610.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="24" y="-599.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="24" y="-588.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="24" y="-577.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M78,-559.18C78,-547.84 78,-536.05 78,-524.23"/>
-<polygon fill="none" stroke="#404040" points="78,-523.91 74,-517.91 78,-511.91 82,-517.91 78,-523.91"/>
-<text text-anchor="middle" x="97.5" y="-533" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M86,-570.18C86,-558.84 86,-547.05 86,-535.23"/>
+<polygon fill="none" stroke="#404040" points="86,-534.91 82,-528.91 86,-522.91 90,-528.91 86,-534.91"/>
+<text text-anchor="middle" x="105.5" y="-544" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1DictAttrs__inherit__graph.svg b/docs/reference/api/doxygen/classtvm_1_1DictAttrs__inherit__graph.svg
index f7205fc1ba..cafc513991 100644
--- a/docs/reference/api/doxygen/classtvm_1_1DictAttrs__inherit__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1DictAttrs__inherit__graph.svg
@@ -4,26 +4,27 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::DictAttrs Pages: 1 -->
-<svg width="164pt" height="529pt"
- viewBox="0.00 0.00 164.00 529.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 525)">
+<svg width="180pt" height="540pt"
+ viewBox="0.00 0.00 180.00 540.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 536)">
 <title>tvm::DictAttrs</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-525 160,-525 160,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-536 176,-536 176,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-134.5 156,-134.5 156,-0.5 0,-0.5"/>
-<text text-anchor="middle" x="78" y="-122.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="0,-115.5 156,-115.5 "/>
-<text text-anchor="middle" x="78" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-96.5 156,-96.5 "/>
-<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-145.5 172,-145.5 172,-0.5 0,-0.5"/>
+<text text-anchor="middle" x="86" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="0,-126.5 172,-126.5 "/>
+<text text-anchor="middle" x="86" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="0,-107.5 172,-107.5 "/>
+<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
 <text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
 <text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
 <text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
@@ -33,57 +34,57 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="0,-171.5 0,-239.5 156,-239.5 156,-171.5 0,-171.5"/>
-<text text-anchor="middle" x="78" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="0,-220.5 156,-220.5 "/>
-<text text-anchor="middle" x="78" y="-208.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-201.5 156,-201.5 "/>
-<text text-anchor="start" x="8" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="8,-182.5 8,-250.5 164,-250.5 164,-182.5 8,-182.5"/>
+<text text-anchor="middle" x="86" y="-238.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="8,-231.5 164,-231.5 "/>
+<text text-anchor="middle" x="86" y="-219.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="8,-212.5 164,-212.5 "/>
+<text text-anchor="start" x="16" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="16" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M78,-160.96C78,-152.57 78,-143.6 78,-134.68"/>
-<polygon fill="none" stroke="midnightblue" points="74.5,-161.23 78,-171.23 81.5,-161.23 74.5,-161.23"/>
+<path fill="none" stroke="midnightblue" d="M86,-172.09C86,-163.73 86,-154.76 86,-145.77"/>
+<polygon fill="none" stroke="midnightblue" points="82.5,-172.32 86,-182.32 89.5,-172.32 82.5,-172.32"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="11,-276.5 11,-520.5 145,-520.5 145,-276.5 11,-276.5"/>
-<text text-anchor="middle" x="78" y="-508.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="11,-501.5 145,-501.5 "/>
-<text text-anchor="start" x="19" y="-489.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<text text-anchor="start" x="19" y="-478.5" font-family="Helvetica,sans-Serif" font-size="10.00"># data_</text>
-<polyline fill="none" stroke="black" points="11,-471.5 145,-471.5 "/>
-<text text-anchor="start" x="19" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="19" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="19" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="19" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="19" y="-415.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="19" y="-404.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="19" y="-393.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="19" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="19" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="19" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="19" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="19" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="19" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="19" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="19" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="19" y="-294.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="19" y="-283.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="19,-287.5 19,-531.5 153,-531.5 153,-287.5 19,-287.5"/>
+<text text-anchor="middle" x="86" y="-519.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="19,-512.5 153,-512.5 "/>
+<text text-anchor="start" x="27" y="-500.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<text text-anchor="start" x="27" y="-489.5" font-family="Helvetica,sans-Serif" font-size="10.00"># data_</text>
+<polyline fill="none" stroke="black" points="19,-482.5 153,-482.5 "/>
+<text text-anchor="start" x="27" y="-470.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="27" y="-459.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="27" y="-448.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="27" y="-437.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="27" y="-426.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="27" y="-415.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="27" y="-404.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="27" y="-393.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="27" y="-382.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="27" y="-371.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="27" y="-360.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="27" y="-349.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="27" y="-338.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="27" y="-327.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="27" y="-316.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="27" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="27" y="-294.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M78,-266.15C78,-256.63 78,-247.65 78,-239.7"/>
-<polygon fill="none" stroke="midnightblue" points="74.5,-266.27 78,-276.27 81.5,-266.27 74.5,-266.27"/>
+<path fill="none" stroke="midnightblue" d="M86,-277.15C86,-267.63 86,-258.65 86,-250.7"/>
+<polygon fill="none" stroke="midnightblue" points="82.5,-277.27 86,-287.27 89.5,-277.27 82.5,-277.27"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1IRModule-members.html b/docs/reference/api/doxygen/classtvm_1_1IRModule-members.html
index 1153fd0bdc..a0a549cabc 100644
--- a/docs/reference/api/doxygen/classtvm_1_1IRModule-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1IRModule-members.html
@@ -86,7 +86,7 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aadbc0886ffa80162ff31eefd0431ba09">get</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ae423057ecf93c18714d17f53cd1d318f">get_mutable</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aed593996e4076632450de8fde776707c">GetDataPtr</a>(const ObjectRef &amp;ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1IRModule.html#a1dff4bcec63f776ac508e8d17cc34f4b">IRModule</a>(Map&lt; GlobalVar, BaseFunc &gt; functions, Map&lt; GlobalTypeVar, TypeData &gt; type_definitions={}, std::unordered_set&lt; String &gt; import_set={}, SourceMap map={}, DictAttrs attrs={}, Map&lt; String, Array&lt; GlobalInfo &gt;&gt; global_infos={})</td><td class="entry"><a class="el" href="classtvm_1_1IRModule.html">tvm::IRModule</a></td><td class="entry" [...]
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1IRModule.html#a19f35c0ed62a29cb1f16b8d6ce9e339d">IRModule</a>(Map&lt; GlobalVar, BaseFunc &gt; functions, Map&lt; GlobalTypeVar, TypeData &gt; type_definitions={}, std::unordered_set&lt; String &gt; import_set={}, SourceMap map={}, DictAttrs attrs=DictAttrs(), Map&lt; String, Array&lt; GlobalInfo &gt;&gt; global_infos={})</td><td class="entry"><a class="el" href="classtvm_1_1IRModule.html">tvm::IRModule</a></td><td clas [...]
   <tr><td class="entry"><a class="el" href="classtvm_1_1IRModule.html#ad48ab78dc0e686cd722e2b677ccaa396">IRModule</a>()</td><td class="entry"><a class="el" href="classtvm_1_1IRModule.html">tvm::IRModule</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1IRModule.html#a69a94bf1f2e54191598b2271443d2696">IRModule</a>(ObjectPtr&lt; Object &gt; n)</td><td class="entry"><a class="el" href="classtvm_1_1IRModule.html">tvm::IRModule</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aa07c1f6d66a438ea950637d13ed09471">ObjectRef</a>()=default</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1IRModule.html b/docs/reference/api/doxygen/classtvm_1_1IRModule.html
index f49a4cfb6e..37968c19db 100644
--- a/docs/reference/api/doxygen/classtvm_1_1IRModule.html
+++ b/docs/reference/api/doxygen/classtvm_1_1IRModule.html
@@ -105,9 +105,9 @@ Public Types</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a1dff4bcec63f776ac508e8d17cc34f4b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IRModule.html#a1dff4bcec63f776ac508e8d17cc34f4b">IRModule</a> (<a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1GlobalVar.html">GlobalVar</a>, <a class="el" href="classtvm_1_1BaseFunc.html">BaseFunc</a> &gt; functions, <a class="el" href="classtvm_1_1runt [...]
-<tr class="memdesc:a1dff4bcec63f776ac508e8d17cc34f4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor  <a href="classtvm_1_1IRModule.html#a1dff4bcec63f776ac508e8d17cc34f4b">More...</a><br /></td></tr>
-<tr class="separator:a1dff4bcec63f776ac508e8d17cc34f4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a19f35c0ed62a29cb1f16b8d6ce9e339d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IRModule.html#a19f35c0ed62a29cb1f16b8d6ce9e339d">IRModule</a> (<a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1GlobalVar.html">GlobalVar</a>, <a class="el" href="classtvm_1_1BaseFunc.html">BaseFunc</a> &gt; functions, <a class="el" href="classtvm_1_1runt [...]
+<tr class="memdesc:a19f35c0ed62a29cb1f16b8d6ce9e339d"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor  <a href="classtvm_1_1IRModule.html#a19f35c0ed62a29cb1f16b8d6ce9e339d">More...</a><br /></td></tr>
+<tr class="separator:a19f35c0ed62a29cb1f16b8d6ce9e339d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad48ab78dc0e686cd722e2b677ccaa396"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1IRModule.html#ad48ab78dc0e686cd722e2b677ccaa396">IRModule</a> ()</td></tr>
 <tr class="memdesc:ad48ab78dc0e686cd722e2b677ccaa396"><td class="mdescLeft">&#160;</td><td class="mdescRight">default constructor  <a href="classtvm_1_1IRModule.html#ad48ab78dc0e686cd722e2b677ccaa396">More...</a><br /></td></tr>
 <tr class="separator:ad48ab78dc0e686cd722e2b677ccaa396"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -223,8 +223,8 @@ Additional Inherited Members</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a1dff4bcec63f776ac508e8d17cc34f4b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1dff4bcec63f776ac508e8d17cc34f4b">&#9670;&nbsp;</a></span>IRModule() <span class="overload">[1/3]</span></h2>
+<a id="a19f35c0ed62a29cb1f16b8d6ce9e339d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a19f35c0ed62a29cb1f16b8d6ce9e339d">&#9670;&nbsp;</a></span>IRModule() <span class="overload">[1/3]</span></h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -260,7 +260,7 @@ Additional Inherited Members</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"><a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>&#160;</td>
-          <td class="paramname"><em>attrs</em> = <code>{}</code>, </td>
+          <td class="paramname"><em>attrs</em> = <code><a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>()</code>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1IRModuleNode.html b/docs/reference/api/doxygen/classtvm_1_1IRModuleNode.html
index 8df6aeda1a..afb5cb90dc 100644
--- a/docs/reference/api/doxygen/classtvm_1_1IRModuleNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1IRModuleNode.html
@@ -89,7 +89,7 @@ Inheritance diagram for tvm::IRModuleNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::IRModuleNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1IRModuleNode__coll__graph.svg" width="1676" height="2135"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1IRModuleNode__coll__graph.svg" width="1696" height="2135"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1IRModuleNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1IRModuleNode__coll__graph.svg
index 71eaf5ec09..2d8d97cfaa 100644
--- a/docs/reference/api/doxygen/classtvm_1_1IRModuleNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1IRModuleNode__coll__graph.svg
@@ -4,37 +4,37 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::IRModuleNode Pages: 1 -->
-<svg width="1257pt" height="1601pt"
- viewBox="0.00 0.00 1257.00 1601.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="1272pt" height="1601pt"
+ viewBox="0.00 0.00 1272.00 1601.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 1597)">
 <title>tvm::IRModuleNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1597 1253,-1597 1253,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1597 1268,-1597 1268,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="IRModule that holds functions and type definitions.">
-<polygon fill="#bfbfbf" stroke="black" points="498,-0.5 498,-233.5 656,-233.5 656,-0.5 498,-0.5"/>
-<text text-anchor="middle" x="577" y="-221.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::IRModuleNode</text>
-<polyline fill="none" stroke="black" points="498,-214.5 656,-214.5 "/>
-<text text-anchor="start" x="506" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ constructor_tag_map_</text>
-<text text-anchor="start" x="506" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ import_set_</text>
-<text text-anchor="start" x="506" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="506" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="506" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="506" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="506" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<polyline fill="none" stroke="black" points="498,-129.5 656,-129.5 "/>
-<text text-anchor="start" x="506" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="506" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="506" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttrs()</text>
-<text text-anchor="start" x="506" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="506" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IRModuleNode()</text>
-<text text-anchor="start" x="506" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="506" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
-<text text-anchor="start" x="506" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
-<text text-anchor="start" x="506" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
-<text text-anchor="start" x="506" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddUnchecked()</text>
-<text text-anchor="start" x="506" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<polygon fill="#bfbfbf" stroke="black" points="500,-0.5 500,-233.5 658,-233.5 658,-0.5 500,-0.5"/>
+<text text-anchor="middle" x="579" y="-221.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::IRModuleNode</text>
+<polyline fill="none" stroke="black" points="500,-214.5 658,-214.5 "/>
+<text text-anchor="start" x="508" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ constructor_tag_map_</text>
+<text text-anchor="start" x="508" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ import_set_</text>
+<text text-anchor="start" x="508" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="508" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="508" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="508" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="508" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<polyline fill="none" stroke="black" points="500,-129.5 658,-129.5 "/>
+<text text-anchor="start" x="508" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="508" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="508" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttrs()</text>
+<text text-anchor="start" x="508" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="508" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IRModuleNode()</text>
+<text text-anchor="start" x="508" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="508" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
+<text text-anchor="start" x="508" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
+<text text-anchor="start" x="508" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
+<text text-anchor="start" x="508" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddUnchecked()</text>
+<text text-anchor="start" x="508" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
 </a>
 </g>
 </g>
@@ -84,8 +84,8 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M190.92,-334.46C216.32,-304.74 245.24,-275.32 276,-252 343.57,-200.76 433.82,-163.93 497.83,-142"/>
-<polygon fill="none" stroke="midnightblue" points="187.97,-332.53 184.19,-342.43 193.32,-337.04 187.97,-332.53"/>
+<path fill="none" stroke="midnightblue" d="M190.88,-334.4C216.28,-304.68 245.21,-275.29 276,-252 344.24,-200.39 435.48,-163.51 499.95,-141.67"/>
+<polygon fill="none" stroke="midnightblue" points="187.92,-332.47 184.15,-342.37 193.28,-336.99 187.92,-332.47"/>
 </g>
 <!-- Node2&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
@@ -98,337 +98,338 @@
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="248.5,-687.5 248.5,-876.5 369.5,-876.5 369.5,-687.5 248.5,-687.5"/>
-<text text-anchor="start" x="256.5" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="256.5" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::String,</text>
-<text text-anchor="middle" x="309" y="-842.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalVar &gt;</text>
-<polyline fill="none" stroke="black" points="248.5,-835.5 369.5,-835.5 "/>
-<text text-anchor="middle" x="309" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="248.5,-816.5 369.5,-816.5 "/>
-<text text-anchor="start" x="256.5" y="-804.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="256.5" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="256.5" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="256.5" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="256.5" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="256.5" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="256.5" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="256.5" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="256.5" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="256.5" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
-<text text-anchor="start" x="256.5" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
+<polygon fill="white" stroke="black" points="249.5,-687.5 249.5,-876.5 370.5,-876.5 370.5,-687.5 249.5,-687.5"/>
+<text text-anchor="start" x="257.5" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="257.5" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::String,</text>
+<text text-anchor="middle" x="310" y="-842.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalVar &gt;</text>
+<polyline fill="none" stroke="black" points="249.5,-835.5 370.5,-835.5 "/>
+<text text-anchor="middle" x="310" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="249.5,-816.5 370.5,-816.5 "/>
+<text text-anchor="start" x="257.5" y="-804.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="257.5" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="257.5" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="257.5" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="257.5" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="257.5" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="257.5" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="257.5" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="257.5" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="257.5" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
+<text text-anchor="start" x="257.5" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node1 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M297.12,-687.43C283.06,-562.16 266,-347.96 304,-281 342.88,-212.5 423.23,-169.72 486.74,-145.28"/>
-<polygon fill="none" stroke="#404040" points="486.74,-145.27 490.96,-139.42 497.98,-141.07 493.77,-146.92 486.74,-145.27"/>
-<text text-anchor="middle" x="351.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +global_var_map_</text>
+<path fill="none" stroke="#404040" d="M297.62,-687.4C282.92,-562.11 264.83,-347.87 303,-281 342.49,-211.81 424.12,-169.03 488.41,-144.76"/>
+<polygon fill="none" stroke="#404040" points="488.53,-144.72 492.78,-138.9 499.79,-140.59 495.54,-146.41 488.53,-144.72"/>
+<text text-anchor="middle" x="350.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +global_var_map_</text>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="665,-1133.5 665,-1366.5 799,-1366.5 799,-1133.5 665,-1133.5"/>
-<text text-anchor="middle" x="732" y="-1354.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="665,-1347.5 799,-1347.5 "/>
-<text text-anchor="start" x="673" y="-1335.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="665,-1328.5 799,-1328.5 "/>
-<text text-anchor="start" x="673" y="-1316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="673" y="-1305.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="673" y="-1294.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="673" y="-1283.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="673" y="-1272.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="673" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="673" y="-1250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="673" y="-1239.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="673" y="-1228.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="673" y="-1217.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="673" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="673" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="673" y="-1184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="673" y="-1173.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="673" y="-1162.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="673" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="673" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="673,-1133.5 673,-1366.5 807,-1366.5 807,-1133.5 673,-1133.5"/>
+<text text-anchor="middle" x="740" y="-1354.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="673,-1347.5 807,-1347.5 "/>
+<text text-anchor="start" x="681" y="-1335.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="673,-1328.5 807,-1328.5 "/>
+<text text-anchor="start" x="681" y="-1316.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="681" y="-1305.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="681" y="-1294.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="681" y="-1283.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="681" y="-1272.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="681" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="681" y="-1250.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="681" y="-1239.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="681" y="-1228.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="681" y="-1217.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="681" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="681" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="681" y="-1184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="681" y="-1173.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="681" y="-1162.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="681" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="681" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M655.61,-1216.12C601.22,-1189.77 529.18,-1148.56 479,-1096 418.58,-1032.71 373.01,-943.76 344.34,-876.85"/>
-<polygon fill="none" stroke="midnightblue" points="654.33,-1219.39 664.86,-1220.54 657.35,-1213.07 654.33,-1219.39"/>
+<path fill="none" stroke="midnightblue" d="M663.89,-1217.19C608.26,-1191 533.8,-1149.53 482,-1096 420.88,-1032.84 374.71,-943.66 345.67,-876.64"/>
+<polygon fill="none" stroke="midnightblue" points="662.45,-1220.38 672.99,-1221.42 665.4,-1214.03 662.45,-1220.38"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="378,-687.5 378,-876.5 496,-876.5 496,-687.5 378,-687.5"/>
-<text text-anchor="start" x="386" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="386" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalVar, tvm</text>
-<text text-anchor="middle" x="437" y="-842.5" font-family="Helvetica,sans-Serif" font-size="10.00">::BaseFunc &gt;</text>
-<polyline fill="none" stroke="black" points="378,-835.5 496,-835.5 "/>
-<text text-anchor="middle" x="437" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="378,-816.5 496,-816.5 "/>
-<text text-anchor="start" x="386" y="-804.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="386" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="386" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="386" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="386" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="386" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="386" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="386" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="386" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="386" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
-<text text-anchor="start" x="386" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
+<polygon fill="white" stroke="black" points="379,-687.5 379,-876.5 497,-876.5 497,-687.5 379,-687.5"/>
+<text text-anchor="start" x="387" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="387" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalVar, tvm</text>
+<text text-anchor="middle" x="438" y="-842.5" font-family="Helvetica,sans-Serif" font-size="10.00">::BaseFunc &gt;</text>
+<polyline fill="none" stroke="black" points="379,-835.5 497,-835.5 "/>
+<text text-anchor="middle" x="438" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="379,-816.5 497,-816.5 "/>
+<text text-anchor="start" x="387" y="-804.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="387" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="387" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="387" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="387" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="387" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="387" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="387" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="387" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="387" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
+<text text-anchor="start" x="387" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node6 -->
 <g id="edge7" class="edge">
 <title>Node4&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M657.71,-1177.73C634.37,-1153.14 609.6,-1124.57 590,-1096 542.6,-1026.93 501.71,-940.98 474.15,-876.63"/>
-<polygon fill="none" stroke="midnightblue" points="655.45,-1180.43 664.9,-1185.22 660.51,-1175.58 655.45,-1180.43"/>
+<path fill="none" stroke="midnightblue" d="M665.81,-1178.73C641.86,-1153.92 616.29,-1124.95 596,-1096 547.61,-1026.96 505.34,-941.01 476.72,-876.65"/>
+<polygon fill="none" stroke="midnightblue" points="663.36,-1181.23 672.84,-1185.96 668.37,-1176.35 663.36,-1181.23"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="516,-687.5 516,-876.5 642,-876.5 642,-687.5 516,-687.5"/>
-<text text-anchor="start" x="524" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="524" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::String,</text>
-<text text-anchor="middle" x="579" y="-842.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalTypeVar &gt;</text>
-<polyline fill="none" stroke="black" points="516,-835.5 642,-835.5 "/>
-<text text-anchor="middle" x="579" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="516,-816.5 642,-816.5 "/>
-<text text-anchor="start" x="524" y="-804.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="524" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="524" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="524" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="524" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="524" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="524" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="524" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="524" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="524" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
-<text text-anchor="start" x="524" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
+<polygon fill="white" stroke="black" points="520,-687.5 520,-876.5 646,-876.5 646,-687.5 520,-687.5"/>
+<text text-anchor="start" x="528" y="-864.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="528" y="-853.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::String,</text>
+<text text-anchor="middle" x="583" y="-842.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalTypeVar &gt;</text>
+<polyline fill="none" stroke="black" points="520,-835.5 646,-835.5 "/>
+<text text-anchor="middle" x="583" y="-823.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="520,-816.5 646,-816.5 "/>
+<text text-anchor="start" x="528" y="-804.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="528" y="-793.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="528" y="-782.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="528" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="528" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="528" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="528" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="528" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="528" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="528" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
+<text text-anchor="start" x="528" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node7 -->
 <g id="edge9" class="edge">
 <title>Node4&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M660.23,-1130.99C654.6,-1119.39 649.4,-1107.61 645,-1096 617.98,-1024.73 600.96,-939.91 590.98,-876.56"/>
-<polygon fill="none" stroke="midnightblue" points="657.24,-1132.85 664.83,-1140.25 663.51,-1129.74 657.24,-1132.85"/>
+<path fill="none" stroke="midnightblue" d="M668.38,-1130.94C662.72,-1119.34 657.47,-1107.58 653,-1096 625.47,-1024.71 607.34,-939.89 596.44,-876.54"/>
+<polygon fill="none" stroke="midnightblue" points="665.4,-1132.81 673,-1140.19 671.66,-1129.68 665.4,-1132.81"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="654,-961.5 654,-1029.5 810,-1029.5 810,-961.5 654,-961.5"/>
-<text text-anchor="middle" x="732" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="654,-1010.5 810,-1010.5 "/>
-<text text-anchor="middle" x="732" y="-998.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="654,-991.5 810,-991.5 "/>
-<text text-anchor="start" x="662" y="-979.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="662" y="-968.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="662,-961.5 662,-1029.5 818,-1029.5 818,-961.5 662,-961.5"/>
+<text text-anchor="middle" x="740" y="-1017.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="662,-1010.5 818,-1010.5 "/>
+<text text-anchor="middle" x="740" y="-998.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="662,-991.5 818,-991.5 "/>
+<text text-anchor="start" x="670" y="-979.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="670" y="-968.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node9 -->
 <g id="edge12" class="edge">
 <title>Node4&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M732,-1123.22C732,-1088.6 732,-1053.93 732,-1029.63"/>
-<polygon fill="none" stroke="midnightblue" points="728.5,-1123.46 732,-1133.46 735.5,-1123.46 728.5,-1123.46"/>
+<path fill="none" stroke="midnightblue" d="M740,-1123.22C740,-1088.6 740,-1053.93 740,-1029.63"/>
+<polygon fill="none" stroke="midnightblue" points="736.5,-1123.46 740,-1133.46 743.5,-1123.46 736.5,-1123.46"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1SourceMap.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="828,-413.5 828,-536.5 996,-536.5 996,-413.5 828,-413.5"/>
-<text text-anchor="middle" x="912" y="-524.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::SourceMap</text>
-<polyline fill="none" stroke="black" points="828,-517.5 996,-517.5 "/>
-<text text-anchor="middle" x="912" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="828,-498.5 996,-498.5 "/>
-<text text-anchor="start" x="836" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SourceMap()</text>
-<text text-anchor="start" x="836" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SourceMap()</text>
-<text text-anchor="start" x="836" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SourceMap()</text>
-<text text-anchor="start" x="836" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
-<text text-anchor="start" x="836" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="836" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_NOTNULLABLE</text>
-<text text-anchor="start" x="836" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">_OBJECT_REF_METHODS()</text>
+<polygon fill="white" stroke="black" points="844,-413.5 844,-536.5 1012,-536.5 1012,-413.5 844,-413.5"/>
+<text text-anchor="middle" x="928" y="-524.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::SourceMap</text>
+<polyline fill="none" stroke="black" points="844,-517.5 1012,-517.5 "/>
+<text text-anchor="middle" x="928" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="844,-498.5 1012,-498.5 "/>
+<text text-anchor="start" x="852" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SourceMap()</text>
+<text text-anchor="start" x="852" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SourceMap()</text>
+<text text-anchor="start" x="852" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SourceMap()</text>
+<text text-anchor="start" x="852" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
+<text text-anchor="start" x="852" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="852" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_NOTNULLABLE</text>
+<text text-anchor="start" x="852" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">_OBJECT_REF_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node10 -->
 <g id="edge14" class="edge">
 <title>Node4&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M803.69,-1132.97C809.49,-1120.77 814.74,-1108.31 819,-1096 887.13,-899.01 905.37,-649.8 910.24,-536.73"/>
-<polygon fill="none" stroke="midnightblue" points="800.4,-1131.73 799.16,-1142.25 806.69,-1134.81 800.4,-1131.73"/>
+<path fill="none" stroke="midnightblue" d="M811.69,-1132.58C817.46,-1120.49 822.71,-1108.17 827,-1096 896.5,-899.06 918.54,-649.82 925.23,-536.74"/>
+<polygon fill="none" stroke="midnightblue" points="808.45,-1131.25 807.19,-1141.77 814.73,-1134.33 808.45,-1131.25"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="918,-901 918,-1090 1036,-1090 1036,-901 918,-901"/>
-<text text-anchor="start" x="926" y="-1078" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="926" y="-1067" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalTypeVar,</text>
-<text text-anchor="middle" x="977" y="-1056" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::TypeData &gt;</text>
-<polyline fill="none" stroke="black" points="918,-1049 1036,-1049 "/>
-<text text-anchor="middle" x="977" y="-1037" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="918,-1030 1036,-1030 "/>
-<text text-anchor="start" x="926" y="-1018" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="926" y="-1007" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="926" y="-996" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="926" y="-985" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="926" y="-974" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="926" y="-963" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="926" y="-952" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="926" y="-941" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="926" y="-930" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="926" y="-919" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
-<text text-anchor="start" x="926" y="-908" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
+<polygon fill="white" stroke="black" points="931,-901 931,-1090 1049,-1090 1049,-901 931,-901"/>
+<text text-anchor="start" x="939" y="-1078" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="939" y="-1067" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalTypeVar,</text>
+<text text-anchor="middle" x="990" y="-1056" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::TypeData &gt;</text>
+<polyline fill="none" stroke="black" points="931,-1049 1049,-1049 "/>
+<text text-anchor="middle" x="990" y="-1037" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="931,-1030 1049,-1030 "/>
+<text text-anchor="start" x="939" y="-1018" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="939" y="-1007" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="939" y="-996" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="939" y="-985" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="939" y="-974" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="939" y="-963" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="939" y="-952" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="939" y="-941" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="939" y="-930" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="939" y="-919" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
+<text text-anchor="start" x="939" y="-908" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node11 -->
 <g id="edge16" class="edge">
 <title>Node4&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M807.05,-1190.82C834.09,-1168.37 864.06,-1141.69 889,-1115 898.89,-1104.42 908.69,-1092.74 917.98,-1080.96"/>
-<polygon fill="none" stroke="midnightblue" points="804.62,-1188.28 799.13,-1197.34 809.08,-1193.68 804.62,-1188.28"/>
+<path fill="none" stroke="midnightblue" d="M815.14,-1192.49C843.35,-1169.76 874.88,-1142.46 901,-1115 911.2,-1104.28 921.3,-1092.4 930.84,-1080.42"/>
+<polygon fill="none" stroke="midnightblue" points="812.9,-1189.8 807.28,-1198.78 817.28,-1195.27 812.9,-1189.8"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node">
 <title>Node12</title>
 <g id="a_node12"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="1082,-895.5 1082,-1095.5 1206,-1095.5 1206,-895.5 1082,-895.5"/>
-<text text-anchor="start" x="1090" y="-1083.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="1090" y="-1072.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::String,</text>
-<text text-anchor="start" x="1090" y="-1061.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::Array&lt;</text>
-<text text-anchor="middle" x="1144" y="-1050.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalInfo &gt; &gt;</text>
-<polyline fill="none" stroke="black" points="1082,-1043.5 1206,-1043.5 "/>
-<text text-anchor="middle" x="1144" y="-1031.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="1082,-1024.5 1206,-1024.5 "/>
-<text text-anchor="start" x="1090" y="-1012.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="1090" y="-1001.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="1090" y="-990.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="1090" y="-979.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="1090" y="-968.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="1090" y="-957.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="1090" y="-946.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="1090" y="-935.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="1090" y="-924.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="1090" y="-913.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
-<text text-anchor="start" x="1090" y="-902.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
+<polygon fill="white" stroke="black" points="1097,-895.5 1097,-1095.5 1221,-1095.5 1221,-895.5 1097,-895.5"/>
+<text text-anchor="start" x="1105" y="-1083.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="1105" y="-1072.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::String,</text>
+<text text-anchor="start" x="1105" y="-1061.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::Array&lt;</text>
+<text text-anchor="middle" x="1159" y="-1050.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::GlobalInfo &gt; &gt;</text>
+<polyline fill="none" stroke="black" points="1097,-1043.5 1221,-1043.5 "/>
+<text text-anchor="middle" x="1159" y="-1031.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="1097,-1024.5 1221,-1024.5 "/>
+<text text-anchor="start" x="1105" y="-1012.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="1105" y="-1001.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="1105" y="-990.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="1105" y="-979.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="1105" y="-968.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="1105" y="-957.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="1105" y="-946.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="1105" y="-935.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="1105" y="-924.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="1105" y="-913.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
+<text text-anchor="start" x="1105" y="-902.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node12 -->
 <g id="edge18" class="edge">
 <title>Node4&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M808.58,-1220.02C874.49,-1193.16 970.47,-1149.36 1045,-1096 1057.68,-1086.92 1070.21,-1076.16 1081.87,-1065.13"/>
-<polygon fill="none" stroke="midnightblue" points="807.04,-1216.87 799.08,-1223.86 809.66,-1223.36 807.04,-1216.87"/>
+<path fill="none" stroke="midnightblue" d="M816.75,-1220.44C883.68,-1193.63 981.71,-1149.68 1058,-1096 1071.39,-1086.58 1084.63,-1075.34 1096.91,-1063.86"/>
+<polygon fill="none" stroke="midnightblue" points="815.11,-1217.32 807.11,-1224.26 817.7,-1223.83 815.11,-1217.32"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="662,-1414.5 662,-1592.5 802,-1592.5 802,-1414.5 662,-1414.5"/>
-<text text-anchor="start" x="670" y="-1580.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="732" y="-1569.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="662,-1562.5 802,-1562.5 "/>
-<text text-anchor="middle" x="732" y="-1550.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="662,-1543.5 802,-1543.5 "/>
-<text text-anchor="start" x="670" y="-1531.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1520.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1509.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1498.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1487.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1476.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1465.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="670" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="670" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="670" y="-1421.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<polygon fill="white" stroke="black" points="670,-1414.5 670,-1592.5 810,-1592.5 810,-1414.5 670,-1414.5"/>
+<text text-anchor="start" x="678" y="-1580.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="740" y="-1569.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="670,-1562.5 810,-1562.5 "/>
+<text text-anchor="middle" x="740" y="-1550.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="670,-1543.5 810,-1543.5 "/>
+<text text-anchor="start" x="678" y="-1531.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="678" y="-1520.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="678" y="-1509.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="678" y="-1498.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="678" y="-1487.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="678" y="-1476.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="678" y="-1465.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="678" y="-1454.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="678" y="-1443.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="678" y="-1432.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="678" y="-1421.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M732,-1414.18C732,-1402.84 732,-1391.05 732,-1379.23"/>
-<polygon fill="none" stroke="#404040" points="732,-1378.91 728,-1372.91 732,-1366.91 736,-1372.91 732,-1378.91"/>
-<text text-anchor="middle" x="751.5" y="-1388" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M740,-1414.18C740,-1402.84 740,-1391.05 740,-1379.23"/>
+<polygon fill="none" stroke="#404040" points="740,-1378.91 736,-1372.91 740,-1366.91 744,-1372.91 740,-1378.91"/>
+<text text-anchor="middle" x="759.5" y="-1388" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node6&#45;&gt;Node1 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M418.14,-687.29C401.62,-584.19 387.24,-415.31 437,-281 448.32,-250.45 468.21,-221.77 489.51,-197.24"/>
-<polygon fill="none" stroke="#404040" points="489.73,-197 490.74,-189.86 497.73,-188.05 496.71,-195.19 489.73,-197"/>
-<text text-anchor="middle" x="465.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +functions</text>
+<path fill="none" stroke="#404040" d="M418.29,-687.19C400.95,-584.01 385.53,-415.05 436,-281 447.93,-249.31 469.13,-219.76 491.62,-194.77"/>
+<polygon fill="none" stroke="#404040" points="491.79,-194.58 492.93,-187.46 499.95,-185.77 498.81,-192.89 491.79,-194.58"/>
+<text text-anchor="middle" x="464.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +functions</text>
 </g>
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge8" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M528.41,-687.46C526.29,-681.32 524.45,-675.14 523,-669 483.38,-501.17 495.53,-451.24 523,-281 524.89,-269.3 527.49,-257.31 530.54,-245.39"/>
-<polygon fill="none" stroke="#404040" points="530.62,-245.1 528.31,-238.27 533.73,-233.51 536.04,-240.34 530.62,-245.1"/>
+<path fill="none" stroke="#404040" d="M528.69,-687.3C526.46,-681.23 524.53,-675.1 523,-669 481.02,-501.74 494.6,-451.09 523,-281 524.94,-269.38 527.61,-257.48 530.74,-245.65"/>
+<polygon fill="none" stroke="#404040" points="530.8,-245.44 528.55,-238.58 534,-233.87 536.25,-240.72 530.8,-245.44"/>
 <text text-anchor="middle" x="584" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +global_type_var_map_</text>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="654,-408 654,-542 810,-542 810,-408 654,-408"/>
-<text text-anchor="middle" x="732" y="-530" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="654,-523 810,-523 "/>
-<text text-anchor="middle" x="732" y="-511" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="654,-504 810,-504 "/>
-<text text-anchor="start" x="662" y="-492" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="662" y="-481" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="662" y="-470" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="662" y="-459" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="662" y="-448" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="662" y="-437" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="662" y="-426" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="662" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="654,-402.5 654,-547.5 826,-547.5 826,-402.5 654,-402.5"/>
+<text text-anchor="middle" x="740" y="-535.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="654,-528.5 826,-528.5 "/>
+<text text-anchor="middle" x="740" y="-516.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="654,-509.5 826,-509.5 "/>
+<text text-anchor="start" x="662" y="-497.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="662" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="662" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="662" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="662" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="662" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="662" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="662" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="662" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node8&#45;&gt;Node1 -->
 <g id="edge10" class="edge">
 <title>Node8&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M703.21,-407.87C683.31,-362.16 656.19,-299.89 632.2,-244.78"/>
-<polygon fill="none" stroke="#404040" points="632.08,-244.51 626.02,-240.6 627.29,-233.5 633.35,-237.41 632.08,-244.51"/>
-<text text-anchor="middle" x="653" y="-255" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M707.61,-402.39C687.21,-357.27 660.29,-297.75 636.36,-244.83"/>
+<polygon fill="none" stroke="#404040" points="636.25,-244.58 630.13,-240.76 631.3,-233.65 637.42,-237.47 636.25,-244.58"/>
+<text text-anchor="middle" x="657" y="-255" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge11" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M732,-951.07C732,-860.31 732,-650.06 732,-542.29"/>
-<polygon fill="none" stroke="midnightblue" points="728.5,-951.28 732,-961.28 735.5,-951.28 728.5,-951.28"/>
+<path fill="none" stroke="midnightblue" d="M740,-951.24C740,-862.08 740,-657.06 740,-547.73"/>
+<polygon fill="none" stroke="midnightblue" points="736.5,-951.28 740,-961.28 743.5,-951.28 736.5,-951.28"/>
 </g>
 <!-- Node10&#45;&gt;Node1 -->
 <g id="edge13" class="edge">
 <title>Node10&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M892.18,-413.08C876.82,-372.47 852.47,-319.67 819,-281 776.67,-232.11 716.37,-191.44 666.56,-162.96"/>
-<polygon fill="none" stroke="#404040" points="666.55,-162.95 659.36,-163.49 656.1,-157.06 663.29,-156.52 666.55,-162.95"/>
-<text text-anchor="middle" x="832.5" y="-255" font-family="Helvetica,sans-Serif" font-size="10.00"> +source_map</text>
+<path fill="none" stroke="#404040" d="M908.67,-413.24C893.45,-372.46 869.09,-319.37 835,-281 789,-229.23 722.75,-187.65 669.17,-159.44"/>
+<polygon fill="none" stroke="#404040" points="668.94,-159.33 661.77,-160.12 658.28,-153.81 665.45,-153.01 668.94,-159.33"/>
+<text text-anchor="middle" x="847.5" y="-255" font-family="Helvetica,sans-Serif" font-size="10.00"> +source_map</text>
 </g>
 <!-- Node11&#45;&gt;Node1 -->
 <g id="edge15" class="edge">
 <title>Node11&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M994.15,-900.72C1023.15,-730.42 1072.45,-378.86 1005,-281 929.45,-171.38 769.62,-135.42 668.09,-123.67"/>
-<polygon fill="none" stroke="#404040" points="667.94,-123.65 661.54,-126.98 656.01,-122.35 662.41,-119.02 667.94,-123.65"/>
-<text text-anchor="middle" x="1083" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +type_definitions</text>
+<path fill="none" stroke="#404040" d="M1007.66,-900.99C1037.66,-730.71 1089.02,-378.58 1021,-281 942.05,-167.73 775.02,-132.97 670.4,-122.43"/>
+<polygon fill="none" stroke="#404040" points="670.23,-122.41 663.88,-125.83 658.28,-121.29 664.63,-117.87 670.23,-122.41"/>
+<text text-anchor="middle" x="1099" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +type_definitions</text>
 </g>
 <!-- Node12&#45;&gt;Node1 -->
 <g id="edge17" class="edge">
 <title>Node12&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M1156.24,-895.35C1175.38,-722.3 1203.32,-374.63 1132,-281 1075.68,-207.06 810.64,-154.83 668.16,-131.57"/>
-<polygon fill="none" stroke="#404040" points="667.87,-131.52 661.31,-134.51 656.02,-129.61 662.58,-126.62 667.87,-131.52"/>
-<text text-anchor="middle" x="1213.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +global_infos</text>
+<path fill="none" stroke="#404040" d="M1171.45,-895.31C1190.96,-722.2 1219.56,-374.44 1148,-281 1089.85,-205.07 815.43,-153.38 670,-130.83"/>
+<polygon fill="none" stroke="#404040" points="669.91,-130.81 663.37,-133.86 658.04,-128.99 664.58,-125.95 669.91,-130.81"/>
+<text text-anchor="middle" x="1228.5" y="-472.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +global_infos</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AttrPatternNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AttrPatternNode.html
index da1d32cff7..afacd2fc5d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AttrPatternNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AttrPatternNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relax::AttrPatternNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::AttrPatternNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1AttrPatternNode__coll__graph.svg" width="632" height="1886"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1AttrPatternNode__coll__graph.svg" width="643" height="1900"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AttrPatternNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AttrPatternNode__coll__graph.svg
index 5d4e1b43f1..9a2e202e40 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1AttrPatternNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1AttrPatternNode__coll__graph.svg
@@ -4,23 +4,23 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::AttrPatternNode Pages: 1 -->
-<svg width="474pt" height="1414pt"
- viewBox="0.00 0.00 474.00 1414.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 1410)">
+<svg width="482pt" height="1425pt"
+ viewBox="0.00 0.00 482.00 1425.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 1421)">
 <title>tvm::relax::AttrPatternNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1410 470,-1410 470,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1421 478,-1421 478,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="A pattern that asserting a root pattern has certain attributes.">
-<polygon fill="#bfbfbf" stroke="black" points="157,-0.5 157,-79.5 333,-79.5 333,-0.5 157,-0.5"/>
-<text text-anchor="middle" x="245" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AttrPatternNode</text>
-<polyline fill="none" stroke="black" points="157,-60.5 333,-60.5 "/>
-<text text-anchor="start" x="165" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="157,-41.5 333,-41.5 "/>
-<text text-anchor="start" x="165" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="165" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
-<text text-anchor="start" x="165" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#bfbfbf" stroke="black" points="149,-0.5 149,-79.5 325,-79.5 325,-0.5 149,-0.5"/>
+<text text-anchor="middle" x="237" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::AttrPatternNode</text>
+<polyline fill="none" stroke="black" points="149,-60.5 325,-60.5 "/>
+<text text-anchor="start" x="157" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="149,-41.5 325,-41.5 "/>
+<text text-anchor="start" x="157" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="157" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
+<text text-anchor="start" x="157" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
@@ -28,231 +28,232 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1relax_1_1DFPatternNode.html" target="_top" xlink:title="Base type of all dataflow patterns.">
-<polygon fill="white" stroke="black" points="28.5,-160.5 28.5,-228.5 201.5,-228.5 201.5,-160.5 28.5,-160.5"/>
-<text text-anchor="middle" x="115" y="-216.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPatternNode</text>
-<polyline fill="none" stroke="black" points="28.5,-209.5 201.5,-209.5 "/>
-<text text-anchor="start" x="36.5" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="28.5,-190.5 201.5,-190.5 "/>
-<text text-anchor="start" x="36.5" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="36.5" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="22.5,-166 22.5,-234 195.5,-234 195.5,-166 22.5,-166"/>
+<text text-anchor="middle" x="109" y="-222" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPatternNode</text>
+<polyline fill="none" stroke="black" points="22.5,-215 195.5,-215 "/>
+<text text-anchor="start" x="30.5" y="-203" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="22.5,-196 195.5,-196 "/>
+<text text-anchor="start" x="30.5" y="-184" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="30.5" y="-173" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M149.83,-152.64C169.14,-129.99 193.02,-101.98 212.02,-79.68"/>
-<polygon fill="none" stroke="midnightblue" points="147.03,-150.53 143.21,-160.41 152.36,-155.07 147.03,-150.53"/>
+<path fill="none" stroke="midnightblue" d="M142.27,-157.94C161.85,-133.77 186.46,-103.38 205.69,-79.65"/>
+<polygon fill="none" stroke="midnightblue" points="139.41,-155.9 135.83,-165.88 144.85,-160.31 139.41,-155.9"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers.">
-<polygon fill="white" stroke="black" points="0,-521.5 0,-908.5 184,-908.5 184,-521.5 0,-521.5"/>
-<text text-anchor="middle" x="92" y="-896.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-889.5 184,-889.5 "/>
-<text text-anchor="start" x="8" y="-877.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-855.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-844.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-833.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-822.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-811.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-800.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-789.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-778.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-767.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-756.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-745.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-734.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-727.5 184,-727.5 "/>
-<text text-anchor="start" x="8" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-532.5 0,-919.5 184,-919.5 184,-532.5 0,-532.5"/>
+<text text-anchor="middle" x="92" y="-907.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-900.5 184,-900.5 "/>
+<text text-anchor="start" x="8" y="-888.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-877.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-855.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-844.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-833.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-822.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-811.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-800.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-789.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-778.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-767.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-756.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-745.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-738.5 184,-738.5 "/>
+<text text-anchor="start" x="8" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M101,-511.07C105.71,-404.93 111.01,-285.56 113.52,-228.86"/>
-<polygon fill="none" stroke="midnightblue" points="97.49,-511.15 100.55,-521.3 104.49,-511.46 97.49,-511.15"/>
+<path fill="none" stroke="midnightblue" d="M98.57,-522.39C102.09,-414.12 106.06,-291.57 107.93,-234.08"/>
+<polygon fill="none" stroke="midnightblue" points="95.07,-522.38 98.25,-532.49 102.07,-522.6 95.07,-522.38"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-748.92C195.02,-742.66 202,-731.36 202,-715 202,-704.01 198.85,-695.3 193.52,-688.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-688.81 186.29,-688 184.28,-681.08 191.45,-681.89 193.46,-688.81"/>
-<text text-anchor="middle" x="228" y="-712.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-759.92C195.02,-753.66 202,-742.36 202,-726 202,-715.01 198.85,-706.3 193.52,-699.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-699.81 186.29,-699 184.28,-692.08 191.45,-692.89 193.46,-699.81"/>
+<text text-anchor="middle" x="228" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1relax_1_1DFPattern.html" target="_top" xlink:title="Managed reference to dataflow patterns.">
-<polygon fill="white" stroke="black" points="185,-280.5 185,-502.5 341,-502.5 341,-280.5 185,-280.5"/>
-<text text-anchor="middle" x="263" y="-490.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPattern</text>
-<polyline fill="none" stroke="black" points="185,-483.5 341,-483.5 "/>
-<text text-anchor="middle" x="263" y="-471.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="185,-464.5 341,-464.5 "/>
-<text text-anchor="start" x="193" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
-<text text-anchor="start" x="193" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
-<text text-anchor="start" x="193" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator|()</text>
-<text text-anchor="start" x="193" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&amp;()</text>
-<text text-anchor="start" x="193" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator~()</text>
-<text text-anchor="start" x="193" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasAttr()</text>
-<text text-anchor="start" x="193" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasStructInfo()</text>
-<text text-anchor="start" x="193" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasType()</text>
-<text text-anchor="start" x="193" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
-<text text-anchor="start" x="193" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
-<text text-anchor="start" x="193" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasShape()</text>
-<text text-anchor="start" x="193" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasSameShapeAs()</text>
-<text text-anchor="start" x="193" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ dup()</text>
-<text text-anchor="start" x="193" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator PatternSeq()</text>
-<text text-anchor="start" x="193" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="193" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="181,-291.5 181,-513.5 337,-513.5 337,-291.5 181,-291.5"/>
+<text text-anchor="middle" x="259" y="-501.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DFPattern</text>
+<polyline fill="none" stroke="black" points="181,-494.5 337,-494.5 "/>
+<text text-anchor="middle" x="259" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="181,-475.5 337,-475.5 "/>
+<text text-anchor="start" x="189" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
+<text text-anchor="start" x="189" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
+<text text-anchor="start" x="189" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator|()</text>
+<text text-anchor="start" x="189" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&amp;()</text>
+<text text-anchor="start" x="189" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator~()</text>
+<text text-anchor="start" x="189" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasAttr()</text>
+<text text-anchor="start" x="189" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasStructInfo()</text>
+<text text-anchor="start" x="189" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasType()</text>
+<text text-anchor="start" x="189" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
+<text text-anchor="start" x="189" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
+<text text-anchor="start" x="189" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasShape()</text>
+<text text-anchor="start" x="189" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasSameShapeAs()</text>
+<text text-anchor="start" x="189" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ dup()</text>
+<text text-anchor="start" x="189" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator PatternSeq()</text>
+<text text-anchor="start" x="189" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="189" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node1 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M255.08,-280.46C254.7,-274.22 254.33,-268.03 254,-262 250.77,-203.65 248.2,-136.57 246.65,-91.76"/>
-<polygon fill="none" stroke="#404040" points="246.64,-91.73 242.44,-85.87 246.23,-79.74 250.44,-85.6 246.64,-91.73"/>
-<text text-anchor="middle" x="277.5" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00"> +pattern</text>
+<path fill="none" stroke="#404040" d="M247.42,-291.48C246.9,-285.23 246.42,-279.04 246,-273 241.65,-210.75 239.27,-138.95 238.07,-91.91"/>
+<polygon fill="none" stroke="#404040" points="238.06,-91.62 233.91,-85.72 237.77,-79.63 241.91,-85.53 238.06,-91.62"/>
+<text text-anchor="middle" x="269.5" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +pattern</text>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="227,-946.5 227,-1179.5 361,-1179.5 361,-946.5 227,-946.5"/>
-<text text-anchor="middle" x="294" y="-1167.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="227,-1160.5 361,-1160.5 "/>
-<text text-anchor="start" x="235" y="-1148.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="227,-1141.5 361,-1141.5 "/>
+<polygon fill="white" stroke="black" points="227,-957.5 227,-1190.5 361,-1190.5 361,-957.5 227,-957.5"/>
+<text text-anchor="middle" x="294" y="-1178.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="227,-1171.5 361,-1171.5 "/>
+<text text-anchor="start" x="235" y="-1159.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="227,-1152.5 361,-1152.5 "/>
+<text text-anchor="start" x="235" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="235" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="235" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="235" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="235" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="235" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="235" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="235" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="235" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="235" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="235" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="235" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="235" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="235" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="235" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="235" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="235" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="235" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="235" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="235" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="235" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="235" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="235" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="235" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="235" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="235" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="235" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="235" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="235" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="235" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="235" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="235" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M288.17,-936.15C282.39,-811.3 273.62,-621.88 268.11,-502.77"/>
-<polygon fill="none" stroke="midnightblue" points="284.68,-936.32 288.64,-946.15 291.67,-936 284.68,-936.32"/>
+<path fill="none" stroke="midnightblue" d="M287.42,-947.15C280.89,-822.3 270.99,-632.88 264.76,-513.77"/>
+<polygon fill="none" stroke="midnightblue" points="283.93,-947.34 287.94,-957.15 290.92,-946.98 283.93,-947.34"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="310,-681 310,-749 466,-749 466,-681 310,-681"/>
-<text text-anchor="middle" x="388" y="-737" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="310,-730 466,-730 "/>
-<text text-anchor="middle" x="388" y="-718" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="310,-711 466,-711 "/>
-<text text-anchor="start" x="318" y="-699" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="318" y="-688" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="310,-692 310,-760 466,-760 466,-692 310,-692"/>
+<text text-anchor="middle" x="388" y="-748" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="310,-741 466,-741 "/>
+<text text-anchor="middle" x="388" y="-729" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="310,-722 466,-722 "/>
+<text text-anchor="start" x="318" y="-710" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="318" y="-699" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node8 -->
 <g id="edge9" class="edge">
 <title>Node5&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M328.1,-936.5C346.31,-869.46 367.32,-792.12 378.99,-749.16"/>
-<polygon fill="none" stroke="midnightblue" points="324.68,-935.74 325.43,-946.31 331.43,-937.57 324.68,-935.74"/>
+<path fill="none" stroke="midnightblue" d="M328.1,-947.5C346.31,-880.46 367.32,-803.12 378.99,-760.16"/>
+<polygon fill="none" stroke="midnightblue" points="324.68,-946.74 325.43,-957.31 331.43,-948.57 324.68,-946.74"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="224,-1227.5 224,-1405.5 364,-1405.5 364,-1227.5 224,-1227.5"/>
-<text text-anchor="start" x="232" y="-1393.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="294" y="-1382.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="224,-1375.5 364,-1375.5 "/>
-<text text-anchor="middle" x="294" y="-1363.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="224,-1356.5 364,-1356.5 "/>
+<polygon fill="white" stroke="black" points="224,-1238.5 224,-1416.5 364,-1416.5 364,-1238.5 224,-1238.5"/>
+<text text-anchor="start" x="232" y="-1404.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="294" y="-1393.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="224,-1386.5 364,-1386.5 "/>
+<text text-anchor="middle" x="294" y="-1374.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="224,-1367.5 364,-1367.5 "/>
+<text text-anchor="start" x="232" y="-1355.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1344.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="232" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="232" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="232" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="232" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="232" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="232" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="232" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="232" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="232" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="232" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="232" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M294,-1227.18C294,-1215.84 294,-1204.05 294,-1192.23"/>
-<polygon fill="none" stroke="#404040" points="294,-1191.91 290,-1185.91 294,-1179.91 298,-1185.91 294,-1191.91"/>
-<text text-anchor="middle" x="313.5" y="-1201" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M294,-1238.18C294,-1226.84 294,-1215.05 294,-1203.23"/>
+<polygon fill="none" stroke="#404040" points="294,-1202.91 290,-1196.91 294,-1190.91 298,-1196.91 294,-1202.91"/>
+<text text-anchor="middle" x="313.5" y="-1212" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="310,-127.5 310,-261.5 466,-261.5 466,-127.5 310,-127.5"/>
-<text text-anchor="middle" x="388" y="-249.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="310,-242.5 466,-242.5 "/>
-<text text-anchor="middle" x="388" y="-230.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="310,-223.5 466,-223.5 "/>
-<text text-anchor="start" x="318" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="318" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="318" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="318" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="318" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="318" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="318" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="318" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="302,-127.5 302,-272.5 474,-272.5 474,-127.5 302,-127.5"/>
+<text text-anchor="middle" x="388" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="302,-253.5 474,-253.5 "/>
+<text text-anchor="middle" x="388" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="302,-234.5 474,-234.5 "/>
+<text text-anchor="start" x="310" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="310" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="310" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="310" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="310" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="310" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="310" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="310" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="310" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M326.11,-127.5C313.96,-114.54 301.43,-101.18 289.97,-88.95"/>
-<polygon fill="none" stroke="#404040" points="289.64,-88.6 282.61,-86.96 281.43,-79.85 288.45,-81.49 289.64,-88.6"/>
-<text text-anchor="middle" x="324" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M319.57,-127.4C306.88,-114.12 293.93,-100.57 282.16,-88.25"/>
+<polygon fill="none" stroke="#404040" points="282.11,-88.2 275.07,-86.63 273.82,-79.52 280.86,-81.1 282.11,-88.2"/>
+<text text-anchor="middle" x="315" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node8&#45;&gt;Node7 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M388,-670.57C388,-579.81 388,-369.56 388,-261.79"/>
-<polygon fill="none" stroke="midnightblue" points="384.5,-670.78 388,-680.78 391.5,-670.78 384.5,-670.78"/>
+<path fill="none" stroke="midnightblue" d="M388,-681.69C388,-591.59 388,-383.17 388,-272.72"/>
+<polygon fill="none" stroke="midnightblue" points="384.5,-681.82 388,-691.82 391.5,-681.82 384.5,-681.82"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowBlockRewriteNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowBlockRewriteNode.html
index ff1058db39..78a049658c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowBlockRewriteNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowBlockRewriteNode.html
@@ -89,7 +89,7 @@ Inheritance diagram for tvm::relax::DataflowBlockRewriteNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::DataflowBlockRewriteNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DataflowBlockRewriteNode__coll__graph.svg" width="1778" height="3330"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1DataflowBlockRewriteNode__coll__graph.svg" width="1787" height="3344"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowBlockRewriteNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowBlockRewriteNode__coll__graph.svg
index b0c6cd61e2..afb4406063 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowBlockRewriteNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1DataflowBlockRewriteNode__coll__graph.svg
@@ -4,33 +4,33 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::DataflowBlockRewriteNode Pages: 1 -->
-<svg width="1333pt" height="2497pt"
- viewBox="0.00 0.00 1333.00 2497.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 2493)">
+<svg width="1340pt" height="2508pt"
+ viewBox="0.00 0.00 1340.00 2508.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 2504)">
 <title>tvm::relax::DataflowBlockRewriteNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-2493 1329,-2493 1329,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-2504 1336,-2504 1336,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Statement rewriter for relax.DataflowBlock.">
-<polygon fill="#bfbfbf" stroke="black" points="875,-0.5 875,-189.5 1051,-189.5 1051,-0.5 875,-0.5"/>
-<text text-anchor="start" x="883" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowBlock</text>
-<text text-anchor="middle" x="963" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">RewriteNode</text>
-<polyline fill="none" stroke="black" points="875,-159.5 1051,-159.5 "/>
-<text text-anchor="start" x="883" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="875,-140.5 1051,-140.5 "/>
-<text text-anchor="start" x="883" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ReplaceAllUses()</text>
-<text text-anchor="start" x="883" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
-<text text-anchor="start" x="883" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
-<text text-anchor="start" x="883" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
-<text text-anchor="start" x="883" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RemoveUnused()</text>
-<text text-anchor="start" x="883" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RemoveAllUnused()</text>
-<text text-anchor="start" x="883" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ MutatedDataflowBlock()</text>
-<text text-anchor="start" x="883" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ MutatedFunc()</text>
-<text text-anchor="start" x="883" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ MutateIRModule()</text>
-<text text-anchor="start" x="883" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="883" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
-<text text-anchor="start" x="883" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#bfbfbf" stroke="black" points="882,-0.5 882,-189.5 1058,-189.5 1058,-0.5 882,-0.5"/>
+<text text-anchor="start" x="890" y="-177.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowBlock</text>
+<text text-anchor="middle" x="970" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">RewriteNode</text>
+<polyline fill="none" stroke="black" points="882,-159.5 1058,-159.5 "/>
+<text text-anchor="start" x="890" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="882,-140.5 1058,-140.5 "/>
+<text text-anchor="start" x="890" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ReplaceAllUses()</text>
+<text text-anchor="start" x="890" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
+<text text-anchor="start" x="890" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
+<text text-anchor="start" x="890" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Add()</text>
+<text text-anchor="start" x="890" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RemoveUnused()</text>
+<text text-anchor="start" x="890" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RemoveAllUnused()</text>
+<text text-anchor="start" x="890" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ MutatedDataflowBlock()</text>
+<text text-anchor="start" x="890" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ MutatedFunc()</text>
+<text text-anchor="start" x="890" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ MutateIRModule()</text>
+<text text-anchor="start" x="890" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="890" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
+<text text-anchor="start" x="890" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
@@ -38,228 +38,229 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers.">
-<polygon fill="white" stroke="black" points="0,-1604.5 0,-1991.5 184,-1991.5 184,-1604.5 0,-1604.5"/>
-<text text-anchor="middle" x="92" y="-1979.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-1972.5 184,-1972.5 "/>
-<text text-anchor="start" x="8" y="-1960.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-1949.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-1938.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-1927.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-1916.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-1905.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-1894.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-1883.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-1872.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-1861.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-1850.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-1839.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-1828.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-1817.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-1810.5 184,-1810.5 "/>
-<text text-anchor="start" x="8" y="-1798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-1787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-1776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-1765.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-1754.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-1615.5 0,-2002.5 184,-2002.5 184,-1615.5 0,-1615.5"/>
+<text text-anchor="middle" x="92" y="-1990.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1983.5 184,-1983.5 "/>
+<text text-anchor="start" x="8" y="-1971.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1960.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1949.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1938.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-1927.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-1916.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-1905.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-1894.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-1883.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-1872.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-1861.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-1850.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-1839.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-1828.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-1821.5 184,-1821.5 "/>
+<text text-anchor="start" x="8" y="-1809.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-1798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-1787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-1776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-1765.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-1754.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-1743.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-1732.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-1721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-1721.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-1710.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-1699.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-1688.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-1677.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-1666.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-1655.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-1644.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-1633.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-1622.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-1611.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-1699.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-1688.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-1677.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-1666.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-1655.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-1644.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-1633.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-1622.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M111.77,-1594.09C118.8,-1505.69 125,-1400.81 125,-1306 125,-1306 125,-1306 125,-314.5 125,-160.77 659.75,-113.22 874.9,-100.31"/>
-<polygon fill="none" stroke="midnightblue" points="108.27,-1593.98 110.96,-1604.23 115.25,-1594.55 108.27,-1593.98"/>
+<path fill="none" stroke="midnightblue" d="M111.77,-1605.09C118.8,-1516.69 125,-1411.81 125,-1317 125,-1317 125,-1317 125,-314.5 125,-159.37 665.54,-112.62 881.96,-100.11"/>
+<polygon fill="none" stroke="midnightblue" points="108.27,-1604.98 110.96,-1615.23 115.25,-1605.55 108.27,-1604.98"/>
 </g>
 <!-- Node2&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node2&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M184.28,-1831.92C195.02,-1825.66 202,-1814.36 202,-1798 202,-1787.01 198.85,-1778.3 193.52,-1771.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-1771.81 186.29,-1771 184.28,-1764.08 191.45,-1764.89 193.46,-1771.81"/>
-<text text-anchor="middle" x="228" y="-1795.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-1842.92C195.02,-1836.66 202,-1825.36 202,-1809 202,-1798.01 198.85,-1789.3 193.52,-1782.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-1782.81 186.29,-1782 184.28,-1775.08 191.45,-1775.89 193.46,-1782.81"/>
+<text text-anchor="middle" x="228" y="-1806.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1BaseExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="black" points="362.5,-1243.5 362.5,-1366.5 535.5,-1366.5 535.5,-1243.5 362.5,-1243.5"/>
-<text text-anchor="middle" x="449" y="-1354.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="362.5,-1347.5 535.5,-1347.5 "/>
-<text text-anchor="start" x="370.5" y="-1335.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="370.5" y="-1324.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="370.5" y="-1313.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="370.5" y="-1302.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="370.5" y="-1291.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="370.5" y="-1280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="362.5,-1273.5 535.5,-1273.5 "/>
-<text text-anchor="start" x="370.5" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="370.5" y="-1250.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="362.5,-1254.5 362.5,-1377.5 535.5,-1377.5 535.5,-1254.5 362.5,-1254.5"/>
+<text text-anchor="middle" x="449" y="-1365.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="362.5,-1358.5 535.5,-1358.5 "/>
+<text text-anchor="start" x="370.5" y="-1346.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="370.5" y="-1335.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="370.5" y="-1324.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="370.5" y="-1313.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="370.5" y="-1302.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="370.5" y="-1291.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="362.5,-1284.5 535.5,-1284.5 "/>
+<text text-anchor="start" x="370.5" y="-1272.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="370.5" y="-1261.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node9 -->
 <g id="edge10" class="edge">
 <title>Node2&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M192.78,-1725.96C246.56,-1688.71 314.21,-1642.87 376,-1604 389.49,-1595.52 398.05,-1599.18 407,-1586 419.1,-1568.19 434.32,-1443.54 442.71,-1366.68"/>
-<polygon fill="none" stroke="midnightblue" points="190.5,-1723.29 184.27,-1731.86 194.49,-1729.04 190.5,-1723.29"/>
+<path fill="none" stroke="midnightblue" d="M192.77,-1737.79C246.91,-1700.57 315.07,-1654.51 377,-1615 390.11,-1606.64 398.35,-1609.92 407,-1597 418.98,-1579.1 434.24,-1454.49 442.67,-1377.66"/>
+<polygon fill="none" stroke="midnightblue" points="190.46,-1735.13 184.2,-1743.68 194.43,-1740.9 190.46,-1735.13"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="173,-1385.5 173,-1585.5 297,-1585.5 297,-1385.5 173,-1385.5"/>
-<text text-anchor="start" x="181" y="-1573.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="181" y="-1562.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::relax::Var, tvm</text>
-<text text-anchor="start" x="181" y="-1551.5" font-family="Helvetica,sans-Serif" font-size="10.00">::runtime::Array&lt; tvm</text>
-<text text-anchor="middle" x="235" y="-1540.5" font-family="Helvetica,sans-Serif" font-size="10.00">::relax::Var &gt; &gt;</text>
-<polyline fill="none" stroke="black" points="173,-1533.5 297,-1533.5 "/>
-<text text-anchor="middle" x="235" y="-1521.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="173,-1514.5 297,-1514.5 "/>
+<polygon fill="white" stroke="black" points="173,-1396.5 173,-1596.5 297,-1596.5 297,-1396.5 173,-1396.5"/>
+<text text-anchor="start" x="181" y="-1584.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="181" y="-1573.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::relax::Var, tvm</text>
+<text text-anchor="start" x="181" y="-1562.5" font-family="Helvetica,sans-Serif" font-size="10.00">::runtime::Array&lt; tvm</text>
+<text text-anchor="middle" x="235" y="-1551.5" font-family="Helvetica,sans-Serif" font-size="10.00">::relax::Var &gt; &gt;</text>
+<polyline fill="none" stroke="black" points="173,-1544.5 297,-1544.5 "/>
+<text text-anchor="middle" x="235" y="-1532.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="173,-1525.5 297,-1525.5 "/>
+<text text-anchor="start" x="181" y="-1513.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
 <text text-anchor="start" x="181" y="-1502.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
 <text text-anchor="start" x="181" y="-1491.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
 <text text-anchor="start" x="181" y="-1480.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
 <text text-anchor="start" x="181" y="-1469.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
 <text text-anchor="start" x="181" y="-1458.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
 <text text-anchor="start" x="181" y="-1447.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="181" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="181" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="181" y="-1425.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="181" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="181" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
-<text text-anchor="start" x="181" y="-1392.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
+<text text-anchor="start" x="181" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
+<text text-anchor="start" x="181" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node1 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M247.18,-1385.32C253.12,-1328.65 259,-1256.19 259,-1191.5 259,-1191.5 259,-1191.5 259,-314.5 259,-189.6 668.26,-128.14 862.7,-105.99"/>
-<polygon fill="none" stroke="#404040" points="862.98,-105.96 868.5,-101.31 874.91,-104.62 869.39,-109.26 862.98,-105.96"/>
+<path fill="none" stroke="#404040" d="M247.18,-1396.32C253.12,-1339.65 259,-1267.19 259,-1202.5 259,-1202.5 259,-1202.5 259,-314.5 259,-188.25 673.78,-127.39 869.73,-105.68"/>
+<polygon fill="none" stroke="#404040" points="869.82,-105.67 875.35,-101.04 881.75,-104.37 876.22,-109 869.82,-105.67"/>
 <text text-anchor="middle" x="288" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00"> #to_users_</text>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="658,-2029.5 658,-2262.5 792,-2262.5 792,-2029.5 658,-2029.5"/>
-<text text-anchor="middle" x="725" y="-2250.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="658,-2243.5 792,-2243.5 "/>
-<text text-anchor="start" x="666" y="-2231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="658,-2224.5 792,-2224.5 "/>
-<text text-anchor="start" x="666" y="-2212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="666" y="-2201.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="666" y="-2190.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="666" y="-2179.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="666" y="-2168.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="666" y="-2157.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="666" y="-2146.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="666" y="-2135.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="666" y="-2124.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="666" y="-2113.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="666" y="-2102.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="666" y="-2091.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="666" y="-2080.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="666" y="-2069.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="666" y="-2058.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="666" y="-2047.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="666" y="-2036.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="659,-2040.5 659,-2273.5 793,-2273.5 793,-2040.5 659,-2040.5"/>
+<text text-anchor="middle" x="726" y="-2261.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="659,-2254.5 793,-2254.5 "/>
+<text text-anchor="start" x="667" y="-2242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="659,-2235.5 793,-2235.5 "/>
+<text text-anchor="start" x="667" y="-2223.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="667" y="-2212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="667" y="-2201.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="667" y="-2190.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="667" y="-2179.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="667" y="-2168.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="667" y="-2157.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="667" y="-2146.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="667" y="-2135.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="667" y="-2124.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="667" y="-2113.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="667" y="-2102.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="667" y="-2091.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="667" y="-2080.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="667" y="-2069.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="667" y="-2058.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="667" y="-2047.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M647.65,-2144.18C551.34,-2138.62 389.39,-2113.43 306,-2011 248.58,-1940.47 278.35,-1693.64 263,-1604 261.97,-1598.01 260.82,-1591.86 259.58,-1585.68"/>
-<polygon fill="none" stroke="midnightblue" points="647.74,-2147.69 657.9,-2144.72 648.1,-2140.7 647.74,-2147.69"/>
+<path fill="none" stroke="midnightblue" d="M648.76,-2155.26C552.27,-2149.8 389.69,-2124.73 306,-2022 248.56,-1951.49 278.35,-1704.64 263,-1615 261.97,-1609.01 260.82,-1602.86 259.58,-1596.68"/>
+<polygon fill="none" stroke="midnightblue" points="648.58,-2158.76 658.75,-2155.77 648.94,-2151.77 648.58,-2158.76"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1RelayExprNode.html" target="_top" xlink:title="Base node of all non&#45;primitive expressions.">
-<polygon fill="white" stroke="black" points="481.5,-1014.5 481.5,-1126.5 654.5,-1126.5 654.5,-1014.5 481.5,-1014.5"/>
-<text text-anchor="middle" x="568" y="-1114.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExprNode</text>
-<polyline fill="none" stroke="black" points="481.5,-1107.5 654.5,-1107.5 "/>
-<text text-anchor="start" x="489.5" y="-1095.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="489.5" y="-1084.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="481.5,-1077.5 654.5,-1077.5 "/>
-<text text-anchor="start" x="489.5" y="-1065.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
-<text text-anchor="start" x="489.5" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
-<text text-anchor="start" x="489.5" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
-<text text-anchor="start" x="489.5" y="-1032.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="489.5" y="-1021.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="474.5,-1020 474.5,-1132 647.5,-1132 647.5,-1020 474.5,-1020"/>
+<text text-anchor="middle" x="561" y="-1120" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExprNode</text>
+<polyline fill="none" stroke="black" points="474.5,-1113 647.5,-1113 "/>
+<text text-anchor="start" x="482.5" y="-1101" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="482.5" y="-1090" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="474.5,-1083 647.5,-1083 "/>
+<text text-anchor="start" x="482.5" y="-1071" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
+<text text-anchor="start" x="482.5" y="-1060" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
+<text text-anchor="start" x="482.5" y="-1049" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
+<text text-anchor="start" x="482.5" y="-1038" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="482.5" y="-1027" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node8 -->
 <g id="edge13" class="edge">
 <title>Node4&#45;&gt;Node8</title>
-<path fill="none" stroke="#404040" d="M657.71,-2136.71C575.77,-2122.66 440.34,-2085.85 376,-1992 281.84,-1854.65 280.76,-1393.04 353,-1243 377.79,-1191.51 426.39,-1150.69 471.12,-1121.8"/>
-<polygon fill="none" stroke="#404040" points="471.34,-1121.67 474.28,-1115.08 481.49,-1115.27 478.54,-1121.85 471.34,-1121.67"/>
-<text text-anchor="middle" x="358" y="-1483" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
+<path fill="none" stroke="#404040" d="M658.75,-2147.68C576.84,-2133.61 441.46,-2096.77 377,-2003 282.67,-1865.76 283.14,-1405.17 353,-1254 376.34,-1203.49 422,-1162.09 464.6,-1132.06"/>
+<polygon fill="none" stroke="#404040" points="464.6,-1132.06 467.28,-1125.36 474.49,-1125.26 471.81,-1131.95 464.6,-1132.06"/>
+<text text-anchor="middle" x="360" y="-1494" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="385,-1753 385,-1843 541,-1843 541,-1753 385,-1753"/>
-<text text-anchor="middle" x="463" y="-1831" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="385,-1824 541,-1824 "/>
-<text text-anchor="middle" x="463" y="-1812" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="385,-1805 541,-1805 "/>
-<text text-anchor="start" x="393" y="-1793" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="393" y="-1782" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="393" y="-1771" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="393" y="-1760" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="386,-1764 386,-1854 542,-1854 542,-1764 386,-1764"/>
+<text text-anchor="middle" x="464" y="-1842" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="386,-1835 542,-1835 "/>
+<text text-anchor="middle" x="464" y="-1823" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="386,-1816 542,-1816 "/>
+<text text-anchor="start" x="394" y="-1804" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="394" y="-1793" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="394" y="-1782" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="394" y="-1771" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node10 -->
 <g id="edge12" class="edge">
 <title>Node4&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M649.46,-2093.14C620.16,-2070.39 587.97,-2041.84 564,-2011 523.6,-1959.01 493.98,-1888.24 477.61,-1843.08"/>
-<polygon fill="none" stroke="midnightblue" points="647.57,-2096.1 657.64,-2099.4 651.83,-2090.54 647.57,-2096.1"/>
+<path fill="none" stroke="midnightblue" d="M650.46,-2104.14C621.16,-2081.39 588.97,-2052.84 565,-2022 524.6,-1970.01 494.98,-1899.24 478.61,-1854.08"/>
+<polygon fill="none" stroke="midnightblue" points="648.57,-2107.1 658.64,-2110.4 652.83,-2101.54 648.57,-2107.1"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="black" points="494,-1451.5 494,-1519.5 650,-1519.5 650,-1451.5 494,-1451.5"/>
-<text text-anchor="middle" x="572" y="-1507.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<polyline fill="none" stroke="black" points="494,-1500.5 650,-1500.5 "/>
-<text text-anchor="middle" x="572" y="-1488.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="494,-1481.5 650,-1481.5 "/>
-<text text-anchor="start" x="502" y="-1469.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="502" y="-1458.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="494,-1462.5 494,-1530.5 650,-1530.5 650,-1462.5 494,-1462.5"/>
+<text text-anchor="middle" x="572" y="-1518.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<polyline fill="none" stroke="black" points="494,-1511.5 650,-1511.5 "/>
+<text text-anchor="middle" x="572" y="-1499.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="494,-1492.5 650,-1492.5 "/>
+<text text-anchor="start" x="502" y="-1480.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="502" y="-1469.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node11 -->
 <g id="edge15" class="edge">
 <title>Node4&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M650.84,-2077.29C628.83,-2052.75 607.32,-2023.31 595,-1992 529.3,-1825.03 553.8,-1602.71 566.38,-1519.65"/>
-<polygon fill="none" stroke="midnightblue" points="648.34,-2079.75 657.68,-2084.75 653.5,-2075.01 648.34,-2079.75"/>
+<path fill="none" stroke="midnightblue" d="M651.88,-2088.28C629.87,-2063.74 608.35,-2034.29 596,-2003 530.13,-1836.08 554.09,-1613.73 566.47,-1530.66"/>
+<polygon fill="none" stroke="midnightblue" points="649.38,-2090.73 658.72,-2095.74 654.54,-2086 649.38,-2090.73"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node">
 <title>Node12</title>
 <g id="a_node12"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="655.5,-1396.5 655.5,-1574.5 812.5,-1574.5 812.5,-1396.5 655.5,-1396.5"/>
-<text text-anchor="start" x="663.5" y="-1562.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="734" y="-1551.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
-<polyline fill="none" stroke="black" points="655.5,-1544.5 812.5,-1544.5 "/>
-<text text-anchor="start" x="663.5" y="-1532.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="655.5,-1525.5 812.5,-1525.5 "/>
+<polygon fill="white" stroke="black" points="655.5,-1407.5 655.5,-1585.5 812.5,-1585.5 812.5,-1407.5 655.5,-1407.5"/>
+<text text-anchor="start" x="663.5" y="-1573.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="734" y="-1562.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
+<polyline fill="none" stroke="black" points="655.5,-1555.5 812.5,-1555.5 "/>
+<text text-anchor="start" x="663.5" y="-1543.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="655.5,-1536.5 812.5,-1536.5 "/>
+<text text-anchor="start" x="663.5" y="-1524.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="663.5" y="-1513.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="663.5" y="-1502.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="663.5" y="-1491.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
@@ -267,404 +268,404 @@
 <text text-anchor="start" x="663.5" y="-1469.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="663.5" y="-1458.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="663.5" y="-1447.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="663.5" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="663.5" y="-1436.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="663.5" y="-1425.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="663.5" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="663.5" y="-1403.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<text text-anchor="start" x="663.5" y="-1414.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node12 -->
 <g id="edge17" class="edge">
 <title>Node4&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M653.61,-2034.55C647.24,-2020.66 641.78,-2006.3 638,-1992 593.92,-1825.29 580.08,-1766.43 638,-1604 638.23,-1603.36 648.16,-1591.08 661.55,-1574.68"/>
-<polygon fill="none" stroke="midnightblue" points="650.46,-2036.07 657.92,-2043.6 656.78,-2033.06 650.46,-2036.07"/>
+<path fill="none" stroke="midnightblue" d="M654.61,-2045.55C648.24,-2031.66 642.78,-2017.3 639,-2003 594.92,-1836.29 581.5,-1777.58 639,-1615 639.85,-1612.6 648.89,-1600.89 661.08,-1585.72"/>
+<polygon fill="none" stroke="midnightblue" points="651.46,-2047.07 658.92,-2054.6 657.78,-2044.06 651.46,-2047.07"/>
 </g>
 <!-- Node14 -->
 <g id="node14" class="node">
 <title>Node14</title>
 <g id="a_node14"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="647,-1764 647,-1832 803,-1832 803,-1764 647,-1764"/>
-<text text-anchor="middle" x="725" y="-1820" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="647,-1813 803,-1813 "/>
-<text text-anchor="middle" x="725" y="-1801" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="647,-1794 803,-1794 "/>
-<text text-anchor="start" x="655" y="-1782" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="655" y="-1771" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="648,-1775 648,-1843 804,-1843 804,-1775 648,-1775"/>
+<text text-anchor="middle" x="726" y="-1831" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="648,-1824 804,-1824 "/>
+<text text-anchor="middle" x="726" y="-1812" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="648,-1805 804,-1805 "/>
+<text text-anchor="start" x="656" y="-1793" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="656" y="-1782" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node14 -->
 <g id="edge20" class="edge">
 <title>Node4&#45;&gt;Node14</title>
-<path fill="none" stroke="midnightblue" d="M725,-2019.08C725,-1952.15 725,-1875.03 725,-1832.16"/>
-<polygon fill="none" stroke="midnightblue" points="721.5,-2019.31 725,-2029.31 728.5,-2019.31 721.5,-2019.31"/>
+<path fill="none" stroke="midnightblue" d="M726,-2030.08C726,-1963.15 726,-1886.03 726,-1843.16"/>
+<polygon fill="none" stroke="midnightblue" points="722.5,-2030.31 726,-2040.31 729.5,-2030.31 722.5,-2030.31"/>
 </g>
 <!-- Node16 -->
 <g id="node16" class="node">
 <title>Node16</title>
 <g id="a_node16"><a xlink:href="classtvm_1_1BaseExpr.html" target="_top" xlink:title="Managed reference to BaseExprNode.">
-<polygon fill="white" stroke="black" points="821,-1764 821,-1832 977,-1832 977,-1764 821,-1764"/>
-<text text-anchor="middle" x="899" y="-1820" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
-<polyline fill="none" stroke="black" points="821,-1813 977,-1813 "/>
-<text text-anchor="middle" x="899" y="-1801" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="821,-1794 977,-1794 "/>
-<text text-anchor="start" x="829" y="-1782" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="829" y="-1771" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="822,-1775 822,-1843 978,-1843 978,-1775 822,-1775"/>
+<text text-anchor="middle" x="900" y="-1831" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
+<polyline fill="none" stroke="black" points="822,-1824 978,-1824 "/>
+<text text-anchor="middle" x="900" y="-1812" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="822,-1805 978,-1805 "/>
+<text text-anchor="start" x="830" y="-1793" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="830" y="-1782" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node16 -->
 <g id="edge23" class="edge">
 <title>Node4&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M796.98,-2020.65C802.17,-2011.01 807.23,-2001.38 812,-1992 839.98,-1936.96 868.7,-1871.04 885.15,-1832.23"/>
-<polygon fill="none" stroke="midnightblue" points="793.87,-2019.04 792.18,-2029.5 800.02,-2022.38 793.87,-2019.04"/>
+<path fill="none" stroke="midnightblue" d="M797.98,-2031.65C803.17,-2022.01 808.23,-2012.38 813,-2003 840.98,-1947.96 869.7,-1882.04 886.15,-1843.23"/>
+<polygon fill="none" stroke="midnightblue" points="794.87,-2030.04 793.18,-2040.5 801.02,-2033.38 794.87,-2030.04"/>
 </g>
 <!-- Node17 -->
 <g id="node17" class="node">
 <title>Node17</title>
 <g id="a_node17"><a xlink:href="classtvm_1_1relax_1_1StructInfo.html" target="_top" xlink:title="Managed reference to StructInfoNode.">
-<polygon fill="white" stroke="black" points="927,-1156.5 927,-1224.5 1083,-1224.5 1083,-1156.5 927,-1156.5"/>
-<text text-anchor="middle" x="1005" y="-1212.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StructInfo</text>
-<polyline fill="none" stroke="black" points="927,-1205.5 1083,-1205.5 "/>
-<text text-anchor="middle" x="1005" y="-1193.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="927,-1186.5 1083,-1186.5 "/>
-<text text-anchor="start" x="935" y="-1174.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="935" y="-1163.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="928,-1167.5 928,-1235.5 1084,-1235.5 1084,-1167.5 928,-1167.5"/>
+<text text-anchor="middle" x="1006" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StructInfo</text>
+<polyline fill="none" stroke="black" points="928,-1216.5 1084,-1216.5 "/>
+<text text-anchor="middle" x="1006" y="-1204.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="928,-1197.5 1084,-1197.5 "/>
+<text text-anchor="start" x="936" y="-1185.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="936" y="-1174.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node17 -->
 <g id="edge25" class="edge">
 <title>Node4&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M801.95,-2122.83C863.58,-2100.61 946.09,-2059.77 986,-1992 1138.53,-1732.95 1046.93,-1340.35 1014.8,-1224.67"/>
-<polygon fill="none" stroke="midnightblue" points="800.52,-2119.62 792.25,-2126.24 802.84,-2126.23 800.52,-2119.62"/>
+<path fill="none" stroke="midnightblue" d="M802.95,-2133.83C864.58,-2111.61 947.09,-2070.77 987,-2003 1139.53,-1743.95 1047.93,-1351.35 1015.8,-1235.67"/>
+<polygon fill="none" stroke="midnightblue" points="801.52,-2130.62 793.25,-2137.24 803.84,-2137.23 801.52,-2130.62"/>
 </g>
 <!-- Node18 -->
 <g id="node18" class="node">
 <title>Node18</title>
 <g id="a_node18"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="954.5,-532.5 954.5,-787.5 1075.5,-787.5 1075.5,-532.5 954.5,-532.5"/>
-<text text-anchor="start" x="962.5" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
-<text text-anchor="middle" x="1015" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::relax::Var &gt;</text>
-<polyline fill="none" stroke="black" points="954.5,-757.5 1075.5,-757.5 "/>
-<text text-anchor="middle" x="1015" y="-745.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="954.5,-738.5 1075.5,-738.5 "/>
-<text text-anchor="start" x="962.5" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="962.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="962.5" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="962.5" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="962.5" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="962.5" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="962.5" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="962.5" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="962.5" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="962.5" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="962.5" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
-<text text-anchor="start" x="962.5" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="962.5" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="962.5" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="962.5" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="962.5" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="962.5" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="962.5" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
+<polygon fill="white" stroke="black" points="961.5,-532.5 961.5,-787.5 1082.5,-787.5 1082.5,-532.5 961.5,-532.5"/>
+<text text-anchor="start" x="969.5" y="-775.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
+<text text-anchor="middle" x="1022" y="-764.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::relax::Var &gt;</text>
+<polyline fill="none" stroke="black" points="961.5,-757.5 1082.5,-757.5 "/>
+<text text-anchor="middle" x="1022" y="-745.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="961.5,-738.5 1082.5,-738.5 "/>
+<text text-anchor="start" x="969.5" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="969.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="969.5" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="969.5" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="969.5" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="969.5" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="969.5" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="969.5" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="969.5" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="969.5" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="969.5" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="969.5" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="969.5" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="969.5" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="969.5" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="969.5" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="969.5" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="969.5" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node18 -->
 <g id="edge27" class="edge">
 <title>Node4&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M801.88,-2130.63C876.61,-2112.27 986.68,-2072.67 1042,-1992 1147.2,-1838.59 1090.63,-1341.89 1084,-1156 1078.44,-1000.15 1087.37,-959.35 1059,-806 1057.88,-799.92 1056.59,-793.74 1055.17,-787.52"/>
-<polygon fill="none" stroke="midnightblue" points="800.96,-2127.25 792.04,-2132.98 802.58,-2134.06 800.96,-2127.25"/>
+<path fill="none" stroke="midnightblue" d="M802.88,-2141.63C877.61,-2123.27 987.68,-2083.67 1043,-2003 1148.2,-1849.59 1090.66,-1352.93 1085,-1167 1080.11,-1006.33 1089.91,-964.47 1063,-806 1061.97,-799.94 1060.78,-793.77 1059.48,-787.56"/>
+<polygon fill="none" stroke="midnightblue" points="801.96,-2138.25 793.04,-2143.98 803.58,-2145.06 801.96,-2138.25"/>
 </g>
 <!-- Node19 -->
 <g id="node19" class="node">
 <title>Node19</title>
 <g id="a_node19"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="1094.5,-806.5 1094.5,-984.5 1231.5,-984.5 1231.5,-806.5 1094.5,-806.5"/>
-<text text-anchor="start" x="1102.5" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="1163" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::relax::Function &gt;</text>
-<polyline fill="none" stroke="black" points="1094.5,-954.5 1231.5,-954.5 "/>
-<text text-anchor="start" x="1102.5" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="1094.5,-935.5 1231.5,-935.5 "/>
-<text text-anchor="start" x="1102.5" y="-923.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="1102.5" y="-912.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="1102.5" y="-901.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="1102.5" y="-890.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="1102.5" y="-879.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="1102.5" y="-868.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="1102.5" y="-857.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="1102.5" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="1102.5" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="1102.5" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="1102.5" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<polygon fill="white" stroke="black" points="1101.5,-806.5 1101.5,-984.5 1238.5,-984.5 1238.5,-806.5 1101.5,-806.5"/>
+<text text-anchor="start" x="1109.5" y="-972.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="1170" y="-961.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::relax::Function &gt;</text>
+<polyline fill="none" stroke="black" points="1101.5,-954.5 1238.5,-954.5 "/>
+<text text-anchor="start" x="1109.5" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="1101.5,-935.5 1238.5,-935.5 "/>
+<text text-anchor="start" x="1109.5" y="-923.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="1109.5" y="-912.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="1109.5" y="-901.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="1109.5" y="-890.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="1109.5" y="-879.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="1109.5" y="-868.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="1109.5" y="-857.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="1109.5" y="-846.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="1109.5" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="1109.5" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="1109.5" y="-813.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node19 -->
 <g id="edge29" class="edge">
 <title>Node4&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M802.25,-2141.57C891.76,-2133.11 1036.58,-2104.75 1112,-2011 1171.47,-1937.07 1137,-1893.88 1137,-1799 1137,-1799 1137,-1799 1137,-1189.5 1137,-1120.56 1144.23,-1042.85 1151.07,-984.79"/>
-<polygon fill="none" stroke="midnightblue" points="801.81,-2138.09 792.16,-2142.46 802.42,-2145.06 801.81,-2138.09"/>
+<path fill="none" stroke="midnightblue" d="M803.1,-2152.44C892.47,-2143.87 1037.15,-2115.4 1113,-2022 1172.88,-1948.27 1140,-1904.98 1140,-1810 1140,-1810 1140,-1810 1140,-1200.5 1140,-1127.58 1148.65,-1045.29 1156.67,-984.73"/>
+<polygon fill="none" stroke="midnightblue" points="802.67,-2148.97 793.02,-2153.35 803.3,-2155.94 802.67,-2148.97"/>
 </g>
 <!-- Node21 -->
 <g id="node21" class="node">
 <title>Node21</title>
 <g id="a_node21"><a xlink:href="classtvm_1_1relax_1_1BindingBlock.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="1166,-1747.5 1166,-1848.5 1322,-1848.5 1322,-1747.5 1166,-1747.5"/>
-<text text-anchor="middle" x="1244" y="-1836.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BindingBlock</text>
-<polyline fill="none" stroke="black" points="1166,-1829.5 1322,-1829.5 "/>
-<text text-anchor="middle" x="1244" y="-1817.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="1166,-1810.5 1322,-1810.5 "/>
-<text text-anchor="start" x="1174" y="-1798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ BindingBlock()</text>
-<text text-anchor="start" x="1174" y="-1787.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1174" y="-1776.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="1174" y="-1765.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1174" y="-1754.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="1173,-1758.5 1173,-1859.5 1329,-1859.5 1329,-1758.5 1173,-1758.5"/>
+<text text-anchor="middle" x="1251" y="-1847.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::BindingBlock</text>
+<polyline fill="none" stroke="black" points="1173,-1840.5 1329,-1840.5 "/>
+<text text-anchor="middle" x="1251" y="-1828.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="1173,-1821.5 1329,-1821.5 "/>
+<text text-anchor="start" x="1181" y="-1809.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ BindingBlock()</text>
+<text text-anchor="start" x="1181" y="-1798.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1181" y="-1787.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<text text-anchor="start" x="1181" y="-1776.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1181" y="-1765.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node21 -->
 <g id="edge32" class="edge">
 <title>Node4&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M802.32,-2139.74C895.67,-2129.52 1052.39,-2099.44 1151,-2011 1198.57,-1968.33 1222.93,-1896.89 1234.55,-1848.87"/>
-<polygon fill="none" stroke="midnightblue" points="801.67,-2136.29 792.09,-2140.81 802.4,-2143.25 801.67,-2136.29"/>
+<path fill="none" stroke="midnightblue" d="M803.16,-2150.62C896.68,-2140.26 1054.11,-2110.06 1154,-2022 1202.27,-1979.44 1228,-1907.97 1240.57,-1859.91"/>
+<polygon fill="none" stroke="midnightblue" points="802.77,-2147.14 793.2,-2151.67 803.51,-2154.1 802.77,-2147.14"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="655,-2310.5 655,-2488.5 795,-2488.5 795,-2310.5 655,-2310.5"/>
-<text text-anchor="start" x="663" y="-2476.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="725" y="-2465.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="655,-2458.5 795,-2458.5 "/>
-<text text-anchor="middle" x="725" y="-2446.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="655,-2439.5 795,-2439.5 "/>
-<text text-anchor="start" x="663" y="-2427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="663" y="-2416.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="663" y="-2405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="663" y="-2394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="663" y="-2383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="663" y="-2372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="663" y="-2361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="663" y="-2350.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="663" y="-2339.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="663" y="-2328.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="663" y="-2317.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<polygon fill="white" stroke="black" points="656,-2321.5 656,-2499.5 796,-2499.5 796,-2321.5 656,-2321.5"/>
+<text text-anchor="start" x="664" y="-2487.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="726" y="-2476.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="656,-2469.5 796,-2469.5 "/>
+<text text-anchor="middle" x="726" y="-2457.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="656,-2450.5 796,-2450.5 "/>
+<text text-anchor="start" x="664" y="-2438.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="664" y="-2427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="664" y="-2416.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="664" y="-2405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="664" y="-2394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="664" y="-2383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="664" y="-2372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="664" y="-2361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="664" y="-2350.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="664" y="-2339.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="664" y="-2328.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M725,-2310.18C725,-2298.84 725,-2287.05 725,-2275.23"/>
-<polygon fill="none" stroke="#404040" points="725,-2274.91 721,-2268.91 725,-2262.91 729,-2268.91 725,-2274.91"/>
-<text text-anchor="middle" x="744.5" y="-2284" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M726,-2321.18C726,-2309.84 726,-2298.05 726,-2286.23"/>
+<polygon fill="none" stroke="#404040" points="726,-2285.91 722,-2279.91 726,-2273.91 730,-2279.91 726,-2285.91"/>
+<text text-anchor="middle" x="745.5" y="-2295" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1relax_1_1FunctionNode.html" target="_top" xlink:title="A Relax function.">
-<polygon fill="white" stroke="black" points="803,-237.5 803,-393.5 979,-393.5 979,-237.5 803,-237.5"/>
-<text text-anchor="middle" x="891" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::FunctionNode</text>
-<polyline fill="none" stroke="black" points="803,-374.5 979,-374.5 "/>
-<text text-anchor="start" x="811" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_pure</text>
-<text text-anchor="start" x="811" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="811" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="811" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="811" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="811" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<polyline fill="none" stroke="black" points="803,-300.5 979,-300.5 "/>
-<text text-anchor="start" x="811" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="811" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
-<text text-anchor="start" x="811" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
-<text text-anchor="start" x="811" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
-<text text-anchor="start" x="811" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="810,-237.5 810,-393.5 986,-393.5 986,-237.5 810,-237.5"/>
+<text text-anchor="middle" x="898" y="-381.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::FunctionNode</text>
+<polyline fill="none" stroke="black" points="810,-374.5 986,-374.5 "/>
+<text text-anchor="start" x="818" y="-362.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ is_pure</text>
+<text text-anchor="start" x="818" y="-351.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="818" y="-340.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="818" y="-329.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="818" y="-318.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="818" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<polyline fill="none" stroke="black" points="810,-300.5 986,-300.5 "/>
+<text text-anchor="start" x="818" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="818" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
+<text text-anchor="start" x="818" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
+<text text-anchor="start" x="818" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
+<text text-anchor="start" x="818" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node1 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M904.84,-237.48C907.24,-227.48 909.96,-217.43 913,-208 913.77,-205.62 914.57,-203.23 915.4,-200.83"/>
-<polygon fill="none" stroke="#404040" points="915.4,-200.82 913.68,-193.81 919.48,-189.53 921.2,-196.53 915.4,-200.82"/>
-<text text-anchor="middle" x="957" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00"> #original_fn_ptr_</text>
+<path fill="none" stroke="#404040" d="M911.84,-237.48C914.24,-227.48 916.96,-217.43 920,-208 920.77,-205.62 921.57,-203.23 922.4,-200.83"/>
+<polygon fill="none" stroke="#404040" points="922.4,-200.82 920.68,-193.81 926.48,-189.53 928.2,-196.53 922.4,-200.82"/>
+<text text-anchor="middle" x="964" y="-211" font-family="Helvetica,sans-Serif" font-size="10.00"> #original_fn_ptr_</text>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1BaseFuncNode.html" target="_top" xlink:title="Base node of all functions.">
-<polygon fill="white" stroke="black" points="657.5,-598.5 657.5,-721.5 830.5,-721.5 830.5,-598.5 657.5,-598.5"/>
-<text text-anchor="middle" x="744" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
-<polyline fill="none" stroke="black" points="657.5,-702.5 830.5,-702.5 "/>
-<text text-anchor="start" x="665.5" y="-690.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="665.5" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="657.5,-672.5 830.5,-672.5 "/>
-<text text-anchor="start" x="665.5" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="665.5" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="665.5" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="665.5" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
-<text text-anchor="start" x="665.5" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="665.5" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="664.5,-598.5 664.5,-721.5 837.5,-721.5 837.5,-598.5 664.5,-598.5"/>
+<text text-anchor="middle" x="751" y="-709.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
+<polyline fill="none" stroke="black" points="664.5,-702.5 837.5,-702.5 "/>
+<text text-anchor="start" x="672.5" y="-690.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="672.5" y="-679.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="664.5,-672.5 837.5,-672.5 "/>
+<text text-anchor="start" x="672.5" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="672.5" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="672.5" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="672.5" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
+<text text-anchor="start" x="672.5" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="672.5" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M771.29,-589.05C791.01,-539.33 818.69,-471.15 845,-412 847.66,-406.03 850.46,-399.88 853.32,-393.71"/>
-<polygon fill="none" stroke="midnightblue" points="768.01,-587.84 767.58,-598.42 774.51,-590.41 768.01,-587.84"/>
+<path fill="none" stroke="midnightblue" d="M778.29,-589.05C798.01,-539.33 825.69,-471.15 852,-412 854.66,-406.03 857.46,-399.88 860.32,-393.71"/>
+<polygon fill="none" stroke="midnightblue" points="775.01,-587.84 774.58,-598.42 781.51,-590.41 775.01,-587.84"/>
 </g>
 <!-- Node8&#45;&gt;Node7 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M595.71,-1005.19C629.21,-927.43 685.17,-797.54 717.92,-721.52"/>
-<polygon fill="none" stroke="midnightblue" points="592.48,-1003.84 591.74,-1014.41 598.91,-1006.61 592.48,-1003.84"/>
+<path fill="none" stroke="midnightblue" d="M590.72,-1010.24C626.95,-931.29 687.72,-798.89 723.1,-721.79"/>
+<polygon fill="none" stroke="midnightblue" points="587.42,-1009.05 586.43,-1019.6 593.78,-1011.97 587.42,-1009.05"/>
 </g>
 <!-- Node9&#45;&gt;Node8 -->
 <g id="edge9" class="edge">
 <title>Node9&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M484.74,-1234.17C502.34,-1199.79 523.25,-1158.93 539.72,-1126.76"/>
-<polygon fill="none" stroke="midnightblue" points="481.55,-1232.72 480.11,-1243.22 487.78,-1235.91 481.55,-1232.72"/>
+<path fill="none" stroke="midnightblue" d="M482,-1244.88C498.91,-1208.94 519.21,-1165.81 534.99,-1132.27"/>
+<polygon fill="none" stroke="midnightblue" points="478.64,-1243.79 477.55,-1254.33 484.98,-1246.77 478.64,-1243.79"/>
 </g>
 <!-- Node10&#45;&gt;Node9 -->
 <g id="edge11" class="edge">
 <title>Node10&#45;&gt;Node9</title>
-<path fill="none" stroke="#404040" d="M459.54,-1752.99C456.37,-1710.33 451.88,-1643.77 450,-1586 447.71,-1515.61 447.69,-1435.22 448.11,-1378.69"/>
-<polygon fill="none" stroke="#404040" points="448.11,-1378.65 444.16,-1372.61 448.2,-1366.65 452.15,-1372.68 448.11,-1378.65"/>
-<text text-anchor="middle" x="467.5" y="-1483" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M460.27,-1763.99C456.85,-1721.34 452.02,-1654.79 450,-1597 447.54,-1526.62 447.55,-1446.23 448.01,-1389.69"/>
+<polygon fill="none" stroke="#404040" points="448.01,-1389.65 444.07,-1383.61 448.12,-1377.65 452.07,-1383.68 448.01,-1389.65"/>
+<text text-anchor="middle" x="467.5" y="-1494" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
 </g>
 <!-- Node11&#45;&gt;Node8 -->
 <g id="edge14" class="edge">
 <title>Node11&#45;&gt;Node8</title>
-<path fill="none" stroke="#404040" d="M571.68,-1451.4C571.02,-1383.76 569.52,-1228.52 568.65,-1138.82"/>
-<polygon fill="none" stroke="#404040" points="568.65,-1138.61 564.59,-1132.65 568.53,-1126.61 572.59,-1132.57 568.65,-1138.61"/>
-<text text-anchor="middle" x="612" y="-1302.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
+<path fill="none" stroke="#404040" d="M571.13,-1462.31C569.33,-1393.74 565.16,-1235.25 562.77,-1144.34"/>
+<polygon fill="none" stroke="#404040" points="562.77,-1144.25 558.61,-1138.36 562.45,-1132.25 566.61,-1138.15 562.77,-1144.25"/>
+<text text-anchor="middle" x="610" y="-1313.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
 </g>
 <!-- Node12&#45;&gt;Node8 -->
 <g id="edge16" class="edge">
 <title>Node12&#45;&gt;Node8</title>
-<path fill="none" stroke="#404040" d="M710.34,-1396.25C696.89,-1349.92 678.63,-1292.62 658,-1243 643.1,-1207.17 623.35,-1168.8 606.14,-1137.45"/>
-<polygon fill="none" stroke="#404040" points="605.99,-1137.17 599.58,-1133.86 600.18,-1126.67 606.58,-1129.99 605.99,-1137.17"/>
-<text text-anchor="middle" x="734.5" y="-1302.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
+<path fill="none" stroke="#404040" d="M709.74,-1407.49C695.91,-1361.09 677.14,-1303.66 656,-1254 639.92,-1216.23 618.55,-1175.78 600.14,-1143.09"/>
+<polygon fill="none" stroke="#404040" points="599.95,-1142.76 593.51,-1139.52 594.03,-1132.32 600.47,-1135.57 599.95,-1142.76"/>
+<text text-anchor="middle" x="733.5" y="-1313.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
 </g>
 <!-- Node13 -->
 <g id="node13" class="node">
 <title>Node13</title>
 <g id="a_node13"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="673,-1003.5 673,-1137.5 829,-1137.5 829,-1003.5 673,-1003.5"/>
-<text text-anchor="middle" x="751" y="-1125.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="673,-1118.5 829,-1118.5 "/>
-<text text-anchor="middle" x="751" y="-1106.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="673,-1099.5 829,-1099.5 "/>
-<text text-anchor="start" x="681" y="-1087.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="681" y="-1076.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="681" y="-1065.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="681" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="681" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="681" y="-1032.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="681" y="-1021.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="681" y="-1010.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="666,-1003.5 666,-1148.5 838,-1148.5 838,-1003.5 666,-1003.5"/>
+<text text-anchor="middle" x="752" y="-1136.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="666,-1129.5 838,-1129.5 "/>
+<text text-anchor="middle" x="752" y="-1117.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="666,-1110.5 838,-1110.5 "/>
+<text text-anchor="start" x="674" y="-1098.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="674" y="-1087.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="674" y="-1076.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="674" y="-1065.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="674" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="674" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="674" y="-1032.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="674" y="-1021.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="674" y="-1010.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node13&#45;&gt;Node7 -->
 <g id="edge18" class="edge">
 <title>Node13&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M749.87,-1003.41C748.6,-929.62 746.56,-810.52 745.25,-734.02"/>
-<polygon fill="none" stroke="#404040" points="745.25,-733.66 741.14,-727.73 745.04,-721.66 749.14,-727.59 745.25,-733.66"/>
-<text text-anchor="middle" x="766" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M751.83,-1003.36C751.64,-927.95 751.36,-809.85 751.18,-733.95"/>
+<polygon fill="none" stroke="#404040" points="751.18,-733.68 747.16,-727.69 751.15,-721.68 755.16,-727.67 751.18,-733.68"/>
+<text text-anchor="middle" x="768" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node14&#45;&gt;Node13 -->
 <g id="edge19" class="edge">
 <title>Node14&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M748.65,-1755.02C770.54,-1713.55 801.54,-1647.59 814,-1586 831.71,-1498.44 826.51,-1473.45 814,-1385 804.8,-1319.96 795.5,-1304.71 773,-1243 770,-1234.78 767.2,-1233.47 765,-1225 757.69,-1196.9 754.06,-1165.05 752.3,-1137.67"/>
-<polygon fill="none" stroke="midnightblue" points="745.48,-1753.52 743.85,-1763.99 751.65,-1756.82 745.48,-1753.52"/>
+<path fill="none" stroke="midnightblue" d="M749.38,-1765.98C771.04,-1724.49 801.69,-1658.51 814,-1597 831.53,-1509.4 826.8,-1484.41 814,-1396 804.57,-1330.87 791.74,-1316.78 772,-1254 769.47,-1245.96 767.71,-1244.26 766,-1236 760.14,-1207.78 756.73,-1176.25 754.75,-1148.75"/>
+<polygon fill="none" stroke="midnightblue" points="746.22,-1764.49 744.64,-1774.96 752.4,-1767.76 746.22,-1764.49"/>
 </g>
 <!-- Node15 -->
 <g id="node15" class="node">
 <title>Node15</title>
 <g id="a_node15"><a xlink:href="classtvm_1_1RelayExpr.html" target="_top" xlink:title="Managed reference to RelayExprNode.">
-<polygon fill="white" stroke="black" points="766,-1156.5 766,-1224.5 922,-1224.5 922,-1156.5 766,-1156.5"/>
-<text text-anchor="middle" x="844" y="-1212.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExpr</text>
-<polyline fill="none" stroke="black" points="766,-1205.5 922,-1205.5 "/>
-<text text-anchor="middle" x="844" y="-1193.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="766,-1186.5 922,-1186.5 "/>
-<text text-anchor="start" x="774" y="-1174.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="774" y="-1163.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="767,-1167.5 767,-1235.5 923,-1235.5 923,-1167.5 767,-1167.5"/>
+<text text-anchor="middle" x="845" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExpr</text>
+<polyline fill="none" stroke="black" points="767,-1216.5 923,-1216.5 "/>
+<text text-anchor="middle" x="845" y="-1204.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="767,-1197.5 923,-1197.5 "/>
+<text text-anchor="start" x="775" y="-1185.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="775" y="-1174.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node15&#45;&gt;Node6 -->
 <g id="edge21" class="edge">
 <title>Node15&#45;&gt;Node6</title>
-<path fill="none" stroke="#404040" d="M845.14,-1156.4C847.48,-1089.96 853.19,-935.6 860,-806 867.35,-666.15 878.05,-503.95 884.76,-405.85"/>
-<polygon fill="none" stroke="#404040" points="884.78,-405.59 881.2,-399.33 885.6,-393.62 889.18,-399.88 884.78,-405.59"/>
-<text text-anchor="middle" x="878" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00"> +body</text>
+<path fill="none" stroke="#404040" d="M846.77,-1167.24C850.4,-1099.34 859.03,-939.87 867,-806 875.32,-666.2 885.75,-503.99 892.14,-405.87"/>
+<polygon fill="none" stroke="#404040" points="892.15,-405.61 888.55,-399.37 892.93,-393.64 896.54,-399.89 892.15,-405.61"/>
+<text text-anchor="middle" x="885" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00"> +body</text>
 </g>
 <!-- Node16&#45;&gt;Node15 -->
 <g id="edge22" class="edge">
 <title>Node16&#45;&gt;Node15</title>
-<path fill="none" stroke="midnightblue" d="M895.04,-1753.37C884.57,-1638.11 856.34,-1327.33 847.03,-1224.81"/>
-<polygon fill="none" stroke="midnightblue" points="891.57,-1753.94 895.96,-1763.58 898.55,-1753.31 891.57,-1753.94"/>
+<path fill="none" stroke="midnightblue" d="M896.04,-1764.37C885.57,-1649.11 857.34,-1338.33 848.03,-1235.81"/>
+<polygon fill="none" stroke="midnightblue" points="892.57,-1764.94 896.96,-1774.58 899.55,-1764.31 892.57,-1764.94"/>
 </g>
 <!-- Node17&#45;&gt;Node6 -->
 <g id="edge24" class="edge">
 <title>Node17&#45;&gt;Node6</title>
-<path fill="none" stroke="#404040" d="M999.81,-1156.5C989.1,-1087.94 964.06,-925.08 946,-788 928.49,-655.13 911.03,-500.8 900.63,-405.9"/>
-<polygon fill="none" stroke="#404040" points="900.6,-405.7 895.98,-400.17 899.3,-393.77 903.93,-399.3 900.6,-405.7"/>
-<text text-anchor="middle" x="1014" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00"> +ret_struct_info</text>
+<path fill="none" stroke="#404040" d="M1001.61,-1167.37C992.36,-1097.35 970.3,-929.18 953,-788 936.7,-654.97 918.91,-500.69 908.11,-405.84"/>
+<polygon fill="none" stroke="#404040" points="908.08,-405.64 903.43,-400.13 906.73,-393.71 911.38,-399.22 908.08,-405.64"/>
+<text text-anchor="middle" x="1018" y="-893" font-family="Helvetica,sans-Serif" font-size="10.00"> +ret_struct_info</text>
 </g>
 <!-- Node18&#45;&gt;Node1 -->
 <g id="edge33" class="edge">
 <title>Node18&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M1021,-532.08C1022.9,-441.13 1020.57,-316.11 1001,-208 1000.61,-205.82 1000.18,-203.63 999.72,-201.42"/>
-<polygon fill="none" stroke="#404040" points="999.68,-201.27 994.44,-196.32 996.99,-189.57 1002.24,-194.52 999.68,-201.27"/>
-<text text-anchor="middle" x="1053.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00"> #fn_outputs_</text>
+<path fill="none" stroke="#404040" d="M1028,-532.08C1029.9,-441.13 1027.57,-316.11 1008,-208 1007.61,-205.82 1007.18,-203.63 1006.72,-201.42"/>
+<polygon fill="none" stroke="#404040" points="1006.68,-201.27 1001.44,-196.32 1003.99,-189.57 1009.24,-194.52 1006.68,-201.27"/>
+<text text-anchor="middle" x="1060.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00"> #fn_outputs_</text>
 </g>
 <!-- Node18&#45;&gt;Node6 -->
 <g id="edge26" class="edge">
 <title>Node18&#45;&gt;Node6</title>
-<path fill="none" stroke="#404040" d="M958.31,-532.21C956.08,-526.09 953.96,-520 952,-514 937.57,-469.83 942.74,-456.39 929,-412 928.3,-409.73 927.57,-407.44 926.81,-405.13"/>
-<polygon fill="none" stroke="#404040" points="926.72,-404.89 921,-400.5 922.84,-393.53 928.57,-397.91 926.72,-404.89"/>
-<text text-anchor="middle" x="976.5" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +params</text>
+<path fill="none" stroke="#404040" d="M965.31,-532.21C963.08,-526.09 960.96,-520 959,-514 944.57,-469.83 949.74,-456.39 936,-412 935.3,-409.73 934.57,-407.44 933.81,-405.13"/>
+<polygon fill="none" stroke="#404040" points="933.72,-404.89 928,-400.5 929.84,-393.53 935.57,-397.91 933.72,-404.89"/>
+<text text-anchor="middle" x="983.5" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +params</text>
 </g>
 <!-- Node19&#45;&gt;Node1 -->
 <g id="edge28" class="edge">
 <title>Node19&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M1148.07,-806.35C1135.56,-729.4 1118.16,-614.61 1108,-514 1101.81,-452.65 1115.97,-293.81 1092,-237 1083.97,-217.96 1072.21,-199.84 1059.01,-183.32"/>
-<polygon fill="none" stroke="#404040" points="1058.76,-183.02 1051.85,-180.96 1051.09,-173.79 1058,-175.85 1058.76,-183.02"/>
-<text text-anchor="middle" x="1134" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #root_fn_</text>
+<path fill="none" stroke="#404040" d="M1155.07,-806.35C1142.56,-729.4 1125.16,-614.61 1115,-514 1108.81,-452.65 1122.97,-293.81 1099,-237 1090.97,-217.96 1079.21,-199.84 1066.01,-183.32"/>
+<polygon fill="none" stroke="#404040" points="1065.76,-183.02 1058.85,-180.96 1058.09,-173.79 1065,-175.85 1065.76,-183.02"/>
+<text text-anchor="middle" x="1141" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #root_fn_</text>
 </g>
 <!-- Node20 -->
 <g id="node20" class="node">
 <title>Node20</title>
 <g id="a_node20"><a xlink:href="classtvm_1_1relax_1_1DataflowBlock.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="1169,-412.5 1169,-513.5 1325,-513.5 1325,-412.5 1169,-412.5"/>
-<text text-anchor="middle" x="1247" y="-501.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowBlock</text>
-<polyline fill="none" stroke="black" points="1169,-494.5 1325,-494.5 "/>
-<text text-anchor="middle" x="1247" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="1169,-475.5 1325,-475.5 "/>
-<text text-anchor="start" x="1177" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataflowBlock()</text>
-<text text-anchor="start" x="1177" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1177" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="1177" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="1177" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="1176,-412.5 1176,-513.5 1332,-513.5 1332,-412.5 1176,-412.5"/>
+<text text-anchor="middle" x="1254" y="-501.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::DataflowBlock</text>
+<polyline fill="none" stroke="black" points="1176,-494.5 1332,-494.5 "/>
+<text text-anchor="middle" x="1254" y="-482.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="1176,-475.5 1332,-475.5 "/>
+<text text-anchor="start" x="1184" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DataflowBlock()</text>
+<text text-anchor="start" x="1184" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1184" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<text text-anchor="start" x="1184" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="1184" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node20&#45;&gt;Node1 -->
 <g id="edge30" class="edge">
 <title>Node20&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M1232.01,-412.26C1213.68,-357.63 1178.49,-269.48 1126,-208 1107.66,-186.52 1084.28,-167.28 1060.99,-151.06"/>
-<polygon fill="none" stroke="#404040" points="1060.96,-151.04 1053.75,-150.98 1051.03,-144.3 1058.24,-144.36 1060.96,-151.04"/>
-<text text-anchor="middle" x="1240.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00"> #dfb_</text>
+<path fill="none" stroke="#404040" d="M1239.01,-412.26C1220.68,-357.63 1185.49,-269.48 1133,-208 1114.66,-186.52 1091.28,-167.28 1067.99,-151.06"/>
+<polygon fill="none" stroke="#404040" points="1067.96,-151.04 1060.75,-150.98 1058.03,-144.3 1065.24,-144.36 1067.96,-151.04"/>
+<text text-anchor="middle" x="1247.5" y="-313" font-family="Helvetica,sans-Serif" font-size="10.00"> #dfb_</text>
 </g>
 <!-- Node21&#45;&gt;Node20 -->
 <g id="edge31" class="edge">
 <title>Node21&#45;&gt;Node20</title>
-<path fill="none" stroke="midnightblue" d="M1244.6,-1737.16C1245.48,-1644.69 1247,-1461.5 1247,-1306 1247,-1306 1247,-1306 1247,-894.5 1247,-756.61 1247,-593.87 1247,-513.72"/>
-<polygon fill="none" stroke="midnightblue" points="1241.1,-1737.13 1244.51,-1747.17 1248.1,-1737.2 1241.1,-1737.13"/>
+<path fill="none" stroke="midnightblue" d="M1251.6,-1748.16C1252.48,-1655.69 1254,-1472.5 1254,-1317 1254,-1317 1254,-1317 1254,-894.5 1254,-756.61 1254,-593.87 1254,-513.72"/>
+<polygon fill="none" stroke="midnightblue" points="1248.1,-1748.13 1251.51,-1758.17 1255.1,-1748.2 1248.1,-1748.13"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ExternFuncNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ExternFuncNode__coll__graph.svg
index 2ed9bce574..7d29f5e68d 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1ExternFuncNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1ExternFuncNode__coll__graph.svg
@@ -13,20 +13,20 @@
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="The extern function, which can represent packed function.">
-<polygon fill="#bfbfbf" stroke="black" points="456,-0.5 456,-145.5 632,-145.5 632,-0.5 456,-0.5"/>
-<text text-anchor="middle" x="544" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExternFuncNode</text>
-<polyline fill="none" stroke="black" points="456,-126.5 632,-126.5 "/>
-<text text-anchor="start" x="464" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="464" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="464" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="464" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="464" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<polyline fill="none" stroke="black" points="456,-63.5 632,-63.5 "/>
-<text text-anchor="start" x="464" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="464" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
-<text text-anchor="start" x="464" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
-<text text-anchor="start" x="464" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
-<text text-anchor="start" x="464" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#bfbfbf" stroke="black" points="454,-0.5 454,-145.5 630,-145.5 630,-0.5 454,-0.5"/>
+<text text-anchor="middle" x="542" y="-133.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::ExternFuncNode</text>
+<polyline fill="none" stroke="black" points="454,-126.5 630,-126.5 "/>
+<text text-anchor="start" x="462" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="462" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="462" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="462" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="462" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<polyline fill="none" stroke="black" points="454,-63.5 630,-63.5 "/>
+<text text-anchor="start" x="462" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="462" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
+<text text-anchor="start" x="462" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
+<text text-anchor="start" x="462" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
+<text text-anchor="start" x="462" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
@@ -34,50 +34,50 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1BaseFuncNode.html" target="_top" xlink:title="Base node of all functions.">
-<polygon fill="white" stroke="black" points="325.5,-183.5 325.5,-306.5 498.5,-306.5 498.5,-183.5 325.5,-183.5"/>
-<text text-anchor="middle" x="412" y="-294.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
-<polyline fill="none" stroke="black" points="325.5,-287.5 498.5,-287.5 "/>
-<text text-anchor="start" x="333.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="333.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="325.5,-257.5 498.5,-257.5 "/>
-<text text-anchor="start" x="333.5" y="-245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="333.5" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="333.5" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="333.5" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
-<text text-anchor="start" x="333.5" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="333.5" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="321.5,-183.5 321.5,-306.5 494.5,-306.5 494.5,-183.5 321.5,-183.5"/>
+<text text-anchor="middle" x="408" y="-294.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
+<polyline fill="none" stroke="black" points="321.5,-287.5 494.5,-287.5 "/>
+<text text-anchor="start" x="329.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="329.5" y="-264.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="321.5,-257.5 494.5,-257.5 "/>
+<text text-anchor="start" x="329.5" y="-245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="329.5" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="329.5" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="329.5" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
+<text text-anchor="start" x="329.5" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="329.5" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M465.52,-175.08C473.01,-165.42 480.73,-155.48 488.27,-145.77"/>
-<polygon fill="none" stroke="midnightblue" points="462.65,-173.06 459.28,-183.11 468.18,-177.35 462.65,-173.06"/>
+<path fill="none" stroke="midnightblue" d="M462.33,-175.08C469.94,-165.42 477.78,-155.48 485.43,-145.77"/>
+<polygon fill="none" stroke="midnightblue" points="459.44,-173.09 456,-183.11 464.94,-177.42 459.44,-173.09"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1RelayExprNode.html" target="_top" xlink:title="Base node of all non&#45;primitive expressions.">
-<polygon fill="white" stroke="black" points="325.5,-354.5 325.5,-466.5 498.5,-466.5 498.5,-354.5 325.5,-354.5"/>
-<text text-anchor="middle" x="412" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExprNode</text>
-<polyline fill="none" stroke="black" points="325.5,-447.5 498.5,-447.5 "/>
-<text text-anchor="start" x="333.5" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="333.5" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="325.5,-417.5 498.5,-417.5 "/>
-<text text-anchor="start" x="333.5" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
-<text text-anchor="start" x="333.5" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
-<text text-anchor="start" x="333.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
-<text text-anchor="start" x="333.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="333.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="321.5,-354.5 321.5,-466.5 494.5,-466.5 494.5,-354.5 321.5,-354.5"/>
+<text text-anchor="middle" x="408" y="-454.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExprNode</text>
+<polyline fill="none" stroke="black" points="321.5,-447.5 494.5,-447.5 "/>
+<text text-anchor="start" x="329.5" y="-435.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="329.5" y="-424.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="321.5,-417.5 494.5,-417.5 "/>
+<text text-anchor="start" x="329.5" y="-405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
+<text text-anchor="start" x="329.5" y="-394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
+<text text-anchor="start" x="329.5" y="-383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
+<text text-anchor="start" x="329.5" y="-372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="329.5" y="-361.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M412,-343.94C412,-331.62 412,-318.79 412,-306.63"/>
-<polygon fill="none" stroke="midnightblue" points="408.5,-344.15 412,-354.15 415.5,-344.15 408.5,-344.15"/>
+<path fill="none" stroke="midnightblue" d="M408,-343.94C408,-331.62 408,-318.79 408,-306.63"/>
+<polygon fill="none" stroke="midnightblue" points="404.5,-344.15 408,-354.15 411.5,-344.15 404.5,-344.15"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
@@ -101,8 +101,8 @@
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M497.77,-683.51C477.51,-619.25 447.99,-525.63 429.4,-466.68"/>
-<polygon fill="none" stroke="midnightblue" points="494.47,-684.68 500.82,-693.16 501.15,-682.57 494.47,-684.68"/>
+<path fill="none" stroke="midnightblue" d="M496.95,-683.51C475.94,-619.25 445.32,-525.63 426.04,-466.68"/>
+<polygon fill="none" stroke="midnightblue" points="493.67,-684.75 500.11,-693.16 500.32,-682.57 493.67,-684.75"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
@@ -215,8 +215,8 @@
 <!-- Node7&#45;&gt;Node3 -->
 <g id="edge9" class="edge">
 <title>Node7&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M478.01,-1556.92C544.31,-1537.05 642.16,-1496.12 687,-1420 774.52,-1271.42 704.77,-1203.53 687,-1032 671.14,-878.88 675.39,-835.02 616,-693 581.55,-610.62 518.79,-529.45 471.94,-475.59"/>
-<polygon fill="none" stroke="#404040" points="471.9,-475.54 464.93,-473.67 463.98,-466.53 470.94,-468.4 471.9,-475.54"/>
+<path fill="none" stroke="#404040" d="M478.01,-1556.92C544.31,-1537.05 642.16,-1496.12 687,-1420 774.52,-1271.42 704.77,-1203.53 687,-1032 671.14,-878.88 675.87,-834.82 616,-693 581.09,-610.31 517.23,-529.33 469.43,-475.61"/>
+<polygon fill="none" stroke="#404040" points="469.33,-475.5 462.34,-473.71 461.31,-466.57 468.3,-468.36 469.33,-475.5"/>
 <text text-anchor="middle" x="727" y="-922" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
@@ -360,56 +360,57 @@
 <!-- Node9&#45;&gt;Node3 -->
 <g id="edge10" class="edge">
 <title>Node9&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M192.48,-890.31C212.73,-814.56 268.68,-624.71 354,-485 355.69,-482.23 357.47,-479.45 359.31,-476.68"/>
-<polygon fill="none" stroke="#404040" points="359.4,-476.55 359.52,-469.34 366.22,-466.67 366.1,-473.88 359.4,-476.55"/>
-<text text-anchor="middle" x="296" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
+<path fill="none" stroke="#404040" d="M192.89,-890.23C213.92,-814.71 271.2,-625.99 354,-485 355.54,-482.37 357.16,-479.72 358.83,-477.07"/>
+<polygon fill="none" stroke="#404040" points="358.93,-476.92 358.87,-469.71 365.5,-466.87 365.56,-474.08 358.93,-476.92"/>
+<text text-anchor="middle" x="297" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
 </g>
 <!-- Node10&#45;&gt;Node3 -->
 <g id="edge12" class="edge">
 <title>Node10&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M346.12,-835.4C347.03,-792.34 349.38,-739.82 355,-693 363.9,-618.82 381.91,-535.03 395.32,-478.3"/>
-<polygon fill="none" stroke="#404040" points="395.32,-478.29 392.82,-471.53 398.1,-466.62 400.6,-473.39 395.32,-478.29"/>
+<path fill="none" stroke="#404040" d="M346.41,-835.43C347.37,-792.38 349.7,-739.86 355,-693 363.35,-619.11 380.03,-535.5 392.46,-478.73"/>
+<polygon fill="none" stroke="#404040" points="392.53,-478.4 389.92,-471.68 395.12,-466.68 397.73,-473.41 392.53,-478.4"/>
 <text text-anchor="middle" x="389.5" y="-752.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="31,-513 31,-647 187,-647 187,-513 31,-513"/>
-<text text-anchor="middle" x="109" y="-635" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="31,-628 187,-628 "/>
-<text text-anchor="middle" x="109" y="-616" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="31,-609 187,-609 "/>
-<text text-anchor="start" x="39" y="-597" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="39" y="-586" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="39" y="-575" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="39" y="-564" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="39" y="-553" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="39" y="-542" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="39" y="-531" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="39" y="-520" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="1,-507.5 1,-652.5 173,-652.5 173,-507.5 1,-507.5"/>
+<text text-anchor="middle" x="87" y="-640.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="1,-633.5 173,-633.5 "/>
+<text text-anchor="middle" x="87" y="-621.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="1,-614.5 173,-614.5 "/>
+<text text-anchor="start" x="9" y="-602.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="9" y="-591.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="9" y="-580.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="9" y="-569.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="9" y="-558.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="9" y="-547.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="9" y="-536.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="9" y="-525.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="9" y="-514.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node11&#45;&gt;Node2 -->
 <g id="edge14" class="edge">
 <title>Node11&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M153.9,-512.88C186.9,-466.32 234.15,-403.69 282,-354 294.86,-340.65 309.28,-327.31 323.72,-314.8"/>
-<polygon fill="none" stroke="#404040" points="324.07,-314.49 326.03,-307.55 333.19,-306.7 331.23,-313.63 324.07,-314.49"/>
-<text text-anchor="middle" x="299" y="-408" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M142.54,-507.31C179.15,-461.67 229.19,-402.29 278,-354 291.47,-340.67 306.42,-327.19 321.25,-314.49"/>
+<polygon fill="none" stroke="#404040" points="321.3,-314.45 323.28,-307.51 330.45,-306.68 328.46,-313.62 321.3,-314.45"/>
+<text text-anchor="middle" x="295" y="-408" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node12&#45;&gt;Node11 -->
 <g id="edge15" class="edge">
 <title>Node12&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M80.09,-1181.63C85.4,-1071.23 99.47,-779.04 105.81,-647.2"/>
-<polygon fill="none" stroke="midnightblue" points="76.59,-1181.58 79.6,-1191.73 83.58,-1181.91 76.59,-1181.58"/>
+<path fill="none" stroke="midnightblue" d="M78.61,-1181.44C80.13,-1072.42 84.12,-786.97 86,-652.73"/>
+<polygon fill="none" stroke="midnightblue" points="75.11,-1181.68 78.46,-1191.73 82.1,-1181.78 75.11,-1181.68"/>
 </g>
 <!-- Node13&#45;&gt;Node1 -->
 <g id="edge17" class="edge">
 <title>Node13&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M747.71,-485.49C701.03,-391.2 629.66,-247.04 584.98,-156.77"/>
-<polygon fill="none" stroke="#404040" points="584.85,-156.52 578.61,-152.92 579.53,-145.77 585.78,-149.37 584.85,-156.52"/>
-<text text-anchor="middle" x="714.5" y="-328" font-family="Helvetica,sans-Serif" font-size="10.00"> +global_symbol</text>
+<path fill="none" stroke="#404040" d="M747.34,-485.49C700.29,-391.2 628.35,-247.04 583.31,-156.77"/>
+<polygon fill="none" stroke="#404040" points="583.17,-156.51 576.91,-152.92 577.81,-145.77 584.07,-149.35 583.17,-156.51"/>
+<text text-anchor="middle" x="713.5" y="-328" font-family="Helvetica,sans-Serif" font-size="10.00"> +global_symbol</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1Function-members.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1Function-members.html
index f2a23450ad..6af06d3667 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1Function-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1Function-members.html
@@ -76,12 +76,12 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ada5c6dfe7d5ca76e6f0714c4ef922539">as</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a20fe0cf9df1a9e77e29e17985978751b">as</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aa5c355fbb7d2f7402ee360dba8a52cdd">ContainerType</a> typedef</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1Function.html#af582150c86d2cb62e7940760fd2d25a9">CreateEmpty</a>(Array&lt; Var &gt; params, StructInfo ret_struct_info, bool is_pure=true, DictAttrs attrs=NullValue&lt; DictAttrs &gt;(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1Function.html">tvm::relax::Function</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relax_1_1Function.html#a850d32598c61c8001c88a5c5c29b76e3">CreateEmpty</a>(Array&lt; Var &gt; params, StructInfo ret_struct_info, bool is_pure=true, DictAttrs attrs=DictAttrs(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1Function.html">tvm::relax::Function</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ac261cdb80487fb29ac42b28678f8cbef">data_</a></td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a17d8d5ad92691f9e18e3e0ae8ef69e4f">defined</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#acd04bb22a6861e9952c344ee8547411f">DowncastNoCheck</a>(ObjectRef ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a22e5bb9d64dbc773bb9263b70882239e">FFIClearAfterMove</a>(ObjectRef *ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1relax_1_1Function.html#a7e768f3ffdbcfabfdc510c65600c0c1c">Function</a>(Array&lt; Var &gt; params, Expr body, Optional&lt; StructInfo &gt; ret_struct_info, bool is_pure=true, DictAttrs attrs=NullValue&lt; DictAttrs &gt;(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1Function.html">tvm::relax::Function</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1relax_1_1Function.html#af48117fcafbf1efa76aad38aa8d68b0a">Function</a>(Array&lt; Var &gt; params, Expr body, Optional&lt; StructInfo &gt; ret_struct_info, bool is_pure=true, DictAttrs attrs=DictAttrs(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1relax_1_1Function.html">tvm::relax::Function</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aadbc0886ffa80162ff31eefd0431ba09">get</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ae423057ecf93c18714d17f53cd1d318f">get_mutable</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aed593996e4076632450de8fde776707c">GetDataPtr</a>(const ObjectRef &amp;ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1Function.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1Function.html
index 2fee351b75..a3b1e1b13b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1Function.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1Function.html
@@ -90,8 +90,8 @@ Collaboration diagram for tvm::relax::Function:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a7e768f3ffdbcfabfdc510c65600c0c1c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1Function.html#a7e768f3ffdbcfabfdc510c65600c0c1c">Function</a> (<a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1relax_1_1Var.html">Var</a> &gt; params, <a class="el" href="namespacetvm_1_1relax.html#a8f6ef3d9aaba0138f730a520d7ebbfb3">Expr</a> [...]
-<tr class="separator:a7e768f3ffdbcfabfdc510c65600c0c1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af48117fcafbf1efa76aad38aa8d68b0a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1Function.html#af48117fcafbf1efa76aad38aa8d68b0a">Function</a> (<a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1relax_1_1Var.html">Var</a> &gt; params, <a class="el" href="namespacetvm_1_1relax.html#a8f6ef3d9aaba0138f730a520d7ebbfb3">Expr</a> [...]
+<tr class="separator:af48117fcafbf1efa76aad38aa8d68b0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a45a34a80e8b4d14fc57e76c19ea188b0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1Function.html#a45a34a80e8b4d14fc57e76c19ea188b0">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1relax_1_1Function.html">Function</a>, <a class="el" href="classtvm_1_1BaseFunc.html">BaseFunc</a>, <a class="el" href="classtvm_1_1relax_1_1FunctionNode.html">FunctionNode</a>)</ [...]
 <tr class="separator:a45a34a80e8b4d14fc57e76c19ea188b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af3814b2cd1334de0fd6e88f727659ce8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1Function.html#af3814b2cd1334de0fd6e88f727659ce8">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1relax_1_1FunctionNode.html">FunctionNode</a>)</td></tr>
@@ -145,9 +145,9 @@ Public Member Functions</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
-<tr class="memitem:af582150c86d2cb62e7940760fd2d25a9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1relax_1_1Function.html">Function</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1Function.html#af582150c86d2cb62e7940760fd2d25a9">CreateEmpty</a> (<a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1relax_1_1Var.html">Var</a> &gt; params, <a class="el [...]
-<tr class="memdesc:af582150c86d2cb62e7940760fd2d25a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mimics the constructor but without body Expr.  <a href="classtvm_1_1relax_1_1Function.html#af582150c86d2cb62e7940760fd2d25a9">More...</a><br /></td></tr>
-<tr class="separator:af582150c86d2cb62e7940760fd2d25a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a850d32598c61c8001c88a5c5c29b76e3"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classtvm_1_1relax_1_1Function.html">Function</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relax_1_1Function.html#a850d32598c61c8001c88a5c5c29b76e3">CreateEmpty</a> (<a class="el" href="classtvm_1_1runtime_1_1Array.html">Array</a>&lt; <a class="el" href="classtvm_1_1relax_1_1Var.html">Var</a> &gt; params, <a class="el [...]
+<tr class="memdesc:a850d32598c61c8001c88a5c5c29b76e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mimics the constructor but without body Expr.  <a href="classtvm_1_1relax_1_1Function.html#a850d32598c61c8001c88a5c5c29b76e3">More...</a><br /></td></tr>
+<tr class="separator:a850d32598c61c8001c88a5c5c29b76e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
 Additional Inherited Members</h2></td></tr>
@@ -179,8 +179,8 @@ Additional Inherited Members</h2></td></tr>
 <tr class="separator:ac261cdb80487fb29ac42b28678f8cbef inherit pro_attribs_classtvm_1_1runtime_1_1ObjectRef"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a7e768f3ffdbcfabfdc510c65600c0c1c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7e768f3ffdbcfabfdc510c65600c0c1c">&#9670;&nbsp;</a></span>Function()</h2>
+<a id="af48117fcafbf1efa76aad38aa8d68b0a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af48117fcafbf1efa76aad38aa8d68b0a">&#9670;&nbsp;</a></span>Function()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -216,7 +216,7 @@ Additional Inherited Members</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"><a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>&#160;</td>
-          <td class="paramname"><em>attrs</em> = <code><a class="el" href="namespacetvm.html#ab6c242e8ac09beb463fba306948b7f15">NullValue</a>&lt;&#160;<a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>&#160;&gt;()</code>, </td>
+          <td class="paramname"><em>attrs</em> = <code><a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>()</code>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -240,8 +240,8 @@ Additional Inherited Members</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
-<a id="af582150c86d2cb62e7940760fd2d25a9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af582150c86d2cb62e7940760fd2d25a9">&#9670;&nbsp;</a></span>CreateEmpty()</h2>
+<a id="a850d32598c61c8001c88a5c5c29b76e3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a850d32598c61c8001c88a5c5c29b76e3">&#9670;&nbsp;</a></span>CreateEmpty()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -271,7 +271,7 @@ Additional Inherited Members</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"><a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>&#160;</td>
-          <td class="paramname"><em>attrs</em> = <code><a class="el" href="namespacetvm.html#ab6c242e8ac09beb463fba306948b7f15">NullValue</a>&lt;&#160;<a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>&#160;&gt;()</code>, </td>
+          <td class="paramname"><em>attrs</em> = <code><a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>()</code>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FunctionNode.html b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FunctionNode.html
index e5831d4cbe..b7ce89e99f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FunctionNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FunctionNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relax::FunctionNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relax::FunctionNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1FunctionNode__coll__graph.svg" width="1591" height="2835"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relax_1_1FunctionNode__coll__graph.svg" width="1591" height="2850"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FunctionNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FunctionNode__coll__graph.svg
index 84e070022e..904a225b7a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relax_1_1FunctionNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relax_1_1FunctionNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relax::FunctionNode Pages: 1 -->
-<svg width="1193pt" height="2126pt"
- viewBox="0.00 0.00 1192.50 2126.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 2122)">
+<svg width="1193pt" height="2137pt"
+ viewBox="0.00 0.00 1192.50 2137.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 2133)">
 <title>tvm::relax::FunctionNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-2122 1188.5,-2122 1188.5,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-2133 1188.5,-2133 1188.5,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -35,227 +35,228 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1BaseFuncNode.html" target="_top" xlink:title="Base node of all functions.">
-<polygon fill="white" stroke="black" points="446.5,-194.5 446.5,-317.5 619.5,-317.5 619.5,-194.5 446.5,-194.5"/>
-<text text-anchor="middle" x="533" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
-<polyline fill="none" stroke="black" points="446.5,-298.5 619.5,-298.5 "/>
-<text text-anchor="start" x="454.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="454.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="446.5,-268.5 619.5,-268.5 "/>
-<text text-anchor="start" x="454.5" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="454.5" y="-245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="454.5" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="454.5" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
-<text text-anchor="start" x="454.5" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="454.5" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="445.5,-194.5 445.5,-317.5 618.5,-317.5 618.5,-194.5 445.5,-194.5"/>
+<text text-anchor="middle" x="532" y="-305.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseFuncNode</text>
+<polyline fill="none" stroke="black" points="445.5,-298.5 618.5,-298.5 "/>
+<text text-anchor="start" x="453.5" y="-286.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="453.5" y="-275.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="445.5,-268.5 618.5,-268.5 "/>
+<text text-anchor="start" x="453.5" y="-256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="453.5" y="-245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="453.5" y="-234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="453.5" y="-223.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
+<text text-anchor="start" x="453.5" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="453.5" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M629.17,-213.94C697.67,-184.69 789.03,-145.67 855.69,-117.21"/>
-<polygon fill="none" stroke="midnightblue" points="627.48,-210.85 619.66,-218 630.23,-217.29 627.48,-210.85"/>
+<path fill="none" stroke="midnightblue" d="M628.17,-214.04C696.94,-184.74 788.8,-145.61 855.72,-117.1"/>
+<polygon fill="none" stroke="midnightblue" points="626.45,-210.96 618.62,-218.1 629.19,-217.4 626.45,-210.96"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1RelayExprNode.html" target="_top" xlink:title="Base node of all non&#45;primitive expressions.">
-<polygon fill="white" stroke="black" points="446.5,-610.5 446.5,-722.5 619.5,-722.5 619.5,-610.5 446.5,-610.5"/>
-<text text-anchor="middle" x="533" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExprNode</text>
-<polyline fill="none" stroke="black" points="446.5,-703.5 619.5,-703.5 "/>
-<text text-anchor="start" x="454.5" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="454.5" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="446.5,-673.5 619.5,-673.5 "/>
-<text text-anchor="start" x="454.5" y="-661.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
-<text text-anchor="start" x="454.5" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
-<text text-anchor="start" x="454.5" y="-639.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
-<text text-anchor="start" x="454.5" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="454.5" y="-617.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="445.5,-610.5 445.5,-722.5 618.5,-722.5 618.5,-610.5 445.5,-610.5"/>
+<text text-anchor="middle" x="532" y="-710.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExprNode</text>
+<polyline fill="none" stroke="black" points="445.5,-703.5 618.5,-703.5 "/>
+<text text-anchor="start" x="453.5" y="-691.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="453.5" y="-680.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="445.5,-673.5 618.5,-673.5 "/>
+<text text-anchor="start" x="453.5" y="-661.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
+<text text-anchor="start" x="453.5" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
+<text text-anchor="start" x="453.5" y="-639.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
+<text text-anchor="start" x="453.5" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="453.5" y="-617.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M533,-600.24C533,-522.37 533,-393.23 533,-317.52"/>
-<polygon fill="none" stroke="midnightblue" points="529.5,-600.41 533,-610.41 536.5,-600.41 529.5,-600.41"/>
+<path fill="none" stroke="midnightblue" d="M532,-600.24C532,-522.37 532,-393.23 532,-317.52"/>
+<polygon fill="none" stroke="midnightblue" points="528.5,-600.41 532,-610.41 535.5,-600.41 528.5,-600.41"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1BaseExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="black" points="270.5,-894.5 270.5,-1017.5 443.5,-1017.5 443.5,-894.5 270.5,-894.5"/>
-<text text-anchor="middle" x="357" y="-1005.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="270.5,-998.5 443.5,-998.5 "/>
-<text text-anchor="start" x="278.5" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="278.5" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="278.5" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="278.5" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="278.5" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="278.5" y="-931.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="270.5,-924.5 443.5,-924.5 "/>
-<text text-anchor="start" x="278.5" y="-912.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="278.5" y="-901.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="270.5,-905.5 270.5,-1028.5 443.5,-1028.5 443.5,-905.5 270.5,-905.5"/>
+<text text-anchor="middle" x="357" y="-1016.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="270.5,-1009.5 443.5,-1009.5 "/>
+<text text-anchor="start" x="278.5" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="278.5" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="278.5" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="278.5" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="278.5" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="278.5" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="270.5,-935.5 443.5,-935.5 "/>
+<text text-anchor="start" x="278.5" y="-923.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="278.5" y="-912.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M382.71,-884.87C400.4,-841.35 426.39,-785.45 458,-741 462.44,-734.76 467.44,-728.59 472.7,-722.63"/>
-<polygon fill="none" stroke="midnightblue" points="379.42,-883.65 378.95,-894.24 385.92,-886.26 379.42,-883.65"/>
+<path fill="none" stroke="midnightblue" d="M380.99,-895.43C398.49,-849.25 424.9,-788.83 458,-741 462.33,-734.75 467.23,-728.57 472.39,-722.6"/>
+<polygon fill="none" stroke="midnightblue" points="377.61,-894.47 377.39,-905.06 384.17,-896.92 377.61,-894.47"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers.">
-<polygon fill="white" stroke="black" points="174,-1233.5 174,-1620.5 358,-1620.5 358,-1233.5 174,-1233.5"/>
-<text text-anchor="middle" x="266" y="-1608.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="174,-1601.5 358,-1601.5 "/>
-<text text-anchor="start" x="182" y="-1589.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="182" y="-1578.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="182" y="-1567.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="182" y="-1556.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="182" y="-1545.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="182" y="-1534.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="182" y="-1523.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="182" y="-1512.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="182" y="-1501.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="182" y="-1490.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="182" y="-1479.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="182" y="-1468.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="182" y="-1457.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="182" y="-1446.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="174,-1439.5 358,-1439.5 "/>
-<text text-anchor="start" x="182" y="-1427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="182" y="-1416.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="182" y="-1405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="182" y="-1394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="182" y="-1383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="174,-1244.5 174,-1631.5 358,-1631.5 358,-1244.5 174,-1244.5"/>
+<text text-anchor="middle" x="266" y="-1619.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="174,-1612.5 358,-1612.5 "/>
+<text text-anchor="start" x="182" y="-1600.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="182" y="-1589.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="182" y="-1578.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="182" y="-1567.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="182" y="-1556.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="182" y="-1545.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="182" y="-1534.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="182" y="-1523.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="182" y="-1512.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="182" y="-1501.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="182" y="-1490.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="182" y="-1479.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="182" y="-1468.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="182" y="-1457.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="174,-1450.5 358,-1450.5 "/>
+<text text-anchor="start" x="182" y="-1438.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="182" y="-1427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="182" y="-1416.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="182" y="-1405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="182" y="-1394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="182" y="-1383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="182" y="-1372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="182" y="-1361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="182" y="-1350.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="182" y="-1350.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="182" y="-1339.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="182" y="-1328.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="182" y="-1317.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="182" y="-1306.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="182" y="-1295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="182" y="-1284.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="182" y="-1273.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="182" y="-1262.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="182" y="-1251.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="182" y="-1240.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-1328.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="182" y="-1317.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="182" y="-1306.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="182" y="-1295.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-1284.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="182" y="-1273.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="182" y="-1262.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="182" y="-1251.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M303.47,-1223.38C314.9,-1163.03 327.69,-1096.79 340,-1036 341.2,-1030.09 342.47,-1023.93 343.76,-1017.78"/>
-<polygon fill="none" stroke="midnightblue" points="300,-1222.93 301.58,-1233.4 306.87,-1224.23 300,-1222.93"/>
+<path fill="none" stroke="midnightblue" d="M303.47,-1234.38C314.9,-1174.03 327.69,-1107.79 340,-1047 341.2,-1041.09 342.47,-1034.93 343.76,-1028.78"/>
+<polygon fill="none" stroke="midnightblue" points="300,-1233.93 301.58,-1244.4 306.87,-1235.23 300,-1233.93"/>
 </g>
 <!-- Node5&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M358.28,-1460.92C369.02,-1454.66 376,-1443.36 376,-1427 376,-1416.01 372.85,-1407.3 367.52,-1400.87"/>
-<polygon fill="none" stroke="#404040" points="367.46,-1400.81 360.29,-1400 358.28,-1393.08 365.45,-1393.89 367.46,-1400.81"/>
-<text text-anchor="middle" x="402" y="-1424.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M358.28,-1471.92C369.02,-1465.66 376,-1454.36 376,-1438 376,-1427.01 372.85,-1418.3 367.52,-1411.87"/>
+<polygon fill="none" stroke="#404040" points="367.46,-1411.81 360.29,-1411 358.28,-1404.08 365.45,-1404.89 367.46,-1411.81"/>
+<text text-anchor="middle" x="402" y="-1435.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="446,-1382 446,-1472 602,-1472 602,-1382 446,-1382"/>
-<text text-anchor="middle" x="524" y="-1460" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="446,-1453 602,-1453 "/>
-<text text-anchor="middle" x="524" y="-1441" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="446,-1434 602,-1434 "/>
-<text text-anchor="start" x="454" y="-1422" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="454" y="-1411" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="454" y="-1400" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="454" y="-1389" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="446,-1393 446,-1483 602,-1483 602,-1393 446,-1393"/>
+<text text-anchor="middle" x="524" y="-1471" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="446,-1464 602,-1464 "/>
+<text text-anchor="middle" x="524" y="-1452" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="446,-1445 602,-1445 "/>
+<text text-anchor="start" x="454" y="-1433" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="454" y="-1422" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="454" y="-1411" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="454" y="-1400" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node4 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M510.65,-1381.88C496.73,-1340.61 472.01,-1278.64 437,-1233 429.31,-1222.98 421.64,-1225.75 415,-1215 380.25,-1158.71 366.24,-1084.04 360.64,-1029.52"/>
-<polygon fill="none" stroke="#404040" points="360.63,-1029.46 356.09,-1023.86 359.5,-1017.51 364.05,-1023.11 360.63,-1029.46"/>
-<text text-anchor="middle" x="432.5" y="-1123" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M510.65,-1392.88C496.73,-1351.61 472.01,-1289.64 437,-1244 429.31,-1233.98 421.64,-1236.75 415,-1226 380.25,-1169.71 366.24,-1095.04 360.64,-1040.52"/>
+<polygon fill="none" stroke="#404040" points="360.63,-1040.46 356.09,-1034.86 359.5,-1028.51 364.05,-1034.11 360.63,-1040.46"/>
+<text text-anchor="middle" x="432.5" y="-1134" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="665,-1658.5 665,-1891.5 799,-1891.5 799,-1658.5 665,-1658.5"/>
-<text text-anchor="middle" x="732" y="-1879.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="665,-1872.5 799,-1872.5 "/>
-<text text-anchor="start" x="673" y="-1860.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="665,-1853.5 799,-1853.5 "/>
+<polygon fill="white" stroke="black" points="665,-1669.5 665,-1902.5 799,-1902.5 799,-1669.5 665,-1669.5"/>
+<text text-anchor="middle" x="732" y="-1890.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="665,-1883.5 799,-1883.5 "/>
+<text text-anchor="start" x="673" y="-1871.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="665,-1864.5 799,-1864.5 "/>
+<text text-anchor="start" x="673" y="-1852.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="673" y="-1841.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="673" y="-1830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="673" y="-1819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="673" y="-1808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="673" y="-1797.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="673" y="-1786.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="673" y="-1775.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="673" y="-1764.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="673" y="-1753.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="673" y="-1742.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="673" y="-1731.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="673" y="-1830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="673" y="-1819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="673" y="-1808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="673" y="-1797.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="673" y="-1786.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="673" y="-1775.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="673" y="-1764.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="673" y="-1753.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="673" y="-1742.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="673" y="-1731.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="673" y="-1720.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="673" y="-1709.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="673" y="-1698.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="673" y="-1687.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="673" y="-1676.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="673" y="-1665.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="673" y="-1709.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="673" y="-1698.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="673" y="-1687.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="673" y="-1676.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node3 -->
 <g id="edge9" class="edge">
 <title>Node7&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M666.81,-1658.49C661.5,-1646.09 656.75,-1633.45 653,-1621 628.02,-1537.95 671.79,-1294.86 611,-1233 566.1,-1187.31 510.37,-1263.04 468,-1215 441.69,-1185.17 464.53,-1075.63 468,-1036 477.31,-929.64 501.46,-807.96 517.55,-734.48"/>
-<polygon fill="none" stroke="#404040" points="517.57,-734.38 514.96,-727.66 520.16,-722.66 522.77,-729.38 517.57,-734.38"/>
-<text text-anchor="middle" x="511" y="-1123" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
+<path fill="none" stroke="#404040" d="M666.81,-1669.49C661.5,-1657.09 656.75,-1644.45 653,-1632 628.02,-1548.95 671.79,-1305.86 611,-1244 566.1,-1198.31 510.37,-1274.04 468,-1226 436.01,-1189.73 491.93,-874.78 518.8,-734.46"/>
+<polygon fill="none" stroke="#404040" points="518.81,-734.43 516.01,-727.78 521.08,-722.65 523.87,-729.3 518.81,-734.43"/>
+<text text-anchor="middle" x="511" y="-1134" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M657.94,-1696.45C642.99,-1678.68 628.15,-1659.31 616,-1640 581.82,-1585.66 554.43,-1516.43 538.69,-1472.15"/>
-<polygon fill="none" stroke="midnightblue" points="655.66,-1699.16 664.82,-1704.49 660.98,-1694.61 655.66,-1699.16"/>
+<path fill="none" stroke="midnightblue" d="M657.94,-1707.45C642.99,-1689.68 628.15,-1670.31 616,-1651 581.82,-1596.66 554.43,-1527.43 538.69,-1483.15"/>
+<polygon fill="none" stroke="midnightblue" points="655.66,-1710.16 664.82,-1715.49 660.98,-1705.61 655.66,-1710.16"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1Type.html" target="_top" xlink:title="Managed reference to TypeNode.">
-<polygon fill="white" stroke="black" points="563,-1091.5 563,-1159.5 719,-1159.5 719,-1091.5 563,-1091.5"/>
-<text text-anchor="middle" x="641" y="-1147.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
-<polyline fill="none" stroke="black" points="563,-1140.5 719,-1140.5 "/>
-<text text-anchor="middle" x="641" y="-1128.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="563,-1121.5 719,-1121.5 "/>
-<text text-anchor="start" x="571" y="-1109.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="571" y="-1098.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="563,-1102.5 563,-1170.5 719,-1170.5 719,-1102.5 563,-1102.5"/>
+<text text-anchor="middle" x="641" y="-1158.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Type</text>
+<polyline fill="none" stroke="black" points="563,-1151.5 719,-1151.5 "/>
+<text text-anchor="middle" x="641" y="-1139.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="563,-1132.5 719,-1132.5 "/>
+<text text-anchor="start" x="571" y="-1120.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="571" y="-1109.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node9 -->
 <g id="edge11" class="edge">
 <title>Node7&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M714.28,-1647.89C692.86,-1495.48 658.13,-1248.42 645.65,-1159.61"/>
-<polygon fill="none" stroke="midnightblue" points="710.87,-1648.82 715.73,-1658.24 717.81,-1647.85 710.87,-1648.82"/>
+<path fill="none" stroke="midnightblue" d="M714.28,-1658.89C692.86,-1506.48 658.13,-1259.42 645.65,-1170.61"/>
+<polygon fill="none" stroke="midnightblue" points="710.87,-1659.82 715.73,-1669.24 717.81,-1658.85 710.87,-1659.82"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="724.5,-1036.5 724.5,-1214.5 881.5,-1214.5 881.5,-1036.5 724.5,-1036.5"/>
-<text text-anchor="start" x="732.5" y="-1202.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="803" y="-1191.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
-<polyline fill="none" stroke="black" points="724.5,-1184.5 881.5,-1184.5 "/>
-<text text-anchor="start" x="732.5" y="-1172.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="724.5,-1165.5 881.5,-1165.5 "/>
+<polygon fill="white" stroke="black" points="724.5,-1047.5 724.5,-1225.5 881.5,-1225.5 881.5,-1047.5 724.5,-1047.5"/>
+<text text-anchor="start" x="732.5" y="-1213.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="803" y="-1202.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
+<polyline fill="none" stroke="black" points="724.5,-1195.5 881.5,-1195.5 "/>
+<text text-anchor="start" x="732.5" y="-1183.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="724.5,-1176.5 881.5,-1176.5 "/>
+<text text-anchor="start" x="732.5" y="-1164.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="732.5" y="-1153.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="732.5" y="-1142.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="732.5" y="-1131.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
@@ -263,78 +264,77 @@
 <text text-anchor="start" x="732.5" y="-1109.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="732.5" y="-1098.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
 <text text-anchor="start" x="732.5" y="-1087.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="732.5" y="-1076.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="732.5" y="-1076.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="732.5" y="-1065.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="732.5" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="732.5" y="-1043.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<text text-anchor="start" x="732.5" y="-1054.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node10 -->
 <g id="edge13" class="edge">
 <title>Node7&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M741.81,-1648.31C750.98,-1538.48 766.09,-1374.85 785,-1233 785.79,-1227.05 786.67,-1220.93 787.59,-1214.76"/>
-<polygon fill="none" stroke="midnightblue" points="738.31,-1648.18 740.97,-1658.43 745.29,-1648.76 738.31,-1648.18"/>
+<path fill="none" stroke="midnightblue" d="M741.81,-1659.31C750.98,-1549.48 766.09,-1385.85 785,-1244 785.79,-1238.05 786.67,-1231.93 787.59,-1225.76"/>
+<polygon fill="none" stroke="midnightblue" points="738.31,-1659.18 740.97,-1669.43 745.29,-1659.76 738.31,-1659.18"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node">
 <title>Node12</title>
 <g id="a_node12"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="0,-1393 0,-1461 156,-1461 156,-1393 0,-1393"/>
-<text text-anchor="middle" x="78" y="-1449" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="0,-1442 156,-1442 "/>
-<text text-anchor="middle" x="78" y="-1430" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="0,-1423 156,-1423 "/>
-<text text-anchor="start" x="8" y="-1411" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="8" y="-1400" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="0,-1404 0,-1472 156,-1472 156,-1404 0,-1404"/>
+<text text-anchor="middle" x="78" y="-1460" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="0,-1453 156,-1453 "/>
+<text text-anchor="middle" x="78" y="-1441" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="0,-1434 156,-1434 "/>
+<text text-anchor="start" x="8" y="-1422" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="8" y="-1411" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node12 -->
 <g id="edge16" class="edge">
 <title>Node7&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M654.47,-1773.28C535.55,-1768.15 306.99,-1741.92 165,-1621 116.03,-1579.3 93.36,-1504.42 83.91,-1461.21"/>
-<polygon fill="none" stroke="midnightblue" points="654.46,-1776.78 664.59,-1773.67 654.73,-1769.78 654.46,-1776.78"/>
+<path fill="none" stroke="midnightblue" d="M654.47,-1784.28C535.55,-1779.15 306.99,-1752.92 165,-1632 116.03,-1590.3 93.36,-1515.42 83.91,-1472.21"/>
+<polygon fill="none" stroke="midnightblue" points="654.46,-1787.78 664.59,-1784.67 654.73,-1780.78 654.46,-1787.78"/>
 </g>
 <!-- Node14 -->
 <g id="node14" class="node">
 <title>Node14</title>
 <g id="a_node14"><a xlink:href="classtvm_1_1BaseExpr.html" target="_top" xlink:title="Managed reference to BaseExprNode.">
-<polygon fill="white" stroke="black" points="794,-1393 794,-1461 950,-1461 950,-1393 794,-1393"/>
-<text text-anchor="middle" x="872" y="-1449" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
-<polyline fill="none" stroke="black" points="794,-1442 950,-1442 "/>
-<text text-anchor="middle" x="872" y="-1430" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="794,-1423 950,-1423 "/>
-<text text-anchor="start" x="802" y="-1411" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="802" y="-1400" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="794,-1404 794,-1472 950,-1472 950,-1404 794,-1404"/>
+<text text-anchor="middle" x="872" y="-1460" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
+<polyline fill="none" stroke="black" points="794,-1453 950,-1453 "/>
+<text text-anchor="middle" x="872" y="-1441" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="794,-1434 950,-1434 "/>
+<text text-anchor="start" x="802" y="-1422" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="802" y="-1411" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node14 -->
 <g id="edge19" class="edge">
 <title>Node7&#45;&gt;Node14</title>
-<path fill="none" stroke="midnightblue" d="M782.62,-1648.91C809.78,-1581.78 841.17,-1504.21 858.58,-1461.16"/>
-<polygon fill="none" stroke="midnightblue" points="779.32,-1647.72 778.81,-1658.31 785.81,-1650.35 779.32,-1647.72"/>
+<path fill="none" stroke="midnightblue" d="M782.62,-1659.91C809.78,-1592.78 841.17,-1515.21 858.58,-1472.16"/>
+<polygon fill="none" stroke="midnightblue" points="779.32,-1658.72 778.81,-1669.31 785.81,-1661.35 779.32,-1658.72"/>
 </g>
 <!-- Node15 -->
 <g id="node15" class="node">
 <title>Node15</title>
 <g id="a_node15"><a xlink:href="classtvm_1_1relax_1_1StructInfo.html" target="_top" xlink:title="Managed reference to StructInfoNode.">
-<polygon fill="white" stroke="black" points="912,-774.5 912,-842.5 1068,-842.5 1068,-774.5 912,-774.5"/>
-<text text-anchor="middle" x="990" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StructInfo</text>
-<polyline fill="none" stroke="black" points="912,-823.5 1068,-823.5 "/>
-<text text-anchor="middle" x="990" y="-811.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="912,-804.5 1068,-804.5 "/>
-<text text-anchor="start" x="920" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="920" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="912,-780 912,-848 1068,-848 1068,-780 912,-780"/>
+<text text-anchor="middle" x="990" y="-836" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relax::StructInfo</text>
+<polyline fill="none" stroke="black" points="912,-829 1068,-829 "/>
+<text text-anchor="middle" x="990" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="912,-810 1068,-810 "/>
+<text text-anchor="start" x="920" y="-798" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="920" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node15 -->
 <g id="edge21" class="edge">
 <title>Node7&#45;&gt;Node15</title>
-<path fill="none" stroke="midnightblue" d="M808.5,-1744.58C860.82,-1720.04 926.4,-1679.56 959,-1621 1107.29,-1354.61 1027.17,-959.22 998.72,-842.85"/>
-<polygon fill="none" stroke="midnightblue" points="806.86,-1741.48 799.23,-1748.83 809.78,-1747.84 806.86,-1741.48"/>
+<path fill="none" stroke="midnightblue" d="M808.51,-1755.58C860.83,-1731.04 926.41,-1690.57 959,-1632 1108.44,-1363.48 1027.29,-964.81 998.69,-848.17"/>
+<polygon fill="none" stroke="midnightblue" points="806.87,-1752.48 799.23,-1759.83 809.78,-1758.84 806.87,-1752.48"/>
 </g>
 <!-- Node16 -->
 <g id="node16" class="node">
@@ -370,86 +370,87 @@
 <!-- Node7&#45;&gt;Node16 -->
 <g id="edge23" class="edge">
 <title>Node7&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M808.66,-1747.87C871.1,-1723.34 958.08,-1681.34 1016,-1621 1082.07,-1552.17 1110,-1523.41 1110,-1428 1110,-1428 1110,-1428 1110,-807.5 1110,-736.09 1113.08,-656.37 1116.34,-591.82"/>
-<polygon fill="none" stroke="midnightblue" points="807.31,-1744.64 799.25,-1751.51 809.84,-1751.17 807.31,-1744.64"/>
+<path fill="none" stroke="midnightblue" d="M808.66,-1758.87C871.1,-1734.34 958.08,-1692.34 1016,-1632 1082.07,-1563.17 1110,-1534.41 1110,-1439 1110,-1439 1110,-1439 1110,-813 1110,-739.69 1113.14,-657.75 1116.45,-591.81"/>
+<polygon fill="none" stroke="midnightblue" points="807.31,-1755.64 799.25,-1762.51 809.84,-1762.17 807.31,-1755.64"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="662,-1939.5 662,-2117.5 802,-2117.5 802,-1939.5 662,-1939.5"/>
-<text text-anchor="start" x="670" y="-2105.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="732" y="-2094.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="662,-2087.5 802,-2087.5 "/>
-<text text-anchor="middle" x="732" y="-2075.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="662,-2068.5 802,-2068.5 "/>
+<polygon fill="white" stroke="black" points="662,-1950.5 662,-2128.5 802,-2128.5 802,-1950.5 662,-1950.5"/>
+<text text-anchor="start" x="670" y="-2116.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="732" y="-2105.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="662,-2098.5 802,-2098.5 "/>
+<text text-anchor="middle" x="732" y="-2086.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="662,-2079.5 802,-2079.5 "/>
+<text text-anchor="start" x="670" y="-2067.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="670" y="-2056.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="670" y="-2045.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="670" y="-2034.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="670" y="-2023.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="670" y="-2012.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-2001.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1990.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="670" y="-1979.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="670" y="-1968.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="670" y="-1957.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="670" y="-1946.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="670" y="-2001.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="670" y="-1990.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="670" y="-1979.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="670" y="-1968.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="670" y="-1957.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node8&#45;&gt;Node7 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M732,-1939.18C732,-1927.84 732,-1916.05 732,-1904.23"/>
-<polygon fill="none" stroke="#404040" points="732,-1903.91 728,-1897.91 732,-1891.91 736,-1897.91 732,-1903.91"/>
-<text text-anchor="middle" x="751.5" y="-1913" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M732,-1950.18C732,-1938.84 732,-1927.05 732,-1915.23"/>
+<polygon fill="none" stroke="#404040" points="732,-1914.91 728,-1908.91 732,-1902.91 736,-1908.91 732,-1914.91"/>
+<text text-anchor="middle" x="751.5" y="-1924" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node9&#45;&gt;Node3 -->
 <g id="edge10" class="edge">
 <title>Node9&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M633.15,-1091.27C615.47,-1016.46 572.27,-833.66 548.8,-734.35"/>
-<polygon fill="none" stroke="#404040" points="548.8,-734.35 543.53,-729.43 546.04,-722.67 551.31,-727.59 548.8,-734.35"/>
-<text text-anchor="middle" x="658" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
+<path fill="none" stroke="#404040" d="M633.25,-1102.22C615.44,-1025.76 571.33,-836.37 547.64,-734.64"/>
+<polygon fill="none" stroke="#404040" points="547.58,-734.37 542.32,-729.44 544.85,-722.69 550.11,-727.62 547.58,-734.37"/>
+<text text-anchor="middle" x="658" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
 </g>
 <!-- Node10&#45;&gt;Node3 -->
 <g id="edge12" class="edge">
 <title>Node10&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M770.98,-1036.45C753.54,-992.44 730.19,-939.1 704,-894 670.34,-836.05 624.18,-775.74 588.3,-731.93"/>
-<polygon fill="none" stroke="#404040" points="588.21,-731.82 581.3,-729.74 580.57,-722.56 587.48,-724.65 588.21,-731.82"/>
-<text text-anchor="middle" x="798.5" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
+<path fill="none" stroke="#404040" d="M770.49,-1047.39C752.97,-1003.49 729.69,-950.26 704,-905 669.04,-843.41 621.29,-778.63 584.97,-732.31"/>
+<polygon fill="none" stroke="#404040" points="584.83,-732.14 577.98,-729.9 577.4,-722.71 584.26,-724.95 584.83,-732.14"/>
+<text text-anchor="middle" x="797.5" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="167,-741.5 167,-875.5 323,-875.5 323,-741.5 167,-741.5"/>
-<text text-anchor="middle" x="245" y="-863.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="167,-856.5 323,-856.5 "/>
-<text text-anchor="middle" x="245" y="-844.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="167,-837.5 323,-837.5 "/>
-<text text-anchor="start" x="175" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="175" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="175" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="175" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="175" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="175" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="175" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="175" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="155,-741.5 155,-886.5 327,-886.5 327,-741.5 155,-741.5"/>
+<text text-anchor="middle" x="241" y="-874.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="155,-867.5 327,-867.5 "/>
+<text text-anchor="middle" x="241" y="-855.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="155,-848.5 327,-848.5 "/>
+<text text-anchor="start" x="163" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="163" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="163" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="163" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="163" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="163" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="163" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="163" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="163" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node11&#45;&gt;Node2 -->
 <g id="edge14" class="edge">
 <title>Node11&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M279.6,-741.37C334.07,-637.24 439.4,-435.9 495.58,-328.53"/>
-<polygon fill="none" stroke="#404040" points="495.63,-328.44 494.86,-321.27 501.19,-317.8 501.95,-324.97 495.63,-328.44"/>
-<text text-anchor="middle" x="364" y="-664" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M278.45,-741.45C334.32,-634.69 438.9,-434.87 494.7,-328.28"/>
+<polygon fill="none" stroke="#404040" points="494.7,-328.26 493.94,-321.09 500.27,-317.63 501.03,-324.8 494.7,-328.26"/>
+<text text-anchor="middle" x="361" y="-664" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node12&#45;&gt;Node11 -->
 <g id="edge15" class="edge">
 <title>Node12&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M89.61,-1383.14C118.29,-1277.26 192.67,-1002.7 227.06,-875.71"/>
-<polygon fill="none" stroke="midnightblue" points="86.22,-1382.29 86.98,-1392.85 92.97,-1384.12 86.22,-1382.29"/>
+<path fill="none" stroke="midnightblue" d="M89.26,-1394.04C116.86,-1288.72 188.12,-1016.8 222.24,-886.58"/>
+<polygon fill="none" stroke="midnightblue" points="85.8,-1393.44 86.65,-1404 92.57,-1395.21 85.8,-1393.44"/>
 </g>
 <!-- Node13 -->
 <g id="node13" class="node">
@@ -475,13 +476,13 @@
 <!-- Node14&#45;&gt;Node13 -->
 <g id="edge18" class="edge">
 <title>Node14&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M874.92,-1382.74C877.63,-1340.1 881.49,-1273.1 883,-1215 888.08,-1019.92 876.66,-785.71 871.93,-700.52"/>
-<polygon fill="none" stroke="midnightblue" points="871.42,-1382.56 874.27,-1392.77 878.41,-1383.01 871.42,-1382.56"/>
+<path fill="none" stroke="midnightblue" d="M874.92,-1393.74C877.63,-1351.1 881.49,-1284.1 883,-1226 888.2,-1026.51 876.64,-786.92 871.91,-700.55"/>
+<polygon fill="none" stroke="midnightblue" points="871.42,-1393.56 874.27,-1403.77 878.41,-1394.01 871.42,-1393.56"/>
 </g>
 <!-- Node15&#45;&gt;Node1 -->
 <g id="edge20" class="edge">
 <title>Node15&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M986.85,-774.31C982.96,-732.02 976.44,-656.65 973,-592 963.59,-415.29 978.22,-370.21 962,-194 961.24,-185.76 960.26,-177.21 959.15,-168.67"/>
+<path fill="none" stroke="#404040" d="M986.93,-779.71C983.05,-736.48 976.48,-658.67 973,-592 963.77,-415.28 978.22,-370.21 962,-194 961.24,-185.76 960.26,-177.21 959.15,-168.67"/>
 <polygon fill="none" stroke="#404040" points="959.13,-168.52 954.36,-163.11 957.51,-156.63 962.28,-162.03 959.13,-168.52"/>
 <text text-anchor="middle" x="1014" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +ret_struct_info</text>
 </g>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1AttrPatternNode.html b/docs/reference/api/doxygen/classtvm_1_1relay_1_1AttrPatternNode.html
index 9d17b7be84..99ec6cba14 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1AttrPatternNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1AttrPatternNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relay::AttrPatternNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relay::AttrPatternNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1AttrPatternNode__coll__graph.svg" width="632" height="1856"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1AttrPatternNode__coll__graph.svg" width="643" height="1871"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1AttrPatternNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relay_1_1AttrPatternNode__coll__graph.svg
index 137723bec9..b624d3c96f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1AttrPatternNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1AttrPatternNode__coll__graph.svg
@@ -4,23 +4,23 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relay::AttrPatternNode Pages: 1 -->
-<svg width="474pt" height="1392pt"
- viewBox="0.00 0.00 474.00 1392.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 1388)">
+<svg width="482pt" height="1403pt"
+ viewBox="0.00 0.00 482.00 1403.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 1399)">
 <title>tvm::relay::AttrPatternNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1388 470,-1388 470,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1399 478,-1399 478,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Pattern for Attributes.">
-<polygon fill="#bfbfbf" stroke="black" points="157,-0.5 157,-79.5 333,-79.5 333,-0.5 157,-0.5"/>
-<text text-anchor="middle" x="245" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::AttrPatternNode</text>
-<polyline fill="none" stroke="black" points="157,-60.5 333,-60.5 "/>
-<text text-anchor="start" x="165" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="157,-41.5 333,-41.5 "/>
-<text text-anchor="start" x="165" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="165" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
-<text text-anchor="start" x="165" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#bfbfbf" stroke="black" points="149,-0.5 149,-79.5 325,-79.5 325,-0.5 149,-0.5"/>
+<text text-anchor="middle" x="237" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::AttrPatternNode</text>
+<polyline fill="none" stroke="black" points="149,-60.5 325,-60.5 "/>
+<text text-anchor="start" x="157" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="149,-41.5 325,-41.5 "/>
+<text text-anchor="start" x="157" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="157" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
+<text text-anchor="start" x="157" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
@@ -28,229 +28,230 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1relay_1_1DFPatternNode.html" target="_top" xlink:title="Base type of all dataflow patterns.">
-<polygon fill="white" stroke="black" points="28.5,-160.5 28.5,-228.5 201.5,-228.5 201.5,-160.5 28.5,-160.5"/>
-<text text-anchor="middle" x="115" y="-216.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::DFPatternNode</text>
-<polyline fill="none" stroke="black" points="28.5,-209.5 201.5,-209.5 "/>
-<text text-anchor="start" x="36.5" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="28.5,-190.5 201.5,-190.5 "/>
-<text text-anchor="start" x="36.5" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="36.5" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="22.5,-166 22.5,-234 195.5,-234 195.5,-166 22.5,-166"/>
+<text text-anchor="middle" x="109" y="-222" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::DFPatternNode</text>
+<polyline fill="none" stroke="black" points="22.5,-215 195.5,-215 "/>
+<text text-anchor="start" x="30.5" y="-203" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="22.5,-196 195.5,-196 "/>
+<text text-anchor="start" x="30.5" y="-184" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="30.5" y="-173" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M149.83,-152.64C169.14,-129.99 193.02,-101.98 212.02,-79.68"/>
-<polygon fill="none" stroke="midnightblue" points="147.03,-150.53 143.21,-160.41 152.36,-155.07 147.03,-150.53"/>
+<path fill="none" stroke="midnightblue" d="M142.27,-157.94C161.85,-133.77 186.46,-103.38 205.69,-79.65"/>
+<polygon fill="none" stroke="midnightblue" points="139.41,-155.9 135.83,-165.88 144.85,-160.31 139.41,-155.9"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers.">
-<polygon fill="white" stroke="black" points="0,-499.5 0,-886.5 184,-886.5 184,-499.5 0,-499.5"/>
-<text text-anchor="middle" x="92" y="-874.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-867.5 184,-867.5 "/>
-<text text-anchor="start" x="8" y="-855.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-844.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-833.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-822.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-811.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-800.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-789.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-778.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-767.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-756.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-745.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-734.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-712.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-705.5 184,-705.5 "/>
-<text text-anchor="start" x="8" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<polygon fill="white" stroke="black" points="0,-510.5 0,-897.5 184,-897.5 184,-510.5 0,-510.5"/>
+<text text-anchor="middle" x="92" y="-885.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-878.5 184,-878.5 "/>
+<text text-anchor="start" x="8" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-855.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-844.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-833.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-822.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-811.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-800.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-789.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-778.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-767.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-756.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-745.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-734.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-723.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-716.5 184,-716.5 "/>
+<text text-anchor="start" x="8" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="8" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-638.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-627.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="8" y="-616.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
 <text text-anchor="start" x="8" y="-605.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-506.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-594.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-583.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-572.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-561.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-550.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-539.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-528.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-517.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M101.39,-489.22C105.96,-390.69 110.98,-282.27 113.45,-228.93"/>
-<polygon fill="none" stroke="midnightblue" points="97.89,-489.18 100.93,-499.33 104.88,-489.5 97.89,-489.18"/>
+<path fill="none" stroke="midnightblue" d="M98.86,-500.34C102.27,-399.74 106.04,-288.37 107.88,-234.22"/>
+<polygon fill="none" stroke="midnightblue" points="95.36,-500.24 98.52,-510.35 102.36,-500.47 95.36,-500.24"/>
 </g>
 <!-- Node3&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M184.28,-726.92C195.02,-720.66 202,-709.36 202,-693 202,-682.01 198.85,-673.3 193.52,-666.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-666.81 186.29,-666 184.28,-659.08 191.45,-659.89 193.46,-666.81"/>
-<text text-anchor="middle" x="228" y="-690.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-737.92C195.02,-731.66 202,-720.36 202,-704 202,-693.01 198.85,-684.3 193.52,-677.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-677.81 186.29,-677 184.28,-670.08 191.45,-670.89 193.46,-677.81"/>
+<text text-anchor="middle" x="228" y="-701.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1relay_1_1DFPattern.html" target="_top" xlink:title="Managed reference to dataflow patterns.">
-<polygon fill="white" stroke="black" points="185,-280.5 185,-480.5 341,-480.5 341,-280.5 185,-280.5"/>
-<text text-anchor="middle" x="263" y="-468.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::DFPattern</text>
-<polyline fill="none" stroke="black" points="185,-461.5 341,-461.5 "/>
-<text text-anchor="middle" x="263" y="-449.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="185,-442.5 341,-442.5 "/>
-<text text-anchor="start" x="193" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
-<text text-anchor="start" x="193" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator+()</text>
-<text text-anchor="start" x="193" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;()</text>
-<text text-anchor="start" x="193" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator*()</text>
-<text text-anchor="start" x="193" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator/()</text>
-<text text-anchor="start" x="193" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator||()</text>
-<text text-anchor="start" x="193" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="193" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasAttr()</text>
-<text text-anchor="start" x="193" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasType()</text>
-<text text-anchor="start" x="193" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
-<text text-anchor="start" x="193" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
-<text text-anchor="start" x="193" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasShape()</text>
-<text text-anchor="start" x="193" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="193" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="181,-291.5 181,-491.5 337,-491.5 337,-291.5 181,-291.5"/>
+<text text-anchor="middle" x="259" y="-479.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::DFPattern</text>
+<polyline fill="none" stroke="black" points="181,-472.5 337,-472.5 "/>
+<text text-anchor="middle" x="259" y="-460.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="181,-453.5 337,-453.5 "/>
+<text text-anchor="start" x="189" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator()()</text>
+<text text-anchor="start" x="189" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator+()</text>
+<text text-anchor="start" x="189" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;()</text>
+<text text-anchor="start" x="189" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator*()</text>
+<text text-anchor="start" x="189" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator/()</text>
+<text text-anchor="start" x="189" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator||()</text>
+<text text-anchor="start" x="189" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="189" y="-364.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasAttr()</text>
+<text text-anchor="start" x="189" y="-353.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasType()</text>
+<text text-anchor="start" x="189" y="-342.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
+<text text-anchor="start" x="189" y="-331.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasDtype()</text>
+<text text-anchor="start" x="189" y="-320.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasShape()</text>
+<text text-anchor="start" x="189" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="189" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node1 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M255.16,-280.47C254.74,-274.22 254.35,-268.03 254,-262 250.58,-203.66 248.04,-136.58 246.55,-91.77"/>
-<polygon fill="none" stroke="#404040" points="246.55,-91.74 242.36,-85.87 246.16,-79.75 250.35,-85.61 246.55,-91.74"/>
-<text text-anchor="middle" x="277.5" y="-192" font-family="Helvetica,sans-Serif" font-size="10.00"> +pattern</text>
+<path fill="none" stroke="#404040" d="M247.51,-291.18C246.95,-285.03 246.44,-278.94 246,-273 241.36,-210.77 239.04,-138.97 237.93,-91.92"/>
+<polygon fill="none" stroke="#404040" points="237.92,-91.63 233.79,-85.72 237.66,-79.63 241.79,-85.54 237.92,-91.63"/>
+<text text-anchor="middle" x="269.5" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +pattern</text>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="227,-924.5 227,-1157.5 361,-1157.5 361,-924.5 227,-924.5"/>
-<text text-anchor="middle" x="294" y="-1145.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="227,-1138.5 361,-1138.5 "/>
-<text text-anchor="start" x="235" y="-1126.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="227,-1119.5 361,-1119.5 "/>
+<polygon fill="white" stroke="black" points="227,-935.5 227,-1168.5 361,-1168.5 361,-935.5 227,-935.5"/>
+<text text-anchor="middle" x="294" y="-1156.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="227,-1149.5 361,-1149.5 "/>
+<text text-anchor="start" x="235" y="-1137.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="227,-1130.5 361,-1130.5 "/>
+<text text-anchor="start" x="235" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
 <text text-anchor="start" x="235" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="235" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="235" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="235" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="235" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="235" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="235" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="235" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="235" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="235" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="235" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="235" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="235" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="235" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="235" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="235" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="235" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="235" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="235" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="235" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="235" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
 <text text-anchor="start" x="235" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="235" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="235" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="235" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="235" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="235" y="-931.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<text text-anchor="start" x="235" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="235" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="235" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="235" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M288.07,-914.06C282.13,-787.89 273.11,-596.26 267.66,-480.55"/>
-<polygon fill="none" stroke="midnightblue" points="284.58,-914.34 288.55,-924.17 291.57,-914.01 284.58,-914.34"/>
+<path fill="none" stroke="midnightblue" d="M287.31,-925.06C280.6,-798.89 270.41,-607.26 264.26,-491.55"/>
+<polygon fill="none" stroke="midnightblue" points="283.82,-925.37 287.84,-935.17 290.81,-925 283.82,-925.37"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="310,-659 310,-727 466,-727 466,-659 310,-659"/>
-<text text-anchor="middle" x="388" y="-715" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="310,-708 466,-708 "/>
-<text text-anchor="middle" x="388" y="-696" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="310,-689 466,-689 "/>
-<text text-anchor="start" x="318" y="-677" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="318" y="-666" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="310,-670 310,-738 466,-738 466,-670 310,-670"/>
+<text text-anchor="middle" x="388" y="-726" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="310,-719 466,-719 "/>
+<text text-anchor="middle" x="388" y="-707" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="310,-700 466,-700 "/>
+<text text-anchor="start" x="318" y="-688" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="318" y="-677" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node8 -->
 <g id="edge9" class="edge">
 <title>Node5&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M328.1,-914.5C346.31,-847.46 367.32,-770.12 378.99,-727.16"/>
-<polygon fill="none" stroke="midnightblue" points="324.68,-913.74 325.43,-924.31 331.43,-915.57 324.68,-913.74"/>
+<path fill="none" stroke="midnightblue" d="M328.1,-925.5C346.31,-858.46 367.32,-781.12 378.99,-738.16"/>
+<polygon fill="none" stroke="midnightblue" points="324.68,-924.74 325.43,-935.31 331.43,-926.57 324.68,-924.74"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="224,-1205.5 224,-1383.5 364,-1383.5 364,-1205.5 224,-1205.5"/>
-<text text-anchor="start" x="232" y="-1371.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="294" y="-1360.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="224,-1353.5 364,-1353.5 "/>
-<text text-anchor="middle" x="294" y="-1341.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="224,-1334.5 364,-1334.5 "/>
+<polygon fill="white" stroke="black" points="224,-1216.5 224,-1394.5 364,-1394.5 364,-1216.5 224,-1216.5"/>
+<text text-anchor="start" x="232" y="-1382.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="294" y="-1371.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="224,-1364.5 364,-1364.5 "/>
+<text text-anchor="middle" x="294" y="-1352.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="224,-1345.5 364,-1345.5 "/>
+<text text-anchor="start" x="232" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
 <text text-anchor="start" x="232" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="232" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="232" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="232" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="232" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="232" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="232" y="-1212.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<text text-anchor="start" x="232" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="232" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="232" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="232" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="232" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M294,-1205.18C294,-1193.84 294,-1182.05 294,-1170.23"/>
-<polygon fill="none" stroke="#404040" points="294,-1169.91 290,-1163.91 294,-1157.91 298,-1163.91 294,-1169.91"/>
-<text text-anchor="middle" x="313.5" y="-1179" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M294,-1216.18C294,-1204.84 294,-1193.05 294,-1181.23"/>
+<polygon fill="none" stroke="#404040" points="294,-1180.91 290,-1174.91 294,-1168.91 298,-1174.91 294,-1180.91"/>
+<text text-anchor="middle" x="313.5" y="-1190" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="310,-127.5 310,-261.5 466,-261.5 466,-127.5 310,-127.5"/>
-<text text-anchor="middle" x="388" y="-249.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="310,-242.5 466,-242.5 "/>
-<text text-anchor="middle" x="388" y="-230.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="310,-223.5 466,-223.5 "/>
-<text text-anchor="start" x="318" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="318" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="318" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="318" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="318" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="318" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="318" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="318" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="302,-127.5 302,-272.5 474,-272.5 474,-127.5 302,-127.5"/>
+<text text-anchor="middle" x="388" y="-260.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="302,-253.5 474,-253.5 "/>
+<text text-anchor="middle" x="388" y="-241.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="302,-234.5 474,-234.5 "/>
+<text text-anchor="start" x="310" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="310" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="310" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="310" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="310" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="310" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="310" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="310" y="-145.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="310" y="-134.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M326.11,-127.5C313.96,-114.54 301.43,-101.18 289.97,-88.95"/>
-<polygon fill="none" stroke="#404040" points="289.64,-88.6 282.61,-86.96 281.43,-79.85 288.45,-81.49 289.64,-88.6"/>
-<text text-anchor="middle" x="324" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M319.57,-127.4C306.88,-114.12 293.93,-100.57 282.16,-88.25"/>
+<polygon fill="none" stroke="#404040" points="282.11,-88.2 275.07,-86.63 273.82,-79.52 280.86,-81.1 282.11,-88.2"/>
+<text text-anchor="middle" x="315" y="-101" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node8&#45;&gt;Node7 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M388,-648.59C388,-561.54 388,-365.17 388,-261.87"/>
-<polygon fill="none" stroke="midnightblue" points="384.5,-648.65 388,-658.65 391.5,-648.65 384.5,-648.65"/>
+<path fill="none" stroke="midnightblue" d="M388,-659.42C388,-572.82 388,-378.38 388,-272.69"/>
+<polygon fill="none" stroke="midnightblue" points="384.5,-659.67 388,-669.67 391.5,-659.67 384.5,-659.67"/>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1ExecutorNode.html b/docs/reference/api/doxygen/classtvm_1_1relay_1_1ExecutorNode.html
index 5a8796ecb4..60f4ea60d7 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1ExecutorNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1ExecutorNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relay::ExecutorNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relay::ExecutorNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1ExecutorNode__coll__graph.svg" width="708" height="1886"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1ExecutorNode__coll__graph.svg" width="730" height="1886"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1ExecutorNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relay_1_1ExecutorNode__coll__graph.svg
index af4cd8f768..7d1f665afa 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1ExecutorNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1ExecutorNode__coll__graph.svg
@@ -4,32 +4,32 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relay::ExecutorNode Pages: 1 -->
-<svg width="531pt" height="1414pt"
- viewBox="0.00 0.00 530.50 1414.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="547pt" height="1414pt"
+ viewBox="0.00 0.00 546.50 1414.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 1410)">
 <title>tvm::relay::ExecutorNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1410 526.5,-1410 526.5,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1410 542.5,-1410 542.5,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Executor information.">
-<polygon fill="#bfbfbf" stroke="black" points="262,-0.5 262,-178.5 438,-178.5 438,-0.5 262,-0.5"/>
-<text text-anchor="middle" x="350" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::ExecutorNode</text>
-<polyline fill="none" stroke="black" points="262,-159.5 438,-159.5 "/>
-<text text-anchor="start" x="270" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="270" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="270" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="270" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="270" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<polyline fill="none" stroke="black" points="262,-96.5 438,-96.5 "/>
-<text text-anchor="start" x="270" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShouldLinkParameters()</text>
-<text text-anchor="start" x="270" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="270" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="270" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="270" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
-<text text-anchor="start" x="270" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
-<text text-anchor="start" x="270" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
-<text text-anchor="start" x="270" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#bfbfbf" stroke="black" points="270,-0.5 270,-178.5 446,-178.5 446,-0.5 270,-0.5"/>
+<text text-anchor="middle" x="358" y="-166.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::ExecutorNode</text>
+<polyline fill="none" stroke="black" points="270,-159.5 446,-159.5 "/>
+<text text-anchor="start" x="278" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="278" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="278" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="278" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="278" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<polyline fill="none" stroke="black" points="270,-96.5 446,-96.5 "/>
+<text text-anchor="start" x="278" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ShouldLinkParameters()</text>
+<text text-anchor="start" x="278" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="278" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="278" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="278" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
+<text text-anchor="start" x="278" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
+<text text-anchor="start" x="278" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
+<text text-anchor="start" x="278" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
@@ -79,8 +79,8 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M190.43,-293.67C220.53,-255.35 252.98,-214.03 280.7,-178.73"/>
-<polygon fill="none" stroke="midnightblue" points="187.48,-291.77 184.05,-301.8 192.98,-296.09 187.48,-291.77"/>
+<path fill="none" stroke="midnightblue" d="M190.62,-297.21C222.47,-257.87 257.15,-215.05 286.64,-178.63"/>
+<polygon fill="none" stroke="midnightblue" points="187.86,-295.05 184.29,-305.03 193.3,-299.46 187.86,-295.05"/>
 </g>
 <!-- Node2&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
@@ -93,152 +93,153 @@
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="272,-353 272,-487 428,-487 428,-353 272,-353"/>
-<text text-anchor="middle" x="350" y="-475" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="272,-468 428,-468 "/>
-<text text-anchor="middle" x="350" y="-456" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-449 428,-449 "/>
-<text text-anchor="start" x="280" y="-437" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="280" y="-426" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="280" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="280" y="-404" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="280" y="-393" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="280" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="272,-347.5 272,-492.5 444,-492.5 444,-347.5 272,-347.5"/>
+<text text-anchor="middle" x="358" y="-480.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="272,-473.5 444,-473.5 "/>
+<text text-anchor="middle" x="358" y="-461.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-454.5 444,-454.5 "/>
+<text text-anchor="start" x="280" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="280" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="280" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="280" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="280" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="280" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="280" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node1 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M350,-352.92C350,-306.42 350,-243.35 350,-190.69"/>
-<polygon fill="none" stroke="#404040" points="350,-190.59 346,-184.59 350,-178.59 354,-184.59 350,-190.59"/>
-<text text-anchor="middle" x="367" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M358,-347.32C358,-301.53 358,-241.51 358,-191"/>
+<polygon fill="none" stroke="#404040" points="358,-190.71 354,-184.71 358,-178.71 362,-184.71 358,-190.71"/>
+<text text-anchor="middle" x="375" y="-200" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="278,-840.5 278,-908.5 434,-908.5 434,-840.5 278,-840.5"/>
-<text text-anchor="middle" x="356" y="-896.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="278,-889.5 434,-889.5 "/>
-<text text-anchor="middle" x="356" y="-877.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="278,-870.5 434,-870.5 "/>
-<text text-anchor="start" x="286" y="-858.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="286" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="292,-840.5 292,-908.5 448,-908.5 448,-840.5 292,-840.5"/>
+<text text-anchor="middle" x="370" y="-896.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="292,-889.5 448,-889.5 "/>
+<text text-anchor="middle" x="370" y="-877.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="292,-870.5 448,-870.5 "/>
+<text text-anchor="start" x="300" y="-858.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="300" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M355.42,-830.08C354.37,-750.57 352.12,-581.17 350.88,-487.21"/>
-<polygon fill="none" stroke="midnightblue" points="351.93,-830.27 355.56,-840.23 358.93,-830.18 351.93,-830.27"/>
+<path fill="none" stroke="midnightblue" d="M368.84,-829.79C366.77,-751.65 362.41,-587.34 359.9,-492.55"/>
+<polygon fill="none" stroke="midnightblue" points="365.35,-830.32 369.12,-840.23 372.35,-830.14 365.35,-830.32"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="342,-946.5 342,-1179.5 476,-1179.5 476,-946.5 342,-946.5"/>
-<text text-anchor="middle" x="409" y="-1167.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="342,-1160.5 476,-1160.5 "/>
-<text text-anchor="start" x="350" y="-1148.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="342,-1141.5 476,-1141.5 "/>
-<text text-anchor="start" x="350" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="350" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="350" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="350" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="350" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="350" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="350" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="350" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="350" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="350" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="350" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="350" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="350" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="350" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="350" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="350" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="350" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="357,-946.5 357,-1179.5 491,-1179.5 491,-946.5 357,-946.5"/>
+<text text-anchor="middle" x="424" y="-1167.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="357,-1160.5 491,-1160.5 "/>
+<text text-anchor="start" x="365" y="-1148.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="357,-1141.5 491,-1141.5 "/>
+<text text-anchor="start" x="365" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="365" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="365" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="365" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="365" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="365" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="365" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="365" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="365" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="365" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="365" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="365" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="365" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="365" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="365" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="365" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="365" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M373.33,-936.48C370.47,-926.43 367.78,-916.95 365.4,-908.59"/>
-<polygon fill="none" stroke="midnightblue" points="370.01,-937.61 376.11,-946.27 376.75,-935.7 370.01,-937.61"/>
+<path fill="none" stroke="midnightblue" d="M387.66,-936.48C384.75,-926.43 382,-916.95 379.58,-908.59"/>
+<polygon fill="none" stroke="midnightblue" points="384.35,-937.64 390.49,-946.27 391.07,-935.69 384.35,-937.64"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1String.html" target="_top" xlink:title="Reference to string objects.">
-<polygon fill="white" stroke="black" points="403.5,-632.5 403.5,-821.5 522.5,-821.5 522.5,-632.5 403.5,-632.5"/>
-<text text-anchor="middle" x="463" y="-809.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::String</text>
-<polyline fill="none" stroke="black" points="403.5,-802.5 522.5,-802.5 "/>
-<text text-anchor="middle" x="463" y="-790.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="403.5,-783.5 522.5,-783.5 "/>
-<text text-anchor="start" x="411.5" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
-<text text-anchor="start" x="411.5" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
-<text text-anchor="start" x="411.5" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
-<text text-anchor="start" x="411.5" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
-<text text-anchor="start" x="411.5" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="411.5" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="411.5" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
-<text text-anchor="start" x="411.5" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
-<text text-anchor="start" x="411.5" y="-683.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
-<text text-anchor="start" x="411.5" y="-672.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ c_str()</text>
-<text text-anchor="start" x="411.5" y="-661.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
-<text text-anchor="start" x="411.5" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CanConvertFrom()</text>
-<text text-anchor="start" x="411.5" y="-639.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StableHashBytes()</text>
+<polygon fill="white" stroke="black" points="419.5,-632.5 419.5,-821.5 538.5,-821.5 538.5,-632.5 419.5,-632.5"/>
+<text text-anchor="middle" x="479" y="-809.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::String</text>
+<polyline fill="none" stroke="black" points="419.5,-802.5 538.5,-802.5 "/>
+<text text-anchor="middle" x="479" y="-790.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="419.5,-783.5 538.5,-783.5 "/>
+<text text-anchor="start" x="427.5" y="-771.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
+<text text-anchor="start" x="427.5" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
+<text text-anchor="start" x="427.5" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
+<text text-anchor="start" x="427.5" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
+<text text-anchor="start" x="427.5" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="427.5" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="427.5" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
+<text text-anchor="start" x="427.5" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
+<text text-anchor="start" x="427.5" y="-683.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
+<text text-anchor="start" x="427.5" y="-672.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ c_str()</text>
+<text text-anchor="start" x="427.5" y="-661.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
+<text text-anchor="start" x="427.5" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CanConvertFrom()</text>
+<text text-anchor="start" x="427.5" y="-639.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StableHashBytes()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node7 -->
 <g id="edge8" class="edge">
 <title>Node5&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M438.1,-936.18C439.87,-927 441.53,-917.87 443,-909 447.68,-880.77 451.55,-849.88 454.6,-821.74"/>
-<polygon fill="none" stroke="midnightblue" points="434.63,-935.65 436.13,-946.14 441.5,-937 434.63,-935.65"/>
+<path fill="none" stroke="midnightblue" d="M452.1,-936.14C453.85,-926.97 455.51,-917.86 457,-909 461.75,-880.75 465.9,-849.85 469.26,-821.71"/>
+<polygon fill="none" stroke="midnightblue" points="448.64,-935.61 450.16,-946.1 455.51,-936.95 448.64,-935.61"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="339,-1227.5 339,-1405.5 479,-1405.5 479,-1227.5 339,-1227.5"/>
-<text text-anchor="start" x="347" y="-1393.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="409" y="-1382.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="339,-1375.5 479,-1375.5 "/>
-<text text-anchor="middle" x="409" y="-1363.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="339,-1356.5 479,-1356.5 "/>
-<text text-anchor="start" x="347" y="-1344.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="347" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="347" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="347" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<polygon fill="white" stroke="black" points="354,-1227.5 354,-1405.5 494,-1405.5 494,-1227.5 354,-1227.5"/>
+<text text-anchor="start" x="362" y="-1393.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="424" y="-1382.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="354,-1375.5 494,-1375.5 "/>
+<text text-anchor="middle" x="424" y="-1363.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="354,-1356.5 494,-1356.5 "/>
+<text text-anchor="start" x="362" y="-1344.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="362" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="362" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="362" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M409,-1227.18C409,-1215.84 409,-1204.05 409,-1192.23"/>
-<polygon fill="none" stroke="#404040" points="409,-1191.91 405,-1185.91 409,-1179.91 413,-1185.91 409,-1191.91"/>
-<text text-anchor="middle" x="428.5" y="-1201" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M424,-1227.18C424,-1215.84 424,-1204.05 424,-1192.23"/>
+<polygon fill="none" stroke="#404040" points="424,-1191.91 420,-1185.91 424,-1179.91 428,-1185.91 424,-1191.91"/>
+<text text-anchor="middle" x="443.5" y="-1201" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M472.2,-632.2C479.05,-529.75 480.81,-362.11 437,-226 433.03,-213.67 427.65,-201.37 421.5,-189.49"/>
-<polygon fill="none" stroke="#404040" points="421.37,-189.25 415,-185.89 415.65,-178.71 422.03,-182.07 421.37,-189.25"/>
-<text text-anchor="middle" x="495" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +name</text>
+<path fill="none" stroke="#404040" d="M489.22,-632.32C497.01,-529.61 499.64,-361.4 453,-226 448.74,-213.63 442.98,-201.36 436.41,-189.57"/>
+<polygon fill="none" stroke="#404040" points="436.21,-189.23 429.73,-186.07 430.15,-178.88 436.63,-182.03 436.21,-189.23"/>
+<text text-anchor="middle" x="513" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +name</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1Function-members.html b/docs/reference/api/doxygen/classtvm_1_1relay_1_1Function-members.html
index 44caa6c3b8..546e24fb3a 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1Function-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1Function-members.html
@@ -80,7 +80,7 @@ $(function() {
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a17d8d5ad92691f9e18e3e0ae8ef69e4f">defined</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#acd04bb22a6861e9952c344ee8547411f">DowncastNoCheck</a>(ObjectRef ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#a22e5bb9d64dbc773bb9263b70882239e">FFIClearAfterMove</a>(ObjectRef *ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relay_1_1Function.html#a11ee77c0df8aa1c2c072c7cf613b9238">Function</a>(tvm::Array&lt; Var &gt; params, Expr body, Type ret_type, tvm::Array&lt; TypeVar &gt; ty_params, tvm::DictAttrs attrs=NullValue&lt; DictAttrs &gt;(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1relay_1_1Function.html">tvm::relay::Function</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1relay_1_1Function.html#ad722727f82e29dfc4b38d795e807a74e">Function</a>(tvm::Array&lt; Var &gt; params, Expr body, Type ret_type, tvm::Array&lt; TypeVar &gt; ty_params, tvm::DictAttrs attrs=DictAttrs(), Span span=Span())</td><td class="entry"><a class="el" href="classtvm_1_1relay_1_1Function.html">tvm::relay::Function</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aadbc0886ffa80162ff31eefd0431ba09">get</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#ae423057ecf93c18714d17f53cd1d318f">get_mutable</a>() const</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html#aed593996e4076632450de8fde776707c">GetDataPtr</a>(const ObjectRef &amp;ref)</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">tvm::runtime::ObjectRef</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1Function.html b/docs/reference/api/doxygen/classtvm_1_1relay_1_1Function.html
index 5cecb6552d..81fa2f6c40 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1Function.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1Function.html
@@ -92,9 +92,9 @@ Collaboration diagram for tvm::relay::Function:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a11ee77c0df8aa1c2c072c7cf613b9238"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1Function.html#a11ee77c0df8aa1c2c072c7cf613b9238">Function</a> (<a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::Array</a>&lt; <a class="el" href="classtvm_1_1relay_1_1Var.html">Var</a> &gt; params, <a class="el" href="namespacetvm_1_1relay.html#a5b84e3790f89bb3fad5c7911eeb99531">Exp [...]
-<tr class="memdesc:a11ee77c0df8aa1c2c072c7cf613b9238"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1Constructor.html" title="Managed reference to ConstructorNode.">Constructor</a>.  <a href="classtvm_1_1relay_1_1Function.html#a11ee77c0df8aa1c2c072c7cf613b9238">More...</a><br /></td></tr>
-<tr class="separator:a11ee77c0df8aa1c2c072c7cf613b9238"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad722727f82e29dfc4b38d795e807a74e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1Function.html#ad722727f82e29dfc4b38d795e807a74e">Function</a> (<a class="el" href="classtvm_1_1runtime_1_1Array.html">tvm::Array</a>&lt; <a class="el" href="classtvm_1_1relay_1_1Var.html">Var</a> &gt; params, <a class="el" href="namespacetvm_1_1relay.html#a5b84e3790f89bb3fad5c7911eeb99531">Exp [...]
+<tr class="memdesc:ad722727f82e29dfc4b38d795e807a74e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classtvm_1_1Constructor.html" title="Managed reference to ConstructorNode.">Constructor</a>.  <a href="classtvm_1_1relay_1_1Function.html#ad722727f82e29dfc4b38d795e807a74e">More...</a><br /></td></tr>
+<tr class="separator:ad722727f82e29dfc4b38d795e807a74e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afb025766d10255fbc8310363f320f772"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1Function.html#afb025766d10255fbc8310363f320f772">TVM_DEFINE_OBJECT_REF_METHODS</a> (<a class="el" href="classtvm_1_1relay_1_1Function.html">Function</a>, <a class="el" href="namespacetvm_1_1relay.html#acbaff2ae7feec23fea55e025a9cc1b76">BaseFunc</a>, <a class="el" href="classtvm_1_1relay_1_1Fun [...]
 <tr class="separator:afb025766d10255fbc8310363f320f772"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac085d821f02ee1e2a4927f85f72f6862"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1relay_1_1Function.html#ac085d821f02ee1e2a4927f85f72f6862">TVM_DEFINE_OBJECT_REF_COW_METHOD</a> (<a class="el" href="classtvm_1_1relay_1_1FunctionNode.html">FunctionNode</a>)</td></tr>
@@ -179,8 +179,8 @@ Additional Inherited Members</h2></td></tr>
 <div class="textblock"><p>Managed reference to <a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" title="Relay Function container.">FunctionNode</a>. </p>
 <dl class="section see"><dt>See also</dt><dd><a class="el" href="classtvm_1_1relay_1_1FunctionNode.html" title="Relay Function container.">FunctionNode</a> </dd></dl>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a11ee77c0df8aa1c2c072c7cf613b9238"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a11ee77c0df8aa1c2c072c7cf613b9238">&#9670;&nbsp;</a></span>Function()</h2>
+<a id="ad722727f82e29dfc4b38d795e807a74e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad722727f82e29dfc4b38d795e807a74e">&#9670;&nbsp;</a></span>Function()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -213,7 +213,7 @@ Additional Inherited Members</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype"><a class="el" href="classtvm_1_1DictAttrs.html">tvm::DictAttrs</a>&#160;</td>
-          <td class="paramname"><em>attrs</em> = <code><a class="el" href="namespacetvm.html#ab6c242e8ac09beb463fba306948b7f15">NullValue</a>&lt;&#160;<a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>&#160;&gt;()</code>, </td>
+          <td class="paramname"><em>attrs</em> = <code><a class="el" href="classtvm_1_1DictAttrs.html">DictAttrs</a>()</code>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1FunctionNode.html b/docs/reference/api/doxygen/classtvm_1_1relay_1_1FunctionNode.html
index a03f7b9523..320e505c6b 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1FunctionNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1FunctionNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relay::FunctionNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relay::FunctionNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1FunctionNode__coll__graph.svg" width="1534" height="2938"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1FunctionNode__coll__graph.svg" width="1500" height="2938"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1FunctionNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relay_1_1FunctionNode__coll__graph.svg
index 5c562479ce..4ccf84281f 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1FunctionNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1FunctionNode__coll__graph.svg
@@ -4,26 +4,26 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relay::FunctionNode Pages: 1 -->
-<svg width="1150pt" height="2203pt"
- viewBox="0.00 0.00 1149.50 2203.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="1125pt" height="2203pt"
+ viewBox="0.00 0.00 1124.50 2203.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 2199)">
 <title>tvm::relay::FunctionNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-2199 1145.5,-2199 1145.5,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-2199 1120.5,-2199 1120.5,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Relay Function container.">
-<polygon fill="#bfbfbf" stroke="black" points="772,-0.5 772,-112.5 948,-112.5 948,-0.5 772,-0.5"/>
-<text text-anchor="middle" x="860" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::FunctionNode</text>
-<polyline fill="none" stroke="black" points="772,-93.5 948,-93.5 "/>
-<text text-anchor="start" x="780" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="772,-74.5 948,-74.5 "/>
-<text text-anchor="start" x="780" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="780" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
-<text text-anchor="start" x="780" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
-<text text-anchor="start" x="780" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ func_type_annotation()</text>
-<text text-anchor="start" x="780" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
-<text text-anchor="start" x="780" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#bfbfbf" stroke="black" points="747,-0.5 747,-112.5 923,-112.5 923,-0.5 747,-0.5"/>
+<text text-anchor="middle" x="835" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::FunctionNode</text>
+<polyline fill="none" stroke="black" points="747,-93.5 923,-93.5 "/>
+<text text-anchor="start" x="755" y="-81.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="747,-74.5 923,-74.5 "/>
+<text text-anchor="start" x="755" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="755" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
+<text text-anchor="start" x="755" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
+<text text-anchor="start" x="755" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ func_type_annotation()</text>
+<text text-anchor="start" x="755" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
+<text text-anchor="start" x="755" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
@@ -31,196 +31,196 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1BaseFuncNode.html" target="_top" xlink:title="Base node of all functions.">
-<polygon fill="white" stroke="black" points="643.5,-150.5 643.5,-273.5 816.5,-273.5 816.5,-150.5 643.5,-150.5"/>
-<text text-anchor="middle" x="730" y="-261.5" font-family="Helvetica,sans-Serif" font-size="10.00">BaseFuncNode</text>
-<polyline fill="none" stroke="black" points="643.5,-254.5 816.5,-254.5 "/>
-<text text-anchor="start" x="651.5" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="651.5" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="643.5,-224.5 816.5,-224.5 "/>
-<text text-anchor="start" x="651.5" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="651.5" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="651.5" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="651.5" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
-<text text-anchor="start" x="651.5" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="651.5" y="-157.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="618.5,-150.5 618.5,-273.5 791.5,-273.5 791.5,-150.5 618.5,-150.5"/>
+<text text-anchor="middle" x="705" y="-261.5" font-family="Helvetica,sans-Serif" font-size="10.00">BaseFuncNode</text>
+<polyline fill="none" stroke="black" points="618.5,-254.5 791.5,-254.5 "/>
+<text text-anchor="start" x="626.5" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="626.5" y="-231.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="618.5,-224.5 791.5,-224.5 "/>
+<text text-anchor="start" x="626.5" y="-212.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="626.5" y="-201.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="626.5" y="-190.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="626.5" y="-179.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetLinkageType()</text>
+<text text-anchor="start" x="626.5" y="-168.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="626.5" y="-157.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M788.08,-142.42C796.49,-132.49 805.06,-122.37 813.22,-112.74"/>
-<polygon fill="none" stroke="midnightblue" points="785.17,-140.44 781.38,-150.33 790.51,-144.96 785.17,-140.44"/>
+<path fill="none" stroke="midnightblue" d="M763.08,-142.42C771.49,-132.49 780.06,-122.37 788.22,-112.74"/>
+<polygon fill="none" stroke="midnightblue" points="760.17,-140.44 756.38,-150.33 765.51,-144.96 760.17,-140.44"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1RelayExprNode.html" target="_top" xlink:title="Base node of all non&#45;primitive expressions.">
-<polygon fill="white" stroke="black" points="208.5,-566.5 208.5,-678.5 381.5,-678.5 381.5,-566.5 208.5,-566.5"/>
-<text text-anchor="middle" x="295" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExprNode</text>
-<polyline fill="none" stroke="black" points="208.5,-659.5 381.5,-659.5 "/>
-<text text-anchor="start" x="216.5" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="216.5" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="208.5,-629.5 381.5,-629.5 "/>
-<text text-anchor="start" x="216.5" y="-617.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
-<text text-anchor="start" x="216.5" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
-<text text-anchor="start" x="216.5" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
-<text text-anchor="start" x="216.5" y="-584.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="216.5" y="-573.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="164.5,-566.5 164.5,-678.5 337.5,-678.5 337.5,-566.5 164.5,-566.5"/>
+<text text-anchor="middle" x="251" y="-666.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExprNode</text>
+<polyline fill="none" stroke="black" points="164.5,-659.5 337.5,-659.5 "/>
+<text text-anchor="start" x="172.5" y="-647.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="172.5" y="-636.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="164.5,-629.5 337.5,-629.5 "/>
+<text text-anchor="start" x="172.5" y="-617.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ checked_type()</text>
+<text text-anchor="start" x="172.5" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_as()</text>
+<text text-anchor="start" x="172.5" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ virtual_device()</text>
+<text text-anchor="start" x="172.5" y="-584.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="172.5" y="-573.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M360.97,-559.54C443.47,-482.07 583.78,-350.32 665.55,-273.52"/>
-<polygon fill="none" stroke="midnightblue" points="358.56,-557.01 353.67,-566.41 363.35,-562.11 358.56,-557.01"/>
+<path fill="none" stroke="midnightblue" d="M319.86,-559.54C405.96,-482.07 552.39,-350.32 637.74,-273.52"/>
+<polygon fill="none" stroke="midnightblue" points="317.32,-557.12 312.23,-566.41 322,-562.32 317.32,-557.12"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1BaseExprNode.html" target="_top" xlink:title="Base type of all the expressions.">
-<polygon fill="white" stroke="black" points="382.5,-971.5 382.5,-1094.5 555.5,-1094.5 555.5,-971.5 382.5,-971.5"/>
-<text text-anchor="middle" x="469" y="-1082.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
-<polyline fill="none" stroke="black" points="382.5,-1075.5 555.5,-1075.5 "/>
-<text text-anchor="start" x="390.5" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="390.5" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="390.5" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="390.5" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="390.5" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="390.5" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<polyline fill="none" stroke="black" points="382.5,-1001.5 555.5,-1001.5 "/>
-<text text-anchor="start" x="390.5" y="-989.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="390.5" y="-978.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="338.5,-971.5 338.5,-1094.5 511.5,-1094.5 511.5,-971.5 338.5,-971.5"/>
+<text text-anchor="middle" x="425" y="-1082.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExprNode</text>
+<polyline fill="none" stroke="black" points="338.5,-1075.5 511.5,-1075.5 "/>
+<text text-anchor="start" x="346.5" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="346.5" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="346.5" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="346.5" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="346.5" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="346.5" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<polyline fill="none" stroke="black" points="338.5,-1001.5 511.5,-1001.5 "/>
+<text text-anchor="start" x="346.5" y="-989.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="346.5" y="-978.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M439.08,-961.75C404.91,-881.53 349.71,-751.95 318.49,-678.65"/>
-<polygon fill="none" stroke="midnightblue" points="436,-963.46 443.14,-971.28 442.44,-960.71 436,-963.46"/>
+<path fill="none" stroke="midnightblue" d="M395.08,-961.75C360.91,-881.53 305.71,-751.95 274.49,-678.65"/>
+<polygon fill="none" stroke="midnightblue" points="392,-963.46 399.14,-971.28 398.44,-960.71 392,-963.46"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers.">
-<polygon fill="white" stroke="black" points="407,-1310.5 407,-1697.5 591,-1697.5 591,-1310.5 407,-1310.5"/>
-<text text-anchor="middle" x="499" y="-1685.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="407,-1678.5 591,-1678.5 "/>
-<text text-anchor="start" x="415" y="-1666.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="415" y="-1655.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="415" y="-1644.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="415" y="-1633.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="415" y="-1622.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="415" y="-1611.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="415" y="-1600.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="415" y="-1589.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="415" y="-1578.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="415" y="-1567.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="415" y="-1556.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="415" y="-1545.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="415" y="-1534.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="415" y="-1523.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="407,-1516.5 591,-1516.5 "/>
-<text text-anchor="start" x="415" y="-1504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="415" y="-1493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="415" y="-1482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="415" y="-1471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="415" y="-1460.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="415" y="-1449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="415" y="-1438.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="415" y="-1427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="415" y="-1416.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="415" y="-1405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="415" y="-1394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="415" y="-1383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="415" y="-1372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="415" y="-1361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="415" y="-1350.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="415" y="-1339.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="415" y="-1328.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="415" y="-1317.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<polygon fill="white" stroke="black" points="376,-1310.5 376,-1697.5 560,-1697.5 560,-1310.5 376,-1310.5"/>
+<text text-anchor="middle" x="468" y="-1685.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="376,-1678.5 560,-1678.5 "/>
+<text text-anchor="start" x="384" y="-1666.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="384" y="-1655.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="384" y="-1644.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="384" y="-1633.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="384" y="-1622.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="384" y="-1611.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="384" y="-1600.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="384" y="-1589.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="384" y="-1578.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="384" y="-1567.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="384" y="-1556.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="384" y="-1545.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="384" y="-1534.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="384" y="-1523.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="376,-1516.5 560,-1516.5 "/>
+<text text-anchor="start" x="384" y="-1504.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="384" y="-1493.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="384" y="-1482.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="384" y="-1471.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="384" y="-1460.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="384" y="-1449.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="384" y="-1438.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="384" y="-1427.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<text text-anchor="start" x="384" y="-1416.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="384" y="-1405.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="384" y="-1394.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="384" y="-1383.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="384" y="-1372.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="384" y="-1361.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="384" y="-1350.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="384" y="-1339.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="384" y="-1328.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="384" y="-1317.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M492.58,-1300.32C489.74,-1239.96 485.7,-1173.74 480,-1113 479.44,-1107.07 478.76,-1100.91 478.02,-1094.75"/>
-<polygon fill="none" stroke="midnightblue" points="489.08,-1300.51 493.04,-1310.34 496.08,-1300.19 489.08,-1300.51"/>
+<path fill="none" stroke="midnightblue" d="M469.69,-1300.34C467.38,-1239.7 462.02,-1173.31 451,-1113 449.91,-1107.03 448.48,-1100.9 446.84,-1094.81"/>
+<polygon fill="none" stroke="midnightblue" points="466.2,-1300.54 470.05,-1310.41 473.19,-1300.29 466.2,-1300.54"/>
 </g>
 <!-- Node5&#45;&gt;Node5 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M591.28,-1537.92C602.02,-1531.66 609,-1520.36 609,-1504 609,-1493.01 605.85,-1484.3 600.52,-1477.87"/>
-<polygon fill="none" stroke="#404040" points="600.46,-1477.81 593.29,-1477 591.28,-1470.08 598.45,-1470.89 600.46,-1477.81"/>
-<text text-anchor="middle" x="635" y="-1501.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M560.28,-1537.92C571.02,-1531.66 578,-1520.36 578,-1504 578,-1493.01 574.85,-1484.3 569.52,-1477.87"/>
+<polygon fill="none" stroke="#404040" points="569.46,-1477.81 562.29,-1477 560.28,-1470.08 567.45,-1470.89 569.46,-1477.81"/>
+<text text-anchor="middle" x="604" y="-1501.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1Span.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="233,-1459 233,-1549 389,-1549 389,-1459 233,-1459"/>
-<text text-anchor="middle" x="311" y="-1537" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
-<polyline fill="none" stroke="black" points="233,-1530 389,-1530 "/>
-<text text-anchor="middle" x="311" y="-1518" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="233,-1511 389,-1511 "/>
-<text text-anchor="start" x="241" y="-1499" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
-<text text-anchor="start" x="241" y="-1488" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
-<text text-anchor="start" x="241" y="-1477" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="241" y="-1466" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="202,-1459 202,-1549 358,-1549 358,-1459 202,-1459"/>
+<text text-anchor="middle" x="280" y="-1537" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Span</text>
+<polyline fill="none" stroke="black" points="202,-1530 358,-1530 "/>
+<text text-anchor="middle" x="280" y="-1518" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="202,-1511 358,-1511 "/>
+<text text-anchor="start" x="210" y="-1499" font-family="Helvetica,sans-Serif" font-size="10.00">+ Span()</text>
+<text text-anchor="start" x="210" y="-1488" font-family="Helvetica,sans-Serif" font-size="10.00">+ Merge()</text>
+<text text-anchor="start" x="210" y="-1477" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="210" y="-1466" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node4 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M324.35,-1458.88C338.27,-1417.61 362.99,-1355.64 398,-1310 405.69,-1299.98 413.93,-1303.08 420,-1292 458.47,-1221.74 422.84,-1191.02 441,-1113 441.5,-1110.86 442.03,-1108.7 442.6,-1106.53"/>
-<polygon fill="none" stroke="#404040" points="442.64,-1106.38 440.43,-1099.52 445.92,-1094.84 448.13,-1101.7 442.64,-1106.38"/>
-<text text-anchor="middle" x="458.5" y="-1200" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
+<path fill="none" stroke="#404040" d="M292.78,-1458.94C306.37,-1417.42 330.92,-1355.04 367,-1310 375.34,-1299.59 384.35,-1303.56 391,-1292 410.97,-1257.28 406.41,-1152.66 412,-1113 412.29,-1110.97 412.58,-1108.9 412.89,-1106.82"/>
+<polygon fill="none" stroke="#404040" points="412.92,-1106.64 409.86,-1100.11 414.71,-1094.77 417.77,-1101.3 412.92,-1106.64"/>
+<text text-anchor="middle" x="429.5" y="-1200" font-family="Helvetica,sans-Serif" font-size="10.00"> +span</text>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="523,-1735.5 523,-1968.5 657,-1968.5 657,-1735.5 523,-1735.5"/>
-<text text-anchor="middle" x="590" y="-1956.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="523,-1949.5 657,-1949.5 "/>
-<text text-anchor="start" x="531" y="-1937.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="523,-1930.5 657,-1930.5 "/>
-<text text-anchor="start" x="531" y="-1918.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="531" y="-1907.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="531" y="-1896.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="531" y="-1885.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="531" y="-1874.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="531" y="-1863.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="531" y="-1852.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="531" y="-1841.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="531" y="-1830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="531" y="-1819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="531" y="-1808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="531" y="-1797.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="531" y="-1786.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="531" y="-1775.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="531" y="-1764.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="531" y="-1753.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="531" y="-1742.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="492,-1735.5 492,-1968.5 626,-1968.5 626,-1735.5 492,-1735.5"/>
+<text text-anchor="middle" x="559" y="-1956.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="492,-1949.5 626,-1949.5 "/>
+<text text-anchor="start" x="500" y="-1937.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="492,-1930.5 626,-1930.5 "/>
+<text text-anchor="start" x="500" y="-1918.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="500" y="-1907.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="500" y="-1896.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="500" y="-1885.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="500" y="-1874.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="500" y="-1863.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="500" y="-1852.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="500" y="-1841.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="500" y="-1830.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="500" y="-1819.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="500" y="-1808.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="500" y="-1797.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="500" y="-1786.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="500" y="-1775.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="500" y="-1764.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="500" y="-1753.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="500" y="-1742.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node3 -->
 <g id="edge9" class="edge">
 <title>Node7&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M522.99,-1847.26C430.11,-1838.08 264.93,-1806.5 187,-1698 35.2,-1486.64 128.83,-1370.97 163,-1113 183.48,-958.41 238.84,-783.34 270.99,-690.18"/>
-<polygon fill="none" stroke="#404040" points="271.04,-690.02 269.23,-683.04 274.98,-678.68 276.79,-685.67 271.04,-690.02"/>
-<text text-anchor="middle" x="206" y="-1200" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
+<path fill="none" stroke="#404040" d="M491.99,-1847.26C399.11,-1838.08 233.93,-1806.5 156,-1698 80.1,-1592.32 65.58,-1224.88 132,-1113 140.53,-1098.63 155.27,-1108.58 165,-1095 269.54,-949.05 198.43,-872.97 234,-697 234.43,-694.88 234.87,-692.72 235.33,-690.55"/>
+<polygon fill="none" stroke="#404040" points="235.33,-690.54 232.69,-683.83 237.86,-678.81 240.51,-685.52 235.33,-690.54"/>
+<text text-anchor="middle" x="175" y="-1200" font-family="Helvetica,sans-Serif" font-size="10.00"> +virtual_device_</text>
 </g>
 <!-- Node7&#45;&gt;Node6 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M514.16,-1803.35C475.55,-1776.16 430.1,-1739.3 398,-1698 362.7,-1652.59 338.05,-1590.57 324.21,-1549.22"/>
-<polygon fill="none" stroke="midnightblue" points="512.59,-1806.52 522.8,-1809.35 516.59,-1800.77 512.59,-1806.52"/>
+<path fill="none" stroke="midnightblue" d="M483.16,-1803.35C444.55,-1776.16 399.1,-1739.3 367,-1698 331.7,-1652.59 307.05,-1590.57 293.21,-1549.22"/>
+<polygon fill="none" stroke="midnightblue" points="481.59,-1806.52 491.8,-1809.35 485.59,-1800.77 481.59,-1806.52"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
@@ -239,278 +239,279 @@
 <!-- Node7&#45;&gt;Node9 -->
 <g id="edge11" class="edge">
 <title>Node7&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M512.67,-1837.75C399.97,-1816.78 198.98,-1772.56 153,-1717 -9.75,-1520.33 47.19,-1175.19 70.25,-1067.24"/>
-<polygon fill="none" stroke="midnightblue" points="512.16,-1841.21 522.63,-1839.58 513.43,-1834.33 512.16,-1841.21"/>
+<path fill="none" stroke="midnightblue" d="M481.8,-1838.09C368.77,-1817.49 166.78,-1773.66 122,-1717 -35.66,-1517.5 39.52,-1174.26 68.43,-1067.01"/>
+<polygon fill="none" stroke="midnightblue" points="481.32,-1841.56 491.79,-1839.89 482.57,-1834.67 481.32,-1841.56"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="258.5,-1113.5 258.5,-1291.5 415.5,-1291.5 415.5,-1113.5 258.5,-1113.5"/>
-<text text-anchor="start" x="266.5" y="-1279.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="337" y="-1268.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
-<polyline fill="none" stroke="black" points="258.5,-1261.5 415.5,-1261.5 "/>
-<text text-anchor="start" x="266.5" y="-1249.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="258.5,-1242.5 415.5,-1242.5 "/>
-<text text-anchor="start" x="266.5" y="-1230.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="266.5" y="-1219.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="266.5" y="-1208.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="266.5" y="-1197.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="266.5" y="-1186.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="266.5" y="-1175.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="266.5" y="-1164.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="266.5" y="-1153.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="266.5" y="-1142.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="266.5" y="-1131.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="266.5" y="-1120.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<polygon fill="white" stroke="black" points="227.5,-1113.5 227.5,-1291.5 384.5,-1291.5 384.5,-1113.5 227.5,-1113.5"/>
+<text text-anchor="start" x="235.5" y="-1279.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="306" y="-1268.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::ObjectRef &gt;</text>
+<polyline fill="none" stroke="black" points="227.5,-1261.5 384.5,-1261.5 "/>
+<text text-anchor="start" x="235.5" y="-1249.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="227.5,-1242.5 384.5,-1242.5 "/>
+<text text-anchor="start" x="235.5" y="-1230.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="235.5" y="-1219.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="235.5" y="-1208.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="235.5" y="-1197.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="235.5" y="-1186.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="235.5" y="-1175.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="235.5" y="-1164.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="235.5" y="-1153.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="235.5" y="-1142.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="235.5" y="-1131.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="235.5" y="-1120.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node10 -->
 <g id="edge13" class="edge">
 <title>Node7&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M512.87,-1843.35C425.86,-1830.14 288.16,-1794.36 224,-1698 176.21,-1626.23 181.52,-1385.03 224,-1310 231.66,-1296.47 241.9,-1301.76 254,-1292 255.48,-1290.81 256.95,-1289.59 258.42,-1288.35"/>
-<polygon fill="none" stroke="midnightblue" points="512.56,-1846.85 522.96,-1844.82 513.56,-1839.92 512.56,-1846.85"/>
+<path fill="none" stroke="midnightblue" d="M481.87,-1843.35C394.86,-1830.14 257.16,-1794.36 193,-1698 145.21,-1626.23 150.52,-1385.03 193,-1310 200.66,-1296.47 210.9,-1301.76 223,-1292 224.48,-1290.81 225.95,-1289.59 227.42,-1288.35"/>
+<polygon fill="none" stroke="midnightblue" points="481.56,-1846.85 491.96,-1844.82 482.56,-1839.92 481.56,-1846.85"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node">
 <title>Node12</title>
 <g id="a_node12"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="679,-1470 679,-1538 835,-1538 835,-1470 679,-1470"/>
-<text text-anchor="middle" x="757" y="-1526" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="679,-1519 835,-1519 "/>
-<text text-anchor="middle" x="757" y="-1507" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="679,-1500 835,-1500 "/>
-<text text-anchor="start" x="687" y="-1488" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="687" y="-1477" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="648,-1470 648,-1538 804,-1538 804,-1470 648,-1470"/>
+<text text-anchor="middle" x="726" y="-1526" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="648,-1519 804,-1519 "/>
+<text text-anchor="middle" x="726" y="-1507" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="648,-1500 804,-1500 "/>
+<text text-anchor="start" x="656" y="-1488" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="656" y="-1477" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node12 -->
 <g id="edge16" class="edge">
 <title>Node7&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M656.04,-1726.14C660.83,-1716.65 665.53,-1707.19 670,-1698 697,-1642.47 726.03,-1576.71 742.8,-1538.05"/>
-<polygon fill="none" stroke="midnightblue" points="652.83,-1724.74 651.43,-1735.24 659.07,-1727.9 652.83,-1724.74"/>
+<path fill="none" stroke="midnightblue" d="M625.04,-1726.14C629.83,-1716.65 634.53,-1707.19 639,-1698 666,-1642.47 695.03,-1576.71 711.8,-1538.05"/>
+<polygon fill="none" stroke="midnightblue" points="621.83,-1724.74 620.43,-1735.24 628.07,-1727.9 621.83,-1724.74"/>
 </g>
 <!-- Node14 -->
 <g id="node14" class="node">
 <title>Node14</title>
 <g id="a_node14"><a xlink:href="classtvm_1_1BaseExpr.html" target="_top" xlink:title="Managed reference to BaseExprNode.">
-<polygon fill="white" stroke="black" points="853,-1470 853,-1538 1009,-1538 1009,-1470 853,-1470"/>
-<text text-anchor="middle" x="931" y="-1526" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
-<polyline fill="none" stroke="black" points="853,-1519 1009,-1519 "/>
-<text text-anchor="middle" x="931" y="-1507" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="853,-1500 1009,-1500 "/>
-<text text-anchor="start" x="861" y="-1488" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="861" y="-1477" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="822,-1470 822,-1538 978,-1538 978,-1470 822,-1470"/>
+<text text-anchor="middle" x="900" y="-1526" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::BaseExpr</text>
+<polyline fill="none" stroke="black" points="822,-1519 978,-1519 "/>
+<text text-anchor="middle" x="900" y="-1507" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="822,-1500 978,-1500 "/>
+<text text-anchor="start" x="830" y="-1488" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="830" y="-1477" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node14 -->
 <g id="edge19" class="edge">
 <title>Node7&#45;&gt;Node14</title>
-<path fill="none" stroke="midnightblue" d="M666.51,-1819.92C721.86,-1794.19 795.21,-1752.95 844,-1698 886.09,-1650.59 910.96,-1579.44 922.71,-1538.07"/>
-<polygon fill="none" stroke="midnightblue" points="664.73,-1816.89 657.09,-1824.23 667.64,-1823.25 664.73,-1816.89"/>
+<path fill="none" stroke="midnightblue" d="M635.51,-1819.92C690.86,-1794.19 764.21,-1752.95 813,-1698 855.09,-1650.59 879.96,-1579.44 891.71,-1538.07"/>
+<polygon fill="none" stroke="midnightblue" points="633.73,-1816.89 626.09,-1824.23 636.64,-1823.25 633.73,-1816.89"/>
 </g>
 <!-- Node15 -->
 <g id="node15" class="node">
 <title>Node15</title>
 <g id="a_node15"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="924.5,-697.5 924.5,-952.5 1045.5,-952.5 1045.5,-697.5 924.5,-697.5"/>
-<text text-anchor="start" x="932.5" y="-940.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
-<text text-anchor="middle" x="985" y="-929.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::relay::Var &gt;</text>
-<polyline fill="none" stroke="black" points="924.5,-922.5 1045.5,-922.5 "/>
-<text text-anchor="middle" x="985" y="-910.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="924.5,-903.5 1045.5,-903.5 "/>
-<text text-anchor="start" x="932.5" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="932.5" y="-880.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="932.5" y="-869.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="932.5" y="-858.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="932.5" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="932.5" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="932.5" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="932.5" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="932.5" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="932.5" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="932.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
-<text text-anchor="start" x="932.5" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="932.5" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="932.5" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="932.5" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="932.5" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="932.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="932.5" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
+<polygon fill="white" stroke="black" points="896.5,-697.5 896.5,-952.5 1017.5,-952.5 1017.5,-697.5 896.5,-697.5"/>
+<text text-anchor="start" x="904.5" y="-940.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
+<text text-anchor="middle" x="957" y="-929.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::relay::Var &gt;</text>
+<polyline fill="none" stroke="black" points="896.5,-922.5 1017.5,-922.5 "/>
+<text text-anchor="middle" x="957" y="-910.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="896.5,-903.5 1017.5,-903.5 "/>
+<text text-anchor="start" x="904.5" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="904.5" y="-880.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="904.5" y="-869.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="904.5" y="-858.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="904.5" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="904.5" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="904.5" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="904.5" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="904.5" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="904.5" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="904.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="904.5" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="904.5" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="904.5" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="904.5" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="904.5" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="904.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="904.5" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node15 -->
 <g id="edge22" class="edge">
 <title>Node7&#45;&gt;Node15</title>
-<path fill="none" stroke="midnightblue" d="M667.15,-1848.68C767.21,-1841.02 938.36,-1811.04 1018,-1698 1100.07,-1581.5 1043.7,-1165.32 1008.04,-952.82"/>
-<polygon fill="none" stroke="midnightblue" points="666.82,-1845.19 657.09,-1849.39 667.32,-1852.17 666.82,-1845.19"/>
+<path fill="none" stroke="midnightblue" d="M636.15,-1848.68C736.21,-1841.02 907.36,-1811.04 987,-1698 1069.06,-1581.52 1014.31,-1165.33 979.51,-952.83"/>
+<polygon fill="none" stroke="midnightblue" points="635.82,-1845.19 626.09,-1849.39 636.32,-1852.17 635.82,-1845.19"/>
 </g>
 <!-- Node16 -->
 <g id="node16" class="node">
 <title>Node16</title>
 <g id="a_node16"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="1020.5,-292.5 1020.5,-547.5 1141.5,-547.5 1141.5,-292.5 1020.5,-292.5"/>
-<text text-anchor="start" x="1028.5" y="-535.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
-<text text-anchor="middle" x="1081" y="-524.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::TypeVar &gt;</text>
-<polyline fill="none" stroke="black" points="1020.5,-517.5 1141.5,-517.5 "/>
-<text text-anchor="middle" x="1081" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="1020.5,-498.5 1141.5,-498.5 "/>
-<text text-anchor="start" x="1028.5" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="1028.5" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="1028.5" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="1028.5" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="1028.5" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="1028.5" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="1028.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="1028.5" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="1028.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="1028.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="1028.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
-<text text-anchor="start" x="1028.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="1028.5" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="1028.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="1028.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="1028.5" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="1028.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="1028.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
+<polygon fill="white" stroke="black" points="995.5,-292.5 995.5,-547.5 1116.5,-547.5 1116.5,-292.5 995.5,-292.5"/>
+<text text-anchor="start" x="1003.5" y="-535.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
+<text text-anchor="middle" x="1056" y="-524.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::TypeVar &gt;</text>
+<polyline fill="none" stroke="black" points="995.5,-517.5 1116.5,-517.5 "/>
+<text text-anchor="middle" x="1056" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="995.5,-498.5 1116.5,-498.5 "/>
+<text text-anchor="start" x="1003.5" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="1003.5" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="1003.5" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="1003.5" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="1003.5" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="1003.5" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="1003.5" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="1003.5" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="1003.5" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="1003.5" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="1003.5" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="1003.5" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="1003.5" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="1003.5" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="1003.5" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="1003.5" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="1003.5" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="1003.5" y="-299.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node16 -->
 <g id="edge24" class="edge">
 <title>Node7&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M667.12,-1836.96C786.81,-1813.41 1008.22,-1762.14 1053,-1698 1102.55,-1627.03 1079,-1591.55 1079,-1505 1079,-1505 1079,-1505 1079,-824 1079,-731.47 1079.53,-626.99 1080.05,-547.6"/>
-<polygon fill="none" stroke="midnightblue" points="666.42,-1833.53 657.27,-1838.88 667.76,-1840.4 666.42,-1833.53"/>
+<path fill="none" stroke="midnightblue" d="M635.97,-1836.86C755.45,-1813.15 976.57,-1761.68 1022,-1698 1072.42,-1627.33 1052,-1591.81 1052,-1505 1052,-1505 1052,-1505 1052,-824 1052,-731.47 1053.07,-626.99 1054.1,-547.6"/>
+<polygon fill="none" stroke="midnightblue" points="635.28,-1833.43 626.14,-1838.79 636.63,-1840.29 635.28,-1833.43"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="520,-2016.5 520,-2194.5 660,-2194.5 660,-2016.5 520,-2016.5"/>
-<text text-anchor="start" x="528" y="-2182.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="590" y="-2171.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="520,-2164.5 660,-2164.5 "/>
-<text text-anchor="middle" x="590" y="-2152.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="520,-2145.5 660,-2145.5 "/>
-<text text-anchor="start" x="528" y="-2133.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="528" y="-2122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="528" y="-2111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="528" y="-2100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="528" y="-2089.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="528" y="-2078.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="528" y="-2067.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="528" y="-2056.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="528" y="-2045.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="528" y="-2034.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="528" y="-2023.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<polygon fill="white" stroke="black" points="489,-2016.5 489,-2194.5 629,-2194.5 629,-2016.5 489,-2016.5"/>
+<text text-anchor="start" x="497" y="-2182.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="559" y="-2171.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="489,-2164.5 629,-2164.5 "/>
+<text text-anchor="middle" x="559" y="-2152.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="489,-2145.5 629,-2145.5 "/>
+<text text-anchor="start" x="497" y="-2133.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="497" y="-2122.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="497" y="-2111.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="497" y="-2100.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="497" y="-2089.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="497" y="-2078.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="497" y="-2067.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="497" y="-2056.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="497" y="-2045.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="497" y="-2034.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="497" y="-2023.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node8&#45;&gt;Node7 -->
 <g id="edge8" class="edge">
 <title>Node8&#45;&gt;Node7</title>
-<path fill="none" stroke="#404040" d="M590,-2016.18C590,-2004.84 590,-1993.05 590,-1981.23"/>
-<polygon fill="none" stroke="#404040" points="590,-1980.91 586,-1974.91 590,-1968.91 594,-1974.91 590,-1980.91"/>
-<text text-anchor="middle" x="609.5" y="-1990" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M559,-2016.18C559,-2004.84 559,-1993.05 559,-1981.23"/>
+<polygon fill="none" stroke="#404040" points="559,-1980.91 555,-1974.91 559,-1968.91 563,-1974.91 559,-1980.91"/>
+<text text-anchor="middle" x="578.5" y="-1990" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node9&#45;&gt;Node1 -->
 <g id="edge20" class="edge">
 <title>Node9&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M70.07,-998.82C56.93,-937.69 34.99,-803.74 66,-697 125.47,-492.28 162.28,-432.06 323,-292 452.2,-179.4 643.9,-113.45 759.9,-81.51"/>
-<polygon fill="none" stroke="#404040" points="759.99,-81.48 764.74,-76.05 771.58,-78.34 766.83,-83.77 759.99,-81.48"/>
-<text text-anchor="middle" x="349" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +ret_type</text>
+<path fill="none" stroke="#404040" d="M70.76,-998.55C58.89,-937.54 39.11,-804.56 66,-697 115.48,-499.09 132.08,-430.35 282,-292 412.72,-171.37 614.75,-107.39 735.02,-78.11"/>
+<polygon fill="none" stroke="#404040" points="735.09,-78.1 740,-72.81 746.76,-75.3 741.86,-80.59 735.09,-78.1"/>
+<text text-anchor="middle" x="308" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +ret_type</text>
 </g>
 <!-- Node9&#45;&gt;Node3 -->
 <g id="edge10" class="edge">
 <title>Node9&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M74.19,-998.81C66.3,-923.84 51.64,-744.3 86,-697 111.67,-661.66 155.69,-643.21 196.73,-633.62"/>
-<polygon fill="none" stroke="#404040" points="196.76,-633.62 201.79,-628.44 208.49,-631.09 203.47,-636.26 196.76,-633.62"/>
+<path fill="none" stroke="#404040" d="M74.46,-998.99C67.14,-924.42 53.58,-745.65 86,-697 101.75,-673.37 127,-657.26 153.07,-646.3"/>
+<polygon fill="none" stroke="#404040" points="153.09,-646.3 157.22,-640.38 164.26,-641.92 160.14,-647.83 153.09,-646.3"/>
 <text text-anchor="middle" x="128" y="-822.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +checked_type_</text>
 </g>
 <!-- Node10&#45;&gt;Node3 -->
 <g id="edge12" class="edge">
 <title>Node10&#45;&gt;Node3</title>
-<path fill="none" stroke="#404040" d="M307.61,-1113.33C306.2,-1107.17 304.97,-1101.02 304,-1095 281.05,-952.62 285.42,-782.94 290.38,-690.94"/>
-<polygon fill="none" stroke="#404040" points="290.4,-690.74 286.74,-684.52 291.07,-678.76 294.73,-684.97 290.4,-690.74"/>
-<text text-anchor="middle" x="338.5" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
+<path fill="none" stroke="#404040" d="M264.92,-1113.45C263,-1107.29 261.32,-1101.1 260,-1095 229.41,-953.86 236.7,-783.37 244.2,-690.98"/>
+<polygon fill="none" stroke="#404040" points="244.22,-690.7 240.74,-684.39 245.23,-678.75 248.71,-685.06 244.22,-690.7"/>
+<text text-anchor="middle" x="294.5" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +struct_info_</text>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="655,-758 655,-892 811,-892 811,-758 655,-758"/>
-<text text-anchor="middle" x="733" y="-880" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="655,-873 811,-873 "/>
-<text text-anchor="middle" x="733" y="-861" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="655,-854 811,-854 "/>
-<text text-anchor="start" x="663" y="-842" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="663" y="-831" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="663" y="-820" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="663" y="-809" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="663" y="-798" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="663" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="663" y="-776" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="663" y="-765" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="635,-752.5 635,-897.5 807,-897.5 807,-752.5 635,-752.5"/>
+<text text-anchor="middle" x="721" y="-885.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="635,-878.5 807,-878.5 "/>
+<text text-anchor="middle" x="721" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="635,-859.5 807,-859.5 "/>
+<text text-anchor="start" x="643" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="643" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="643" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="643" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="643" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="643" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="643" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="643" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="643" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node11&#45;&gt;Node2 -->
 <g id="edge14" class="edge">
 <title>Node11&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M732.67,-757.74C732.11,-642.42 730.95,-405.69 730.36,-285.89"/>
-<polygon fill="none" stroke="#404040" points="730.36,-285.62 726.33,-279.64 730.3,-273.62 734.33,-279.6 730.36,-285.62"/>
-<text text-anchor="middle" x="749" y="-620" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M717.14,-752.48C715.98,-729.07 714.81,-702.93 714,-679 709.3,-540.02 706.86,-377.64 705.76,-285.9"/>
+<polygon fill="none" stroke="#404040" points="705.75,-285.71 701.68,-279.75 705.61,-273.71 709.68,-279.66 705.75,-285.71"/>
+<text text-anchor="middle" x="731" y="-620" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node12&#45;&gt;Node11 -->
 <g id="edge15" class="edge">
 <title>Node12&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M755.46,-1459.69C751.38,-1344.48 740.23,-1029.87 735.34,-892.1"/>
-<polygon fill="none" stroke="midnightblue" points="751.97,-1460.02 755.83,-1469.89 758.97,-1459.77 751.97,-1460.02"/>
+<path fill="none" stroke="midnightblue" d="M725.68,-1459.83C724.84,-1346.22 722.57,-1038.05 721.53,-897.55"/>
+<polygon fill="none" stroke="midnightblue" points="722.18,-1459.91 725.76,-1469.89 729.18,-1459.86 722.18,-1459.91"/>
 </g>
 <!-- Node13 -->
 <g id="node13" class="node">
 <title>Node13</title>
 <g id="a_node13"><a xlink:href="classtvm_1_1RelayExpr.html" target="_top" xlink:title="Managed reference to RelayExprNode.">
-<polygon fill="white" stroke="black" points="782,-588.5 782,-656.5 938,-656.5 938,-588.5 782,-588.5"/>
-<text text-anchor="middle" x="860" y="-644.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExpr</text>
-<polyline fill="none" stroke="black" points="782,-637.5 938,-637.5 "/>
-<text text-anchor="middle" x="860" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="782,-618.5 938,-618.5 "/>
-<text text-anchor="start" x="790" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="790" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="757,-588.5 757,-656.5 913,-656.5 913,-588.5 757,-588.5"/>
+<text text-anchor="middle" x="835" y="-644.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::RelayExpr</text>
+<polyline fill="none" stroke="black" points="757,-637.5 913,-637.5 "/>
+<text text-anchor="middle" x="835" y="-625.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="757,-618.5 913,-618.5 "/>
+<text text-anchor="start" x="765" y="-606.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="765" y="-595.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node13&#45;&gt;Node1 -->
 <g id="edge17" class="edge">
 <title>Node13&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M860,-588.32C860,-498.04 860,-246.55 860,-124.99"/>
-<polygon fill="none" stroke="#404040" points="860,-124.94 856,-118.94 860,-112.94 864,-118.94 860,-124.94"/>
-<text text-anchor="middle" x="878" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +body</text>
+<path fill="none" stroke="#404040" d="M835,-588.32C835,-498.04 835,-246.55 835,-124.99"/>
+<polygon fill="none" stroke="#404040" points="835,-124.94 831,-118.94 835,-112.94 839,-118.94 835,-124.94"/>
+<text text-anchor="middle" x="853" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +body</text>
 </g>
 <!-- Node14&#45;&gt;Node13 -->
 <g id="edge18" class="edge">
 <title>Node14&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M927.48,-1459.44C915.09,-1305.93 873.61,-792.04 862.66,-656.5"/>
-<polygon fill="none" stroke="midnightblue" points="924.03,-1460.18 928.32,-1469.86 931.01,-1459.61 924.03,-1460.18"/>
+<path fill="none" stroke="midnightblue" d="M896.78,-1459.44C885.44,-1305.93 847.46,-792.04 837.44,-656.5"/>
+<polygon fill="none" stroke="midnightblue" points="893.32,-1460.15 897.55,-1469.86 900.3,-1459.63 893.32,-1460.15"/>
 </g>
 <!-- Node15&#45;&gt;Node1 -->
 <g id="edge21" class="edge">
 <title>Node15&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M973.34,-697.36C957.32,-531.54 927.38,-250.19 900,-150 897.66,-141.43 894.67,-132.63 891.39,-124.01"/>
-<polygon fill="none" stroke="#404040" points="891.38,-123.98 885.44,-119.89 886.94,-112.84 892.87,-116.93 891.38,-123.98"/>
-<text text-anchor="middle" x="981.5" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +params</text>
+<path fill="none" stroke="#404040" d="M945.96,-697.36C930.75,-531.55 902.15,-250.19 875,-150 872.68,-141.43 869.7,-132.62 866.43,-124"/>
+<polygon fill="none" stroke="#404040" points="866.42,-123.98 860.48,-119.88 861.98,-112.83 867.91,-116.92 866.42,-123.98"/>
+<text text-anchor="middle" x="955.5" y="-417.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +params</text>
 </g>
 <!-- Node16&#45;&gt;Node1 -->
 <g id="edge23" class="edge">
 <title>Node16&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M1056.57,-292.33C1041.38,-238.34 1017.36,-177.27 980,-131 973.48,-122.92 965.81,-115.5 957.56,-108.74"/>
-<polygon fill="none" stroke="#404040" points="957.53,-108.71 950.34,-108.22 948.03,-101.38 955.23,-101.88 957.53,-108.71"/>
-<text text-anchor="middle" x="1088" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +type_params</text>
+<path fill="none" stroke="#404040" d="M1031.57,-292.33C1016.38,-238.34 992.36,-177.27 955,-131 948.48,-122.92 940.81,-115.5 932.56,-108.74"/>
+<polygon fill="none" stroke="#404040" points="932.53,-108.71 925.34,-108.22 923.03,-101.38 930.23,-101.88 932.53,-108.71"/>
+<text text-anchor="middle" x="1063" y="-209.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +type_params</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1RuntimeNode.html b/docs/reference/api/doxygen/classtvm_1_1relay_1_1RuntimeNode.html
index e06820d734..40b91f3d9c 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1RuntimeNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1RuntimeNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::relay::RuntimeNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::relay::RuntimeNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1RuntimeNode__coll__graph.svg" width="708" height="1871"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1relay_1_1RuntimeNode__coll__graph.svg" width="730" height="1871"><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">
diff --git a/docs/reference/api/doxygen/classtvm_1_1relay_1_1RuntimeNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1relay_1_1RuntimeNode__coll__graph.svg
index 174336213c..ebfd93a857 100644
--- a/docs/reference/api/doxygen/classtvm_1_1relay_1_1RuntimeNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1relay_1_1RuntimeNode__coll__graph.svg
@@ -4,31 +4,31 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::relay::RuntimeNode Pages: 1 -->
-<svg width="531pt" height="1403pt"
- viewBox="0.00 0.00 530.50 1403.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="547pt" height="1403pt"
+ viewBox="0.00 0.00 546.50 1403.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 1399)">
 <title>tvm::relay::RuntimeNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1399 526.5,-1399 526.5,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1399 542.5,-1399 542.5,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
 <g id="a_node1"><a xlink:title="Runtime information.">
-<polygon fill="#bfbfbf" stroke="black" points="262,-0.5 262,-167.5 438,-167.5 438,-0.5 262,-0.5"/>
-<text text-anchor="middle" x="350" y="-155.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::RuntimeNode</text>
-<polyline fill="none" stroke="black" points="262,-148.5 438,-148.5 "/>
-<text text-anchor="start" x="270" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="270" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="270" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="270" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="270" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<polyline fill="none" stroke="black" points="262,-85.5 438,-85.5 "/>
-<text text-anchor="start" x="270" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="270" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="270" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="270" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
-<text text-anchor="start" x="270" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
-<text text-anchor="start" x="270" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
-<text text-anchor="start" x="270" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="#bfbfbf" stroke="black" points="270,-0.5 270,-167.5 446,-167.5 446,-0.5 270,-0.5"/>
+<text text-anchor="middle" x="358" y="-155.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::relay::RuntimeNode</text>
+<polyline fill="none" stroke="black" points="270,-148.5 446,-148.5 "/>
+<text text-anchor="start" x="278" y="-136.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="278" y="-125.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="278" y="-114.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="278" y="-103.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="278" y="-92.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<polyline fill="none" stroke="black" points="270,-85.5 446,-85.5 "/>
+<text text-anchor="start" x="278" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="278" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="278" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="278" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SEqualReduce()</text>
+<text text-anchor="start" x="278" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SHashReduce()</text>
+<text text-anchor="start" x="278" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_FINAL_OBJECT</text>
+<text text-anchor="start" x="278" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
@@ -78,8 +78,8 @@
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M190.67,-284.47C221.87,-245.41 255.58,-203.21 283.92,-167.73"/>
-<polygon fill="none" stroke="midnightblue" points="187.56,-282.76 184.05,-292.76 193.03,-287.13 187.56,-282.76"/>
+<path fill="none" stroke="midnightblue" d="M190.85,-287.97C223.85,-247.89 259.87,-204.16 289.99,-167.58"/>
+<polygon fill="none" stroke="midnightblue" points="187.94,-285.99 184.29,-295.94 193.35,-290.44 187.94,-285.99"/>
 </g>
 <!-- Node2&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
@@ -92,152 +92,153 @@
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1DictAttrs.html" target="_top" xlink:title="Managed reference to DictAttrsNode.">
-<polygon fill="white" stroke="black" points="272,-342 272,-476 428,-476 428,-342 272,-342"/>
-<text text-anchor="middle" x="350" y="-464" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
-<polyline fill="none" stroke="black" points="272,-457 428,-457 "/>
-<text text-anchor="middle" x="350" y="-445" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="272,-438 428,-438 "/>
-<text text-anchor="start" x="280" y="-426" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
-<text text-anchor="start" x="280" y="-415" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="280" y="-404" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
-<text text-anchor="start" x="280" y="-393" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
-<text text-anchor="start" x="280" y="-382" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
-<text text-anchor="start" x="280" y="-360" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="280" y="-349" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
+<polygon fill="white" stroke="black" points="272,-336.5 272,-481.5 444,-481.5 444,-336.5 272,-336.5"/>
+<text text-anchor="middle" x="358" y="-469.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::DictAttrs</text>
+<polyline fill="none" stroke="black" points="272,-462.5 444,-462.5 "/>
+<text text-anchor="middle" x="358" y="-450.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="272,-443.5 444,-443.5 "/>
+<text text-anchor="start" x="280" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ DictAttrs()</text>
+<text text-anchor="start" x="280" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="280" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetAttr()</text>
+<text text-anchor="start" x="280" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasNonzeroAttr()</text>
+<text text-anchor="start" x="280" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS_WITHOUT_DEFAULT</text>
+<text text-anchor="start" x="280" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">_CONSTRUCTOR()</text>
+<text text-anchor="start" x="280" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="280" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00">_COW_METHOD()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node1 -->
 <g id="edge3" class="edge">
 <title>Node3&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M350,-341.86C350,-295.21 350,-232.03 350,-180"/>
-<polygon fill="none" stroke="#404040" points="350,-179.72 346,-173.72 350,-167.72 354,-173.72 350,-179.72"/>
-<text text-anchor="middle" x="367" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
+<path fill="none" stroke="#404040" d="M358,-336.32C358,-290.21 358,-229.8 358,-179.75"/>
+<polygon fill="none" stroke="#404040" points="358,-179.6 354,-173.6 358,-167.6 362,-173.6 358,-179.6"/>
+<text text-anchor="middle" x="375" y="-189" font-family="Helvetica,sans-Serif" font-size="10.00"> +attrs</text>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1Attrs.html" target="_top" xlink:title="Managed reference to BaseAttrsNode.">
-<polygon fill="white" stroke="black" points="278,-829.5 278,-897.5 434,-897.5 434,-829.5 278,-829.5"/>
-<text text-anchor="middle" x="356" y="-885.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
-<polyline fill="none" stroke="black" points="278,-878.5 434,-878.5 "/>
-<text text-anchor="middle" x="356" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="278,-859.5 434,-859.5 "/>
-<text text-anchor="start" x="286" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
-<text text-anchor="start" x="286" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
+<polygon fill="white" stroke="black" points="292,-829.5 292,-897.5 448,-897.5 448,-829.5 292,-829.5"/>
+<text text-anchor="middle" x="370" y="-885.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::Attrs</text>
+<polyline fill="none" stroke="black" points="292,-878.5 448,-878.5 "/>
+<text text-anchor="middle" x="370" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="292,-859.5 448,-859.5 "/>
+<text text-anchor="start" x="300" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DEFINE_OBJECT_REF</text>
+<text text-anchor="start" x="300" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">_METHODS()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M355.42,-819.08C354.37,-739.57 352.12,-570.17 350.88,-476.21"/>
-<polygon fill="none" stroke="midnightblue" points="351.93,-819.27 355.56,-829.23 358.93,-819.18 351.93,-819.27"/>
+<path fill="none" stroke="midnightblue" d="M368.84,-818.79C366.77,-740.65 362.41,-576.34 359.9,-481.55"/>
+<polygon fill="none" stroke="midnightblue" points="365.35,-819.32 369.12,-829.23 372.35,-819.14 365.35,-819.32"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="342,-935.5 342,-1168.5 476,-1168.5 476,-935.5 342,-935.5"/>
-<text text-anchor="middle" x="409" y="-1156.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="342,-1149.5 476,-1149.5 "/>
-<text text-anchor="start" x="350" y="-1137.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="342,-1130.5 476,-1130.5 "/>
-<text text-anchor="start" x="350" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="350" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="350" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="350" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="350" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="350" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="350" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="350" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="350" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="350" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="350" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="350" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="350" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="350" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="350" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="350" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="350" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="357,-935.5 357,-1168.5 491,-1168.5 491,-935.5 357,-935.5"/>
+<text text-anchor="middle" x="424" y="-1156.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="357,-1149.5 491,-1149.5 "/>
+<text text-anchor="start" x="365" y="-1137.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="357,-1130.5 491,-1130.5 "/>
+<text text-anchor="start" x="365" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="365" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="365" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="365" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="365" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="365" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="365" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="365" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="365" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="365" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="365" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="365" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="365" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="365" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="365" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="365" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="365" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M373.33,-925.48C370.47,-915.43 367.78,-905.95 365.4,-897.59"/>
-<polygon fill="none" stroke="midnightblue" points="370.01,-926.61 376.11,-935.27 376.75,-924.7 370.01,-926.61"/>
+<path fill="none" stroke="midnightblue" d="M387.66,-925.48C384.75,-915.43 382,-905.95 379.58,-897.59"/>
+<polygon fill="none" stroke="midnightblue" points="384.35,-926.64 390.49,-935.27 391.07,-924.69 384.35,-926.64"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node">
 <title>Node7</title>
 <g id="a_node7"><a xlink:href="classtvm_1_1runtime_1_1String.html" target="_top" xlink:title="Reference to string objects.">
-<polygon fill="white" stroke="black" points="403.5,-621.5 403.5,-810.5 522.5,-810.5 522.5,-621.5 403.5,-621.5"/>
-<text text-anchor="middle" x="463" y="-798.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::String</text>
-<polyline fill="none" stroke="black" points="403.5,-791.5 522.5,-791.5 "/>
-<text text-anchor="middle" x="463" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="403.5,-772.5 522.5,-772.5 "/>
-<text text-anchor="start" x="411.5" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
-<text text-anchor="start" x="411.5" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
-<text text-anchor="start" x="411.5" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
-<text text-anchor="start" x="411.5" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
-<text text-anchor="start" x="411.5" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="411.5" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="411.5" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
-<text text-anchor="start" x="411.5" y="-683.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
-<text text-anchor="start" x="411.5" y="-672.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
-<text text-anchor="start" x="411.5" y="-661.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ c_str()</text>
-<text text-anchor="start" x="411.5" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
-<text text-anchor="start" x="411.5" y="-639.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CanConvertFrom()</text>
-<text text-anchor="start" x="411.5" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StableHashBytes()</text>
+<polygon fill="white" stroke="black" points="419.5,-621.5 419.5,-810.5 538.5,-810.5 538.5,-621.5 419.5,-621.5"/>
+<text text-anchor="middle" x="479" y="-798.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::String</text>
+<polyline fill="none" stroke="black" points="419.5,-791.5 538.5,-791.5 "/>
+<text text-anchor="middle" x="479" y="-779.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="419.5,-772.5 538.5,-772.5 "/>
+<text text-anchor="start" x="427.5" y="-760.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
+<text text-anchor="start" x="427.5" y="-749.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
+<text text-anchor="start" x="427.5" y="-738.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
+<text text-anchor="start" x="427.5" y="-727.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ String()</text>
+<text text-anchor="start" x="427.5" y="-716.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="427.5" y="-705.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="427.5" y="-694.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
+<text text-anchor="start" x="427.5" y="-683.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
+<text text-anchor="start" x="427.5" y="-672.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ compare()</text>
+<text text-anchor="start" x="427.5" y="-661.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ c_str()</text>
+<text text-anchor="start" x="427.5" y="-650.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
+<text text-anchor="start" x="427.5" y="-639.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CanConvertFrom()</text>
+<text text-anchor="start" x="427.5" y="-628.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StableHashBytes()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node7 -->
 <g id="edge8" class="edge">
 <title>Node5&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M438.1,-925.18C439.87,-916 441.53,-906.87 443,-898 447.68,-869.77 451.55,-838.88 454.6,-810.74"/>
-<polygon fill="none" stroke="midnightblue" points="434.63,-924.65 436.13,-935.14 441.5,-926 434.63,-924.65"/>
+<path fill="none" stroke="midnightblue" d="M452.1,-925.14C453.85,-915.97 455.51,-906.86 457,-898 461.75,-869.75 465.9,-838.85 469.26,-810.71"/>
+<polygon fill="none" stroke="midnightblue" points="448.64,-924.61 450.16,-935.1 455.51,-925.95 448.64,-924.61"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectPtr.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="339,-1216.5 339,-1394.5 479,-1394.5 479,-1216.5 339,-1216.5"/>
-<text text-anchor="start" x="347" y="-1382.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
-<text text-anchor="middle" x="409" y="-1371.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
-<polyline fill="none" stroke="black" points="339,-1364.5 479,-1364.5 "/>
-<text text-anchor="middle" x="409" y="-1352.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="339,-1345.5 479,-1345.5 "/>
-<text text-anchor="start" x="347" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
-<text text-anchor="start" x="347" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
-<text text-anchor="start" x="347" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="347" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="347" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
+<polygon fill="white" stroke="black" points="354,-1216.5 354,-1394.5 494,-1394.5 494,-1216.5 354,-1216.5"/>
+<text text-anchor="start" x="362" y="-1382.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectPtr</text>
+<text text-anchor="middle" x="424" y="-1371.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::Object &gt;</text>
+<polyline fill="none" stroke="black" points="354,-1364.5 494,-1364.5 "/>
+<text text-anchor="middle" x="424" y="-1352.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="354,-1345.5 494,-1345.5 "/>
+<text text-anchor="start" x="362" y="-1333.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1322.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1311.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1300.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1289.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1278.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1267.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ObjectPtr()</text>
+<text text-anchor="start" x="362" y="-1256.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ swap()</text>
+<text text-anchor="start" x="362" y="-1245.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="362" y="-1234.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="362" y="-1223.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 11 more...</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="#404040" d="M409,-1216.18C409,-1204.84 409,-1193.05 409,-1181.23"/>
-<polygon fill="none" stroke="#404040" points="409,-1180.91 405,-1174.91 409,-1168.91 413,-1174.91 409,-1180.91"/>
-<text text-anchor="middle" x="428.5" y="-1190" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
+<path fill="none" stroke="#404040" d="M424,-1216.18C424,-1204.84 424,-1193.05 424,-1181.23"/>
+<polygon fill="none" stroke="#404040" points="424,-1180.91 420,-1174.91 424,-1168.91 428,-1174.91 424,-1180.91"/>
+<text text-anchor="middle" x="443.5" y="-1190" font-family="Helvetica,sans-Serif" font-size="10.00"> #data_</text>
 </g>
 <!-- Node7&#45;&gt;Node1 -->
 <g id="edge7" class="edge">
 <title>Node7&#45;&gt;Node1</title>
-<path fill="none" stroke="#404040" d="M472.69,-621.04C479.97,-518.45 482.1,-350.69 437,-215 432.87,-202.57 427.21,-190.21 420.73,-178.33"/>
-<polygon fill="none" stroke="#404040" points="420.54,-177.99 414.09,-174.77 414.59,-167.57 421.04,-170.8 420.54,-177.99"/>
-<text text-anchor="middle" x="496" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +name</text>
+<path fill="none" stroke="#404040" d="M489.73,-621.14C497.96,-518.28 500.96,-349.93 453,-215 448.51,-202.37 442.37,-189.91 435.35,-178"/>
+<polygon fill="none" stroke="#404040" points="435.29,-177.89 428.73,-174.89 428.98,-167.68 435.54,-170.69 435.29,-177.89"/>
+<text text-anchor="middle" x="514" y="-406.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +name</text>
 </g>
 </g>
 </svg>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode-members.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode-members.html
index 34a78e95be..695dbc4bb0 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode-members.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode-members.html
@@ -83,7 +83,7 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#a4b19a9c7f4b3dae4ae88a3fffd849f7f">_type_key</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tir::PrimFuncFrameNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#a08e6e65098b35e2908e774de3ab970f3">AddCallback</a>(runtime::TypedPackedFunc&lt; void()&gt; callback)</td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#a6b883f39efc67336b4f84e831046488d">args</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tir::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#ad6c10521cce6f52a683af6d7a2999a6c">attrs</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tir::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#adb3c93299efd5fcac8952bc71d70a797">attrs</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tir::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#a2d4040abf60871f7dce6d5e2fc2572c5">buffer_map</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html">tvm::script::ir_builder::tir::PrimFuncFrameNode</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html#aa21f554fdcf6ab78c55cb54cdc69c0c2">callbacks</a></td><td class="entry"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html">tvm::script::ir_builder::IRBuilderFrameNode</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html#a70fb5361147634605d6595bb89381f03">DecRef</a>()</td><td class="entry"><a class="el" href="classtvm_1_1runtime_1_1Object.html">tvm::runtime::Object</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html
index db56474d42..a282cc6d49 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html
@@ -88,7 +88,7 @@ Inheritance diagram for tvm::script::ir_builder::tir::PrimFuncFrameNode:</div>
 <div class="dynheader">
 Collaboration diagram for tvm::script::ir_builder::tir::PrimFuncFrameNode:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode__coll__graph.svg" width="1402" height="2091"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode__coll__graph.svg" width="1312" height="2076"><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">
@@ -160,9 +160,9 @@ Public Attributes</h2></td></tr>
 <tr class="memitem:a2d4040abf60871f7dce6d5e2fc2572c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1tir_1_1Var.html">tvm::tir::Var</a>, <a class="el" href="classtvm_1_1tir_1_1Buffer.html">tvm::tir::Buffer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#a2d4040abf60871f7dce6d5e2fc2572c5">buf [...]
 <tr class="memdesc:a2d4040abf60871f7dce6d5e2fc2572c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps some parameters to specific Buffer data structures.  <a href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#a2d4040abf60871f7dce6d5e2fc2572c5">More...</a><br /></td></tr>
 <tr class="separator:a2d4040abf60871f7dce6d5e2fc2572c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad6c10521cce6f52a683af6d7a2999a6c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir_ [...]
-<tr class="memdesc:ad6c10521cce6f52a683af6d7a2999a6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Additional attributes storing the meta-data.  <a href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#ad6c10521cce6f52a683af6d7a2999a6c">More...</a><br /></td></tr>
-<tr class="separator:ad6c10521cce6f52a683af6d7a2999a6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adb3c93299efd5fcac8952bc71d70a797"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#adb3c93299efd5fcac8952bc71d70a797">att [...]
+<tr class="memdesc:adb3c93299efd5fcac8952bc71d70a797"><td class="mdescLeft">&#160;</td><td class="mdescRight">Additional attributes storing the meta-data.  <a href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#adb3c93299efd5fcac8952bc71d70a797">More...</a><br /></td></tr>
+<tr class="separator:adb3c93299efd5fcac8952bc71d70a797"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a33d29fc6dadbe1a011ec1a020a2e24cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt; <a class="el" href="classtvm_1_1tir_1_1Var.html">tvm::tir::Var</a>, <a class="el" href="classtvm_1_1tir_1_1IterVar.html">tvm::tir::IterVar</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#a33d29fc6dadbe1a011ec1a020a2e24cd">e [...]
 <tr class="memdesc:a33d29fc6dadbe1a011ec1a020a2e24cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">The variable map bound to thread env.  <a href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode.html#a33d29fc6dadbe1a011ec1a020a2e24cd">More...</a><br /></td></tr>
 <tr class="separator:a33d29fc6dadbe1a011ec1a020a2e24cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -377,14 +377,14 @@ Additional Inherited Members</h2></td></tr>
 
 </div>
 </div>
-<a id="ad6c10521cce6f52a683af6d7a2999a6c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ad6c10521cce6f52a683af6d7a2999a6c">&#9670;&nbsp;</a></span>attrs</h2>
+<a id="adb3c93299efd5fcac8952bc71d70a797"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adb3c93299efd5fcac8952bc71d70a797">&#9670;&nbsp;</a></span>attrs</h2>
 
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="classtvm_1_1runtime_1_1Optional.html">Optional</a>&lt;<a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt;<a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a>&gt; &gt; tvm::script::ir_builder::tir::PrimFuncFrameNode::attrs</td>
+          <td class="memname"><a class="el" href="classtvm_1_1runtime_1_1Map.html">Map</a>&lt;<a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>, <a class="el" href="classtvm_1_1runtime_1_1ObjectRef.html">ObjectRef</a>&gt; tvm::script::ir_builder::tir::PrimFuncFrameNode::attrs</td>
         </tr>
       </table>
 </div><div class="memdoc">
diff --git a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode__coll__graph.svg b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode__coll__graph.svg
index 4495b1ddcf..b92f925dc4 100644
--- a/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode__coll__graph.svg
+++ b/docs/reference/api/doxygen/classtvm_1_1script_1_1ir__builder_1_1tir_1_1PrimFuncFrameNode__coll__graph.svg
@@ -4,11 +4,11 @@
 <!-- Generated by graphviz version 2.43.0 (0)
  -->
 <!-- Title: tvm::script::ir_builder::tir::PrimFuncFrameNode Pages: 1 -->
-<svg width="1051pt" height="1568pt"
- viewBox="0.00 0.00 1051.00 1568.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 1564)">
+<svg width="984pt" height="1557pt"
+ viewBox="0.00 0.00 984.00 1557.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 1553)">
 <title>tvm::script::ir_builder::tir::PrimFuncFrameNode</title>
-<polygon fill="white" stroke="transparent" points="-4,4 -4,-1564 1047,-1564 1047,4 -4,4"/>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1553 980,-1553 980,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node">
 <title>Node1</title>
@@ -31,487 +31,486 @@
 <g id="node2" class="node">
 <title>Node2</title>
 <g id="a_node2"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1tir_1_1TIRFrameNode.html" target="_top" xlink:title="A base frame that represents the TIR fame with body of statements.">
-<polygon fill="white" stroke="black" points="5.5,-215.5 5.5,-305.5 178.5,-305.5 178.5,-215.5 5.5,-215.5"/>
-<text text-anchor="start" x="13.5" y="-293.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="middle" x="92" y="-282.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tir::TIRFrameNode</text>
-<polyline fill="none" stroke="black" points="5.5,-275.5 178.5,-275.5 "/>
-<text text-anchor="start" x="13.5" y="-263.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="5.5,-256.5 178.5,-256.5 "/>
-<text text-anchor="start" x="13.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="13.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="13.5" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<polygon fill="white" stroke="black" points="5.5,-210 5.5,-300 178.5,-300 178.5,-210 5.5,-210"/>
+<text text-anchor="start" x="13.5" y="-288" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="middle" x="92" y="-277" font-family="Helvetica,sans-Serif" font-size="10.00">::tir::TIRFrameNode</text>
+<polyline fill="none" stroke="black" points="5.5,-270 178.5,-270 "/>
+<text text-anchor="start" x="13.5" y="-258" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="5.5,-251 178.5,-251 "/>
+<text text-anchor="start" x="13.5" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="13.5" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="13.5" y="-217" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node1 -->
 <g id="edge1" class="edge">
 <title>Node2&#45;&gt;Node1</title>
-<path fill="none" stroke="midnightblue" d="M124.39,-206.83C143.47,-180.14 169.95,-149.54 201,-131 280.09,-83.77 385.28,-66.66 458.84,-60.58"/>
-<polygon fill="none" stroke="midnightblue" points="121.3,-205.13 118.46,-215.34 127.05,-209.13 121.3,-205.13"/>
+<path fill="none" stroke="midnightblue" d="M126.37,-201.58C145.45,-176.52 171.32,-148.29 201,-131 280.46,-84.71 385.35,-67.43 458.73,-61.05"/>
+<polygon fill="none" stroke="midnightblue" points="123.31,-199.82 120.16,-209.93 128.93,-203.99 123.31,-199.82"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node">
 <title>Node3</title>
 <g id="a_node3"><a xlink:href="classtvm_1_1script_1_1ir__builder_1_1IRBuilderFrameNode.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="5.5,-708.5 5.5,-853.5 178.5,-853.5 178.5,-708.5 5.5,-708.5"/>
-<text text-anchor="start" x="13.5" y="-841.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
-<text text-anchor="middle" x="92" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
-<polyline fill="none" stroke="black" points="5.5,-823.5 178.5,-823.5 "/>
-<text text-anchor="start" x="13.5" y="-811.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ callbacks</text>
-<text text-anchor="start" x="13.5" y="-800.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<polyline fill="none" stroke="black" points="5.5,-793.5 178.5,-793.5 "/>
-<text text-anchor="start" x="13.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
-<text text-anchor="start" x="13.5" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
-<text text-anchor="start" x="13.5" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
-<text text-anchor="start" x="13.5" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~IRBuilderFrameNode()</text>
-<text text-anchor="start" x="13.5" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ EnterWithScope()</text>
-<text text-anchor="start" x="13.5" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ExitWithScope()</text>
-<text text-anchor="start" x="13.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddCallback()</text>
+<polygon fill="white" stroke="black" points="5.5,-697.5 5.5,-842.5 178.5,-842.5 178.5,-697.5 5.5,-697.5"/>
+<text text-anchor="start" x="13.5" y="-830.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::script::ir_builder</text>
+<text text-anchor="middle" x="92" y="-819.5" font-family="Helvetica,sans-Serif" font-size="10.00">::IRBuilderFrameNode</text>
+<polyline fill="none" stroke="black" points="5.5,-812.5 178.5,-812.5 "/>
+<text text-anchor="start" x="13.5" y="-800.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ callbacks</text>
+<text text-anchor="start" x="13.5" y="-789.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<polyline fill="none" stroke="black" points="5.5,-782.5 178.5,-782.5 "/>
+<text text-anchor="start" x="13.5" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ VisitAttrs()</text>
+<text text-anchor="start" x="13.5" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TVM_DECLARE_BASE_OBJECT</text>
+<text text-anchor="start" x="13.5" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">_INFO()</text>
+<text text-anchor="start" x="13.5" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~IRBuilderFrameNode()</text>
+<text text-anchor="start" x="13.5" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ EnterWithScope()</text>
+<text text-anchor="start" x="13.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ExitWithScope()</text>
+<text text-anchor="start" x="13.5" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddCallback()</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node2 -->
 <g id="edge2" class="edge">
 <title>Node3&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M92,-698.3C92,-587.29 92,-392.69 92,-305.7"/>
-<polygon fill="none" stroke="midnightblue" points="88.5,-698.45 92,-708.45 95.5,-698.45 88.5,-698.45"/>
+<path fill="none" stroke="midnightblue" d="M92,-687.37C92,-577.62 92,-386.37 92,-300.25"/>
+<polygon fill="none" stroke="midnightblue" points="88.5,-687.4 92,-697.4 95.5,-687.4 88.5,-687.4"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node">
 <title>Node4</title>
 <g id="a_node4"><a xlink:href="classtvm_1_1runtime_1_1Object.html" target="_top" xlink:title="base class of all object containers.">
-<polygon fill="white" stroke="black" points="0,-946.5 0,-1333.5 184,-1333.5 184,-946.5 0,-946.5"/>
-<text text-anchor="middle" x="92" y="-1321.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
-<polyline fill="none" stroke="black" points="0,-1314.5 184,-1314.5 "/>
-<text text-anchor="start" x="8" y="-1302.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
-<text text-anchor="start" x="8" y="-1291.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
-<text text-anchor="start" x="8" y="-1280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
-<text text-anchor="start" x="8" y="-1269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
-<text text-anchor="start" x="8" y="-1258.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
-<text text-anchor="start" x="8" y="-1247.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
-<text text-anchor="start" x="8" y="-1236.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
-<text text-anchor="start" x="8" y="-1225.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
-<text text-anchor="start" x="8" y="-1214.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-1203.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
-<text text-anchor="start" x="8" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
-<text text-anchor="start" x="8" y="-1181.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
-<text text-anchor="start" x="8" y="-1170.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
-<text text-anchor="start" x="8" y="-1159.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
-<polyline fill="none" stroke="black" points="0,-1152.5 184,-1152.5 "/>
-<text text-anchor="start" x="8" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
-<text text-anchor="start" x="8" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
-<text text-anchor="start" x="8" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
-<text text-anchor="start" x="8" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
-<text text-anchor="start" x="8" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="8" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
+<polygon fill="white" stroke="black" points="0,-935.5 0,-1322.5 184,-1322.5 184,-935.5 0,-935.5"/>
+<text text-anchor="middle" x="92" y="-1310.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Object</text>
+<polyline fill="none" stroke="black" points="0,-1303.5 184,-1303.5 "/>
+<text text-anchor="start" x="8" y="-1291.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_key</text>
+<text text-anchor="start" x="8" y="-1280.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_final</text>
+<text text-anchor="start" x="8" y="-1269.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots</text>
+<text text-anchor="start" x="8" y="-1258.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_child_slots_can</text>
+<text text-anchor="start" x="8" y="-1247.5" font-family="Helvetica,sans-Serif" font-size="10.00">_overflow</text>
+<text text-anchor="start" x="8" y="-1236.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_visit</text>
+<text text-anchor="start" x="8" y="-1225.5" font-family="Helvetica,sans-Serif" font-size="10.00">_attrs</text>
+<text text-anchor="start" x="8" y="-1214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_sequal</text>
+<text text-anchor="start" x="8" y="-1203.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-1192.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_has_method_shash</text>
+<text text-anchor="start" x="8" y="-1181.5" font-family="Helvetica,sans-Serif" font-size="10.00">_reduce</text>
+<text text-anchor="start" x="8" y="-1170.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_index</text>
+<text text-anchor="start" x="8" y="-1159.5" font-family="Helvetica,sans-Serif" font-size="10.00"># type_index_</text>
+<text text-anchor="start" x="8" y="-1148.5" font-family="Helvetica,sans-Serif" font-size="10.00"># ref_counter_</text>
+<polyline fill="none" stroke="black" points="0,-1141.5 184,-1141.5 "/>
+<text text-anchor="start" x="8" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ type_index()</text>
+<text text-anchor="start" x="8" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKey()</text>
+<text text-anchor="start" x="8" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ GetTypeKeyHash()</text>
+<text text-anchor="start" x="8" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ IsInstance()</text>
+<text text-anchor="start" x="8" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
 <text text-anchor="start" x="8" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
-<text text-anchor="start" x="8" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="8" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Object()</text>
 <text text-anchor="start" x="8" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="8" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
-<text text-anchor="start" x="8" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
-<text text-anchor="start" x="8" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
-<text text-anchor="start" x="8" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
-<text text-anchor="start" x="8" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
-<text text-anchor="start" x="8" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
-<text text-anchor="start" x="8" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="8" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2Key()</text>
+<text text-anchor="start" x="8" y="-1008.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeIndex2KeyHash()</text>
+<text text-anchor="start" x="8" y="-997.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ TypeKey2Index()</text>
+<text text-anchor="start" x="8" y="-986.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _GetOrAllocRuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-975.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ RuntimeTypeIndex()</text>
+<text text-anchor="start" x="8" y="-964.5" font-family="Helvetica,sans-Serif" font-size="10.00"># IncRef()</text>
+<text text-anchor="start" x="8" y="-953.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DecRef()</text>
+<text text-anchor="start" x="8" y="-942.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetOrAllocRuntimeTypeIndex()</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node3 -->
 <g id="edge3" class="edge">
 <title>Node4&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M92,-936.33C92,-906.76 92,-878.09 92,-853.64"/>
-<polygon fill="none" stroke="midnightblue" points="88.5,-936.39 92,-946.39 95.5,-936.39 88.5,-936.39"/>
+<path fill="none" stroke="midnightblue" d="M92,-925.33C92,-895.76 92,-867.09 92,-842.64"/>
+<polygon fill="none" stroke="midnightblue" points="88.5,-925.39 92,-935.39 95.5,-925.39 88.5,-925.39"/>
 </g>
 <!-- Node4&#45;&gt;Node4 -->
 <g id="edge4" class="edge">
 <title>Node4&#45;&gt;Node4</title>
-<path fill="none" stroke="#404040" d="M184.28,-1173.92C195.02,-1167.66 202,-1156.36 202,-1140 202,-1129.01 198.85,-1120.3 193.52,-1113.87"/>
-<polygon fill="none" stroke="#404040" points="193.46,-1113.81 186.29,-1113 184.28,-1106.08 191.45,-1106.89 193.46,-1113.81"/>
-<text text-anchor="middle" x="228" y="-1137.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
+<path fill="none" stroke="#404040" d="M184.28,-1162.92C195.02,-1156.66 202,-1145.36 202,-1129 202,-1118.01 198.85,-1109.3 193.52,-1102.87"/>
+<polygon fill="none" stroke="#404040" points="193.46,-1102.81 186.29,-1102 184.28,-1095.08 191.45,-1095.89 193.46,-1102.81"/>
+<text text-anchor="middle" x="228" y="-1126.5" font-family="Helvetica,sans-Serif" font-size="10.00"> #deleter_</text>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node">
 <title>Node5</title>
 <g id="a_node5"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="210.5,-653.5 210.5,-908.5 331.5,-908.5 331.5,-653.5 210.5,-653.5"/>
-<text text-anchor="start" x="218.5" y="-896.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
-<text text-anchor="middle" x="271" y="-885.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::tir::Stmt &gt;</text>
-<polyline fill="none" stroke="black" points="210.5,-878.5 331.5,-878.5 "/>
-<text text-anchor="middle" x="271" y="-866.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="210.5,-859.5 331.5,-859.5 "/>
-<text text-anchor="start" x="218.5" y="-847.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="218.5" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="218.5" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="218.5" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="218.5" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="218.5" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="218.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="218.5" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="218.5" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="218.5" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="218.5" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
-<text text-anchor="start" x="218.5" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="218.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="218.5" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="218.5" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="218.5" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="218.5" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="218.5" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
+<polygon fill="white" stroke="black" points="206.5,-642.5 206.5,-897.5 327.5,-897.5 327.5,-642.5 206.5,-642.5"/>
+<text text-anchor="start" x="214.5" y="-885.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
+<text text-anchor="middle" x="267" y="-874.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::tir::Stmt &gt;</text>
+<polyline fill="none" stroke="black" points="206.5,-867.5 327.5,-867.5 "/>
+<text text-anchor="middle" x="267" y="-855.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="206.5,-848.5 327.5,-848.5 "/>
+<text text-anchor="start" x="214.5" y="-836.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="214.5" y="-825.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="214.5" y="-814.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="214.5" y="-803.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="214.5" y="-792.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="214.5" y="-781.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="214.5" y="-770.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="214.5" y="-759.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="214.5" y="-748.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="214.5" y="-737.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="214.5" y="-726.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="214.5" y="-715.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="214.5" y="-704.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="214.5" y="-693.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="214.5" y="-682.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="214.5" y="-671.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="214.5" y="-660.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="214.5" y="-649.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node2 -->
 <g id="edge5" class="edge">
 <title>Node5&#45;&gt;Node2</title>
-<path fill="none" stroke="#404040" d="M210.28,-677.77C203.01,-668.89 195.22,-660.46 187,-653 174.34,-641.51 162.97,-648.89 153,-635 143.81,-622.21 114.16,-419.03 99.86,-317.85"/>
-<polygon fill="none" stroke="#404040" points="99.83,-317.63 95.03,-312.24 98.15,-305.74 102.95,-311.13 99.83,-317.63"/>
-<text text-anchor="middle" x="173" y="-504.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +stmts</text>
+<path fill="none" stroke="#404040" d="M206.4,-661.93C200.33,-654.76 193.85,-648.02 187,-642 172.65,-629.4 159.47,-639.26 148,-624 138.71,-611.65 112.04,-412.32 99.15,-312.31"/>
+<polygon fill="none" stroke="#404040" points="99.14,-312.24 94.41,-306.8 97.61,-300.34 102.34,-305.78 99.14,-312.24"/>
+<text text-anchor="middle" x="168" y="-493.5" font-family="Helvetica,sans-Serif" font-size="10.00"> +stmts</text>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node">
 <title>Node6</title>
 <g id="a_node6"><a xlink:href="classtvm_1_1runtime_1_1ObjectRef.html" target="_top" xlink:title="Base class of all object reference.">
-<polygon fill="white" stroke="black" points="431,-1023.5 431,-1256.5 565,-1256.5 565,-1023.5 431,-1023.5"/>
-<text text-anchor="middle" x="498" y="-1244.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
-<polyline fill="none" stroke="black" points="431,-1237.5 565,-1237.5 "/>
-<text text-anchor="start" x="439" y="-1225.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="431,-1218.5 565,-1218.5 "/>
-<text text-anchor="start" x="439" y="-1206.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="439" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
-<text text-anchor="start" x="439" y="-1184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
-<text text-anchor="start" x="439" y="-1173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
-<text text-anchor="start" x="439" y="-1162.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
-<text text-anchor="start" x="439" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
-<text text-anchor="start" x="439" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
-<text text-anchor="start" x="439" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
-<text text-anchor="start" x="439" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
-<text text-anchor="start" x="439" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
-<text text-anchor="start" x="439" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
-<text text-anchor="start" x="439" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="439" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
-<text text-anchor="start" x="439" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
-<text text-anchor="start" x="439" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
-<text text-anchor="start" x="439" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
-<text text-anchor="start" x="439" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
+<polygon fill="white" stroke="black" points="435,-1012.5 435,-1245.5 569,-1245.5 569,-1012.5 435,-1012.5"/>
+<text text-anchor="middle" x="502" y="-1233.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::ObjectRef</text>
+<polyline fill="none" stroke="black" points="435,-1226.5 569,-1226.5 "/>
+<text text-anchor="start" x="443" y="-1214.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="435,-1207.5 569,-1207.5 "/>
+<text text-anchor="start" x="443" y="-1195.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="443" y="-1184.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ObjectRef()</text>
+<text text-anchor="start" x="443" y="-1173.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ same_as()</text>
+<text text-anchor="start" x="443" y="-1162.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator==()</text>
+<text text-anchor="start" x="443" y="-1151.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator!=()</text>
+<text text-anchor="start" x="443" y="-1140.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&lt;()</text>
+<text text-anchor="start" x="443" y="-1129.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ defined()</text>
+<text text-anchor="start" x="443" y="-1118.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ get()</text>
+<text text-anchor="start" x="443" y="-1107.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator&#45;&gt;()</text>
+<text text-anchor="start" x="443" y="-1096.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ unique()</text>
+<text text-anchor="start" x="443" y="-1085.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ use_count()</text>
+<text text-anchor="start" x="443" y="-1074.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="443" y="-1063.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ as()</text>
+<text text-anchor="start" x="443" y="-1052.5" font-family="Helvetica,sans-Serif" font-size="10.00"># get_mutable()</text>
+<text text-anchor="start" x="443" y="-1041.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DowncastNoCheck()</text>
+<text text-anchor="start" x="443" y="-1030.5" font-family="Helvetica,sans-Serif" font-size="10.00"># FFIClearAfterMove()</text>
+<text text-anchor="start" x="443" y="-1019.5" font-family="Helvetica,sans-Serif" font-size="10.00"># GetDataPtr()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge6" class="edge">
 <title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M425.42,-1024.85C395.18,-977.3 360.47,-922.72 331.63,-877.35"/>
-<polygon fill="none" stroke="midnightblue" points="422.49,-1026.78 430.81,-1033.34 428.4,-1023.02 422.49,-1026.78"/>
+<path fill="none" stroke="midnightblue" d="M429.37,-1017.67C396.77,-968.14 358.74,-910.37 327.69,-863.2"/>
+<polygon fill="none" stroke="midnightblue" points="426.55,-1019.75 434.97,-1026.18 432.4,-1015.9 426.55,-1019.75"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node">
 <title>Node8</title>
 <g id="a_node8"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="201.5,-379.5 201.5,-634.5 322.5,-634.5 322.5,-379.5 201.5,-379.5"/>
-<text text-anchor="start" x="209.5" y="-622.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
-<text text-anchor="middle" x="262" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::tir::Var &gt;</text>
-<polyline fill="none" stroke="black" points="201.5,-604.5 322.5,-604.5 "/>
-<text text-anchor="middle" x="262" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="201.5,-585.5 322.5,-585.5 "/>
-<text text-anchor="start" x="209.5" y="-573.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="209.5" y="-562.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="209.5" y="-551.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="209.5" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="209.5" y="-529.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="209.5" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="209.5" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="209.5" y="-496.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="209.5" y="-485.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="209.5" y="-474.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="209.5" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
-<text text-anchor="start" x="209.5" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="209.5" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="209.5" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="209.5" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="209.5" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="209.5" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="209.5" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
+<polygon fill="white" stroke="black" points="197.5,-368.5 197.5,-623.5 318.5,-623.5 318.5,-368.5 197.5,-368.5"/>
+<text text-anchor="start" x="205.5" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
+<text text-anchor="middle" x="258" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::tir::Var &gt;</text>
+<polyline fill="none" stroke="black" points="197.5,-593.5 318.5,-593.5 "/>
+<text text-anchor="middle" x="258" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="197.5,-574.5 318.5,-574.5 "/>
+<text text-anchor="start" x="205.5" y="-562.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="205.5" y="-551.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="205.5" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="205.5" y="-529.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="205.5" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="205.5" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="205.5" y="-496.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="205.5" y="-485.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="205.5" y="-474.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="205.5" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="205.5" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="205.5" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="205.5" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="205.5" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="205.5" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="205.5" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="205.5" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="205.5" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node8 -->
 <g id="edge9" class="edge">
 <title>Node6&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M451.91,-1013.84C439.83,-979.95 427.09,-943.19 416,-909 379.41,-796.23 393.13,-759.49 341,-653 336.66,-644.14 333.18,-643.4 328,-635 326.17,-632.04 324.35,-629.02 322.54,-625.96"/>
-<polygon fill="none" stroke="midnightblue" points="448.63,-1015.08 455.3,-1023.32 455.23,-1012.73 448.63,-1015.08"/>
+<path fill="none" stroke="midnightblue" d="M450.01,-1002.93C436.64,-969.11 422.73,-932.36 411,-898 372.73,-785.92 388.88,-748.47 337,-642 332.68,-633.13 329.18,-632.4 324,-624 322.17,-621.04 320.35,-618.02 318.54,-614.96"/>
+<polygon fill="none" stroke="midnightblue" points="446.82,-1004.38 453.76,-1012.38 453.33,-1001.8 446.82,-1004.38"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node">
 <title>Node9</title>
 <g id="a_node9"><a xlink:href="classtvm_1_1runtime_1_1Array.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="336.5,-379.5 336.5,-634.5 457.5,-634.5 457.5,-379.5 336.5,-379.5"/>
-<text text-anchor="start" x="344.5" y="-622.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
-<text text-anchor="middle" x="397" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::tir::Buffer &gt;</text>
-<polyline fill="none" stroke="black" points="336.5,-604.5 457.5,-604.5 "/>
-<text text-anchor="middle" x="397" y="-592.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="336.5,-585.5 457.5,-585.5 "/>
-<text text-anchor="start" x="344.5" y="-573.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="344.5" y="-562.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="344.5" y="-551.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="344.5" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="344.5" y="-529.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="344.5" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="344.5" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="344.5" y="-496.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
-<text text-anchor="start" x="344.5" y="-485.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="344.5" y="-474.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="344.5" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
-<text text-anchor="start" x="344.5" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="344.5" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="344.5" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
-<text text-anchor="start" x="344.5" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="344.5" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="344.5" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
-<text text-anchor="start" x="344.5" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
+<polygon fill="white" stroke="black" points="332.5,-368.5 332.5,-623.5 453.5,-623.5 453.5,-368.5 332.5,-368.5"/>
+<text text-anchor="start" x="340.5" y="-611.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Array</text>
+<text text-anchor="middle" x="393" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::tir::Buffer &gt;</text>
+<polyline fill="none" stroke="black" points="332.5,-593.5 453.5,-593.5 "/>
+<text text-anchor="middle" x="393" y="-581.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="332.5,-574.5 453.5,-574.5 "/>
+<text text-anchor="start" x="340.5" y="-562.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="340.5" y="-551.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="340.5" y="-540.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="340.5" y="-529.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="340.5" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="340.5" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="340.5" y="-496.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="340.5" y="-485.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Array()</text>
+<text text-anchor="start" x="340.5" y="-474.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="340.5" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="340.5" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 25 more...</text>
+<text text-anchor="start" x="340.5" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="340.5" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="340.5" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ CalcCapacityImpl()</text>
+<text text-anchor="start" x="340.5" y="-408.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="340.5" y="-397.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="340.5" y="-386.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AgregateImpl()</text>
+<text text-anchor="start" x="340.5" y="-375.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Agregate()</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node9 -->
 <g id="edge11" class="edge">
 <title>Node6&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M477.76,-1013.58C473.22,-985.43 468.44,-955.69 464,-928 448.22,-829.57 430.45,-718.16 417.18,-634.82"/>
-<polygon fill="none" stroke="midnightblue" points="474.3,-1014.16 479.35,-1023.47 481.22,-1013.04 474.3,-1014.16"/>
+<path fill="none" stroke="midnightblue" d="M476.19,-1002.48C470.65,-974.39 464.97,-944.71 460,-917 442.38,-818.7 424.68,-707.04 411.9,-623.57"/>
+<polygon fill="none" stroke="midnightblue" points="472.77,-1003.21 478.15,-1012.34 479.64,-1001.85 472.77,-1003.21"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node">
 <title>Node10</title>
 <g id="a_node10"><a xlink:href="classtvm_1_1runtime_1_1Optional.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="401.5,-171.5 401.5,-349.5 538.5,-349.5 538.5,-171.5 401.5,-171.5"/>
-<text text-anchor="start" x="409.5" y="-337.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
-<text text-anchor="middle" x="470" y="-326.5" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::String &gt;</text>
-<polyline fill="none" stroke="black" points="401.5,-319.5 538.5,-319.5 "/>
-<text text-anchor="start" x="409.5" y="-307.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
-<polyline fill="none" stroke="black" points="401.5,-300.5 538.5,-300.5 "/>
-<text text-anchor="start" x="409.5" y="-288.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="409.5" y="-277.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="409.5" y="-266.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="409.5" y="-255.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="409.5" y="-244.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="409.5" y="-233.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="409.5" y="-222.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="409.5" y="-211.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
-<text text-anchor="start" x="409.5" y="-200.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="409.5" y="-189.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="409.5" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
+<polygon fill="white" stroke="black" points="401.5,-166 401.5,-344 538.5,-344 538.5,-166 401.5,-166"/>
+<text text-anchor="start" x="409.5" y="-332" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Optional</text>
+<text text-anchor="middle" x="470" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00">&lt; tvm::runtime::String &gt;</text>
+<polyline fill="none" stroke="black" points="401.5,-314 538.5,-314 "/>
+<text text-anchor="start" x="409.5" y="-302" font-family="Helvetica,sans-Serif" font-size="10.00">+ _type_is_nullable</text>
+<polyline fill="none" stroke="black" points="401.5,-295 538.5,-295 "/>
+<text text-anchor="start" x="409.5" y="-283" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="409.5" y="-272" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="409.5" y="-261" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="409.5" y="-250" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="409.5" y="-239" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="409.5" y="-228" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="409.5" y="-217" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="409.5" y="-206" font-family="Helvetica,sans-Serif" font-size="10.00">+ Optional()</text>
+<text text-anchor="start" x="409.5" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="409.5" y="-184" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
+<text text-anchor="start" x="409.5" y="-173" font-family="Helvetica,sans-Serif" font-size="10.00">and 15 more...</text>
 </a>
 </g>
 </g>
 <!-- Node6&#45;&gt;Node10 -->
 <g id="edge13" class="edge">
 <title>Node6&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M493.99,-1013.32C488.24,-833.17 477.8,-506.04 472.81,-349.53"/>
-<polygon fill="none" stroke="midnightblue" points="490.49,-1013.5 494.31,-1023.38 497.49,-1013.27 490.49,-1013.5"/>
+<path fill="none" stroke="midnightblue" d="M497.37,-1001.95C490.81,-822.96 478.94,-499.68 473.24,-344.2"/>
+<polygon fill="none" stroke="midnightblue" points="493.89,-1002.34 497.75,-1012.21 500.88,-1002.08 493.89,-1002.34"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node">
 <title>Node11</title>
 <g id="a_node11"><a xlink:href="classtvm_1_1runtime_1_1Map.html" target="_top" xlink:title=" ">
-<polygon fill="white" stroke="black" points="501,-412.5 501,-601.5 617,-601.5 617,-412.5 501,-412.5"/>
-<text text-anchor="start" x="509" y="-589.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
-<text text-anchor="start" x="509" y="-578.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::tir::Var, tvm</text>
-<text text-anchor="middle" x="559" y="-567.5" font-family="Helvetica,sans-Serif" font-size="10.00">::tir::IterVar &gt;</text>
-<polyline fill="none" stroke="black" points="501,-560.5 617,-560.5 "/>
-<text text-anchor="middle" x="559" y="-548.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
-<polyline fill="none" stroke="black" points="501,-541.5 617,-541.5 "/>
-<text text-anchor="start" x="509" y="-529.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="509" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="509" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="509" y="-496.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="509" y="-485.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="509" y="-474.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="509" y="-463.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
-<text text-anchor="start" x="509" y="-452.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="509" y="-441.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ operator=()</text>
-<text text-anchor="start" x="509" y="-430.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ at()</text>
-<text text-anchor="start" x="509" y="-419.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
+<polygon fill="white" stroke="black" points="492.5,-401.5 492.5,-590.5 641.5,-590.5 641.5,-401.5 492.5,-401.5"/>
+<text text-anchor="start" x="500.5" y="-578.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm::runtime::Map&lt;</text>
+<text text-anchor="start" x="500.5" y="-567.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::String,</text>
+<text text-anchor="middle" x="567" y="-556.5" font-family="Helvetica,sans-Serif" font-size="10.00"> tvm::runtime::ObjectRef &gt;</text>
+<polyline fill="none" stroke="black" points="492.5,-549.5 641.5,-549.5 "/>
+<text text-anchor="middle" x="567" y="-537.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
+<polyline fill="none" stroke="black" points="492.5,-530.5 641.5,-530.5 "/>
+<text text-anchor="start" x="500.5" y="-518.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
+<text text-anchor="start" x="500.5" y="-507.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Map()</text>
... 31268 lines suppressed ...